diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c77cc888e2d0..1302695fbcc4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -7,19 +7,17 @@ body: #### ADVISORY "We do not support any versions older than the current release series" - "We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition`etc." + "We do not support any 3rd party/forked versions e.g. `portableapps`/`Enhanced Edition` etc." "Please post all details in **English**." #### Prerequisites before submitting an issue! - Read the issue reporting section in the **[contributing guidelines](https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md)**, to know how to submit a good bug report with the required information. - Verify that the issue is not fixed and is reproducible in the **[latest official qBittorrent version](https://www.qbittorrent.org/download.php).** - - (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (currently only on **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds. - - Check the **[frequent/common issues list](https://github.com/qbittorrent/qBittorrent/projects/2)** and perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues)** to avoid posting a duplicate. + - (Optional, but recommended) Verify that the issue is not fixed and is reproducible in the latest CI (**[macOS](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_macos.yaml?query=branch%3Amaster+event%3Apush)** / **[Ubuntu](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml?query=branch%3Amaster+event%3Apush)** / **[Windows](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_windows.yaml?query=branch%3Amaster+event%3Apush)**) builds. + - Perform a **[search of the issue tracker (including closed ones)](https://github.com/qbittorrent/qBittorrent/issues?q=is%3Aissue+is%3Aopen+-label%3A%22Feature+request%22)** to avoid posting a duplicate. - Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/qbittorrent/qBittorrent/discussions)**, **[forum](https://qbforums.shiki.hu/)**, or **[subreddit](https://www.reddit.com/r/qBittorrent/)**. - Verify that the **[wiki](https://github.com/qbittorrent/qBittorrent/wiki)** did not contain a suitable solution either. - - If relevant to issue/when asked, the qBittorrent preferences file, qBittorrent.log & watched_folders.json (if using "Watched Folders" feature) must be provided. - See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)** - type: textarea attributes: @@ -28,10 +26,10 @@ body: Qt and libtorrent-rasterbar versions are required when: 1. You are using linux. 2. You are not using an official build downloaded from our website. Example of preferred formatting: - qBittorrent: 4.3.7 x64 - Operating system: Windows 10 Pro 21H1/2009 x64 - Qt: 5.15.2 - libtorrent-rasterbar: 1.2.14 + qBittorrent: 4.6.6 x64 + Operating system: Windows 10 Pro x64 (22H2) 10.0.19045 + Qt: 6.4.3 + libtorrent-rasterbar: 1.2.19 placeholder: | qBittorrent: Operating system: @@ -73,4 +71,4 @@ body: See **[Where does qBittorrent save its settings?](https://github.com/qbittorrent/qBittorrent/wiki/Frequently-Asked-Questions#Where_does_qBittorrent_save_its_settings)** #### Note: It's the user's responsibility to redact any sensitive information validations: - required: false + required: true diff --git a/.github/workflows/ci_file_health.yaml b/.github/workflows/ci_file_health.yaml index f613f48b05f2..48bc52f595a6 100644 --- a/.github/workflows/ci_file_health.yaml +++ b/.github/workflows/ci_file_health.yaml @@ -12,17 +12,21 @@ jobs: ci: name: Check runs-on: ubuntu-latest + permissions: + security-events: write steps: - name: Checkout repository uses: actions/checkout@v4 + with: + persist-credentials: false - - name: Install tools - uses: actions/setup-python@v4 + - name: Setup python + uses: actions/setup-python@v5 with: python-version: "*" - name: Check files - uses: pre-commit/action@v3.0.0 + uses: pre-commit/action@v3.0.1 - name: Check doc env: @@ -32,7 +36,7 @@ jobs: curl \ -L \ -o "${{ runner.temp }}/pandoc.tar.gz" \ - "https://github.com/jgm/pandoc/releases/download/3.1.7/pandoc-3.1.7-linux-amd64.tar.gz" + "https://github.com/jgm/pandoc/releases/download/3.6/pandoc-3.6-linux-amd64.tar.gz" tar -xf "${{ runner.temp }}/pandoc.tar.gz" -C "${{ github.workspace }}/.." mv "${{ github.workspace }}/.."/pandoc-* "${{ env.pandoc_path }}" # run pandoc @@ -42,3 +46,26 @@ jobs: done # check diff, ignore "Automatically generated by ..." part git diff -I '\.\\".*' --exit-code + + - name: Check GitHub Actions workflow + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pip install zizmor + IGNORE_RULEID='(.ruleId != "template-injection") + and (.ruleId != "unpinned-uses")' + IGNORE_ID='(.id != "template-injection") + and (.id != "unpinned-uses")' + zizmor \ + --format sarif \ + --pedantic \ + ./ \ + | jq "(.runs[].results |= map(select($IGNORE_RULEID))) + | (.runs[].tool.driver.rules |= map(select($IGNORE_ID)))" \ + > "${{ runner.temp }}/zizmor_results.sarif" + + - name: Upload zizmor results + uses: github/codeql-action/upload-sarif@v3 + with: + category: zizmor + sarif_file: "${{ runner.temp }}/zizmor_results.sarif" diff --git a/.github/workflows/ci_macos.yaml b/.github/workflows/ci_macos.yaml index 92de8782799d..3927ee6947ae 100644 --- a/.github/workflows/ci_macos.yaml +++ b/.github/workflows/ci_macos.yaml @@ -2,8 +2,7 @@ name: CI - macOS on: [pull_request, push] -permissions: - actions: write +permissions: {} concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -13,24 +12,28 @@ jobs: ci: name: Build runs-on: macos-latest + permissions: + actions: write strategy: fail-fast: false matrix: - libt_version: ["2.0.9", "1.2.19"] + libt_version: ["2.0.11", "1.2.20"] qbt_gui: ["GUI=ON", "GUI=OFF"] - qt_version: ["6.5.2"] + qt_version: ["6.7.0"] env: boost_path: "${{ github.workspace }}/../boost" - openssl_root: /usr/local/opt/openssl@3 + libtorrent_path: "${{ github.workspace }}/../libtorrent" steps: - name: Checkout repository uses: actions/checkout@v4 + with: + persist-credentials: false - name: Install dependencies - uses: Wandalen/wretry.action@v1 + uses: Wandalen/wretry.action@v3 env: HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 @@ -46,23 +49,35 @@ jobs: - name: Setup ccache uses: Chocobo1/setup-ccache-action@v1 with: + store_cache: ${{ github.ref == 'refs/heads/master' }} update_packager_index: false + ccache_options: | + max_size=2G - name: Install boost + env: + BOOST_MAJOR_VERSION: "1" + BOOST_MINOR_VERSION: "86" + BOOST_PATCH_VERSION: "0" run: | - curl \ - -L \ - -o "${{ runner.temp }}/boost.tar.gz" \ - "https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.gz" - tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.." + boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + set +e + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" + if [ "$_exitCode" -ne "0" ]; then + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" + fi mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} archives: qtbase qtdeclarative qtsvg qttools # Not sure why Qt made a hard dependency on qtdeclarative, try removing it when Qt > 6.4.0 + cache: true - name: Install libtorrent run: | @@ -70,24 +85,24 @@ jobs: --branch v${{ matrix.libt_version }} \ --depth 1 \ --recurse-submodules \ - https://github.com/arvidn/libtorrent.git - cd libtorrent + https://github.com/arvidn/libtorrent.git \ + ${{ env.libtorrent_path }} + cd ${{ env.libtorrent_path }} cmake \ -B build \ -G "Ninja" \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DCMAKE_CXX_STANDARD=17 \ + -DCMAKE_CXX_STANDARD=20 \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DBOOST_ROOT="${{ env.boost_path }}" \ - -Ddeprecated-functions=OFF \ - -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" + -Ddeprecated-functions=OFF cmake --build build sudo cmake --install build - name: Build qBittorrent run: | - CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \ + CXXFLAGS="$CXXFLAGS -DQT_FORCE_ASSERTS -Werror -Wno-error=deprecated-declarations" \ LDFLAGS="$LDFLAGS -gz" \ cmake \ -B build \ @@ -95,7 +110,6 @@ jobs: -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DBOOST_ROOT="${{ env.boost_path }}" \ - -DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \ -DTESTING=ON \ -DVERBOSE_CONFIGURE=ON \ -D${{ matrix.qbt_gui }} @@ -110,8 +124,18 @@ jobs: if [ "${{ matrix.qbt_gui }}" = "GUI=OFF" ]; then appName="qbittorrent-nox" fi + # package pushd build - macdeployqt "$appName.app" -dmg -no-strip + PACKAGE_RETRY=0 + while [ "$PACKAGE_RETRY" -lt "3" ]; do + macdeployqt "$appName.app" -dmg -no-strip + if [ -f "$appName.dmg" ]; then + break + fi + sleep 5 + PACKAGE_RETRY=$((PACKAGE_RETRY + 1)) + echo "Retry $PACKAGE_RETRY..." + done popd # prepare upload folder mkdir upload @@ -119,10 +143,10 @@ jobs: mkdir upload/cmake cp build/compile_commands.json upload/cmake mkdir upload/cmake/libtorrent - cp libtorrent/build/compile_commands.json upload/cmake/libtorrent + cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent - name: Upload build artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: qBittorrent-CI_macOS_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} path: upload diff --git a/.github/workflows/ci_python.yaml b/.github/workflows/ci_python.yaml new file mode 100644 index 000000000000..871614dad51f --- /dev/null +++ b/.github/workflows/ci_python.yaml @@ -0,0 +1,91 @@ +name: CI - Python + +on: [pull_request, push] + +permissions: {} + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: ${{ github.head_ref != '' }} + +jobs: + ci: + name: Check + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Setup python (auxiliary scripts) + uses: actions/setup-python@v5 + with: + python-version: '3' # use default version + + - name: Install tools (auxiliary scripts) + run: pip install bandit pycodestyle pyflakes + + - name: Gather files (auxiliary scripts) + run: | + export "PY_FILES=$(find . -type f -name '*.py' ! -path '*searchengine*' -printf '%p ')" + echo $PY_FILES + echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV" + + - name: Lint code (auxiliary scripts) + run: | + pyflakes $PY_FILES + bandit --skip B101,B314,B405 $PY_FILES + + - name: Format code (auxiliary scripts) + run: | + pycodestyle \ + --max-line-length=1000 \ + --statistics \ + $PY_FILES + + - name: Build code (auxiliary scripts) + run: | + python -m compileall $PY_FILES + + - name: Setup python (search engine) + uses: actions/setup-python@v5 + with: + python-version: '3.9' + + - name: Install tools (search engine) + run: pip install bandit mypy pycodestyle pyflakes pyright + + - name: Gather files (search engine) + run: | + export "PY_FILES=$(find . -type f -name '*.py' -path '*searchengine*' ! -name 'socks.py' -printf '%p ')" + echo $PY_FILES + echo "PY_FILES=$PY_FILES" >> "$GITHUB_ENV" + + - name: Check typings (search engine) + run: | + MYPYPATH="src/searchengine/nova3" \ + mypy \ + --follow-imports skip \ + --strict \ + $PY_FILES + pyright \ + $PY_FILES + + - name: Lint code (search engine) + run: | + pyflakes $PY_FILES + bandit --skip B110,B310,B314,B405 $PY_FILES + + - name: Format code (search engine) + run: | + pycodestyle \ + --ignore=E265,E402 \ + --max-line-length=1000 \ + --statistics \ + $PY_FILES + + - name: Build code (search engine) + run: | + python -m compileall $PY_FILES diff --git a/.github/workflows/ci_ubuntu.yaml b/.github/workflows/ci_ubuntu.yaml index 64f9bac58bd5..5643d7cce79e 100644 --- a/.github/workflows/ci_ubuntu.yaml +++ b/.github/workflows/ci_ubuntu.yaml @@ -2,9 +2,7 @@ name: CI - Ubuntu on: [pull_request, push] -permissions: - actions: write - security-events: write +permissions: {} concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -14,21 +12,27 @@ jobs: ci: name: Build runs-on: ubuntu-latest + permissions: + actions: write + security-events: write strategy: fail-fast: false matrix: - libt_version: ["2.0.9", "1.2.19"] + libt_version: ["2.0.11", "1.2.20"] qbt_gui: ["GUI=ON", "GUI=OFF"] qt_version: ["6.5.2"] env: boost_path: "${{ github.workspace }}/../boost" - harden_flags: "-D_FORTIFY_SOURCE=2 -D_GLIBCXX_ASSERTIONS" + harden_flags: "-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS" + libtorrent_path: "${{ github.workspace }}/../libtorrent" steps: - name: Checkout repository uses: actions/checkout@v4 + with: + persist-credentials: false - name: Install dependencies run: | @@ -40,24 +44,34 @@ jobs: - name: Setup ccache uses: Chocobo1/setup-ccache-action@v1 with: + store_cache: ${{ github.ref == 'refs/heads/master' }} update_packager_index: false ccache_options: | max_size=2G - name: Install boost + env: + BOOST_MAJOR_VERSION: "1" + BOOST_MINOR_VERSION: "77" + BOOST_PATCH_VERSION: "0" run: | - curl \ - -L \ - -o "${{ runner.temp }}/boost.tar.gz" \ - "https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz" - tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.." + boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + set +e + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" + if [ "$_exitCode" -ne "0" ]; then + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" + fi mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} archives: icu qtbase qtdeclarative qtsvg qttools + cache: true - name: Install libtorrent run: | @@ -65,14 +79,16 @@ jobs: --branch v${{ matrix.libt_version }} \ --depth 1 \ --recurse-submodules \ - https://github.com/arvidn/libtorrent.git - cd libtorrent + https://github.com/arvidn/libtorrent.git \ + ${{ env.libtorrent_path }} + cd ${{ env.libtorrent_path }} CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }}" \ cmake \ -B build \ -G "Ninja" \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_CXX_STANDARD=20 \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DBOOST_ROOT="${{ env.boost_path }}" \ -Ddeprecated-functions=OFF @@ -81,7 +97,7 @@ jobs: # to avoid scanning 3rdparty codebases, initialize it just before building qbt - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') with: config-file: ./.github/workflows/helper/codeql/cpp.yaml @@ -89,7 +105,7 @@ jobs: - name: Build qBittorrent run: | - CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -Werror" \ + CXXFLAGS="$CXXFLAGS ${{ env.harden_flags }} -DQT_FORCE_ASSERTS -Werror" \ LDFLAGS="$LDFLAGS -gz" \ cmake \ -B build \ @@ -107,7 +123,7 @@ jobs: DESTDIR="qbittorrent" cmake --install build - name: Run CodeQL analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 if: startsWith(matrix.libt_version, 2) && (matrix.qbt_gui == 'GUI=ON') with: category: ${{ github.base_ref || github.ref_name }} @@ -118,37 +134,40 @@ jobs: mkdir upload/cmake cp build/compile_commands.json upload/cmake mkdir upload/cmake/libtorrent - cp libtorrent/build/compile_commands.json upload/cmake/libtorrent + cp ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent - - name: 'AppImage: Prepare env' + - name: Install AppImage run: | - sudo apt install libfuse2 - wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage - wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage - wget https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage - chmod +x linuxdeploy-x86_64.AppImage - chmod +x linuxdeploy-plugin-qt-x86_64.AppImage - chmod +x linuxdeploy-plugin-appimage-x86_64.AppImage - - - name: 'AppImage: Prepare nox' + curl \ + -L \ + -Z \ + -O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \ + -O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \ + -O https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage + chmod +x \ + linuxdeploy-x86_64.AppImage \ + linuxdeploy-plugin-qt-x86_64.AppImage \ + linuxdeploy-plugin-appimage-x86_64.AppImage + + - name: Prepare files for AppImage if: matrix.qbt_gui == 'GUI=OFF' run: | - mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps/ - mkdir -p qbittorrent/usr/share/applications/ - cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg + mkdir -p qbittorrent/usr/share/applications cp .github/workflows/helper/appimage/org.qbittorrent.qBittorrent.desktop qbittorrent/usr/share/applications/org.qbittorrent.qBittorrent.desktop + mkdir -p qbittorrent/usr/share/icons/hicolor/scalable/apps + cp dist/unix/menuicons/scalable/apps/qbittorrent.svg qbittorrent/usr/share/icons/hicolor/scalable/apps/qbittorrent.svg - - name: 'AppImage: Package' + - name: Package AppImage run: | - ./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --plugin qt + ./linuxdeploy-x86_64.AppImage --appdir qbittorrent --plugin qt rm qbittorrent/apprun-hooks/* cp .github/workflows/helper/appimage/export_vars.sh qbittorrent/apprun-hooks/export_vars.sh NO_APPSTREAM=1 \ - OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \ - ./linuxdeploy-x86_64.AppImage --appdir=qbittorrent --output appimage + OUTPUT=upload/qbittorrent-CI_Ubuntu_x86_64.AppImage \ + ./linuxdeploy-x86_64.AppImage --appdir qbittorrent --output appimage - name: Upload build artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: qBittorrent-CI_Ubuntu-x64_${{ matrix.qbt_gui }}_libtorrent-${{ matrix.libt_version }}_Qt-${{ matrix.qt_version }} path: upload diff --git a/.github/workflows/ci_webui.yaml b/.github/workflows/ci_webui.yaml index e7bd0478f270..a46e003ca94d 100644 --- a/.github/workflows/ci_webui.yaml +++ b/.github/workflows/ci_webui.yaml @@ -2,8 +2,7 @@ name: CI - WebUI on: [pull_request, push] -permissions: - security-events: write +permissions: {} concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -13,6 +12,8 @@ jobs: ci: name: Check runs-on: ubuntu-latest + permissions: + security-events: write defaults: run: @@ -21,6 +22,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + persist-credentials: false - name: Setup nodejs uses: actions/setup-node@v4 @@ -28,7 +31,15 @@ jobs: node-version: 'lts/*' - name: Install tools - run: npm install + run: | + npm install + npm ls + echo "::group::npm ls --all" + npm ls --all + echo "::endgroup::" + + - name: Run tests + run: npm test - name: Lint code run: npm run lint @@ -39,10 +50,10 @@ jobs: git diff --exit-code - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: - config-file: ./.github/workflows/helper/codeql/js.yaml + config-file: .github/workflows/helper/codeql/js.yaml languages: javascript - name: Run CodeQL analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/ci_windows.yaml b/.github/workflows/ci_windows.yaml index 0f61d2715baa..95118d51c2c8 100644 --- a/.github/workflows/ci_windows.yaml +++ b/.github/workflows/ci_windows.yaml @@ -2,8 +2,7 @@ name: CI - Windows on: [pull_request, push] -permissions: - actions: write +permissions: {} concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} @@ -13,61 +12,96 @@ jobs: ci: name: Build runs-on: windows-latest + permissions: + actions: write strategy: fail-fast: false matrix: - libt_version: ["2.0.9", "1.2.19"] + libt_version: ["2.0.11", "1.2.20"] env: boost_path: "${{ github.workspace }}/../boost" - libtorrent_path: "${{ github.workspace }}/libtorrent" + libtorrent_path: "${{ github.workspace }}/../libtorrent" + vcpkg_path: "c:/vcpkg" steps: - name: Checkout repository uses: actions/checkout@v4 + with: + persist-credentials: false - name: Setup devcmd uses: ilammy/msvc-dev-cmd@v1 - name: Install build tools run: | - choco install ninja - - # use the preinstalled vcpkg from image - # https://github.com/actions/virtual-environments/blob/main/images/win/Windows2019-Readme.md#package-management - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11 + if ((Get-Command "ninja.exe" -ErrorAction SilentlyContinue) -eq $null) + { + choco install ninja + } + where.exe ninja + ninja --version + + # https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha + - name: Set variables for vcpkg + uses: actions/github-script@v7 with: - vcpkgDirectory: C:/vcpkg - doNotUpdateVcpkg: true # the preinstalled vcpkg is updated regularly + script: | + core.exportVariable('ACTIONS_CACHE_URL', (process.env.ACTIONS_CACHE_URL || '')); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', (process.env.ACTIONS_RUNTIME_TOKEN || '')); - - name: Install dependencies from vcpkg + - name: Install dependencies with vcpkg run: | + # create our own triplet + New-Item ` + -Force ` + -ItemType File ` + -Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" + # OpenSSL isn't compatible with `/guard:cf` flag so we omit it for now, see: https://github.com/openssl/openssl/issues/22554 + Add-Content ` + -Path "${{ env.vcpkg_path }}/triplets_overlay/x64-windows-static-md-release.cmake" ` + -Value @("set(VCPKG_TARGET_ARCHITECTURE x64)", + "set(VCPKG_LIBRARY_LINKAGE static)", + "set(VCPKG_CRT_LINKAGE dynamic)", + "set(VCPKG_BUILD_TYPE release)") # clear buildtrees after each package installation to reduce disk space requirements $packages = ` - "openssl:x64-windows-static-release", - "zlib:x64-windows-static-release" - ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe upgrade ` - --no-dry-run - ${{ env.RUNVCPKG_VCPKG_ROOT }}/vcpkg.exe install ` + "openssl:x64-windows-static-md-release", + "zlib:x64-windows-static-md-release" + ${{ env.vcpkg_path }}/vcpkg.exe upgrade ` + --no-dry-run ` + --overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" + ${{ env.vcpkg_path }}/vcpkg.exe install ` + --binarysource="clear;x-gha,readwrite" ` --clean-after-build ` + --overlay-triplets="${{ env.vcpkg_path }}/triplets_overlay" ` $packages - name: Install boost + env: + BOOST_MAJOR_VERSION: "1" + BOOST_MINOR_VERSION: "86" + BOOST_PATCH_VERSION: "0" run: | - curl ` - -L ` - -o "${{ runner.temp }}/boost.tar.gz" ` - "https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.gz" + $boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + $boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.." + if ($LastExitCode -ne 0) + { + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.." + } move "${{ github.workspace }}/../boost_*" "${{ env.boost_path }}" - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: - version: "6.5.2" + version: "6.8.0" + arch: win64_msvc2022_64 archives: qtbase qtsvg qttools + cache: true - name: Install libtorrent run: | @@ -75,39 +109,41 @@ jobs: --branch v${{ matrix.libt_version }} ` --depth 1 ` --recurse-submodules ` - https://github.com/arvidn/libtorrent.git - cd libtorrent + https://github.com/arvidn/libtorrent.git ` + ${{ env.libtorrent_path }} + cd ${{ env.libtorrent_path }} $env:CXXFLAGS+=" /guard:cf" $env:LDFLAGS+=" /guard:cf" cmake ` -B build ` -G "Ninja" ` -DCMAKE_BUILD_TYPE=RelWithDebInfo ` + -DCMAKE_CXX_STANDARD=20 ` -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` - -DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}" ` - -DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` + -DCMAKE_INSTALL_PREFIX="${{ env.libtorrent_path }}/install" ` + -DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" ` -DBOOST_ROOT="${{ env.boost_path }}" ` -DBUILD_SHARED_LIBS=OFF ` -Ddeprecated-functions=OFF ` -Dstatic_runtime=OFF ` - -DVCPKG_TARGET_TRIPLET=x64-windows-static-release + -DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release cmake --build build cmake --install build - name: Build qBittorrent run: | - $env:CXXFLAGS+=" /WX" + $env:CXXFLAGS+="/DQT_FORCE_ASSERTS /WX" cmake ` -B build ` -G "Ninja" ` -DCMAKE_BUILD_TYPE=RelWithDebInfo ` -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ` - -DCMAKE_TOOLCHAIN_FILE="${{ env.RUNVCPKG_VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake" ` + -DCMAKE_TOOLCHAIN_FILE="${{ env.vcpkg_path }}/scripts/buildsystems/vcpkg.cmake" ` -DBOOST_ROOT="${{ env.boost_path }}" ` - -DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/lib/cmake/LibtorrentRasterbar" ` + -DLibtorrentRasterbar_DIR="${{ env.libtorrent_path }}/install/lib/cmake/LibtorrentRasterbar" ` -DMSVC_RUNTIME_DYNAMIC=ON ` -DTESTING=ON ` - -DVCPKG_TARGET_TRIPLET=x64-windows-static-release ` + -DVCPKG_TARGET_TRIPLET=x64-windows-static-md-release ` -DVERBOSE_CONFIGURE=ON ` --graphviz=build/target_graph.dot cmake --build build --target qbt_update_translations @@ -122,35 +158,35 @@ jobs: copy build/qbittorrent.pdb upload/qBittorrent copy dist/windows/qt.conf upload/qBittorrent # runtimes - copy "${{ env.Qt6_DIR }}/bin/Qt6Core.dll" upload/qBittorrent - copy "${{ env.Qt6_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent - copy "${{ env.Qt6_DIR }}/bin/Qt6Network.dll" upload/qBittorrent - copy "${{ env.Qt6_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent - copy "${{ env.Qt6_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent - copy "${{ env.Qt6_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent - copy "${{ env.Qt6_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Core.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Gui.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Network.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Sql.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Svg.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Widgets.dll" upload/qBittorrent + copy "${{ env.Qt_ROOT_DIR }}/bin/Qt6Xml.dll" upload/qBittorrent mkdir upload/qBittorrent/plugins/iconengines - copy "${{ env.Qt6_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines + copy "${{ env.Qt_ROOT_DIR }}/plugins/iconengines/qsvgicon.dll" upload/qBittorrent/plugins/iconengines mkdir upload/qBittorrent/plugins/imageformats - copy "${{ env.Qt6_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats - copy "${{ env.Qt6_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats + copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qico.dll" upload/qBittorrent/plugins/imageformats + copy "${{ env.Qt_ROOT_DIR }}/plugins/imageformats/qsvg.dll" upload/qBittorrent/plugins/imageformats mkdir upload/qBittorrent/plugins/platforms - copy "${{ env.Qt6_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms + copy "${{ env.Qt_ROOT_DIR }}/plugins/platforms/qwindows.dll" upload/qBittorrent/plugins/platforms mkdir upload/qBittorrent/plugins/sqldrivers - copy "${{ env.Qt6_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers + copy "${{ env.Qt_ROOT_DIR }}/plugins/sqldrivers/qsqlite.dll" upload/qBittorrent/plugins/sqldrivers mkdir upload/qBittorrent/plugins/styles - copy "${{ env.Qt6_DIR }}/plugins/styles/qwindowsvistastyle.dll" upload/qBittorrent/plugins/styles + copy "${{ env.Qt_ROOT_DIR }}/plugins/styles/qmodernwindowsstyle.dll" upload/qBittorrent/plugins/styles mkdir upload/qBittorrent/plugins/tls - copy "${{ env.Qt6_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls + copy "${{ env.Qt_ROOT_DIR }}/plugins/tls/qschannelbackend.dll" upload/qBittorrent/plugins/tls # cmake additionals mkdir upload/cmake copy build/compile_commands.json upload/cmake copy build/target_graph.dot upload/cmake mkdir upload/cmake/libtorrent - copy libtorrent/build/compile_commands.json upload/cmake/libtorrent + copy ${{ env.libtorrent_path }}/build/compile_commands.json upload/cmake/libtorrent - name: Upload build artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }} path: upload @@ -158,10 +194,10 @@ jobs: - name: Create installer run: | 7z x -o"dist/windows/" "dist/windows/NSISPlugins.zip" - makensis /DQBT_DIST_DIR="../../upload/qBittorrent" dist/windows/qbittorrent.nsi + makensis /DQBT_DIST_DIR="../../upload/qBittorrent" /WX dist/windows/qbittorrent.nsi - name: Upload installer - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: qBittorrent-CI_Windows-x64_libtorrent-${{ matrix.libt_version }}-setup path: dist/windows/qbittorrent_*_setup.exe diff --git a/.github/workflows/coverity-scan.yaml b/.github/workflows/coverity-scan.yaml index 860ec0b66863..c843ce7ee003 100644 --- a/.github/workflows/coverity-scan.yaml +++ b/.github/workflows/coverity-scan.yaml @@ -12,48 +12,85 @@ jobs: name: Scan runs-on: ubuntu-latest + strategy: + matrix: + libt_version: ["2.0.11"] + qbt_gui: ["GUI=ON"] + qt_version: ["6.5.2"] + + env: + boost_path: "${{ github.workspace }}/../boost" + coverity_path: "${{ github.workspace }}/../coverity" + libtorrent_path: "${{ github.workspace }}/../libtorrent" + steps: - name: Checkout repository uses: actions/checkout@v4 + with: + persist-credentials: false - name: Install dependencies run: | sudo apt update sudo apt install \ - build-essential cmake ninja-build pkg-config \ - libboost-dev libssl-dev zlib1g-dev + build-essential cmake ninja-build \ + libssl-dev libxkbcommon-x11-dev libxcb-cursor-dev zlib1g-dev + + - name: Install boost + env: + BOOST_MAJOR_VERSION: "1" + BOOST_MINOR_VERSION: "86" + BOOST_PATCH_VERSION: "0" + run: | + boost_url="https://archives.boost.io/release/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/source/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + boost_url2="https://sourceforge.net/projects/boost/files/boost/${{ env.BOOST_MAJOR_VERSION }}.${{ env.BOOST_MINOR_VERSION }}.${{ env.BOOST_PATCH_VERSION }}/boost_${{ env.BOOST_MAJOR_VERSION }}_${{ env.BOOST_MINOR_VERSION }}_${{ env.BOOST_PATCH_VERSION }}.tar.gz" + set +e + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" + if [ "$_exitCode" -ne "0" ]; then + curl -L -o "${{ runner.temp }}/boost.tar.gz" "$boost_url2" + tar -xf "${{ runner.temp }}/boost.tar.gz" -C "${{ github.workspace }}/.."; _exitCode="$?" + fi + mv "${{ github.workspace }}/.."/boost_* "${{ env.boost_path }}" - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: - version: "6.5.2" - archives: icu qtbase qtsvg qttools + version: ${{ matrix.qt_version }} + archives: icu qtbase qtdeclarative qtsvg qttools + cache: true - name: Install libtorrent run: | git clone \ - --branch "v2.0.9" \ + --branch v${{ matrix.libt_version }} \ --depth 1 \ --recurse-submodules \ - https://github.com/arvidn/libtorrent.git - cd libtorrent + https://github.com/arvidn/libtorrent.git \ + ${{ env.libtorrent_path }} + cd ${{ env.libtorrent_path }} cmake \ -B build \ -G "Ninja" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_CXX_STANDARD=20 \ + -DBOOST_ROOT="${{ env.boost_path }}" \ -Ddeprecated-functions=OFF cmake --build build sudo cmake --install build - name: Download Coverity Build Tool run: | - wget \ - -q \ - https://scan.coverity.com/download/linux64 \ - --post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \ - -O coverity_tool.tgz - mkdir coverity_tool - tar xzf coverity_tool.tgz --strip 1 -C coverity_tool + curl \ + -L \ + -d "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=qbittorrent%2FqBittorrent" \ + -o "${{ runner.temp }}/coverity_tool.tgz" \ + "https://scan.coverity.com/download/linux64" + mkdir -p ${{ env.coverity_path }} + tar \ + -xf "${{ runner.temp }}/coverity_tool.tgz" \ + -C "${{ env.coverity_path }}" \ + --strip-components 1 - name: Build qBittorrent run: | @@ -61,10 +98,13 @@ jobs: -B build \ -G "Ninja" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DGUI=ON \ - -DVERBOSE_CONFIGURE=ON - export PATH="$(pwd)/coverity_tool/bin:$PATH" - cov-build --dir cov-int cmake --build build + -DBOOST_ROOT="${{ env.boost_path }}" \ + -DVERBOSE_CONFIGURE=ON \ + -D${{ matrix.qbt_gui }} + PATH="${{ env.coverity_path }}/bin:$PATH" \ + cov-build \ + --dir cov-int \ + cmake --build build - name: Submit the result to Coverity Scan run: | diff --git a/.github/workflows/helper/pre-commit/.typos.toml b/.github/workflows/helper/pre-commit/.typos.toml index 0f33373ade21..90d6e1746af7 100644 --- a/.github/workflows/helper/pre-commit/.typos.toml +++ b/.github/workflows/helper/pre-commit/.typos.toml @@ -16,3 +16,5 @@ ths = "ths" [default.extend-words] BA = "BA" helo = "helo" +Pn = "Pn" +UIU = "UIU" diff --git a/.github/workflows/helper/pre-commit/check_grid_items_order.py b/.github/workflows/helper/pre-commit/check_grid_items_order.py new file mode 100755 index 000000000000..0ab3d6715d30 --- /dev/null +++ b/.github/workflows/helper/pre-commit/check_grid_items_order.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 + +# A pre-commit hook for checking items order in grid layouts +# Copyright (C) 2024 Mike Tzou (Chocobo1) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# In addition, as a special exception, the copyright holders give permission to +# link this program with the OpenSSL project's "OpenSSL" library (or with +# modified versions of it that use the same license as the "OpenSSL" library), +# and distribute the linked executables. You must obey the GNU General Public +# License in all respects for all of the code used other than "OpenSSL". If you +# modify file(s), you may extend this exception to your version of the file(s), +# but you are not obligated to do so. If you do not wish to do so, delete this +# exception statement from your version. + +from collections.abc import Callable, Sequence +from typing import Optional +import argparse +import re +import xml.etree.ElementTree as ElementTree +import sys + + +def traversePostOrder(root: ElementTree.Element, visitFunc: Callable[[ElementTree.Element], None]) -> None: + stack = [(root, False)] + + while len(stack) > 0: + (element, visit) = stack.pop() + if visit: + visitFunc(element) + else: + stack.append((element, True)) + stack.extend((child, False) for child in reversed(element)) + + +def modifyElement(element: ElementTree.Element) -> None: + def getSortKey(e: ElementTree.Element) -> tuple[int, int]: + if e.tag == 'item': + return (int(e.attrib['row']), int(e.attrib['column'])) + return (-1, -1) # don't care + + if element.tag == 'layout' and element.attrib['class'] == 'QGridLayout' and len(element) > 0: + element[:] = sorted(element, key=getSortKey) + + # workaround_2a: ElementTree will unescape `"` and we need to escape it back + if element.tag == 'string' and element.text is not None: + element.text = element.text.replace('"', '"') + + +def main(argv: Optional[Sequence[str]] = None) -> int: + parser = argparse.ArgumentParser() + parser.add_argument('filenames', nargs='*', help='Filenames to check') + args = parser.parse_args(argv) + + for filename in args.filenames: + with open(filename, 'r+') as f: + orig = f.read() + root = ElementTree.fromstring(orig) + traversePostOrder(root, modifyElement) + ElementTree.indent(root, ' ') + + # workaround_1: cannot use `xml_declaration=True` since it uses single quotes instead of Qt preferred double quotes + ret = f'\n{ElementTree.tostring(root, 'unicode')}\n' + + # workaround_2b: ElementTree will turn `"` into `&quot;`, so revert it back + ret = ret.replace('&quot;', '"') + + # workaround_3: Qt prefers no whitespaces in self-closing tags + ret = re.sub('<(.+) +/>', r'<\1/>', ret) + + if ret != orig: + print(f'Tip: run this script to apply the fix: `python {__file__} {filename}`', file=sys.stderr) + + f.seek(0) + f.write(ret) + f.truncate() + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/.github/workflows/helper/pre-commit/check_translation_tag.py b/.github/workflows/helper/pre-commit/check_translation_tag.py index 34705f74dfc9..4be80df492dd 100755 --- a/.github/workflows/helper/pre-commit/check_translation_tag.py +++ b/.github/workflows/helper/pre-commit/check_translation_tag.py @@ -26,9 +26,12 @@ # but you are not obligated to do so. If you do not wish to do so, delete this # exception statement from your version. -from typing import Optional, Sequence +from collections.abc import Sequence +from typing import Optional import argparse import re +import sys + def main(argv: Optional[Sequence[str]] = None) -> int: parser = argparse.ArgumentParser() @@ -47,12 +50,12 @@ def main(argv: Optional[Sequence[str]] = None) -> int: for line in file: if (match := regex.match(line)) is not None: error_buffer += str(f"Defect file: \"{filename}\"\n" - f"Line: {line_counter}\n" - f"Column span: {match.span()}\n" - f"Part: \"{match.group()}\"\n\n") + f"Line: {line_counter}\n" + f"Column span: {match.span()}\n" + f"Part: \"{match.group()}\"\n\n") line_counter += 1 - except UnicodeDecodeError as error: + except UnicodeDecodeError: # not a text file, skip continue @@ -64,5 +67,6 @@ def main(argv: Optional[Sequence[str]] = None) -> int: return 0 + if __name__ == '__main__': - exit(main()) + sys.exit(main()) diff --git a/.github/workflows/stale_bot.yaml b/.github/workflows/stale_bot.yaml index d5b23095f4d2..705f6a5c9fe7 100644 --- a/.github/workflows/stale_bot.yaml +++ b/.github/workflows/stale_bot.yaml @@ -4,15 +4,16 @@ on: schedule: - cron: '0 0 * * *' -permissions: - pull-requests: write +permissions: {} jobs: stale: runs-on: ubuntu-latest + permissions: + pull-requests: write steps: - name: Mark and close stale PRs - uses: actions/stale@v8 + uses: actions/stale@v9 with: stale-pr-message: "This PR is stale because it has been 60 days with no activity. This PR will be automatically closed within 7 days if there is no further activity." close-pr-message: "This PR was closed because it has been stalled for some time with no activity." diff --git a/.gitignore b/.gitignore index debe5480afb0..17b9258429f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.vscode/ src/gui/geoip/GeoIP.dat src/gui/geoip/GeoIP.dat.gz src/qbittorrent @@ -40,7 +41,3 @@ src/icons/skin/build-icons/icons/*.png # CMake build directory build/ - -# Web UI tools -node_modules -package-lock.json diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e10d3e94c6c0..fbf101d28eb2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,12 @@ repos: - repo: local hooks: + - id: check-grid-order + name: Check items order in grid layouts + entry: .github/workflows/helper/pre-commit/check_grid_items_order.py + language: script + files: \.ui$ + - id: check-translation-tag name: Check newline characters in tag entry: .github/workflows/helper/pre-commit/check_translation_tag.py @@ -13,7 +19,7 @@ repos: - ts - repo: https://github.com/pre-commit/pre-commit-hooks.git - rev: v4.5.0 + rev: v5.0.0 hooks: - id: check-json name: Check JSON files @@ -63,19 +69,17 @@ repos: - ts - repo: https://github.com/codespell-project/codespell.git - rev: v2.2.6 + rev: v2.4.0 hooks: - id: codespell name: Check spelling (codespell) - args: ["--ignore-words-list", "additionals,curren,fo,ket,superseeding,te,ths"] + args: ["--ignore-words-list", "additionals,categor,curren,fo,ist,ket,notin,searchin,sectionin,superseeding,te,ths"] exclude: | (?x)^( .*\.desktop | .*\.qrc | - build-aux/.* | Changelog | dist/windows/installer-translations/.* | - m4/.* | src/base/3rdparty/.* | src/searchengine/nova3/socks.py | src/webui/www/private/scripts/lib/.* @@ -84,7 +88,7 @@ repos: - ts - repo: https://github.com/crate-ci/typos.git - rev: v1.16.18 + rev: v1.29.4 hooks: - id: typos name: Check spelling (typos) @@ -95,11 +99,8 @@ repos: .*\.desktop | .*\.qrc | \.pre-commit-config\.yaml | - build-aux/.* | Changelog | - configure.* | dist/windows/installer-translations/.* | - m4/.* | src/base/3rdparty/.* | src/searchengine/nova3/socks.py | src/webui/www/private/scripts/lib/.* diff --git a/CMakeLists.txt b/CMakeLists.txt index 06032cba58cc..86ede6b3cff8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ set(minBoostVersion 1.76) set(minQt6Version 6.5.0) set(minOpenSSLVersion 3.0.2) set(minLibtorrent1Version 1.2.19) -set(minLibtorrentVersion 2.0.9) +set(minLibtorrentVersion 2.0.10) set(minZlibVersion 1.2.11) include(GNUInstallDirs) diff --git a/COPYING.GPLv2 b/COPYING.GPLv2 index d159169d1050..9efa6fbc9628 100644 --- a/COPYING.GPLv2 +++ b/COPYING.GPLv2 @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -304,8 +304,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + with this program; if not, see . Also add information on how to contact you by electronic and paper mail. @@ -329,8 +328,8 @@ necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. - , 1 April 1989 - Ty Coon, President of Vice + , 1 April 1989 + Moe Ghoul, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may diff --git a/Changelog b/Changelog index 5163569ef5f2..453c4bcdc872 100644 --- a/Changelog +++ b/Changelog @@ -1,4 +1,320 @@ -Unreleased - sledgehammer999 - v4.5.0 +Unreleased - sledgehammer999 - v5.1.0 + +Mon Oct 28th 2024 - sledgehammer999 - v5.0.1 + - FEATURE: Add "Simple pread/pwrite" disk IO type (Hanabishi) + - BUGFIX: Don't ignore SSL errors (sledgehammer999) + - BUGFIX: Don't try to apply Mark-of-the-Web to nonexistent files (glassez) + - BUGFIX: Disable "Move to trash" option by default (glassez) + - BUGFIX: Disable the ability to create torrents with a piece size of 256MiB (stalkerok) + - BUGFIX: Allow to choose Qt style (glassez) + - BUGFIX: Always notify user about duplicate torrent (glassez) + - BUGFIX: Correctly handle "torrent finished after move" event (glassez) + - BUGFIX: Correctly apply filename filter when `!qB` extension is enabled (glassez) + - BUGFIX: Improve color scheme change detection (glassez) + - BUGFIX: Fix button state for SSL certificate check (Chocobo1) + - WEBUI: Fix CSS that results in hidden torrent list in some browsers (skomerko) + - WEBUI: Use proper text color to highlight items in all filter lists (skomerko) + - WEBUI: Fix 'rename files' dialog cannot be opened more than once (Chocobo1) + - WEBUI: Fix UI of Advanced Settings to show all settings (glassez) + - WEBUI: Free resources allocated by web session once it is destructed (dyseg) + - SEARCH: Import correct libraries (Chocobo1) + - OTHER: Sync flag icons with upstream (xavier2k6) + +Sun Sep 29th 2024 - sledgehammer999 - v5.0.0 + - FEATURE: Support creating .torrent with larger piece size (Chocobo1) + - FEATURE: Improve tracker entries handling (glassez) + - FEATURE: Add separate filter item for tracker errors (glassez) + - FEATURE: Allow to remove tracker from tracker filter widget menu (glassez) + - FEATURE: Implement `Reannounce In` column (Hanabishi) + - FEATURE: Expose `DHT bootstrap nodes` setting (Chocobo1) + - FEATURE: Add support for [Mark-of-the-Web](https://redcanary.com/threat-detection-report/techniques/mark-of-the-web-bypass/) (Chocobo1) + - FEATURE: Allow to keep unwanted files in separate folder (glassez) + - FEATURE: Add `Copy Comment` to the torrent list's context menu (thalieht) + - FEATURE: Allow relative profile paths (Victor Chernyakin) + - FEATURE: Enable Ctrl+F hotkey for more inputs (thalieht) + - FEATURE: Add seeding limits to RSS and Watched folders options UI (glassez) + - FEATURE: Subcategories implicitly follow the parent category options (glassez) + - FEATURE: Add option to name each qbittorrent instance (Chocobo1) + - FEATURE: Add button for sending test email (Thomas Piccirello) + - FEATURE: Allow torrents to override default share limit action (glassez) + - FEATURE: Use Start/Stop instead of Resume/Pause (thalieht) + - FEATURE: Add the Popularity metric (Aliaksei Urbanski) + - FEATURE: Focus on Download button if torrent link retrieved from the clipboard (glassez) + - FEATURE: Add ability to pause/resume entire BitTorrent session (glassez) + - FEATURE: Add an option to set BitTorrent session shutdown timeout (glassez) + - FEATURE: Apply "Excluded file names" to folder names as well (glassez) + - FEATURE: Allow to use regular expression to filter torrent content (glassez) + - FEATURE: Allow to move content files to Trash instead of deleting them (glassez) + - FEATURE: Add ability to display torrent "privateness" in UI (ManiMatter) + - FEATURE: Add a flag in `Peers` tab denoting a connection using NAT hole punching (stalkerok) + - BUGFIX: Display error message when unrecoverable error occurred (glassez) + - BUGFIX: Update size of selected files when selection is changed (glassez) + - BUGFIX: Normalize tags by trimming leading/trailing whitespace (glassez) + - BUGFIX: Correctly handle share limits in torrent options dialog (glassez) + - BUGFIX: Adjust tracker tier when adding additional trackers (Chocobo1) + - BUGFIX: Fix inconsistent naming between `Done/Progress` column (luzpaz) + - BUGFIX: Sanitize peer client names (Hanabishi) + - BUGFIX: Apply share limits immediately when torrent downloading is finished (glassez) + - BUGFIX: Show download progress for folders with zero byte size as 100 instead of 0 (vikas_c) + - BUGFIX: Fix highlighted piece color (Prince Gupta) + - BUGFIX: Apply "merge trackers" logic regardless of way the torrent is added (glassez) + - WEBUI: Improve WebUI responsiveness (Chocobo1) + - WEBUI: Do not exit the app when WebUI has failed to start (Hanabishi) + - WEBUI: Add `Moving` filter to side panel (xavier2k6) + - WEBUI: Add dark theme (d47081) + - WEBUI: Allow to remember torrent content files deletion (David) + - WEBUI: Leave the fields empty when value is invalid (Chocobo1) + - WEBUI: Use natural sorting (Chocobo1) + - WEBUI: Improve WebUI login behavior (JayRet) + - WEBUI: Conditionally show filters sidebar (Thomas Piccirello) + - WEBUI: Add support for running concurrent searches (Thomas Piccirello) + - WEBUI: Improve accuracy of trackers list (Thomas Piccirello) + - WEBUI: Fix error when category doesn't exist (Thomas Piccirello) + - WEBUI: Improve table scrolling and selection on mobile (Thomas Piccirello) + - WEBUI: Restore search tabs on load (Thomas Piccirello) + - WEBUI: Restore previously used tab on load (Thomas Piccirello) + - WEBUI: Increase default height of `Share ratio limit` dialog (thalieht) + - WEBUI: Use enabled search plugins by default (Thomas Piccirello) + - WEBUI: Add columns `Incomplete Save Path`, `Info Hash v1`, `Info Hash v2` (thalieht) + - WEBUI: Always create generic filter items (skomerko) + - WEBUI: Provide `Use Category paths in Manual Mode` option (skomerko) + - WEBUI: Provide `Merge trackers to existing torrent` option (skomerko) + - WEBAPI: Fix wrong timestamp values (Chocobo1) + - WEBAPI: Send binary data with filename and mime type specified (glassez) + - WEBAPI: Expose API for the torrent creator (glassez, Radu Carpa) + - WEBAPI: Add support for SSL torrents (Chocobo1, Radu Carpa) + - WEBAPI: Provide endpoint for listing directory content (Paweł Kotiuk) + - WEBAPI: Provide "private" flag via "torrents/info" endpoint (ManiMatter) + - WEBAPI: Add a way to download .torrent file using search plugin (glassez) + - WEBAPI: Add "private" filter for "torrents/info" endpoint (ManiMatter) + - WEBAPI: Add root_path to "torrents/info" result (David Newhall) + - RSS: Show RSS feed title in HTML browser (Jay) + - RSS: Allow to set delay between requests to the same host (jNullj) + - SEARCH: Allow users to specify Python executable path (Chocobo1) + - SEARCH: Lazy load search plugins (milahu) + - SEARCH: Add date column to the built-in search engine (ducalex) + - SEARCH: Allow to rearrange search tabs (glassez) + - WINDOWS: Use Fusion style on Windows 10+. It has better compatibility with dark mode (glassez) + - WINDOWS: Allow to set qBittorrent as default program (glassez) + - WINDOWS: Don't access "Favorites" folder unexpectedly (glassez) + - LINUX: Add support for systemd power management (Chocobo1) + - LINUX: Add support for localized man pages (Victor Chernyakin) + - LINUX: Specify a locale if none is set (Chocobo1) + - MACOS: Display download/upload speed in dock icon (Nick Korotysh) + - MACOS: Add support for quarantine on macOS (Chocobo1) + - OTHER: Drop support for Qt5, qmake, autotools, Windows < 10, Windows 32-bit + - OTHER: Minimum supported versions: Qt: 6.5, Boost: 1.76, OpenSSL: 3.0.2 + - OTHER: Switch to C++20 + +Mon Sep 16th 2024 - sledgehammer999 - v4.6.7 + - BUGFIX: The updater will launch the link to the build variant you're currently using (sledgehammer999) + - BUGFIX: Focus on Download button if torrent link retrieved from the clipboard (glassez) + - WEBUI: RSS: The list of feeds wouldn't load for Apply Rule (glassez) + +Sun Aug 18th 2024 - sledgehammer999 - v4.6.6 + - BUGFIX: Fix handling of tags containing '&' character (glassez) + - BUGFIX: Show scroll bar in Torrent Tags dialog (glassez) + - BUGFIX: Apply bulk changes to correct content widget items (glassez) + - BUGFIX: Hide zero status filters when torrents are removed (glassez) + - BUGFIX: Fix `Incomplete Save Path` cannot be changed for torrents without metadata (glassez) + - WEBUI: Correctly apply changed "save path" of RSS rules (glassez) + - WEBUI: Clear tracker list on full update (skomerko) + - OTHER: Update User-Agent string for internal downloader and search engines (cayenne17) + +Sun May 26th 2024 - sledgehammer999 - v4.6.5 + - BUGFIX: Prevent app from being closed when disabling system tray icon (glassez) + - BUGFIX: Fix Enter key behavior in Add new torrent dialog (glassez) + - BUGFIX: Prevent invalid status filter index from being used (glassez) + - BUGFIX: Add extra offset for dialog frame (glassez) + - BUGFIX: Don't overwrite stored layout of main window with incorrect one (glassez) + - BUGFIX: Don't forget to resume "missing files" torrent when rechecking (glassez) + - WEBUI: Restore ability to use server-side translation by custom WebUI (glassez) + - WEBUI: Fix wrong peer number (Chocobo1) + - LINUX: Improve AppStream metadata (Chocobo1) + +Sun Mar 24th 2024 - sledgehammer999 - v4.6.4 + - BUGFIX: Correctly adjust "Add New torrent" dialog position in all the cases (glassez) + - BUGFIX: Change "metadata received" stop condition behavior (glassez) + - BUGFIX: Add a small delay before processing the key input of search boxes (Chocobo1) + - BUGFIX: Ensure the profile path is pointing to a directory (Chocobo1) + - RSS: Use better icons for RSS articles (glassez) + - WINDOWS: NSIS: Update French, Hungarian translations (MarcDrieu, foxi69) + - LINUX: Fix sorting when ICU isn't used (Chocobo1) + - LINUX: Fix invisible tray icon on Plasma 6 (tehcneko) + +Mon Jan 15th 2024 - sledgehammer999 - v4.6.3 + - BUGFIX: Correctly update number of filtered items (glassez) + - BUGFIX: Don't forget to store Stop condition value (glassez) + - BUGFIX: Show correctly decoded filename in log (glassez) + - BUGFIX: Specify a locale if none is set (Chocobo1) + - BUGFIX: Apply inactive seeding time limit set on new torrents (glassez) + - BUGFIX: Show URL seeds for torrents that have no metadata (glassez) + - BUGFIX: Don't get stuck loading on mismatched info-hashes in resume data (glassez) + +Mon Nov 27th 2023 - sledgehammer999 - v4.6.2 + - BUGFIX: Do not apply share limit if the previous one was applied (glassez) + - BUGFIX: Show Add new torrent dialog on main window screen (glassez) + - WEBUI: Fix JS memory leak (brvphoenix) + - WEBUI: Disable stdout buffering for qbt-nox (Chocobo1) + - WINDOWS: NSIS: Display correct Minimum Windows OS requirement (xavier2k6) + - WINDOWS: NSIS: Add Hebrew translation (avivmu) + - LINUX: WAYLAND: Fix parent widget of "Lock qBittorrent" submenu (Vlad Zahorodnii) + +Mon Nov 20th 2023 - sledgehammer999 - v4.6.1 + - FEATURE: Add option to enable previous Add new torrent dialog behavior (glassez) + - BUGFIX: Prevent crash due to race condition when adding magnet link (glassez) + - BUGFIX: Fix Enter key behavior when add new torrent (glassez) + - BUGFIX: Add missing main window icon (iomezk) + - BUGFIX: Update size of selected files when selection is changed (glassez) + - BUGFIX: Correctly handle changing save path of torrent w/o metadata (glassez) + - BUGFIX: Use appropriate icon for "moving" torrents in transfer list (xavier2k6) + - WEBUI: Drop WebUI default credentials (glassez) + - WEBUI: Add I2P settings to WebUI (thalieht) + - WEBUI: Fix duplicate scrollbar on Transfer List (AgentConDier) + - WEBUI: Fix .torrent file upload on iPadOS (Vitaly Cheptsov) + - WEBUI: Fix incorrect subcategory sorting (Bartu Özen) + - WEBUI: Correctly set save path in RSS rules (glassez) + - WEBUI: Allow to request torrents count via WebAPI (glassez) + - WEBUI: Improve performance of getting torrent numbers via WebAPI (Chocobo1) + - WEBUI: Improve free disk space checking for WebAPI (glassez) + - WINDOWS: NSIS: Fixed typo in the installer's hungarian translation (MartinKing01) + - LINUX: Fix invisible tray icon with Qt5 in Linux (thalieht) + - MACOS: Remove "Physical memory (RAM) usage limit" option (Chocobo1) + +Sun Oct 22nd 2023 - sledgehammer999 - v4.6.0 + - FEATURE: Add (experimental) I2P support (glassez) + - FEATURE: Provide UI editor for the default theme (glassez) + - FEATURE: Various UI theming improvements (glassez) + - FEATURE: Implement torrent tags editing dialog (glassez) + - FEATURE: Revamp "Watched folder options" and "Automated RSS downloader" dialog (glassez) + - FEATURE: Allow to use another icons in dark mode (glassez) + - FEATURE: Allow to add new torrents to queue top (glassez) + - FEATURE: Allow to filter torrent list by save path (Tom) + - FEATURE: Expose 'socket send/receive buffer size' options (Chocobo1) + - FEATURE: Expose 'max torrent file size' setting (Chocobo1) + - FEATURE: Expose 'bdecode limits' settings (Chocobo1) + - FEATURE: Add options to adjust behavior of merging trackers to existing torrent (glassez) + - FEATURE: Add option to stop seeding when torrent has been inactive (Christopher) + - FEATURE: Allow to use proxy per subsystem (glassez) + - FEATURE: Expand the scope of "Proxy hostname lookup" option (glassez) + - FEATURE: Add shortcut for "Ban peer permanently" function (Luka Čelebić) + - FEATURE: Add option to auto hide zero status filters (glassez) + - FEATURE: Allow to disable confirmation of Pause/Resume All (glassez) + - FEATURE: Add alternative shortcut CTRL+E for CTRL+F (Luka Čelebić) + - FEATURE: Show filtered port numbers in logs (Hanabishi) + - FEATURE: Add button to copy library versions to clipboard (Chocobo1) + - BUGFIX: Ensure ongoing storage moving job will be completed when shutting down (Chocobo1) + - BUGFIX: Refactored many areas to call non UI blocking code (glassez) + - BUGFIX: Various improvements to the SQLite backend (glassez) + - BUGFIX: Improve startup window state handling (glassez) + - BUGFIX: Use tray icon from system theme only if option is set (glassez) + - BUGFIX: Inhibit system sleep while torrents are moving (Sentox6) + - BUGFIX: Use hostname instead of domain name in tracker filter list (tearfur) + - BUGFIX: Visually validate input path in torrent creator dialog (Chocobo1) + - BUGFIX: Disable symlink resolving in Torrent creator (Ignat Loskutov) + - BUGFIX: Change default value for `file pool size` and `stop tracker timeout` settings (stalkerok) + - BUGFIX: Log when duplicate torrents are being added (glassez) + - BUGFIX: Inhibit suspend instead of screen idle (axet) + - BUGFIX: Ensure file name is valid when exporting torrents (glassez) + - BUGFIX: Open "Save path" if torrent has no metadata (Xu Chao) + - BUGFIX: Prevent torrent starting unexpectedly edge case with magnet (Xu Chao) + - BUGFIX: Better ergonomics of the "Add new torrent" dialog (Xu Chao, glassez) + - WEBUI: Add log viewer (brvphoenix) + - WEBUI: WebAPI: Allow to specify session cookie name (glassez) + - WEBUI: Improve sync API performance (glassez) + - WEBUI: Add filelog settings (brvphoenix) + - WEBUI: Add multi-file renaming (loligans) + - WEBUI: Add "Add to top of queue" option (thalieht) + - WEBUI: Implement subcategories (Bartu Özen) + - WEBUI: Set "SameSite=None" if CSRF Protection is disabled (七海千秋) + - WEBUI: Show only hosts in tracker filter list (ttys3) + - WEBUI: Set Connection status and Speed limits tooltips (Raymond Ha) + - WEBUI: set Cross Origin Opener Policy to `same-origin` (Chocobo1) + - WEBUI: Fix response for HTTP HEAD method (Chocobo1) + - WEBUI: Preserve the network interfaces when connection is down (Fabricio Silva) + - WEBUI: Add "Add Tags" field for RSS rules (Matic Babnik) + - WEBUI: Fix missing error icon (Trim21) + - RSS: Add "Rename rule" button to RSS Downloader (BallsOfSpaghetti) + - RSS: Allow to edit RSS feed URL (glassez) + - RSS: Allow to assign priority to RSS download rule (glassez) + - SEARCH: Use python isolate mode (Chocobo1) + - SEARCH: Bump python version minimum requirement to 3.7.0 (Chocobo1) + - OTHER: Enable DBUS cmake option on FreeBSD (yuri@FreeBSD) + - OTHER: Numerous code improvements and refactorings (glassez, Chocobo1) + +Tue Aug 29 2023 - sledgehammer999 - v4.5.5 + - BUGFIX: Fix transfer list tab hotkey (thalieht) + - BUGFIX: Don't forget to enable the Apply button in the Options dialog (glassez) + - BUGFIX: Immediately update torrent status on moving files (glassez) + - BUGFIX: Improve performance when scrolling the file list of large torrents (gdim47) + - BUGFIX: Don't operate on random torrents when multiple are selected and a sort/filter is applied (glassez) + - RSS: Fix overwriting feeds.json with an incomplete load of it (Omar Abdul Azeez) + - WINDOWS: Software update check logic is disabled for < Win10 (sledgehammer999) + - WINDOWS: NSIS: Update Turkish and French translations (Burak Yavuz, MarcDrieu) + - WINDOWS: NSIS: Add Romanian translation (rusu-afanasie) + +Sun Jun 18 2023 - sledgehammer999 - v4.5.4 + - BUGFIX: Allow to disable confirmation of Pause/Resume All (glassez) + - BUGFIX: Sync flag icons with upstream (Priit Uring) + - WEBUI: Fix category save path (Raymond Ha) + +Sun May 28 2023 - sledgehammer999 - v4.5.3 + - BUGFIX: Correctly check if database needs to be updated (glassez) + - BUGFIX: Prevent incorrect log message about torrent content deletion (glassez) + - BUGFIX: Improve finished torrent handling (glassez) + - BUGFIX: Correctly initialize group box children as disabled in Preferences (thalieht) + - BUGFIX: Don't miss saving "download path" in SQLite storage (glassez) + - BUGFIX: Improve logging of running external program (glassez) + - WEBUI: Disable UPnP for web UI by default (glassez) + - WEBUI: Use workaround for IOS file picker (DivineHawk) + - WEBUI: Work around Chrome download limit (Chocobo1) + - WEBUI: Improve 'exporting torrent' behavior (Chocobo1) + - WINDOWS: NSIS: Add Slovak translation (Christian Danížek) + +Tue Feb 28 2023 - sledgehammer999 - 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 - v4.5.1 + - FEATURE: Re-allow to use icons from system theme (glassez) + - BUGFIX: Fix Speed limit icon size (Nowshed H. Imran) + - BUGFIX: Revise and fix some text colors (Chocobo1, Nowshed H. Imran) + - BUGFIX: Correctly load folder based UI theme (glassez) + - BUGFIX: Fix crash due to invalid encoding of tracker URLs (glassez) + - BUGFIX: Don't drop !qB extension when renaming incomplete file (glassez) + - BUGFIX: Correctly count the number of torrents in subcategories (glassez) + - BUGFIX: Use "additional trackers" when metadata retrieving (glassez) + - BUGFIX: Apply correct tab order to Category options dialog (glassez) + - BUGFIX: Add all torrents passed via the command line (glassez) + - BUGFIX: Fix startup performance on Qt5 (glassez) + - BUGFIX: Automatic move will now overwrite existing files (aka previous behavior) (glassez) + - BUGFIX: Some fixes for loading Chinese locales (sledgehammer999) + - BUGFIX: New Pause icon color for toolbar/menu (Nowshed H. Imran, sledgehammer999) + - BUGFIX: Adjust env variable for PDB discovery (sledgehammer999) + - WEBUI: Fix missing "queued" icon (thalieht) + - WEBUI: Return paths using platform-independent separator format (glassez) + - WEBUI: Change order of accepted types of file input (Jason Carr) + - WEBUI: Add missing icons (brvphoenix) + - WEBUI: Add "Resume data storage type" option (thalieht) + - WEBUI: Make rename file dialog resizable (Torsten Schwarz) + - WEBUI: Prevent incorrect line breaking (David Xuang) + - WEBUI: Improve hotkeys (Fidel Selva) + - WEBUI: Remove suggestions while searching for torrents (Midhun V Nadh) + - WEBUI: Expose "IS PRIVATE" flag (sotiris-bos) + - WEBUI: Return name/hash/infohash_v1/infohash_v2 torrent properties (qbittorrentfan) + - WINDOWS: Correctly detect drive letter in path (glassez) + - WINDOWS: NSIS: Update Swedish, Lithuanian translations (Jonatan, Deividas) + - LINUX: Fix tray icon issues (glassez) + +Sat Nov 26 2022 - sledgehammer999 - v4.5.0 - FEATURE: Add `Auto resize columns` functionality (Chocobo1) - FEATURE: Allow to use Category paths in `Manual` mode (glassez) - FEATURE: Allow to disable Automatic mode when default "temp" path changed (glassez) @@ -80,6 +396,70 @@ Unreleased - sledgehammer999 - v4.5.0 - MACOS: Fix wrong background color in properties widget (NotTsunami) - OTHER: Binary distributions of qbittorrent are GPLv3+ licensed (sledgehammer999) +Tue Aug 30 2022 - sledgehammer999 - v4.4.5 + - BUGFIX: Fix missing trackers when adding magnet link. Affects libtorrent 2.0.x builds. (glassez) + +Mon Aug 22 2022 - sledgehammer999 - v4.4.4 + - BUGFIX: Correctly handle data decompression with Qt 6.3 (brvphoenix) + - BUGFIX: Fix wrong file names displayed in tooltip (Chocobo1) + - BUGFIX: Fix incorrect "max outgoing port" setting (glassez) + - BUGFIX: Make working set limit available only on libtorrent 2.0.x builds (summer) + - BUGFIX: Try to recover missing tags (summer) + - RSS: Clear RSS parsing error after use (glassez) + - WEBAPI: Set HTTP method restriction on WebAPI actions (Chocobo1) + - WINDOWS: Work around application stuttering on Windows (Chocobo1) + - WINDOWS: NSIS: Update Portuguese, Italian, Korean, Latvian translations(Blackspirits, bovirus, Minseo Lee, Coool) + - LINUX: Improve D-Bus notifications handling (glassez) + - MACOS: Open destination folders on macOS in separate thread (Nick Korotysh) + +Tue May 24 2022 - sledgehammer999 - v4.4.3.1 + - BUGFIX: Fix broken translations (sledgehammer999) + +Sun May 22 2022 - sledgehammer999 - v4.4.3 + - BUGFIX: Correctly handle changing of temp save path (glassez) + - BUGFIX: Fix storage in SQLite (glassez) + - BUGFIX: Correctly apply content layout when "Skip hash check" is enabled (glassez) + - BUGFIX: Don't corrupt IDs of v2 torrents (glassez) + - BUGFIX: Reduce the number of hashing threads by default (improves hashing speed on HDDs) (summer) + - BUGFIX: Prevent the "update dialog" from blocking input on other windows (summer) + - BUGFIX: Add trackers in exported .torrent files (glassez) + - BUGFIX: Fix wrong GUI behavior in "Optional IP address to bind to" setting (Chocobo1) + - WEBUI: Fix WebUI crash due to missing tags from config (An0n) + - WEBUI: Show correct location path (Chocobo1) + - MACOS: Fix main window freezing after opening a files dialog (glassez) + +Tue Mar 22 2022 - sledgehammer999 - v4.4.2 + - FEATURE: Allow to limit max memory working set size (glassez) + - BUGFIX: Fix UI crash when torrent is in a non-existent category (Kevin Cox) + - BUGFIX: Correctly handle changing of global save paths (glassez) + - BUGFIX: Disable performance alert (Chocobo1) + - BUGFIX: Prevent loading resume data with inconsistent ID (glassez) + - BUGFIX: Properly handle metadata download for an existing torrent (glassez) + - BUGFIX: Prevent crash when open torrent destination folder (glassez) + - WINDOWS: NSIS: Update Spanish, Spanish International and French translations(Juanjo Jiménez, RqndomHax) + +Tue Feb 15 2022 - sledgehammer999 - v4.4.1 + - FEATURE: Restore all torrent settings to the torrent's main context menu (thalieht) + - FEATURE: Add confirmation for enabling Auto TMM from context menu (thalieht) + - FEATURE: Add tooltip to Automatic Torrent Management context menu action (thalieht) + - FEATURE: Add Select All/None buttons in new torrent dialog (thalieht) + - BUGFIX: Keep "torrent info" alive while generate .torrent file (glassez) + - BUGFIX: Correctly handle Auto TMM in Torrent Files Watcher (glassez) + - BUGFIX: Correctly track the root folder name change (glassez) + - BUGFIX: Various fixes to the moving torrent code (glassez) + - BUGFIX: Update the torrent's download path field when changing category (thalieht) + - BUGFIX: Correctly handle received metadata (glassez) + - BUGFIX: Store hybrid torrents using legacy filenames (glassez) + - BUGFIX: Open correct directory when clicked on Browse button (glassez) + - BUGFIX: Fix crash when shutting down and clicing on system tray icon (Chocobo1) + - BUGFIX: Fix "Free space on disk" in new torrent dialog (thalieht) + - BUGFIX: Optimize completed files handling (Prince Gupta) + - BUGFIX: Migrate proxy settings (sledgehammer999) + - BUGFIX: Try to recover missing categories (glassez) + - WEBUI: WebAPI: fix wrong key used for categories (Chocobo1) + - WEBUI: Remove hack for outdated IE 6 browser (Chocobo1) + - RSS: Correctly handle XML parsing errors (glassez) + Thu Jan 06 2022 - sledgehammer999 - v4.4.0 - FEATURE: Support for v2 torrents along with libtorrent 2.0.x support (glassez, Chocobo1) - FEATURE: Support for Qt6 (glassez) diff --git a/INSTALL b/INSTALL index 8d43301edfad..ec3ff78ea6eb 100644 --- a/INSTALL +++ b/INSTALL @@ -5,7 +5,7 @@ qBittorrent - A BitTorrent client in C++ / Qt - Boost >= 1.76 - - libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.9 - 2.0.x + - libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.10 - 2.0.x * By Arvid Norberg, https://www.libtorrent.org/ * Be careful: another library (the one used by rTorrent) uses a similar name @@ -18,7 +18,7 @@ qBittorrent - A BitTorrent client in C++ / Qt - CMake >= 3.16 * Compile-time only - - Python >= 3.7.0 + - Python >= 3.9.0 * Optional, run-time only * Used by the bundled search engine diff --git a/README.md b/README.md index 45c57956ff2f..d3054bbf279c 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,7 @@ qBittorrent - A BitTorrent client in Qt ------------------------------------------ -[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/qbittorrent/qBittorrent?branch=master&svg=true)](https://ci.appveyor.com/project/qbittorrent/qBittorrent) -[![GitHub Actions CI Status](https://github.com/qbittorrent/qBittorrent/workflows/GitHub%20Actions%20CI/badge.svg)](https://github.com/qbittorrent/qBittorrent/actions) +[![GitHub Actions CI Status](https://github.com/qbittorrent/qBittorrent/actions/workflows/ci_ubuntu.yaml/badge.svg)](https://github.com/qbittorrent/qBittorrent/actions) [![Coverity Status](https://scan.coverity.com/projects/5494/badge.svg)](https://scan.coverity.com/projects/5494) ******************************** ### Description: @@ -16,15 +15,8 @@ support as well as many features. The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). ### Installation: -For installation, follow the instructions from INSTALL file, but simple: -``` -./configure -make && make install -qbittorrent -``` - -will install and execute qBittorrent hopefully without any problem. +Refer to the [INSTALL](INSTALL) file. ### Public key: Starting from v3.3.4 all source tarballs and binaries are signed.
diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000000..6c931a30c6a1 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,18 @@ +# Security Policy + +qBittorrent takes the security of our software seriously, including all source code repositories managed through our GitHub organisation. +If you believe you have found a security vulnerability in qBittorrent, please report it to us as described below. + +## Reporting Security Issues + +Please do not report security vulnerabilities through public GitHub issues. Instead, please use GitHubs private vulnerability reporting functionality associated to this repository. Additionally, you may email us with all security-related inquiries and notifications at `security@qbittorrent.org`. + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: +1. Type of issue +2. Step-by-step instructions to reproduce the issue +3. Proof-of-concept or exploit code (if possible) +4. Potential impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. Any and all CVEs will be requested and issued through GitHubs private vulnerability reporting functionality, which will be published alongside the disclosure. + +This security policy only applies to the most recent stable branch of qBittorrent. Flaws in old versions that are not present in the current stable branch will not be fixed. diff --git a/cmake/Modules/CommonConfig.cmake b/cmake/Modules/CommonConfig.cmake index 1e3a1d006f24..b57dc4bcf914 100644 --- a/cmake/Modules/CommonConfig.cmake +++ b/cmake/Modules/CommonConfig.cmake @@ -83,6 +83,7 @@ endif() if (MSVC) target_compile_options(qbt_common_cfg INTERFACE /guard:cf + /permissive- /utf-8 # https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ /Zc:__cplusplus diff --git a/dist/mac/Info.plist b/dist/mac/Info.plist index 462356de8755..0b85335fbea5 100644 --- a/dist/mac/Info.plist +++ b/dist/mac/Info.plist @@ -55,7 +55,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 4.5.0 + 5.2.0 CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier @@ -67,7 +67,7 @@ NSAppleScriptEnabled YES NSHumanReadableCopyright - Copyright © 2006-2023 The qBittorrent project + Copyright © 2006-2024 The qBittorrent project UTExportedTypeDeclarations diff --git a/dist/unix/CMakeLists.txt b/dist/unix/CMakeLists.txt index 19fb16fbb4df..7072da5eafa9 100644 --- a/dist/unix/CMakeLists.txt +++ b/dist/unix/CMakeLists.txt @@ -38,7 +38,7 @@ if (GUI) COMPONENT data ) - install(FILES org.qbittorrent.qBittorrent.appdata.xml + install(FILES org.qbittorrent.qBittorrent.metainfo.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo/ COMPONENT data ) diff --git a/dist/unix/org.qbittorrent.qBittorrent.desktop b/dist/unix/org.qbittorrent.qBittorrent.desktop index cb9e814cb4ac..2cd055a1aa65 100644 --- a/dist/unix/org.qbittorrent.qBittorrent.desktop +++ b/dist/unix/org.qbittorrent.qBittorrent.desktop @@ -14,216 +14,220 @@ Keywords=bittorrent;torrent;magnet;download;p2p; SingleMainWindow=true # Translations -Comment[af]=Aflaai en deel lêers oor BitTorrent GenericName[af]=BitTorrent kliënt +Comment[af]=Aflaai en deel lêers oor BitTorrent Name[af]=qBittorrent -Comment[ar]=نزّل وشارك الملفات عبر كيوبت‎تورنت GenericName[ar]=عميل بت‎تورنت +Comment[ar]=نزّل وشارك الملفات عبر كيوبت‎تورنت Name[ar]=qBittorrent -Comment[be]=Спампоўванне і раздача файлаў праз пратакол BitTorrent GenericName[be]=Кліент BitTorrent +Comment[be]=Спампоўванне і раздача файлаў праз пратакол BitTorrent Name[be]=qBittorrent -Comment[bg]=Сваляне и споделяне на файлове чрез BitTorrent GenericName[bg]=BitTorrent клиент +Comment[bg]=Сваляне и споделяне на файлове чрез BitTorrent Name[bg]=qBittorrent -Comment[bn]=বিটটরেন্টে ফাইল ডাউনলোড এবং শেয়ার করুন GenericName[bn]=বিটটরেন্ট ক্লায়েন্ট +Comment[bn]=বিটটরেন্টে ফাইল ডাউনলোড এবং শেয়ার করুন Name[bn]=qBittorrent -Comment[zh]=通过 BitTorrent 下载和分享文件 GenericName[zh]=BitTorrent 客户端 +Comment[zh]=通过 BitTorrent 下载和分享文件 Name[zh]=qBittorrent -Comment[bs]=Preuzmi i dijeli datoteke preko BitTorrent-a GenericName[bs]=BitTorrent klijent +Comment[bs]=Preuzmi i dijeli datoteke preko BitTorrent-a Name[bs]=qBittorrent -Comment[ca]=Baixeu i compartiu fitxers amb el BitTorrent GenericName[ca]=Client de BitTorrent +Comment[ca]=Baixeu i compartiu fitxers amb el BitTorrent Name[ca]=qBittorrent -Comment[cs]=Stahování a sdílení souborů přes síť BitTorrent GenericName[cs]=BitTorrent klient +Comment[cs]=Stahování a sdílení souborů přes síť BitTorrent Name[cs]=qBittorrent -Comment[da]=Download og del filer over BitTorrent GenericName[da]=BitTorrent-klient +Comment[da]=Download og del filer over BitTorrent Name[da]=qBittorrent -Comment[de]=Über BitTorrent Dateien herunterladen und teilen GenericName[de]=BitTorrent Client +Comment[de]=Über BitTorrent Dateien herunterladen und teilen Name[de]=qBittorrent -Comment[el]=Κάντε λήψη και μοιραστείτε αρχεία μέσω BitTorrent GenericName[el]=BitTorrent client +Comment[el]=Κάντε λήψη και μοιραστείτε αρχεία μέσω BitTorrent Name[el]=qBittorrent -Comment[en_GB]=Download and share files over BitTorrent GenericName[en_GB]=BitTorrent client +Comment[en_GB]=Download and share files over BitTorrent Name[en_GB]=qBittorrent -Comment[es]=Descargue y comparta archivos por BitTorrent GenericName[es]=Cliente BitTorrent +Comment[es]=Descargue y comparta archivos por BitTorrent Name[es]=qBittorrent -Comment[et]=Lae alla ja jaga faile üle BitTorrenti GenericName[et]=BitTorrent klient +Comment[et]=Lae alla ja jaga faile üle BitTorrenti Name[et]=qBittorrent -Comment[eu]=Jeitsi eta elkarbanatu agiriak BitTorrent bidez GenericName[eu]=BitTorrent bezeroa +Comment[eu]=Jeitsi eta elkarbanatu agiriak BitTorrent bidez Name[eu]=qBittorrent -Comment[fa]=دانلود و به اشتراک گذاری فایل های بوسیله بیت تورنت GenericName[fa]=بیت تورنت نسخه کلاینت +Comment[fa]=دانلود و به اشتراک گذاری فایل های بوسیله بیت تورنت Name[fa]=qBittorrent -Comment[fi]=Lataa ja jaa tiedostoja BitTorrentia käyttäen GenericName[fi]=BitTorrent-asiakasohjelma +Comment[fi]=Lataa ja jaa tiedostoja BitTorrentia käyttäen Name[fi]=qBittorrent -Comment[fr]=Télécharger et partager des fichiers sur BitTorrent GenericName[fr]=Client BitTorrent +Comment[fr]=Télécharger et partager des fichiers sur BitTorrent Name[fr]=qBittorrent -Comment[gl]=Descargar e compartir ficheiros co protocolo BitTorrent GenericName[gl]=Cliente BitTorrent +Comment[gl]=Descargar e compartir ficheiros co protocolo BitTorrent Name[gl]=qBittorrent -Comment[gu]=બિટ્ટોરેંટ પર ફાઈલો ડાઉનલોડ અને શેર કરો GenericName[gu]=બિટ્ટોરેંટ ક્લાયન્ટ +Comment[gu]=બિટ્ટોરેંટ પર ફાઈલો ડાઉનલોડ અને શેર કરો Name[gu]=qBittorrent -Comment[he]=הורד ושתף קבצים על גבי ביטורנט GenericName[he]=לקוח ביטורנט +Comment[he]=הורד ושתף קבצים על גבי ביטורנט Name[he]=qBittorrent -Comment[hr]=Preuzmite i dijelite datoteke putem BitTorrenta GenericName[hr]=BitTorrent klijent +Comment[hr]=Preuzmite i dijelite datoteke putem BitTorrenta Name[hr]=qBittorrent -Comment[hu]=Fájlok letöltése és megosztása a BitTorrent hálózaton keresztül GenericName[hu]=BitTorrent kliens +Comment[hu]=Fájlok letöltése és megosztása a BitTorrent hálózaton keresztül Name[hu]=qBittorrent -Comment[hy]=Նիշքերի փոխանցում BitTorrent-ի միջոցով GenericName[hy]=BitTorrent սպասառու +Comment[hy]=Նիշքերի փոխանցում BitTorrent-ի միջոցով Name[hy]=qBittorrent -Comment[id]=Unduh dan berbagi berkas melalui BitTorrent GenericName[id]=Klien BitTorrent +Comment[id]=Unduh dan berbagi berkas melalui BitTorrent Name[id]=qBittorrent -Comment[is]=Sækja og deila skrám yfir BitTorrent GenericName[is]=BitTorrent biðlarar +Comment[is]=Sækja og deila skrám yfir BitTorrent Name[is]=qBittorrent -Comment[it]=Scarica e condividi file tramite BitTorrent GenericName[it]=Client BitTorrent +Comment[it]=Scarica e condividi file tramite BitTorrent Name[it]=qBittorrent -Comment[ja]=BitTorrentでファイルのダウンロードと共有 GenericName[ja]=BitTorrentクライアント +Comment[ja]=BitTorrentでファイルのダウンロードと共有 Name[ja]=qBittorrent -Comment[ka]=გადმოტვირთეთ და გააზიარეთ ფაილები BitTorrent-ის საშუალებით GenericName[ka]=BitTorrent კლიენტი +Comment[ka]=გადმოტვირთეთ და გააზიარეთ ფაილები BitTorrent-ის საშუალებით Name[ka]=qBittorrent -Comment[ko]=BitTorrent를 통한 파일 내려받기 및 공유 GenericName[ko]=BitTorrent 클라이언트 +Comment[ko]=BitTorrent를 통한 파일 다운로드 및 공유 Name[ko]=qBittorrent -Comment[lt]=Atsisiųskite bei dalinkitės failais BitTorrent tinkle GenericName[lt]=BitTorrent klientas +Comment[lt]=Atsisiųskite bei dalinkitės failais BitTorrent tinkle Name[lt]=qBittorrent -Comment[mk]=Превземајте и споделувајте фајлови преку BitTorrent GenericName[mk]=BitTorrent клиент +Comment[mk]=Превземајте и споделувајте фајлови преку BitTorrent Name[mk]=qBittorrent -Comment[my]=တောရန့်ဖြင့်ဖိုင်များဒေါင်းလုဒ်ဆွဲရန်နှင့်မျှဝေရန် GenericName[my]=တောရန့်စီမံခန့်ခွဲသည့်အရာ +Comment[my]=တောရန့်ဖြင့်ဖိုင်များဒေါင်းလုဒ်ဆွဲရန်နှင့်မျှဝေရန် Name[my]=qBittorrent -Comment[nb]=Last ned og del filer over BitTorrent GenericName[nb]=BitTorrent-klient +Comment[nb]=Last ned og del filer over BitTorrent Name[nb]=qBittorrent -Comment[nl]=Bestanden downloaden en delen via BitTorrent GenericName[nl]=BitTorrent-client +Comment[nl]=Bestanden downloaden en delen via BitTorrent Name[nl]=qBittorrent -Comment[pl]=Pobieraj i dziel się plikami przez BitTorrent GenericName[pl]=Klient BitTorrent +Comment[pl]=Pobieraj i dziel się plikami przez BitTorrent Name[pl]=qBittorrent -Comment[pt]=Transferir e partilhar ficheiros por BitTorrent GenericName[pt]=Cliente BitTorrent +Comment[pt]=Transferir e partilhar ficheiros por BitTorrent Name[pt]=qBittorrent -Comment[pt_BR]=Baixe e compartilhe arquivos pelo BitTorrent GenericName[pt_BR]=Cliente BitTorrent +Comment[pt_BR]=Baixe e compartilhe arquivos pelo BitTorrent Name[pt_BR]=qBittorrent -Comment[ro]=Descărcați și partajați fișiere prin BitTorrent GenericName[ro]=Client BitTorrent +Comment[ro]=Descărcați și partajați fișiere prin BitTorrent Name[ro]=qBittorrent -Comment[ru]=Обмен файлами по сети БитТоррент GenericName[ru]=Клиент сети БитТоррент +Comment[ru]=Обмен файлами по сети БитТоррент Name[ru]=qBittorrent -Comment[sk]=Sťahovanie a zdieľanie súborov prostredníctvom siete BitTorrent GenericName[sk]=Klient siete BitTorrent +Comment[sk]=Sťahovanie a zdieľanie súborov prostredníctvom siete BitTorrent Name[sk]=qBittorrent -Comment[sl]=Prenesite in delite datoteke preko BitTorrenta GenericName[sl]=BitTorrent odjemalec +Comment[sl]=Prenesite in delite datoteke preko BitTorrenta Name[sl]=qBittorrent +GenericName[sq]=Klienti BitTorrent +Comment[sq]=Shkarko dhe shpërndaj skedarë në BitTorrent Name[sq]=qBittorrent -Comment[sr]=Преузимајте и делите фајлове преко BitTorrent протокола -GenericName[sr]=BitTorrent-клијент +GenericName[sr]=BitTorrent клијент +Comment[sr]=Преузимајте и делите фајлове преко BitTorrent-а Name[sr]=qBittorrent -Comment[sr@latin]=Preuzimanje i deljenje fajlova preko BitTorrent-a GenericName[sr@latin]=BitTorrent klijent +Comment[sr@latin]=Preuzimanje i deljenje fajlova preko BitTorrent-a Name[sr@latin]=qBittorrent -Comment[sv]=Hämta och dela filer över BitTorrent GenericName[sv]=BitTorrent-klient +Comment[sv]=Hämta och dela filer över BitTorrent Name[sv]=qBittorrent -Comment[ta]=BitTorrent வழியாக கோப்புகளை பதிவிறக்க மற்றும் பகிர GenericName[ta]=BitTorrent வாடிக்கையாளர் +Comment[ta]=BitTorrent வழியாக கோப்புகளை பதிவிறக்க மற்றும் பகிர Name[ta]=qBittorrent -Comment[te]=క్యు బిట్ టొరెంట్ తో ఫైల్స్ దిగుమతి చేసుకోండి , పంచుకోండి GenericName[te]=క్యు బిట్ టొరెంట్ క్లయింట్ +Comment[te]=క్యు బిట్ టొరెంట్ తో ఫైల్స్ దిగుమతి చేసుకోండి , పంచుకోండి Name[te]=qBittorrent -Comment[th]=ดาวน์โหลดและแชร์ไฟล์ผ่าน BitTorrent -GenericName[th]=โปรแกรมบิททอเร้นท์ +GenericName[th]=ไคลเอนต์บิททอร์เรนต์ +Comment[th]=ดาวน์โหลดและแชร์ไฟล์ผ่านบิตทอร์เรนต์ Name[th]=qBittorrent -Comment[tr]=Dosyaları BitTorrent üzerinden indirin ve paylaşın GenericName[tr]=BitTorrent istemcisi +Comment[tr]=Dosyaları BitTorrent üzerinden indirin ve paylaşın Name[tr]=qBittorrent -Comment[ur]=BitTorrent پر فائلوں کو ڈاؤن لوڈ کریں اور اشتراک کریں GenericName[ur]=قیو بٹ ٹورنٹ کلائنٹ +Comment[ur]=BitTorrent پر فائلوں کو ڈاؤن لوڈ کریں اور اشتراک کریں Name[ur]=qBittorrent -Comment[uk]=Завантажуйте та поширюйте файли через BitTorrent GenericName[uk]=BitTorrent-клієнт +Comment[uk]=Завантажуйте та поширюйте файли через BitTorrent Name[uk]=qBittorrent -Comment[vi]=Tải xuống và chia sẻ tệp qua BitTorrent GenericName[vi]=Máy khách BitTorrent +Comment[vi]=Tải xuống và chia sẻ tệp qua BitTorrent Name[vi]=qBittorrent -Comment[zh_HK]=經由BitTorrent下載並分享檔案 GenericName[zh_HK]=BitTorrent用戶端 +Comment[zh_HK]=經由BitTorrent下載並分享檔案 Name[zh_HK]=qBittorrent -Comment[zh_TW]=經由 BitTorrent 下載並分享檔案 GenericName[zh_TW]=BitTorrent 用戶端 +Comment[zh_TW]=使用 BitTorrent 下載並分享檔案 Name[zh_TW]=qBittorrent -Comment[eo]=Elŝutu kaj kunhavigu dosierojn per BitTorrent GenericName[eo]=BitTorrent-kliento +Comment[eo]=Elŝutu kaj kunhavigu dosierojn per BitTorrent Name[eo]=qBittorrent -Comment[kk]=BitTorrent арқылы файл жүктеу және бөлісу GenericName[kk]=BitTorrent клиенті +Comment[kk]=BitTorrent арқылы файл жүктеу және бөлісу Name[kk]=qBittorrent -Comment[en_AU]=Download and share files over BitTorrent GenericName[en_AU]=BitTorrent client +Comment[en_AU]=Download and share files over BitTorrent Name[en_AU]=qBittorrent Name[rm]=qBittorrent Name[jv]=qBittorrent -Comment[oc]=Telecargar e partejar de fichièrs amb BitTorrent GenericName[oc]=Client BitTorrent +Comment[oc]=Telecargar e partejar de fichièrs amb BitTorrent Name[oc]=qBittorrent Name[ug]=qBittorrent Name[yi]=qBittorrent -Comment[nqo]=ߞߐߕߐ߯ߘߐ ߟߎ߬ ߟߊߖߌ߰ ߞߊ߬ ߓߊ߲߫ ߞߵߊ߬ߟߎ߬ ߘߐߕߟߊ߫ ߓߌߙߏߙߍ߲ߕ ߞߊ߲߬ GenericName[nqo]=ߓߌߙߏߙߍ߲ߕ ߕߣߐ߬ߓߐ߬ߟߊ +Comment[nqo]=ߞߐߕߐ߯ߘߐ ߟߎ߬ ߟߊߖߌ߰ ߞߊ߬ ߓߊ߲߫ ߞߵߊ߬ߟߎ߬ ߘߐߕߟߊ߫ ߓߌߙߏߙߍ߲ߕ ߞߊ߲߬ Name[nqo]=qBittorrent -Comment[uz@Latn]=BitTorrent orqali fayllarni yuklab olish va baham ko‘rish GenericName[uz@Latn]=BitTorrent mijozi +Comment[uz@Latn]=BitTorrent orqali fayllarni yuklab olish va baham ko‘rish Name[uz@Latn]=qBittorrent -Comment[ltg]=Atsasyuteit i daleit failus ar BitTorrent GenericName[ltg]=BitTorrent klients +Comment[ltg]=Atsasyuteit i daleit failus ar BitTorrent Name[ltg]=qBittorrent -Comment[hi_IN]=BitTorrent द्वारा फाइल डाउनलोड व सहभाजन GenericName[hi_IN]=Bittorrent साधन +Comment[hi_IN]=BitTorrent द्वारा फाइल डाउनलोड व सहभाजन Name[hi_IN]=qBittorrent -Comment[az@latin]=Faylları BitTorrent vasitəsilə endirin və paylaşın GenericName[az@latin]=BitTorrent client +Comment[az@latin]=Faylları BitTorrent vasitəsilə endirin və paylaşın Name[az@latin]=qBittorrent -Comment[lv_LV]=Lejupielādēt un koplietot failus ar BitTorrent GenericName[lv_LV]=BitTorrent klients +Comment[lv_LV]=Lejupielādēt un koplietot failus ar BitTorrent Name[lv_LV]=qBittorrent -Comment[ms_MY]=Muat turun dan kongsi fail melalui BitTorrent GenericName[ms_MY]=Klien BitTorrent +Comment[ms_MY]=Muat turun dan kongsi fail melalui BitTorrent Name[ms_MY]=qBittorrent -Comment[mn_MN]=BitTorrent-оор файлуудаа тат, түгээ GenericName[mn_MN]=BitTorrent татагч +Comment[mn_MN]=BitTorrent-оор файлуудаа тат, түгээ Name[mn_MN]=qBittorrent -Comment[ne_NP]=फाइलहरू डाउनलोड गर्नुहोस् र BitTorrent मा साझा गर्नुहोस् GenericName[ne_NP]=BitTorrent क्लाइन्ट +Comment[ne_NP]=फाइलहरू डाउनलोड गर्नुहोस् र BitTorrent मा साझा गर्नुहोस् Name[ne_NP]=qBittorrent -Comment[pt_PT]=Transferir e partilhar ficheiros por BitTorrent GenericName[pt_PT]=Cliente BitTorrent +Comment[pt_PT]=Transferir e partilhar ficheiros por BitTorrent Name[pt_PT]=qBittorrent +GenericName[si_LK]=BitTorrent සේවාදායකයා +Comment[si_LK]=BitTorrent හරහා ගොනු බාගත කර බෙදාගන්න. Name[si_LK]=qBittorrent diff --git a/dist/unix/org.qbittorrent.qBittorrent.appdata.xml b/dist/unix/org.qbittorrent.qBittorrent.metainfo.xml similarity index 55% rename from dist/unix/org.qbittorrent.qBittorrent.appdata.xml rename to dist/unix/org.qbittorrent.qBittorrent.metainfo.xml index e56ffc716b6a..4aacf15ce59c 100644 --- a/dist/unix/org.qbittorrent.qBittorrent.appdata.xml +++ b/dist/unix/org.qbittorrent.qBittorrent.metainfo.xml @@ -1,6 +1,6 @@ - + org.qbittorrent.qBittorrent CC0-1.0 GPL-3.0-or-later and OpenSSL @@ -14,33 +14,12 @@

  • Polished µTorrent-like User Interface
  • -
  • - Well-integrated and extensible Search Engine -
      -
    • Simultaneous search in many Torrent search sites
    • -
    • Category-specific search requests (e.g. Books, Music, Software)
    • -
    -
  • +
  • Well-integrated and extensible Search Engine
  • RSS feed support with advanced download filters (incl. regex)
  • -
  • - Many Bittorrent extensions supported: -
      -
    • Magnet links
    • -
    • Distributed hash table (DHT), peer exchange protocol (PEX), local peer discovery (LSD)
    • -
    • Private torrents
    • -
    • Encrypted connections
    • -
    • and many more...
    • -
    -
  • +
  • Many Bittorrent extensions supported
  • Remote control through Web user interface, written with AJAX
  • Sequential downloading (Download in order)
  • -
  • - Advanced control over torrents, trackers and peers -
      -
    • Torrents queueing and prioritizing
    • -
    • Torrent content selection and prioritizing
    • -
    -
  • +
  • Advanced control over torrents, trackers and peers
  • Bandwidth scheduler
  • Torrent creation tool
  • IP Filtering (eMule & PeerGuardian format compatible)
  • @@ -53,27 +32,36 @@ org.qbittorrent.qBittorrent.desktop - https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_01.png + Main window (General tab collapsed) + https://raw.githubusercontent.com/qbittorrent/qBittorrent-website/2741f2a90854604e268c6bba9e6859aad0103583/src/img/screenshots/linux/1.webp - https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_02.png + Main window (General tab expanded) + https://raw.githubusercontent.com/qbittorrent/qBittorrent-website/2741f2a90854604e268c6bba9e6859aad0103583/src/img/screenshots/linux/2.webp - https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_03.png + Options dialog + https://raw.githubusercontent.com/qbittorrent/qBittorrent-website/2741f2a90854604e268c6bba9e6859aad0103583/src/img/screenshots/linux/3.webp - https://alexpl.fedorapeople.org/AppData/qbittorrent/screens/qbittorrent_04.png + Search engine + https://raw.githubusercontent.com/qbittorrent/qBittorrent-website/2741f2a90854604e268c6bba9e6859aad0103583/src/img/screenshots/linux/4.webp sledgehammer999@qbittorrent.org - The qBittorrent Project + + The qBittorrent Project + https://www.qbittorrent.org/ https://bugs.qbittorrent.org/ - https://www.qbittorrent.org/donate + https://wiki.qbittorrent.org/Frequently-Asked-Questions https://forum.qbittorrent.org/ - https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent + https://www.qbittorrent.org/donate + https://wiki.qbittorrent.org/How-to-translate-qBittorrent + https://github.com/qbittorrent/qBittorrent + https://github.com/qbittorrent/qBittorrent/blob/master/CONTRIBUTING.md - + diff --git a/dist/windows/config.nsh b/dist/windows/config.nsh index fcfe5f5862c9..c01aabe493ac 100644 --- a/dist/windows/config.nsh +++ b/dist/windows/config.nsh @@ -14,7 +14,7 @@ ; 4.5.1.3 -> good ; 4.5.1.3.2 -> bad ; 4.5.0beta -> bad -!define /ifndef QBT_VERSION "5.0.0" +!define /ifndef QBT_VERSION "5.2.0" ; Option that controls the installer's window name ; If set, its value will be used like this: @@ -86,7 +86,7 @@ OutFile "qbittorrent_${QBT_INSTALLER_FILENAME}_setup.exe" ;Installer Version Information VIAddVersionKey "ProductName" "qBittorrent" VIAddVersionKey "CompanyName" "The qBittorrent project" -VIAddVersionKey "LegalCopyright" "Copyright ©2006-2023 The qBittorrent project" +VIAddVersionKey "LegalCopyright" "Copyright ©2006-2024 The qBittorrent project" VIAddVersionKey "FileDescription" "qBittorrent - A Bittorrent Client" VIAddVersionKey "FileVersion" "${QBT_VERSION}" diff --git a/dist/windows/gather_qt_translations.py b/dist/windows/gather_qt_translations.py index d1ff4449986f..cfa212c8cea0 100644 --- a/dist/windows/gather_qt_translations.py +++ b/dist/windows/gather_qt_translations.py @@ -7,9 +7,11 @@ import sys from typing import List + def isNotStub(path: str) -> bool: return (os.path.getsize(path) >= (10 * 1024)) + def main() -> int: parser = argparse.ArgumentParser(description='Gather valid Qt translations for NSIS packaging.') parser.add_argument("qt_translations_folder", help="Qt's translations folder") @@ -27,5 +29,6 @@ def main() -> int: return 0 + if __name__ == '__main__': sys.exit(main()) diff --git a/dist/windows/installer-translations/afrikaans.nsh b/dist/windows/installer-translations/afrikaans.nsh index 1a93eb24b7e4..511e306e189b 100644 --- a/dist/windows/installer-translations/afrikaans.nsh +++ b/dist/windows/installer-translations/afrikaans.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_AFRIKAANS} "Uninstalling previous version." LangString launch_qbt ${LANG_AFRIKAANS} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_AFRIKAANS} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_AFRIKAANS} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_AFRIKAANS} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_AFRIKAANS} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/albanian.nsh b/dist/windows/installer-translations/albanian.nsh index 649734e657dc..535e48be3cc3 100644 --- a/dist/windows/installer-translations/albanian.nsh +++ b/dist/windows/installer-translations/albanian.nsh @@ -30,8 +30,8 @@ LangString launch_qbt ${LANG_ALBANIAN} "Launch qBittorrent." LangString inst_requires_64bit ${LANG_ALBANIAN} "This installer works only in 64-bit Windows versions." ;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7." LangString inst_requires_win7 ${LANG_ALBANIAN} "This qBittorrent version requires at least Windows 7." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ALBANIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ALBANIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ALBANIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/arabic.nsh b/dist/windows/installer-translations/arabic.nsh index 051e36ab2cb0..7b795295792e 100644 --- a/dist/windows/installer-translations/arabic.nsh +++ b/dist/windows/installer-translations/arabic.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ARABIC} "جاري ازالة النسخة السا LangString launch_qbt ${LANG_ARABIC} "تشغيل البرنامج" ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ARABIC} "هذا المثبت يعمل فقط في نسخ ويندوز 64 بت" -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ARABIC} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ARABIC} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ARABIC} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/basque.nsh b/dist/windows/installer-translations/basque.nsh index 34d898edb4a5..d3e78748df0a 100644 --- a/dist/windows/installer-translations/basque.nsh +++ b/dist/windows/installer-translations/basque.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_BASQUE} "Aurreko bertsioa kentzen." LangString launch_qbt ${LANG_BASQUE} "Abiarazi qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_BASQUE} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_BASQUE} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_BASQUE} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BASQUE} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/belarusian.nsh b/dist/windows/installer-translations/belarusian.nsh index d352b58ceecc..8c712f57390f 100644 --- a/dist/windows/installer-translations/belarusian.nsh +++ b/dist/windows/installer-translations/belarusian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_BELARUSIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_BELARUSIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_BELARUSIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_BELARUSIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_BELARUSIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BELARUSIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/bosnian.nsh b/dist/windows/installer-translations/bosnian.nsh index 4e80205c99a1..418603e3e158 100644 --- a/dist/windows/installer-translations/bosnian.nsh +++ b/dist/windows/installer-translations/bosnian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_BOSNIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_BOSNIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_BOSNIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_BOSNIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_BOSNIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BOSNIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/breton.nsh b/dist/windows/installer-translations/breton.nsh index 433a1db1e161..a60a21918e9d 100644 --- a/dist/windows/installer-translations/breton.nsh +++ b/dist/windows/installer-translations/breton.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_BRETON} "Uninstalling previous version." LangString launch_qbt ${LANG_BRETON} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_BRETON} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_BRETON} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_BRETON} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BRETON} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/bulgarian.nsh b/dist/windows/installer-translations/bulgarian.nsh index 0ebcc0f052d1..d3e9eb7e3e13 100644 --- a/dist/windows/installer-translations/bulgarian.nsh +++ b/dist/windows/installer-translations/bulgarian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_BULGARIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_BULGARIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_BULGARIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_BULGARIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_BULGARIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_BULGARIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/catalan.nsh b/dist/windows/installer-translations/catalan.nsh index 25ca1ad88949..f061c7eec487 100644 --- a/dist/windows/installer-translations/catalan.nsh +++ b/dist/windows/installer-translations/catalan.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_CATALAN} "Uninstalling previous version." LangString launch_qbt ${LANG_CATALAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_CATALAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_CATALAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_CATALAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_CATALAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/croatian.nsh b/dist/windows/installer-translations/croatian.nsh index 4ac6be009073..b7e435891bd7 100644 --- a/dist/windows/installer-translations/croatian.nsh +++ b/dist/windows/installer-translations/croatian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_CROATIAN} "Deinstaliraj prethodnu verziju." LangString launch_qbt ${LANG_CROATIAN} "Pokreni qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_CROATIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_CROATIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_CROATIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_CROATIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/czech.nsh b/dist/windows/installer-translations/czech.nsh index f5856ea55726..686b996c4863 100644 --- a/dist/windows/installer-translations/czech.nsh +++ b/dist/windows/installer-translations/czech.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_CZECH} "Odinstalace předchozí verze." LangString launch_qbt ${LANG_CZECH} "Spustit qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_CZECH} "Tento instalátor funguje pouze v 64-bit Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_CZECH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_CZECH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_CZECH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/danish.nsh b/dist/windows/installer-translations/danish.nsh index e4b95faa718a..b97d59511ed6 100644 --- a/dist/windows/installer-translations/danish.nsh +++ b/dist/windows/installer-translations/danish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_DANISH} "Afinstallerer tidligere version." LangString launch_qbt ${LANG_DANISH} "Start qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_DANISH} "Installationsprogrammet virker kun i Windows-versioner som er 64-bit." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_DANISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_DANISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_DANISH} "Afinstaller qBittorrent" diff --git a/dist/windows/installer-translations/dutch.nsh b/dist/windows/installer-translations/dutch.nsh index 373572653e79..9406e53a2f92 100644 --- a/dist/windows/installer-translations/dutch.nsh +++ b/dist/windows/installer-translations/dutch.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_DUTCH} "Vorige versie verwijderen." LangString launch_qbt ${LANG_DUTCH} "qBittorrent starten." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_DUTCH} "Dit installatieprogramma werkt alleen in 64-bit Windows-versies." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_DUTCH} "Dit installatieprogramma vereist ten minste Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_DUTCH} "Dit installatieprogramma vereist ten minste Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_DUTCH} "qBittorrent verwijderen" diff --git a/dist/windows/installer-translations/english.nsh b/dist/windows/installer-translations/english.nsh index 7de5a35d3cec..b359f048617d 100644 --- a/dist/windows/installer-translations/english.nsh +++ b/dist/windows/installer-translations/english.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version." LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/esperanto.nsh b/dist/windows/installer-translations/esperanto.nsh index 549b88856026..cff4aa0357c4 100644 --- a/dist/windows/installer-translations/esperanto.nsh +++ b/dist/windows/installer-translations/esperanto.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ESPERANTO} "Uninstalling previous version." LangString launch_qbt ${LANG_ESPERANTO} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ESPERANTO} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ESPERANTO} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ESPERANTO} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ESPERANTO} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/estonian.nsh b/dist/windows/installer-translations/estonian.nsh index 4aaa469335a2..4ca234707eb3 100644 --- a/dist/windows/installer-translations/estonian.nsh +++ b/dist/windows/installer-translations/estonian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ESTONIAN} "Desinstallitakse eelmist versiooni." LangString launch_qbt ${LANG_ESTONIAN} "Käivita qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ESTONIAN} "See installer töötab ainult 64-bit Windowsi versioonides." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ESTONIAN} "Selle installeri jaoks on vajalik vähemalt Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ESTONIAN} "Selle installeri jaoks on vajalik vähemalt Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ESTONIAN} "Desinstalli qBittorrent" diff --git a/dist/windows/installer-translations/farsi.nsh b/dist/windows/installer-translations/farsi.nsh index d89dde80dab8..8851a833e343 100644 --- a/dist/windows/installer-translations/farsi.nsh +++ b/dist/windows/installer-translations/farsi.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_FARSI} "Uninstalling previous version." LangString launch_qbt ${LANG_FARSI} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_FARSI} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_FARSI} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_FARSI} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_FARSI} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/finnish.nsh b/dist/windows/installer-translations/finnish.nsh index b80d0b7f96a4..1645d754868f 100644 --- a/dist/windows/installer-translations/finnish.nsh +++ b/dist/windows/installer-translations/finnish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_FINNISH} "Poistetaan aiempi asennus." LangString launch_qbt ${LANG_FINNISH} "Käynnistä qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_FINNISH} "Tämä asennusohjelma toimii vain 64-bittisellä Windowsin versiolla." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_FINNISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_FINNISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_FINNISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/french.nsh b/dist/windows/installer-translations/french.nsh index 985acb3d5a36..fc7c4efe763b 100644 --- a/dist/windows/installer-translations/french.nsh +++ b/dist/windows/installer-translations/french.nsh @@ -3,9 +3,9 @@ ;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)" LangString inst_qbt_req ${LANG_FRENCH} "qBittorrent (requis)" ;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut" -LangString inst_desktop ${LANG_FRENCH} "Créer un Raccourci sur le Bureau" +LangString inst_desktop ${LANG_FRENCH} "Créer un raccourci sur le Bureau" ;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut" -LangString inst_startmenu ${LANG_FRENCH} "Créer un Raccourci dans le Menu Démarrer" +LangString inst_startmenu ${LANG_FRENCH} "Créer un raccourci dans le Menu Démarrer" ;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up" LangString inst_startup ${LANG_FRENCH} "Démarrer qBittorrent au démarrage de Windows" ;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent" @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_FRENCH} "Désinstallation de la version antérieure LangString launch_qbt ${LANG_FRENCH} "Lancer qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_FRENCH} "Cet installateur ne fonctionne que dans les versions 64 bits de Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_FRENCH} "Cet installateur nécessite au moins Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_FRENCH} "Cet installateur nécessite au moins Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_FRENCH} "Désinstaller qBittorrent" @@ -55,6 +55,6 @@ LangString remove_cache ${LANG_FRENCH} "Supprimer les torrents et données en ca ;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling." LangString uninst_warning ${LANG_FRENCH} "qBittorrent est en cours d'exécution. Fermez l'application avant de la désinstaller." ;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:" -LangString uninst_tor_warn ${LANG_FRENCH} "Ne peut pas supprimer l'association du .torrent. Elle est associée avec :" +LangString uninst_tor_warn ${LANG_FRENCH} "Impossible de supprimer l'association .torrent. Elle est associée avec :" ;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:" -LangString uninst_mag_warn ${LANG_FRENCH} "Ne peut pas supprimer l'association du magnet. Elle est associée avec :" +LangString uninst_mag_warn ${LANG_FRENCH} "Impossible de supprimer l'association magnet. Elle est associée avec :" diff --git a/dist/windows/installer-translations/galician.nsh b/dist/windows/installer-translations/galician.nsh index 174083fe1d74..8eaa3085fef1 100644 --- a/dist/windows/installer-translations/galician.nsh +++ b/dist/windows/installer-translations/galician.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_GALICIAN} "Desinstalando a versión anterior." LangString launch_qbt ${LANG_GALICIAN} "Iniciar qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_GALICIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_GALICIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_GALICIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_GALICIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/german.nsh b/dist/windows/installer-translations/german.nsh index 59aec5957a4c..80f64e40eeaa 100644 --- a/dist/windows/installer-translations/german.nsh +++ b/dist/windows/installer-translations/german.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_GERMAN} "Vorherige Version wird deinstalliert." LangString launch_qbt ${LANG_GERMAN} "Starte qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_GERMAN} "Diese Installation funktioniert nur mit einer 64-bit Version von Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_GERMAN} "Diese Installation erfordert mindestens Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_GERMAN} "Diese Installation erfordert mindestens Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_GERMAN} "qBittorrent deinstallieren" diff --git a/dist/windows/installer-translations/greek.nsh b/dist/windows/installer-translations/greek.nsh index efdec9547669..77800e4e3b3e 100644 --- a/dist/windows/installer-translations/greek.nsh +++ b/dist/windows/installer-translations/greek.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_GREEK} "Γίνεται απεγκατάσταση LangString launch_qbt ${LANG_GREEK} "Εκκίνηση του qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_GREEK} "Αυτό το αρχείο εγκατάστασης λειτουργεί μόνο σε 64-bit εκδόσεις των Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_GREEK} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_GREEK} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_GREEK} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/hebrew.nsh b/dist/windows/installer-translations/hebrew.nsh index 345365ecd50c..6a5b126d05cd 100644 --- a/dist/windows/installer-translations/hebrew.nsh +++ b/dist/windows/installer-translations/hebrew.nsh @@ -1,37 +1,37 @@ ;Installer strings ;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)" -LangString inst_qbt_req ${LANG_HEBREW} "qBittorrent (required)" +LangString inst_qbt_req ${LANG_HEBREW} "qBittorrent (נדרש)" ;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut" -LangString inst_desktop ${LANG_HEBREW} "Create Desktop Shortcut" +LangString inst_desktop ${LANG_HEBREW} "צור קיצור דרך בשולחן עבודה" ;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut" -LangString inst_startmenu ${LANG_HEBREW} "Create Start Menu Shortcut" +LangString inst_startmenu ${LANG_HEBREW} "צור קיצור דרך ב-Start Menu" ;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up" -LangString inst_startup ${LANG_HEBREW} "Start qBittorrent on Windows start up" +LangString inst_startup ${LANG_HEBREW} "התחל את qBittorrent עם עליית Windows" ;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent" -LangString inst_torrent ${LANG_HEBREW} "Open .torrent files with qBittorrent" +LangString inst_torrent ${LANG_HEBREW} "פתח קבצי .torrent עם qBittorrent" ;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent" -LangString inst_magnet ${LANG_HEBREW} "Open magnet links with qBittorrent" +LangString inst_magnet ${LANG_HEBREW} "פתח קישורי מגנט עם qBittorrent" ;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule" -LangString inst_firewall ${LANG_HEBREW} "Add Windows Firewall rule" +LangString inst_firewall ${LANG_HEBREW} "הוסף כלל חומת האש של Windows" ;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_HEBREW} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)" +LangString inst_pathlimit ${LANG_HEBREW} "השבת את מגבלת אורך הנתיב של Windows (הגבלת MAX_PATH של 260 תווים, דורשת Windows 10 1607 ואילך)" ;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule" -LangString inst_firewallinfo ${LANG_HEBREW} "Adding Windows Firewall rule" +LangString inst_firewallinfo ${LANG_HEBREW} "מוסיף כלל חומת האש של Windows" ;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing." -LangString inst_warning ${LANG_HEBREW} "qBittorrent is running. Please close the application before installing." +LangString inst_warning ${LANG_HEBREW} "qBittorrent פועל. אנא סגור את האפליקציה לפני ההתקנה." ;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact." -LangString inst_uninstall_question ${LANG_HEBREW} "Current version will be uninstalled. User settings and torrents will remain intact." +LangString inst_uninstall_question ${LANG_HEBREW} "הגרסה הנוכחית תוסר. הגדרות המשתמש והטורנטים יישארו ללא שינוי." ;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version." -LangString inst_unist ${LANG_HEBREW} "Uninstalling previous version." +LangString inst_unist ${LANG_HEBREW} "מסיר את ההתקנה של הגרסה הקודמת." ;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." -LangString launch_qbt ${LANG_HEBREW} "Launch qBittorrent." +LangString launch_qbt ${LANG_HEBREW} "הפעל את qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." -LangString inst_requires_64bit ${LANG_HEBREW} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_HEBREW} "This installer requires at least Windows 10 1809." +LangString inst_requires_64bit ${LANG_HEBREW} "התקנה זו עובדת רק בגירסאות 64 סיביות של Windows." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_HEBREW} "התקנה זו דורשת לפחות Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" -LangString inst_uninstall_link_description ${LANG_HEBREW} "Uninstall qBittorrent" +LangString inst_uninstall_link_description ${LANG_HEBREW} "הסר את ההתקנה של qBittorrent" ;------------------------------------ ;Uninstaller strings diff --git a/dist/windows/installer-translations/hungarian.nsh b/dist/windows/installer-translations/hungarian.nsh index ff1e97568193..b3580a2bdb91 100644 --- a/dist/windows/installer-translations/hungarian.nsh +++ b/dist/windows/installer-translations/hungarian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_HUNGARIAN} "Előző verzió eltávolítása." LangString launch_qbt ${LANG_HUNGARIAN} "qBittorrent indítása." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_HUNGARIAN} "A telepítő csak 64-bites Windows verziókon működik." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_HUNGARIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_HUNGARIAN} "A telepítéshez minimum Windows 10 (1809) / Windows Server 2019 szükséges." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_HUNGARIAN} "qBittorrent eltávolítása" diff --git a/dist/windows/installer-translations/icelandic.nsh b/dist/windows/installer-translations/icelandic.nsh index d3962cb4af99..b9415596aafc 100644 --- a/dist/windows/installer-translations/icelandic.nsh +++ b/dist/windows/installer-translations/icelandic.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ICELANDIC} "Uninstalling previous version." LangString launch_qbt ${LANG_ICELANDIC} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ICELANDIC} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ICELANDIC} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ICELANDIC} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ICELANDIC} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/indonesian.nsh b/dist/windows/installer-translations/indonesian.nsh index 085ec1246ff0..8e96f66bd693 100644 --- a/dist/windows/installer-translations/indonesian.nsh +++ b/dist/windows/installer-translations/indonesian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_INDONESIAN} "Menghapus versi sebelumnya." LangString launch_qbt ${LANG_INDONESIAN} "Buka qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_INDONESIAN} "Aplikasi ini hanya berjalan pada versi Windows 64-bit." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_INDONESIAN} "Penginstal ini membutuhkan setidaknya Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_INDONESIAN} "Penginstal ini membutuhkan setidaknya Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_INDONESIAN} "Hapus qBittorrent" diff --git a/dist/windows/installer-translations/irish.nsh b/dist/windows/installer-translations/irish.nsh index b5c3b1e4a68a..17bea6893c87 100644 --- a/dist/windows/installer-translations/irish.nsh +++ b/dist/windows/installer-translations/irish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_IRISH} "Uninstalling previous version." LangString launch_qbt ${LANG_IRISH} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_IRISH} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_IRISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_IRISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_IRISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/italian.nsh b/dist/windows/installer-translations/italian.nsh index 93203132d685..2668dc5ca66b 100644 --- a/dist/windows/installer-translations/italian.nsh +++ b/dist/windows/installer-translations/italian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ITALIAN} "Disinstallazione versione precedente." LangString launch_qbt ${LANG_ITALIAN} "Esegui qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ITALIAN} "Questo installer funziona solo con versioni di Windows a 64bit." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ITALIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ITALIAN} "Questo installer richiede almeno Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ITALIAN} "Disinstalla qBittorrent" diff --git a/dist/windows/installer-translations/japanese.nsh b/dist/windows/installer-translations/japanese.nsh index 0af594bfab5d..8cfef7bf9442 100644 --- a/dist/windows/installer-translations/japanese.nsh +++ b/dist/windows/installer-translations/japanese.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_JAPANESE} "以前のバージョンをアンイン LangString launch_qbt ${LANG_JAPANESE} "qBittorrent を起動" ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_JAPANESE} "このインストーラは 64 ビット版の Windows でのみ実行できます。" -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_JAPANESE} "このインストーラの実行には Windows 10 1809 以降が必要です。" +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_JAPANESE} "このインストーラの実行には Windows 10 (1809) / Windows Server 2019 以降が必要です。" ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_JAPANESE} "qBittorrent をアンインストール" diff --git a/dist/windows/installer-translations/korean.nsh b/dist/windows/installer-translations/korean.nsh index f1c32a07ea68..db0fddf6dcef 100644 --- a/dist/windows/installer-translations/korean.nsh +++ b/dist/windows/installer-translations/korean.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_KOREAN} "이전 버전을 제거하는 중입니다 LangString launch_qbt ${LANG_KOREAN} "qBittorrent를 실행합니다." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_KOREAN} "이 설치 프로그램은 64비트 Windows 버전에서만 작동합니다." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_KOREAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_KOREAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_KOREAN} "qBittorrent 제거" diff --git a/dist/windows/installer-translations/kurdish.nsh b/dist/windows/installer-translations/kurdish.nsh index a44972d8d16e..c9804082cc90 100644 --- a/dist/windows/installer-translations/kurdish.nsh +++ b/dist/windows/installer-translations/kurdish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_KURDISH} "Uninstalling previous version." LangString launch_qbt ${LANG_KURDISH} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_KURDISH} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_KURDISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_KURDISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_KURDISH} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/latvian.nsh b/dist/windows/installer-translations/latvian.nsh index a345356907ab..0f762f888797 100644 --- a/dist/windows/installer-translations/latvian.nsh +++ b/dist/windows/installer-translations/latvian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_LATVIAN} "Iepriekšējās versijas atinstalēšana. LangString launch_qbt ${LANG_LATVIAN} "Palaist qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_LATVIAN} "Šī instalēšanas programma darbojas tikai 64 bitu Windows versijās." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_LATVIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_LATVIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_LATVIAN} "Atinstalēt qBittorrent" diff --git a/dist/windows/installer-translations/lithuanian.nsh b/dist/windows/installer-translations/lithuanian.nsh index 2645f1c459b8..1748ecabb8d1 100644 --- a/dist/windows/installer-translations/lithuanian.nsh +++ b/dist/windows/installer-translations/lithuanian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_LITHUANIAN} "Šalinama ankstesnė versija." LangString launch_qbt ${LANG_LITHUANIAN} "Paleisti qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_LITHUANIAN} "Šis įdiegėjas veikia tik su 64 bitų Windows versija." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_LITHUANIAN} "Šis įdiegėjas reikalauja bent Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_LITHUANIAN} "Šis įdiegėjas reikalauja bent Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_LITHUANIAN} "Pašalinti qBittorrent" diff --git a/dist/windows/installer-translations/luxembourgish.nsh b/dist/windows/installer-translations/luxembourgish.nsh index b12ce3563f01..4a30e954a03b 100644 --- a/dist/windows/installer-translations/luxembourgish.nsh +++ b/dist/windows/installer-translations/luxembourgish.nsh @@ -1,60 +1,60 @@ ;Installer strings ;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)" -LangString inst_qbt_req ${LANG_LUXEMBOURGISH} "qBittorrent (required)" +LangString inst_qbt_req ${LANG_LUXEMBOURGISH} "qBittorrent (noutwendeg)" ;LangString inst_desktop ${LANG_ENGLISH} "Create Desktop Shortcut" -LangString inst_desktop ${LANG_LUXEMBOURGISH} "Create Desktop Shortcut" +LangString inst_desktop ${LANG_LUXEMBOURGISH} "Verknëppung um Desktop erstellen" ;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut" -LangString inst_startmenu ${LANG_LUXEMBOURGISH} "Create Start Menu Shortcut" +LangString inst_startmenu ${LANG_LUXEMBOURGISH} "Verknëppung am Startmenü erstellen" ;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up" -LangString inst_startup ${LANG_LUXEMBOURGISH} "Start qBittorrent on Windows start up" +LangString inst_startup ${LANG_LUXEMBOURGISH} "qBittorrent mat Windows starten" ;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent" -LangString inst_torrent ${LANG_LUXEMBOURGISH} "Open .torrent files with qBittorrent" +LangString inst_torrent ${LANG_LUXEMBOURGISH} ".torrent-Dateien mat qBittorrent opmaachen" ;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent" -LangString inst_magnet ${LANG_LUXEMBOURGISH} "Open magnet links with qBittorrent" +LangString inst_magnet ${LANG_LUXEMBOURGISH} "Magnet-Linken mat qBittorrent opmaachen" ;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule" -LangString inst_firewall ${LANG_LUXEMBOURGISH} "Add Windows Firewall rule" +LangString inst_firewall ${LANG_LUXEMBOURGISH} "Reegel an der Windows Firewall dobäisetzen" ;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_LUXEMBOURGISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)" +LangString inst_pathlimit ${LANG_LUXEMBOURGISH} "D'Windows path length (Padlängtbeschränkung) desaktivéieren (260 Zeechen MAX_PATH Beschränkung, erfuerdert min. Windows 10 1607)" ;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule" -LangString inst_firewallinfo ${LANG_LUXEMBOURGISH} "Adding Windows Firewall rule" +LangString inst_firewallinfo ${LANG_LUXEMBOURGISH} "Reegel an der Windows Firewall dobäisetzen" ;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing." -LangString inst_warning ${LANG_LUXEMBOURGISH} "qBittorrent is running. Please close the application before installing." +LangString inst_warning ${LANG_LUXEMBOURGISH} "qBittorrent leeft grad. W.e.g. d'Applikatioun zoumaachen ier installéiert gëtt." ;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact." -LangString inst_uninstall_question ${LANG_LUXEMBOURGISH} "Current version will be uninstalled. User settings and torrents will remain intact." +LangString inst_uninstall_question ${LANG_LUXEMBOURGISH} "Aktuell Versioun gëtt deinstalléiert. Benotzerastellungen a Torrents bleiwen erhalen." ;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version." -LangString inst_unist ${LANG_LUXEMBOURGISH} "Uninstalling previous version." +LangString inst_unist ${LANG_LUXEMBOURGISH} "Vireg Versioun gëtt deinstalléiert." ;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." -LangString launch_qbt ${LANG_LUXEMBOURGISH} "Launch qBittorrent." +LangString launch_qbt ${LANG_LUXEMBOURGISH} "qBittorrent starten." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." -LangString inst_requires_64bit ${LANG_LUXEMBOURGISH} "This installer works only in 64-bit Windows versions." +LangString inst_requires_64bit ${LANG_LUXEMBOURGISH} "Dësen Installateur funktionnéiert nëmmen mat 64-Bit Windows Versiounen." ;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_LUXEMBOURGISH} "This installer requires at least Windows 10 1809." +LangString inst_requires_win10 ${LANG_LUXEMBOURGISH} "Dësen Installateur erfuerdert mindestens Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" -LangString inst_uninstall_link_description ${LANG_LUXEMBOURGISH} "Uninstall qBittorrent" +LangString inst_uninstall_link_description ${LANG_LUXEMBOURGISH} "qBittorrent deinstalléieren" ;------------------------------------ ;Uninstaller strings ;LangString remove_files ${LANG_ENGLISH} "Remove files" -LangString remove_files ${LANG_LUXEMBOURGISH} "Remove files" +LangString remove_files ${LANG_LUXEMBOURGISH} "Dateien läschen" ;LangString remove_shortcuts ${LANG_ENGLISH} "Remove shortcuts" -LangString remove_shortcuts ${LANG_LUXEMBOURGISH} "Remove shortcuts" +LangString remove_shortcuts ${LANG_LUXEMBOURGISH} "Verknëppungen läschen" ;LangString remove_associations ${LANG_ENGLISH} "Remove file associations" -LangString remove_associations ${LANG_LUXEMBOURGISH} "Remove file associations" +LangString remove_associations ${LANG_LUXEMBOURGISH} "Dateiverknëppungen läschen" ;LangString remove_registry ${LANG_ENGLISH} "Remove registry keys" -LangString remove_registry ${LANG_LUXEMBOURGISH} "Remove registry keys" +LangString remove_registry ${LANG_LUXEMBOURGISH} "Registry-Schlësselen läschen" ;LangString remove_conf ${LANG_ENGLISH} "Remove configuration files" -LangString remove_conf ${LANG_LUXEMBOURGISH} "Remove configuration files" +LangString remove_conf ${LANG_LUXEMBOURGISH} "Konfiguratiounsdateien läschen" ;LangString remove_firewall ${LANG_ENGLISH} "Remove Windows Firewall rule" -LangString remove_firewall ${LANG_LUXEMBOURGISH} "Remove Windows Firewall rule" +LangString remove_firewall ${LANG_LUXEMBOURGISH} "Reegel an der Windows Firewall läschen" ;LangString remove_firewallinfo ${LANG_ENGLISH} "Removing Windows Firewall rule" -LangString remove_firewallinfo ${LANG_LUXEMBOURGISH} "Removing Windows Firewall rule" +LangString remove_firewallinfo ${LANG_LUXEMBOURGISH} "Reegel aus der Windows Firewall läschen" ;LangString remove_cache ${LANG_ENGLISH} "Remove torrents and cached data" -LangString remove_cache ${LANG_LUXEMBOURGISH} "Remove torrents and cached data" +LangString remove_cache ${LANG_LUXEMBOURGISH} "Torrenten a zwëschegespäichert Donnéeën läschen" ;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling." -LangString uninst_warning ${LANG_LUXEMBOURGISH} "qBittorrent is running. Please close the application before uninstalling." +LangString uninst_warning ${LANG_LUXEMBOURGISH} "qBittorrent leeft grad. W.e.g. d'Applikatioun zoumaachen ier deinstalléiert gëtt." ;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:" -LangString uninst_tor_warn ${LANG_LUXEMBOURGISH} "Not removing .torrent association. It is associated with:" +LangString uninst_tor_warn ${LANG_LUXEMBOURGISH} "Dateiverknëppung mat der .torrent-Datei gëtt net ewechgeholl, se ass nach verbonnen mat:" ;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:" -LangString uninst_mag_warn ${LANG_LUXEMBOURGISH} "Not removing magnet association. It is associated with:" +LangString uninst_mag_warn ${LANG_LUXEMBOURGISH} "Dateiverknëppung mat Magnet-Link gëtt net ewechgeholl, se ass nach verbonnen mat:" diff --git a/dist/windows/installer-translations/macedonian.nsh b/dist/windows/installer-translations/macedonian.nsh index 67fe96f5a727..2d8083352506 100644 --- a/dist/windows/installer-translations/macedonian.nsh +++ b/dist/windows/installer-translations/macedonian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_MACEDONIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_MACEDONIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_MACEDONIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_MACEDONIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_MACEDONIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_MACEDONIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/malay.nsh b/dist/windows/installer-translations/malay.nsh index f6acca8b84b1..2bf915d8bf90 100644 --- a/dist/windows/installer-translations/malay.nsh +++ b/dist/windows/installer-translations/malay.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_MALAY} "Uninstalling previous version." LangString launch_qbt ${LANG_MALAY} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_MALAY} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_MALAY} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_MALAY} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_MALAY} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/mongolian.nsh b/dist/windows/installer-translations/mongolian.nsh index 551b8e36f1be..a1111550412c 100644 --- a/dist/windows/installer-translations/mongolian.nsh +++ b/dist/windows/installer-translations/mongolian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_MONGOLIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_MONGOLIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_MONGOLIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_MONGOLIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_MONGOLIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_MONGOLIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/norwegian.nsh b/dist/windows/installer-translations/norwegian.nsh index f5155d7c2b92..5406cf7e8364 100644 --- a/dist/windows/installer-translations/norwegian.nsh +++ b/dist/windows/installer-translations/norwegian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_NORWEGIAN} "Avinstallerer forrige versjon." LangString launch_qbt ${LANG_NORWEGIAN} "Sett i gang qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_NORWEGIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_NORWEGIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_NORWEGIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_NORWEGIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/norwegiannynorsk.nsh b/dist/windows/installer-translations/norwegiannynorsk.nsh index 7db898f28e39..705edd98bab3 100644 --- a/dist/windows/installer-translations/norwegiannynorsk.nsh +++ b/dist/windows/installer-translations/norwegiannynorsk.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_NORWEGIANNYNORSK} "Uninstalling previous version." LangString launch_qbt ${LANG_NORWEGIANNYNORSK} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_NORWEGIANNYNORSK} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_NORWEGIANNYNORSK} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_NORWEGIANNYNORSK} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_NORWEGIANNYNORSK} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/polish.nsh b/dist/windows/installer-translations/polish.nsh index 0cf4065e3f2e..f4a235ee73fe 100644 --- a/dist/windows/installer-translations/polish.nsh +++ b/dist/windows/installer-translations/polish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_POLISH} "Odinstalowywanie poprzedniej wersji." LangString launch_qbt ${LANG_POLISH} "Uruchom qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_POLISH} "Ten instalator działa tylko w 64-bitowych wersjach systemu Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_POLISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_POLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_POLISH} "Odinstaluj qBittorrent" diff --git a/dist/windows/installer-translations/portuguese.nsh b/dist/windows/installer-translations/portuguese.nsh index f28f11c511a4..c149119f42e3 100644 --- a/dist/windows/installer-translations/portuguese.nsh +++ b/dist/windows/installer-translations/portuguese.nsh @@ -7,7 +7,7 @@ LangString inst_desktop ${LANG_PORTUGUESE} "Criar atalho no ambiente de trabalho ;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut" LangString inst_startmenu ${LANG_PORTUGUESE} "Criar atalho no menu Iniciar" ;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up" -LangString inst_startup ${LANG_PORTUGUESE} "Iniciar o qBittorrent na inicialização do Windows" +LangString inst_startup ${LANG_PORTUGUESE} "Iniciar o qBittorrent no arranque do Windows" ;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent" LangString inst_torrent ${LANG_PORTUGUESE} "Abrir ficheiros .torrent com o qBittorrent" ;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent" @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_PORTUGUESE} "A desinstalar versão anterior." LangString launch_qbt ${LANG_PORTUGUESE} "Iniciar qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_PORTUGUESE} "Este instalador funciona apenas em versões Windows de 64 bits." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_PORTUGUESE} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_PORTUGUESE} "Este instalador requer, pelo menos, o Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_PORTUGUESE} "Desinstalar qBittorrent" diff --git a/dist/windows/installer-translations/portugueseBR.nsh b/dist/windows/installer-translations/portugueseBR.nsh index 366833583a4d..ef79df94cbb8 100644 --- a/dist/windows/installer-translations/portugueseBR.nsh +++ b/dist/windows/installer-translations/portugueseBR.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_PORTUGUESEBR} "Desinstalando a versão anterior." LangString launch_qbt ${LANG_PORTUGUESEBR} "Executar o qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_PORTUGUESEBR} "Este instalador só funciona nas versões 64 bits do Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_PORTUGUESEBR} "Este instalador requer no mínimo o Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_PORTUGUESEBR} "Este instalador requer no mínimo o Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_PORTUGUESEBR} "Desinstalar o qBittorrent" diff --git a/dist/windows/installer-translations/romanian.nsh b/dist/windows/installer-translations/romanian.nsh index 7515165d079f..e60d51da9a5c 100644 --- a/dist/windows/installer-translations/romanian.nsh +++ b/dist/windows/installer-translations/romanian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_ROMANIAN} "Se dezinstalează versiunea anterioară. LangString launch_qbt ${LANG_ROMANIAN} "Lansați qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_ROMANIAN} "Acest program de instalare funcționează doar pe versiunile Windows pe 64 de biți." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_ROMANIAN} "Acest program de instalare necesită cel puțin Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_ROMANIAN} "Acest program de instalare necesită cel puțin Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_ROMANIAN} "Dezinstalați qBittorrent" diff --git a/dist/windows/installer-translations/russian.nsh b/dist/windows/installer-translations/russian.nsh index eec7de7c8496..01b7e67f6dcc 100644 --- a/dist/windows/installer-translations/russian.nsh +++ b/dist/windows/installer-translations/russian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_RUSSIAN} "Удаляется старая верс LangString launch_qbt ${LANG_RUSSIAN} "Запустить qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_RUSSIAN} "Этот установщик работает только на 64-битных версиях Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_RUSSIAN} "Для работы этого установщика требуется Windows 10 1809 или выше." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_RUSSIAN} "Для работы этого установщика требуется Windows 10 (1809) / Windows Server 2019 или выше." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_RUSSIAN} "Удалить qBittorrent" diff --git a/dist/windows/installer-translations/serbian.nsh b/dist/windows/installer-translations/serbian.nsh index ddb2574468cc..e21b016f2012 100644 --- a/dist/windows/installer-translations/serbian.nsh +++ b/dist/windows/installer-translations/serbian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_SERBIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_SERBIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SERBIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SERBIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SERBIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SERBIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/serbianlatin.nsh b/dist/windows/installer-translations/serbianlatin.nsh index 7062cfb7825a..4509120c6240 100644 --- a/dist/windows/installer-translations/serbianlatin.nsh +++ b/dist/windows/installer-translations/serbianlatin.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_SERBIANLATIN} "Uninstalling previous version." LangString launch_qbt ${LANG_SERBIANLATIN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SERBIANLATIN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SERBIANLATIN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SERBIANLATIN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SERBIANLATIN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/simpchinese.nsh b/dist/windows/installer-translations/simpchinese.nsh index 44c5a3e4b933..f0256e046144 100644 --- a/dist/windows/installer-translations/simpchinese.nsh +++ b/dist/windows/installer-translations/simpchinese.nsh @@ -23,13 +23,13 @@ LangString inst_warning ${LANG_SIMPCHINESE} "qBittorrent 正在运行。 安装 ;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact." LangString inst_uninstall_question ${LANG_SIMPCHINESE} "当前版本会被卸载。 用户设置和种子会被完整保留。" ;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version." -LangString inst_unist ${LANG_SIMPCHINESE} "卸载以前的版本。" +LangString inst_unist ${LANG_SIMPCHINESE} "正在卸载以前的版本。" ;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." LangString launch_qbt ${LANG_SIMPCHINESE} "启动 qBittorrent。" ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SIMPCHINESE} "此安装程序仅支持 64 位 Windows 系统。" -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SIMPCHINESE} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SIMPCHINESE} "此安装程序仅支持 Windows 10 (1809) / Windows Server 2019 或更新的系统。" ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SIMPCHINESE} "卸载 qBittorrent" diff --git a/dist/windows/installer-translations/slovak.nsh b/dist/windows/installer-translations/slovak.nsh index c784748b1630..fd960b65b9e9 100644 --- a/dist/windows/installer-translations/slovak.nsh +++ b/dist/windows/installer-translations/slovak.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_SLOVAK} "Odinštalácia predchádzajúcej verzie." LangString launch_qbt ${LANG_SLOVAK} "Spustiť qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SLOVAK} "Táto inštalácia funguje iba na 64-bitových verziách Windowsu." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SLOVAK} "Tento inštalátor vyžaduje aspoň Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SLOVAK} "Tento inštalátor vyžaduje aspoň Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SLOVAK} "Odinštalovať qBittorrent" diff --git a/dist/windows/installer-translations/slovenian.nsh b/dist/windows/installer-translations/slovenian.nsh index da5bd3856b70..9a1e481e25ff 100644 --- a/dist/windows/installer-translations/slovenian.nsh +++ b/dist/windows/installer-translations/slovenian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_SLOVENIAN} "Uninstalling previous version." LangString launch_qbt ${LANG_SLOVENIAN} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SLOVENIAN} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SLOVENIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SLOVENIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SLOVENIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/spanish.nsh b/dist/windows/installer-translations/spanish.nsh index 4f25943b715d..9749a0bea0e7 100644 --- a/dist/windows/installer-translations/spanish.nsh +++ b/dist/windows/installer-translations/spanish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_SPANISH} "Desinstalando la versión anterior." LangString launch_qbt ${LANG_SPANISH} "Iniciar qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SPANISH} "Este instalador solo funciona en versiones de 64-bit de Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SPANISH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SPANISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SPANISH} "Desinstalar qBittorrent" diff --git a/dist/windows/installer-translations/spanishinternational.nsh b/dist/windows/installer-translations/spanishinternational.nsh index c59cfabd55ab..904d86061e3c 100644 --- a/dist/windows/installer-translations/spanishinternational.nsh +++ b/dist/windows/installer-translations/spanishinternational.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_SPANISHINTERNATIONAL} "Desinstalando la versión an LangString launch_qbt ${LANG_SPANISHINTERNATIONAL} "Iniciar qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SPANISHINTERNATIONAL} "Este instalador solo funciona en versiones de 64-bit de Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SPANISHINTERNATIONAL} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SPANISHINTERNATIONAL} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SPANISHINTERNATIONAL} "Desinstalar qBittorrent" diff --git a/dist/windows/installer-translations/swedish.nsh b/dist/windows/installer-translations/swedish.nsh index e52cbc31da3e..51912d112e7a 100644 --- a/dist/windows/installer-translations/swedish.nsh +++ b/dist/windows/installer-translations/swedish.nsh @@ -7,29 +7,29 @@ LangString inst_desktop ${LANG_SWEDISH} "Skapa skrivbordsgenväg" ;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut" LangString inst_startmenu ${LANG_SWEDISH} "Skapa startmenygenväg" ;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up" -LangString inst_startup ${LANG_SWEDISH} "Starta qBittorrent vid Windows start" +LangString inst_startup ${LANG_SWEDISH} "Starta qBittorrent vid Windows-uppstart" ;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent" LangString inst_torrent ${LANG_SWEDISH} "Öppna .torrent-filer med qBittorrent" ;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent" LangString inst_magnet ${LANG_SWEDISH} "Öppna magnetlänkar med qBittorrent" ;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule" -LangString inst_firewall ${LANG_SWEDISH} "Lägg till Windows-brandväggregel" +LangString inst_firewall ${LANG_SWEDISH} "Lägg till Windows-brandväggsregel" ;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_SWEDISH} "Inaktivera gränsen för Windows-sökvägslängd (260 tecken MAX_PATH-begränsning, kräver Windows 10 1607 eller senare)" ;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule" -LangString inst_firewallinfo ${LANG_SWEDISH} "Lägger till Windows-brandväggregel" +LangString inst_firewallinfo ${LANG_SWEDISH} "Lägger till Windows-brandväggsregel" ;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing." -LangString inst_warning ${LANG_SWEDISH} "qBittorrent körs. Vänligen stäng programmet innan du installerar." +LangString inst_warning ${LANG_SWEDISH} "qBittorrent körs. Stäng programmet innan du installerar." ;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact." -LangString inst_uninstall_question ${LANG_SWEDISH} "Nuvarande version avinstalleras. Användarinställningar och torrenter kommer att förbli intakta." +LangString inst_uninstall_question ${LANG_SWEDISH} "Aktuell version avinstalleras. Användarinställningar och torrenter kommer att förbli intakta." ;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version." LangString inst_unist ${LANG_SWEDISH} "Avinstallerar tidigare version." ;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent." LangString launch_qbt ${LANG_SWEDISH} "Kör qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_SWEDISH} "Det här installationsprogrammet fungerar endast i 64-bitars Windows-versioner." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_SWEDISH} "Det här installationsprogrammet kräver minst Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_SWEDISH} "Det här installationsprogrammet kräver minst Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_SWEDISH} "Avinstallera qBittorrent" @@ -53,7 +53,7 @@ LangString remove_firewallinfo ${LANG_SWEDISH} "Tar bort Windows-brandväggsrege ;LangString remove_cache ${LANG_ENGLISH} "Remove torrents and cached data" LangString remove_cache ${LANG_SWEDISH} "Ta bort torrenter och cachade data" ;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling." -LangString uninst_warning ${LANG_SWEDISH} "qBittorrent körs. Vänligen stäng programmet innan du avinstallerar." +LangString uninst_warning ${LANG_SWEDISH} "qBittorrent körs. Stäng programmet innan du avinstallerar." ;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:" LangString uninst_tor_warn ${LANG_SWEDISH} "Tar inte bort .torrent-association. Den är associerad med:" ;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:" diff --git a/dist/windows/installer-translations/thai.nsh b/dist/windows/installer-translations/thai.nsh index 411c54b2020f..ac003757fa4d 100644 --- a/dist/windows/installer-translations/thai.nsh +++ b/dist/windows/installer-translations/thai.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_THAI} "Uninstalling previous version." LangString launch_qbt ${LANG_THAI} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_THAI} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_THAI} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_THAI} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_THAI} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/tradchinese.nsh b/dist/windows/installer-translations/tradchinese.nsh index 63ba5b70dc2b..49bcff874777 100644 --- a/dist/windows/installer-translations/tradchinese.nsh +++ b/dist/windows/installer-translations/tradchinese.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_TRADCHINESE} "正在移除先前版本" LangString launch_qbt ${LANG_TRADCHINESE} "啟動 qBittorrent" ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_TRADCHINESE} "此安裝程式僅支援 64 位元版本的 Windows。" -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_TRADCHINESE} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_TRADCHINESE} "此安裝程式僅支援 Windows 10 (1809) / Windows Server 2019 以上的系統。" ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_TRADCHINESE} "移除 qBittorrent" diff --git a/dist/windows/installer-translations/turkish.nsh b/dist/windows/installer-translations/turkish.nsh index 2ddcf44144c3..fd6435f5ca2f 100644 --- a/dist/windows/installer-translations/turkish.nsh +++ b/dist/windows/installer-translations/turkish.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_TURKISH} "Önceki sürüm kaldırılıyor." LangString launch_qbt ${LANG_TURKISH} "qBittorrent'i başlat." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_TURKISH} "Bu yükleyici sadece 64-bit Windows sürümlerinde çalışır." -;LangString inst_requires_win10 ${LANG_ENGLISH} "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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_TURKISH} "Bu yükleyici en az Windows 10 (1809) / Windows Server 2019 gerektirir." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_TURKISH} "qBittorrent'i kaldır" diff --git a/dist/windows/installer-translations/ukrainian.nsh b/dist/windows/installer-translations/ukrainian.nsh index 08539f47dda3..bf6c1b283ed4 100644 --- a/dist/windows/installer-translations/ukrainian.nsh +++ b/dist/windows/installer-translations/ukrainian.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_UKRAINIAN} "Видалення попередньо LangString launch_qbt ${LANG_UKRAINIAN} "Запустити qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_UKRAINIAN} "Ця програма установки працює тільки в 64-розрядних версіях Windows." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_UKRAINIAN} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_UKRAINIAN} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_UKRAINIAN} "Uninstall qBittorrent" diff --git a/dist/windows/installer-translations/uzbek.nsh b/dist/windows/installer-translations/uzbek.nsh index 283a9293da7e..138fe2717295 100644 --- a/dist/windows/installer-translations/uzbek.nsh +++ b/dist/windows/installer-translations/uzbek.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_UZBEK} "Oldingi versiyani oʻchirish." 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} "Bu oʻrnatuvchi faqat Windows 64-bit versiyalarda ishlaydi." -;LangString inst_requires_win10 ${LANG_ENGLISH} "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_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_UZBEK} "Bu oʻrnatuvchi kamida Windows 10 (1809) / Windows Server 2019 talab qiladi." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_UZBEK} "qBittorrent oʻchirilsin" diff --git a/dist/windows/installer-translations/welsh.nsh b/dist/windows/installer-translations/welsh.nsh index c816384e56ac..d56987a72fd8 100644 --- a/dist/windows/installer-translations/welsh.nsh +++ b/dist/windows/installer-translations/welsh.nsh @@ -28,8 +28,8 @@ LangString inst_unist ${LANG_WELSH} "Uninstalling previous version." LangString launch_qbt ${LANG_WELSH} "Launch qBittorrent." ;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions." LangString inst_requires_64bit ${LANG_WELSH} "This installer works only in 64-bit Windows versions." -;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809." -LangString inst_requires_win10 ${LANG_WELSH} "This installer requires at least Windows 10 1809." +;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." +LangString inst_requires_win10 ${LANG_WELSH} "This installer requires at least Windows 10 (1809) / Windows Server 2019." ;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent" LangString inst_uninstall_link_description ${LANG_WELSH} "Uninstall qBittorrent" diff --git a/dist/windows/installer.nsh b/dist/windows/installer.nsh index 09a8ad758554..a6025898de21 100644 --- a/dist/windows/installer.nsh +++ b/dist/windows/installer.nsh @@ -116,13 +116,15 @@ Function .onInit !insertmacro Init "installer" !insertmacro MUI_LANGDLL_DISPLAY - ${IfNot} ${AtLeastWaaS} 1809 ; Windows 10 1809. Min supported version by Qt6 - MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win10) + ${IfNot} ${AtLeastWaaS} 1809 ; Windows 10 (1809) / Windows Server 2019. Min supported version by Qt6 + MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_win10) /SD IDOK + SetErrorLevel 1654 # WinError.h: `ERROR_INSTALL_REJECTED` Abort ${EndIf} ${IfNot} ${RunningX64} - MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_64bit) + MessageBox MB_OK|MB_ICONEXCLAMATION $(inst_requires_64bit) /SD IDOK + SetErrorLevel 1654 # WinError.h: `ERROR_INSTALL_REJECTED` Abort ${EndIf} @@ -147,9 +149,10 @@ Function check_instance check: FindProcDLL::FindProc "qbittorrent.exe" StrCmp $R0 "1" 0 notfound - MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(inst_warning) IDRETRY check IDCANCEL done + MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(inst_warning) /SD IDCANCEL IDRETRY check IDCANCEL canceled - done: + canceled: + SetErrorLevel 15618 # WinError.h: `ERROR_PACKAGES_IN_USE` Abort notfound: diff --git a/dist/windows/uninstaller.nsh b/dist/windows/uninstaller.nsh index 517604935ba4..51b47a42b2d5 100644 --- a/dist/windows/uninstaller.nsh +++ b/dist/windows/uninstaller.nsh @@ -75,15 +75,16 @@ FunctionEnd Function un.check_instance - check: - FindProcDLL::FindProc "qbittorrent.exe" - StrCmp $R0 "1" 0 notfound - MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(uninst_warning) IDRETRY check IDCANCEL done + check: + FindProcDLL::FindProc "qbittorrent.exe" + StrCmp $R0 "1" 0 notfound + MessageBox MB_RETRYCANCEL|MB_ICONEXCLAMATION $(uninst_warning) /SD IDCANCEL IDRETRY check IDCANCEL canceled - done: - Abort + canceled: + SetErrorLevel 15618 # WinError.h: `ERROR_PACKAGES_IN_USE` + Abort - notfound: + notfound: FunctionEnd diff --git a/doc/en/qbittorrent-nox.1 b/doc/en/qbittorrent-nox.1 index 7d1ee0dd173d..140ad389cac5 100644 --- a/doc/en/qbittorrent-nox.1 +++ b/doc/en/qbittorrent-nox.1 @@ -1,41 +1,44 @@ -.\" Automatically generated by Pandoc 3.1.7 +.\" Automatically generated by Pandoc 3.4 .\" -.TH "QBITTORRENT-NOX" "1" "January 16th 2010" "Command line Bittorrent client written in C++ / Qt" "" +.TH "QBITTORRENT\-NOX" "1" "January 16th 2010" "Command line Bittorrent client written in C++ / Qt" .SH NAME -qBittorrent-nox - a command line Bittorrent client written in C++ / Qt +qBittorrent\-nox \- a command line Bittorrent client written in C++ / Qt .SH SYNOPSIS -\f[B]qbittorrent-nox\f[R] -\f[CR][--d|--daemon] [--webui-port=x] [TORRENT_FILE | URL]...\f[R] +\f[B]qbittorrent\-nox\f[R] +\f[CR][\-\-d|\-\-daemon] [\-\-webui\-port=x] [TORRENT_FILE | URL]...\f[R] .PP -\f[B]qbittorrent-nox\f[R] \f[CR]--help\f[R] +\f[B]qbittorrent\-nox\f[R] \f[CR]\-\-help\f[R] .PP -\f[B]qbittorrent-nox\f[R] \f[CR]--version\f[R] +\f[B]qbittorrent\-nox\f[R] \f[CR]\-\-version\f[R] .SH DESCRIPTION -\f[B]qBittorrent-nox\f[R] is an advanced command-line Bittorrent client -written in C++ / Qt using the \f[B]libtorrent-rasterbar\f[R] library by -Arvid Norberg. -qBittorrent-nox aims to be a good alternative to other command line +\f[B]qBittorrent\-nox\f[R] is an advanced command\-line Bittorrent +client written in C++ / Qt using the \f[B]libtorrent\-rasterbar\f[R] +library by Arvid Norberg. +qBittorrent\-nox aims to be a good alternative to other command line bittorrent clients and provides features similar to popular graphical clients. .PP -qBittorrent-nox is fast, stable, light and it supports unicode. -It also comes with UPnP port forwarding / NAT-PMP, encryption (Vuze +qBittorrent\-nox is fast, stable, light and it supports unicode. +It also comes with UPnP port forwarding / NAT\-PMP, encryption (Vuze compatible), FAST extension (mainline) and PeX support (utorrent compatible). .PP -qBittorrent-nox is meant to be controlled via its feature-rich Web UI +qBittorrent\-nox is meant to be controlled via its feature\-rich Web UI which is accessible as a default on http://localhost:8080. The Web UI access is secured and the default account user name is \[lq]admin\[rq] with \[lq]adminadmin\[rq] as a password. .SH OPTIONS -\f[B]\f[CB]--help\f[B]\f[R] Prints the command line options. +\f[B]\f[CB]\-\-help\f[B]\f[R] Prints the command line options. .PP -\f[B]\f[CB]--version\f[B]\f[R] Prints qbittorrent program version +\f[B]\f[CB]\-\-version\f[B]\f[R] Prints qbittorrent program version number. .PP -\f[B]\f[CB]--webui-port=x\f[B]\f[R] Changes Web UI port to x (default: -8080). +\f[B]\f[CB]\-\-webui\-port=x\f[B]\f[R] Changes Web UI port to x +(default: 8080). .SH BUGS If you find a bug, please report it at https://bugs.qbittorrent.org .SH AUTHORS -Christophe Dumez . +Christophe Dumez \c +.MT chris@qbittorrent.org +.ME \c +\&. diff --git a/doc/en/qbittorrent.1 b/doc/en/qbittorrent.1 index 4efca9e0d32b..c8737d286d32 100644 --- a/doc/en/qbittorrent.1 +++ b/doc/en/qbittorrent.1 @@ -1,35 +1,38 @@ -.\" Automatically generated by Pandoc 3.1.7 +.\" Automatically generated by Pandoc 3.4 .\" -.TH "QBITTORRENT" "1" "January 16th 2010" "Bittorrent client written in C++ / Qt" "" +.TH "QBITTORRENT" "1" "January 16th 2010" "Bittorrent client written in C++ / Qt" .SH NAME -qBittorrent - a Bittorrent client written in C++ / Qt +qBittorrent \- a Bittorrent client written in C++ / Qt .SH SYNOPSIS \f[B]qbittorrent\f[R] -\f[CR][--no-splash] [--webui-port=x] [TORRENT_FILE | URL]...\f[R] +\f[CR][\-\-no\-splash] [\-\-webui\-port=x] [TORRENT_FILE | URL]...\f[R] .PP -\f[B]qbittorrent\f[R] \f[CR]--help\f[R] +\f[B]qbittorrent\f[R] \f[CR]\-\-help\f[R] .PP -\f[B]qbittorrent\f[R] \f[CR]--version\f[R] +\f[B]qbittorrent\f[R] \f[CR]\-\-version\f[R] .SH DESCRIPTION \f[B]qBittorrent\f[R] is an advanced Bittorrent client written in C++ / -Qt, using the \f[B]libtorrent-rasterbar\f[R] library by Arvid Norberg. +Qt, using the \f[B]libtorrent\-rasterbar\f[R] library by Arvid Norberg. qBittorrent is similar to uTorrent. qBittorrent is fast, stable, light, it supports unicode and it provides a good integrated search engine. -It also comes with UPnP port forwarding / NAT-PMP, encryption (Vuze +It also comes with UPnP port forwarding / NAT\-PMP, encryption (Vuze compatible), FAST extension (mainline) and PeX support (utorrent compatible). .SH OPTIONS -\f[B]\f[CB]--help\f[B]\f[R] Prints the command line options. +\f[B]\f[CB]\-\-help\f[B]\f[R] Prints the command line options. .PP -\f[B]\f[CB]--version\f[B]\f[R] Prints qbittorrent program version +\f[B]\f[CB]\-\-version\f[B]\f[R] Prints qbittorrent program version number. .PP -\f[B]\f[CB]--no-splash\f[B]\f[R] Disables splash screen on startup. +\f[B]\f[CB]\-\-no\-splash\f[B]\f[R] Disables splash screen on startup. .PP -\f[B]\f[CB]--webui-port=x\f[B]\f[R] Changes Web UI port to x (default: -8080). +\f[B]\f[CB]\-\-webui\-port=x\f[B]\f[R] Changes Web UI port to x +(default: 8080). .SH BUGS If you find a bug, please report it at https://bugs.qbittorrent.org .SH AUTHORS -Christophe Dumez . +Christophe Dumez \c +.MT chris@qbittorrent.org +.ME \c +\&. diff --git a/doc/ru/qbittorrent-nox.1 b/doc/ru/qbittorrent-nox.1 index ba8713bae179..315753991b6e 100644 --- a/doc/ru/qbittorrent-nox.1 +++ b/doc/ru/qbittorrent-nox.1 @@ -1,7 +1,10 @@ -.\" Automatically generated by Pandoc 3.1.7 +.\" Automatically generated by Pandoc 3.4 .\" -.TH "QBITTORRENT-NOX" "1" "16 января 2010" "Клиент сети БитТоррент для командной строки" "" +.TH "QBITTORRENT\-NOX" "1" "16 января 2010" "Клиент сети БитТоррент для командной строки" .SH НАЗВАНИЕ -qBittorrent-nox \[em] клиент сети БитТоррент для командной строки. +qBittorrent\-nox \[em] клиент сети БитТоррент для командной строки. .SH АВТОРЫ -Christophe Dumez . +Christophe Dumez \c +.MT chris@qbittorrent.org +.ME \c +\&. diff --git a/doc/ru/qbittorrent.1 b/doc/ru/qbittorrent.1 index 2fc395ddde45..7820ac39894c 100644 --- a/doc/ru/qbittorrent.1 +++ b/doc/ru/qbittorrent.1 @@ -1,7 +1,10 @@ -.\" Automatically generated by Pandoc 3.1.7 +.\" Automatically generated by Pandoc 3.4 .\" -.TH "QBITTORRENT" "1" "16 января 2010" "Клиент сети БитТоррент" "" +.TH "QBITTORRENT" "1" "16 января 2010" "Клиент сети БитТоррент" .SH НАЗВАНИЕ qBittorrent \[em] клиент сети БитТоррент. .SH АВТОРЫ -Christophe Dumez . +Christophe Dumez \c +.MT chris@qbittorrent.org +.ME \c +\&. diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index e4d7747d7349..b5174aa45b16 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -38,6 +38,7 @@ target_sources(qbt_app PRIVATE applicationinstancemanager.h cmdoptions.h filelogger.h + legalnotice.h qtlocalpeer/qtlocalpeer.h signalhandler.h upgrade.h @@ -47,6 +48,7 @@ target_sources(qbt_app PRIVATE applicationinstancemanager.cpp cmdoptions.cpp filelogger.cpp + legalnotice.cpp main.cpp qtlocalpeer/qtlocalpeer.cpp signalhandler.cpp diff --git a/src/app/application.cpp b/src/app/application.cpp index af8d92b63ac5..a415950d0fe8 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -57,7 +57,6 @@ #include #ifdef Q_OS_WIN #include -#include #endif // Q_OS_WIN #ifdef Q_OS_MACOS #include @@ -70,7 +69,6 @@ #include "base/bittorrent/torrent.h" #include "base/exceptions.h" #include "base/global.h" -#include "base/iconprovider.h" #include "base/logger.h" #include "base/net/downloadmanager.h" #include "base/net/geoipmanager.h" @@ -93,7 +91,6 @@ #include "upgrade.h" #ifndef DISABLE_GUI -#include "gui/guiaddtorrentmanager.h" #include "gui/desktopintegration.h" #include "gui/mainwindow.h" #include "gui/shutdownconfirmdialog.h" @@ -143,8 +140,8 @@ namespace if (!addTorrentParams.savePath.isEmpty()) result.append(u"@savePath=" + addTorrentParams.savePath.data()); - if (addTorrentParams.addPaused.has_value()) - result.append(*addTorrentParams.addPaused ? u"@addPaused=1"_s : u"@addPaused=0"_s); + if (addTorrentParams.addStopped.has_value()) + result.append(*addTorrentParams.addStopped ? u"@addStopped=1"_s : u"@addStopped=0"_s); if (addTorrentParams.skipChecking) result.append(u"@skipChecking"_s); @@ -183,9 +180,9 @@ namespace continue; } - if (param.startsWith(u"@addPaused=")) + if (param.startsWith(u"@addStopped=")) { - addTorrentParams.addPaused = (QStringView(param).mid(11).toInt() != 0); + addTorrentParams.addStopped = (QStringView(param).mid(11).toInt() != 0); continue; } @@ -229,6 +226,7 @@ namespace Application::Application(int &argc, char **argv) : BaseApplication(argc, argv) , m_commandLineArgs(parseCommandLine(Application::arguments())) + , m_storeInstanceName(SETTINGS_KEY(u"InstanceName"_s)) , m_storeFileLoggerEnabled(FILELOGGER_SETTINGS_KEY(u"Enabled"_s)) , m_storeFileLoggerBackup(FILELOGGER_SETTINGS_KEY(u"Backup"_s)) , m_storeFileLoggerDeleteOld(FILELOGGER_SETTINGS_KEY(u"DeleteOld"_s)) @@ -253,17 +251,15 @@ Application::Application(int &argc, char **argv) #if !defined(DISABLE_GUI) setDesktopFileName(u"org.qbittorrent.qBittorrent"_s); setQuitOnLastWindowClosed(false); + setQuitLockEnabled(false); QPixmapCache::setCacheLimit(PIXMAP_CACHE_SIZE); #endif Logger::initInstance(); const auto portableProfilePath = Path(QCoreApplication::applicationDirPath()) / DEFAULT_PORTABLE_MODE_PROFILE_DIR; - const bool portableModeEnabled = m_commandLineArgs.profileDir.isEmpty() && portableProfilePath.exists(); - - const Path profileDir = portableModeEnabled - ? portableProfilePath - : m_commandLineArgs.profileDir; + const bool portableModeEnabled = m_commandLineArgs.profileDir.isEmpty() && Utils::Fs::isDir(portableProfilePath); + const Path profileDir = portableModeEnabled ? portableProfilePath : m_commandLineArgs.profileDir; Profile::initInstance(profileDir, m_commandLineArgs.configurationName, (m_commandLineArgs.relativeFastresumePaths || portableModeEnabled)); @@ -272,16 +268,17 @@ Application::Application(int &argc, char **argv) SettingsStorage::initInstance(); Preferences::initInstance(); - const bool firstTimeUser = !Preferences::instance()->getAcceptedLegal(); - if (!firstTimeUser) + const bool firstTimeUser = SettingsStorage::instance()->isEmpty(); + if (firstTimeUser) { - if (!upgrade()) - throw RuntimeError(u"Failed migration of old settings"_s); // Not translatable. Translation isn't configured yet. - handleChangedDefaults(DefaultPreferencesMode::Legacy); + setCurrentMigrationVersion(); + handleChangedDefaults(DefaultPreferencesMode::Current); } else { - handleChangedDefaults(DefaultPreferencesMode::Current); + if (!upgrade()) + throw RuntimeError(u"Failed migration of old settings"_s); // Not translatable. Translation isn't configured yet. + handleChangedDefaults(DefaultPreferencesMode::Legacy); } initializeTranslation(); @@ -292,7 +289,8 @@ Application::Application(int &argc, char **argv) connect(this, &QGuiApplication::commitDataRequest, this, &Application::shutdownCleanup, Qt::DirectConnection); #endif - LogMsg(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(QStringLiteral(QBT_VERSION))); + LogMsg(tr("qBittorrent %1 started. Process ID: %2", "qBittorrent v3.2.0alpha started") + .arg(QStringLiteral(QBT_VERSION), QString::number(QCoreApplication::applicationPid()))); if (portableModeEnabled) { LogMsg(tr("Running in portable mode. Auto detected profile folder at: %1").arg(profileDir.toString())); @@ -361,6 +359,23 @@ const QBtCommandLineParameters &Application::commandLineArgs() const return m_commandLineArgs; } +QString Application::instanceName() const +{ + return m_storeInstanceName; +} + +void Application::setInstanceName(const QString &name) +{ + if (name == instanceName()) + return; + + m_storeInstanceName = name; +#ifndef DISABLE_GUI + if (MainWindow *mw = mainWindow()) + mw->setTitleSuffix(name); +#endif +} + int Application::memoryWorkingSetLimit() const { return m_storeMemoryWorkingSetLimit.get(512); @@ -523,7 +538,7 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo str.replace(i, 2, torrent->contentPath().toString()); break; case u'G': - str.replace(i, 2, torrent->tags().join(u","_s)); + str.replace(i, 2, Utils::String::joinIntoString(torrent->tags(), u","_s)); break; case u'I': str.replace(i, 2, (torrent->infoHash().v1().isValid() ? torrent->infoHash().v1().toString() : u"-"_s)); @@ -564,7 +579,7 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo const QString logMsg = tr("Running external program. Torrent: \"%1\". Command: `%2`"); const QString logMsgError = tr("Failed to run external program. Torrent: \"%1\". Command: `%2`"); - // The processing sequenece is different for Windows and other OS, this is intentional + // The processing sequence is different for Windows and other OS, this is intentional #if defined(Q_OS_WIN) const QString program = replaceVariables(programTemplate); const std::wstring programWStr = program.toStdWString(); @@ -663,6 +678,24 @@ void Application::sendNotificationEmail(const BitTorrent::Torrent *torrent) content); } +void Application::sendTestEmail() const +{ + const Preferences *pref = Preferences::instance(); + if (pref->isMailNotificationEnabled()) + { + // Prepare mail content + const QString content = tr("This is a test email.") + u'\n' + + tr("Thank you for using qBittorrent.") + u'\n'; + + // Send the notification email + auto *smtp = new Net::Smtp(); + smtp->sendMail(pref->getMailNotificationSender(), + pref->getMailNotificationEmail(), + tr("Test email"), + content); + } +} + void Application::torrentAdded(const BitTorrent::Torrent *torrent) const { const Preferences *pref = Preferences::instance(); @@ -792,7 +825,6 @@ int Application::exec() Net::ProxyConfigurationManager::initInstance(); Net::DownloadManager::initInstance(); - IconProvider::initInstance(); BitTorrent::Session::initInstance(); #ifndef DISABLE_GUI @@ -801,7 +833,7 @@ int Application::exec() m_desktopIntegration = new DesktopIntegration; m_desktopIntegration->setToolTip(tr("Loading torrents...")); #ifndef Q_OS_MACOS - auto *desktopIntegrationMenu = new QMenu; + auto *desktopIntegrationMenu = m_desktopIntegration->menu(); auto *actionExit = new QAction(tr("E&xit"), desktopIntegrationMenu); actionExit->setIcon(UIThemeManager::instance()->getIcon(u"application-exit"_s)); actionExit->setMenuRole(QAction::QuitRole); @@ -812,8 +844,6 @@ int Application::exec() }); desktopIntegrationMenu->addAction(actionExit); - m_desktopIntegration->setMenu(desktopIntegrationMenu); - const bool isHidden = m_desktopIntegration->isActive() && (startUpWindowState() == WindowState::Hidden); #else const bool isHidden = false; @@ -882,7 +912,8 @@ int Application::exec() const WindowState windowState = (m_startupProgressDialog->windowState() & Qt::WindowMinimized) ? WindowState::Minimized : WindowState::Normal; #endif - m_window = new MainWindow(this, windowState); + m_window = new MainWindow(this, windowState, instanceName()); + delete m_startupProgressDialog; #endif // DISABLE_GUI @@ -944,7 +975,7 @@ int Application::exec() return BaseApplication::exec(); } -bool Application::isRunning() +bool Application::hasAnotherInstance() const { return !m_instanceManager->isFirstInstance(); } @@ -1334,7 +1365,6 @@ void Application::cleanup() Net::ProxyConfigurationManager::freeInstance(); Preferences::freeInstance(); SettingsStorage::freeInstance(); - IconProvider::freeInstance(); SearchPluginManager::freeInstance(); Utils::Fs::removeDirRecursively(Utils::Fs::tempPath()); diff --git a/src/app/application.h b/src/app/application.h index ff7c4ace48c4..ca683fbff495 100644 --- a/src/app/application.h +++ b/src/app/application.h @@ -101,10 +101,13 @@ class Application final : public BaseApplication, public BaseIApplication int exec(); - bool isRunning(); + bool hasAnotherInstance() const; bool callMainInstance(); const QBtCommandLineParameters &commandLineArgs() const; + QString instanceName() const override; + void setInstanceName(const QString &name) override; + // FileLogger properties bool isFileLoggerEnabled() const override; void setFileLoggerEnabled(bool value) override; @@ -124,6 +127,8 @@ class Application final : public BaseApplication, public BaseIApplication int memoryWorkingSetLimit() const override; void setMemoryWorkingSetLimit(int size) override; + void sendTestEmail() const override; + #ifdef Q_OS_WIN MemoryPriority processMemoryPriority() const override; void setProcessMemoryPriority(MemoryPriority priority) override; @@ -194,6 +199,7 @@ private slots: QList m_paramsQueue; + SettingValue m_storeInstanceName; SettingValue m_storeFileLoggerEnabled; SettingValue m_storeFileLoggerBackup; SettingValue m_storeFileLoggerDeleteOld; diff --git a/src/app/cmdoptions.cpp b/src/app/cmdoptions.cpp index 5b1d957b6668..f6946f68f024 100644 --- a/src/app/cmdoptions.cpp +++ b/src/app/cmdoptions.cpp @@ -36,12 +36,14 @@ #include #include #include +#include #if defined(Q_OS_WIN) && !defined(DISABLE_GUI) #include #endif #include "base/global.h" +#include "base/utils/fs.h" #include "base/utils/misc.h" #include "base/utils/string.h" @@ -59,7 +61,7 @@ namespace class Option { protected: - explicit constexpr Option(const char *name, char shortcut = 0) + explicit constexpr Option(const QStringView name, const QChar shortcut = QChar::Null) : m_name {name} , m_shortcut {shortcut} { @@ -67,23 +69,23 @@ namespace QString fullParameter() const { - return u"--" + QString::fromLatin1(m_name); + return u"--" + m_name.toString(); } QString shortcutParameter() const { - return u"-" + QChar::fromLatin1(m_shortcut); + return u"-" + m_shortcut; } bool hasShortcut() const { - return m_shortcut != 0; + return !m_shortcut.isNull(); } QString envVarName() const { return u"QBT_" - + QString::fromLatin1(m_name).toUpper().replace(u'-', u'_'); + + m_name.toString().toUpper().replace(u'-', u'_'); } public: @@ -98,15 +100,15 @@ namespace } private: - const char *m_name = nullptr; - const char m_shortcut; + const QStringView m_name; + const QChar m_shortcut; }; // Boolean option. class BoolOption : protected Option { public: - explicit constexpr BoolOption(const char *name, char shortcut = 0) + explicit constexpr BoolOption(const QStringView name, const QChar shortcut = QChar::Null) : Option {name, shortcut} { } @@ -138,8 +140,8 @@ namespace struct StringOption : protected Option { public: - explicit constexpr StringOption(const char *name) - : Option {name, 0} + explicit constexpr StringOption(const QStringView name) + : Option {name, QChar::Null} { } @@ -180,7 +182,7 @@ namespace class IntOption : protected StringOption { public: - explicit constexpr IntOption(const char *name) + explicit constexpr IntOption(const QStringView name) : StringOption {name} { } @@ -228,8 +230,8 @@ namespace class TriStateBoolOption : protected Option { public: - constexpr TriStateBoolOption(const char *name, bool defaultValue) - : Option {name, 0} + constexpr TriStateBoolOption(const QStringView name, const bool defaultValue) + : Option {name, QChar::Null} , m_defaultValue(defaultValue) { } @@ -262,8 +264,8 @@ namespace } throw CommandLineParameterError(QCoreApplication::translate("CMD Options", "Parameter '%1' must follow syntax '%1=%2'", - "e.g. Parameter '--add-paused' must follow syntax " - "'--add-paused='") + "e.g. Parameter '--add-stopped' must follow syntax " + "'--add-stopped='") .arg(fullParameter(), u""_s)); } @@ -298,32 +300,37 @@ namespace return arg.section(u'=', 0, 0) == option.fullParameter(); } - bool m_defaultValue; + private: + bool m_defaultValue = false; }; - constexpr const BoolOption SHOW_HELP_OPTION {"help", 'h'}; - constexpr const BoolOption SHOW_VERSION_OPTION {"version", 'v'}; + constexpr const BoolOption SHOW_HELP_OPTION {u"help", u'h'}; +#if !defined(Q_OS_WIN) || defined(DISABLE_GUI) + constexpr const BoolOption SHOW_VERSION_OPTION {u"version", u'v'}; +#endif + constexpr const BoolOption CONFIRM_LEGAL_NOTICE {u"confirm-legal-notice"}; #if defined(DISABLE_GUI) && !defined(Q_OS_WIN) - constexpr const BoolOption DAEMON_OPTION {"daemon", 'd'}; + constexpr const BoolOption DAEMON_OPTION {u"daemon", u'd'}; #else - constexpr const BoolOption NO_SPLASH_OPTION {"no-splash"}; + constexpr const BoolOption NO_SPLASH_OPTION {u"no-splash"}; #endif - constexpr const IntOption WEBUI_PORT_OPTION {"webui-port"}; - constexpr const IntOption TORRENTING_PORT_OPTION {"torrenting-port"}; - constexpr const StringOption PROFILE_OPTION {"profile"}; - constexpr const StringOption CONFIGURATION_OPTION {"configuration"}; - constexpr const BoolOption RELATIVE_FASTRESUME {"relative-fastresume"}; - constexpr const StringOption SAVE_PATH_OPTION {"save-path"}; - constexpr const TriStateBoolOption PAUSED_OPTION {"add-paused", true}; - constexpr const BoolOption SKIP_HASH_CHECK_OPTION {"skip-hash-check"}; - constexpr const StringOption CATEGORY_OPTION {"category"}; - constexpr const BoolOption SEQUENTIAL_OPTION {"sequential"}; - constexpr const BoolOption FIRST_AND_LAST_OPTION {"first-and-last"}; - constexpr const TriStateBoolOption SKIP_DIALOG_OPTION {"skip-dialog", true}; + constexpr const IntOption WEBUI_PORT_OPTION {u"webui-port"}; + constexpr const IntOption TORRENTING_PORT_OPTION {u"torrenting-port"}; + constexpr const StringOption PROFILE_OPTION {u"profile"}; + constexpr const StringOption CONFIGURATION_OPTION {u"configuration"}; + constexpr const BoolOption RELATIVE_FASTRESUME {u"relative-fastresume"}; + constexpr const StringOption SAVE_PATH_OPTION {u"save-path"}; + constexpr const TriStateBoolOption STOPPED_OPTION {u"add-stopped", true}; + constexpr const BoolOption SKIP_HASH_CHECK_OPTION {u"skip-hash-check"}; + constexpr const StringOption CATEGORY_OPTION {u"category"}; + constexpr const BoolOption SEQUENTIAL_OPTION {u"sequential"}; + constexpr const BoolOption FIRST_AND_LAST_OPTION {u"first-and-last"}; + constexpr const TriStateBoolOption SKIP_DIALOG_OPTION {u"skip-dialog", true}; } QBtCommandLineParameters::QBtCommandLineParameters(const QProcessEnvironment &env) - : relativeFastresumePaths(RELATIVE_FASTRESUME.value(env)) + : confirmLegalNotice(CONFIRM_LEGAL_NOTICE.value(env)) + , relativeFastresumePaths(RELATIVE_FASTRESUME.value(env)) #ifndef DISABLE_GUI , noSplash(NO_SPLASH_OPTION.value(env)) #elif !defined(Q_OS_WIN) @@ -332,7 +339,7 @@ QBtCommandLineParameters::QBtCommandLineParameters(const QProcessEnvironment &en , webUIPort(WEBUI_PORT_OPTION.value(env, -1)) , torrentingPort(TORRENTING_PORT_OPTION.value(env, -1)) , skipDialog(SKIP_DIALOG_OPTION.value(env)) - , profileDir(PROFILE_OPTION.value(env)) + , profileDir(Utils::Fs::toAbsolutePath(Path(PROFILE_OPTION.value(env)))) , configurationName(CONFIGURATION_OPTION.value(env)) { addTorrentParams.savePath = Path(SAVE_PATH_OPTION.value(env)); @@ -340,7 +347,7 @@ QBtCommandLineParameters::QBtCommandLineParameters(const QProcessEnvironment &en addTorrentParams.skipChecking = SKIP_HASH_CHECK_OPTION.value(env); addTorrentParams.sequential = SEQUENTIAL_OPTION.value(env); addTorrentParams.firstLastPiecePriority = FIRST_AND_LAST_OPTION.value(env); - addTorrentParams.addPaused = PAUSED_OPTION.value(env); + addTorrentParams.addStopped = STOPPED_OPTION.value(env); } QBtCommandLineParameters parseCommandLine(const QStringList &args) @@ -365,6 +372,10 @@ QBtCommandLineParameters parseCommandLine(const QStringList &args) result.showVersion = true; } #endif + else if (arg == CONFIRM_LEGAL_NOTICE) + { + result.confirmLegalNotice = true; + } else if (arg == WEBUI_PORT_OPTION) { result.webUIPort = WEBUI_PORT_OPTION.value(arg); @@ -394,7 +405,7 @@ QBtCommandLineParameters parseCommandLine(const QStringList &args) #endif else if (arg == PROFILE_OPTION) { - result.profileDir = Path(PROFILE_OPTION.value(arg)); + result.profileDir = Utils::Fs::toAbsolutePath(Path(PROFILE_OPTION.value(arg))); } else if (arg == RELATIVE_FASTRESUME) { @@ -408,9 +419,9 @@ QBtCommandLineParameters parseCommandLine(const QStringList &args) { result.addTorrentParams.savePath = Path(SAVE_PATH_OPTION.value(arg)); } - else if (arg == PAUSED_OPTION) + else if (arg == STOPPED_OPTION) { - result.addTorrentParams.addPaused = PAUSED_OPTION.value(arg); + result.addTorrentParams.addStopped = STOPPED_OPTION.value(arg); } else if (arg == SKIP_HASH_CHECK_OPTION) { @@ -484,10 +495,11 @@ QString makeUsage(const QString &prgName) + indentation + prgName + u' ' + QCoreApplication::translate("CMD Options", "[options] [( | )...]") + u'\n' + QCoreApplication::translate("CMD Options", "Options:") + u'\n' + + SHOW_HELP_OPTION.usage() + wrapText(QCoreApplication::translate("CMD Options", "Display this help message and exit")) + u'\n' #if !defined(Q_OS_WIN) || defined(DISABLE_GUI) + SHOW_VERSION_OPTION.usage() + wrapText(QCoreApplication::translate("CMD Options", "Display program version and exit")) + u'\n' #endif - + SHOW_HELP_OPTION.usage() + wrapText(QCoreApplication::translate("CMD Options", "Display this help message and exit")) + u'\n' + + CONFIRM_LEGAL_NOTICE.usage() + wrapText(QCoreApplication::translate("CMD Options", "Confirm the legal notice")) + u'\n' + WEBUI_PORT_OPTION.usage(QCoreApplication::translate("CMD Options", "port")) + wrapText(QCoreApplication::translate("CMD Options", "Change the WebUI port")) + u'\n' @@ -513,7 +525,7 @@ QString makeUsage(const QString &prgName) + wrapText(QCoreApplication::translate("CMD Options", "Options when adding new torrents:"), 0) + u'\n' + SAVE_PATH_OPTION.usage(QCoreApplication::translate("CMD Options", "path")) + wrapText(QCoreApplication::translate("CMD Options", "Torrent save path")) + u'\n' - + PAUSED_OPTION.usage() + wrapText(QCoreApplication::translate("CMD Options", "Add torrents as started or paused")) + u'\n' + + STOPPED_OPTION.usage() + wrapText(QCoreApplication::translate("CMD Options", "Add torrents as running or stopped")) + u'\n' + SKIP_HASH_CHECK_OPTION.usage() + wrapText(QCoreApplication::translate("CMD Options", "Skip hash check")) + u'\n' + CATEGORY_OPTION.usage(QCoreApplication::translate("CMD Options", "name")) + wrapText(QCoreApplication::translate("CMD Options", "Assign torrents to category. If the category doesn't exist, it will be " diff --git a/src/app/cmdoptions.h b/src/app/cmdoptions.h index 1c133c413c8d..c4b42053fa24 100644 --- a/src/app/cmdoptions.h +++ b/src/app/cmdoptions.h @@ -44,10 +44,11 @@ class QProcessEnvironment; struct QBtCommandLineParameters { bool showHelp = false; - bool relativeFastresumePaths = false; #if !defined(Q_OS_WIN) || defined(DISABLE_GUI) bool showVersion = false; #endif + bool confirmLegalNotice = false; + bool relativeFastresumePaths = false; #ifndef DISABLE_GUI bool noSplash = false; #elif !defined(Q_OS_WIN) diff --git a/src/app/filelogger.cpp b/src/app/filelogger.cpp index e0cafbb7eda6..5436c13926a3 100644 --- a/src/app/filelogger.cpp +++ b/src/app/filelogger.cpp @@ -32,8 +32,8 @@ #include #include +#include #include -#include #include "base/global.h" #include "base/logger.h" diff --git a/src/app/legalnotice.cpp b/src/app/legalnotice.cpp new file mode 100644 index 000000000000..af46ee9e5ee3 --- /dev/null +++ b/src/app/legalnotice.cpp @@ -0,0 +1,77 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "legalnotice.h" + +#ifdef DISABLE_GUI +#include +#endif // DISABLE_GUI + +#include +#include + +#ifndef DISABLE_GUI +#include +#endif // DISABLE_GUI + +#include "base/global.h" + +#ifndef DISABLE_GUI +#include "gui/utils.h" +#endif // DISABLE_GUI + +void showLegalNotice(const bool isInteractive) +{ + const QString noticeTitle = QCoreApplication::translate("LegalNotice", "Legal Notice"); + const QString noticeBody = QCoreApplication::translate("LegalNotice", "qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility."); + const QString noticeEnd = QCoreApplication::translate("LegalNotice", "No further notices will be issued."); + + if (!isInteractive) + { + const QString legalNotice = u"\n*** %1 ***\n"_s.arg(noticeTitle) + + noticeBody + u"\n\n" + + QCoreApplication::translate("LegalNotice", "If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message."); + printf("%s\n\n", qUtf8Printable(legalNotice)); + return; + } + +#ifdef DISABLE_GUI + const QString legalNotice = u"\n*** %1 ***\n"_s.arg(noticeTitle) + + noticeBody + u"\n\n" + + noticeEnd + u"\n\n" + + QCoreApplication::translate("LegalNotice", "Press 'Enter' key to continue..."); + printf("%s", qUtf8Printable(legalNotice)); + getchar(); +#else // DISABLE_GUI + const QString messageBody = noticeBody + u"\n\n" + noticeEnd; + QMessageBox msgBox {QMessageBox::NoIcon, noticeTitle, messageBody, QMessageBox::Ok}; + msgBox.show(); // Need to be shown first or moveToCenter does not work + msgBox.move(Utils::Gui::screenCenter(&msgBox)); + msgBox.exec(); +#endif // DISABLE_GUI +} diff --git a/src/app/legalnotice.h b/src/app/legalnotice.h new file mode 100644 index 000000000000..62d47cd4f119 --- /dev/null +++ b/src/app/legalnotice.h @@ -0,0 +1,31 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +void showLegalNotice(bool isInteractive); diff --git a/src/app/main.cpp b/src/app/main.cpp index 6cb174c6c58e..d80629f44aba 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2014-2023 Vladimir Golovnev + * Copyright (C) 2014-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -55,14 +55,9 @@ #include #include #include -#include #include #include -#ifdef Q_OS_WIN -#include -#endif - #ifdef QBT_STATIC_QT #include Q_IMPORT_PLUGIN(QICOPlugin) @@ -73,13 +68,15 @@ Q_IMPORT_PLUGIN(QICOPlugin) #endif // DISABLE_GUI #include "base/global.h" +#include "base/logger.h" #include "base/preferences.h" #include "base/profile.h" +#include "base/settingvalue.h" #include "base/version.h" #include "application.h" #include "cmdoptions.h" +#include "legalnotice.h" #include "signalhandler.h" -#include "upgrade.h" #ifndef DISABLE_GUI #include "gui/utils.h" @@ -87,34 +84,107 @@ Q_IMPORT_PLUGIN(QICOPlugin) using namespace std::chrono_literals; -void displayVersion(); -bool userAgreesWithLegalNotice(); -void displayBadArgMessage(const QString &message); -void displayErrorMessage(const QString &message); +namespace +{ + void displayBadArgMessage(const QString &message) + { + const QString help = QCoreApplication::translate("Main", "Run application with -h option to read about command line parameters."); +#if defined(Q_OS_WIN) && !defined(DISABLE_GUI) + QMessageBox msgBox(QMessageBox::Critical, QCoreApplication::translate("Main", "Bad command line"), + (message + u'\n' + help), QMessageBox::Ok); + msgBox.show(); // Need to be shown or to moveToCenter does not work + msgBox.move(Utils::Gui::screenCenter(&msgBox)); + msgBox.exec(); +#else + const QString errMsg = QCoreApplication::translate("Main", "Bad command line: ") + u'\n' + + message + u'\n' + + help + u'\n'; + fprintf(stderr, "%s", qUtf8Printable(errMsg)); +#endif + } + + void displayErrorMessage(const QString &message) + { +#ifndef DISABLE_GUI + if (QApplication::instance()) + { + QMessageBox msgBox; + msgBox.setIcon(QMessageBox::Critical); + msgBox.setText(QCoreApplication::translate("Main", "An unrecoverable error occurred.")); + msgBox.setInformativeText(message); + msgBox.show(); // Need to be shown or to moveToCenter does not work + msgBox.move(Utils::Gui::screenCenter(&msgBox)); + msgBox.exec(); + } + else + { + const QString errMsg = QCoreApplication::translate("Main", "qBittorrent has encountered an unrecoverable error.") + u'\n' + message + u'\n'; + fprintf(stderr, "%s", qUtf8Printable(errMsg)); + } +#else + const QString errMsg = QCoreApplication::translate("Main", "qBittorrent has encountered an unrecoverable error.") + u'\n' + message + u'\n'; + fprintf(stderr, "%s", qUtf8Printable(errMsg)); +#endif + } + + void displayVersion() + { + printf("%s %s\n", qUtf8Printable(qApp->applicationName()), QBT_VERSION); + } #ifndef DISABLE_GUI -void showSplashScreen(); + void showSplashScreen() + { + QPixmap splashImg(u":/icons/splash.png"_s); + QPainter painter(&splashImg); + const auto version = QStringLiteral(QBT_VERSION); + painter.setPen(QPen(Qt::white)); + painter.setFont(QFont(u"Arial"_s, 22, QFont::Black)); + painter.drawText(224 - painter.fontMetrics().horizontalAdvance(version), 270, version); + QSplashScreen *splash = new QSplashScreen(splashImg); + splash->show(); + QTimer::singleShot(1500ms, Qt::CoarseTimer, splash, &QObject::deleteLater); + qApp->processEvents(); + } #endif // DISABLE_GUI #ifdef Q_OS_UNIX -void adjustFileDescriptorLimit(); + void adjustFileDescriptorLimit() + { + rlimit limit {}; + + if (getrlimit(RLIMIT_NOFILE, &limit) != 0) + return; + + limit.rlim_cur = limit.rlim_max; + setrlimit(RLIMIT_NOFILE, &limit); + } + + void adjustLocale() + { + // specify the default locale just in case if user has not set any other locale + // only `C` locale is available universally without installing locale packages + if (qEnvironmentVariableIsEmpty("LANG")) + qputenv("LANG", "C.UTF-8"); + } #endif +} // Main int main(int argc, char *argv[]) { +#ifdef DISABLE_GUI + setvbuf(stdout, nullptr, _IONBF, 0); +#endif + #ifdef Q_OS_UNIX + adjustLocale(); adjustFileDescriptorLimit(); #endif // We must save it here because QApplication constructor may change it const bool isOneArg = (argc == 2); -#if !defined(DISABLE_GUI) && defined(Q_OS_WIN) - if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows10) - QApplication::setStyle(u"Fusion"_s); -#endif - // `app` must be declared out of try block to allow display message box in case of exception std::unique_ptr app; try @@ -125,7 +195,7 @@ int main(int argc, char *argv[]) #ifdef Q_OS_WIN // QCoreApplication::applicationDirPath() needs an Application object instantiated first // Let's hope that there won't be a crash before this line - const char *envName = "_NT_SYMBOL_PATH"; + const char envName[] = "_NT_SYMBOL_PATH"; const QString envValue = qEnvironmentVariable(envName); if (envValue.isEmpty()) qputenv(envName, Application::applicationDirPath().toLocal8Bit()); @@ -163,36 +233,21 @@ int main(int argc, char *argv[]) .arg(u"-h (or --help)"_s)); } - const bool firstTimeUser = !Preferences::instance()->getAcceptedLegal(); - if (firstTimeUser) - { -#ifndef DISABLE_GUI - if (!userAgreesWithLegalNotice()) - return EXIT_SUCCESS; -#elif defined(Q_OS_WIN) - if (_isatty(_fileno(stdin)) - && _isatty(_fileno(stdout)) - && !userAgreesWithLegalNotice()) - return EXIT_SUCCESS; -#else - if (!params.shouldDaemonize - && isatty(fileno(stdin)) - && isatty(fileno(stdout)) - && !userAgreesWithLegalNotice()) - return EXIT_SUCCESS; -#endif - - setCurrentMigrationVersion(); - } - - // Check if qBittorrent is already running for this user - if (app->isRunning()) + // Check if qBittorrent is already running + if (app->hasAnotherInstance()) { #if defined(DISABLE_GUI) && !defined(Q_OS_WIN) if (params.shouldDaemonize) { - throw CommandLineParameterError(QCoreApplication::translate("Main", "You cannot use %1: qBittorrent is already running for this user.") - .arg(u"-d (or --daemon)"_s)); + throw CommandLineParameterError(QCoreApplication::translate("Main", "You cannot use %1: qBittorrent is already running.") + .arg(u"-d (or --daemon)"_s)); + } + + // print friendly message if there are no other command line args + if (argc == 1) + { + const QString message = QCoreApplication::translate("Main", "Another qBittorrent instance is already running."); + printf("%s\n", qUtf8Printable(message)); } #endif @@ -202,27 +257,31 @@ int main(int argc, char *argv[]) return EXIT_SUCCESS; } -#ifdef Q_OS_WIN - // This affects only Windows apparently and Qt5. - // When QNetworkAccessManager is instantiated it regularly starts polling - // the network interfaces to see what's available and their status. - // This polling creates jitter and high ping with wifi interfaces. - // So here we disable it for lack of better measure. - // It will also spew this message in the console: QObject::startTimer: Timers cannot have negative intervals - // For more info see: - // 1. https://github.com/qbittorrent/qBittorrent/issues/4209 - // 2. https://bugreports.qt.io/browse/QTBUG-40332 - // 3. https://bugreports.qt.io/browse/QTBUG-46015 - - qputenv("QT_BEARER_POLL_TIMEOUT", QByteArray::number(-1)); -#endif // Q_OS_WIN + CachedSettingValue legalNoticeShown {u"LegalNotice/Accepted"_s, false}; + if (params.confirmLegalNotice) + legalNoticeShown = true; + + if (!legalNoticeShown) + { +#ifndef DISABLE_GUI + const bool isInteractive = true; +#elif defined(Q_OS_WIN) + const bool isInteractive = (_isatty(_fileno(stdin)) != 0) && (_isatty(_fileno(stdout)) != 0); +#else + // when run in daemon mode user can only dismiss the notice with command line option + const bool isInteractive = !params.shouldDaemonize + && ((isatty(fileno(stdin)) != 0) && (isatty(fileno(stdout)) != 0)); +#endif + showLegalNotice(isInteractive); + if (isInteractive) + legalNoticeShown = true; + } #ifdef Q_OS_MACOS // Since Apple made difficult for users to set PATH, we set here for convenience. // Users are supposed to install Homebrew Python for search function. // For more info see issue #5571. - QByteArray path = "/usr/local/bin:"; - path += qgetenv("PATH"); + const QByteArray path = "/usr/local/bin:" + qgetenv("PATH"); qputenv("PATH", path.constData()); // On OS X the standard is to not show icons in the menus @@ -235,19 +294,27 @@ int main(int argc, char *argv[]) #if defined(DISABLE_GUI) && !defined(Q_OS_WIN) if (params.shouldDaemonize) { - app.reset(); // Destroy current application - if (daemon(1, 0) == 0) + app.reset(); // Destroy current application instance + if (::daemon(1, 0) == 0) { app = std::make_unique(argc, argv); - if (app->isRunning()) + if (app->hasAnotherInstance()) { - // Another instance had time to start. + // It is undefined behavior to write to log file since there is another qbt instance + // in play. But we still do it since there is chance that the log message will survive. + const QString errorMessage = QCoreApplication::translate("Main", "Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1.") + .arg(QString::number(QCoreApplication::applicationPid())); + LogMsg(errorMessage, Log::CRITICAL); + // stdout, stderr is closed so we can't use them return EXIT_FAILURE; } } else { - qCritical("Something went wrong while daemonizing, exiting..."); + const QString errorMessage = QCoreApplication::translate("Main", "Error when daemonizing. Reason: \"%1\". Error code: %2.") + .arg(QString::fromLocal8Bit(strerror(errno)), QString::number(errno)); + LogMsg(errorMessage, Log::CRITICAL); + qCritical("%s", qUtf8Printable(errorMessage)); return EXIT_FAILURE; } } @@ -271,117 +338,3 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } } - -#if !defined(DISABLE_GUI) -void showSplashScreen() -{ - QPixmap splashImg(u":/icons/splash.png"_s); - QPainter painter(&splashImg); - const auto version = QStringLiteral(QBT_VERSION); - painter.setPen(QPen(Qt::white)); - painter.setFont(QFont(u"Arial"_s, 22, QFont::Black)); - painter.drawText(224 - painter.fontMetrics().horizontalAdvance(version), 270, version); - QSplashScreen *splash = new QSplashScreen(splashImg); - splash->show(); - QTimer::singleShot(1500ms, Qt::CoarseTimer, splash, &QObject::deleteLater); - qApp->processEvents(); -} -#endif // DISABLE_GUI - -void displayVersion() -{ - printf("%s %s\n", qUtf8Printable(qApp->applicationName()), QBT_VERSION); -} - -void displayBadArgMessage(const QString &message) -{ - const QString help = QCoreApplication::translate("Main", "Run application with -h option to read about command line parameters."); -#if defined(Q_OS_WIN) && !defined(DISABLE_GUI) - QMessageBox msgBox(QMessageBox::Critical, QCoreApplication::translate("Main", "Bad command line"), - (message + u'\n' + help), QMessageBox::Ok); - msgBox.show(); // Need to be shown or to moveToCenter does not work - msgBox.move(Utils::Gui::screenCenter(&msgBox)); - msgBox.exec(); -#else - const QString errMsg = QCoreApplication::translate("Main", "Bad command line: ") + u'\n' - + message + u'\n' - + help + u'\n'; - fprintf(stderr, "%s", qUtf8Printable(errMsg)); -#endif -} - -void displayErrorMessage(const QString &message) -{ -#ifndef DISABLE_GUI - if (QApplication::instance()) - { - QMessageBox msgBox; - msgBox.setIcon(QMessageBox::Critical); - msgBox.setText(QCoreApplication::translate("Main", "An unrecoverable error occurred.")); - msgBox.setInformativeText(message); - msgBox.show(); // Need to be shown or to moveToCenter does not work - msgBox.move(Utils::Gui::screenCenter(&msgBox)); - msgBox.exec(); - } - else - { - const QString errMsg = QCoreApplication::translate("Main", "qBittorrent has encountered an unrecoverable error.") + u'\n' + message + u'\n'; - fprintf(stderr, "%s", qUtf8Printable(errMsg)); - } -#else - const QString errMsg = QCoreApplication::translate("Main", "qBittorrent has encountered an unrecoverable error.") + u'\n' + message + u'\n'; - fprintf(stderr, "%s", qUtf8Printable(errMsg)); -#endif -} - -bool userAgreesWithLegalNotice() -{ - Preferences *const pref = Preferences::instance(); - Q_ASSERT(!pref->getAcceptedLegal()); - -#ifdef DISABLE_GUI - const QString eula = u"\n*** %1 ***\n"_s.arg(QCoreApplication::translate("Main", "Legal Notice")) - + QCoreApplication::translate("Main", "qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility.") + u"\n\n" - + QCoreApplication::translate("Main", "No further notices will be issued.") + u"\n\n" - + QCoreApplication::translate("Main", "Press %1 key to accept and continue...").arg(u"'y'"_s) + u'\n'; - printf("%s", qUtf8Printable(eula)); - - const char ret = getchar(); // Read pressed key - if ((ret == 'y') || (ret == 'Y')) - { - // Save the answer - pref->setAcceptedLegal(true); - return true; - } -#else - QMessageBox msgBox; - msgBox.setText(QCoreApplication::translate("Main", "qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility.\n\nNo further notices will be issued.")); - msgBox.setWindowTitle(QCoreApplication::translate("Main", "Legal notice")); - msgBox.addButton(QCoreApplication::translate("Main", "Cancel"), QMessageBox::RejectRole); - const QAbstractButton *agreeButton = msgBox.addButton(QCoreApplication::translate("Main", "I Agree"), QMessageBox::AcceptRole); - msgBox.show(); // Need to be shown or to moveToCenter does not work - msgBox.move(Utils::Gui::screenCenter(&msgBox)); - msgBox.exec(); - if (msgBox.clickedButton() == agreeButton) - { - // Save the answer - pref->setAcceptedLegal(true); - return true; - } -#endif // DISABLE_GUI - - return false; -} - -#ifdef Q_OS_UNIX -void adjustFileDescriptorLimit() -{ - rlimit limit {}; - - if (getrlimit(RLIMIT_NOFILE, &limit) != 0) - return; - - limit.rlim_cur = limit.rlim_max; - setrlimit(RLIMIT_NOFILE, &limit); -} -#endif diff --git a/src/app/qtlocalpeer/qtlocalpeer.cpp b/src/app/qtlocalpeer/qtlocalpeer.cpp index 2ad65f31a8e2..cc97eb4642c2 100644 --- a/src/app/qtlocalpeer/qtlocalpeer.cpp +++ b/src/app/qtlocalpeer/qtlocalpeer.cpp @@ -74,6 +74,7 @@ #include #endif +#include #include #include #include @@ -90,7 +91,7 @@ namespace QtLP_Private #endif } -const char ACK[] = "ack"; +const QByteArray ACK = QByteArrayLiteral("ack"); QtLocalPeer::QtLocalPeer(const QString &path, QObject *parent) : QObject(parent) @@ -169,7 +170,7 @@ bool QtLocalPeer::sendMessage(const QString &message, const int timeout) { res &= socket.waitForReadyRead(timeout); // wait for ack if (res) - res &= (socket.read(qstrlen(ACK)) == ACK); + res &= (socket.read(ACK.size()) == ACK); } return res; } @@ -220,7 +221,7 @@ void QtLocalPeer::receiveConnection() return; } QString message(QString::fromUtf8(uMsg)); - socket->write(ACK, qstrlen(ACK)); + socket->write(ACK); socket->waitForBytesWritten(1000); socket->waitForDisconnected(1000); // make sure client reads ack delete socket; diff --git a/src/app/qtlocalpeer/qtlockedfile.h b/src/app/qtlocalpeer/qtlockedfile.h index 63d78aaecd5a..3ea32c61a7df 100644 --- a/src/app/qtlocalpeer/qtlockedfile.h +++ b/src/app/qtlocalpeer/qtlockedfile.h @@ -71,8 +71,8 @@ #include #ifdef Q_OS_WIN +#include #include -#include #endif namespace QtLP_Private @@ -105,7 +105,7 @@ namespace QtLP_Private Qt::HANDLE m_writeMutex = nullptr; Qt::HANDLE m_readMutex = nullptr; - QVector m_readMutexes; + QList m_readMutexes; QString m_mutexName; #endif diff --git a/src/app/signalhandler.cpp b/src/app/signalhandler.cpp index f5ef5263c9d5..1116b5a34260 100644 --- a/src/app/signalhandler.cpp +++ b/src/app/signalhandler.cpp @@ -34,7 +34,6 @@ #include #include -#include #ifdef Q_OS_UNIX #include diff --git a/src/app/upgrade.cpp b/src/app/upgrade.cpp index 15e07772425c..5a9d9b896478 100644 --- a/src/app/upgrade.cpp +++ b/src/app/upgrade.cpp @@ -32,6 +32,7 @@ #include #include +#include "base/bittorrent/sharelimitaction.h" #include "base/bittorrent/torrentcontentlayout.h" #include "base/global.h" #include "base/logger.h" @@ -45,7 +46,7 @@ namespace { - const int MIGRATION_VERSION = 6; + const int MIGRATION_VERSION = 8; const QString MIGRATION_VERSION_KEY = u"Meta/MigrationVersion"_s; void exportWebUIHttpsFiles() @@ -437,6 +438,46 @@ namespace settingsStorage->storeValue(key, u"zh_CN"_s); } } + + void migrateShareLimitActionSettings() + { + auto *settingsStorage = SettingsStorage::instance(); + const auto oldKey = u"BitTorrent/Session/MaxRatioAction"_s; + const auto newKey = u"BitTorrent/Session/ShareLimitAction"_s; + const auto value = settingsStorage->loadValue(oldKey); + + switch (value) + { + case 0: + settingsStorage->storeValue(newKey, BitTorrent::ShareLimitAction::Stop); + break; + case 1: + settingsStorage->storeValue(newKey, BitTorrent::ShareLimitAction::Remove); + break; + case 2: + settingsStorage->storeValue(newKey, BitTorrent::ShareLimitAction::EnableSuperSeeding); + break; + case 3: + settingsStorage->storeValue(newKey, BitTorrent::ShareLimitAction::RemoveWithContent); + break; + default: + LogMsg(QCoreApplication::translate("Upgrade", "Invalid value found in configuration file, reverting it to default. Key: \"%1\". Invalid value: \"%2\".") + .arg(oldKey, QString::number(value)), Log::WARNING); + break; + } + + settingsStorage->removeValue(oldKey); + } + + void migrateAddPausedSetting() + { + auto *settingsStorage = SettingsStorage::instance(); + const auto oldKey = u"BitTorrent/Session/AddTorrentPaused"_s; + const auto newKey = u"BitTorrent/Session/AddTorrentStopped"_s; + + settingsStorage->storeValue(newKey, settingsStorage->loadValue(oldKey)); + settingsStorage->removeValue(oldKey); + } } bool upgrade() @@ -475,6 +516,12 @@ bool upgrade() if (version < 6) migrateProxySettings(); + if (version < 7) + migrateShareLimitActionSettings(); + + if (version < 8) + migrateAddPausedSetting(); + version = MIGRATION_VERSION; } diff --git a/src/base/3rdparty/expected.hpp b/src/base/3rdparty/expected.hpp index a1ddc6f0e5f4..305f3abadd69 100644 --- a/src/base/3rdparty/expected.hpp +++ b/src/base/3rdparty/expected.hpp @@ -13,8 +13,8 @@ #define NONSTD_EXPECTED_LITE_HPP #define expected_lite_MAJOR 0 -#define expected_lite_MINOR 6 -#define expected_lite_PATCH 3 +#define expected_lite_MINOR 8 +#define expected_lite_PATCH 0 #define expected_lite_VERSION expected_STRINGIFY(expected_lite_MAJOR) "." expected_STRINGIFY(expected_lite_MINOR) "." expected_STRINGIFY(expected_lite_PATCH) @@ -66,6 +66,21 @@ # define nsel_P0323R 7 #endif +// Monadic operations proposal revisions: +// +// P2505R0: 0 (2021-12-12) +// P2505R1: 1 (2022-02-10) +// P2505R2: 2 (2022-04-15) +// P2505R3: 3 (2022-06-05) +// P2505R4: 4 (2022-06-15) +// P2505R5: 5 (2022-09-20) * +// +// expected-lite uses 5 + +#ifndef nsel_P2505R +# define nsel_P2505R 5 +#endif + // Control presence of C++ exception handling (try and auto discover): #ifndef nsel_CONFIG_NO_EXCEPTIONS @@ -216,8 +231,24 @@ inline in_place_t in_place_index( detail::in_place_index_tag = detail::in_pla namespace nonstd { using std::expected; -// ... -} + using std::unexpected; + using std::bad_expected_access; + using std::unexpect_t; + using std::unexpect; + + //[[deprecated("replace unexpected_type with unexpected")]] + + template< typename E > + using unexpected_type = unexpected; + + // Unconditionally provide make_unexpected(): + + template< typename E> + constexpr auto make_unexpected( E && value ) -> unexpected< typename std::decay::type > + { + return unexpected< typename std::decay::type >( std::forward(value) ); + } +} // namespace nonstd #else // nsel_USES_STD_EXPECTED @@ -316,16 +347,6 @@ namespace nonstd { #define nsel_REQUIRES_A(...) \ , typename std::enable_if< (__VA_ARGS__), void*>::type = nullptr -// Presence of language and library features: - -#ifdef _HAS_CPP0X -# define nsel_HAS_CPP0X _HAS_CPP0X -#else -# define nsel_HAS_CPP0X 0 -#endif - -//#define nsel_CPP11_140 (nsel_CPP11_OR_GREATER || nsel_COMPILER_MSVC_VER >= 1900) - // Clang, GNUC, MSVC warning suppression macros: #ifdef __clang__ @@ -335,20 +356,23 @@ namespace nonstd { #endif // __clang__ #if nsel_COMPILER_MSVC_VERSION >= 140 -# pragma warning( push ) -# define nsel_DISABLE_MSVC_WARNINGS(codes) __pragma( warning(disable: codes) ) +# define nsel_DISABLE_MSVC_WARNINGS(codes) __pragma( warning(push) ) __pragma( warning(disable: codes) ) #else # define nsel_DISABLE_MSVC_WARNINGS(codes) #endif #ifdef __clang__ -# define nsel_RESTORE_WARNINGS() _Pragma("clang diagnostic pop") +# define nsel_RESTORE_WARNINGS() _Pragma("clang diagnostic pop") +# define nsel_RESTORE_MSVC_WARNINGS() #elif defined __GNUC__ -# define nsel_RESTORE_WARNINGS() _Pragma("GCC diagnostic pop") +# define nsel_RESTORE_WARNINGS() _Pragma("GCC diagnostic pop") +# define nsel_RESTORE_MSVC_WARNINGS() #elif nsel_COMPILER_MSVC_VERSION >= 140 -# define nsel_RESTORE_WARNINGS() __pragma( warning( pop ) ) +# define nsel_RESTORE_WARNINGS() __pragma( warning( pop ) ) +# define nsel_RESTORE_MSVC_WARNINGS() nsel_RESTORE_WARNINGS() #else # define nsel_RESTORE_WARNINGS() +# define nsel_RESTORE_MSVC_WARNINGS() #endif // Suppress the following MSVC (GSL) warnings: @@ -356,6 +380,30 @@ namespace nonstd { nsel_DISABLE_MSVC_WARNINGS( 26409 ) +// Presence of language and library features: + +#ifdef _HAS_CPP0X +# define nsel_HAS_CPP0X _HAS_CPP0X +#else +# define nsel_HAS_CPP0X 0 +#endif + +// Presence of language and library features: + +#define nsel_CPP17_000 (nsel_CPP17_OR_GREATER) + +// Presence of C++17 language features: + +#define nsel_HAVE_DEPRECATED nsel_CPP17_000 + +// C++ feature usage: + +#if nsel_HAVE_DEPRECATED +# define nsel_deprecated(msg) [[deprecated(msg)]] +#else +# define nsel_deprecated(msg) /*[[deprecated]]*/ +#endif + // // expected: // @@ -452,8 +500,162 @@ class expected; namespace detail { +#if nsel_P2505R >= 3 +template< typename T > +struct is_expected : std::false_type {}; + +template< typename T, typename E > +struct is_expected< expected< T, E > > : std::true_type {}; +#endif // nsel_P2505R >= 3 + /// discriminated union to hold value or 'error'. +template< typename T, typename E > +class storage_t_noncopy_nonmove_impl +{ + template< typename, typename > friend class nonstd::expected_lite::expected; + +public: + using value_type = T; + using error_type = E; + + // no-op construction + storage_t_noncopy_nonmove_impl() {} + ~storage_t_noncopy_nonmove_impl() {} + + explicit storage_t_noncopy_nonmove_impl( bool has_value ) + : m_has_value( has_value ) + {} + + void construct_value() + { + new( &m_value ) value_type(); + } + + // void construct_value( value_type const & e ) + // { + // new( &m_value ) value_type( e ); + // } + + // void construct_value( value_type && e ) + // { + // new( &m_value ) value_type( std::move( e ) ); + // } + + template< class... Args > + void emplace_value( Args&&... args ) + { + new( &m_value ) value_type( std::forward(args)...); + } + + template< class U, class... Args > + void emplace_value( std::initializer_list il, Args&&... args ) + { + new( &m_value ) value_type( il, std::forward(args)... ); + } + + void destruct_value() + { + m_value.~value_type(); + } + + // void construct_error( error_type const & e ) + // { + // // new( &m_error ) error_type( e ); + // } + + // void construct_error( error_type && e ) + // { + // // new( &m_error ) error_type( std::move( e ) ); + // } + + template< class... Args > + void emplace_error( Args&&... args ) + { + new( &m_error ) error_type( std::forward(args)...); + } + + template< class U, class... Args > + void emplace_error( std::initializer_list il, Args&&... args ) + { + new( &m_error ) error_type( il, std::forward(args)... ); + } + + void destruct_error() + { + m_error.~error_type(); + } + + constexpr value_type const & value() const & + { + return m_value; + } + + value_type & value() & + { + return m_value; + } + + constexpr value_type const && value() const && + { + return std::move( m_value ); + } + + nsel_constexpr14 value_type && value() && + { + return std::move( m_value ); + } + + value_type const * value_ptr() const + { + return &m_value; + } + + value_type * value_ptr() + { + return &m_value; + } + + error_type const & error() const & + { + return m_error; + } + + error_type & error() & + { + return m_error; + } + + constexpr error_type const && error() const && + { + return std::move( m_error ); + } + + nsel_constexpr14 error_type && error() && + { + return std::move( m_error ); + } + + bool has_value() const + { + return m_has_value; + } + + void set_has_value( bool v ) + { + m_has_value = v; + } + +private: + union + { + value_type m_value; + error_type m_error; + }; + + bool m_has_value = false; +}; + template< typename T, typename E > class storage_t_impl { @@ -471,6 +673,11 @@ class storage_t_impl : m_has_value( has_value ) {} + void construct_value() + { + new( &m_value ) value_type(); + } + void construct_value( value_type const & e ) { new( &m_value ) value_type( e ); @@ -684,16 +891,23 @@ struct storage_t_impl template< typename T, typename E, bool isConstructable, bool isMoveable > class storage_t { +public: +}; + +template< typename T, typename E > +class storage_t : public storage_t_noncopy_nonmove_impl +{ public: storage_t() = default; ~storage_t() = default; explicit storage_t( bool has_value ) - : storage_t_impl( has_value ) + : storage_t_noncopy_nonmove_impl( has_value ) {} storage_t( storage_t const & other ) = delete; storage_t( storage_t && other ) = delete; + }; template< typename T, typename E > @@ -832,6 +1046,146 @@ class storage_t : public storage_t_impl } }; +#if nsel_P2505R >= 3 +// C++11 invoke implementation +template< typename > +struct is_reference_wrapper : std::false_type {}; +template< typename T > +struct is_reference_wrapper< std::reference_wrapper< T > > : std::true_type {}; + +template< typename FnT, typename ClassT, typename ObjectT, typename... Args + nsel_REQUIRES_T( + std::is_function::value + && ( std::is_same< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + || std::is_base_of< ClassT, typename std20::remove_cvref< ObjectT >::type >::value ) + ) +> +nsel_constexpr auto invoke_member_function_impl( FnT ClassT::* memfnptr, ObjectT && obj, Args && ... args ) + noexcept( noexcept( (std::forward< ObjectT >( obj ).*memfnptr)( std::forward< Args >( args )... ) ) ) + -> decltype( (std::forward< ObjectT >( obj ).*memfnptr)( std::forward< Args >( args )...) ) +{ + return (std::forward< ObjectT >( obj ).*memfnptr)( std::forward< Args >( args )... ); +} + +template< typename FnT, typename ClassT, typename ObjectT, typename... Args + nsel_REQUIRES_T( + std::is_function::value + && is_reference_wrapper< typename std20::remove_cvref< ObjectT >::type >::value + ) +> +nsel_constexpr auto invoke_member_function_impl( FnT ClassT::* memfnptr, ObjectT && obj, Args && ... args ) + noexcept( noexcept( (obj.get().*memfnptr)( std::forward< Args >( args ) ... ) ) ) + -> decltype( (obj.get().*memfnptr)( std::forward< Args >( args ) ... ) ) +{ + return (obj.get().*memfnptr)( std::forward< Args >( args ) ... ); +} + +template< typename FnT, typename ClassT, typename ObjectT, typename... Args + nsel_REQUIRES_T( + std::is_function::value + && !std::is_same< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + && !std::is_base_of< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + && !is_reference_wrapper< typename std20::remove_cvref< ObjectT >::type >::value + ) +> +nsel_constexpr auto invoke_member_function_impl( FnT ClassT::* memfnptr, ObjectT && obj, Args && ... args ) + noexcept( noexcept( ((*std::forward< ObjectT >( obj )).*memfnptr)( std::forward< Args >( args ) ... ) ) ) + -> decltype( ((*std::forward< ObjectT >( obj )).*memfnptr)( std::forward< Args >( args ) ... ) ) +{ + return ((*std::forward(obj)).*memfnptr)( std::forward< Args >( args ) ... ); +} + +template< typename MemberT, typename ClassT, typename ObjectT + nsel_REQUIRES_T( + std::is_same< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + || std::is_base_of< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + ) +> +nsel_constexpr auto invoke_member_object_impl( MemberT ClassT::* memobjptr, ObjectT && obj ) + noexcept( noexcept( std::forward< ObjectT >( obj ).*memobjptr ) ) + -> decltype( std::forward< ObjectT >( obj ).*memobjptr ) +{ + return std::forward< ObjectT >( obj ).*memobjptr; +} + +template< typename MemberT, typename ClassT, typename ObjectT + nsel_REQUIRES_T( + is_reference_wrapper< typename std20::remove_cvref< ObjectT >::type >::value + ) +> +nsel_constexpr auto invoke_member_object_impl( MemberT ClassT::* memobjptr, ObjectT && obj ) + noexcept( noexcept( obj.get().*memobjptr ) ) + -> decltype( obj.get().*memobjptr ) +{ + return obj.get().*memobjptr; +} + +template< typename MemberT, typename ClassT, typename ObjectT + nsel_REQUIRES_T( + !std::is_same< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + && !std::is_base_of< ClassT, typename std20::remove_cvref< ObjectT >::type >::value + && !is_reference_wrapper< typename std20::remove_cvref< ObjectT >::type >::value + ) +> +nsel_constexpr auto invoke_member_object_impl( MemberT ClassT::* memobjptr, ObjectT && obj ) + noexcept( noexcept( (*std::forward< ObjectT >( obj )).*memobjptr ) ) + -> decltype( (*std::forward< ObjectT >( obj )).*memobjptr ) +{ + return (*std::forward< ObjectT >( obj )).*memobjptr; +} + +template< typename F, typename... Args + nsel_REQUIRES_T( + std::is_member_function_pointer< typename std20::remove_cvref< F >::type >::value + ) +> +nsel_constexpr auto invoke( F && f, Args && ... args ) + noexcept( noexcept( invoke_member_function_impl( std::forward< F >( f ), std::forward< Args >( args ) ... ) ) ) + -> decltype( invoke_member_function_impl( std::forward< F >( f ), std::forward< Args >( args ) ... ) ) +{ + return invoke_member_function_impl( std::forward< F >( f ), std::forward< Args >( args ) ... ); +} + +template< typename F, typename... Args + nsel_REQUIRES_T( + std::is_member_object_pointer< typename std20::remove_cvref< F >::type >::value + ) +> +nsel_constexpr auto invoke( F && f, Args && ... args ) + noexcept( noexcept( invoke_member_object_impl( std::forward< F >( f ), std::forward< Args >( args ) ... ) ) ) + -> decltype( invoke_member_object_impl( std::forward< F >( f ), std::forward< Args >( args ) ... ) ) +{ + return invoke_member_object_impl( std::forward< F >( f ), std::forward< Args >( args ) ... ); +} + +template< typename F, typename... Args + nsel_REQUIRES_T( + !std::is_member_function_pointer< typename std20::remove_cvref< F >::type >::value + && !std::is_member_object_pointer< typename std20::remove_cvref< F >::type >::value + ) +> +nsel_constexpr auto invoke( F && f, Args && ... args ) + noexcept( noexcept( std::forward< F >( f )( std::forward< Args >( args ) ... ) ) ) + -> decltype( std::forward< F >( f )( std::forward< Args >( args ) ... ) ) +{ + return std::forward< F >( f )( std::forward< Args >( args ) ... ); +} + +template< typename F, typename ... Args > +using invoke_result_nocvref_t = typename std20::remove_cvref< decltype( invoke( std::declval< F >(), std::declval< Args >()... ) ) >::type; + +#if nsel_P2505R >= 5 +template< typename F, typename ... Args > +using transform_invoke_result_t = typename std::remove_cv< decltype( invoke( std::declval< F >(), std::declval< Args >()... ) ) >::type; +#else +template< typename F, typename ... Args > +using transform_invoke_result_t = invoke_result_nocvref_t +#endif // nsel_P2505R >= 5 + +template< typename T > +struct valid_expected_value_type : std::integral_constant< bool, std::is_destructible< T >::value && !std::is_reference< T >::value && !std::is_array< T >::value > {}; + +#endif // nsel_P2505R >= 3 } // namespace detail /// x.x.5 Unexpected object type; unexpected_type; C++17 and later can also use aliased type unexpected. @@ -898,7 +1252,7 @@ class unexpected_type ) > constexpr explicit unexpected_type( unexpected_type const & error ) - : m_error( E{ error.value() } ) + : m_error( E{ error.error() } ) {} template< typename E2 @@ -916,7 +1270,7 @@ class unexpected_type ) > constexpr /*non-explicit*/ unexpected_type( unexpected_type const & error ) - : m_error( error.value() ) + : m_error( error.error() ) {} template< typename E2 @@ -934,7 +1288,7 @@ class unexpected_type ) > constexpr explicit unexpected_type( unexpected_type && error ) - : m_error( E{ std::move( error.value() ) } ) + : m_error( E{ std::move( error.error() ) } ) {} template< typename E2 @@ -952,7 +1306,7 @@ class unexpected_type ) > constexpr /*non-explicit*/ unexpected_type( unexpected_type && error ) - : m_error( std::move( error.value() ) ) + : m_error( std::move( error.error() ) ) {} // x.x.5.2.2 Assignment @@ -963,55 +1317,89 @@ class unexpected_type template< typename E2 = E > nsel_constexpr14 unexpected_type & operator=( unexpected_type const & other ) { - unexpected_type{ other.value() }.swap( *this ); + unexpected_type{ other.error() }.swap( *this ); return *this; } template< typename E2 = E > nsel_constexpr14 unexpected_type & operator=( unexpected_type && other ) { - unexpected_type{ std::move( other.value() ) }.swap( *this ); + unexpected_type{ std::move( other.error() ) }.swap( *this ); return *this; } // x.x.5.2.3 Observers - nsel_constexpr14 E & value() & noexcept + nsel_constexpr14 E & error() & noexcept { return m_error; } - constexpr E const & value() const & noexcept + constexpr E const & error() const & noexcept { return m_error; } #if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 - nsel_constexpr14 E && value() && noexcept + nsel_constexpr14 E && error() && noexcept { return std::move( m_error ); } - constexpr E const && value() const && noexcept + constexpr E const && error() const && noexcept { return std::move( m_error ); } #endif - // x.x.5.2.4 Swap + // x.x.5.2.3 Observers - deprecated - template< typename U=E > - nsel_REQUIRES_R( void, - std17::is_swappable::value - ) - swap( unexpected_type & other ) noexcept ( - std17::is_nothrow_swappable::value - ) + nsel_deprecated("replace value() with error()") + + nsel_constexpr14 E & value() & noexcept { - using std::swap; - swap( m_error, other.m_error ); + return m_error; + } + + nsel_deprecated("replace value() with error()") + + constexpr E const & value() const & noexcept + { + return m_error; + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + + nsel_deprecated("replace value() with error()") + + nsel_constexpr14 E && value() && noexcept + { + return std::move( m_error ); + } + + nsel_deprecated("replace value() with error()") + + constexpr E const && value() const && noexcept + { + return std::move( m_error ); + } + +#endif + + // x.x.5.2.4 Swap + + template< typename U=E > + nsel_REQUIRES_R( void, + std17::is_swappable::value + ) + swap( unexpected_type & other ) noexcept ( + std17::is_nothrow_swappable::value + ) + { + using std::swap; + swap( m_error, other.m_error ); } // TODO: ??? unexpected_type: in-class friend operator==, != @@ -1081,7 +1469,7 @@ class unexpected_type< std::exception_ptr > template< typename E1, typename E2 > constexpr bool operator==( unexpected_type const & x, unexpected_type const & y ) { - return x.value() == y.value(); + return x.error() == y.error(); } template< typename E1, typename E2 > @@ -1095,7 +1483,7 @@ constexpr bool operator!=( unexpected_type const & x, unexpected_type co template< typename E > constexpr bool operator<( unexpected_type const & x, unexpected_type const & y ) { - return x.value() < y.value(); + return x.error() < y.error(); } template< typename E > @@ -1340,6 +1728,24 @@ struct error_traits< std::error_code > #endif // nsel_CONFIG_NO_EXCEPTIONS +#if nsel_P2505R >= 3 +namespace detail { + +// from https://en.cppreference.com/w/cpp/utility/expected/unexpected: +// "the type of the unexpected value. The type must not be an array type, a non-object type, a specialization of std::unexpected, or a cv-qualified type." +template< typename T > +struct valid_unexpected_type : std::integral_constant< bool, + std::is_same< T, typename std20::remove_cvref< T >::type >::value + && std::is_object< T >::value + && !std::is_array< T >::value +> {}; + +template< typename T > +struct valid_unexpected_type< unexpected_type< T > > : std::false_type {}; + +} // namespace detail +#endif // nsel_P2505R >= 3 + } // namespace expected_lite // provide nonstd::unexpected_type: @@ -1380,7 +1786,7 @@ class expected nsel_constexpr14 expected() : contained( true ) { - contained.construct_value( value_type() ); + contained.construct_value(); } nsel_constexpr14 expected( expected const & ) = default; @@ -1534,7 +1940,7 @@ class expected nsel_constexpr14 explicit expected( nonstd::unexpected_type const & error ) : contained( false ) { - contained.construct_error( E{ error.value() } ); + contained.construct_error( E{ error.error() } ); } template< typename G = E @@ -1546,7 +1952,7 @@ class expected nsel_constexpr14 /*non-explicit*/ expected( nonstd::unexpected_type const & error ) : contained( false ) { - contained.construct_error( error.value() ); + contained.construct_error( error.error() ); } template< typename G = E @@ -1558,7 +1964,7 @@ class expected nsel_constexpr14 explicit expected( nonstd::unexpected_type && error ) : contained( false ) { - contained.construct_error( E{ std::move( error.value() ) } ); + contained.construct_error( E{ std::move( error.error() ) } ); } template< typename G = E @@ -1570,7 +1976,7 @@ class expected nsel_constexpr14 /*non-explicit*/ expected( nonstd::unexpected_type && error ) : contained( false ) { - contained.construct_error( std::move( error.value() ) ); + contained.construct_error( std::move( error.error() ) ); } // in-place construction, value @@ -1675,7 +2081,7 @@ class expected > expected & operator=( nonstd::unexpected_type const & error ) { - expected( unexpect, error.value() ).swap( *this ); + expected( unexpect, error.error() ).swap( *this ); return *this; } @@ -1688,7 +2094,7 @@ class expected > expected & operator=( nonstd::unexpected_type && error ) { - expected( unexpect, std::move( error.value() ) ).swap( *this ); + expected( unexpect, std::move( error.error() ) ).swap( *this ); return *this; } @@ -1791,6 +2197,8 @@ class expected return contained.has_value(); } + nsel_DISABLE_MSVC_WARNINGS( 4702 ) // warning C4702: unreachable code, see issue 65. + constexpr value_type const & value() const & { return has_value() @@ -1804,6 +2212,7 @@ class expected ? ( contained.value() ) : ( error_traits::rethrow( contained.error() ), contained.value() ); } + nsel_RESTORE_MSVC_WARNINGS() #if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 @@ -1885,6 +2294,316 @@ class expected : static_cast( std::forward( v ) ); } +#if nsel_P2505R >= 4 + template< typename G = E + nsel_REQUIRES_T( + std::is_copy_constructible< E >::value + && std::is_convertible< G, E >::value + ) + > + nsel_constexpr error_type error_or( G && e ) const & + { + return has_value() + ? static_cast< E >( std::forward< G >( e ) ) + : contained.error(); + } + + template< typename G = E + nsel_REQUIRES_T( + std::is_move_constructible< E >::value + && std::is_convertible< G, E >::value + ) + > + nsel_constexpr14 error_type error_or( G && e ) && + { + return has_value() + ? static_cast< E >( std::forward< G >( e ) ) + : std::move( contained.error() ); + } +#endif // nsel_P2505R >= 4 + +#if nsel_P2505R >= 3 + // Monadic operations (P2505) + template< typename F + nsel_REQUIRES_T( + detail::is_expected < detail::invoke_result_nocvref_t< F, value_type & > > ::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, value_type & >::error_type, error_type >::value + && std::is_constructible< error_type, error_type & >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F, value_type & > and_then( F && f ) & + { + return has_value() + ? detail::invoke_result_nocvref_t< F, value_type & >( detail::invoke( std::forward< F >( f ), value() ) ) + : detail::invoke_result_nocvref_t< F, value_type & >( unexpect, error() ); + } + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, const value_type & >::error_type, error_type >::value + && std::is_constructible< error_type, const error_type & >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F, const value_type & > and_then( F && f ) const & + { + return has_value() + ? detail::invoke_result_nocvref_t< F, const value_type & >( detail::invoke( std::forward< F >( f ), value() ) ) + : detail::invoke_result_nocvref_t< F, const value_type & >( unexpect, error() ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, value_type && >::error_type, error_type >::value + && std::is_constructible< error_type, error_type && >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F, value_type && > and_then( F && f ) && + { + return has_value() + ? detail::invoke_result_nocvref_t< F, value_type && >( detail::invoke( std::forward< F >( f ), std::move( value() ) ) ) + : detail::invoke_result_nocvref_t< F, value_type && >( unexpect, std::move( error() ) ); + } + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, const value_type & >::error_type, error_type >::value + && std::is_constructible< error_type, const error_type && >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F, const value_type && > and_then( F && f ) const && + { + return has_value() + ? detail::invoke_result_nocvref_t< F, const value_type && >( detail::invoke( std::forward< F >( f ), std::move( value() ) ) ) + : detail::invoke_result_nocvref_t< F, const value_type && >( unexpect, std::move( error() ) ); + } +#endif + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, error_type & >::value_type, value_type >::value + && std::is_constructible< value_type, value_type & >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F, error_type & > or_else( F && f ) & + { + return has_value() + ? detail::invoke_result_nocvref_t< F, error_type & >( value() ) + : detail::invoke_result_nocvref_t< F, error_type & >( detail::invoke( std::forward< F >( f ), error() ) ); + } + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, const error_type & >::value_type, value_type >::value + && std::is_constructible< value_type, const value_type & >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F, const error_type & > or_else( F && f ) const & + { + return has_value() + ? detail::invoke_result_nocvref_t< F, const error_type & >( value() ) + : detail::invoke_result_nocvref_t< F, const error_type & >( detail::invoke( std::forward< F >( f ), error() ) ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, error_type && >::value_type, value_type >::value + && std::is_constructible< value_type, value_type && >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F, error_type && > or_else( F && f ) && + { + return has_value() + ? detail::invoke_result_nocvref_t< F, error_type && >( std::move( value() ) ) + : detail::invoke_result_nocvref_t< F, error_type && >( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F, const error_type && >::value_type, value_type >::value + && std::is_constructible< value_type, const value_type && >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F, const error_type && > or_else( F && f ) const && + { + return has_value() + ? detail::invoke_result_nocvref_t< F, const error_type && >( std::move( value() ) ) + : detail::invoke_result_nocvref_t< F, const error_type && >( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } +#endif + + template::value + && !std::is_void< detail::transform_invoke_result_t< F, value_type & > >::value + && detail::valid_expected_value_type< detail::transform_invoke_result_t< F, value_type & > >::value + ) + > + nsel_constexpr14 expected< detail::transform_invoke_result_t< F, value_type & >, error_type > transform( F && f ) & + { + return has_value() + ? expected< detail::transform_invoke_result_t< F, value_type & >, error_type >( detail::invoke( std::forward< F >( f ), **this ) ) + : make_unexpected( error() ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F, value_type & > >::value + ) + > + nsel_constexpr14 expected< void, error_type > transform( F && f ) & + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ), **this ), expected< void, error_type >() ) + : make_unexpected( error() ); + } + + template::value + && !std::is_void< detail::transform_invoke_result_t< F, const value_type & > >::value + && detail::valid_expected_value_type< detail::transform_invoke_result_t< F, const value_type & > >::value + ) + > + nsel_constexpr expected< detail::transform_invoke_result_t< F, const value_type & >, error_type > transform( F && f ) const & + { + return has_value() + ? expected< detail::transform_invoke_result_t< F, const value_type & >, error_type >( detail::invoke( std::forward< F >( f ), **this ) ) + : make_unexpected( error() ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F, const value_type & > >::value + ) + > + nsel_constexpr expected< void, error_type > transform( F && f ) const & + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ), **this ), expected< void, error_type >() ) + : make_unexpected( error() ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template::value + && !std::is_void< detail::transform_invoke_result_t< F, value_type && > >::value + && detail::valid_expected_value_type< detail::transform_invoke_result_t< F, value_type && > >::value + ) + > + nsel_constexpr14 expected< detail::transform_invoke_result_t< F, value_type && >, error_type > transform( F && f ) && + { + return has_value() + ? expected< detail::transform_invoke_result_t< F, value_type && >, error_type >( detail::invoke( std::forward< F >( f ), std::move( **this ) ) ) + : make_unexpected( std::move( error() ) ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F, value_type && > >::value + ) + > + nsel_constexpr14 expected< void, error_type > transform( F && f ) && + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ), **this ), expected< void, error_type >() ) + : make_unexpected( std::move( error() ) ); + } + + template::value + && !std::is_void< detail::transform_invoke_result_t< F, const value_type && > >::value + && detail::valid_expected_value_type< detail::transform_invoke_result_t< F, const value_type && > >::value + ) + > + nsel_constexpr expected< detail::transform_invoke_result_t< F, const value_type && >, error_type > transform( F && f ) const && + { + return has_value() + ? expected< detail::transform_invoke_result_t< F, const value_type && >, error_type >( detail::invoke( std::forward< F >( f ), std::move( **this ) ) ) + : make_unexpected( std::move( error() ) ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F, const value_type && > >::value + ) + > + nsel_constexpr expected< void, error_type > transform( F && f ) const && + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ), **this ), expected< void, error_type >() ) + : make_unexpected( std::move( error() ) ); + } +#endif + + template >::value + && std::is_constructible< value_type, value_type & >::value + ) + > + nsel_constexpr14 expected< value_type, detail::transform_invoke_result_t< F, error_type & > > transform_error( F && f ) & + { + return has_value() + ? expected< value_type, detail::transform_invoke_result_t< F, error_type & > >( in_place, **this ) + : make_unexpected( detail::invoke( std::forward< F >( f ), error() ) ); + } + + template >::value + && std::is_constructible< value_type, const value_type & >::value + ) + > + nsel_constexpr expected< value_type, detail::transform_invoke_result_t< F, const error_type & > > transform_error( F && f ) const & + { + return has_value() + ? expected< value_type, detail::transform_invoke_result_t< F, const error_type & > >( in_place, **this ) + : make_unexpected( detail::invoke( std::forward< F >( f ), error() ) ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template >::value + && std::is_constructible< value_type, value_type && >::value + ) + > + nsel_constexpr14 expected< value_type, detail::transform_invoke_result_t< F, error_type && > > transform_error( F && f ) && + { + return has_value() + ? expected< value_type, detail::transform_invoke_result_t< F, error_type && > >( in_place, std::move( **this ) ) + : make_unexpected( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } + + template >::value + && std::is_constructible< value_type, const value_type && >::value + ) + > + nsel_constexpr expected< value_type, detail::transform_invoke_result_t< F, const error_type && > > transform_error( F && f ) const && + { + return has_value() + ? expected< value_type, detail::transform_invoke_result_t< F, const error_type && > >( in_place, std::move( **this ) ) + : make_unexpected( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } +#endif +#endif // nsel_P2505R >= 3 // unwrap() // template @@ -1961,7 +2680,7 @@ class expected nsel_constexpr14 explicit expected( nonstd::unexpected_type const & error ) : contained( false ) { - contained.construct_error( E{ error.value() } ); + contained.construct_error( E{ error.error() } ); } template< typename G = E @@ -1972,7 +2691,7 @@ class expected nsel_constexpr14 /*non-explicit*/ expected( nonstd::unexpected_type const & error ) : contained( false ) { - contained.construct_error( error.value() ); + contained.construct_error( error.error() ); } template< typename G = E @@ -1983,7 +2702,7 @@ class expected nsel_constexpr14 explicit expected( nonstd::unexpected_type && error ) : contained( false ) { - contained.construct_error( E{ std::move( error.value() ) } ); + contained.construct_error( E{ std::move( error.error() ) } ); } template< typename G = E @@ -1994,7 +2713,7 @@ class expected nsel_constexpr14 /*non-explicit*/ expected( nonstd::unexpected_type && error ) : contained( false ) { - contained.construct_error( std::move( error.value() ) ); + contained.construct_error( std::move( error.error() ) ); } template< typename... Args @@ -2131,6 +2850,305 @@ class expected return ! has_value() && std::is_base_of< Ex, ContainedEx>::value; } +#if nsel_P2505R >= 4 + template< typename G = E + nsel_REQUIRES_T( + std::is_copy_constructible< E >::value + && std::is_convertible< G, E >::value + ) + > + nsel_constexpr error_type error_or( G && e ) const & + { + return has_value() + ? static_cast< E >( std::forward< G >( e ) ) + : contained.error(); + } + + template< typename G = E + nsel_REQUIRES_T( + std::is_move_constructible< E >::value + && std::is_convertible< G, E >::value + ) + > + nsel_constexpr14 error_type error_or( G && e ) && + { + return has_value() + ? static_cast< E >( std::forward< G >( e ) ) + : std::move( contained.error() ); + } +#endif // nsel_P2505R >= 4 + +#if nsel_P2505R >= 3 + // Monadic operations (P2505) + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F >::error_type, error_type >::value + && std::is_constructible< error_type, error_type & >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F > and_then( F && f ) & + { + return has_value() + ? detail::invoke_result_nocvref_t< F >( detail::invoke( std::forward< F >( f ) ) ) + : detail::invoke_result_nocvref_t< F >( unexpect, error() ); + } + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F >::error_type, error_type >::value + && std::is_constructible< error_type, const error_type & >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F > and_then( F && f ) const & + { + return has_value() + ? detail::invoke_result_nocvref_t< F >( detail::invoke( std::forward< F >( f ) ) ) + : detail::invoke_result_nocvref_t< F >( unexpect, error() ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F >::error_type, error_type >::value + && std::is_constructible< error_type, error_type && >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F > and_then( F && f ) && + { + return has_value() + ? detail::invoke_result_nocvref_t< F >( detail::invoke( std::forward< F >( f ) ) ) + : detail::invoke_result_nocvref_t< F >( unexpect, std::move( error() ) ); + } + + template >::value + && std::is_same< typename detail::invoke_result_nocvref_t< F >::error_type, error_type >::value + && std::is_constructible< error_type, const error_type && >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F > and_then( F && f ) const && + { + return has_value() + ? detail::invoke_result_nocvref_t< F >( detail::invoke( std::forward< F >( f ) ) ) + : detail::invoke_result_nocvref_t< F >( unexpect, std::move( error() ) ); + } +#endif + + template >::value + && std::is_void< typename detail::invoke_result_nocvref_t< F, error_type & >::value_type >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F, error_type & > or_else( F && f ) & + { + return has_value() + ? detail::invoke_result_nocvref_t< F, error_type & >() + : detail::invoke_result_nocvref_t< F, error_type & >( detail::invoke( std::forward< F >( f ), error() ) ); + } + + template >::value + && std::is_void< typename detail::invoke_result_nocvref_t< F, const error_type & >::value_type >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F, const error_type & > or_else( F && f ) const & + { + return has_value() + ? detail::invoke_result_nocvref_t< F, const error_type & >() + : detail::invoke_result_nocvref_t< F, const error_type & >( detail::invoke( std::forward< F >( f ), error() ) ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template >::value + && std::is_void< typename detail::invoke_result_nocvref_t< F, error_type && >::value_type >::value + ) + > + nsel_constexpr14 detail::invoke_result_nocvref_t< F, error_type && > or_else( F && f ) && + { + return has_value() + ? detail::invoke_result_nocvref_t< F, error_type && >() + : detail::invoke_result_nocvref_t< F, error_type && >( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } + + template >::value + && std::is_void< typename detail::invoke_result_nocvref_t< F, const error_type && >::value_type >::value + ) + > + nsel_constexpr detail::invoke_result_nocvref_t< F, const error_type && > or_else( F && f ) const && + { + return has_value() + ? detail::invoke_result_nocvref_t< F, const error_type && >() + : detail::invoke_result_nocvref_t< F, const error_type && >( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } +#endif + + template::value + && !std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr14 expected< detail::transform_invoke_result_t< F >, error_type > transform( F && f ) & + { + return has_value() + ? expected< detail::transform_invoke_result_t< F >, error_type >( detail::invoke( std::forward< F >( f ) ) ) + : make_unexpected( error() ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr14 expected< void, error_type > transform( F && f ) & + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ) ), expected< void, error_type >() ) + : make_unexpected( error() ); + } + + template::value + && !std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr expected< detail::transform_invoke_result_t< F >, error_type > transform( F && f ) const & + { + return has_value() + ? expected< detail::transform_invoke_result_t< F >, error_type >( detail::invoke( std::forward< F >( f ) ) ) + : make_unexpected( error() ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr expected< void, error_type > transform( F && f ) const & + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ) ), expected< void, error_type >() ) + : make_unexpected( error() ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template::value + && !std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr14 expected< detail::transform_invoke_result_t< F >, error_type > transform( F && f ) && + { + return has_value() + ? expected< detail::transform_invoke_result_t< F >, error_type >( detail::invoke( std::forward< F >( f ) ) ) + : make_unexpected( error() ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr14 expected< void, error_type > transform( F && f ) && + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ) ), expected< void, error_type >() ) + : make_unexpected( error() ); + } + + template::value + && !std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr expected< detail::transform_invoke_result_t< F >, error_type > transform( F && f ) const && + { + return has_value() + ? expected< detail::transform_invoke_result_t< F >, error_type >( detail::invoke( std::forward< F >( f ) ) ) + : make_unexpected( error() ); + } + + template::value + && std::is_void< detail::transform_invoke_result_t< F > >::value + ) + > + nsel_constexpr expected< void, error_type > transform( F && f ) const && + { + return has_value() + ? ( detail::invoke( std::forward< F >( f ) ), expected< void, error_type >() ) + : make_unexpected( error() ); + } +#endif + + template >::value + ) + > + nsel_constexpr14 expected< void, detail::transform_invoke_result_t< F, error_type & > > transform_error( F && f ) & + { + return has_value() + ? expected< void, detail::transform_invoke_result_t< F, error_type & > >() + : make_unexpected( detail::invoke( std::forward< F >( f ), error() ) ); + } + + template >::value + ) + > + nsel_constexpr expected< void, detail::transform_invoke_result_t< F, const error_type & > > transform_error( F && f ) const & + { + return has_value() + ? expected< void, detail::transform_invoke_result_t< F, const error_type & > >() + : make_unexpected( detail::invoke( std::forward< F >( f ), error() ) ); + } + +#if !nsel_COMPILER_GNUC_VERSION || nsel_COMPILER_GNUC_VERSION >= 490 + template >::value + ) + > + nsel_constexpr14 expected< void, detail::transform_invoke_result_t< F, error_type && > > transform_error( F && f ) && + { + return has_value() + ? expected< void, detail::transform_invoke_result_t< F, error_type && > >() + : make_unexpected( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } + + template >::value + ) + > + nsel_constexpr expected< void, detail::transform_invoke_result_t< F, const error_type && > > transform_error( F && f ) const && + { + return has_value() + ? expected< void, detail::transform_invoke_result_t< F, const error_type && > >() + : make_unexpected( detail::invoke( std::forward< F >( f ), std::move( error() ) ) ); + } +#endif +#endif // nsel_P2505R >= 3 + // template constexpr 'see below' unwrap() const&; // // template 'see below' unwrap() &&; diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt index 0b517c7fb819..5d2f9cf0e3be 100644 --- a/src/base/CMakeLists.txt +++ b/src/base/CMakeLists.txt @@ -7,6 +7,7 @@ add_library(qbt_base STATIC asyncfilestorage.h bittorrent/abstractfilestorage.h bittorrent/addtorrentparams.h + bittorrent/announcetimepoint.h bittorrent/bandwidthscheduler.h bittorrent/bencoderesumedatastorage.h bittorrent/cachestatus.h @@ -14,6 +15,7 @@ add_library(qbt_base STATIC bittorrent/common.h bittorrent/customstorage.h bittorrent/dbresumedatastorage.h + bittorrent/downloadpathoption.h bittorrent/downloadpriority.h bittorrent/extensiondata.h bittorrent/filesearcher.h @@ -31,16 +33,24 @@ add_library(qbt_base STATIC bittorrent/session.h bittorrent/sessionimpl.h bittorrent/sessionstatus.h + bittorrent/sharelimitaction.h bittorrent/speedmonitor.h + bittorrent/sslparameters.h bittorrent/torrent.h bittorrent/torrentcontenthandler.h bittorrent/torrentcontentlayout.h + bittorrent/torrentcontentremoveoption.h + bittorrent/torrentcontentremover.h + bittorrent/torrentcreationmanager.h + bittorrent/torrentcreationtask.h bittorrent/torrentcreator.h bittorrent/torrentdescriptor.h bittorrent/torrentimpl.h bittorrent/torrentinfo.h bittorrent/tracker.h bittorrent/trackerentry.h + bittorrent/trackerentrystatus.h + concepts/explicitlyconvertibleto.h concepts/stringable.h digest32.h exceptions.h @@ -53,7 +63,6 @@ add_library(qbt_base STATIC http/responsegenerator.h http/server.h http/types.h - iconprovider.h indexrange.h interfaces/iapplication.h logger.h @@ -85,6 +94,7 @@ add_library(qbt_base STATIC search/searchhandler.h search/searchpluginmanager.h settingsstorage.h + tag.h tagset.h torrentfileguard.h torrentfileswatcher.h @@ -93,15 +103,18 @@ add_library(qbt_base STATIC unicodestrings.h utils/bytearray.h utils/compare.h + utils/datetime.h utils/foreignapps.h utils/fs.h utils/gzip.h utils/io.h utils/misc.h utils/net.h + utils/number.h utils/os.h utils/password.h utils/random.h + utils/sslkey.h utils/string.h utils/thread.h utils/version.h @@ -118,6 +131,7 @@ add_library(qbt_base STATIC bittorrent/categoryoptions.cpp bittorrent/customstorage.cpp bittorrent/dbresumedatastorage.cpp + bittorrent/downloadpathoption.cpp bittorrent/downloadpriority.cpp bittorrent/filesearcher.cpp bittorrent/filterparserthread.cpp @@ -131,14 +145,19 @@ add_library(qbt_base STATIC bittorrent/resumedatastorage.cpp bittorrent/sessionimpl.cpp bittorrent/speedmonitor.cpp + bittorrent/sslparameters.cpp bittorrent/torrent.cpp bittorrent/torrentcontenthandler.cpp + bittorrent/torrentcontentremover.cpp + bittorrent/torrentcreationmanager.cpp + bittorrent/torrentcreationtask.cpp bittorrent/torrentcreator.cpp bittorrent/torrentdescriptor.cpp bittorrent/torrentimpl.cpp bittorrent/torrentinfo.cpp bittorrent/tracker.cpp bittorrent/trackerentry.cpp + bittorrent/trackerentrystatus.cpp exceptions.cpp http/connection.cpp http/httperror.cpp @@ -146,7 +165,6 @@ add_library(qbt_base STATIC http/responsebuilder.cpp http/responsegenerator.cpp http/server.cpp - iconprovider.cpp logger.cpp net/dnsupdater.cpp net/downloadhandlerimpl.cpp @@ -174,21 +192,25 @@ add_library(qbt_base STATIC search/searchhandler.cpp search/searchpluginmanager.cpp settingsstorage.cpp + tag.cpp tagset.cpp torrentfileguard.cpp torrentfileswatcher.cpp torrentfilter.cpp utils/bytearray.cpp utils/compare.cpp + utils/datetime.cpp utils/foreignapps.cpp utils/fs.cpp utils/gzip.cpp utils/io.cpp utils/misc.cpp utils/net.cpp + utils/number.cpp utils/os.cpp utils/password.cpp utils/random.cpp + utils/sslkey.cpp utils/string.cpp utils/thread.cpp utils/version.cpp @@ -196,11 +218,16 @@ add_library(qbt_base STATIC target_link_libraries(qbt_base PRIVATE - OpenSSL::Crypto OpenSSL::SSL + OpenSSL::Crypto + OpenSSL::SSL ZLIB::ZLIB PUBLIC LibtorrentRasterbar::torrent-rasterbar - Qt::Core Qt::Network Qt::Sql Qt::Xml + Qt::Core + Qt::CorePrivate + Qt::Network + Qt::Sql + Qt::Xml qbt_common_cfg ) @@ -215,7 +242,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") ${IOKit_LIBRARY} ) elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") - target_link_libraries(qbt_base PRIVATE Iphlpapi) + target_link_libraries(qbt_base PRIVATE Iphlpapi PowrProf) endif() if (NOT GUI) diff --git a/src/base/addtorrentmanager.cpp b/src/base/addtorrentmanager.cpp index a094dbd85acc..ce446a72b739 100644 --- a/src/base/addtorrentmanager.cpp +++ b/src/base/addtorrentmanager.cpp @@ -157,10 +157,36 @@ void AddTorrentManager::handleAddTorrentFailed(const QString &source, const QStr emit addTorrentFailed(source, reason); } -void AddTorrentManager::handleDuplicateTorrent(const QString &source, BitTorrent::Torrent *torrent, const QString &message) +void AddTorrentManager::handleDuplicateTorrent(const QString &source + , const BitTorrent::TorrentDescriptor &torrentDescr, BitTorrent::Torrent *existingTorrent) { + const bool hasMetadata = torrentDescr.info().has_value(); + if (hasMetadata) + { + // Trying to set metadata to existing torrent in case if it has none + existingTorrent->setMetadata(*torrentDescr.info()); + } + + const bool isPrivate = existingTorrent->isPrivate() || (hasMetadata && torrentDescr.info()->isPrivate()); + QString message; + if (!btSession()->isMergeTrackersEnabled()) + { + message = tr("Merging of trackers is disabled"); + } + else if (isPrivate) + { + message = tr("Trackers cannot be merged because it is a private torrent"); + } + else + { + // merge trackers and web seeds + existingTorrent->addTrackers(torrentDescr.trackers()); + existingTorrent->addUrlSeeds(torrentDescr.urlSeeds()); + message = tr("Trackers are merged from new source"); + } + LogMsg(tr("Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3") - .arg(source, torrent->name(), message)); + .arg(source, existingTorrent->name(), message)); emit addTorrentFailed(source, message); } @@ -169,11 +195,9 @@ void AddTorrentManager::setTorrentFileGuard(const QString &source, std::shared_p m_guardedTorrentFiles.emplace(source, std::move(torrentFileGuard)); } -void AddTorrentManager::releaseTorrentFileGuard(const QString &source) +std::shared_ptr AddTorrentManager::releaseTorrentFileGuard(const QString &source) { - auto torrentFileGuard = m_guardedTorrentFiles.take(source); - if (torrentFileGuard) - torrentFileGuard->setAutoRemove(false); + return m_guardedTorrentFiles.take(source); } bool AddTorrentManager::processTorrent(const QString &source, const BitTorrent::TorrentDescriptor &torrentDescr @@ -184,32 +208,7 @@ bool AddTorrentManager::processTorrent(const QString &source, const BitTorrent:: if (BitTorrent::Torrent *torrent = btSession()->findTorrent(infoHash)) { // a duplicate torrent is being added - - const bool hasMetadata = torrentDescr.info().has_value(); - if (hasMetadata) - { - // Trying to set metadata to existing torrent in case if it has none - torrent->setMetadata(*torrentDescr.info()); - } - - if (!btSession()->isMergeTrackersEnabled()) - { - handleDuplicateTorrent(source, torrent, tr("Merging of trackers is disabled")); - return false; - } - - const bool isPrivate = torrent->isPrivate() || (hasMetadata && torrentDescr.info()->isPrivate()); - if (isPrivate) - { - handleDuplicateTorrent(source, torrent, tr("Trackers cannot be merged because it is a private torrent")); - return false; - } - - // merge trackers and web seeds - torrent->addTrackers(torrentDescr.trackers()); - torrent->addUrlSeeds(torrentDescr.urlSeeds()); - - handleDuplicateTorrent(source, torrent, tr("Trackers are merged from new source")); + handleDuplicateTorrent(source, torrentDescr, torrent); return false; } diff --git a/src/base/addtorrentmanager.h b/src/base/addtorrentmanager.h index ef31ae4da12f..0e2fc6f497b6 100644 --- a/src/base/addtorrentmanager.h +++ b/src/base/addtorrentmanager.h @@ -72,9 +72,9 @@ class AddTorrentManager : public ApplicationComponent bool addTorrentToSession(const QString &source, const BitTorrent::TorrentDescriptor &torrentDescr , const BitTorrent::AddTorrentParams &addTorrentParams); void handleAddTorrentFailed(const QString &source, const QString &reason); - void handleDuplicateTorrent(const QString &source, BitTorrent::Torrent *torrent, const QString &message); + void handleDuplicateTorrent(const QString &source, const BitTorrent::TorrentDescriptor &torrentDescr, BitTorrent::Torrent *existingTorrent); void setTorrentFileGuard(const QString &source, std::shared_ptr torrentFileGuard); - void releaseTorrentFileGuard(const QString &source); + std::shared_ptr releaseTorrentFileGuard(const QString &source); private: void onDownloadFinished(const Net::DownloadResult &result); diff --git a/src/base/asyncfilestorage.cpp b/src/base/asyncfilestorage.cpp index 6424b18623d9..ba96aa09f47a 100644 --- a/src/base/asyncfilestorage.cpp +++ b/src/base/asyncfilestorage.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2017 Vladimir Golovnev + * Copyright (C) 2017-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -34,31 +34,56 @@ #include "base/utils/fs.h" #include "base/utils/io.h" +QHash> AsyncFileStorage::m_reservedPaths; +QReadWriteLock AsyncFileStorage::m_reservedPathsLock; + AsyncFileStorage::AsyncFileStorage(const Path &storageFolderPath, QObject *parent) : QObject(parent) , m_storageDir(storageFolderPath) - , m_lockFile((m_storageDir / Path(u"storage.lock"_s)).data()) { Q_ASSERT(m_storageDir.isAbsolute()); - if (!Utils::Fs::mkpath(m_storageDir)) - throw AsyncFileStorageError(tr("Could not create directory '%1'.").arg(m_storageDir.toString())); + const Path lockFilePath = m_storageDir / Path(u"storage.lock"_s); - // TODO: This folder locking approach does not work for UNIX systems. Implement it. - if (!m_lockFile.open(QFile::WriteOnly)) - throw AsyncFileStorageError(m_lockFile.errorString()); -} + { + const QReadLocker readLocker {&m_reservedPathsLock}; + m_lockFile = m_reservedPaths.value(lockFilePath).lock(); + } -AsyncFileStorage::~AsyncFileStorage() -{ - m_lockFile.close(); - m_lockFile.remove(); + if (!m_lockFile) + { + const QWriteLocker writeLocker {&m_reservedPathsLock}; + if (std::weak_ptr &lockFile = m_reservedPaths[lockFilePath]; lockFile.expired()) [[likely]] + { + if (!Utils::Fs::mkpath(m_storageDir)) + throw AsyncFileStorageError(tr("Could not create directory '%1'.").arg(m_storageDir.toString())); + + auto lockFileDeleter = [](QFile *file) + { + file->close(); + file->remove(); + delete file; + }; + m_lockFile = std::shared_ptr(new QFile(lockFilePath.data()), std::move(lockFileDeleter)); + + // TODO: This folder locking approach does not work for UNIX systems. Implement it. + if (!m_lockFile->open(QFile::WriteOnly)) + throw AsyncFileStorageError(m_lockFile->errorString()); + + lockFile = m_lockFile; + } + else + { + m_lockFile = lockFile.lock(); + } + } } +AsyncFileStorage::~AsyncFileStorage() = default; + void AsyncFileStorage::store(const Path &filePath, const QByteArray &data) { - QMetaObject::invokeMethod(this, [this, data, filePath]() { store_impl(filePath, data); } - , Qt::QueuedConnection); + QMetaObject::invokeMethod(this, [this, data, filePath] { store_impl(filePath, data); }, Qt::QueuedConnection); } Path AsyncFileStorage::storageDir() const diff --git a/src/base/asyncfilestorage.h b/src/base/asyncfilestorage.h index 2943ee2125cd..47937de1e7d1 100644 --- a/src/base/asyncfilestorage.h +++ b/src/base/asyncfilestorage.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2017 Vladimir Golovnev + * Copyright (C) 2017-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,19 +28,23 @@ #pragma once +#include + #include +#include #include +#include #include "base/exceptions.h" #include "base/path.h" -class AsyncFileStorageError : public RuntimeError +class AsyncFileStorageError final : public RuntimeError { public: using RuntimeError::RuntimeError; }; -class AsyncFileStorage : public QObject +class AsyncFileStorage final : public QObject { Q_OBJECT Q_DISABLE_COPY_MOVE(AsyncFileStorage) @@ -60,5 +64,8 @@ class AsyncFileStorage : public QObject Q_INVOKABLE void store_impl(const Path &fileName, const QByteArray &data); Path m_storageDir; - QFile m_lockFile; + std::shared_ptr m_lockFile; + + static QHash> m_reservedPaths; + static QReadWriteLock m_reservedPathsLock; }; diff --git a/src/base/bittorrent/abstractfilestorage.cpp b/src/base/bittorrent/abstractfilestorage.cpp index c55ef8e52b6f..ccd501c5b179 100644 --- a/src/base/bittorrent/abstractfilestorage.cpp +++ b/src/base/bittorrent/abstractfilestorage.cpp @@ -30,7 +30,7 @@ #include #include -#include +#include #include "base/exceptions.h" #include "base/path.h" @@ -71,7 +71,7 @@ void BitTorrent::AbstractFileStorage::renameFolder(const Path &oldFolderPath, co if (newFolderPath.isAbsolute()) throw RuntimeError(tr("Absolute path isn't allowed: '%1'.").arg(newFolderPath.toString())); - QVector renamingFileIndexes; + QList renamingFileIndexes; renamingFileIndexes.reserve(filesCount()); for (int i = 0; i < filesCount(); ++i) diff --git a/src/base/bittorrent/addtorrentparams.cpp b/src/base/bittorrent/addtorrentparams.cpp index e78939232c8e..d284b36d36ea 100644 --- a/src/base/bittorrent/addtorrentparams.cpp +++ b/src/base/bittorrent/addtorrentparams.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,12 +28,11 @@ #include "addtorrentparams.h" -#include - #include #include #include +#include "base/utils/sslkey.h" #include "base/utils/string.h" const QString PARAM_CATEGORY = u"category"_s; @@ -44,6 +43,7 @@ const QString PARAM_DOWNLOADPATH = u"download_path"_s; const QString PARAM_OPERATINGMODE = u"operating_mode"_s; const QString PARAM_QUEUETOP = u"add_to_top_of_queue"_s; const QString PARAM_STOPPED = u"stopped"_s; +const QString PARAM_STOPCONDITION = u"stop_condition"_s; const QString PARAM_SKIPCHECKING = u"skip_checking"_s; const QString PARAM_CONTENTLAYOUT = u"content_layout"_s; const QString PARAM_AUTOTMM = u"use_auto_tmm"_s; @@ -51,7 +51,11 @@ const QString PARAM_UPLOADLIMIT = u"upload_limit"_s; const QString PARAM_DOWNLOADLIMIT = u"download_limit"_s; const QString PARAM_SEEDINGTIMELIMIT = u"seeding_time_limit"_s; const QString PARAM_INACTIVESEEDINGTIMELIMIT = u"inactive_seeding_time_limit"_s; +const QString PARAM_SHARELIMITACTION = u"share_limit_action"_s; const QString PARAM_RATIOLIMIT = u"ratio_limit"_s; +const QString PARAM_SSL_CERTIFICATE = u"ssl_certificate"_s; +const QString PARAM_SSL_PRIVATEKEY = u"ssl_private_key"_s; +const QString PARAM_SSL_DHPARAMS = u"ssl_dh_params"_s; namespace { @@ -59,7 +63,7 @@ namespace { TagSet tags; for (const QJsonValue &jsonVal : jsonArr) - tags.insert(jsonVal.toString()); + tags.insert(Tag(jsonVal.toString())); return tags; } @@ -67,8 +71,8 @@ namespace QJsonArray serializeTagSet(const TagSet &tags) { QJsonArray arr; - for (const QString &tag : tags) - arr.append(tag); + for (const Tag &tag : tags) + arr.append(tag.toString()); return arr; } @@ -93,75 +97,76 @@ namespace } template - Enum getEnum(const QJsonObject &jsonObj, const QString &key) + Enum getEnum(const QJsonObject &jsonObj, const QString &key, const Enum defaultValue = {}) { const QJsonValue jsonVal = jsonObj.value(key); - return Utils::String::toEnum(jsonVal.toString(), {}); + return Utils::String::toEnum(jsonVal.toString(), defaultValue); } } -bool BitTorrent::operator==(const AddTorrentParams &lhs, const AddTorrentParams &rhs) -{ - return std::tie(lhs.name, lhs.category, lhs.tags, - lhs.savePath, lhs.useDownloadPath, lhs.downloadPath, - lhs.sequential, lhs.firstLastPiecePriority, lhs.addForced, - lhs.addToQueueTop, lhs.addPaused, lhs.stopCondition, - lhs.filePaths, lhs.filePriorities, lhs.skipChecking, - lhs.contentLayout, lhs.useAutoTMM, lhs.uploadLimit, - lhs.downloadLimit, lhs.seedingTimeLimit, lhs.inactiveSeedingTimeLimit, lhs.ratioLimit) - == std::tie(rhs.name, rhs.category, rhs.tags, - rhs.savePath, rhs.useDownloadPath, rhs.downloadPath, - rhs.sequential, rhs.firstLastPiecePriority, rhs.addForced, - rhs.addToQueueTop, rhs.addPaused, rhs.stopCondition, - rhs.filePaths, rhs.filePriorities, rhs.skipChecking, - rhs.contentLayout, rhs.useAutoTMM, rhs.uploadLimit, - rhs.downloadLimit, rhs.seedingTimeLimit, rhs.inactiveSeedingTimeLimit, rhs.ratioLimit); -} - BitTorrent::AddTorrentParams BitTorrent::parseAddTorrentParams(const QJsonObject &jsonObj) { - AddTorrentParams params; - params.category = jsonObj.value(PARAM_CATEGORY).toString(); - params.tags = parseTagSet(jsonObj.value(PARAM_TAGS).toArray()); - params.savePath = Path(jsonObj.value(PARAM_SAVEPATH).toString()); - params.useDownloadPath = getOptionalBool(jsonObj, PARAM_USEDOWNLOADPATH); - params.downloadPath = Path(jsonObj.value(PARAM_DOWNLOADPATH).toString()); - params.addForced = (getEnum(jsonObj, PARAM_OPERATINGMODE) == BitTorrent::TorrentOperatingMode::Forced); - params.addToQueueTop = getOptionalBool(jsonObj, PARAM_QUEUETOP); - params.addPaused = getOptionalBool(jsonObj, PARAM_STOPPED); - params.skipChecking = jsonObj.value(PARAM_SKIPCHECKING).toBool(); - params.contentLayout = getOptionalEnum(jsonObj, PARAM_CONTENTLAYOUT); - params.useAutoTMM = getOptionalBool(jsonObj, PARAM_AUTOTMM); - params.uploadLimit = jsonObj.value(PARAM_UPLOADLIMIT).toInt(-1); - params.downloadLimit = jsonObj.value(PARAM_DOWNLOADLIMIT).toInt(-1); - params.seedingTimeLimit = jsonObj.value(PARAM_SEEDINGTIMELIMIT).toInt(BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME); - params.inactiveSeedingTimeLimit = jsonObj.value(PARAM_INACTIVESEEDINGTIMELIMIT).toInt(BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME); - params.ratioLimit = jsonObj.value(PARAM_RATIOLIMIT).toDouble(BitTorrent::Torrent::USE_GLOBAL_RATIO); - + const AddTorrentParams params + { + .name = {}, + .category = jsonObj.value(PARAM_CATEGORY).toString(), + .tags = parseTagSet(jsonObj.value(PARAM_TAGS).toArray()), + .savePath = Path(jsonObj.value(PARAM_SAVEPATH).toString()), + .useDownloadPath = getOptionalBool(jsonObj, PARAM_USEDOWNLOADPATH), + .downloadPath = Path(jsonObj.value(PARAM_DOWNLOADPATH).toString()), + .addForced = (getEnum(jsonObj, PARAM_OPERATINGMODE) == TorrentOperatingMode::Forced), + .addToQueueTop = getOptionalBool(jsonObj, PARAM_QUEUETOP), + .addStopped = getOptionalBool(jsonObj, PARAM_STOPPED), + .stopCondition = getOptionalEnum(jsonObj, PARAM_STOPCONDITION), + .filePaths = {}, + .filePriorities = {}, + .skipChecking = jsonObj.value(PARAM_SKIPCHECKING).toBool(), + .contentLayout = getOptionalEnum(jsonObj, PARAM_CONTENTLAYOUT), + .useAutoTMM = getOptionalBool(jsonObj, PARAM_AUTOTMM), + .uploadLimit = jsonObj.value(PARAM_UPLOADLIMIT).toInt(-1), + .downloadLimit = jsonObj.value(PARAM_DOWNLOADLIMIT).toInt(-1), + .seedingTimeLimit = jsonObj.value(PARAM_SEEDINGTIMELIMIT).toInt(Torrent::USE_GLOBAL_SEEDING_TIME), + .inactiveSeedingTimeLimit = jsonObj.value(PARAM_INACTIVESEEDINGTIMELIMIT).toInt(Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME), + .ratioLimit = jsonObj.value(PARAM_RATIOLIMIT).toDouble(Torrent::USE_GLOBAL_RATIO), + .shareLimitAction = getEnum(jsonObj, PARAM_SHARELIMITACTION, ShareLimitAction::Default), + .sslParameters = + { + .certificate = QSslCertificate(jsonObj.value(PARAM_SSL_CERTIFICATE).toString().toLatin1()), + .privateKey = Utils::SSLKey::load(jsonObj.value(PARAM_SSL_PRIVATEKEY).toString().toLatin1()), + .dhParams = jsonObj.value(PARAM_SSL_DHPARAMS).toString().toLatin1() + } + }; return params; } QJsonObject BitTorrent::serializeAddTorrentParams(const AddTorrentParams ¶ms) { - QJsonObject jsonObj { + QJsonObject jsonObj + { {PARAM_CATEGORY, params.category}, {PARAM_TAGS, serializeTagSet(params.tags)}, {PARAM_SAVEPATH, params.savePath.data()}, {PARAM_DOWNLOADPATH, params.downloadPath.data()}, {PARAM_OPERATINGMODE, Utils::String::fromEnum(params.addForced - ? BitTorrent::TorrentOperatingMode::Forced : BitTorrent::TorrentOperatingMode::AutoManaged)}, + ? TorrentOperatingMode::Forced : TorrentOperatingMode::AutoManaged)}, {PARAM_SKIPCHECKING, params.skipChecking}, {PARAM_UPLOADLIMIT, params.uploadLimit}, {PARAM_DOWNLOADLIMIT, params.downloadLimit}, {PARAM_SEEDINGTIMELIMIT, params.seedingTimeLimit}, {PARAM_INACTIVESEEDINGTIMELIMIT, params.inactiveSeedingTimeLimit}, - {PARAM_RATIOLIMIT, params.ratioLimit} + {PARAM_SHARELIMITACTION, Utils::String::fromEnum(params.shareLimitAction)}, + {PARAM_RATIOLIMIT, params.ratioLimit}, + {PARAM_SSL_CERTIFICATE, QString::fromLatin1(params.sslParameters.certificate.toPem())}, + {PARAM_SSL_PRIVATEKEY, QString::fromLatin1(params.sslParameters.privateKey.toPem())}, + {PARAM_SSL_DHPARAMS, QString::fromLatin1(params.sslParameters.dhParams)} }; if (params.addToQueueTop) jsonObj[PARAM_QUEUETOP] = *params.addToQueueTop; - if (params.addPaused) - jsonObj[PARAM_STOPPED] = *params.addPaused; + if (params.addStopped) + jsonObj[PARAM_STOPPED] = *params.addStopped; + if (params.stopCondition) + jsonObj[PARAM_STOPCONDITION] = Utils::String::fromEnum(*params.stopCondition); if (params.contentLayout) jsonObj[PARAM_CONTENTLAYOUT] = Utils::String::fromEnum(*params.contentLayout); if (params.useAutoTMM) diff --git a/src/base/bittorrent/addtorrentparams.h b/src/base/bittorrent/addtorrentparams.h index 63ec0e4e700a..a2de0b725689 100644 --- a/src/base/bittorrent/addtorrentparams.h +++ b/src/base/bittorrent/addtorrentparams.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,12 +30,14 @@ #include +#include #include #include -#include #include "base/path.h" #include "base/tagset.h" +#include "sharelimitaction.h" +#include "sslparameters.h" #include "torrent.h" #include "torrentcontentlayout.h" @@ -57,10 +59,10 @@ namespace BitTorrent bool firstLastPiecePriority = false; bool addForced = false; std::optional addToQueueTop; - std::optional addPaused; + std::optional addStopped; std::optional stopCondition; PathList filePaths; // used if TorrentInfo is set - QVector filePriorities; // used if TorrentInfo is set + QList filePriorities; // used if TorrentInfo is set bool skipChecking = false; std::optional contentLayout; std::optional useAutoTMM; @@ -69,9 +71,11 @@ namespace BitTorrent int seedingTimeLimit = Torrent::USE_GLOBAL_SEEDING_TIME; int inactiveSeedingTimeLimit = Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME; qreal ratioLimit = Torrent::USE_GLOBAL_RATIO; - }; + ShareLimitAction shareLimitAction = ShareLimitAction::Default; + SSLParameters sslParameters; - bool operator==(const AddTorrentParams &lhs, const AddTorrentParams &rhs); + friend bool operator==(const AddTorrentParams &lhs, const AddTorrentParams &rhs) = default; + }; AddTorrentParams parseAddTorrentParams(const QJsonObject &jsonObj); QJsonObject serializeAddTorrentParams(const AddTorrentParams ¶ms); diff --git a/src/base/bittorrent/announcetimepoint.h b/src/base/bittorrent/announcetimepoint.h new file mode 100644 index 000000000000..1dd65eea72e4 --- /dev/null +++ b/src/base/bittorrent/announcetimepoint.h @@ -0,0 +1,36 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +namespace BitTorrent +{ + using AnnounceTimePoint = std::chrono::high_resolution_clock::time_point; +} diff --git a/src/base/bittorrent/bandwidthscheduler.cpp b/src/base/bittorrent/bandwidthscheduler.cpp index bb8d1d0a8890..5463cc36eae8 100644 --- a/src/base/bittorrent/bandwidthscheduler.cpp +++ b/src/base/bittorrent/bandwidthscheduler.cpp @@ -102,7 +102,7 @@ bool BandwidthScheduler::isTimeForAlternative() const alternative = !alternative; break; default: - Q_ASSERT(false); + Q_UNREACHABLE(); break; } } diff --git a/src/base/bittorrent/bencoderesumedatastorage.cpp b/src/base/bittorrent/bencoderesumedatastorage.cpp index 4e6d0e46ef04..1b6adfc96063 100644 --- a/src/base/bittorrent/bencoderesumedatastorage.cpp +++ b/src/base/bittorrent/bencoderesumedatastorage.cpp @@ -40,7 +40,6 @@ #include #include -#include "base/algorithm.h" #include "base/exceptions.h" #include "base/global.h" #include "base/logger.h" @@ -49,6 +48,7 @@ #include "base/tagset.h" #include "base/utils/fs.h" #include "base/utils/io.h" +#include "base/utils/sslkey.h" #include "base/utils/string.h" #include "infohash.h" #include "loadtorrentparams.h" @@ -64,7 +64,7 @@ namespace BitTorrent void store(const TorrentID &id, const LoadTorrentParams &resumeData) const; void remove(const TorrentID &id) const; - void storeQueue(const QVector &queue) const; + void storeQueue(const QList &queue) const; private: const Path m_resumeDataDir; @@ -73,10 +73,20 @@ namespace BitTorrent namespace { + const char KEY_SSL_CERTIFICATE[] = "qBt-sslCertificate"; + const char KEY_SSL_PRIVATE_KEY[] = "qBt-sslPrivateKey"; + const char KEY_SSL_DH_PARAMS[] = "qBt-sslDhParams"; + template QString fromLTString(const LTStr &str) { - return QString::fromUtf8(str.data(), static_cast(str.size())); + return QString::fromUtf8(str.data(), static_cast(str.size())); + } + + template + QByteArray toByteArray(const LTStr &str) + { + return {str.data(), static_cast(str.size())}; } using ListType = lt::entry::list_type; @@ -85,8 +95,8 @@ namespace { ListType entryList; entryList.reserve(input.size()); - for (const QString &setValue : input) - entryList.emplace_back(setValue.toStdString()); + for (const Tag &setValue : input) + entryList.emplace_back(setValue.toString().toStdString()); return entryList; } } @@ -105,7 +115,7 @@ BitTorrent::BencodeResumeDataStorage::BencodeResumeDataStorage(const Path &path, } const QRegularExpression filenamePattern {u"^([A-Fa-f0-9]{40})\\.fastresume$"_s}; - const QStringList filenames = QDir(path.data()).entryList(QStringList(u"*.fastresume"_s), QDir::Files, QDir::Unsorted); + const QStringList filenames = QDir(path.data()).entryList({u"*.fastresume"_s}, QDir::Files); m_registeredTorrents.reserve(filenames.size()); for (const QString &filename : filenames) @@ -121,10 +131,11 @@ BitTorrent::BencodeResumeDataStorage::BencodeResumeDataStorage(const Path &path, m_asyncWorker->moveToThread(m_ioThread.get()); connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater); + m_ioThread->setObjectName("BencodeResumeDataStorage m_ioThread"); m_ioThread->start(); } -QVector BitTorrent::BencodeResumeDataStorage::registeredTorrents() const +QList BitTorrent::BencodeResumeDataStorage::registeredTorrents() const { return m_registeredTorrents; } @@ -220,14 +231,16 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre torrentParams.firstLastPiecePriority = resumeDataRoot.dict_find_int_value("qBt-firstLastPiecePriority"); torrentParams.seedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-seedingTimeLimit", Torrent::USE_GLOBAL_SEEDING_TIME); torrentParams.inactiveSeedingTimeLimit = resumeDataRoot.dict_find_int_value("qBt-inactiveSeedingTimeLimit", Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME); + torrentParams.shareLimitAction = Utils::String::toEnum( + fromLTString(resumeDataRoot.dict_find_string_value("qBt-shareLimitAction")), ShareLimitAction::Default); torrentParams.savePath = Profile::instance()->fromPortablePath( - Path(fromLTString(resumeDataRoot.dict_find_string_value("qBt-savePath")))); + Path(fromLTString(resumeDataRoot.dict_find_string_value("qBt-savePath")))); torrentParams.useAutoTMM = torrentParams.savePath.isEmpty(); if (!torrentParams.useAutoTMM) { torrentParams.downloadPath = Profile::instance()->fromPortablePath( - Path(fromLTString(resumeDataRoot.dict_find_string_value("qBt-downloadPath")))); + Path(fromLTString(resumeDataRoot.dict_find_string_value("qBt-downloadPath")))); } // TODO: The following code is deprecated. Replace with the commented one after several releases in 4.4.x. @@ -250,7 +263,13 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre // === END REPLACEMENT CODE === // torrentParams.stopCondition = Utils::String::toEnum( - fromLTString(resumeDataRoot.dict_find_string_value("qBt-stopCondition")), Torrent::StopCondition::None); + fromLTString(resumeDataRoot.dict_find_string_value("qBt-stopCondition")), Torrent::StopCondition::None); + torrentParams.sslParameters = + { + .certificate = QSslCertificate(toByteArray(resumeDataRoot.dict_find_string_value(KEY_SSL_CERTIFICATE))), + .privateKey = Utils::SSLKey::load(toByteArray(resumeDataRoot.dict_find_string_value(KEY_SSL_PRIVATE_KEY))), + .dhParams = toByteArray(resumeDataRoot.dict_find_string_value(KEY_SSL_DH_PARAMS)) + }; const lt::string_view ratioLimitString = resumeDataRoot.dict_find_string_value("qBt-ratioLimit"); if (ratioLimitString.empty()) @@ -263,7 +282,7 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre { for (int i = 0; i < tagsNode.list_size(); ++i) { - const QString tag = fromLTString(tagsNode.list_string_value_at(i)); + const Tag tag {fromLTString(tagsNode.list_string_value_at(i))}; torrentParams.tags.insert(tag); } } @@ -274,7 +293,6 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre if (!metadata.isEmpty()) { - const auto *pref = Preferences::instance(); const lt::bdecode_node torentInfoRoot = lt::bdecode(metadata, ec , nullptr, pref->getBdecodeDepthLimit(), pref->getBdecodeTokenLimit()); if (ec) @@ -288,6 +306,16 @@ BitTorrent::LoadResumeDataResult BitTorrent::BencodeResumeDataStorage::loadTorre return nonstd::make_unexpected(tr("Cannot parse torrent info: %1").arg(QString::fromStdString(ec.message()))); p.ti = torrentInfo; + +#ifdef QBT_USES_LIBTORRENT2 + if (((p.info_hashes.has_v1() && (p.info_hashes.v1 != p.ti->info_hashes().v1)) + || (p.info_hashes.has_v2() && (p.info_hashes.v2 != p.ti->info_hashes().v2)))) +#else + if (!p.info_hash.is_all_zeros() && (p.info_hash != p.ti->info_hash())) +#endif + { + return nonstd::make_unexpected(tr("Mismatching info-hash detected in resume data")); + } } p.save_path = Profile::instance()->fromPortablePath( @@ -326,7 +354,7 @@ void BitTorrent::BencodeResumeDataStorage::remove(const TorrentID &id) const }); } -void BitTorrent::BencodeResumeDataStorage::storeQueue(const QVector &queue) const +void BitTorrent::BencodeResumeDataStorage::storeQueue(const QList &queue) const { QMetaObject::invokeMethod(m_asyncWorker, [this, queue]() { @@ -391,6 +419,8 @@ void BitTorrent::BencodeResumeDataStorage::Worker::store(const TorrentID &id, co data["qBt-ratioLimit"] = static_cast(resumeData.ratioLimit * 1000); data["qBt-seedingTimeLimit"] = resumeData.seedingTimeLimit; data["qBt-inactiveSeedingTimeLimit"] = resumeData.inactiveSeedingTimeLimit; + data["qBt-shareLimitAction"] = Utils::String::fromEnum(resumeData.shareLimitAction).toStdString(); + data["qBt-category"] = resumeData.category.toStdString(); data["qBt-tags"] = setToEntryList(resumeData.tags); data["qBt-name"] = resumeData.name.toStdString(); @@ -399,6 +429,13 @@ void BitTorrent::BencodeResumeDataStorage::Worker::store(const TorrentID &id, co data["qBt-firstLastPiecePriority"] = resumeData.firstLastPiecePriority; data["qBt-stopCondition"] = Utils::String::fromEnum(resumeData.stopCondition).toStdString(); + if (!resumeData.sslParameters.certificate.isNull()) + data[KEY_SSL_CERTIFICATE] = resumeData.sslParameters.certificate.toPem().toStdString(); + if (!resumeData.sslParameters.privateKey.isNull()) + data[KEY_SSL_PRIVATE_KEY] = resumeData.sslParameters.privateKey.toPem().toStdString(); + if (!resumeData.sslParameters.dhParams.isEmpty()) + data[KEY_SSL_DH_PARAMS] = resumeData.sslParameters.dhParams.toStdString(); + if (!resumeData.useAutoTMM) { data["qBt-savePath"] = Profile::instance()->toPortablePath(resumeData.savePath).data().toStdString(); @@ -423,7 +460,7 @@ void BitTorrent::BencodeResumeDataStorage::Worker::remove(const TorrentID &id) c Utils::Fs::removeFile(m_resumeDataDir / torrentFilename); } -void BitTorrent::BencodeResumeDataStorage::Worker::storeQueue(const QVector &queue) const +void BitTorrent::BencodeResumeDataStorage::Worker::storeQueue(const QList &queue) const { QByteArray data; data.reserve(((BitTorrent::TorrentID::length() * 2) + 1) * queue.size()); diff --git a/src/base/bittorrent/bencoderesumedatastorage.h b/src/base/bittorrent/bencoderesumedatastorage.h index 9e7820e99017..38c10d865ef6 100644 --- a/src/base/bittorrent/bencoderesumedatastorage.h +++ b/src/base/bittorrent/bencoderesumedatastorage.h @@ -29,7 +29,7 @@ #pragma once #include -#include +#include #include "base/pathfwd.h" #include "base/utils/thread.h" @@ -37,7 +37,6 @@ #include "resumedatastorage.h" class QByteArray; -class QThread; namespace BitTorrent { @@ -49,18 +48,18 @@ namespace BitTorrent public: explicit BencodeResumeDataStorage(const Path &path, QObject *parent = nullptr); - QVector registeredTorrents() const override; + QList registeredTorrents() const override; LoadResumeDataResult load(const TorrentID &id) const override; void store(const TorrentID &id, const LoadTorrentParams &resumeData) const override; void remove(const TorrentID &id) const override; - void storeQueue(const QVector &queue) const override; + void storeQueue(const QList &queue) const override; private: void doLoadAll() const override; void loadQueue(const Path &queueFilename); LoadResumeDataResult loadTorrentResumeData(const QByteArray &data, const QByteArray &metadata) const; - QVector m_registeredTorrents; + QList m_registeredTorrents; Utils::Thread::UniquePtr m_ioThread; class Worker; diff --git a/src/base/bittorrent/categoryoptions.cpp b/src/base/bittorrent/categoryoptions.cpp index d4f250e79d8f..fec609ff7e5e 100644 --- a/src/base/bittorrent/categoryoptions.cpp +++ b/src/base/bittorrent/categoryoptions.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2021 Vladimir Golovnev + * Copyright (C) 2021-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -67,12 +67,6 @@ QJsonObject BitTorrent::CategoryOptions::toJSON() const }; } -bool BitTorrent::operator==(const BitTorrent::CategoryOptions::DownloadPathOption &left, const BitTorrent::CategoryOptions::DownloadPathOption &right) -{ - return ((left.enabled == right.enabled) - && (left.path == right.path)); -} - bool BitTorrent::operator==(const BitTorrent::CategoryOptions &left, const BitTorrent::CategoryOptions &right) { return ((left.savePath == right.savePath) diff --git a/src/base/bittorrent/categoryoptions.h b/src/base/bittorrent/categoryoptions.h index 6f834ea486e2..cbf8fedcefa7 100644 --- a/src/base/bittorrent/categoryoptions.h +++ b/src/base/bittorrent/categoryoptions.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2021 Vladimir Golovnev + * Copyright (C) 2021-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -33,6 +33,7 @@ #include #include "base/path.h" +#include "downloadpathoption.h" class QJsonObject; @@ -40,12 +41,6 @@ namespace BitTorrent { struct CategoryOptions { - struct DownloadPathOption - { - bool enabled; - Path path; - }; - Path savePath; std::optional downloadPath; @@ -53,6 +48,5 @@ namespace BitTorrent QJsonObject toJSON() const; }; - bool operator==(const CategoryOptions::DownloadPathOption &left, const CategoryOptions::DownloadPathOption &right); bool operator==(const CategoryOptions &left, const CategoryOptions &right); } diff --git a/src/base/bittorrent/customstorage.cpp b/src/base/bittorrent/customstorage.cpp index c4957ef075ed..9134b1507d23 100644 --- a/src/base/bittorrent/customstorage.cpp +++ b/src/base/bittorrent/customstorage.cpp @@ -240,11 +240,11 @@ void CustomDiskIOThread::handleCompleteFiles(lt::storage_index_t storage, const lt::storage_interface *customStorageConstructor(const lt::storage_params ¶ms, lt::file_pool &pool) { - return new CustomStorage {params, pool}; + return new CustomStorage(params, pool); } CustomStorage::CustomStorage(const lt::storage_params ¶ms, lt::file_pool &filePool) - : lt::default_storage {params, filePool} + : lt::default_storage(params, filePool) , m_savePath {params.path} { } diff --git a/src/base/bittorrent/dbresumedatastorage.cpp b/src/base/bittorrent/dbresumedatastorage.cpp index 3d92d3628345..d9320e5286da 100644 --- a/src/base/bittorrent/dbresumedatastorage.cpp +++ b/src/base/bittorrent/dbresumedatastorage.cpp @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -48,7 +49,6 @@ #include #include #include -#include #include #include "base/exceptions.h" @@ -58,6 +58,7 @@ #include "base/preferences.h" #include "base/profile.h" #include "base/utils/fs.h" +#include "base/utils/sslkey.h" #include "base/utils/string.h" #include "infohash.h" #include "loadtorrentparams.h" @@ -66,7 +67,7 @@ namespace { const QString DB_CONNECTION_NAME = u"ResumeDataStorage"_s; - const int DB_VERSION = 5; + const int DB_VERSION = 8; const QString DB_TABLE_META = u"meta"_s; const QString DB_TABLE_TORRENTS = u"torrents"_s; @@ -106,11 +107,11 @@ namespace class StoreQueueJob final : public Job { public: - explicit StoreQueueJob(const QVector &queue); + explicit StoreQueueJob(const QList &queue); void perform(QSqlDatabase db) override; private: - const QVector m_queue; + const QList m_queue; }; struct Column @@ -119,42 +120,45 @@ namespace QString placeholder; }; - Column makeColumn(const char *columnName) + Column makeColumn(const QString &columnName) { - return {QString::fromLatin1(columnName), (u':' + QString::fromLatin1(columnName))}; + return {.name = columnName, .placeholder = (u':' + columnName)}; } - const Column DB_COLUMN_ID = makeColumn("id"); - const Column DB_COLUMN_TORRENT_ID = makeColumn("torrent_id"); - const Column DB_COLUMN_QUEUE_POSITION = makeColumn("queue_position"); - const Column DB_COLUMN_NAME = makeColumn("name"); - const Column DB_COLUMN_CATEGORY = makeColumn("category"); - const Column DB_COLUMN_TAGS = makeColumn("tags"); - const Column DB_COLUMN_TARGET_SAVE_PATH = makeColumn("target_save_path"); - const Column DB_COLUMN_DOWNLOAD_PATH = makeColumn("download_path"); - const Column DB_COLUMN_CONTENT_LAYOUT = makeColumn("content_layout"); - const Column DB_COLUMN_RATIO_LIMIT = makeColumn("ratio_limit"); - const Column DB_COLUMN_SEEDING_TIME_LIMIT = makeColumn("seeding_time_limit"); - const Column DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT = makeColumn("inactive_seeding_time_limit"); - const Column DB_COLUMN_HAS_OUTER_PIECES_PRIORITY = makeColumn("has_outer_pieces_priority"); - const Column DB_COLUMN_HAS_SEED_STATUS = makeColumn("has_seed_status"); - const Column DB_COLUMN_OPERATING_MODE = makeColumn("operating_mode"); - const Column DB_COLUMN_STOPPED = makeColumn("stopped"); - const Column DB_COLUMN_STOP_CONDITION = makeColumn("stop_condition"); - const Column DB_COLUMN_RESUMEDATA = makeColumn("libtorrent_resume_data"); - const Column DB_COLUMN_METADATA = makeColumn("metadata"); - const Column DB_COLUMN_VALUE = makeColumn("value"); + const Column DB_COLUMN_ID = makeColumn(u"id"_s); + const Column DB_COLUMN_TORRENT_ID = makeColumn(u"torrent_id"_s); + const Column DB_COLUMN_QUEUE_POSITION = makeColumn(u"queue_position"_s); + const Column DB_COLUMN_NAME = makeColumn(u"name"_s); + const Column DB_COLUMN_CATEGORY = makeColumn(u"category"_s); + const Column DB_COLUMN_TAGS = makeColumn(u"tags"_s); + const Column DB_COLUMN_TARGET_SAVE_PATH = makeColumn(u"target_save_path"_s); + const Column DB_COLUMN_DOWNLOAD_PATH = makeColumn(u"download_path"_s); + const Column DB_COLUMN_CONTENT_LAYOUT = makeColumn(u"content_layout"_s); + const Column DB_COLUMN_RATIO_LIMIT = makeColumn(u"ratio_limit"_s); + const Column DB_COLUMN_SEEDING_TIME_LIMIT = makeColumn(u"seeding_time_limit"_s); + const Column DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT = makeColumn(u"inactive_seeding_time_limit"_s); + const Column DB_COLUMN_SHARE_LIMIT_ACTION = makeColumn(u"share_limit_action"_s); + const Column DB_COLUMN_HAS_OUTER_PIECES_PRIORITY = makeColumn(u"has_outer_pieces_priority"_s); + const Column DB_COLUMN_HAS_SEED_STATUS = makeColumn(u"has_seed_status"_s); + const Column DB_COLUMN_OPERATING_MODE = makeColumn(u"operating_mode"_s); + const Column DB_COLUMN_STOPPED = makeColumn(u"stopped"_s); + const Column DB_COLUMN_STOP_CONDITION = makeColumn(u"stop_condition"_s); + const Column DB_COLUMN_SSL_CERTIFICATE = makeColumn(u"ssl_certificate"_s); + const Column DB_COLUMN_SSL_PRIVATE_KEY = makeColumn(u"ssl_private_key"_s); + const Column DB_COLUMN_SSL_DH_PARAMS = makeColumn(u"ssl_dh_params"_s); + const Column DB_COLUMN_RESUMEDATA = makeColumn(u"libtorrent_resume_data"_s); + const Column DB_COLUMN_METADATA = makeColumn(u"metadata"_s); + const Column DB_COLUMN_VALUE = makeColumn(u"value"_s); template QString fromLTString(const LTStr &str) { - return QString::fromUtf8(str.data(), static_cast(str.size())); + return QString::fromUtf8(str.data(), static_cast(str.size())); } QString quoted(const QString &name) { const QChar quote = u'`'; - return (quote + name + quote); } @@ -163,7 +167,7 @@ namespace return u"CREATE TABLE %1 (%2)"_s.arg(quoted(tableName), items.join(u',')); } - std::pair joinColumns(const QVector &columns) + std::pair joinColumns(const QList &columns) { int namesSize = columns.size(); int valuesSize = columns.size(); @@ -188,30 +192,30 @@ namespace return std::make_pair(names, values); } - QString makeInsertStatement(const QString &tableName, const QVector &columns) + QString makeInsertStatement(const QString &tableName, const QList &columns) { const auto [names, values] = joinColumns(columns); return u"INSERT INTO %1 (%2) VALUES (%3)"_s .arg(quoted(tableName), names, values); } - QString makeUpdateStatement(const QString &tableName, const QVector &columns) + QString makeUpdateStatement(const QString &tableName, const QList &columns) { const auto [names, values] = joinColumns(columns); return u"UPDATE %1 SET (%2) = (%3)"_s .arg(quoted(tableName), names, values); } - QString makeOnConflictUpdateStatement(const Column &constraint, const QVector &columns) + QString makeOnConflictUpdateStatement(const Column &constraint, const QList &columns) { const auto [names, values] = joinColumns(columns); return u" ON CONFLICT (%1) DO UPDATE SET (%2) = (%3)"_s .arg(quoted(constraint.name), names, values); } - QString makeColumnDefinition(const Column &column, const char *definition) + QString makeColumnDefinition(const Column &column, const QString &definition) { - return u"%1 %2"_s.arg(quoted(column.name), QString::fromLatin1(definition)); + return u"%1 %2"_s.arg(quoted(column.name), definition); } LoadTorrentParams parseQueryResultRow(const QSqlQuery &query) @@ -230,13 +234,21 @@ namespace resumeData.ratioLimit = query.value(DB_COLUMN_RATIO_LIMIT.name).toInt() / 1000.0; resumeData.seedingTimeLimit = query.value(DB_COLUMN_SEEDING_TIME_LIMIT.name).toInt(); resumeData.inactiveSeedingTimeLimit = query.value(DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT.name).toInt(); + resumeData.shareLimitAction = Utils::String::toEnum( + query.value(DB_COLUMN_SHARE_LIMIT_ACTION.name).toString(), ShareLimitAction::Default); resumeData.contentLayout = Utils::String::toEnum( - query.value(DB_COLUMN_CONTENT_LAYOUT.name).toString(), TorrentContentLayout::Original); + query.value(DB_COLUMN_CONTENT_LAYOUT.name).toString(), TorrentContentLayout::Original); resumeData.operatingMode = Utils::String::toEnum( - query.value(DB_COLUMN_OPERATING_MODE.name).toString(), TorrentOperatingMode::AutoManaged); + query.value(DB_COLUMN_OPERATING_MODE.name).toString(), TorrentOperatingMode::AutoManaged); resumeData.stopped = query.value(DB_COLUMN_STOPPED.name).toBool(); resumeData.stopCondition = Utils::String::toEnum( - query.value(DB_COLUMN_STOP_CONDITION.name).toString(), Torrent::StopCondition::None); + query.value(DB_COLUMN_STOP_CONDITION.name).toString(), Torrent::StopCondition::None); + resumeData.sslParameters = + { + .certificate = QSslCertificate(query.value(DB_COLUMN_SSL_CERTIFICATE.name).toByteArray()), + .privateKey = Utils::SSLKey::load(query.value(DB_COLUMN_SSL_PRIVATE_KEY.name).toByteArray()), + .dhParams = query.value(DB_COLUMN_SSL_DH_PARAMS.name).toByteArray() + }; resumeData.savePath = Profile::instance()->fromPortablePath( Path(query.value(DB_COLUMN_TARGET_SAVE_PATH.name).toString())); @@ -295,7 +307,7 @@ namespace BitTorrent void store(const TorrentID &id, const LoadTorrentParams &resumeData); void remove(const TorrentID &id); - void storeQueue(const QVector &queue); + void storeQueue(const QList &queue); private: void addJob(std::unique_ptr job); @@ -312,7 +324,6 @@ namespace BitTorrent BitTorrent::DBResumeDataStorage::DBResumeDataStorage(const Path &dbPath, QObject *parent) : ResumeDataStorage(dbPath, parent) - , m_ioThread {new QThread} { const bool needCreateDB = !dbPath.exists(); @@ -343,7 +354,7 @@ BitTorrent::DBResumeDataStorage::~DBResumeDataStorage() QSqlDatabase::removeDatabase(DB_CONNECTION_NAME); } -QVector BitTorrent::DBResumeDataStorage::registeredTorrents() const +QList BitTorrent::DBResumeDataStorage::registeredTorrents() const { const auto selectTorrentIDStatement = u"SELECT %1 FROM %2 ORDER BY %3;"_s .arg(quoted(DB_COLUMN_TORRENT_ID.name), quoted(DB_TABLE_TORRENTS), quoted(DB_COLUMN_QUEUE_POSITION.name)); @@ -354,7 +365,7 @@ QVector BitTorrent::DBResumeDataStorage::registeredTorren if (!query.exec(selectTorrentIDStatement)) throw RuntimeError(query.lastError().text()); - QVector registeredTorrents; + QList registeredTorrents; registeredTorrents.reserve(query.size()); while (query.next()) registeredTorrents.append(BitTorrent::TorrentID::fromString(query.value(0).toString())); @@ -400,7 +411,7 @@ void BitTorrent::DBResumeDataStorage::remove(const BitTorrent::TorrentID &id) co m_asyncWorker->remove(id); } -void BitTorrent::DBResumeDataStorage::storeQueue(const QVector &queue) const +void BitTorrent::DBResumeDataStorage::storeQueue(const QList &queue) const { m_asyncWorker->storeQueue(queue); } @@ -425,7 +436,7 @@ void BitTorrent::DBResumeDataStorage::doLoadAll() const if (!query.exec(selectTorrentIDStatement)) throw RuntimeError(query.lastError().text()); - QVector registeredTorrents; + QList registeredTorrents; registeredTorrents.reserve(query.size()); while (query.next()) registeredTorrents.append(TorrentID::fromString(query.value(0).toString())); @@ -499,9 +510,9 @@ void BitTorrent::DBResumeDataStorage::createDB() const try { const QStringList tableMetaItems = { - makeColumnDefinition(DB_COLUMN_ID, "INTEGER PRIMARY KEY"), - makeColumnDefinition(DB_COLUMN_NAME, "TEXT NOT NULL UNIQUE"), - makeColumnDefinition(DB_COLUMN_VALUE, "BLOB") + makeColumnDefinition(DB_COLUMN_ID, u"INTEGER PRIMARY KEY"_s), + makeColumnDefinition(DB_COLUMN_NAME, u"TEXT NOT NULL UNIQUE"_s), + makeColumnDefinition(DB_COLUMN_VALUE, u"BLOB"_s) }; const QString createTableMetaQuery = makeCreateTableStatement(DB_TABLE_META, tableMetaItems); if (!query.exec(createTableMetaQuery)) @@ -518,25 +529,29 @@ void BitTorrent::DBResumeDataStorage::createDB() const throw RuntimeError(query.lastError().text()); const QStringList tableTorrentsItems = { - makeColumnDefinition(DB_COLUMN_ID, "INTEGER PRIMARY KEY"), - makeColumnDefinition(DB_COLUMN_TORRENT_ID, "BLOB NOT NULL UNIQUE"), - makeColumnDefinition(DB_COLUMN_QUEUE_POSITION, "INTEGER NOT NULL DEFAULT -1"), - makeColumnDefinition(DB_COLUMN_NAME, "TEXT"), - makeColumnDefinition(DB_COLUMN_CATEGORY, "TEXT"), - makeColumnDefinition(DB_COLUMN_TAGS, "TEXT"), - makeColumnDefinition(DB_COLUMN_TARGET_SAVE_PATH, "TEXT"), - makeColumnDefinition(DB_COLUMN_DOWNLOAD_PATH, "TEXT"), - makeColumnDefinition(DB_COLUMN_CONTENT_LAYOUT, "TEXT NOT NULL"), - makeColumnDefinition(DB_COLUMN_RATIO_LIMIT, "INTEGER NOT NULL"), - makeColumnDefinition(DB_COLUMN_SEEDING_TIME_LIMIT, "INTEGER NOT NULL"), - makeColumnDefinition(DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT, "INTEGER NOT NULL"), - makeColumnDefinition(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY, "INTEGER NOT NULL"), - makeColumnDefinition(DB_COLUMN_HAS_SEED_STATUS, "INTEGER NOT NULL"), - makeColumnDefinition(DB_COLUMN_OPERATING_MODE, "TEXT NOT NULL"), - makeColumnDefinition(DB_COLUMN_STOPPED, "INTEGER NOT NULL"), - makeColumnDefinition(DB_COLUMN_STOP_CONDITION, "TEXT NOT NULL DEFAULT `None`"), - makeColumnDefinition(DB_COLUMN_RESUMEDATA, "BLOB NOT NULL"), - makeColumnDefinition(DB_COLUMN_METADATA, "BLOB") + makeColumnDefinition(DB_COLUMN_ID, u"INTEGER PRIMARY KEY"_s), + makeColumnDefinition(DB_COLUMN_TORRENT_ID, u"BLOB NOT NULL UNIQUE"_s), + makeColumnDefinition(DB_COLUMN_QUEUE_POSITION, u"INTEGER NOT NULL DEFAULT -1"_s), + makeColumnDefinition(DB_COLUMN_NAME, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_CATEGORY, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_TAGS, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_TARGET_SAVE_PATH, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_DOWNLOAD_PATH, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_CONTENT_LAYOUT, u"TEXT NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_RATIO_LIMIT, u"INTEGER NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_SEEDING_TIME_LIMIT, u"INTEGER NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT, u"INTEGER NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_SHARE_LIMIT_ACTION, u"TEXT NOT NULL DEFAULT `Default`"_s), + makeColumnDefinition(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY, u"INTEGER NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_HAS_SEED_STATUS, u"INTEGER NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_OPERATING_MODE, u"TEXT NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_STOPPED, u"INTEGER NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_STOP_CONDITION, u"TEXT NOT NULL DEFAULT `None`"_s), + makeColumnDefinition(DB_COLUMN_SSL_CERTIFICATE, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_SSL_PRIVATE_KEY, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_SSL_DH_PARAMS, u"TEXT"_s), + makeColumnDefinition(DB_COLUMN_RESUMEDATA, u"BLOB NOT NULL"_s), + makeColumnDefinition(DB_COLUMN_METADATA, u"BLOB"_s) }; const QString createTableTorrentsQuery = makeCreateTableStatement(DB_TABLE_TORRENTS, tableTorrentsItems); if (!query.exec(createTableTorrentsQuery)) @@ -574,31 +589,22 @@ void BitTorrent::DBResumeDataStorage::updateDB(const int fromVersion) const try { - if (fromVersion == 1) + const auto addColumn = [&query](const QString &table, const Column &column, const QString &definition) { - const auto testQuery = u"SELECT COUNT(%1) FROM %2;"_s - .arg(quoted(DB_COLUMN_DOWNLOAD_PATH.name), quoted(DB_TABLE_TORRENTS)); - if (!query.exec(testQuery)) - { - const auto alterTableTorrentsQuery = u"ALTER TABLE %1 ADD %2"_s - .arg(quoted(DB_TABLE_TORRENTS), makeColumnDefinition(DB_COLUMN_DOWNLOAD_PATH, "TEXT")); - if (!query.exec(alterTableTorrentsQuery)) - throw RuntimeError(query.lastError().text()); - } - } + const auto testQuery = u"SELECT COUNT(%1) FROM %2;"_s.arg(quoted(column.name), quoted(table)); + if (query.exec(testQuery)) + return; + + const auto alterTableQuery = u"ALTER TABLE %1 ADD %2"_s.arg(quoted(table), makeColumnDefinition(column, definition)); + if (!query.exec(alterTableQuery)) + throw RuntimeError(query.lastError().text()); + }; + + if (fromVersion <= 1) + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_DOWNLOAD_PATH, u"TEXT"_s); if (fromVersion <= 2) - { - const auto testQuery = u"SELECT COUNT(%1) FROM %2;"_s - .arg(quoted(DB_COLUMN_STOP_CONDITION.name), quoted(DB_TABLE_TORRENTS)); - if (!query.exec(testQuery)) - { - const auto alterTableTorrentsQuery = u"ALTER TABLE %1 ADD %2"_s - .arg(quoted(DB_TABLE_TORRENTS), makeColumnDefinition(DB_COLUMN_STOP_CONDITION, "TEXT NOT NULL DEFAULT `None`")); - if (!query.exec(alterTableTorrentsQuery)) - throw RuntimeError(query.lastError().text()); - } - } + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_STOP_CONDITION, u"TEXT NOT NULL DEFAULT `None`"_s); if (fromVersion <= 3) { @@ -610,16 +616,40 @@ void BitTorrent::DBResumeDataStorage::updateDB(const int fromVersion) const } if (fromVersion <= 4) + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT, u"INTEGER NOT NULL DEFAULT -2"_s); + + if (fromVersion <= 5) { - const auto testQuery = u"SELECT COUNT(%1) FROM %2;"_s - .arg(quoted(DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT.name), quoted(DB_TABLE_TORRENTS)); - if (!query.exec(testQuery)) - { - const auto alterTableTorrentsQuery = u"ALTER TABLE %1 ADD %2"_s - .arg(quoted(DB_TABLE_TORRENTS), makeColumnDefinition(DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT, "INTEGER NOT NULL DEFAULT -2")); - if (!query.exec(alterTableTorrentsQuery)) - throw RuntimeError(query.lastError().text()); - } + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_SSL_CERTIFICATE, u"TEXT"_s); + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_SSL_PRIVATE_KEY, u"TEXT"_s); + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_SSL_DH_PARAMS, u"TEXT"_s); + } + + if (fromVersion <= 6) + addColumn(DB_TABLE_TORRENTS, DB_COLUMN_SHARE_LIMIT_ACTION, u"TEXT NOT NULL DEFAULT `Default`"_s); + + if (fromVersion == 7) + { + const QString TEMP_COLUMN_NAME = DB_COLUMN_SHARE_LIMIT_ACTION.name + u"_temp"; + + auto queryStr = u"ALTER TABLE %1 ADD %2 %3"_s + .arg(quoted(DB_TABLE_TORRENTS), TEMP_COLUMN_NAME, u"TEXT NOT NULL DEFAULT `Default`"); + if (!query.exec(queryStr)) + throw RuntimeError(query.lastError().text()); + + queryStr = u"UPDATE %1 SET %2 = %3"_s + .arg(quoted(DB_TABLE_TORRENTS), quoted(TEMP_COLUMN_NAME), quoted(DB_COLUMN_SHARE_LIMIT_ACTION.name)); + if (!query.exec(queryStr)) + throw RuntimeError(query.lastError().text()); + + queryStr = u"ALTER TABLE %1 DROP %2"_s.arg(quoted(DB_TABLE_TORRENTS), quoted(DB_COLUMN_SHARE_LIMIT_ACTION.name)); + if (!query.exec(queryStr)) + throw RuntimeError(query.lastError().text()); + + queryStr = u"ALTER TABLE %1 RENAME %2 TO %3"_s + .arg(quoted(DB_TABLE_TORRENTS), quoted(TEMP_COLUMN_NAME), quoted(DB_COLUMN_SHARE_LIMIT_ACTION.name)); + if (!query.exec(queryStr)) + throw RuntimeError(query.lastError().text()); } const QString updateMetaVersionQuery = makeUpdateStatement(DB_TABLE_META, {DB_COLUMN_NAME, DB_COLUMN_VALUE}); @@ -739,7 +769,7 @@ void BitTorrent::DBResumeDataStorage::Worker::remove(const TorrentID &id) addJob(std::make_unique(id)); } -void BitTorrent::DBResumeDataStorage::Worker::storeQueue(const QVector &queue) +void BitTorrent::DBResumeDataStorage::Worker::storeQueue(const QList &queue) { addJob(std::make_unique(queue)); } @@ -789,7 +819,7 @@ namespace } } - QVector columns { + QList columns { DB_COLUMN_TORRENT_ID, DB_COLUMN_NAME, DB_COLUMN_CATEGORY, @@ -800,11 +830,15 @@ namespace DB_COLUMN_RATIO_LIMIT, DB_COLUMN_SEEDING_TIME_LIMIT, DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT, + DB_COLUMN_SHARE_LIMIT_ACTION, DB_COLUMN_HAS_OUTER_PIECES_PRIORITY, DB_COLUMN_HAS_SEED_STATUS, DB_COLUMN_OPERATING_MODE, DB_COLUMN_STOPPED, DB_COLUMN_STOP_CONDITION, + DB_COLUMN_SSL_CERTIFICATE, + DB_COLUMN_SSL_PRIVATE_KEY, + DB_COLUMN_SSL_DH_PARAMS, DB_COLUMN_RESUMEDATA }; @@ -854,16 +888,20 @@ namespace query.bindValue(DB_COLUMN_NAME.placeholder, m_resumeData.name); query.bindValue(DB_COLUMN_CATEGORY.placeholder, m_resumeData.category); query.bindValue(DB_COLUMN_TAGS.placeholder, (m_resumeData.tags.isEmpty() - ? QString() : m_resumeData.tags.join(u","_s))); + ? QString() : Utils::String::joinIntoString(m_resumeData.tags, u","_s))); query.bindValue(DB_COLUMN_CONTENT_LAYOUT.placeholder, Utils::String::fromEnum(m_resumeData.contentLayout)); query.bindValue(DB_COLUMN_RATIO_LIMIT.placeholder, static_cast(m_resumeData.ratioLimit * 1000)); query.bindValue(DB_COLUMN_SEEDING_TIME_LIMIT.placeholder, m_resumeData.seedingTimeLimit); query.bindValue(DB_COLUMN_INACTIVE_SEEDING_TIME_LIMIT.placeholder, m_resumeData.inactiveSeedingTimeLimit); + query.bindValue(DB_COLUMN_SHARE_LIMIT_ACTION.placeholder, Utils::String::fromEnum(m_resumeData.shareLimitAction)); query.bindValue(DB_COLUMN_HAS_OUTER_PIECES_PRIORITY.placeholder, m_resumeData.firstLastPiecePriority); query.bindValue(DB_COLUMN_HAS_SEED_STATUS.placeholder, m_resumeData.hasFinishedStatus); query.bindValue(DB_COLUMN_OPERATING_MODE.placeholder, Utils::String::fromEnum(m_resumeData.operatingMode)); query.bindValue(DB_COLUMN_STOPPED.placeholder, m_resumeData.stopped); query.bindValue(DB_COLUMN_STOP_CONDITION.placeholder, Utils::String::fromEnum(m_resumeData.stopCondition)); + query.bindValue(DB_COLUMN_SSL_CERTIFICATE.placeholder, QString::fromLatin1(m_resumeData.sslParameters.certificate.toPem())); + query.bindValue(DB_COLUMN_SSL_PRIVATE_KEY.placeholder, QString::fromLatin1(m_resumeData.sslParameters.privateKey.toPem())); + query.bindValue(DB_COLUMN_SSL_DH_PARAMS.placeholder, QString::fromLatin1(m_resumeData.sslParameters.dhParams)); if (!m_resumeData.useAutoTMM) { @@ -913,7 +951,7 @@ namespace } } - StoreQueueJob::StoreQueueJob(const QVector &queue) + StoreQueueJob::StoreQueueJob(const QList &queue) : m_queue {queue} { } diff --git a/src/base/bittorrent/dbresumedatastorage.h b/src/base/bittorrent/dbresumedatastorage.h index 97485f298bb4..92f0e6ea10f6 100644 --- a/src/base/bittorrent/dbresumedatastorage.h +++ b/src/base/bittorrent/dbresumedatastorage.h @@ -34,8 +34,6 @@ #include "base/utils/thread.h" #include "resumedatastorage.h" -class QThread; - namespace BitTorrent { class DBResumeDataStorage final : public ResumeDataStorage @@ -47,12 +45,12 @@ namespace BitTorrent explicit DBResumeDataStorage(const Path &dbPath, QObject *parent = nullptr); ~DBResumeDataStorage() override; - QVector registeredTorrents() const override; + QList registeredTorrents() const override; LoadResumeDataResult load(const TorrentID &id) const override; void store(const TorrentID &id, const LoadTorrentParams &resumeData) const override; void remove(const TorrentID &id) const override; - void storeQueue(const QVector &queue) const override; + void storeQueue(const QList &queue) const override; private: void doLoadAll() const override; @@ -61,8 +59,6 @@ namespace BitTorrent void updateDB(int fromVersion) const; void enableWALMode() const; - Utils::Thread::UniquePtr m_ioThread; - class Worker; Worker *m_asyncWorker = nullptr; diff --git a/src/base/bittorrent/downloadpathoption.cpp b/src/base/bittorrent/downloadpathoption.cpp new file mode 100644 index 000000000000..4842a1a4dd10 --- /dev/null +++ b/src/base/bittorrent/downloadpathoption.cpp @@ -0,0 +1,34 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2021-2023 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "downloadpathoption.h" + +bool BitTorrent::operator==(const DownloadPathOption &left, const DownloadPathOption &right) +{ + return ((left.enabled == right.enabled) && (left.path == right.path)); +} diff --git a/src/base/bittorrent/downloadpathoption.h b/src/base/bittorrent/downloadpathoption.h new file mode 100644 index 000000000000..dba1b296d132 --- /dev/null +++ b/src/base/bittorrent/downloadpathoption.h @@ -0,0 +1,42 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2021-2023 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include "base/path.h" + +namespace BitTorrent +{ + struct DownloadPathOption + { + bool enabled = false; + Path path; + }; + + bool operator==(const DownloadPathOption &left, const DownloadPathOption &right); +} diff --git a/src/base/bittorrent/filterparserthread.cpp b/src/base/bittorrent/filterparserthread.cpp index 56d650ed7331..5b5c0659c7b6 100644 --- a/src/base/bittorrent/filterparserthread.cpp +++ b/src/base/bittorrent/filterparserthread.cpp @@ -133,7 +133,7 @@ int FilterParserThread::parseDATFilterFile() return ruleCount; } - std::vector buffer(BUFFER_SIZE, 0); // seems a bit faster than QVector + std::vector buffer(BUFFER_SIZE, 0); // seems a bit faster than QList qint64 bytesRead = 0; int offset = 0; int start = 0; @@ -297,7 +297,7 @@ int FilterParserThread::parseP2PFilterFile() return ruleCount; } - std::vector buffer(BUFFER_SIZE, 0); // seems a bit faster than QVector + std::vector buffer(BUFFER_SIZE, 0); // seems a bit faster than QList qint64 bytesRead = 0; int offset = 0; int start = 0; diff --git a/src/base/bittorrent/loadtorrentparams.h b/src/base/bittorrent/loadtorrentparams.h index 97e091f9a4f5..b84a9eb414f1 100644 --- a/src/base/bittorrent/loadtorrentparams.h +++ b/src/base/bittorrent/loadtorrentparams.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2021 Vladimir Golovnev + * Copyright (C) 2021-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -34,6 +34,8 @@ #include "base/path.h" #include "base/tagset.h" +#include "sharelimitaction.h" +#include "sslparameters.h" #include "torrent.h" #include "torrentcontentlayout.h" @@ -61,5 +63,8 @@ namespace BitTorrent qreal ratioLimit = Torrent::USE_GLOBAL_RATIO; int seedingTimeLimit = Torrent::USE_GLOBAL_SEEDING_TIME; int inactiveSeedingTimeLimit = Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME; + ShareLimitAction shareLimitAction = ShareLimitAction::Default; + + SSLParameters sslParameters; }; } diff --git a/src/base/bittorrent/peerinfo.cpp b/src/base/bittorrent/peerinfo.cpp index 9fb6db21a4cb..3706b1e81174 100644 --- a/src/base/bittorrent/peerinfo.cpp +++ b/src/base/bittorrent/peerinfo.cpp @@ -198,7 +198,12 @@ QString PeerInfo::I2PAddress() const QString PeerInfo::client() const { - return QString::fromStdString(m_nativeInfo.client); + auto client = QString::fromStdString(m_nativeInfo.client).simplified(); + + // remove non-printable characters + erase_if(client, [](const QChar &c) { return !c.isPrint(); }); + + return client; } QString PeerInfo::peerIdClient() const @@ -362,6 +367,10 @@ void PeerInfo::determineFlags() if (useUTPSocket()) updateFlags(u'P', C_UTP); + // h = Peer is using NAT hole punching + if (isHolepunched()) + updateFlags(u'h', tr("Peer is using NAT hole punching")); + m_flags.chop(1); m_flagsDescription.chop(1); } diff --git a/src/base/bittorrent/resumedatastorage.cpp b/src/base/bittorrent/resumedatastorage.cpp index 6e67a5b5846b..f21d3c832b83 100644 --- a/src/base/bittorrent/resumedatastorage.cpp +++ b/src/base/bittorrent/resumedatastorage.cpp @@ -30,12 +30,12 @@ #include +#include #include #include #include -#include -const int TORRENTIDLIST_TYPEID = qRegisterMetaType>(); +const int TORRENTIDLIST_TYPEID = qRegisterMetaType>(); BitTorrent::ResumeDataStorage::ResumeDataStorage(const Path &path, QObject *parent) : QObject(parent) @@ -56,6 +56,7 @@ void BitTorrent::ResumeDataStorage::loadAll() const { doLoadAll(); }); + loadingThread->setObjectName("ResumeDataStorage::loadAll loadingThread"); connect(loadingThread, &QThread::finished, loadingThread, &QObject::deleteLater); loadingThread->start(); } diff --git a/src/base/bittorrent/resumedatastorage.h b/src/base/bittorrent/resumedatastorage.h index b583da60a80e..f2df1b1e2258 100644 --- a/src/base/bittorrent/resumedatastorage.h +++ b/src/base/bittorrent/resumedatastorage.h @@ -58,17 +58,17 @@ namespace BitTorrent Path path() const; - virtual QVector registeredTorrents() const = 0; + virtual QList registeredTorrents() const = 0; virtual LoadResumeDataResult load(const TorrentID &id) const = 0; virtual void store(const TorrentID &id, const LoadTorrentParams &resumeData) const = 0; virtual void remove(const TorrentID &id) const = 0; - virtual void storeQueue(const QVector &queue) const = 0; + virtual void storeQueue(const QList &queue) const = 0; void loadAll() const; QList fetchLoadedResumeData() const; signals: - void loadStarted(const QVector &torrents); + void loadStarted(const QList &torrents); void loadFinished(); protected: diff --git a/src/base/bittorrent/session.h b/src/base/bittorrent/session.h index 6e88d2d603e5..f5c06217208f 100644 --- a/src/base/bittorrent/session.h +++ b/src/base/bittorrent/session.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -33,28 +33,16 @@ #include #include "base/pathfwd.h" +#include "base/tagset.h" #include "addtorrentparams.h" #include "categoryoptions.h" +#include "sharelimitaction.h" +#include "torrentcontentremoveoption.h" #include "trackerentry.h" +#include "trackerentrystatus.h" class QString; -// These values should remain unchanged when adding new items -// so as not to break the existing user settings. -enum MaxRatioAction -{ - Pause = 0, - Remove = 1, - DeleteFiles = 3, - EnableSuperSeeding = 2 -}; - -enum DeleteOption -{ - DeleteTorrent, - DeleteTorrentAndFiles -}; - namespace BitTorrent { class InfoHash; @@ -65,6 +53,12 @@ namespace BitTorrent struct CacheStatus; struct SessionStatus; + enum class TorrentRemoveOption + { + KeepContent, + RemoveContent + }; + // Using `Q_ENUM_NS()` without a wrapper namespace in our case is not advised // since `Q_NAMESPACE` cannot be used when the same namespace resides at different files. // https://www.kdab.com/new-qt-5-8-meta-object-support-namespaces/#comment-143779 @@ -98,7 +92,8 @@ namespace BitTorrent { Default = 0, MMap = 1, - Posix = 2 + Posix = 2, + SimplePreadPwrite = 3 }; Q_ENUM_NS(DiskIOType) @@ -155,13 +150,17 @@ namespace BitTorrent virtual void setDownloadPathEnabled(bool enabled) = 0; static bool isValidCategoryName(const QString &name); + static QString subcategoryName(const QString &category); + static QString parentCategoryName(const QString &category); // returns category itself and all top level categories static QStringList expandCategory(const QString &category); virtual QStringList categories() const = 0; virtual CategoryOptions categoryOptions(const QString &categoryName) const = 0; virtual Path categorySavePath(const QString &categoryName) const = 0; + virtual Path categorySavePath(const QString &categoryName, const CategoryOptions &options) const = 0; virtual Path categoryDownloadPath(const QString &categoryName) const = 0; + virtual Path categoryDownloadPath(const QString &categoryName, const CategoryOptions &options) const = 0; virtual bool addCategory(const QString &name, const CategoryOptions &options = {}) = 0; virtual bool editCategory(const QString &name, const CategoryOptions &options) = 0; virtual bool removeCategory(const QString &name) = 0; @@ -173,11 +172,10 @@ namespace BitTorrent virtual Path suggestedSavePath(const QString &categoryName, std::optional useAutoTMM) const = 0; virtual Path suggestedDownloadPath(const QString &categoryName, std::optional useAutoTMM) const = 0; - static bool isValidTag(const QString &tag); - virtual QSet tags() const = 0; - virtual bool hasTag(const QString &tag) const = 0; - virtual bool addTag(const QString &tag) = 0; - virtual bool removeTag(const QString &tag) = 0; + virtual TagSet tags() const = 0; + virtual bool hasTag(const Tag &tag) const = 0; + virtual bool addTag(const Tag &tag) = 0; + virtual bool removeTag(const Tag &tag) = 0; // Torrent Management Mode subsystem (TMM) // @@ -205,6 +203,9 @@ namespace BitTorrent virtual void setGlobalMaxSeedingMinutes(int minutes) = 0; virtual int globalMaxInactiveSeedingMinutes() const = 0; virtual void setGlobalMaxInactiveSeedingMinutes(int minutes) = 0; + virtual ShareLimitAction shareLimitAction() const = 0; + virtual void setShareLimitAction(ShareLimitAction act) = 0; + virtual QString getDHTBootstrapNodes() const = 0; virtual void setDHTBootstrapNodes(const QString &nodes) = 0; virtual bool isDHTEnabled() const = 0; @@ -215,8 +216,8 @@ namespace BitTorrent virtual void setPeXEnabled(bool enabled) = 0; virtual bool isAddTorrentToQueueTop() const = 0; virtual void setAddTorrentToQueueTop(bool value) = 0; - virtual bool isAddTorrentPaused() const = 0; - virtual void setAddTorrentPaused(bool value) = 0; + virtual bool isAddTorrentStopped() const = 0; + virtual void setAddTorrentStopped(bool value) = 0; virtual Torrent::StopCondition torrentStopCondition() const = 0; virtual void setTorrentStopCondition(Torrent::StopCondition stopCondition) = 0; virtual TorrentContentLayout torrentContentLayout() const = 0; @@ -225,6 +226,8 @@ namespace BitTorrent virtual void setTrackerEnabled(bool enabled) = 0; virtual bool isAppendExtensionEnabled() const = 0; virtual void setAppendExtensionEnabled(bool enabled) = 0; + virtual bool isUnwantedFolderEnabled() const = 0; + virtual void setUnwantedFolderEnabled(bool enabled) = 0; virtual int refreshInterval() const = 0; virtual void setRefreshInterval(int value) = 0; virtual bool isPreallocationEnabled() const = 0; @@ -234,6 +237,12 @@ namespace BitTorrent virtual Path finishedTorrentExportDirectory() const = 0; virtual void setFinishedTorrentExportDirectory(const Path &path) = 0; + virtual bool isAddTrackersFromURLEnabled() const = 0; + virtual void setAddTrackersFromURLEnabled(bool enabled) = 0; + virtual QString additionalTrackersURL() const = 0; + virtual void setAdditionalTrackersURL(const QString &url) = 0; + virtual QString additionalTrackersFromURL() const = 0; + virtual int globalDownloadSpeedLimit() const = 0; virtual void setGlobalDownloadSpeedLimit(int limit) = 0; virtual int globalUploadSpeedLimit() const = 0; @@ -255,8 +264,16 @@ namespace BitTorrent virtual void setPerformanceWarningEnabled(bool enable) = 0; virtual int saveResumeDataInterval() const = 0; virtual void setSaveResumeDataInterval(int value) = 0; + virtual std::chrono::minutes saveStatisticsInterval() const = 0; + virtual void setSaveStatisticsInterval(std::chrono::minutes value) = 0; + virtual int shutdownTimeout() const = 0; + virtual void setShutdownTimeout(int value) = 0; virtual int port() const = 0; virtual void setPort(int port) = 0; + virtual bool isSSLEnabled() const = 0; + virtual void setSSLEnabled(bool enabled) = 0; + virtual int sslPort() const = 0; + virtual void setSSLPort(int port) = 0; virtual QString networkInterface() const = 0; virtual void setNetworkInterface(const QString &iface) = 0; virtual QString networkInterfaceName() const = 0; @@ -375,6 +392,8 @@ namespace BitTorrent virtual void setIncludeOverheadInLimits(bool include) = 0; virtual QString announceIP() const = 0; virtual void setAnnounceIP(const QString &ip) = 0; + virtual int announcePort() const = 0; + virtual void setAnnouncePort(int port) = 0; virtual int maxConcurrentHTTPAnnounces() const = 0; virtual void setMaxConcurrentHTTPAnnounces(int value) = 0; virtual bool isReannounceWhenAddressChangedEnabled() const = 0; @@ -418,39 +437,47 @@ namespace BitTorrent virtual void setExcludedFileNamesEnabled(bool enabled) = 0; virtual QStringList excludedFileNames() const = 0; virtual void setExcludedFileNames(const QStringList &newList) = 0; - virtual bool isFilenameExcluded(const QString &fileName) const = 0; + virtual void applyFilenameFilter(const PathList &files, QList &priorities) = 0; virtual QStringList bannedIPs() const = 0; virtual void setBannedIPs(const QStringList &newList) = 0; virtual ResumeDataStorageType resumeDataStorageType() const = 0; virtual void setResumeDataStorageType(ResumeDataStorageType type) = 0; virtual bool isMergeTrackersEnabled() const = 0; virtual void setMergeTrackersEnabled(bool enabled) = 0; + virtual bool isStartPaused() const = 0; + virtual void setStartPaused(bool value) = 0; + virtual TorrentContentRemoveOption torrentContentRemoveOption() const = 0; + virtual void setTorrentContentRemoveOption(TorrentContentRemoveOption option) = 0; virtual bool isRestored() const = 0; + virtual bool isPaused() const = 0; + virtual void pause() = 0; + virtual void resume() = 0; + virtual Torrent *getTorrent(const TorrentID &id) const = 0; virtual Torrent *findTorrent(const InfoHash &infoHash) const = 0; - virtual QVector torrents() const = 0; + virtual QList torrents() const = 0; virtual qsizetype torrentsCount() const = 0; virtual const SessionStatus &status() const = 0; virtual const CacheStatus &cacheStatus() const = 0; virtual bool isListening() const = 0; - virtual MaxRatioAction maxRatioAction() const = 0; - virtual void setMaxRatioAction(MaxRatioAction act) = 0; - virtual void banIP(const QString &ip) = 0; virtual bool isKnownTorrent(const InfoHash &infoHash) const = 0; virtual bool addTorrent(const TorrentDescriptor &torrentDescr, const AddTorrentParams ¶ms = {}) = 0; - virtual bool deleteTorrent(const TorrentID &id, DeleteOption deleteOption = DeleteOption::DeleteTorrent) = 0; + virtual bool removeTorrent(const TorrentID &id, TorrentRemoveOption deleteOption = TorrentRemoveOption::KeepContent) = 0; virtual bool downloadMetadata(const TorrentDescriptor &torrentDescr) = 0; virtual bool cancelDownloadMetadata(const TorrentID &id) = 0; - virtual void increaseTorrentsQueuePos(const QVector &ids) = 0; - virtual void decreaseTorrentsQueuePos(const QVector &ids) = 0; - virtual void topTorrentsQueuePos(const QVector &ids) = 0; - virtual void bottomTorrentsQueuePos(const QVector &ids) = 0; + virtual void increaseTorrentsQueuePos(const QList &ids) = 0; + virtual void decreaseTorrentsQueuePos(const QList &ids) = 0; + virtual void topTorrentsQueuePos(const QList &ids) = 0; + virtual void bottomTorrentsQueuePos(const QList &ids) = 0; + + virtual QString lastExternalIPv4Address() const = 0; + virtual QString lastExternalIPv6Address() const = 0; signals: void startupProgressUpdated(int progress); @@ -464,31 +491,33 @@ namespace BitTorrent void loadTorrentFailed(const QString &error); void metadataDownloaded(const TorrentInfo &info); void restored(); + void paused(); + void resumed(); void speedLimitModeChanged(bool alternative); void statsUpdated(); void subcategoriesSupportChanged(); - void tagAdded(const QString &tag); - void tagRemoved(const QString &tag); + void tagAdded(const Tag &tag); + void tagRemoved(const Tag &tag); void torrentAboutToBeRemoved(Torrent *torrent); void torrentAdded(Torrent *torrent); void torrentCategoryChanged(Torrent *torrent, const QString &oldCategory); void torrentFinished(Torrent *torrent); void torrentFinishedChecking(Torrent *torrent); void torrentMetadataReceived(Torrent *torrent); - void torrentPaused(Torrent *torrent); - void torrentResumed(Torrent *torrent); + void torrentStopped(Torrent *torrent); + void torrentStarted(Torrent *torrent); void torrentSavePathChanged(Torrent *torrent); void torrentSavingModeChanged(Torrent *torrent); - void torrentsLoaded(const QVector &torrents); - void torrentsUpdated(const QVector &torrents); - void torrentTagAdded(Torrent *torrent, const QString &tag); - void torrentTagRemoved(Torrent *torrent, const QString &tag); + void torrentsLoaded(const QList &torrents); + void torrentsUpdated(const QList &torrents); + void torrentTagAdded(Torrent *torrent, const Tag &tag); + void torrentTagRemoved(Torrent *torrent, const Tag &tag); void trackerError(Torrent *torrent, const QString &tracker); - void trackersAdded(Torrent *torrent, const QVector &trackers); + void trackersAdded(Torrent *torrent, const QList &trackers); void trackersChanged(Torrent *torrent); void trackersRemoved(Torrent *torrent, const QStringList &trackers); void trackerSuccess(Torrent *torrent, const QString &tracker); void trackerWarning(Torrent *torrent, const QString &tracker); - void trackerEntriesUpdated(Torrent *torrent, const QHash &updatedTrackerEntries); + void trackerEntryStatusesUpdated(Torrent *torrent, const QHash &updatedTrackers); }; } diff --git a/src/base/bittorrent/sessionimpl.cpp b/src/base/bittorrent/sessionimpl.cpp index 091109d71b68..09df5d1e7ee1 100644 --- a/src/base/bittorrent/sessionimpl.cpp +++ b/src/base/bittorrent/sessionimpl.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -30,7 +30,6 @@ #include "sessionimpl.h" #include -#include #include #include #include @@ -58,6 +57,8 @@ #include #include +#include +#include #include #include #include @@ -65,29 +66,29 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include "base/algorithm.h" #include "base/global.h" #include "base/logger.h" +#include "base/net/downloadmanager.h" #include "base/net/proxyconfigurationmanager.h" #include "base/preferences.h" #include "base/profile.h" -#include "base/torrentfilter.h" #include "base/unicodestrings.h" -#include "base/utils/bytearray.h" #include "base/utils/fs.h" #include "base/utils/io.h" -#include "base/utils/misc.h" #include "base/utils/net.h" +#include "base/utils/number.h" #include "base/utils/random.h" +#include "base/utils/string.h" #include "base/version.h" #include "bandwidthscheduler.h" #include "bencoderesumedatastorage.h" @@ -102,22 +103,24 @@ #include "nativesessionextension.h" #include "portforwarderimpl.h" #include "resumedatastorage.h" +#include "torrentcontentremover.h" #include "torrentdescriptor.h" #include "torrentimpl.h" #include "tracker.h" +#include "trackerentry.h" +#include "trackerentrystatus.h" using namespace std::chrono_literals; using namespace BitTorrent; const Path CATEGORIES_FILE_NAME {u"categories.json"_s}; const int MAX_PROCESSING_RESUMEDATA_COUNT = 50; -const int STATISTICS_SAVE_INTERVAL = std::chrono::milliseconds(15min).count(); namespace { const char PEER_ID[] = "qB"; const auto USER_AGENT = QStringLiteral("qBittorrent/" QBT_VERSION_2); - const QString DEFAULT_DHT_BOOTSTRAP_NODES = u"dht.libtorrent.org:25401, dht.transmissionbt.com:6881, router.bittorrent.com:6881, router.utorrent.com:6881, dht.aelitis.com:6881"_s; + const QString DEFAULT_DHT_BOOTSTRAP_NODES = u"dht.libtorrent.org:25401, dht.transmissionbt.com:6881, router.bittorrent.com:6881"_s; void torrentQueuePositionUp(const lt::torrent_handle &handle) { @@ -223,7 +226,7 @@ namespace { try { - return QString::fromLatin1(address.to_string().c_str()); + return Utils::String::fromLatin1(address.to_string()); } catch (const std::exception &) { @@ -297,14 +300,15 @@ namespace { switch (mode) { - default: - Q_ASSERT(false); case MoveStorageMode::FailIfExist: return lt::move_flags_t::fail_if_exist; case MoveStorageMode::KeepExistingFiles: return lt::move_flags_t::dont_replace; case MoveStorageMode::Overwrite: return lt::move_flags_t::always_replace_files; + default: + Q_UNREACHABLE(); + break; } } } @@ -355,9 +359,22 @@ bool Session::isValidCategoryName(const QString &name) return (name.isEmpty() || (name.indexOf(re) == 0)); } -bool Session::isValidTag(const QString &tag) +QString Session::subcategoryName(const QString &category) +{ + const int sepIndex = category.lastIndexOf(u'/'); + if (sepIndex >= 0) + return category.mid(sepIndex + 1); + + return category; +} + +QString Session::parentCategoryName(const QString &category) { - return (!tag.trimmed().isEmpty() && !tag.contains(u',')); + const int sepIndex = category.lastIndexOf(u'/'); + if (sepIndex >= 0) + return category.left(sepIndex); + + return {}; } QStringList Session::expandCategory(const QString &category) @@ -428,6 +445,7 @@ SessionImpl::SessionImpl(QObject *parent) , m_ignoreLimitsOnLAN(BITTORRENT_SESSION_KEY(u"IgnoreLimitsOnLAN"_s), false) , m_includeOverheadInLimits(BITTORRENT_SESSION_KEY(u"IncludeOverheadInLimits"_s), false) , m_announceIP(BITTORRENT_SESSION_KEY(u"AnnounceIP"_s)) + , m_announcePort(BITTORRENT_SESSION_KEY(u"AnnouncePort"_s), 0) , m_maxConcurrentHTTPAnnounces(BITTORRENT_SESSION_KEY(u"MaxConcurrentHTTPAnnounces"_s), 50) , m_isReannounceWhenAddressChangedEnabled(BITTORRENT_SESSION_KEY(u"ReannounceWhenAddressChanged"_s), false) , m_stopTrackerTimeout(BITTORRENT_SESSION_KEY(u"StopTrackerTimeout"_s), 2) @@ -447,14 +465,17 @@ SessionImpl::SessionImpl(QObject *parent) , m_blockPeersOnPrivilegedPorts(BITTORRENT_SESSION_KEY(u"BlockPeersOnPrivilegedPorts"_s), false) , m_isAddTrackersEnabled(BITTORRENT_SESSION_KEY(u"AddTrackersEnabled"_s), false) , m_additionalTrackers(BITTORRENT_SESSION_KEY(u"AdditionalTrackers"_s)) + , m_isAddTrackersFromURLEnabled(BITTORRENT_SESSION_KEY(u"AddTrackersFromURLEnabled"_s), false) + , m_additionalTrackersURL(BITTORRENT_SESSION_KEY(u"AdditionalTrackersURL"_s)) , m_globalMaxRatio(BITTORRENT_SESSION_KEY(u"GlobalMaxRatio"_s), -1, [](qreal r) { return r < 0 ? -1. : r;}) , m_globalMaxSeedingMinutes(BITTORRENT_SESSION_KEY(u"GlobalMaxSeedingMinutes"_s), -1, lowerLimited(-1)) , m_globalMaxInactiveSeedingMinutes(BITTORRENT_SESSION_KEY(u"GlobalMaxInactiveSeedingMinutes"_s), -1, lowerLimited(-1)) , m_isAddTorrentToQueueTop(BITTORRENT_SESSION_KEY(u"AddTorrentToTopOfQueue"_s), false) - , m_isAddTorrentPaused(BITTORRENT_SESSION_KEY(u"AddTorrentPaused"_s), false) + , m_isAddTorrentStopped(BITTORRENT_SESSION_KEY(u"AddTorrentStopped"_s), false) , m_torrentStopCondition(BITTORRENT_SESSION_KEY(u"TorrentStopCondition"_s), Torrent::StopCondition::None) , m_torrentContentLayout(BITTORRENT_SESSION_KEY(u"TorrentContentLayout"_s), TorrentContentLayout::Original) , m_isAppendExtensionEnabled(BITTORRENT_SESSION_KEY(u"AddExtensionToIncompleteFiles"_s), false) + , m_isUnwantedFolderEnabled(BITTORRENT_SESSION_KEY(u"UseUnwantedFolder"_s), false) , m_refreshInterval(BITTORRENT_SESSION_KEY(u"RefreshInterval"_s), 1500) , m_isPreallocationEnabled(BITTORRENT_SESSION_KEY(u"Preallocation"_s), false) , m_torrentExportDirectory(BITTORRENT_SESSION_KEY(u"TorrentExportDirectory"_s)) @@ -467,7 +488,11 @@ SessionImpl::SessionImpl(QObject *parent) , m_isBandwidthSchedulerEnabled(BITTORRENT_SESSION_KEY(u"BandwidthSchedulerEnabled"_s), false) , m_isPerformanceWarningEnabled(BITTORRENT_SESSION_KEY(u"PerformanceWarning"_s), false) , m_saveResumeDataInterval(BITTORRENT_SESSION_KEY(u"SaveResumeDataInterval"_s), 60) + , m_saveStatisticsInterval(BITTORRENT_SESSION_KEY(u"SaveStatisticsInterval"_s), 15) + , m_shutdownTimeout(BITTORRENT_SESSION_KEY(u"ShutdownTimeout"_s), -1) , m_port(BITTORRENT_SESSION_KEY(u"Port"_s), -1) + , m_sslEnabled(BITTORRENT_SESSION_KEY(u"SSL/Enabled"_s), false) + , m_sslPort(BITTORRENT_SESSION_KEY(u"SSL/Port"_s), -1) , m_networkInterface(BITTORRENT_SESSION_KEY(u"Interface"_s)) , m_networkInterfaceName(BITTORRENT_SESSION_KEY(u"InterfaceName"_s)) , m_networkInterfaceAddress(BITTORRENT_SESSION_KEY(u"InterfaceAddress"_s)) @@ -479,7 +504,8 @@ SessionImpl::SessionImpl(QObject *parent) , m_seedChokingAlgorithm(BITTORRENT_SESSION_KEY(u"SeedChokingAlgorithm"_s), SeedChokingAlgorithm::FastestUpload , clampValue(SeedChokingAlgorithm::RoundRobin, SeedChokingAlgorithm::AntiLeech)) , m_storedTags(BITTORRENT_SESSION_KEY(u"Tags"_s)) - , m_maxRatioAction(BITTORRENT_SESSION_KEY(u"MaxRatioAction"_s), Pause) + , m_shareLimitAction(BITTORRENT_SESSION_KEY(u"ShareLimitAction"_s), ShareLimitAction::Stop + , [](const ShareLimitAction action) { return (action == ShareLimitAction::Default) ? ShareLimitAction::Stop : action; }) , m_savePath(BITTORRENT_SESSION_KEY(u"DefaultSavePath"_s), specialFolderLocation(SpecialFolder::Downloads)) , m_downloadPath(BITTORRENT_SESSION_KEY(u"TempPath"_s), (savePath() / Path(u"temp"_s))) , m_isDownloadPathEnabled(BITTORRENT_SESSION_KEY(u"TempPathEnabled"_s), false) @@ -507,6 +533,8 @@ SessionImpl::SessionImpl(QObject *parent) , m_I2POutboundQuantity {BITTORRENT_SESSION_KEY(u"I2P/OutboundQuantity"_s), 3} , m_I2PInboundLength {BITTORRENT_SESSION_KEY(u"I2P/InboundLength"_s), 3} , m_I2POutboundLength {BITTORRENT_SESSION_KEY(u"I2P/OutboundLength"_s), 3} + , m_torrentContentRemoveOption {BITTORRENT_SESSION_KEY(u"TorrentContentRemoveOption"_s), TorrentContentRemoveOption::Delete} + , m_startPaused {BITTORRENT_SESSION_KEY(u"StartPaused"_s)} , m_seedingLimitTimer {new QTimer(this)} , m_resumeDataTimer {new QTimer(this)} , m_ioThread {new QThread} @@ -515,9 +543,18 @@ SessionImpl::SessionImpl(QObject *parent) { // It is required to perform async access to libtorrent sequentially m_asyncWorker->setMaxThreadCount(1); + m_asyncWorker->setObjectName("SessionImpl m_asyncWorker"); + + m_alerts.reserve(1024); if (port() < 0) m_port = Utils::Random::rand(1024, 65535); + if (sslPort() < 0) + { + m_sslPort = Utils::Random::rand(1024, 65535); + while (m_sslPort == port()) + m_sslPort = Utils::Random::rand(1024, 65535); + } m_recentErroredTorrentsTimer->setSingleShot(true); m_recentErroredTorrentsTimer->setInterval(1s); @@ -525,7 +562,14 @@ SessionImpl::SessionImpl(QObject *parent) , this, [this]() { m_recentErroredTorrents.clear(); }); m_seedingLimitTimer->setInterval(10s); - connect(m_seedingLimitTimer, &QTimer::timeout, this, &SessionImpl::processShareLimits); + connect(m_seedingLimitTimer, &QTimer::timeout, this, [this] + { + // We shouldn't iterate over `m_torrents` in the loop below + // since `deleteTorrent()` modifies it indirectly + const QHash torrents {m_torrents}; + for (TorrentImpl *torrent : torrents) + processTorrentShareLimits(torrent); + }); initializeNativeSession(); configureComponents(); @@ -541,7 +585,11 @@ SessionImpl::SessionImpl(QObject *parent) } const QStringList storedTags = m_storedTags.get(); - m_tags = {storedTags.cbegin(), storedTags.cend()}; + for (const QString &tagStr : storedTags) + { + if (const Tag tag {tagStr}; tag.isValid()) + m_tags.insert(tag); + } updateSeedingLimitTimer(); populateAdditionalTrackers(); @@ -557,6 +605,12 @@ SessionImpl::SessionImpl(QObject *parent) connect(m_ioThread.get(), &QThread::finished, m_fileSearcher, &QObject::deleteLater); connect(m_fileSearcher, &FileSearcher::searchFinished, this, &SessionImpl::fileSearchFinished); + m_torrentContentRemover = new TorrentContentRemover; + m_torrentContentRemover->moveToThread(m_ioThread.get()); + connect(m_ioThread.get(), &QThread::finished, m_torrentContentRemover, &QObject::deleteLater); + connect(m_torrentContentRemover, &TorrentContentRemover::jobFinished, this, &SessionImpl::torrentContentRemovingFinished); + + m_ioThread->setObjectName("SessionImpl m_ioThread"); m_ioThread->start(); initMetrics(); @@ -569,12 +623,24 @@ SessionImpl::SessionImpl(QObject *parent) enableTracker(isTrackerEnabled()); prepareStartup(); + + m_updateTrackersFromURLTimer = new QTimer(this); + m_updateTrackersFromURLTimer->setInterval(24h); + connect(m_updateTrackersFromURLTimer, &QTimer::timeout, this, &SessionImpl::updateTrackersFromURL); + if (isAddTrackersFromURLEnabled()) + { + updateTrackersFromURL(); + m_updateTrackersFromURLTimer->start(); + } } SessionImpl::~SessionImpl() { m_nativeSession->pause(); + const auto timeout = (m_shutdownTimeout >= 0) ? (static_cast(m_shutdownTimeout) * 1000) : -1; + const QDeadlineTimer shutdownDeadlineTimer {timeout}; + if (m_torrentsQueueChanged) { m_nativeSession->post_torrent_updates({}); @@ -601,8 +667,25 @@ SessionImpl::~SessionImpl() m_asyncWorker->clear(); m_asyncWorker->waitForDone(); - qDebug("Deleting libtorrent session..."); + auto *nativeSessionProxy = new lt::session_proxy(m_nativeSession->abort()); delete m_nativeSession; + + qDebug("Deleting resume data storage..."); + delete m_resumeDataStorage; + LogMsg(tr("Saving resume data completed.")); + + auto *sessionTerminateThread = QThread::create([nativeSessionProxy]() + { + qDebug("Deleting libtorrent session..."); + delete nativeSessionProxy; + }); + sessionTerminateThread->setObjectName("~SessionImpl sessionTerminateThread"); + connect(sessionTerminateThread, &QThread::finished, sessionTerminateThread, &QObject::deleteLater); + sessionTerminateThread->start(); + if (sessionTerminateThread->wait(shutdownDeadlineTimer)) + LogMsg(tr("BitTorrent session successfully finished.")); + else + LogMsg(tr("Session shutdown timed out.")); } QString SessionImpl::getDHTBootstrapNodes() const @@ -695,6 +778,23 @@ void SessionImpl::setAppendExtensionEnabled(const bool enabled) } } +bool SessionImpl::isUnwantedFolderEnabled() const +{ + return m_isUnwantedFolderEnabled; +} + +void SessionImpl::setUnwantedFolderEnabled(const bool enabled) +{ + if (isUnwantedFolderEnabled() != enabled) + { + m_isUnwantedFolderEnabled = enabled; + + // append or remove .!qB extension for incomplete files + for (TorrentImpl *const torrent : asConst(m_torrents)) + torrent->handleUnwantedFolderToggled(); + } +} + int SessionImpl::refreshInterval() const { return m_refreshInterval; @@ -764,34 +864,77 @@ CategoryOptions SessionImpl::categoryOptions(const QString &categoryName) const Path SessionImpl::categorySavePath(const QString &categoryName) const { - const Path basePath = savePath(); + return categorySavePath(categoryName, categoryOptions(categoryName)); +} + +Path SessionImpl::categorySavePath(const QString &categoryName, const CategoryOptions &options) const +{ + Path basePath = savePath(); if (categoryName.isEmpty()) return basePath; - Path path = m_categories.value(categoryName).savePath; - if (path.isEmpty()) // use implicit save path - path = Utils::Fs::toValidPath(categoryName); + Path path = options.savePath; + if (path.isEmpty()) + { + // use implicit save path + if (isSubcategoriesEnabled()) + { + path = Utils::Fs::toValidPath(subcategoryName(categoryName)); + basePath = categorySavePath(parentCategoryName(categoryName)); + } + else + { + path = Utils::Fs::toValidPath(categoryName); + } + } return (path.isAbsolute() ? path : (basePath / path)); } Path SessionImpl::categoryDownloadPath(const QString &categoryName) const { - const CategoryOptions categoryOptions = m_categories.value(categoryName); - const CategoryOptions::DownloadPathOption downloadPathOption = - categoryOptions.downloadPath.value_or(CategoryOptions::DownloadPathOption {isDownloadPathEnabled(), downloadPath()}); + return categoryDownloadPath(categoryName, categoryOptions(categoryName)); +} + +Path SessionImpl::categoryDownloadPath(const QString &categoryName, const CategoryOptions &options) const +{ + const DownloadPathOption downloadPathOption = resolveCategoryDownloadPathOption(categoryName, options.downloadPath); if (!downloadPathOption.enabled) return {}; - const Path basePath = downloadPath(); if (categoryName.isEmpty()) - return basePath; + return downloadPath(); - const Path path = (!downloadPathOption.path.isEmpty() - ? downloadPathOption.path - : Utils::Fs::toValidPath(categoryName)); // use implicit download path + const bool useSubcategories = isSubcategoriesEnabled(); + const QString name = useSubcategories ? subcategoryName(categoryName) : categoryName; + const Path path = !downloadPathOption.path.isEmpty() + ? downloadPathOption.path + : Utils::Fs::toValidPath(name); // use implicit download path - return (path.isAbsolute() ? path : (basePath / path)); + if (path.isAbsolute()) + return path; + + const QString parentName = useSubcategories ? parentCategoryName(categoryName) : QString(); + CategoryOptions parentOptions = categoryOptions(parentName); + // Even if download path of parent category is disabled (directly or by inheritance) + // we need to construct the one as if it would be enabled. + if (!parentOptions.downloadPath || !parentOptions.downloadPath->enabled) + parentOptions.downloadPath = {true, {}}; + const Path parentDownloadPath = categoryDownloadPath(parentName, parentOptions); + const Path basePath = parentDownloadPath.isEmpty() ? downloadPath() : parentDownloadPath; + return (basePath / path); +} + +DownloadPathOption SessionImpl::resolveCategoryDownloadPathOption(const QString &categoryName, const std::optional &option) const +{ + if (categoryName.isEmpty()) + return {isDownloadPathEnabled(), Path()}; + + if (option.has_value()) + return *option; + + const QString parentName = isSubcategoriesEnabled() ? parentCategoryName(categoryName) : QString(); + return resolveCategoryDownloadPathOption(parentName, categoryOptions(parentName).downloadPath); } bool SessionImpl::addCategory(const QString &name, const CategoryOptions &options) @@ -943,34 +1086,37 @@ Path SessionImpl::suggestedDownloadPath(const QString &categoryName, std::option return path; } -QSet SessionImpl::tags() const +TagSet SessionImpl::tags() const { return m_tags; } -bool SessionImpl::hasTag(const QString &tag) const +bool SessionImpl::hasTag(const Tag &tag) const { return m_tags.contains(tag); } -bool SessionImpl::addTag(const QString &tag) +bool SessionImpl::addTag(const Tag &tag) { - if (!isValidTag(tag) || hasTag(tag)) + if (!tag.isValid() || hasTag(tag)) return false; m_tags.insert(tag); - m_storedTags = m_tags.values(); + m_storedTags = QStringList(m_tags.cbegin(), m_tags.cend()); + emit tagAdded(tag); return true; } -bool SessionImpl::removeTag(const QString &tag) +bool SessionImpl::removeTag(const Tag &tag) { if (m_tags.remove(tag)) { for (TorrentImpl *const torrent : asConst(m_torrents)) torrent->removeTag(tag); - m_storedTags = m_tags.values(); + + m_storedTags = QStringList(m_tags.cbegin(), m_tags.cend()); + emit tagRemoved(tag); return true; } @@ -1027,14 +1173,14 @@ void SessionImpl::setAddTorrentToQueueTop(bool value) m_isAddTorrentToQueueTop = value; } -bool SessionImpl::isAddTorrentPaused() const +bool SessionImpl::isAddTorrentStopped() const { - return m_isAddTorrentPaused; + return m_isAddTorrentStopped; } -void SessionImpl::setAddTorrentPaused(const bool value) +void SessionImpl::setAddTorrentStopped(const bool value) { - m_isAddTorrentPaused = value; + m_isAddTorrentStopped = value; } Torrent::StopCondition SessionImpl::torrentStopCondition() const @@ -1181,7 +1327,7 @@ void SessionImpl::prepareStartup() context->startupStorage = m_resumeDataStorage; connect(context->startupStorage, &ResumeDataStorage::loadStarted, context - , [this, context](const QVector &torrents) + , [this, context](const QList &torrents) { context->totalResumeDataCount = torrents.size(); #ifdef QBT_USES_LIBTORRENT2 @@ -1196,13 +1342,13 @@ void SessionImpl::prepareStartup() context->isLoadFinished = true; }); - connect(this, &SessionImpl::torrentsLoaded, context, [this, context](const QVector &torrents) + connect(this, &SessionImpl::addTorrentAlertsReceived, context, [this, context](const qsizetype alertsCount) { - context->processingResumeDataCount -= torrents.count(); - context->finishedResumeDataCount += torrents.count(); + context->processingResumeDataCount -= alertsCount; + context->finishedResumeDataCount += alertsCount; if (!context->isLoadedResumeDataHandlingEnqueued) { - QMetaObject::invokeMethod(this, [this, context]() { handleLoadedResumeData(context); }, Qt::QueuedConnection); + QMetaObject::invokeMethod(this, [this, context] { handleLoadedResumeData(context); }, Qt::QueuedConnection); context->isLoadedResumeDataHandlingEnqueued = true; } @@ -1393,7 +1539,7 @@ void SessionImpl::processNextResumeData(ResumeSessionContext *context) } } - std::erase_if(resumeData.tags, [this, &torrentID](const QString &tag) + std::erase_if(resumeData.tags, [this, &torrentID](const Tag &tag) { if (hasTag(tag)) return false; @@ -1402,12 +1548,12 @@ void SessionImpl::processNextResumeData(ResumeSessionContext *context) { LogMsg(tr("Detected inconsistent data: tag is missing from the configuration file." " Tag will be recovered." - " Torrent: \"%1\". Tag: \"%2\"").arg(torrentID.toString(), tag), Log::WARNING); + " Torrent: \"%1\". Tag: \"%2\"").arg(torrentID.toString(), tag.toString()), Log::WARNING); return false; } LogMsg(tr("Detected inconsistent data: invalid tag. Torrent: \"%1\". Tag: \"%2\"") - .arg(torrentID.toString(), tag), Log::WARNING); + .arg(torrentID.toString(), tag.toString()), Log::WARNING); return true; }); @@ -1452,7 +1598,9 @@ void SessionImpl::endStartup(ResumeSessionContext *context) context->deleteLater(); connect(context, &QObject::destroyed, this, [this] { - m_nativeSession->resume(); + if (!m_isPaused) + m_nativeSession->resume(); + if (m_refreshEnqueued) m_refreshEnqueued = false; else @@ -1469,20 +1617,24 @@ void SessionImpl::endStartup(ResumeSessionContext *context) m_resumeDataTimer->start(); } - m_wakeupCheckTimer = new QTimer(this); - connect(m_wakeupCheckTimer, &QTimer::timeout, this, [this] + auto wakeupCheckTimer = new QTimer(this); + connect(wakeupCheckTimer, &QTimer::timeout, this, [this] { - const auto now = QDateTime::currentDateTime(); - if (m_wakeupCheckTimestamp.secsTo(now) > 100) +#if (QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)) + const bool hasSystemSlept = m_wakeupCheckTimestamp.durationElapsed() > 100s; +#else + const bool hasSystemSlept = m_wakeupCheckTimestamp.elapsed() > std::chrono::milliseconds(100s).count(); +#endif + if (hasSystemSlept) { LogMsg(tr("System wake-up event detected. Re-announcing to all the trackers...")); reannounceToAllTrackers(); } - m_wakeupCheckTimestamp = QDateTime::currentDateTime(); + m_wakeupCheckTimestamp.start(); }); - m_wakeupCheckTimestamp = QDateTime::currentDateTime(); - m_wakeupCheckTimer->start(30s); + m_wakeupCheckTimestamp.start(); + wakeupCheckTimer->start(30s); m_isRestored = true; emit startupProgressUpdated(100); @@ -1511,6 +1663,13 @@ void SessionImpl::initializeNativeSession() #ifdef QBT_USES_LIBTORRENT2 // preserve the same behavior as in earlier libtorrent versions pack.set_bool(lt::settings_pack::enable_set_file_valid_data, true); + + // This is a special case. We use MMap disk IO but tweak it to always fallback to pread/pwrite. + if (diskIOType() == DiskIOType::SimplePreadPwrite) + { + pack.set_int(lt::settings_pack::mmap_file_size_cutoff, std::numeric_limits::max()); + pack.set_int(lt::settings_pack::disk_write_mode, lt::settings_pack::mmap_write_mode_t::always_pwrite); + } #endif lt::session_params sessionParams {std::move(pack), {}}; @@ -1521,6 +1680,7 @@ void SessionImpl::initializeNativeSession() sessionParams.disk_io_constructor = customPosixDiskIOConstructor; break; case DiskIOType::MMap: + case DiskIOType::SimplePreadPwrite: sessionParams.disk_io_constructor = customMMapDiskIOConstructor; break; default: @@ -1845,6 +2005,10 @@ lt::settings_pack SessionImpl::loadLTSettings() const settingsPack.set_bool(lt::settings_pack::rate_limit_ip_overhead, includeOverheadInLimits()); // IP address to announce to trackers settingsPack.set_str(lt::settings_pack::announce_ip, announceIP().toStdString()); +#if LIBTORRENT_VERSION_NUM >= 20011 + // Port to announce to trackers + settingsPack.set_int(lt::settings_pack::announce_port, announcePort()); +#endif // Max concurrent HTTP announces settingsPack.set_int(lt::settings_pack::max_concurrent_http_announces, maxConcurrentHTTPAnnounces()); // Stop tracker timeout @@ -1944,7 +2108,9 @@ void SessionImpl::applyNetworkInterfacesSettings(lt::settings_pack &settingsPack QStringList endpoints; QStringList outgoingInterfaces; - const QString portString = u':' + QString::number(port()); + QStringList portStrings = {u':' + QString::number(port())}; + if (isSSLEnabled()) + portStrings.append(u':' + QString::number(sslPort()) + u's'); for (const QString &ip : asConst(getListeningIPs())) { @@ -1956,7 +2122,8 @@ void SessionImpl::applyNetworkInterfacesSettings(lt::settings_pack &settingsPack ? Utils::Net::canonicalIPv6Addr(addr).toString() : addr.toString(); - endpoints << ((isIPv6 ? (u'[' + ip + u']') : ip) + portString); + for (const QString &portString : asConst(portStrings)) + endpoints << ((isIPv6 ? (u'[' + ip + u']') : ip) + portString); if ((ip != u"0.0.0.0") && (ip != u"::")) outgoingInterfaces << ip; @@ -1971,7 +2138,8 @@ void SessionImpl::applyNetworkInterfacesSettings(lt::settings_pack &settingsPack const QString guid = convertIfaceNameToGuid(ip); if (!guid.isEmpty()) { - endpoints << (guid + portString); + for (const QString &portString : asConst(portStrings)) + endpoints << (guid + portString); outgoingInterfaces << guid; } else @@ -1979,11 +2147,13 @@ void SessionImpl::applyNetworkInterfacesSettings(lt::settings_pack &settingsPack LogMsg(tr("Could not find GUID of network interface. Interface: \"%1\"").arg(ip), Log::WARNING); // Since we can't get the GUID, we'll pass the interface name instead. // Otherwise an empty string will be passed to outgoing_interface which will cause IP leak. - endpoints << (ip + portString); + for (const QString &portString : asConst(portStrings)) + endpoints << (ip + portString); outgoingInterfaces << ip; } #else - endpoints << (ip + portString); + for (const QString &portString : asConst(portStrings)) + endpoints << (ip + portString); outgoingInterfaces << ip; #endif } @@ -2114,152 +2284,74 @@ void SessionImpl::enableBandwidthScheduler() void SessionImpl::populateAdditionalTrackers() { - m_additionalTrackerList.clear(); + m_additionalTrackerEntries = parseTrackerEntries(additionalTrackers()); +} - const QString trackers = additionalTrackers(); - for (QStringView tracker : asConst(QStringView(trackers).split(u'\n'))) - { - tracker = tracker.trimmed(); - if (!tracker.isEmpty()) - m_additionalTrackerList.append({tracker.toString()}); - } +void SessionImpl::populateAdditionalTrackersFromURL() +{ + m_additionalTrackerEntriesFromURL = parseTrackerEntries(additionalTrackersFromURL()); } -void SessionImpl::processShareLimits() +void SessionImpl::processTorrentShareLimits(TorrentImpl *torrent) { - qDebug("Processing share limits..."); + if (!torrent->isFinished() || torrent->isForced()) + return; - // We shouldn't iterate over `m_torrents` in the loop below - // since `deleteTorrent()` modifies it indirectly - const QHash torrents {m_torrents}; - for (TorrentImpl *const torrent : torrents) + const auto effectiveLimit = [](const T limit, const T useGlobalLimit, const T globalLimit) -> T { - if (torrent->isFinished() && !torrent->isForced()) - { - if (torrent->ratioLimit() != Torrent::NO_RATIO_LIMIT) - { - const qreal ratio = torrent->realRatio(); - qreal ratioLimit = torrent->ratioLimit(); - if (ratioLimit == Torrent::USE_GLOBAL_RATIO) - // If Global Max Ratio is really set... - ratioLimit = globalMaxRatio(); - - if (ratioLimit >= 0) - { - qDebug("Ratio: %f (limit: %f)", ratio, ratioLimit); - - if ((ratio <= Torrent::MAX_RATIO) && (ratio >= ratioLimit)) - { - const QString description = tr("Torrent reached the share ratio limit."); - const QString torrentName = tr("Torrent: \"%1\".").arg(torrent->name()); - - if (m_maxRatioAction == Remove) - { - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removed torrent."), torrentName)); - deleteTorrent(torrent->id()); - } - else if (m_maxRatioAction == DeleteFiles) - { - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removed torrent and deleted its content."), torrentName)); - deleteTorrent(torrent->id(), DeleteTorrentAndFiles); - } - else if ((m_maxRatioAction == Pause) && !torrent->isPaused()) - { - torrent->pause(); - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Torrent paused."), torrentName)); - } - else if ((m_maxRatioAction == EnableSuperSeeding) && !torrent->isPaused() && !torrent->superSeeding()) - { - torrent->setSuperSeeding(true); - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Super seeding enabled."), torrentName)); - } + return (limit == useGlobalLimit) ? globalLimit : limit; + }; - continue; - } - } - } + const qreal ratioLimit = effectiveLimit(torrent->ratioLimit(), Torrent::USE_GLOBAL_RATIO, globalMaxRatio()); + const int seedingTimeLimit = effectiveLimit(torrent->seedingTimeLimit(), Torrent::USE_GLOBAL_SEEDING_TIME, globalMaxSeedingMinutes()); + const int inactiveSeedingTimeLimit = effectiveLimit(torrent->inactiveSeedingTimeLimit(), Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME, globalMaxInactiveSeedingMinutes()); - if (torrent->seedingTimeLimit() != Torrent::NO_SEEDING_TIME_LIMIT) - { - const qlonglong seedingTimeInMinutes = torrent->finishedTime() / 60; - int seedingTimeLimit = torrent->seedingTimeLimit(); - if (seedingTimeLimit == Torrent::USE_GLOBAL_SEEDING_TIME) - { - // If Global Seeding Time Limit is really set... - seedingTimeLimit = globalMaxSeedingMinutes(); - } + bool reached = false; + QString description; - if (seedingTimeLimit >= 0) - { - if ((seedingTimeInMinutes <= Torrent::MAX_SEEDING_TIME) && (seedingTimeInMinutes >= seedingTimeLimit)) - { - const QString description = tr("Torrent reached the seeding time limit."); - const QString torrentName = tr("Torrent: \"%1\".").arg(torrent->name()); - - if (m_maxRatioAction == Remove) - { - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removed torrent."), torrentName)); - deleteTorrent(torrent->id()); - } - else if (m_maxRatioAction == DeleteFiles) - { - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removed torrent and deleted its content."), torrentName)); - deleteTorrent(torrent->id(), DeleteTorrentAndFiles); - } - else if ((m_maxRatioAction == Pause) && !torrent->isPaused()) - { - torrent->pause(); - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Torrent paused."), torrentName)); - } - else if ((m_maxRatioAction == EnableSuperSeeding) && !torrent->isPaused() && !torrent->superSeeding()) - { - torrent->setSuperSeeding(true); - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Super seeding enabled."), torrentName)); - } - } - } - } + if (const qreal ratio = torrent->realRatio(); + (ratioLimit >= 0) && (ratio <= Torrent::MAX_RATIO) && (ratio >= ratioLimit)) + { + reached = true; + description = tr("Torrent reached the share ratio limit."); + } + else if (const qlonglong seedingTimeInMinutes = torrent->finishedTime() / 60; + (seedingTimeLimit >= 0) && (seedingTimeInMinutes <= Torrent::MAX_SEEDING_TIME) && (seedingTimeInMinutes >= seedingTimeLimit)) + { + reached = true; + description = tr("Torrent reached the seeding time limit."); + } + else if (const qlonglong inactiveSeedingTimeInMinutes = torrent->timeSinceActivity() / 60; + (inactiveSeedingTimeLimit >= 0) && (inactiveSeedingTimeInMinutes <= Torrent::MAX_INACTIVE_SEEDING_TIME) && (inactiveSeedingTimeInMinutes >= inactiveSeedingTimeLimit)) + { + reached = true; + description = tr("Torrent reached the inactive seeding time limit."); + } - if (torrent->inactiveSeedingTimeLimit() != Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT) - { - const qlonglong inactiveSeedingTimeInMinutes = torrent->timeSinceActivity() / 60; - int inactiveSeedingTimeLimit = torrent->inactiveSeedingTimeLimit(); - if (inactiveSeedingTimeLimit == Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME) - { - // If Global Seeding Time Limit is really set... - inactiveSeedingTimeLimit = globalMaxInactiveSeedingMinutes(); - } + if (reached) + { + const QString torrentName = tr("Torrent: \"%1\".").arg(torrent->name()); + const ShareLimitAction shareLimitAction = (torrent->shareLimitAction() == ShareLimitAction::Default) ? m_shareLimitAction : torrent->shareLimitAction(); - if (inactiveSeedingTimeLimit >= 0) - { - if ((inactiveSeedingTimeInMinutes <= Torrent::MAX_INACTIVE_SEEDING_TIME) && (inactiveSeedingTimeInMinutes >= inactiveSeedingTimeLimit)) - { - const QString description = tr("Torrent reached the inactive seeding time limit."); - const QString torrentName = tr("Torrent: \"%1\".").arg(torrent->name()); - - if (m_maxRatioAction == Remove) - { - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removed torrent."), torrentName)); - deleteTorrent(torrent->id()); - } - else if (m_maxRatioAction == DeleteFiles) - { - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removed torrent and deleted its content."), torrentName)); - deleteTorrent(torrent->id(), DeleteTorrentAndFiles); - } - else if ((m_maxRatioAction == Pause) && !torrent->isPaused()) - { - torrent->pause(); - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Torrent paused."), torrentName)); - } - else if ((m_maxRatioAction == EnableSuperSeeding) && !torrent->isPaused() && !torrent->superSeeding()) - { - torrent->setSuperSeeding(true); - LogMsg(u"%1 %2 %3"_s.arg(description, tr("Super seeding enabled."), torrentName)); - } - } - } - } + if (shareLimitAction == ShareLimitAction::Remove) + { + LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removing torrent."), torrentName)); + removeTorrent(torrent->id(), TorrentRemoveOption::KeepContent); + } + else if (shareLimitAction == ShareLimitAction::RemoveWithContent) + { + LogMsg(u"%1 %2 %3"_s.arg(description, tr("Removing torrent and deleting its content."), torrentName)); + removeTorrent(torrent->id(), TorrentRemoveOption::RemoveContent); + } + else if ((shareLimitAction == ShareLimitAction::Stop) && !torrent->isStopped()) + { + torrent->stop(); + LogMsg(u"%1 %2 %3"_s.arg(description, tr("Torrent stopped."), torrentName)); + } + else if ((shareLimitAction == ShareLimitAction::EnableSuperSeeding) && !torrent->isStopped() && !torrent->superSeeding()) + { + torrent->setSuperSeeding(true); + LogMsg(u"%1 %2 %3"_s.arg(description, tr("Super seeding enabled."), torrentName)); } } } @@ -2289,6 +2381,19 @@ void SessionImpl::fileSearchFinished(const TorrentID &id, const Path &savePath, } } +void SessionImpl::torrentContentRemovingFinished(const QString &torrentName, const QString &errorMessage) +{ + if (errorMessage.isEmpty()) + { + LogMsg(tr("Torrent content removed. Torrent: \"%1\"").arg(torrentName)); + } + else + { + LogMsg(tr("Failed to remove torrent content. Torrent: \"%1\". Error: \"%2\"") + .arg(torrentName, errorMessage), Log::WARNING); + } +} + Torrent *SessionImpl::getTorrent(const TorrentID &id) const { return m_torrents.value(id); @@ -2335,29 +2440,33 @@ void SessionImpl::banIP(const QString &ip) // Delete a torrent from the session, given its hash // and from the disk, if the corresponding deleteOption is chosen -bool SessionImpl::deleteTorrent(const TorrentID &id, const DeleteOption deleteOption) +bool SessionImpl::removeTorrent(const TorrentID &id, const TorrentRemoveOption deleteOption) { TorrentImpl *const torrent = m_torrents.take(id); - if (!torrent) return false; + if (!torrent) + return false; + + const TorrentID torrentID = torrent->id(); + const QString torrentName = torrent->name(); - qDebug("Deleting torrent with ID: %s", qUtf8Printable(torrent->id().toString())); + qDebug("Deleting torrent with ID: %s", qUtf8Printable(torrentID.toString())); emit torrentAboutToBeRemoved(torrent); if (const InfoHash infoHash = torrent->infoHash(); infoHash.isHybrid()) m_hybridTorrentsByAltID.remove(TorrentID::fromSHA1Hash(infoHash.v1())); // Remove it from session - if (deleteOption == DeleteTorrent) + if (deleteOption == TorrentRemoveOption::KeepContent) { - m_removingTorrents[torrent->id()] = {torrent->name(), {}, deleteOption}; + m_removingTorrents[torrentID] = {torrentName, torrent->actualStorageLocation(), {}, deleteOption}; const lt::torrent_handle nativeHandle {torrent->nativeHandle()}; - const auto iter = std::find_if(m_moveStorageQueue.begin(), m_moveStorageQueue.end() - , [&nativeHandle](const MoveStorageJob &job) + const auto iter = std::find_if(m_moveStorageQueue.cbegin(), m_moveStorageQueue.cend() + , [&nativeHandle](const MoveStorageJob &job) { return job.torrentHandle == nativeHandle; }); - if (iter != m_moveStorageQueue.end()) + if (iter != m_moveStorageQueue.cend()) { // We shouldn't actually remove torrent until existing "move storage jobs" are done torrentQueuePositionBottom(nativeHandle); @@ -2371,35 +2480,36 @@ bool SessionImpl::deleteTorrent(const TorrentID &id, const DeleteOption deleteOp } else { - m_removingTorrents[torrent->id()] = {torrent->name(), torrent->rootPath(), deleteOption}; + m_removingTorrents[torrentID] = {torrentName, torrent->actualStorageLocation(), torrent->actualFilePaths(), deleteOption}; if (m_moveStorageQueue.size() > 1) { // Delete "move storage job" for the deleted torrent // (note: we shouldn't delete active job) - const auto iter = std::find_if((m_moveStorageQueue.begin() + 1), m_moveStorageQueue.end() - , [torrent](const MoveStorageJob &job) + const auto iter = std::find_if((m_moveStorageQueue.cbegin() + 1), m_moveStorageQueue.cend() + , [torrent](const MoveStorageJob &job) { return job.torrentHandle == torrent->nativeHandle(); }); - if (iter != m_moveStorageQueue.end()) + if (iter != m_moveStorageQueue.cend()) m_moveStorageQueue.erase(iter); } - m_nativeSession->remove_torrent(torrent->nativeHandle(), lt::session::delete_files); + m_nativeSession->remove_torrent(torrent->nativeHandle(), lt::session::delete_partfile); } // Remove it from torrent resume directory - m_resumeDataStorage->remove(torrent->id()); + m_resumeDataStorage->remove(torrentID); + LogMsg(tr("Torrent removed. Torrent: \"%1\"").arg(torrentName)); delete torrent; return true; } bool SessionImpl::cancelDownloadMetadata(const TorrentID &id) { - const auto downloadedMetadataIter = m_downloadedMetadata.find(id); - if (downloadedMetadataIter == m_downloadedMetadata.end()) + const auto downloadedMetadataIter = m_downloadedMetadata.constFind(id); + if (downloadedMetadataIter == m_downloadedMetadata.cend()) return false; const lt::torrent_handle nativeHandle = downloadedMetadataIter.value(); @@ -2415,15 +2525,15 @@ bool SessionImpl::cancelDownloadMetadata(const TorrentID &id) // if magnet link was hybrid initially then it is indexed also by v1 info hash // so we need to remove both entries const auto altID = TorrentID::fromSHA1Hash(infoHash.v1()); - m_downloadedMetadata.remove((altID == downloadedMetadataIter.key()) ? id : altID); + m_downloadedMetadata.remove(altID); } #endif - m_nativeSession->remove_torrent(nativeHandle, lt::session::delete_files); + m_nativeSession->remove_torrent(nativeHandle); return true; } -void SessionImpl::increaseTorrentsQueuePos(const QVector &ids) +void SessionImpl::increaseTorrentsQueuePos(const QList &ids) { using ElementType = std::pair; std::priority_queue &ids) m_torrentsQueueChanged = true; } -void SessionImpl::decreaseTorrentsQueuePos(const QVector &ids) +void SessionImpl::decreaseTorrentsQueuePos(const QList &ids) { using ElementType = std::pair; std::priority_queue torrentQueue; @@ -2478,7 +2588,7 @@ void SessionImpl::decreaseTorrentsQueuePos(const QVector &ids) m_torrentsQueueChanged = true; } -void SessionImpl::topTorrentsQueuePos(const QVector &ids) +void SessionImpl::topTorrentsQueuePos(const QList &ids) { using ElementType = std::pair; std::priority_queue torrentQueue; @@ -2503,7 +2613,7 @@ void SessionImpl::topTorrentsQueuePos(const QVector &ids) m_torrentsQueueChanged = true; } -void SessionImpl::bottomTorrentsQueuePos(const QVector &ids) +void SessionImpl::bottomTorrentsQueuePos(const QList &ids) { using ElementType = std::pair; std::priority_queue &ids) m_torrentsQueueChanged = true; } -void SessionImpl::handleTorrentNeedSaveResumeData(const TorrentImpl *torrent) -{ - if (m_needSaveResumeDataTorrents.empty()) - { - QMetaObject::invokeMethod(this, [this]() - { - for (const TorrentID &torrentID : asConst(m_needSaveResumeDataTorrents)) - { - TorrentImpl *torrent = m_torrents.value(torrentID); - if (torrent) - torrent->saveResumeData(); - } - m_needSaveResumeDataTorrents.clear(); - }, Qt::QueuedConnection); - } - - m_needSaveResumeDataTorrents.insert(torrent->id()); -} - -void SessionImpl::handleTorrentSaveResumeDataRequested(const TorrentImpl *torrent) +void SessionImpl::handleTorrentResumeDataRequested(const TorrentImpl *torrent) { qDebug("Saving resume data is requested for torrent '%s'...", qUtf8Printable(torrent->name())); ++m_numResumeData; } -void SessionImpl::handleTorrentSaveResumeDataFailed([[maybe_unused]] const TorrentImpl *torrent) -{ - --m_numResumeData; -} - -QVector SessionImpl::torrents() const +QList SessionImpl::torrents() const { - QVector result; + QList result; result.reserve(m_torrents.size()); for (TorrentImpl *torrent : asConst(m_torrents)) result << torrent; @@ -2595,11 +2681,14 @@ LoadTorrentParams SessionImpl::initLoadTorrentParams(const AddTorrentParams &add loadTorrentParams.hasFinishedStatus = addTorrentParams.skipChecking; // do not react on 'torrent_finished_alert' when skipping loadTorrentParams.contentLayout = addTorrentParams.contentLayout.value_or(torrentContentLayout()); loadTorrentParams.operatingMode = (addTorrentParams.addForced ? TorrentOperatingMode::Forced : TorrentOperatingMode::AutoManaged); - loadTorrentParams.stopped = addTorrentParams.addPaused.value_or(isAddTorrentPaused()); + loadTorrentParams.stopped = addTorrentParams.addStopped.value_or(isAddTorrentStopped()); loadTorrentParams.stopCondition = addTorrentParams.stopCondition.value_or(torrentStopCondition()); loadTorrentParams.addToQueueTop = addTorrentParams.addToQueueTop.value_or(isAddTorrentToQueueTop()); loadTorrentParams.ratioLimit = addTorrentParams.ratioLimit; loadTorrentParams.seedingTimeLimit = addTorrentParams.seedingTimeLimit; + loadTorrentParams.inactiveSeedingTimeLimit = addTorrentParams.inactiveSeedingTimeLimit; + loadTorrentParams.shareLimitAction = addTorrentParams.shareLimitAction; + loadTorrentParams.sslParameters = addTorrentParams.sslParameters; const QString category = addTorrentParams.category; if (!category.isEmpty() && !m_categories.contains(category) && !addCategory(category)) @@ -2638,7 +2727,7 @@ LoadTorrentParams SessionImpl::initLoadTorrentParams(const AddTorrentParams &add } } - for (const QString &tag : addTorrentParams.tags) + for (const Tag &tag : addTorrentParams.tags) { if (hasTag(tag) || addTag(tag)) loadTorrentParams.tags.insert(tag); @@ -2664,8 +2753,39 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr if (m_loadingTorrents.contains(id) || (infoHash.isHybrid() && m_loadingTorrents.contains(altID))) return false; - if (findTorrent(infoHash)) + if (Torrent *torrent = findTorrent(infoHash)) + { + // a duplicate torrent is being added + + if (hasMetadata) + { + // Trying to set metadata to existing torrent in case if it has none + torrent->setMetadata(*source.info()); + } + + if (!isMergeTrackersEnabled()) + { + LogMsg(tr("Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2") + .arg(torrent->name(), tr("Merging of trackers is disabled"))); + return false; + } + + const bool isPrivate = torrent->isPrivate() || (hasMetadata && source.info()->isPrivate()); + if (isPrivate) + { + LogMsg(tr("Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2") + .arg(torrent->name(), tr("Trackers cannot be merged because it is a private torrent"))); + return false; + } + + // merge trackers and web seeds + torrent->addTrackers(source.trackers()); + torrent->addUrlSeeds(source.urlSeeds()); + + LogMsg(tr("Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2") + .arg(torrent->name(), tr("Trackers are merged from new source"))); return false; + } // It looks illogical that we don't just use an existing handle, // but as previous experience has shown, it actually creates unnecessary @@ -2686,6 +2806,14 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr if (hasMetadata) { + // Torrent that is being added with metadata is considered to be added as stopped + // if "metadata received" stop condition is set for it. + if (loadTorrentParams.stopCondition == Torrent::StopCondition::MetadataReceived) + { + loadTorrentParams.stopped = true; + loadTorrentParams.stopCondition = Torrent::StopCondition::None; + } + const TorrentInfo &torrentInfo = *source.info(); Q_ASSERT(addTorrentParams.filePaths.isEmpty() || (addTorrentParams.filePaths.size() == torrentInfo.filesCount())); @@ -2721,6 +2849,19 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr loadTorrentParams.name = contentName; } + const auto nativeIndexes = torrentInfo.nativeIndexes(); + + Q_ASSERT(p.file_priorities.empty()); + Q_ASSERT(addTorrentParams.filePriorities.isEmpty() || (addTorrentParams.filePriorities.size() == nativeIndexes.size())); + QList filePriorities = addTorrentParams.filePriorities; + + // Filename filter should be applied before `findIncompleteFiles()` is called. + if (filePriorities.isEmpty() && isExcludedFileNamesEnabled()) + { + // Check file name blacklist when priorities are not explicitly set + applyFilenameFilter(filePaths, filePriorities); + } + if (!loadTorrentParams.hasFinishedStatus) { const Path actualDownloadPath = useAutoTMM @@ -2729,36 +2870,20 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr isFindingIncompleteFiles = true; } - const auto nativeIndexes = torrentInfo.nativeIndexes(); if (!isFindingIncompleteFiles) { for (int index = 0; index < filePaths.size(); ++index) p.renamed_files[nativeIndexes[index]] = filePaths.at(index).toString().toStdString(); } - Q_ASSERT(p.file_priorities.empty()); - Q_ASSERT(addTorrentParams.filePriorities.isEmpty() || (addTorrentParams.filePriorities.size() == nativeIndexes.size())); - const int internalFilesCount = torrentInfo.nativeInfo()->files().num_files(); // including .pad files // Use qBittorrent default priority rather than libtorrent's (4) p.file_priorities = std::vector(internalFilesCount, LT::toNative(DownloadPriority::Normal)); - if (addTorrentParams.filePriorities.isEmpty()) - { - if (isExcludedFileNamesEnabled()) - { - // Check file name blacklist when priorities are not explicitly set - for (int i = 0; i < filePaths.size(); ++i) - { - if (isFilenameExcluded(filePaths.at(i).filename())) - p.file_priorities[LT::toUnderlyingType(nativeIndexes[i])] = lt::dont_download; - } - } - } - else + if (!filePriorities.isEmpty()) { - for (int i = 0; i < addTorrentParams.filePriorities.size(); ++i) - p.file_priorities[LT::toUnderlyingType(nativeIndexes[i])] = LT::toNative(addTorrentParams.filePriorities[i]); + for (int i = 0; i < filePriorities.size(); ++i) + p.file_priorities[LT::toUnderlyingType(nativeIndexes[i])] = LT::toNative(filePriorities[i]); } Q_ASSERT(p.ti); @@ -2773,13 +2898,31 @@ bool SessionImpl::addTorrent_impl(const TorrentDescriptor &source, const AddTorr if (isAddTrackersEnabled() && !(hasMetadata && p.ti->priv())) { - p.trackers.reserve(p.trackers.size() + static_cast(m_additionalTrackerList.size())); - p.tracker_tiers.reserve(p.trackers.size() + static_cast(m_additionalTrackerList.size())); + const auto maxTierIter = std::max_element(p.tracker_tiers.cbegin(), p.tracker_tiers.cend()); + const int baseTier = (maxTierIter != p.tracker_tiers.cend()) ? (*maxTierIter + 1) : 0; + + p.trackers.reserve(p.trackers.size() + static_cast(m_additionalTrackerEntries.size())); + p.tracker_tiers.reserve(p.trackers.size() + static_cast(m_additionalTrackerEntries.size())); + p.tracker_tiers.resize(p.trackers.size(), 0); + for (const TrackerEntry &trackerEntry : asConst(m_additionalTrackerEntries)) + { + p.trackers.emplace_back(trackerEntry.url.toStdString()); + p.tracker_tiers.emplace_back(Utils::Number::clampingAdd(trackerEntry.tier, baseTier)); + } + } + + if (isAddTrackersFromURLEnabled() && !(hasMetadata && p.ti->priv())) + { + const auto maxTierIter = std::max_element(p.tracker_tiers.cbegin(), p.tracker_tiers.cend()); + const int baseTier = (maxTierIter != p.tracker_tiers.cend()) ? (*maxTierIter + 1) : 0; + + p.trackers.reserve(p.trackers.size() + static_cast(m_additionalTrackerEntriesFromURL.size())); + p.tracker_tiers.reserve(p.trackers.size() + static_cast(m_additionalTrackerEntriesFromURL.size())); p.tracker_tiers.resize(p.trackers.size(), 0); - for (const TrackerEntry &trackerEntry : asConst(m_additionalTrackerList)) + for (const TrackerEntry &trackerEntry : asConst(m_additionalTrackerEntriesFromURL)) { - p.trackers.push_back(trackerEntry.url.toStdString()); - p.tracker_tiers.push_back(trackerEntry.tier); + p.trackers.emplace_back(trackerEntry.url.toStdString()); + p.tracker_tiers.emplace_back(Utils::Number::clampingAdd(trackerEntry.tier, baseTier)); } } @@ -2917,11 +3060,6 @@ void SessionImpl::removeMappedPorts(const QSet &ports) }); } -void SessionImpl::invokeAsync(std::function func) -{ - m_asyncWorker->start(std::move(func)); -} - // Add a torrent to libtorrent session in hidden mode // and force it to download its metadata bool SessionImpl::downloadMetadata(const TorrentDescriptor &torrentDescr) @@ -2942,13 +3080,17 @@ bool SessionImpl::downloadMetadata(const TorrentDescriptor &torrentDescr) if (isAddTrackersEnabled()) { // Use "additional trackers" when metadata retrieving (this can help when the DHT nodes are few) - p.trackers.reserve(p.trackers.size() + static_cast(m_additionalTrackerList.size())); - p.tracker_tiers.reserve(p.trackers.size() + static_cast(m_additionalTrackerList.size())); + + const auto maxTierIter = std::max_element(p.tracker_tiers.cbegin(), p.tracker_tiers.cend()); + const int baseTier = (maxTierIter != p.tracker_tiers.cend()) ? (*maxTierIter + 1) : 0; + + p.trackers.reserve(p.trackers.size() + static_cast(m_additionalTrackerEntries.size())); + p.tracker_tiers.reserve(p.trackers.size() + static_cast(m_additionalTrackerEntries.size())); p.tracker_tiers.resize(p.trackers.size(), 0); - for (const TrackerEntry &trackerEntry : asConst(m_additionalTrackerList)) + for (const TrackerEntry &trackerEntry : asConst(m_additionalTrackerEntries)) { - p.trackers.push_back(trackerEntry.url.toStdString()); - p.tracker_tiers.push_back(trackerEntry.tier); + p.trackers.emplace_back(trackerEntry.url.toStdString()); + p.tracker_tiers.emplace_back(Utils::Number::clampingAdd(trackerEntry.tier, baseTier)); } } @@ -3013,27 +3155,21 @@ void SessionImpl::generateResumeData() { for (TorrentImpl *const torrent : asConst(m_torrents)) { - if (!torrent->isValid()) continue; - if (torrent->needSaveResumeData()) - { - torrent->saveResumeData(); - m_needSaveResumeDataTorrents.remove(torrent->id()); - } + torrent->requestResumeData(); } } // Called on exit void SessionImpl::saveResumeData() { - for (const TorrentImpl *torrent : asConst(m_torrents)) + for (TorrentImpl *torrent : asConst(m_torrents)) { // When the session is terminated due to unrecoverable error // some of the torrent handles can be corrupted try { - torrent->nativeHandle().save_resume_data(lt::torrent_handle::only_if_modified); - ++m_numResumeData; + torrent->requestResumeData(lt::torrent_handle::only_if_modified); } catch (const std::exception &) {} } @@ -3058,12 +3194,12 @@ void SessionImpl::saveResumeData() break; } - const std::vector alerts = getPendingAlerts(waitTime); + fetchPendingAlerts(waitTime); bool hasWantedAlert = false; - for (const lt::alert *a : alerts) + for (const lt::alert *alert : m_alerts) { - if (const int alertType = a->type(); + if (const int alertType = alert->type(); (alertType == lt::save_resume_data_alert::alert_type) || (alertType == lt::save_resume_data_failed_alert::alert_type) || (alertType == lt::storage_moved_alert::alert_type) || (alertType == lt::storage_moved_failed_alert::alert_type) || (alertType == lt::state_update_alert::alert_type)) @@ -3071,7 +3207,7 @@ void SessionImpl::saveResumeData() hasWantedAlert = true; } - handleAlert(a); + handleAlert(alert); } if (hasWantedAlert) @@ -3081,7 +3217,7 @@ void SessionImpl::saveResumeData() void SessionImpl::saveTorrentsQueue() { - QVector queue; + QList queue; for (const TorrentImpl *torrent : asConst(m_torrents)) { if (const int queuePos = torrent->queuePosition(); queuePos >= 0) @@ -3145,8 +3281,8 @@ void SessionImpl::setDownloadPath(const Path &path) { const QString &categoryName = it.key(); const CategoryOptions &categoryOptions = it.value(); - const CategoryOptions::DownloadPathOption downloadPathOption = - categoryOptions.downloadPath.value_or(CategoryOptions::DownloadPathOption {isDownloadPathEnabled(), downloadPath()}); + const DownloadPathOption downloadPathOption = + categoryOptions.downloadPath.value_or(DownloadPathOption {isDownloadPathEnabled(), downloadPath()}); if (downloadPathOption.enabled && downloadPathOption.path.isRelative()) affectedCatogories.insert(categoryName); } @@ -3466,6 +3602,26 @@ void SessionImpl::setSaveResumeDataInterval(const int value) } } +std::chrono::minutes SessionImpl::saveStatisticsInterval() const +{ + return std::chrono::minutes(m_saveStatisticsInterval); +} + +void SessionImpl::setSaveStatisticsInterval(const std::chrono::minutes timeInMinutes) +{ + m_saveStatisticsInterval = timeInMinutes.count(); +} + +int SessionImpl::shutdownTimeout() const +{ + return m_shutdownTimeout; +} + +void SessionImpl::setShutdownTimeout(const int value) +{ + m_shutdownTimeout = value; +} + int SessionImpl::port() const { return m_port; @@ -3483,6 +3639,40 @@ void SessionImpl::setPort(const int port) } } +bool SessionImpl::isSSLEnabled() const +{ + return m_sslEnabled; +} + +void SessionImpl::setSSLEnabled(const bool enabled) +{ + if (enabled == isSSLEnabled()) + return; + + m_sslEnabled = enabled; + configureListeningInterface(); + + if (isReannounceWhenAddressChangedEnabled()) + reannounceToAllTrackers(); +} + +int SessionImpl::sslPort() const +{ + return m_sslPort; +} + +void SessionImpl::setSSLPort(const int port) +{ + if (port == sslPort()) + return; + + m_sslPort = port; + configureListeningInterface(); + + if (isReannounceWhenAddressChangedEnabled()) + reannounceToAllTrackers(); +} + QString SessionImpl::networkInterface() const { return m_networkInterface; @@ -3721,10 +3911,86 @@ QString SessionImpl::additionalTrackers() const void SessionImpl::setAdditionalTrackers(const QString &trackers) { - if (trackers != additionalTrackers()) + if (trackers == additionalTrackers()) + return; + + m_additionalTrackers = trackers; + populateAdditionalTrackers(); +} + +bool SessionImpl::isAddTrackersFromURLEnabled() const +{ + return m_isAddTrackersFromURLEnabled; +} + +void SessionImpl::setAddTrackersFromURLEnabled(const bool enabled) +{ + if (enabled != isAddTrackersFromURLEnabled()) { - m_additionalTrackers = trackers; - populateAdditionalTrackers(); + m_isAddTrackersFromURLEnabled = enabled; + if (enabled) + { + updateTrackersFromURL(); + m_updateTrackersFromURLTimer->start(); + } + else + { + m_updateTrackersFromURLTimer->stop(); + setAdditionalTrackersFromURL({}); + } + } +} + +QString SessionImpl::additionalTrackersURL() const +{ + return m_additionalTrackersURL; +} + +void SessionImpl::setAdditionalTrackersURL(const QString &url) +{ + if (url != additionalTrackersURL()) + { + m_additionalTrackersURL = url.trimmed(); + if (isAddTrackersFromURLEnabled()) + updateTrackersFromURL(); + } +} + +QString SessionImpl::additionalTrackersFromURL() const +{ + return m_additionalTrackersFromURL; +} + +void SessionImpl::setAdditionalTrackersFromURL(const QString &trackers) +{ + if (trackers != additionalTrackersFromURL()) + { + m_additionalTrackersFromURL = trackers; + populateAdditionalTrackersFromURL(); + } +} + +void SessionImpl::updateTrackersFromURL() +{ + const QString url = additionalTrackersURL(); + if (url.isEmpty()) + { + setAdditionalTrackersFromURL({}); + } + else + { + Net::DownloadManager::instance()->download(Net::DownloadRequest(url) + , Preferences::instance()->useProxyForGeneralPurposes(), this, [this](const Net::DownloadResult &result) + { + if (result.status == Net::DownloadStatus::Success) + { + setAdditionalTrackersFromURL(QString::fromUtf8(result.data)); + LogMsg(tr("Tracker list updated"), Log::INFO); + return; + } + + LogMsg(tr("Failed to update tracker list. Reason: \"%1\"").arg(result.errorString), Log::WARNING); + }); } } @@ -3799,21 +4065,41 @@ void SessionImpl::populateExcludedFileNamesRegExpList() for (const QString &str : excludedNames) { - const QString pattern = QRegularExpression::anchoredPattern(QRegularExpression::wildcardToRegularExpression(str)); + const QString pattern = QRegularExpression::wildcardToRegularExpression(str); const QRegularExpression re {pattern, QRegularExpression::CaseInsensitiveOption}; m_excludedFileNamesRegExpList.append(re); } } -bool SessionImpl::isFilenameExcluded(const QString &fileName) const +void SessionImpl::applyFilenameFilter(const PathList &files, QList &priorities) { if (!isExcludedFileNamesEnabled()) - return false; + return; - return std::any_of(m_excludedFileNamesRegExpList.begin(), m_excludedFileNamesRegExpList.end(), [&fileName](const QRegularExpression &re) + const auto isFilenameExcluded = [patterns = m_excludedFileNamesRegExpList](const Path &fileName) { - return re.match(fileName).hasMatch(); - }); + return std::any_of(patterns.begin(), patterns.end(), [&fileName](const QRegularExpression &re) + { + Path path = fileName; + while (!re.match(path.filename()).hasMatch()) + { + path = path.parentPath(); + if (path.isEmpty()) + return false; + } + return true; + }); + }; + + priorities.resize(files.count(), DownloadPriority::Normal); + for (int i = 0; i < priorities.size(); ++i) + { + if (priorities[i] == BitTorrent::DownloadPriority::Ignored) + continue; + + if (isFilenameExcluded(files.at(i))) + priorities[i] = BitTorrent::DownloadPriority::Ignored; + } } void SessionImpl::setBannedIPs(const QStringList &newList) @@ -3872,6 +4158,26 @@ void SessionImpl::setMergeTrackersEnabled(const bool enabled) m_isMergeTrackersEnabled = enabled; } +bool SessionImpl::isStartPaused() const +{ + return m_startPaused.get(false); +} + +void SessionImpl::setStartPaused(const bool value) +{ + m_startPaused = value; +} + +TorrentContentRemoveOption SessionImpl::torrentContentRemoveOption() const +{ + return m_torrentContentRemoveOption; +} + +void SessionImpl::setTorrentContentRemoveOption(const TorrentContentRemoveOption option) +{ + m_torrentContentRemoveOption = option; +} + QStringList SessionImpl::bannedIPs() const { return m_bannedIPs; @@ -3882,6 +4188,50 @@ bool SessionImpl::isRestored() const return m_isRestored; } +bool SessionImpl::isPaused() const +{ + return m_isPaused; +} + +void SessionImpl::pause() +{ + if (m_isPaused) + return; + + if (isRestored()) + { + m_nativeSession->pause(); + + for (TorrentImpl *torrent : asConst(m_torrents)) + { + torrent->resetTrackerEntryStatuses(); + + const QList trackers = torrent->trackers(); + QHash updatedTrackers; + updatedTrackers.reserve(trackers.size()); + + for (const TrackerEntryStatus &status : trackers) + updatedTrackers.emplace(status.url, status); + emit trackerEntryStatusesUpdated(torrent, updatedTrackers); + } + } + + m_isPaused = true; + emit paused(); +} + +void SessionImpl::resume() +{ + if (m_isPaused) + { + if (isRestored()) + m_nativeSession->resume(); + + m_isPaused = false; + emit resumed(); + } +} + int SessionImpl::maxConnectionsPerTorrent() const { return m_maxConnectionsPerTorrent; @@ -4329,6 +4679,9 @@ void SessionImpl::setQueueingSystemEnabled(const bool enabled) m_torrentsQueueChanged = true; else removeTorrentsQueue(); + + for (TorrentImpl *torrent : asConst(m_torrents)) + torrent->handleQueueingModeChanged(); } } @@ -4531,6 +4884,20 @@ void SessionImpl::setAnnounceIP(const QString &ip) } } +int SessionImpl::announcePort() const +{ + return m_announcePort; +} + +void SessionImpl::setAnnouncePort(const int port) +{ + if (port != m_announcePort) + { + m_announcePort = port; + configureDeferred(); + } +} + int SessionImpl::maxConcurrentHTTPAnnounces() const { return m_maxConcurrentHTTPAnnounces; @@ -4736,19 +5103,31 @@ void SessionImpl::setTrackerFilteringEnabled(const bool enabled) } } +QString SessionImpl::lastExternalIPv4Address() const +{ + return m_lastExternalIPv4Address; +} + +QString SessionImpl::lastExternalIPv6Address() const +{ + return m_lastExternalIPv6Address; +} + bool SessionImpl::isListening() const { return m_nativeSessionExtension->isSessionListening(); } -MaxRatioAction SessionImpl::maxRatioAction() const +ShareLimitAction SessionImpl::shareLimitAction() const { - return static_cast(m_maxRatioAction.get()); + return m_shareLimitAction; } -void SessionImpl::setMaxRatioAction(const MaxRatioAction act) +void SessionImpl::setShareLimitAction(const ShareLimitAction act) { - m_maxRatioAction = static_cast(act); + Q_ASSERT(act != ShareLimitAction::Default); + + m_shareLimitAction = act; } bool SessionImpl::isKnownTorrent(const InfoHash &infoHash) const @@ -4771,7 +5150,7 @@ void SessionImpl::updateSeedingLimitTimer() if ((globalMaxRatio() == Torrent::NO_RATIO_LIMIT) && !hasPerTorrentRatioLimit() && (globalMaxSeedingMinutes() == Torrent::NO_SEEDING_TIME_LIMIT) && !hasPerTorrentSeedingTimeLimit() && (globalMaxInactiveSeedingMinutes() == Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT) && !hasPerTorrentInactiveSeedingTimeLimit()) - { + { if (m_seedingLimitTimer->isActive()) m_seedingLimitTimer->stop(); } @@ -4800,12 +5179,12 @@ void SessionImpl::handleTorrentCategoryChanged(TorrentImpl *const torrent, const emit torrentCategoryChanged(torrent, oldCategory); } -void SessionImpl::handleTorrentTagAdded(TorrentImpl *const torrent, const QString &tag) +void SessionImpl::handleTorrentTagAdded(TorrentImpl *const torrent, const Tag &tag) { emit torrentTagAdded(torrent, tag); } -void SessionImpl::handleTorrentTagRemoved(TorrentImpl *const torrent, const QString &tag) +void SessionImpl::handleTorrentTagRemoved(TorrentImpl *const torrent, const Tag &tag) { emit torrentTagRemoved(torrent, tag); } @@ -4815,7 +5194,7 @@ void SessionImpl::handleTorrentSavingModeChanged(TorrentImpl *const torrent) emit torrentSavingModeChanged(torrent); } -void SessionImpl::handleTorrentTrackersAdded(TorrentImpl *const torrent, const QVector &newTrackers) +void SessionImpl::handleTorrentTrackersAdded(TorrentImpl *const torrent, const QList &newTrackers) { for (const TrackerEntry &newTracker : newTrackers) LogMsg(tr("Added tracker to torrent. Torrent: \"%1\". Tracker: \"%2\"").arg(torrent->name(), newTracker.url)); @@ -4834,13 +5213,13 @@ void SessionImpl::handleTorrentTrackersChanged(TorrentImpl *const torrent) emit trackersChanged(torrent); } -void SessionImpl::handleTorrentUrlSeedsAdded(TorrentImpl *const torrent, const QVector &newUrlSeeds) +void SessionImpl::handleTorrentUrlSeedsAdded(TorrentImpl *const torrent, const QList &newUrlSeeds) { for (const QUrl &newUrlSeed : newUrlSeeds) LogMsg(tr("Added URL seed to torrent. Torrent: \"%1\". URL: \"%2\"").arg(torrent->name(), newUrlSeed.toString())); } -void SessionImpl::handleTorrentUrlSeedsRemoved(TorrentImpl *const torrent, const QVector &urlSeeds) +void SessionImpl::handleTorrentUrlSeedsRemoved(TorrentImpl *const torrent, const QList &urlSeeds) { for (const QUrl &urlSeed : urlSeeds) LogMsg(tr("Removed URL seed from torrent. Torrent: \"%1\". URL: \"%2\"").arg(torrent->name(), urlSeed.toString())); @@ -4854,25 +5233,26 @@ void SessionImpl::handleTorrentMetadataReceived(TorrentImpl *const torrent) emit torrentMetadataReceived(torrent); } -void SessionImpl::handleTorrentPaused(TorrentImpl *const torrent) +void SessionImpl::handleTorrentStopped(TorrentImpl *const torrent) { - torrent->resetTrackerEntries(); + torrent->resetTrackerEntryStatuses(); + + const QList trackers = torrent->trackers(); + QHash updatedTrackers; + updatedTrackers.reserve(trackers.size()); - const auto &trackerEntries = torrent->trackers(); - QHash updatedTrackerEntries; - updatedTrackerEntries.reserve(trackerEntries.size()); - for (const auto &trackerEntry : trackerEntries) - updatedTrackerEntries.emplace(trackerEntry.url, trackerEntry); - emit trackerEntriesUpdated(torrent, updatedTrackerEntries); + for (const TrackerEntryStatus &status : trackers) + updatedTrackers.emplace(status.url, status); + emit trackerEntryStatusesUpdated(torrent, updatedTrackers); - LogMsg(tr("Torrent paused. Torrent: \"%1\"").arg(torrent->name())); - emit torrentPaused(torrent); + LogMsg(tr("Torrent stopped. Torrent: \"%1\"").arg(torrent->name())); + emit torrentStopped(torrent); } -void SessionImpl::handleTorrentResumed(TorrentImpl *const torrent) +void SessionImpl::handleTorrentStarted(TorrentImpl *const torrent) { LogMsg(tr("Torrent resumed. Torrent: \"%1\"").arg(torrent->name())); - emit torrentResumed(torrent); + emit torrentStarted(torrent); } void SessionImpl::handleTorrentChecked(TorrentImpl *const torrent) @@ -4882,27 +5262,14 @@ void SessionImpl::handleTorrentChecked(TorrentImpl *const torrent) void SessionImpl::handleTorrentFinished(TorrentImpl *const torrent) { - LogMsg(tr("Torrent download finished. Torrent: \"%1\"").arg(torrent->name())); - emit torrentFinished(torrent); - - if (const Path exportPath = finishedTorrentExportDirectory(); !exportPath.isEmpty()) - exportTorrentFile(torrent, exportPath); - - const bool hasUnfinishedTorrents = std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentImpl *torrent) - { - return !(torrent->isFinished() || torrent->isPaused() || torrent->isErrored()); - }); - if (!hasUnfinishedTorrents) - emit allTorrentsFinished(); + m_pendingFinishedTorrents.append(torrent); } void SessionImpl::handleTorrentResumeDataReady(TorrentImpl *const torrent, const LoadTorrentParams &data) { - --m_numResumeData; - m_resumeDataStorage->store(torrent->id(), data); - const auto iter = m_changedTorrentIDs.find(torrent->id()); - if (iter != m_changedTorrentIDs.end()) + const auto iter = m_changedTorrentIDs.constFind(torrent->id()); + if (iter != m_changedTorrentIDs.cend()) { m_resumeDataStorage->remove(iter.value()); m_changedTorrentIDs.erase(iter); @@ -4935,11 +5302,11 @@ bool SessionImpl::addMoveTorrentStorageJob(TorrentImpl *torrent, const Path &new const lt::torrent_handle torrentHandle = torrent->nativeHandle(); const Path currentLocation = torrent->actualStorageLocation(); - const bool torrentHasActiveJob = !m_moveStorageQueue.isEmpty() && (m_moveStorageQueue.first().torrentHandle == torrentHandle); + const bool torrentHasActiveJob = !m_moveStorageQueue.isEmpty() && (m_moveStorageQueue.constFirst().torrentHandle == torrentHandle); if (m_moveStorageQueue.size() > 1) { - auto iter = std::find_if((m_moveStorageQueue.begin() + 1), m_moveStorageQueue.end() + auto iter = std::find_if((m_moveStorageQueue.cbegin() + 1), m_moveStorageQueue.cend() , [&torrentHandle](const MoveStorageJob &job) { return job.torrentHandle == torrentHandle; @@ -4958,7 +5325,7 @@ bool SessionImpl::addMoveTorrentStorageJob(TorrentImpl *torrent, const Path &new { // if there is active job for this torrent prevent creating meaningless // job that will move torrent to the same location as current one - if (m_moveStorageQueue.first().path == newPath) + if (m_moveStorageQueue.constFirst().path == newPath) { LogMsg(tr("Failed to enqueue torrent move. Torrent: \"%1\". Source: \"%2\". Destination: \"%3\". Reason: torrent is currently moving to the destination") .arg(torrent->name(), currentLocation.toString(), newPath.toString())); @@ -5003,7 +5370,7 @@ void SessionImpl::handleMoveTorrentStorageJobFinished(const Path &newPath) { const MoveStorageJob finishedJob = m_moveStorageQueue.takeFirst(); if (!m_moveStorageQueue.isEmpty()) - moveTorrentStorage(m_moveStorageQueue.first()); + moveTorrentStorage(m_moveStorageQueue.constFirst()); const auto iter = std::find_if(m_moveStorageQueue.cbegin(), m_moveStorageQueue.cend() , [&finishedJob](const MoveStorageJob &job) @@ -5023,11 +5390,37 @@ void SessionImpl::handleMoveTorrentStorageJobFinished(const Path &newPath) // Last job is completed for torrent that being removing, so actually remove it const lt::torrent_handle nativeHandle {finishedJob.torrentHandle}; const RemovingTorrentData &removingTorrentData = m_removingTorrents[nativeHandle.info_hash()]; - if (removingTorrentData.deleteOption == DeleteTorrent) + if (removingTorrentData.removeOption == TorrentRemoveOption::KeepContent) m_nativeSession->remove_torrent(nativeHandle, lt::session::delete_partfile); } } +void SessionImpl::processPendingFinishedTorrents() +{ + if (m_pendingFinishedTorrents.isEmpty()) + return; + + for (TorrentImpl *torrent : asConst(m_pendingFinishedTorrents)) + { + LogMsg(tr("Torrent download finished. Torrent: \"%1\"").arg(torrent->name())); + emit torrentFinished(torrent); + + if (const Path exportPath = finishedTorrentExportDirectory(); !exportPath.isEmpty()) + exportTorrentFile(torrent, exportPath); + + processTorrentShareLimits(torrent); + } + + m_pendingFinishedTorrents.clear(); + + const bool hasUnfinishedTorrents = std::any_of(m_torrents.cbegin(), m_torrents.cend(), [](const TorrentImpl *torrent) + { + return !(torrent->isFinished() || torrent->isStopped() || torrent->isErrored()); + }); + if (!hasUnfinishedTorrents) + emit allTorrentsFinished(); +} + void SessionImpl::storeCategories() const { QJsonObject jsonObj; @@ -5231,14 +5624,13 @@ void SessionImpl::handleIPFilterError() emit IPFilterParsed(true, 0); } -std::vector SessionImpl::getPendingAlerts(const lt::time_duration time) const +void SessionImpl::fetchPendingAlerts(const lt::time_duration time) { if (time > lt::time_duration::zero()) m_nativeSession->wait_for_alert(time); - std::vector alerts; - m_nativeSession->pop_alerts(&alerts); - return alerts; + m_alerts.clear(); + m_nativeSession->pop_alerts(&m_alerts); } TorrentContentLayout SessionImpl::torrentContentLayout() const @@ -5251,108 +5643,114 @@ void SessionImpl::setTorrentContentLayout(const TorrentContentLayout value) m_torrentContentLayout = value; } -// Read alerts sent by the BitTorrent session +// Read alerts sent by libtorrent session void SessionImpl::readAlerts() { - const std::vector alerts = getPendingAlerts(); - handleAddTorrentAlerts(alerts); - for (const lt::alert *a : alerts) - handleAlert(a); + fetchPendingAlerts(); - processTrackerStatuses(); -} + Q_ASSERT(m_loadedTorrents.isEmpty()); + Q_ASSERT(m_receivedAddTorrentAlertsCount == 0); -void SessionImpl::handleAddTorrentAlerts(const std::vector &alerts) -{ - QVector loadedTorrents; if (!isRestored()) - loadedTorrents.reserve(MAX_PROCESSING_RESUMEDATA_COUNT); + m_loadedTorrents.reserve(MAX_PROCESSING_RESUMEDATA_COUNT); + + for (const lt::alert *a : m_alerts) + handleAlert(a); - for (const lt::alert *a : alerts) + if (m_receivedAddTorrentAlertsCount > 0) { - if (a->type() != lt::add_torrent_alert::alert_type) - continue; + emit addTorrentAlertsReceived(m_receivedAddTorrentAlertsCount); + m_receivedAddTorrentAlertsCount = 0; - const auto *alert = static_cast(a); - if (alert->error) + if (!m_loadedTorrents.isEmpty()) { - const QString msg = QString::fromStdString(alert->message()); - LogMsg(tr("Failed to load torrent. Reason: \"%1\"").arg(msg), Log::WARNING); - emit loadTorrentFailed(msg); + if (isRestored()) + m_torrentsQueueChanged = true; - const lt::add_torrent_params ¶ms = alert->params; - const bool hasMetadata = (params.ti && params.ti->is_valid()); -#ifdef QBT_USES_LIBTORRENT2 - const InfoHash infoHash {(hasMetadata ? params.ti->info_hashes() : params.info_hashes)}; - if (infoHash.isHybrid()) - m_hybridTorrentsByAltID.remove(TorrentID::fromSHA1Hash(infoHash.v1())); -#else - const InfoHash infoHash {(hasMetadata ? params.ti->info_hash() : params.info_hash)}; -#endif - if (const auto loadingTorrentsIter = m_loadingTorrents.find(TorrentID::fromInfoHash(infoHash)) - ; loadingTorrentsIter != m_loadingTorrents.end()) - { - emit addTorrentFailed(infoHash, msg); - m_loadingTorrents.erase(loadingTorrentsIter); - } - else if (const auto downloadedMetadataIter = m_downloadedMetadata.find(TorrentID::fromInfoHash(infoHash)) - ; downloadedMetadataIter != m_downloadedMetadata.end()) - { - m_downloadedMetadata.erase(downloadedMetadataIter); - if (infoHash.isHybrid()) - { - // index hybrid magnet links by both v1 and v2 info hashes - const auto altID = TorrentID::fromSHA1Hash(infoHash.v1()); - m_downloadedMetadata.remove(altID); - } - } - - return; + emit torrentsLoaded(m_loadedTorrents); + m_loadedTorrents.clear(); } + } + + // Some torrents may become "finished" after different alerts handling. + processPendingFinishedTorrents(); +} + +void SessionImpl::handleAddTorrentAlert(const lt::add_torrent_alert *alert) +{ + ++m_receivedAddTorrentAlertsCount; + + if (alert->error) + { + const QString msg = QString::fromStdString(alert->message()); + LogMsg(tr("Failed to load torrent. Reason: \"%1\"").arg(msg), Log::WARNING); + emit loadTorrentFailed(msg); + const lt::add_torrent_params ¶ms = alert->params; + const bool hasMetadata = (params.ti && params.ti->is_valid()); #ifdef QBT_USES_LIBTORRENT2 - const InfoHash infoHash {alert->handle.info_hashes()}; + const InfoHash infoHash {(hasMetadata ? params.ti->info_hashes() : params.info_hashes)}; + if (infoHash.isHybrid()) + m_hybridTorrentsByAltID.remove(TorrentID::fromSHA1Hash(infoHash.v1())); #else - const InfoHash infoHash {alert->handle.info_hash()}; + const InfoHash infoHash {(hasMetadata ? params.ti->info_hash() : params.info_hash)}; #endif - const auto torrentID = TorrentID::fromInfoHash(infoHash); - - if (const auto loadingTorrentsIter = m_loadingTorrents.find(torrentID) - ; loadingTorrentsIter != m_loadingTorrents.end()) + if (const auto loadingTorrentsIter = m_loadingTorrents.constFind(TorrentID::fromInfoHash(infoHash)) + ; loadingTorrentsIter != m_loadingTorrents.cend()) { - const LoadTorrentParams params = loadingTorrentsIter.value(); + emit addTorrentFailed(infoHash, msg); m_loadingTorrents.erase(loadingTorrentsIter); - - Torrent *torrent = createTorrent(alert->handle, params); - loadedTorrents.append(torrent); } - else if (const auto downloadedMetadataIter = m_downloadedMetadata.find(torrentID) - ; downloadedMetadataIter != m_downloadedMetadata.end()) + else if (const auto downloadedMetadataIter = m_downloadedMetadata.constFind(TorrentID::fromInfoHash(infoHash)) + ; downloadedMetadataIter != m_downloadedMetadata.cend()) { - downloadedMetadataIter.value() = alert->handle; + m_downloadedMetadata.erase(downloadedMetadataIter); if (infoHash.isHybrid()) { // index hybrid magnet links by both v1 and v2 info hashes const auto altID = TorrentID::fromSHA1Hash(infoHash.v1()); - m_downloadedMetadata[altID] = alert->handle; + m_downloadedMetadata.remove(altID); } } + + return; } - if (!loadedTorrents.isEmpty()) +#ifdef QBT_USES_LIBTORRENT2 + const InfoHash infoHash {alert->handle.info_hashes()}; +#else + const InfoHash infoHash {alert->handle.info_hash()}; +#endif + const auto torrentID = TorrentID::fromInfoHash(infoHash); + + if (const auto loadingTorrentsIter = m_loadingTorrents.constFind(torrentID) + ; loadingTorrentsIter != m_loadingTorrents.cend()) { - if (isRestored()) - m_torrentsQueueChanged = true; - emit torrentsLoaded(loadedTorrents); + const LoadTorrentParams params = loadingTorrentsIter.value(); + m_loadingTorrents.erase(loadingTorrentsIter); + + Torrent *torrent = createTorrent(alert->handle, params); + m_loadedTorrents.append(torrent); + } + else if (const auto downloadedMetadataIter = m_downloadedMetadata.find(torrentID) + ; downloadedMetadataIter != m_downloadedMetadata.end()) + { + downloadedMetadataIter.value() = alert->handle; + if (infoHash.isHybrid()) + { + // index hybrid magnet links by both v1 and v2 info hashes + const auto altID = TorrentID::fromSHA1Hash(infoHash.v1()); + m_downloadedMetadata[altID] = alert->handle; + } } } -void SessionImpl::handleAlert(const lt::alert *a) +void SessionImpl::handleAlert(const lt::alert *alert) { try { - switch (a->type()) + switch (alert->type()) { #ifdef QBT_USES_LIBTORRENT2 case lt::file_prio_alert::alert_type: @@ -5369,80 +5767,83 @@ void SessionImpl::handleAlert(const lt::alert *a) case lt::torrent_checked_alert::alert_type: case lt::metadata_received_alert::alert_type: case lt::performance_alert::alert_type: - dispatchTorrentAlert(static_cast(a)); + dispatchTorrentAlert(static_cast(alert)); break; case lt::state_update_alert::alert_type: - handleStateUpdateAlert(static_cast(a)); + handleStateUpdateAlert(static_cast(alert)); break; case lt::session_error_alert::alert_type: - handleSessionErrorAlert(static_cast(a)); + handleSessionErrorAlert(static_cast(alert)); break; case lt::session_stats_alert::alert_type: - handleSessionStatsAlert(static_cast(a)); + handleSessionStatsAlert(static_cast(alert)); break; case lt::tracker_announce_alert::alert_type: case lt::tracker_error_alert::alert_type: case lt::tracker_reply_alert::alert_type: case lt::tracker_warning_alert::alert_type: - handleTrackerAlert(static_cast(a)); + handleTrackerAlert(static_cast(alert)); break; case lt::file_error_alert::alert_type: - handleFileErrorAlert(static_cast(a)); + handleFileErrorAlert(static_cast(alert)); break; case lt::add_torrent_alert::alert_type: - // handled separately + handleAddTorrentAlert(static_cast(alert)); break; case lt::torrent_removed_alert::alert_type: - handleTorrentRemovedAlert(static_cast(a)); + handleTorrentRemovedAlert(static_cast(alert)); break; case lt::torrent_deleted_alert::alert_type: - handleTorrentDeletedAlert(static_cast(a)); + handleTorrentDeletedAlert(static_cast(alert)); break; case lt::torrent_delete_failed_alert::alert_type: - handleTorrentDeleteFailedAlert(static_cast(a)); + handleTorrentDeleteFailedAlert(static_cast(alert)); + break; + case lt::torrent_need_cert_alert::alert_type: + handleTorrentNeedCertAlert(static_cast(alert)); break; case lt::portmap_error_alert::alert_type: - handlePortmapWarningAlert(static_cast(a)); + handlePortmapWarningAlert(static_cast(alert)); break; case lt::portmap_alert::alert_type: - handlePortmapAlert(static_cast(a)); + handlePortmapAlert(static_cast(alert)); break; case lt::peer_blocked_alert::alert_type: - handlePeerBlockedAlert(static_cast(a)); + handlePeerBlockedAlert(static_cast(alert)); break; case lt::peer_ban_alert::alert_type: - handlePeerBanAlert(static_cast(a)); + handlePeerBanAlert(static_cast(alert)); break; case lt::url_seed_alert::alert_type: - handleUrlSeedAlert(static_cast(a)); + handleUrlSeedAlert(static_cast(alert)); break; case lt::listen_succeeded_alert::alert_type: - handleListenSucceededAlert(static_cast(a)); + handleListenSucceededAlert(static_cast(alert)); break; case lt::listen_failed_alert::alert_type: - handleListenFailedAlert(static_cast(a)); + handleListenFailedAlert(static_cast(alert)); break; case lt::external_ip_alert::alert_type: - handleExternalIPAlert(static_cast(a)); + handleExternalIPAlert(static_cast(alert)); break; case lt::alerts_dropped_alert::alert_type: - handleAlertsDroppedAlert(static_cast(a)); + handleAlertsDroppedAlert(static_cast(alert)); break; case lt::storage_moved_alert::alert_type: - handleStorageMovedAlert(static_cast(a)); + handleStorageMovedAlert(static_cast(alert)); break; case lt::storage_moved_failed_alert::alert_type: - handleStorageMovedFailedAlert(static_cast(a)); + handleStorageMovedFailedAlert(static_cast(alert)); break; case lt::socks5_alert::alert_type: - handleSocks5Alert(static_cast(a)); + handleSocks5Alert(static_cast(alert)); break; case lt::i2p_alert::alert_type: - handleI2PAlert(static_cast(a)); + handleI2PAlert(static_cast(alert)); break; #ifdef QBT_USES_LIBTORRENT2 case lt::torrent_conflict_alert::alert_type: - handleTorrentConflictAlert(static_cast(a)); + handleTorrentConflictAlert(static_cast(alert)); break; #endif } @@ -5453,14 +5854,23 @@ void SessionImpl::handleAlert(const lt::alert *a) } } -void SessionImpl::dispatchTorrentAlert(const lt::torrent_alert *a) +void SessionImpl::dispatchTorrentAlert(const lt::torrent_alert *alert) { - const TorrentID torrentID {a->handle.info_hash()}; + // The torrent can be deleted between the time the resume data was requested and + // the time we received the appropriate alert. We have to decrease `m_numResumeData` anyway, + // so we do this before checking for an existing torrent. + if ((alert->type() == lt::save_resume_data_alert::alert_type) + || (alert->type() == lt::save_resume_data_failed_alert::alert_type)) + { + --m_numResumeData; + } + + const TorrentID torrentID {alert->handle.info_hash()}; TorrentImpl *torrent = m_torrents.value(torrentID); #ifdef QBT_USES_LIBTORRENT2 - if (!torrent && (a->type() == lt::metadata_received_alert::alert_type)) + if (!torrent && (alert->type() == lt::metadata_received_alert::alert_type)) { - const InfoHash infoHash {a->handle.info_hashes()}; + const InfoHash infoHash {alert->handle.info_hashes()}; if (infoHash.isHybrid()) torrent = m_torrents.value(TorrentID::fromSHA1Hash(infoHash.v1())); } @@ -5468,14 +5878,14 @@ void SessionImpl::dispatchTorrentAlert(const lt::torrent_alert *a) if (torrent) { - torrent->handleAlert(a); + torrent->handleAlert(alert); return; } - switch (a->type()) + switch (alert->type()) { case lt::metadata_received_alert::alert_type: - handleMetadataReceivedAlert(static_cast(a)); + handleMetadataReceivedAlert(static_cast(alert)); break; } } @@ -5492,7 +5902,7 @@ TorrentImpl *SessionImpl::createTorrent(const lt::torrent_handle &nativeHandle, if (params.addToQueueTop) nativeHandle.queue_position_top(); - torrent->saveResumeData(lt::torrent_handle::save_info_dict); + torrent->requestResumeData(lt::torrent_handle::save_info_dict); // The following is useless for newly added magnet if (torrent->hasMetadata()) @@ -5525,92 +5935,70 @@ TorrentImpl *SessionImpl::createTorrent(const lt::torrent_handle &nativeHandle, return torrent; } -void SessionImpl::handleTorrentRemovedAlert(const lt::torrent_removed_alert *p) +void SessionImpl::handleTorrentRemovedAlert(const lt::torrent_removed_alert */*alert*/) +{ + // We cannot consider `torrent_removed_alert` as a starting point for removing content, + // because it has an inconsistent posting time between different versions of libtorrent, + // so files may still be in use in some cases. +} + +void SessionImpl::handleTorrentDeletedAlert(const lt::torrent_deleted_alert *alert) { #ifdef QBT_USES_LIBTORRENT2 - const auto id = TorrentID::fromInfoHash(p->info_hashes); + const auto torrentID = TorrentID::fromInfoHash(alert->info_hashes); #else - const auto id = TorrentID::fromInfoHash(p->info_hash); + const auto torrentID = TorrentID::fromInfoHash(alert->info_hash); #endif - - const auto removingTorrentDataIter = m_removingTorrents.find(id); - if (removingTorrentDataIter != m_removingTorrents.end()) - { - if (removingTorrentDataIter->deleteOption == DeleteTorrent) - { - LogMsg(tr("Removed torrent. Torrent: \"%1\"").arg(removingTorrentDataIter->name)); - m_removingTorrents.erase(removingTorrentDataIter); - } - } + handleRemovedTorrent(torrentID); } -void SessionImpl::handleTorrentDeletedAlert(const lt::torrent_deleted_alert *p) +void SessionImpl::handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_alert *alert) { #ifdef QBT_USES_LIBTORRENT2 - const auto id = TorrentID::fromInfoHash(p->info_hashes); + const auto torrentID = TorrentID::fromInfoHash(alert->info_hashes); #else - const auto id = TorrentID::fromInfoHash(p->info_hash); + const auto torrentID = TorrentID::fromInfoHash(alert->info_hash); #endif - - const auto removingTorrentDataIter = m_removingTorrents.find(id); - if (removingTorrentDataIter == m_removingTorrents.end()) - return; - - // torrent_deleted_alert can also be posted due to deletion of partfile. Ignore it in such a case. - if (removingTorrentDataIter->deleteOption == DeleteTorrent) - return; - - Utils::Fs::smartRemoveEmptyFolderTree(removingTorrentDataIter->pathToRemove); - LogMsg(tr("Removed torrent and deleted its content. Torrent: \"%1\"").arg(removingTorrentDataIter->name)); - m_removingTorrents.erase(removingTorrentDataIter); + const auto errorMessage = alert->error ? Utils::String::fromLocal8Bit(alert->error.message()) : QString(); + handleRemovedTorrent(torrentID, errorMessage); } -void SessionImpl::handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_alert *p) +void SessionImpl::handleTorrentNeedCertAlert(const lt::torrent_need_cert_alert *alert) { #ifdef QBT_USES_LIBTORRENT2 - const auto id = TorrentID::fromInfoHash(p->info_hashes); + const InfoHash infoHash {alert->handle.info_hashes()}; #else - const auto id = TorrentID::fromInfoHash(p->info_hash); + const InfoHash infoHash {alert->handle.info_hash()}; #endif + const auto torrentID = TorrentID::fromInfoHash(infoHash); - const auto removingTorrentDataIter = m_removingTorrents.find(id); - if (removingTorrentDataIter == m_removingTorrents.end()) + TorrentImpl *const torrent = m_torrents.value(torrentID); + if (!torrent) [[unlikely]] return; - if (p->error) + if (!torrent->applySSLParameters()) { - // libtorrent won't delete the directory if it contains files not listed in the torrent, - // so we remove the directory ourselves - Utils::Fs::smartRemoveEmptyFolderTree(removingTorrentDataIter->pathToRemove); - - LogMsg(tr("Removed torrent but failed to delete its content and/or partfile. Torrent: \"%1\". Error: \"%2\"") - .arg(removingTorrentDataIter->name, QString::fromLocal8Bit(p->error.message().c_str())) + LogMsg(tr("Torrent is missing SSL parameters. Torrent: \"%1\". Message: \"%2\"").arg(torrent->name(), QString::fromStdString(alert->message())) , Log::WARNING); } - else // torrent without metadata, hence no files on disk - { - LogMsg(tr("Removed torrent. Torrent: \"%1\"").arg(removingTorrentDataIter->name)); - } - - m_removingTorrents.erase(removingTorrentDataIter); } -void SessionImpl::handleMetadataReceivedAlert(const lt::metadata_received_alert *p) +void SessionImpl::handleMetadataReceivedAlert(const lt::metadata_received_alert *alert) { - const TorrentID torrentID {p->handle.info_hash()}; + const TorrentID torrentID {alert->handle.info_hash()}; bool found = false; - if (const auto iter = m_downloadedMetadata.find(torrentID); iter != m_downloadedMetadata.end()) + if (const auto iter = m_downloadedMetadata.constFind(torrentID); iter != m_downloadedMetadata.cend()) { found = true; m_downloadedMetadata.erase(iter); } #ifdef QBT_USES_LIBTORRENT2 - const InfoHash infoHash {p->handle.info_hashes()}; + const InfoHash infoHash {alert->handle.info_hashes()}; if (infoHash.isHybrid()) { const auto altID = TorrentID::fromSHA1Hash(infoHash.v1()); - if (const auto iter = m_downloadedMetadata.find(altID); iter != m_downloadedMetadata.end()) + if (const auto iter = m_downloadedMetadata.constFind(altID); iter != m_downloadedMetadata.cend()) { found = true; m_downloadedMetadata.erase(iter); @@ -5619,29 +6007,29 @@ void SessionImpl::handleMetadataReceivedAlert(const lt::metadata_received_alert #endif if (found) { - const TorrentInfo metadata {*p->handle.torrent_file()}; - m_nativeSession->remove_torrent(p->handle, lt::session::delete_files); + const TorrentInfo metadata {*alert->handle.torrent_file()}; + m_nativeSession->remove_torrent(alert->handle, lt::session::delete_files); emit metadataDownloaded(metadata); } } -void SessionImpl::handleFileErrorAlert(const lt::file_error_alert *p) +void SessionImpl::handleFileErrorAlert(const lt::file_error_alert *alert) { - TorrentImpl *const torrent = m_torrents.value(p->handle.info_hash()); + TorrentImpl *const torrent = m_torrents.value(alert->handle.info_hash()); if (!torrent) return; - torrent->handleAlert(p); + torrent->handleAlert(alert); const TorrentID id = torrent->id(); if (!m_recentErroredTorrents.contains(id)) { m_recentErroredTorrents.insert(id); - const QString msg = QString::fromStdString(p->message()); + const QString msg = QString::fromStdString(alert->message()); LogMsg(tr("File error alert. Torrent: \"%1\". File: \"%2\". Reason: \"%3\"") - .arg(torrent->name(), QString::fromLocal8Bit(p->filename()), msg) + .arg(torrent->name(), QString::fromUtf8(alert->filename()), msg) , Log::WARNING); emit fullDiskError(torrent, msg); } @@ -5649,33 +6037,33 @@ void SessionImpl::handleFileErrorAlert(const lt::file_error_alert *p) m_recentErroredTorrentsTimer->start(); } -void SessionImpl::handlePortmapWarningAlert(const lt::portmap_error_alert *p) +void SessionImpl::handlePortmapWarningAlert(const lt::portmap_error_alert *alert) { - LogMsg(tr("UPnP/NAT-PMP port mapping failed. Message: \"%1\"").arg(QString::fromStdString(p->message())), Log::WARNING); + LogMsg(tr("UPnP/NAT-PMP port mapping failed. Message: \"%1\"").arg(QString::fromStdString(alert->message())), Log::WARNING); } -void SessionImpl::handlePortmapAlert(const lt::portmap_alert *p) +void SessionImpl::handlePortmapAlert(const lt::portmap_alert *alert) { - qDebug("UPnP Success, msg: %s", p->message().c_str()); - LogMsg(tr("UPnP/NAT-PMP port mapping succeeded. Message: \"%1\"").arg(QString::fromStdString(p->message())), Log::INFO); + qDebug("UPnP Success, msg: %s", alert->message().c_str()); + LogMsg(tr("UPnP/NAT-PMP port mapping succeeded. Message: \"%1\"").arg(QString::fromStdString(alert->message())), Log::INFO); } -void SessionImpl::handlePeerBlockedAlert(const lt::peer_blocked_alert *p) +void SessionImpl::handlePeerBlockedAlert(const lt::peer_blocked_alert *alert) { QString reason; - switch (p->reason) + switch (alert->reason) { case lt::peer_blocked_alert::ip_filter: reason = tr("IP filter", "this peer was blocked. Reason: IP filter."); break; case lt::peer_blocked_alert::port_filter: - reason = tr("filtered port (%1)", "this peer was blocked. Reason: filtered port (8899).").arg(QString::number(p->endpoint.port())); + reason = tr("filtered port (%1)", "this peer was blocked. Reason: filtered port (8899).").arg(QString::number(alert->endpoint.port())); break; case lt::peer_blocked_alert::i2p_mixed: reason = tr("%1 mixed mode restrictions", "this peer was blocked. Reason: I2P mixed mode restrictions.").arg(u"I2P"_s); // don't translate I2P break; case lt::peer_blocked_alert::privileged_ports: - reason = tr("privileged port (%1)", "this peer was blocked. Reason: privileged port (80).").arg(QString::number(p->endpoint.port())); + reason = tr("privileged port (%1)", "this peer was blocked. Reason: privileged port (80).").arg(QString::number(alert->endpoint.port())); break; case lt::peer_blocked_alert::utp_disabled: reason = tr("%1 is disabled", "this peer was blocked. Reason: uTP is disabled.").arg(C_UTP); // don't translate μTP @@ -5685,87 +6073,95 @@ void SessionImpl::handlePeerBlockedAlert(const lt::peer_blocked_alert *p) break; } - const QString ip {toString(p->endpoint.address())}; + const QString ip {toString(alert->endpoint.address())}; if (!ip.isEmpty()) Logger::instance()->addPeer(ip, true, reason); } -void SessionImpl::handlePeerBanAlert(const lt::peer_ban_alert *p) +void SessionImpl::handlePeerBanAlert(const lt::peer_ban_alert *alert) { - const QString ip {toString(p->endpoint.address())}; + const QString ip {toString(alert->endpoint.address())}; if (!ip.isEmpty()) Logger::instance()->addPeer(ip, false); } -void SessionImpl::handleUrlSeedAlert(const lt::url_seed_alert *p) +void SessionImpl::handleUrlSeedAlert(const lt::url_seed_alert *alert) { - const TorrentImpl *torrent = m_torrents.value(p->handle.info_hash()); + const TorrentImpl *torrent = m_torrents.value(alert->handle.info_hash()); if (!torrent) return; - if (p->error) + if (alert->error) { - LogMsg(tr("URL seed DNS lookup failed. Torrent: \"%1\". URL: \"%2\". Error: \"%3\"") - .arg(torrent->name(), QString::fromUtf8(p->server_url()), QString::fromStdString(p->message())) + LogMsg(tr("URL seed connection failed. Torrent: \"%1\". URL: \"%2\". Error: \"%3\"") + .arg(torrent->name(), QString::fromUtf8(alert->server_url()), QString::fromStdString(alert->message())) , Log::WARNING); } else { LogMsg(tr("Received error message from URL seed. Torrent: \"%1\". URL: \"%2\". Message: \"%3\"") - .arg(torrent->name(), QString::fromUtf8(p->server_url()), QString::fromUtf8(p->error_message())) + .arg(torrent->name(), QString::fromUtf8(alert->server_url()), QString::fromUtf8(alert->error_message())) , Log::WARNING); } } -void SessionImpl::handleListenSucceededAlert(const lt::listen_succeeded_alert *p) +void SessionImpl::handleListenSucceededAlert(const lt::listen_succeeded_alert *alert) { - const QString proto {toString(p->socket_type)}; + const QString proto {toString(alert->socket_type)}; LogMsg(tr("Successfully listening on IP. IP: \"%1\". Port: \"%2/%3\"") - .arg(toString(p->address), proto, QString::number(p->port)), Log::INFO); + .arg(toString(alert->address), proto, QString::number(alert->port)), Log::INFO); } -void SessionImpl::handleListenFailedAlert(const lt::listen_failed_alert *p) +void SessionImpl::handleListenFailedAlert(const lt::listen_failed_alert *alert) { - const QString proto {toString(p->socket_type)}; + const QString proto {toString(alert->socket_type)}; LogMsg(tr("Failed to listen on IP. IP: \"%1\". Port: \"%2/%3\". Reason: \"%4\"") - .arg(toString(p->address), proto, QString::number(p->port) - , QString::fromLocal8Bit(p->error.message().c_str())), Log::CRITICAL); + .arg(toString(alert->address), proto, QString::number(alert->port) + , Utils::String::fromLocal8Bit(alert->error.message())), Log::CRITICAL); } -void SessionImpl::handleExternalIPAlert(const lt::external_ip_alert *p) +void SessionImpl::handleExternalIPAlert(const lt::external_ip_alert *alert) { - const QString externalIP {toString(p->external_address)}; + const QString externalIP {toString(alert->external_address)}; LogMsg(tr("Detected external IP. IP: \"%1\"") .arg(externalIP), Log::INFO); - if (m_lastExternalIP != externalIP) + const bool isIPv6 = alert->external_address.is_v6(); + const bool isIPv4 = alert->external_address.is_v4(); + if (isIPv6 && (externalIP != m_lastExternalIPv6Address)) { - if (isReannounceWhenAddressChangedEnabled() && !m_lastExternalIP.isEmpty()) + if (isReannounceWhenAddressChangedEnabled() && !m_lastExternalIPv6Address.isEmpty()) reannounceToAllTrackers(); - m_lastExternalIP = externalIP; + m_lastExternalIPv6Address = externalIP; + } + else if (isIPv4 && (externalIP != m_lastExternalIPv4Address)) + { + if (isReannounceWhenAddressChangedEnabled() && !m_lastExternalIPv4Address.isEmpty()) + reannounceToAllTrackers(); + m_lastExternalIPv4Address = externalIP; } } -void SessionImpl::handleSessionErrorAlert(const lt::session_error_alert *p) const +void SessionImpl::handleSessionErrorAlert(const lt::session_error_alert *alert) const { LogMsg(tr("BitTorrent session encountered a serious error. Reason: \"%1\"") - .arg(QString::fromStdString(p->message())), Log::CRITICAL); + .arg(QString::fromStdString(alert->message())), Log::CRITICAL); } -void SessionImpl::handleSessionStatsAlert(const lt::session_stats_alert *p) +void SessionImpl::handleSessionStatsAlert(const lt::session_stats_alert *alert) { if (m_refreshEnqueued) m_refreshEnqueued = false; else enqueueRefresh(); - const int64_t interval = lt::total_microseconds(p->timestamp() - m_statsLastTimestamp); + const int64_t interval = lt::total_microseconds(alert->timestamp() - m_statsLastTimestamp); if (interval <= 0) return; - m_statsLastTimestamp = p->timestamp(); + m_statsLastTimestamp = alert->timestamp(); - const auto stats = p->counters(); + const auto stats = alert->counters(); m_status.hasIncomingConnections = static_cast(stats[m_metricIndices.net.hasIncomingConnections]); @@ -5828,8 +6224,14 @@ void SessionImpl::handleSessionStatsAlert(const lt::session_stats_alert *p) m_status.allTimeDownload = m_previouslyDownloaded + m_status.totalDownload; m_status.allTimeUpload = m_previouslyUploaded + m_status.totalUpload; - if (m_statisticsLastUpdateTimer.hasExpired(STATISTICS_SAVE_INTERVAL)) - saveStatistics(); + if (m_saveStatisticsInterval > 0) + { + const auto saveInterval = std::chrono::duration_cast(std::chrono::minutes(m_saveStatisticsInterval)); + if (m_statisticsLastUpdateTimer.hasExpired(saveInterval.count())) + { + saveStatistics(); + } + } m_cacheStatus.totalUsedBuffers = stats[m_metricIndices.disk.diskBlocksInUse]; m_cacheStatus.jobQueueLength = stats[m_metricIndices.disk.queuedDiskJobs]; @@ -5848,20 +6250,20 @@ void SessionImpl::handleSessionStatsAlert(const lt::session_stats_alert *p) emit statsUpdated(); } -void SessionImpl::handleAlertsDroppedAlert(const lt::alerts_dropped_alert *p) const +void SessionImpl::handleAlertsDroppedAlert(const lt::alerts_dropped_alert *alert) const { LogMsg(tr("Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: \"%1\". Message: \"%2\"") - .arg(QString::fromStdString(p->dropped_alerts.to_string()), QString::fromStdString(p->message())), Log::CRITICAL); + .arg(QString::fromStdString(alert->dropped_alerts.to_string()), QString::fromStdString(alert->message())), Log::CRITICAL); } -void SessionImpl::handleStorageMovedAlert(const lt::storage_moved_alert *p) +void SessionImpl::handleStorageMovedAlert(const lt::storage_moved_alert *alert) { Q_ASSERT(!m_moveStorageQueue.isEmpty()); - const MoveStorageJob ¤tJob = m_moveStorageQueue.first(); - Q_ASSERT(currentJob.torrentHandle == p->handle); + const MoveStorageJob ¤tJob = m_moveStorageQueue.constFirst(); + Q_ASSERT(currentJob.torrentHandle == alert->handle); - const Path newPath {QString::fromUtf8(p->storage_path())}; + const Path newPath {QString::fromUtf8(alert->storage_path())}; Q_ASSERT(newPath == currentJob.path); #ifdef QBT_USES_LIBTORRENT2 @@ -5877,12 +6279,12 @@ void SessionImpl::handleStorageMovedAlert(const lt::storage_moved_alert *p) handleMoveTorrentStorageJobFinished(newPath); } -void SessionImpl::handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert *p) +void SessionImpl::handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert *alert) { Q_ASSERT(!m_moveStorageQueue.isEmpty()); - const MoveStorageJob ¤tJob = m_moveStorageQueue.first(); - Q_ASSERT(currentJob.torrentHandle == p->handle); + const MoveStorageJob ¤tJob = m_moveStorageQueue.constFirst(); + Q_ASSERT(currentJob.torrentHandle == alert->handle); #ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(currentJob.torrentHandle.info_hashes()); @@ -5893,20 +6295,20 @@ void SessionImpl::handleStorageMovedFailedAlert(const lt::storage_moved_failed_a TorrentImpl *torrent = m_torrents.value(id); const QString torrentName = (torrent ? torrent->name() : id.toString()); const Path currentLocation = (torrent ? torrent->actualStorageLocation() - : Path(p->handle.status(lt::torrent_handle::query_save_path).save_path)); - const QString errorMessage = QString::fromStdString(p->message()); + : Path(alert->handle.status(lt::torrent_handle::query_save_path).save_path)); + const QString errorMessage = QString::fromStdString(alert->message()); LogMsg(tr("Failed to move torrent. Torrent: \"%1\". Source: \"%2\". Destination: \"%3\". Reason: \"%4\"") .arg(torrentName, currentLocation.toString(), currentJob.path.toString(), errorMessage), Log::WARNING); handleMoveTorrentStorageJobFinished(currentLocation); } -void SessionImpl::handleStateUpdateAlert(const lt::state_update_alert *p) +void SessionImpl::handleStateUpdateAlert(const lt::state_update_alert *alert) { - QVector updatedTorrents; - updatedTorrents.reserve(static_cast(p->status.size())); + QList updatedTorrents; + updatedTorrents.reserve(static_cast(alert->status.size())); - for (const lt::torrent_status &status : p->status) + for (const lt::torrent_status &status : alert->status) { #ifdef QBT_USES_LIBTORRENT2 const auto id = TorrentID::fromInfoHash(status.info_hashes); @@ -5933,41 +6335,46 @@ void SessionImpl::handleStateUpdateAlert(const lt::state_update_alert *p) enqueueRefresh(); } -void SessionImpl::handleSocks5Alert(const lt::socks5_alert *p) const +void SessionImpl::handleSocks5Alert(const lt::socks5_alert *alert) const { - if (p->error) + if (alert->error) { - const auto addr = p->ip.address(); + const auto addr = alert->ip.address(); const QString endpoint = (addr.is_v6() ? u"[%1]:%2"_s : u"%1:%2"_s) - .arg(QString::fromStdString(addr.to_string()), QString::number(p->ip.port())); + .arg(QString::fromStdString(addr.to_string()), QString::number(alert->ip.port())); LogMsg(tr("SOCKS5 proxy error. Address: %1. Message: \"%2\".") - .arg(endpoint, QString::fromLocal8Bit(p->error.message().c_str())) + .arg(endpoint, Utils::String::fromLocal8Bit(alert->error.message())) , Log::WARNING); } } -void SessionImpl::handleI2PAlert(const lt::i2p_alert *p) const +void SessionImpl::handleI2PAlert(const lt::i2p_alert *alert) const { - if (p->error) + if (alert->error) { LogMsg(tr("I2P error. Message: \"%1\".") - .arg(QString::fromStdString(p->message())), Log::WARNING); + .arg(QString::fromStdString(alert->message())), Log::WARNING); } } -void SessionImpl::handleTrackerAlert(const lt::tracker_alert *a) +void SessionImpl::handleTrackerAlert(const lt::tracker_alert *alert) { - TorrentImpl *torrent = m_torrents.value(a->handle.info_hash()); + TorrentImpl *torrent = m_torrents.value(alert->handle.info_hash()); if (!torrent) return; - QMap &updateInfo = m_updatedTrackerEntries[torrent->nativeHandle()][std::string(a->tracker_url())][a->local_endpoint]; + [[maybe_unused]] const QMutexLocker updatedTrackerStatusesLocker {&m_updatedTrackerStatusesMutex}; + + const auto prevSize = m_updatedTrackerStatuses.size(); + QMap &updateInfo = m_updatedTrackerStatuses[torrent->nativeHandle()][std::string(alert->tracker_url())][alert->local_endpoint]; + if (prevSize < m_updatedTrackerStatuses.size()) + updateTrackerEntryStatuses(torrent->nativeHandle()); - if (a->type() == lt::tracker_reply_alert::alert_type) + if (alert->type() == lt::tracker_reply_alert::alert_type) { - const int numPeers = static_cast(a)->num_peers; + const int numPeers = static_cast(alert)->num_peers; #ifdef QBT_USES_LIBTORRENT2 - const int protocolVersionNum = (static_cast(a)->version == lt::protocol_version::V1) ? 1 : 2; + const int protocolVersionNum = (static_cast(alert)->version == lt::protocol_version::V1) ? 1 : 2; #else const int protocolVersionNum = 1; #endif @@ -5976,20 +6383,20 @@ void SessionImpl::handleTrackerAlert(const lt::tracker_alert *a) } #ifdef QBT_USES_LIBTORRENT2 -void SessionImpl::handleTorrentConflictAlert(const lt::torrent_conflict_alert *a) +void SessionImpl::handleTorrentConflictAlert(const lt::torrent_conflict_alert *alert) { - const auto torrentIDv1 = TorrentID::fromSHA1Hash(a->metadata->info_hashes().v1); - const auto torrentIDv2 = TorrentID::fromSHA256Hash(a->metadata->info_hashes().v2); + const auto torrentIDv1 = TorrentID::fromSHA1Hash(alert->metadata->info_hashes().v1); + const auto torrentIDv2 = TorrentID::fromSHA256Hash(alert->metadata->info_hashes().v2); TorrentImpl *torrent1 = m_torrents.value(torrentIDv1); TorrentImpl *torrent2 = m_torrents.value(torrentIDv2); if (torrent2) { if (torrent1) - deleteTorrent(torrentIDv1); + removeTorrent(torrentIDv1); else cancelDownloadMetadata(torrentIDv1); - invokeAsync([torrentHandle = torrent2->nativeHandle(), metadata = a->metadata] + invokeAsync([torrentHandle = torrent2->nativeHandle(), metadata = alert->metadata] { try { @@ -6003,7 +6410,7 @@ void SessionImpl::handleTorrentConflictAlert(const lt::torrent_conflict_alert *a if (!torrent2) cancelDownloadMetadata(torrentIDv2); - invokeAsync([torrentHandle = torrent1->nativeHandle(), metadata = a->metadata] + invokeAsync([torrentHandle = torrent1->nativeHandle(), metadata = alert->metadata] { try { @@ -6019,23 +6426,10 @@ void SessionImpl::handleTorrentConflictAlert(const lt::torrent_conflict_alert *a } if (!torrent1 || !torrent2) - emit metadataDownloaded(TorrentInfo(*a->metadata)); + emit metadataDownloaded(TorrentInfo(*alert->metadata)); } #endif -void SessionImpl::processTrackerStatuses() -{ - if (m_updatedTrackerEntries.isEmpty()) - return; - - for (auto it = m_updatedTrackerEntries.cbegin(); it != m_updatedTrackerEntries.cend(); ++it) - { - updateTrackerEntries(it.key(), it.value()); - } - - m_updatedTrackerEntries.clear(); -} - void SessionImpl::saveStatistics() const { if (!m_isStatisticsDirty) @@ -6060,22 +6454,26 @@ void SessionImpl::loadStatistics() m_previouslyUploaded = value[u"AlltimeUL"_s].toLongLong(); } -void SessionImpl::updateTrackerEntries(lt::torrent_handle torrentHandle, QHash>> updatedTrackers) +void SessionImpl::updateTrackerEntryStatuses(lt::torrent_handle torrentHandle) { - invokeAsync([this, torrentHandle = std::move(torrentHandle), updatedTrackers = std::move(updatedTrackers)]() mutable + invokeAsync([this, torrentHandle = std::move(torrentHandle)] { try { std::vector nativeTrackers = torrentHandle.trackers(); - invoke([this, torrentHandle, nativeTrackers = std::move(nativeTrackers) - , updatedTrackers = std::move(updatedTrackers)] + + QMutexLocker updatedTrackerStatusesLocker {&m_updatedTrackerStatusesMutex}; + QHash>> updatedTrackers = m_updatedTrackerStatuses.take(torrentHandle); + updatedTrackerStatusesLocker.unlock(); + + invoke([this, infoHash = torrentHandle.info_hash(), nativeTrackers = std::move(nativeTrackers), updatedTrackers = std::move(updatedTrackers)] { - TorrentImpl *torrent = m_torrents.value(torrentHandle.info_hash()); - if (!torrent || torrent->isPaused()) + TorrentImpl *torrent = m_torrents.value(infoHash); + if (!torrent || torrent->isStopped()) return; - QHash updatedTrackerEntries; - updatedTrackerEntries.reserve(updatedTrackers.size()); + QHash trackers; + trackers.reserve(updatedTrackers.size()); for (const lt::announce_entry &announceEntry : nativeTrackers) { const auto updatedTrackersIter = updatedTrackers.find(announceEntry.url); @@ -6083,12 +6481,12 @@ void SessionImpl::updateTrackerEntries(lt::torrent_handle torrentHandle, QHashupdateTrackerEntry(announceEntry, updateInfo); - const QString url = trackerEntry.url; - updatedTrackerEntries.emplace(url, std::move(trackerEntry)); + TrackerEntryStatus status = torrent->updateTrackerEntryStatus(announceEntry, updateInfo); + const QString url = status.url; + trackers.emplace(url, std::move(status)); } - emit trackerEntriesUpdated(torrent, updatedTrackerEntries); + emit trackerEntryStatusesUpdated(torrent, trackers); }); } catch (const std::exception &) @@ -6096,3 +6494,29 @@ void SessionImpl::updateTrackerEntries(lt::torrent_handle torrentHandle, QHashname, partfileRemoveError) + , Log::WARNING); + } + + if ((removingTorrentDataIter->removeOption == TorrentRemoveOption::RemoveContent) + && !removingTorrentDataIter->contentStoragePath.isEmpty()) + { + QMetaObject::invokeMethod(m_torrentContentRemover, [this, jobData = *removingTorrentDataIter] + { + m_torrentContentRemover->performJob(jobData.name, jobData.contentStoragePath + , jobData.fileNames, m_torrentContentRemoveOption); + }); + } + + m_removingTorrents.erase(removingTorrentDataIter); +} diff --git a/src/base/bittorrent/sessionimpl.h b/src/base/bittorrent/sessionimpl.h index 01374542c741..960f0cd99e80 100644 --- a/src/base/bittorrent/sessionimpl.h +++ b/src/base/bittorrent/sessionimpl.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,6 +29,7 @@ #pragma once +#include #include #include @@ -37,13 +38,14 @@ #include #include -#include #include #include +#include #include +#include #include #include -#include +#include #include "base/path.h" #include "base/settingvalue.h" @@ -54,11 +56,8 @@ #include "session.h" #include "sessionstatus.h" #include "torrentinfo.h" -#include "trackerentry.h" class QString; -class QThread; -class QThreadPool; class QTimer; class QUrl; @@ -69,16 +68,19 @@ class NativeSessionExtension; namespace BitTorrent { + enum class MoveStorageMode; + enum class MoveStorageContext; + class InfoHash; class ResumeDataStorage; class Torrent; + class TorrentContentRemover; class TorrentDescriptor; class TorrentImpl; class Tracker; - struct LoadTorrentParams; - enum class MoveStorageMode; - enum class MoveStorageContext; + struct LoadTorrentParams; + struct TrackerEntry; struct SessionMetricIndices { @@ -142,7 +144,9 @@ namespace BitTorrent QStringList categories() const override; CategoryOptions categoryOptions(const QString &categoryName) const override; Path categorySavePath(const QString &categoryName) const override; + Path categorySavePath(const QString &categoryName, const CategoryOptions &options) const override; Path categoryDownloadPath(const QString &categoryName) const override; + Path categoryDownloadPath(const QString &categoryName, const CategoryOptions &options) const override; bool addCategory(const QString &name, const CategoryOptions &options = {}) override; bool editCategory(const QString &name, const CategoryOptions &options) override; bool removeCategory(const QString &name) override; @@ -154,10 +158,10 @@ namespace BitTorrent Path suggestedSavePath(const QString &categoryName, std::optional useAutoTMM) const override; Path suggestedDownloadPath(const QString &categoryName, std::optional useAutoTMM) const override; - QSet tags() const override; - bool hasTag(const QString &tag) const override; - bool addTag(const QString &tag) override; - bool removeTag(const QString &tag) override; + TagSet tags() const override; + bool hasTag(const Tag &tag) const override; + bool addTag(const Tag &tag) override; + bool removeTag(const Tag &tag) override; bool isAutoTMMDisabledByDefault() const override; void setAutoTMMDisabledByDefault(bool value) override; @@ -174,6 +178,9 @@ namespace BitTorrent void setGlobalMaxSeedingMinutes(int minutes) override; int globalMaxInactiveSeedingMinutes() const override; void setGlobalMaxInactiveSeedingMinutes(int minutes) override; + ShareLimitAction shareLimitAction() const override; + void setShareLimitAction(ShareLimitAction act) override; + QString getDHTBootstrapNodes() const override; void setDHTBootstrapNodes(const QString &nodes) override; bool isDHTEnabled() const override; @@ -184,8 +191,8 @@ namespace BitTorrent void setPeXEnabled(bool enabled) override; bool isAddTorrentToQueueTop() const override; void setAddTorrentToQueueTop(bool value) override; - bool isAddTorrentPaused() const override; - void setAddTorrentPaused(bool value) override; + bool isAddTorrentStopped() const override; + void setAddTorrentStopped(bool value) override; Torrent::StopCondition torrentStopCondition() const override; void setTorrentStopCondition(Torrent::StopCondition stopCondition) override; TorrentContentLayout torrentContentLayout() const override; @@ -194,6 +201,8 @@ namespace BitTorrent void setTrackerEnabled(bool enabled) override; bool isAppendExtensionEnabled() const override; void setAppendExtensionEnabled(bool enabled) override; + bool isUnwantedFolderEnabled() const override; + void setUnwantedFolderEnabled(bool enabled) override; int refreshInterval() const override; void setRefreshInterval(int value) override; bool isPreallocationEnabled() const override; @@ -224,8 +233,16 @@ namespace BitTorrent void setPerformanceWarningEnabled(bool enable) override; int saveResumeDataInterval() const override; void setSaveResumeDataInterval(int value) override; + std::chrono::minutes saveStatisticsInterval() const override; + void setSaveStatisticsInterval(std::chrono::minutes value) override; + int shutdownTimeout() const override; + void setShutdownTimeout(int value) override; int port() const override; void setPort(int port) override; + bool isSSLEnabled() const override; + void setSSLEnabled(bool enabled) override; + int sslPort() const override; + void setSSLPort(int port) override; QString networkInterface() const override; void setNetworkInterface(const QString &iface) override; QString networkInterfaceName() const override; @@ -344,6 +361,8 @@ namespace BitTorrent void setIncludeOverheadInLimits(bool include) override; QString announceIP() const override; void setAnnounceIP(const QString &ip) override; + int announcePort() const override; + void setAnnouncePort(int port) override; int maxConcurrentHTTPAnnounces() const override; void setMaxConcurrentHTTPAnnounces(int value) override; bool isReannounceWhenAddressChangedEnabled() const override; @@ -387,61 +406,67 @@ namespace BitTorrent void setExcludedFileNamesEnabled(bool enabled) override; QStringList excludedFileNames() const override; void setExcludedFileNames(const QStringList &excludedFileNames) override; - bool isFilenameExcluded(const QString &fileName) const override; + void applyFilenameFilter(const PathList &files, QList &priorities) override; QStringList bannedIPs() const override; void setBannedIPs(const QStringList &newList) override; ResumeDataStorageType resumeDataStorageType() const override; void setResumeDataStorageType(ResumeDataStorageType type) override; bool isMergeTrackersEnabled() const override; void setMergeTrackersEnabled(bool enabled) override; + bool isStartPaused() const override; + void setStartPaused(bool value) override; + TorrentContentRemoveOption torrentContentRemoveOption() const override; + void setTorrentContentRemoveOption(TorrentContentRemoveOption option) override; bool isRestored() const override; + bool isPaused() const override; + void pause() override; + void resume() override; + Torrent *getTorrent(const TorrentID &id) const override; Torrent *findTorrent(const InfoHash &infoHash) const override; - QVector torrents() const override; + QList torrents() const override; qsizetype torrentsCount() const override; const SessionStatus &status() const override; const CacheStatus &cacheStatus() const override; bool isListening() const override; - MaxRatioAction maxRatioAction() const override; - void setMaxRatioAction(MaxRatioAction act) override; - void banIP(const QString &ip) override; bool isKnownTorrent(const InfoHash &infoHash) const override; bool addTorrent(const TorrentDescriptor &torrentDescr, const AddTorrentParams ¶ms = {}) override; - bool deleteTorrent(const TorrentID &id, DeleteOption deleteOption = DeleteTorrent) override; + bool removeTorrent(const TorrentID &id, TorrentRemoveOption deleteOption = TorrentRemoveOption::KeepContent) override; bool downloadMetadata(const TorrentDescriptor &torrentDescr) override; bool cancelDownloadMetadata(const TorrentID &id) override; - void increaseTorrentsQueuePos(const QVector &ids) override; - void decreaseTorrentsQueuePos(const QVector &ids) override; - void topTorrentsQueuePos(const QVector &ids) override; - void bottomTorrentsQueuePos(const QVector &ids) override; + void increaseTorrentsQueuePos(const QList &ids) override; + void decreaseTorrentsQueuePos(const QList &ids) override; + void topTorrentsQueuePos(const QList &ids) override; + void bottomTorrentsQueuePos(const QList &ids) override; + + QString lastExternalIPv4Address() const override; + QString lastExternalIPv6Address() const override; // Torrent interface - void handleTorrentNeedSaveResumeData(const TorrentImpl *torrent); - void handleTorrentSaveResumeDataRequested(const TorrentImpl *torrent); - void handleTorrentSaveResumeDataFailed(const TorrentImpl *torrent); + void handleTorrentResumeDataRequested(const TorrentImpl *torrent); void handleTorrentShareLimitChanged(TorrentImpl *torrent); void handleTorrentNameChanged(TorrentImpl *torrent); void handleTorrentSavePathChanged(TorrentImpl *torrent); void handleTorrentCategoryChanged(TorrentImpl *torrent, const QString &oldCategory); - void handleTorrentTagAdded(TorrentImpl *torrent, const QString &tag); - void handleTorrentTagRemoved(TorrentImpl *torrent, const QString &tag); + void handleTorrentTagAdded(TorrentImpl *torrent, const Tag &tag); + void handleTorrentTagRemoved(TorrentImpl *torrent, const Tag &tag); void handleTorrentSavingModeChanged(TorrentImpl *torrent); void handleTorrentMetadataReceived(TorrentImpl *torrent); - void handleTorrentPaused(TorrentImpl *torrent); - void handleTorrentResumed(TorrentImpl *torrent); + void handleTorrentStopped(TorrentImpl *torrent); + void handleTorrentStarted(TorrentImpl *torrent); void handleTorrentChecked(TorrentImpl *torrent); void handleTorrentFinished(TorrentImpl *torrent); - void handleTorrentTrackersAdded(TorrentImpl *torrent, const QVector &newTrackers); + void handleTorrentTrackersAdded(TorrentImpl *torrent, const QList &newTrackers); void handleTorrentTrackersRemoved(TorrentImpl *torrent, const QStringList &deletedTrackers); void handleTorrentTrackersChanged(TorrentImpl *torrent); - void handleTorrentUrlSeedsAdded(TorrentImpl *torrent, const QVector &newUrlSeeds); - void handleTorrentUrlSeedsRemoved(TorrentImpl *torrent, const QVector &urlSeeds); + void handleTorrentUrlSeedsAdded(TorrentImpl *torrent, const QList &newUrlSeeds); + void handleTorrentUrlSeedsRemoved(TorrentImpl *torrent, const QList &urlSeeds); void handleTorrentResumeDataReady(TorrentImpl *torrent, const LoadTorrentParams &data); void handleTorrentInfoHashChanged(TorrentImpl *torrent, const InfoHash &prevInfoHash); void handleTorrentStorageMovingStateChanged(TorrentImpl *torrent); @@ -462,17 +487,30 @@ namespace BitTorrent QMetaObject::invokeMethod(this, std::forward(func), Qt::QueuedConnection); } - void invokeAsync(std::function func); + template + void invokeAsync(Func &&func) + { + m_asyncWorker->start(std::forward(func)); + } + + bool isAddTrackersFromURLEnabled() const override; + void setAddTrackersFromURLEnabled(bool enabled) override; + QString additionalTrackersURL() const override; + void setAdditionalTrackersURL(const QString &url) override; + QString additionalTrackersFromURL() const override; + + signals: + void addTorrentAlertsReceived(qsizetype count); private slots: void configureDeferred(); void readAlerts(); void enqueueRefresh(); - void processShareLimits(); void generateResumeData(); void handleIPFilterParsed(int ruleCount); void handleIPFilterError(); void fileSearchFinished(const TorrentID &id, const Path &savePath, const PathList &fileNames); + void torrentContentRemovingFinished(const QString &torrentName, const QString &errorMessage); private: struct ResumeSessionContext; @@ -488,8 +526,9 @@ namespace BitTorrent struct RemovingTorrentData { QString name; - Path pathToRemove; - DeleteOption deleteOption {}; + Path contentStoragePath; + PathList fileNames; + TorrentRemoveOption removeOption {}; }; explicit SessionImpl(QObject *parent = nullptr); @@ -516,7 +555,7 @@ namespace BitTorrent void populateAdditionalTrackers(); void enableIPFilter(); void disableIPFilter(); - void processTrackerStatuses(); + void processTorrentShareLimits(TorrentImpl *torrent); void populateExcludedFileNamesRegExpList(); void prepareStartup(); void handleLoadedResumeData(ResumeSessionContext *context); @@ -529,33 +568,34 @@ namespace BitTorrent void updateSeedingLimitTimer(); void exportTorrentFile(const Torrent *torrent, const Path &folderPath); - void handleAlert(const lt::alert *a); - void handleAddTorrentAlerts(const std::vector &alerts); - void dispatchTorrentAlert(const lt::torrent_alert *a); - void handleStateUpdateAlert(const lt::state_update_alert *p); - void handleMetadataReceivedAlert(const lt::metadata_received_alert *p); - void handleFileErrorAlert(const lt::file_error_alert *p); - void handleTorrentRemovedAlert(const lt::torrent_removed_alert *p); - void handleTorrentDeletedAlert(const lt::torrent_deleted_alert *p); - void handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_alert *p); - void handlePortmapWarningAlert(const lt::portmap_error_alert *p); - void handlePortmapAlert(const lt::portmap_alert *p); - void handlePeerBlockedAlert(const lt::peer_blocked_alert *p); - void handlePeerBanAlert(const lt::peer_ban_alert *p); - void handleUrlSeedAlert(const lt::url_seed_alert *p); - void handleListenSucceededAlert(const lt::listen_succeeded_alert *p); - void handleListenFailedAlert(const lt::listen_failed_alert *p); - void handleExternalIPAlert(const lt::external_ip_alert *p); - void handleSessionErrorAlert(const lt::session_error_alert *p) const; - void handleSessionStatsAlert(const lt::session_stats_alert *p); - void handleAlertsDroppedAlert(const lt::alerts_dropped_alert *p) const; - void handleStorageMovedAlert(const lt::storage_moved_alert *p); - void handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert *p); - void handleSocks5Alert(const lt::socks5_alert *p) const; - void handleI2PAlert(const lt::i2p_alert *p) const; - void handleTrackerAlert(const lt::tracker_alert *a); + void handleAlert(const lt::alert *alert); + void dispatchTorrentAlert(const lt::torrent_alert *alert); + void handleAddTorrentAlert(const lt::add_torrent_alert *alert); + void handleStateUpdateAlert(const lt::state_update_alert *alert); + void handleMetadataReceivedAlert(const lt::metadata_received_alert *alert); + void handleFileErrorAlert(const lt::file_error_alert *alert); + void handleTorrentRemovedAlert(const lt::torrent_removed_alert *alert); + void handleTorrentDeletedAlert(const lt::torrent_deleted_alert *alert); + void handleTorrentDeleteFailedAlert(const lt::torrent_delete_failed_alert *alert); + void handleTorrentNeedCertAlert(const lt::torrent_need_cert_alert *alert); + void handlePortmapWarningAlert(const lt::portmap_error_alert *alert); + void handlePortmapAlert(const lt::portmap_alert *alert); + void handlePeerBlockedAlert(const lt::peer_blocked_alert *alert); + void handlePeerBanAlert(const lt::peer_ban_alert *alert); + void handleUrlSeedAlert(const lt::url_seed_alert *alert); + void handleListenSucceededAlert(const lt::listen_succeeded_alert *alert); + void handleListenFailedAlert(const lt::listen_failed_alert *alert); + void handleExternalIPAlert(const lt::external_ip_alert *alert); + void handleSessionErrorAlert(const lt::session_error_alert *alert) const; + void handleSessionStatsAlert(const lt::session_stats_alert *alert); + void handleAlertsDroppedAlert(const lt::alerts_dropped_alert *alert) const; + void handleStorageMovedAlert(const lt::storage_moved_alert *alert); + void handleStorageMovedFailedAlert(const lt::storage_moved_failed_alert *alert); + void handleSocks5Alert(const lt::socks5_alert *alert) const; + void handleI2PAlert(const lt::i2p_alert *alert) const; + void handleTrackerAlert(const lt::tracker_alert *alert); #ifdef QBT_USES_LIBTORRENT2 - void handleTorrentConflictAlert(const lt::torrent_conflict_alert *a); + void handleTorrentConflictAlert(const lt::torrent_conflict_alert *alert); #endif TorrentImpl *createTorrent(const lt::torrent_handle &nativeHandle, const LoadTorrentParams ¶ms); @@ -564,27 +604,28 @@ namespace BitTorrent void saveTorrentsQueue(); void removeTorrentsQueue(); - std::vector getPendingAlerts(lt::time_duration time = lt::time_duration::zero()) const; + void populateAdditionalTrackersFromURL(); + + void fetchPendingAlerts(lt::time_duration time = lt::time_duration::zero()); void moveTorrentStorage(const MoveStorageJob &job) const; void handleMoveTorrentStorageJobFinished(const Path &newPath); + void processPendingFinishedTorrents(); void loadCategories(); void storeCategories() const; void upgradeCategories(); + DownloadPathOption resolveCategoryDownloadPathOption(const QString &categoryName, const std::optional &option) const; void saveStatistics() const; void loadStatistics(); - void updateTrackerEntries(lt::torrent_handle torrentHandle, QHash>> updatedTrackers); + void updateTrackerEntryStatuses(lt::torrent_handle torrentHandle); - // BitTorrent - lt::session *m_nativeSession = nullptr; - NativeSessionExtension *m_nativeSessionExtension = nullptr; + void handleRemovedTorrent(const TorrentID &torrentID, const QString &partfileRemoveError = {}); - bool m_deferredConfigureScheduled = false; - bool m_IPFilteringConfigured = false; - mutable bool m_listenInterfaceConfigured = false; + void setAdditionalTrackersFromURL(const QString &trackers); + void updateTrackersFromURL(); CachedSettingValue m_DHTBootstrapNodes; CachedSettingValue m_isDHTEnabled; @@ -631,6 +672,7 @@ namespace BitTorrent CachedSettingValue m_ignoreLimitsOnLAN; CachedSettingValue m_includeOverheadInLimits; CachedSettingValue m_announceIP; + CachedSettingValue m_announcePort; CachedSettingValue m_maxConcurrentHTTPAnnounces; CachedSettingValue m_isReannounceWhenAddressChangedEnabled; CachedSettingValue m_stopTrackerTimeout; @@ -648,14 +690,17 @@ namespace BitTorrent CachedSettingValue m_blockPeersOnPrivilegedPorts; CachedSettingValue m_isAddTrackersEnabled; CachedSettingValue m_additionalTrackers; + CachedSettingValue m_isAddTrackersFromURLEnabled; + CachedSettingValue m_additionalTrackersURL; CachedSettingValue m_globalMaxRatio; CachedSettingValue m_globalMaxSeedingMinutes; CachedSettingValue m_globalMaxInactiveSeedingMinutes; CachedSettingValue m_isAddTorrentToQueueTop; - CachedSettingValue m_isAddTorrentPaused; + CachedSettingValue m_isAddTorrentStopped; CachedSettingValue m_torrentStopCondition; CachedSettingValue m_torrentContentLayout; CachedSettingValue m_isAppendExtensionEnabled; + CachedSettingValue m_isUnwantedFolderEnabled; CachedSettingValue m_refreshInterval; CachedSettingValue m_isPreallocationEnabled; CachedSettingValue m_torrentExportDirectory; @@ -668,7 +713,11 @@ namespace BitTorrent CachedSettingValue m_isBandwidthSchedulerEnabled; CachedSettingValue m_isPerformanceWarningEnabled; CachedSettingValue m_saveResumeDataInterval; + CachedSettingValue m_saveStatisticsInterval; + CachedSettingValue m_shutdownTimeout; CachedSettingValue m_port; + CachedSettingValue m_sslEnabled; + CachedSettingValue m_sslPort; CachedSettingValue m_networkInterface; CachedSettingValue m_networkInterfaceName; CachedSettingValue m_networkInterfaceAddress; @@ -678,7 +727,7 @@ namespace BitTorrent CachedSettingValue m_chokingAlgorithm; CachedSettingValue m_seedChokingAlgorithm; CachedSettingValue m_storedTags; - CachedSettingValue m_maxRatioAction; + CachedSettingValue m_shareLimitAction; CachedSettingValue m_savePath; CachedSettingValue m_downloadPath; CachedSettingValue m_isDownloadPathEnabled; @@ -706,8 +755,21 @@ namespace BitTorrent CachedSettingValue m_I2POutboundQuantity; CachedSettingValue m_I2PInboundLength; CachedSettingValue m_I2POutboundLength; + CachedSettingValue m_torrentContentRemoveOption; + SettingValue m_startPaused; + + lt::session *m_nativeSession = nullptr; + NativeSessionExtension *m_nativeSessionExtension = nullptr; + + bool m_deferredConfigureScheduled = false; + bool m_IPFilteringConfigured = false; + mutable bool m_listenInterfaceConfigured = false; + + QString m_additionalTrackersFromURL; + QTimer *m_updateTrackersFromURLTimer = nullptr; bool m_isRestored = false; + bool m_isPaused = isStartPaused(); // Order is important. This needs to be declared after its CachedSettingsValue // counterpart, because it uses it for initialization in the constructor @@ -715,8 +777,9 @@ namespace BitTorrent const bool m_wasPexEnabled = m_isPeXEnabled; int m_numResumeData = 0; - QVector m_additionalTrackerList; - QVector m_excludedFileNamesRegExpList; + QList m_additionalTrackerEntries; + QList m_additionalTrackerEntriesFromURL; + QList m_excludedFileNamesRegExpList; // Statistics mutable QElapsedTimer m_statisticsLastUpdateTimer; @@ -739,6 +802,7 @@ namespace BitTorrent QThreadPool *m_asyncWorker = nullptr; ResumeDataStorage *m_resumeDataStorage = nullptr; FileSearcher *m_fileSearcher = nullptr; + TorrentContentRemover *m_torrentContentRemover = nullptr; QHash m_downloadedMetadata; @@ -746,14 +810,18 @@ namespace BitTorrent QHash m_hybridTorrentsByAltID; QHash m_loadingTorrents; QHash m_removingTorrents; - QSet m_needSaveResumeDataTorrents; QHash m_changedTorrentIDs; QMap m_categories; - QSet m_tags; + TagSet m_tags; + + std::vector m_alerts; // make it a class variable so it can preserve its allocated `capacity` + qsizetype m_receivedAddTorrentAlertsCount = 0; + QList m_loadedTorrents; // This field holds amounts of peers reported by trackers in their responses to announces // (torrent.tracker_name.tracker_local_endpoint.protocol_version.num_peers) - QHash>>> m_updatedTrackerEntries; + QHash>>> m_updatedTrackerStatuses; + QMutex m_updatedTrackerStatusesMutex; // I/O errored torrents QSet m_recentErroredTorrents; @@ -767,7 +835,8 @@ namespace BitTorrent QList m_moveStorageQueue; - QString m_lastExternalIP; + QString m_lastExternalIPv4Address; + QString m_lastExternalIPv6Address; bool m_needUpgradeDownloadPath = false; @@ -777,8 +846,9 @@ namespace BitTorrent bool m_isPortMappingEnabled = false; QHash> m_mappedPorts; - QTimer *m_wakeupCheckTimer = nullptr; - QDateTime m_wakeupCheckTimestamp; + QElapsedTimer m_wakeupCheckTimestamp; + + QList m_pendingFinishedTorrents; friend void Session::initInstance(); friend void Session::freeInstance(); diff --git a/src/base/bittorrent/sharelimitaction.h b/src/base/bittorrent/sharelimitaction.h new file mode 100644 index 000000000000..c12b8ac340b1 --- /dev/null +++ b/src/base/bittorrent/sharelimitaction.h @@ -0,0 +1,57 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2015-2024 Vladimir Golovnev + * Copyright (C) 2006 Christophe Dumez + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +namespace BitTorrent +{ + // Using `Q_ENUM_NS()` without a wrapper namespace in our case is not advised + // since `Q_NAMESPACE` cannot be used when the same namespace resides at different files. + // https://www.kdab.com/new-qt-5-8-meta-object-support-namespaces/#comment-143779 + inline namespace ShareLimitActionNS + { + Q_NAMESPACE + + // These values should remain unchanged when adding new items + // so as not to break the existing user settings. + enum class ShareLimitAction + { + Default = -1, // special value + + Stop = 0, + Remove = 1, + RemoveWithContent = 3, + EnableSuperSeeding = 2 + }; + + Q_ENUM_NS(ShareLimitAction) + } +} diff --git a/src/base/bittorrent/sslparameters.cpp b/src/base/bittorrent/sslparameters.cpp new file mode 100644 index 000000000000..ba7ecce2a04b --- /dev/null +++ b/src/base/bittorrent/sslparameters.cpp @@ -0,0 +1,34 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "sslparameters.h" + +bool BitTorrent::SSLParameters::isValid() const +{ + return (!certificate.isNull() && !privateKey.isNull() && !dhParams.isEmpty()); +} diff --git a/src/base/bittorrent/sslparameters.h b/src/base/bittorrent/sslparameters.h new file mode 100644 index 000000000000..8033b9164371 --- /dev/null +++ b/src/base/bittorrent/sslparameters.h @@ -0,0 +1,47 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include +#include +#include + +namespace BitTorrent +{ + struct SSLParameters + { + QSslCertificate certificate {{}}; + QSslKey privateKey; + QByteArray dhParams; + + bool isValid() const; + + friend bool operator==(const SSLParameters &left, const SSLParameters &right) = default; + }; +} diff --git a/src/base/bittorrent/torrent.cpp b/src/base/bittorrent/torrent.cpp index c9ed27bfba47..c92fb9aea158 100644 --- a/src/base/bittorrent/torrent.cpp +++ b/src/base/bittorrent/torrent.cpp @@ -60,9 +60,9 @@ namespace BitTorrent return infoHash().toTorrentID(); } - bool Torrent::isResumed() const + bool Torrent::isRunning() const { - return !isPaused(); + return !isStopped(); } qlonglong Torrent::remainingSize() const diff --git a/src/base/bittorrent/torrent.h b/src/base/bittorrent/torrent.h index e7cf4cde5f9d..d2eefbabfd73 100644 --- a/src/base/bittorrent/torrent.h +++ b/src/base/bittorrent/torrent.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -37,6 +37,7 @@ #include "base/3rdparty/expected.hpp" #include "base/pathfwd.h" #include "base/tagset.h" +#include "sharelimitaction.h" #include "torrentcontenthandler.h" class QBitArray; @@ -47,13 +48,17 @@ class QUrl; namespace BitTorrent { enum class DownloadPriority; + class InfoHash; class PeerInfo; class Session; class TorrentID; class TorrentInfo; + struct PeerAddress; + struct SSLParameters; struct TrackerEntry; + struct TrackerEntryStatus; // Using `Q_ENUM_NS()` without a wrapper namespace in our case is not advised // since `Q_NAMESPACE` cannot be used when the same namespace resides at different files. @@ -92,8 +97,8 @@ namespace BitTorrent CheckingUploading, CheckingDownloading, - PausedDownloading, - PausedUploading, + StoppedDownloading, + StoppedUploading, Moving, @@ -202,24 +207,40 @@ namespace BitTorrent virtual bool setCategory(const QString &category) = 0; virtual TagSet tags() const = 0; - virtual bool hasTag(const QString &tag) const = 0; - virtual bool addTag(const QString &tag) = 0; - virtual bool removeTag(const QString &tag) = 0; + virtual bool hasTag(const Tag &tag) const = 0; + virtual bool addTag(const Tag &tag) = 0; + virtual bool removeTag(const Tag &tag) = 0; virtual void removeAllTags() = 0; virtual int piecesCount() const = 0; virtual int piecesHave() const = 0; virtual qreal progress() const = 0; + virtual QDateTime addedTime() const = 0; + virtual QDateTime completedTime() const = 0; + virtual QDateTime lastSeenComplete() const = 0; + virtual qlonglong activeTime() const = 0; + virtual qlonglong finishedTime() const = 0; + virtual qlonglong timeSinceUpload() const = 0; + virtual qlonglong timeSinceDownload() const = 0; + virtual qlonglong timeSinceActivity() const = 0; + + // Share limits virtual qreal ratioLimit() const = 0; + virtual void setRatioLimit(qreal limit) = 0; virtual int seedingTimeLimit() const = 0; + virtual void setSeedingTimeLimit(int limit) = 0; virtual int inactiveSeedingTimeLimit() const = 0; + virtual void setInactiveSeedingTimeLimit(int limit) = 0; + virtual ShareLimitAction shareLimitAction() const = 0; + virtual void setShareLimitAction(ShareLimitAction action) = 0; virtual PathList filePaths() const = 0; + virtual PathList actualFilePaths() const = 0; virtual TorrentInfo info() const = 0; virtual bool isFinished() const = 0; - virtual bool isPaused() const = 0; + virtual bool isStopped() const = 0; virtual bool isQueued() const = 0; virtual bool isForced() const = 0; virtual bool isChecking() const = 0; @@ -236,13 +257,11 @@ namespace BitTorrent virtual bool hasMissingFiles() const = 0; virtual bool hasError() const = 0; virtual int queuePosition() const = 0; - virtual QVector trackers() const = 0; - virtual QVector urlSeeds() const = 0; + virtual QList trackers() const = 0; + virtual QList urlSeeds() const = 0; virtual QString error() const = 0; virtual qlonglong totalDownload() const = 0; virtual qlonglong totalUpload() const = 0; - virtual qlonglong activeTime() const = 0; - virtual qlonglong finishedTime() const = 0; virtual qlonglong eta() const = 0; virtual int seedsCount() const = 0; virtual int peersCount() const = 0; @@ -250,26 +269,22 @@ namespace BitTorrent virtual int totalSeedsCount() const = 0; virtual int totalPeersCount() const = 0; virtual int totalLeechersCount() const = 0; - virtual QDateTime lastSeenComplete() const = 0; - virtual QDateTime completedTime() const = 0; - virtual qlonglong timeSinceUpload() const = 0; - virtual qlonglong timeSinceDownload() const = 0; - virtual qlonglong timeSinceActivity() const = 0; virtual int downloadLimit() const = 0; virtual int uploadLimit() const = 0; virtual bool superSeeding() const = 0; virtual bool isDHTDisabled() const = 0; virtual bool isPEXDisabled() const = 0; virtual bool isLSDDisabled() const = 0; - virtual QVector peers() const = 0; + virtual QList peers() const = 0; virtual QBitArray pieces() const = 0; virtual QBitArray downloadingPieces() const = 0; - virtual QVector pieceAvailability() const = 0; + virtual QList pieceAvailability() const = 0; virtual qreal distributedCopies() const = 0; virtual qreal maxRatio() const = 0; virtual int maxSeedingTime() const = 0; virtual int maxInactiveSeedingTime() const = 0; virtual qreal realRatio() const = 0; + virtual qreal popularity() const = 0; virtual int uploadPayloadRate() const = 0; virtual int downloadPayloadRate() const = 0; virtual qlonglong totalPayloadUpload() const = 0; @@ -281,43 +296,42 @@ namespace BitTorrent virtual void setName(const QString &name) = 0; virtual void setSequentialDownload(bool enable) = 0; virtual void setFirstLastPiecePriority(bool enabled) = 0; - virtual void pause() = 0; - virtual void resume(TorrentOperatingMode mode = TorrentOperatingMode::AutoManaged) = 0; + virtual void stop() = 0; + virtual void start(TorrentOperatingMode mode = TorrentOperatingMode::AutoManaged) = 0; virtual void forceReannounce(int index = -1) = 0; virtual void forceDHTAnnounce() = 0; virtual void forceRecheck() = 0; - virtual void setRatioLimit(qreal limit) = 0; - virtual void setSeedingTimeLimit(int limit) = 0; - virtual void setInactiveSeedingTimeLimit(int limit) = 0; virtual void setUploadLimit(int limit) = 0; virtual void setDownloadLimit(int limit) = 0; virtual void setSuperSeeding(bool enable) = 0; virtual void setDHTDisabled(bool disable) = 0; virtual void setPEXDisabled(bool disable) = 0; virtual void setLSDDisabled(bool disable) = 0; - virtual void addTrackers(QVector trackers) = 0; + virtual void addTrackers(QList trackers) = 0; virtual void removeTrackers(const QStringList &trackers) = 0; - virtual void replaceTrackers(QVector trackers) = 0; - virtual void addUrlSeeds(const QVector &urlSeeds) = 0; - virtual void removeUrlSeeds(const QVector &urlSeeds) = 0; + virtual void replaceTrackers(QList trackers) = 0; + virtual void addUrlSeeds(const QList &urlSeeds) = 0; + virtual void removeUrlSeeds(const QList &urlSeeds) = 0; virtual bool connectPeer(const PeerAddress &peerAddress) = 0; virtual void clearPeers() = 0; virtual void setMetadata(const TorrentInfo &torrentInfo) = 0; virtual StopCondition stopCondition() const = 0; virtual void setStopCondition(StopCondition stopCondition) = 0; + virtual SSLParameters getSSLParameters() const = 0; + virtual void setSSLParameters(const SSLParameters &sslParams) = 0; virtual QString createMagnetURI() const = 0; virtual nonstd::expected exportToBuffer() const = 0; virtual nonstd::expected exportToFile(const Path &path) const = 0; - virtual void fetchPeerInfo(std::function)> resultHandler) const = 0; - virtual void fetchURLSeeds(std::function)> resultHandler) const = 0; - virtual void fetchPieceAvailability(std::function)> resultHandler) const = 0; + virtual void fetchPeerInfo(std::function)> resultHandler) const = 0; + virtual void fetchURLSeeds(std::function)> resultHandler) const = 0; + virtual void fetchPieceAvailability(std::function)> resultHandler) const = 0; virtual void fetchDownloadingPieces(std::function resultHandler) const = 0; TorrentID id() const; - bool isResumed() const; + bool isRunning() const; qlonglong remainingSize() const; void toggleSequentialDownload(); diff --git a/src/base/bittorrent/torrentcontenthandler.h b/src/base/bittorrent/torrentcontenthandler.h index 1604cbe52f62..2e3702d2c35f 100644 --- a/src/base/bittorrent/torrentcontenthandler.h +++ b/src/base/bittorrent/torrentcontenthandler.h @@ -44,18 +44,18 @@ namespace BitTorrent virtual bool hasMetadata() const = 0; virtual Path actualStorageLocation() const = 0; virtual Path actualFilePath(int fileIndex) const = 0; - virtual QVector filePriorities() const = 0; - virtual QVector filesProgress() const = 0; + virtual QList filePriorities() const = 0; + virtual QList filesProgress() const = 0; /** * @brief fraction of file pieces that are available at least from one peer * * This is not the same as torrrent availability, it is just a fraction of pieces * that can be downloaded right now. It varies between 0 to 1. */ - virtual QVector availableFileFractions() const = 0; - virtual void fetchAvailableFileFractions(std::function)> resultHandler) const = 0; + virtual QList availableFileFractions() const = 0; + virtual void fetchAvailableFileFractions(std::function)> resultHandler) const = 0; - virtual void prioritizeFiles(const QVector &priorities) = 0; + virtual void prioritizeFiles(const QList &priorities) = 0; virtual void flushCache() const = 0; }; } diff --git a/src/base/bittorrent/torrentcontentremoveoption.h b/src/base/bittorrent/torrentcontentremoveoption.h new file mode 100644 index 000000000000..1083e5ec09d8 --- /dev/null +++ b/src/base/bittorrent/torrentcontentremoveoption.h @@ -0,0 +1,50 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +namespace BitTorrent +{ + // Using `Q_ENUM_NS()` without a wrapper namespace in our case is not advised + // since `Q_NAMESPACE` cannot be used when the same namespace resides at different files. + // https://www.kdab.com/new-qt-5-8-meta-object-support-namespaces/#comment-143779 + inline namespace TorrentContentRemoveOptionNS + { + Q_NAMESPACE + + enum class TorrentContentRemoveOption + { + Delete, + MoveToTrash + }; + + Q_ENUM_NS(TorrentContentRemoveOption) + } +} diff --git a/src/base/bittorrent/torrentcontentremover.cpp b/src/base/bittorrent/torrentcontentremover.cpp new file mode 100644 index 000000000000..861f4be96562 --- /dev/null +++ b/src/base/bittorrent/torrentcontentremover.cpp @@ -0,0 +1,61 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "torrentcontentremover.h" + +#include "base/utils/fs.h" + +void BitTorrent::TorrentContentRemover::performJob(const QString &torrentName, const Path &basePath + , const PathList &fileNames, const TorrentContentRemoveOption option) +{ + QString errorMessage; + + if (!fileNames.isEmpty()) + { + const auto removeFileFn = [&option](const Path &filePath) + { + return ((option == TorrentContentRemoveOption::MoveToTrash) + ? Utils::Fs::moveFileToTrash : Utils::Fs::removeFile)(filePath); + }; + + for (const Path &fileName : fileNames) + { + if (const auto result = removeFileFn(basePath / fileName) + ; !result && errorMessage.isEmpty()) + { + errorMessage = result.error(); + } + } + + const Path rootPath = Path::findRootFolder(fileNames); + if (!rootPath.isEmpty()) + Utils::Fs::smartRemoveEmptyFolderTree(basePath / rootPath); + } + + emit jobFinished(torrentName, errorMessage); +} diff --git a/src/base/iconprovider.cpp b/src/base/bittorrent/torrentcontentremover.h similarity index 63% rename from src/base/iconprovider.cpp rename to src/base/bittorrent/torrentcontentremover.h index f2d285f1c2a9..a18161493f9c 100644 --- a/src/base/iconprovider.cpp +++ b/src/base/bittorrent/torrentcontentremover.h @@ -1,7 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev - * Copyright (C) 2011 Christophe Dumez + * Copyright (C) 2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -27,41 +26,28 @@ * exception statement from your version. */ -#include "iconprovider.h" +#pragma once -#include "base/path.h" - -IconProvider::IconProvider(QObject *parent) - : QObject(parent) -{ -} +#include -void IconProvider::initInstance() -{ - if (!m_instance) - m_instance = new IconProvider; -} +#include "base/path.h" +#include "torrentcontentremoveoption.h" -void IconProvider::freeInstance() +namespace BitTorrent { - delete m_instance; - m_instance = nullptr; -} + class TorrentContentRemover final : public QObject + { + Q_OBJECT + Q_DISABLE_COPY_MOVE(TorrentContentRemover) -IconProvider *IconProvider::instance() -{ - return m_instance; -} + public: + using QObject::QObject; -Path IconProvider::getIconPath(const QString &iconId) const -{ - // there are a few icons not available in svg - const Path pathSvg {u":/icons/" + iconId + u".svg"}; - if (pathSvg.exists()) - return pathSvg; + public slots: + void performJob(const QString &torrentName, const Path &basePath + , const PathList &fileNames, TorrentContentRemoveOption option); - const Path pathPng {u":/icons/" + iconId + u".png"}; - return pathPng; + signals: + void jobFinished(const QString &torrentName, const QString &errorMessage); + }; } - -IconProvider *IconProvider::m_instance = nullptr; diff --git a/src/base/bittorrent/torrentcreationmanager.cpp b/src/base/bittorrent/torrentcreationmanager.cpp new file mode 100644 index 000000000000..9ff0b531dd1f --- /dev/null +++ b/src/base/bittorrent/torrentcreationmanager.cpp @@ -0,0 +1,137 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "torrentcreationmanager.h" + +#include + +#include +#include +#include +#include +#include + +#include + +#define SETTINGS_KEY(name) u"TorrentCreator/Manager/" name + +namespace BitTorrent +{ + using namespace boost::multi_index; + + class TorrentCreationManager::TaskSet final : public boost::multi_index_container< + std::shared_ptr, + indexed_by< + ordered_unique, const_mem_fun>, + ordered_non_unique, composite_key< + TorrentCreationTask, + const_mem_fun, + const_mem_fun>>>> + { + }; +} + +BitTorrent::TorrentCreationManager::TorrentCreationManager(IApplication *app, QObject *parent) + : ApplicationComponent(app, parent) + , m_maxTasks {SETTINGS_KEY(u"MaxTasks"_s), 256} + , m_numThreads {SETTINGS_KEY(u"NumThreads"_s), 1} + , m_tasks {std::make_unique()} + , m_threadPool(this) +{ + m_threadPool.setObjectName("TorrentCreationManager m_threadPool"); + + if (m_numThreads > 0) + m_threadPool.setMaxThreadCount(m_numThreads); +} + +BitTorrent::TorrentCreationManager::~TorrentCreationManager() = default; + +std::shared_ptr BitTorrent::TorrentCreationManager::createTask(const TorrentCreatorParams ¶ms, bool startSeeding) +{ + if (std::cmp_greater_equal(m_tasks->size(), m_maxTasks.get())) + { + // Try to delete old finished tasks to stay under target + auto &tasksByCompletion = m_tasks->get(); + auto [iter, endIter] = tasksByCompletion.equal_range(std::make_tuple(true)); + while ((iter != endIter) && std::cmp_greater_equal(m_tasks->size(), m_maxTasks.get())) + { + iter = tasksByCompletion.erase(iter); + } + } + if (std::cmp_greater_equal(m_tasks->size(), m_maxTasks.get())) + return {}; + + const QString taskID = generateTaskID(); + + auto *torrentCreator = new TorrentCreator(params, this); + auto creationTask = std::make_shared(app(), taskID, torrentCreator, startSeeding); + connect(creationTask.get(), &QObject::destroyed, torrentCreator, &BitTorrent::TorrentCreator::requestInterruption); + + m_tasks->get().insert(creationTask); + m_threadPool.start(torrentCreator); + + return creationTask; +} + +QString BitTorrent::TorrentCreationManager::generateTaskID() const +{ + const auto &tasksByID = m_tasks->get(); + QString taskID = QUuid::createUuid().toString(QUuid::WithoutBraces); + while (tasksByID.find(taskID) != tasksByID.end()) + taskID = QUuid::createUuid().toString(QUuid::WithoutBraces); + + return taskID; +} + +std::shared_ptr BitTorrent::TorrentCreationManager::getTask(const QString &id) const +{ + const auto &tasksByID = m_tasks->get(); + const auto iter = tasksByID.find(id); + if (iter == tasksByID.end()) + return nullptr; + + return *iter; +} + +QList> BitTorrent::TorrentCreationManager::tasks() const +{ + const auto &tasksByCompletion = m_tasks->get(); + return {tasksByCompletion.cbegin(), tasksByCompletion.cend()}; +} + +bool BitTorrent::TorrentCreationManager::deleteTask(const QString &id) +{ + auto &tasksByID = m_tasks->get(); + const auto iter = tasksByID.find(id); + if (iter == tasksByID.end()) + return false; + + tasksByID.erase(iter); + return true; +} diff --git a/src/base/bittorrent/torrentcreationmanager.h b/src/base/bittorrent/torrentcreationmanager.h new file mode 100644 index 000000000000..9c9b26ea66d8 --- /dev/null +++ b/src/base/bittorrent/torrentcreationmanager.h @@ -0,0 +1,70 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +#include +#include +#include + +#include "base/applicationcomponent.h" +#include "base/settingvalue.h" +#include "torrentcreationtask.h" +#include "torrentcreator.h" + +namespace BitTorrent +{ + class TorrentCreationManager final : public ApplicationComponent + { + Q_OBJECT + Q_DISABLE_COPY_MOVE(TorrentCreationManager) + + public: + explicit TorrentCreationManager(IApplication *app, QObject *parent = nullptr); + ~TorrentCreationManager() override; + + std::shared_ptr createTask(const TorrentCreatorParams ¶ms, bool startSeeding = true); + std::shared_ptr getTask(const QString &id) const; + QList> tasks() const; + bool deleteTask(const QString &id); + + private: + QString generateTaskID() const; + + CachedSettingValue m_maxTasks; + CachedSettingValue m_numThreads; + + class TaskSet; + std::unique_ptr m_tasks; + + QThreadPool m_threadPool; + }; +} diff --git a/src/base/bittorrent/torrentcreationtask.cpp b/src/base/bittorrent/torrentcreationtask.cpp new file mode 100644 index 000000000000..b1cb25f0c3b2 --- /dev/null +++ b/src/base/bittorrent/torrentcreationtask.cpp @@ -0,0 +1,149 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "torrentcreationtask.h" + +#include "base/addtorrentmanager.h" +#include "base/interfaces/iapplication.h" +#include "base/bittorrent/addtorrentparams.h" + +BitTorrent::TorrentCreationTask::TorrentCreationTask(IApplication *app, const QString &id + , TorrentCreator *torrentCreator, bool startSeeding, QObject *parent) + : ApplicationComponent(app, parent) + , m_id {id} + , m_params {torrentCreator->params()} + , m_timeAdded {QDateTime::currentDateTime()} +{ + Q_ASSERT(torrentCreator); + + connect(torrentCreator, &BitTorrent::TorrentCreator::started, this, [this] + { + m_timeStarted = QDateTime::currentDateTime(); + }); + + connect(torrentCreator, &BitTorrent::TorrentCreator::progressUpdated, this + , [this](const int progress) + { + m_progress = progress; + }); + + connect(torrentCreator, &BitTorrent::TorrentCreator::creationSuccess, this + , [this, app, startSeeding](const TorrentCreatorResult &result) + { + m_timeFinished = QDateTime::currentDateTime(); + m_result = result; + + if (!startSeeding) + return; + + BitTorrent::AddTorrentParams params; + params.savePath = result.savePath; + params.skipChecking = true; + params.useAutoTMM = false; // otherwise if it is on by default, it will overwrite `savePath` to the default save path + + if (!app->addTorrentManager()->addTorrent(result.torrentFilePath.data(), params)) + m_errorMsg = tr("Failed to start seeding."); + }); + + connect(torrentCreator, &BitTorrent::TorrentCreator::creationFailure, this + , [this](const QString &errorMsg) + { + m_timeFinished = QDateTime::currentDateTime(); + m_errorMsg = errorMsg; + }); +} + +QString BitTorrent::TorrentCreationTask::id() const +{ + return m_id; +} + +const BitTorrent::TorrentCreatorParams &BitTorrent::TorrentCreationTask::params() const +{ + return m_params; +} + +BitTorrent::TorrentCreationTask::State BitTorrent::TorrentCreationTask::state() const +{ + if (m_timeStarted.isNull()) + return Queued; + if (m_timeFinished.isNull()) + return Running; + return Finished; +} + +bool BitTorrent::TorrentCreationTask::isQueued() const +{ + return (state() == Queued); +} + +bool BitTorrent::TorrentCreationTask::isRunning() const +{ + return (state() == Running); +} + +bool BitTorrent::TorrentCreationTask::isFinished() const +{ + return (state() == Finished); +} + +bool BitTorrent::TorrentCreationTask::isFailed() const +{ + return !m_errorMsg.isEmpty(); +} + +int BitTorrent::TorrentCreationTask::progress() const +{ + return m_progress; +} + +const BitTorrent::TorrentCreatorResult &BitTorrent::TorrentCreationTask::result() const +{ + return m_result; +} + +QString BitTorrent::TorrentCreationTask::errorMsg() const +{ + return m_errorMsg; +} + +QDateTime BitTorrent::TorrentCreationTask::timeAdded() const +{ + return m_timeAdded; +} + +QDateTime BitTorrent::TorrentCreationTask::timeStarted() const +{ + return m_timeStarted; +} + +QDateTime BitTorrent::TorrentCreationTask::timeFinished() const +{ + return m_timeFinished; +} diff --git a/src/base/bittorrent/torrentcreationtask.h b/src/base/bittorrent/torrentcreationtask.h new file mode 100644 index 000000000000..2f24e8dd4235 --- /dev/null +++ b/src/base/bittorrent/torrentcreationtask.h @@ -0,0 +1,81 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include +#include +#include + +#include "base/applicationcomponent.h" +#include "torrentcreator.h" + +namespace BitTorrent +{ + class TorrentCreationTask final : public ApplicationComponent + { + Q_OBJECT + Q_DISABLE_COPY_MOVE(TorrentCreationTask) + + public: + enum State + { + Queued, + Running, + Finished + }; + + TorrentCreationTask(IApplication *app, const QString &id, TorrentCreator *torrentCreator + , bool startSeeding, QObject *parent = nullptr); + + QString id() const; + const TorrentCreatorParams ¶ms() const; + State state() const; + bool isQueued() const; + bool isRunning() const; + bool isFinished() const; + bool isFailed() const; + QDateTime timeAdded() const; + QDateTime timeStarted() const; + QDateTime timeFinished() const; + int progress() const; + const TorrentCreatorResult &result() const; + QString errorMsg() const; + + private: + QString m_id; + TorrentCreatorParams m_params; + QDateTime m_timeAdded; + QDateTime m_timeStarted; + QDateTime m_timeFinished; + int m_progress = 0; + TorrentCreatorResult m_result; + QString m_errorMsg; + }; +} diff --git a/src/base/bittorrent/torrentcreator.cpp b/src/base/bittorrent/torrentcreator.cpp index bdc0128697f2..727e9a9dc382 100644 --- a/src/base/bittorrent/torrentcreator.cpp +++ b/src/base/bittorrent/torrentcreator.cpp @@ -1,5 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa * Copyright (C) 2010 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -28,12 +30,13 @@ #include "torrentcreator.h" -#include +#include #include #include #include +#include #include #include #include @@ -41,7 +44,6 @@ #include "base/exceptions.h" #include "base/global.h" #include "base/utils/compare.h" -#include "base/utils/fs.h" #include "base/utils/io.h" #include "base/version.h" #include "lttypecast.h" @@ -82,7 +84,7 @@ TorrentCreator::TorrentCreator(const TorrentCreatorParams ¶ms, QObject *pare void TorrentCreator::sendProgressSignal(int currentPieceIdx, int totalPieces) { - emit updateProgress(static_cast((currentPieceIdx * 100.) / totalPieces)); + emit progressUpdated(static_cast((currentPieceIdx * 100.) / totalPieces)); } void TorrentCreator::checkInterruptionRequested() const @@ -103,29 +105,37 @@ bool TorrentCreator::isInterruptionRequested() const void TorrentCreator::run() { - emit updateProgress(0); + emit started(); + emit progressUpdated(0); try { - const Path parentPath = m_params.inputPath.parentPath(); + const Path parentPath = m_params.sourcePath.parentPath(); const Utils::Compare::NaturalLessThan naturalLessThan {}; // Adding files to the torrent lt::file_storage fs; - if (QFileInfo(m_params.inputPath.data()).isFile()) + if (QFileInfo(m_params.sourcePath.data()).isFile()) { - lt::add_files(fs, m_params.inputPath.toString().toStdString(), fileFilter); + lt::add_files(fs, m_params.sourcePath.toString().toStdString(), fileFilter); } else { // need to sort the file names by natural sort order - QStringList dirs = {m_params.inputPath.data()}; + QStringList dirs = {m_params.sourcePath.data()}; - QDirIterator dirIter {m_params.inputPath.data(), (QDir::AllDirs | QDir::NoDotAndDotDot), QDirIterator::Subdirectories}; +#ifdef Q_OS_WIN + // libtorrent couldn't handle .lnk files on Windows + // Also, Windows users do not expect torrent creator to traverse into .lnk files so skip over them + const QDir::Filters dirFilters {QDir::AllDirs | QDir::NoDotAndDotDot | QDir::NoSymLinks}; +#else + const QDir::Filters dirFilters {QDir::AllDirs | QDir::NoDotAndDotDot}; +#endif + QDirIterator dirIter {m_params.sourcePath.data(), dirFilters, QDirIterator::Subdirectories}; while (dirIter.hasNext()) { - dirIter.next(); - dirs.append(dirIter.filePath()); + const QString filePath = dirIter.next(); + dirs.append(filePath); } std::sort(dirs.begin(), dirs.end(), naturalLessThan); @@ -136,14 +146,19 @@ void TorrentCreator::run() { QStringList tmpNames; // natural sort files within each dir - QDirIterator fileIter {dir, QDir::Files}; +#ifdef Q_OS_WIN + const QDir::Filters fileFilters {QDir::Files | QDir::NoSymLinks}; +#else + const QDir::Filters fileFilters {QDir::Files}; +#endif + QDirIterator fileIter {dir, fileFilters}; while (fileIter.hasNext()) { - fileIter.next(); + const QFileInfo fileInfo = fileIter.nextFileInfo(); - const auto relFilePath = parentPath.relativePathOf(Path(fileIter.filePath())); + const Path relFilePath = parentPath.relativePathOf(Path(fileInfo.filePath())); tmpNames.append(relFilePath.toString()); - fileSizeMap[tmpNames.last()] = fileIter.fileInfo().size(); + fileSizeMap[tmpNames.last()] = fileInfo.size(); } std::sort(tmpNames.begin(), tmpNames.end(), naturalLessThan); @@ -205,13 +220,29 @@ void TorrentCreator::run() checkInterruptionRequested(); - // create the torrent - const nonstd::expected result = Utils::IO::saveToFile(m_params.savePath, entry); + const auto result = std::invoke([torrentFilePath = m_params.torrentFilePath, entry]() -> nonstd::expected + { + if (!torrentFilePath.isValid()) + return Utils::IO::saveToTempFile(entry); + + const nonstd::expected result = Utils::IO::saveToFile(torrentFilePath, entry); + if (!result) + return nonstd::make_unexpected(result.error()); + + return torrentFilePath; + }); if (!result) throw RuntimeError(result.error()); - emit updateProgress(100); - emit creationSuccess(m_params.savePath, parentPath); + const BitTorrent::TorrentCreatorResult creatorResult + { + .torrentFilePath = result.value(), + .savePath = parentPath, + .pieceSize = newTorrent.piece_length() + }; + + emit progressUpdated(100); + emit creationSuccess(creatorResult); } catch (const RuntimeError &err) { @@ -223,6 +254,11 @@ void TorrentCreator::run() } } +const TorrentCreatorParams &TorrentCreator::params() const +{ + return m_params; +} + #ifdef QBT_USES_LIBTORRENT2 int TorrentCreator::calculateTotalPieces(const Path &inputPath, const int pieceSize, const TorrentFormat torrentFormat) #else diff --git a/src/base/bittorrent/torrentcreator.h b/src/base/bittorrent/torrentcreator.h index 79588b07ffa4..e4377a57328c 100644 --- a/src/base/bittorrent/torrentcreator.h +++ b/src/base/bittorrent/torrentcreator.h @@ -1,5 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa * Copyright (C) 2010 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -53,18 +55,25 @@ namespace BitTorrent #ifdef QBT_USES_LIBTORRENT2 TorrentFormat torrentFormat = TorrentFormat::Hybrid; #else - bool isAlignmentOptimized; - int paddedFileSizeLimit; + bool isAlignmentOptimized = false; + int paddedFileSizeLimit = 0; #endif int pieceSize = 0; - Path inputPath; - Path savePath; + Path sourcePath; + Path torrentFilePath; QString comment; QString source; QStringList trackers; QStringList urlSeeds; }; + struct TorrentCreatorResult + { + Path torrentFilePath; + Path savePath; + int pieceSize; + }; + class TorrentCreator final : public QObject, public QRunnable { Q_OBJECT @@ -73,24 +82,26 @@ namespace BitTorrent public: explicit TorrentCreator(const TorrentCreatorParams ¶ms, QObject *parent = nullptr); - void run() override; - + const TorrentCreatorParams ¶ms() const; bool isInterruptionRequested() const; - public slots: - void requestInterruption(); + void run() override; #ifdef QBT_USES_LIBTORRENT2 static int calculateTotalPieces(const Path &inputPath, int pieceSize, TorrentFormat torrentFormat); #else - static int calculateTotalPieces(const Path &inputPath - , const int pieceSize, const bool isAlignmentOptimized, int paddedFileSizeLimit); + static int calculateTotalPieces(const Path &inputPath, const int pieceSize + , const bool isAlignmentOptimized, int paddedFileSizeLimit); #endif + public slots: + void requestInterruption(); + signals: + void started(); void creationFailure(const QString &msg); - void creationSuccess(const Path &path, const Path &branchPath); - void updateProgress(int progress); + void creationSuccess(const TorrentCreatorResult &result); + void progressUpdated(int progress); private: void sendProgressSignal(int currentPieceIdx, int totalPieces); diff --git a/src/base/bittorrent/torrentdescriptor.cpp b/src/base/bittorrent/torrentdescriptor.cpp index bc5a4619a90e..437c6557ca94 100644 --- a/src/base/bittorrent/torrentdescriptor.cpp +++ b/src/base/bittorrent/torrentdescriptor.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -35,9 +35,7 @@ #include #include -#include #include -#include #include #include "base/global.h" @@ -147,7 +145,13 @@ BitTorrent::TorrentDescriptor::TorrentDescriptor(lt::add_torrent_params ltAddTor : m_ltAddTorrentParams {std::move(ltAddTorrentParams)} { if (m_ltAddTorrentParams.ti && m_ltAddTorrentParams.ti->is_valid()) + { m_info.emplace(*m_ltAddTorrentParams.ti); + if (m_ltAddTorrentParams.ti->creation_date() > 0) + m_creationDate = QDateTime::fromSecsSinceEpoch(m_ltAddTorrentParams.ti->creation_date()); + m_creator = QString::fromStdString(m_ltAddTorrentParams.ti->creator()); + m_comment = QString::fromStdString(m_ltAddTorrentParams.ti->comment()); + } } BitTorrent::InfoHash BitTorrent::TorrentDescriptor::infoHash() const @@ -166,18 +170,17 @@ QString BitTorrent::TorrentDescriptor::name() const QDateTime BitTorrent::TorrentDescriptor::creationDate() const { - return ((m_ltAddTorrentParams.ti->creation_date() != 0) - ? QDateTime::fromSecsSinceEpoch(m_ltAddTorrentParams.ti->creation_date()) : QDateTime()); + return m_creationDate; } QString BitTorrent::TorrentDescriptor::creator() const { - return QString::fromStdString(m_ltAddTorrentParams.ti->creator()); + return m_creator; } QString BitTorrent::TorrentDescriptor::comment() const { - return QString::fromStdString(m_ltAddTorrentParams.ti->comment()); + return m_comment; } const std::optional &BitTorrent::TorrentDescriptor::info() const @@ -204,9 +207,9 @@ void BitTorrent::TorrentDescriptor::setTorrentInfo(TorrentInfo torrentInfo) } } -QVector BitTorrent::TorrentDescriptor::trackers() const +QList BitTorrent::TorrentDescriptor::trackers() const { - QVector ret; + QList ret; ret.reserve(static_cast(m_ltAddTorrentParams.trackers.size())); std::size_t i = 0; for (const std::string &tracker : m_ltAddTorrentParams.trackers) @@ -215,9 +218,9 @@ QVector BitTorrent::TorrentDescriptor::trackers() cons return ret; } -QVector BitTorrent::TorrentDescriptor::urlSeeds() const +QList BitTorrent::TorrentDescriptor::urlSeeds() const { - QVector urlSeeds; + QList urlSeeds; urlSeeds.reserve(static_cast(m_ltAddTorrentParams.url_seeds.size())); for (const std::string &nativeURLSeed : m_ltAddTorrentParams.url_seeds) diff --git a/src/base/bittorrent/torrentdescriptor.h b/src/base/bittorrent/torrentdescriptor.h index 86f9059c3508..f41140fedf79 100644 --- a/src/base/bittorrent/torrentdescriptor.h +++ b/src/base/bittorrent/torrentdescriptor.h @@ -33,16 +33,15 @@ #include #include +#include #include +#include #include "base/3rdparty/expected.hpp" #include "base/path.h" -#include "torrentdescriptor.h" #include "torrentinfo.h" class QByteArray; -class QDateTime; -class QString; class QUrl; namespace BitTorrent @@ -60,8 +59,8 @@ namespace BitTorrent QDateTime creationDate() const; QString creator() const; QString comment() const; - QVector trackers() const; - QVector urlSeeds() const; + QList trackers() const; + QList urlSeeds() const; const std::optional &info() const; void setTorrentInfo(TorrentInfo torrentInfo); @@ -78,6 +77,9 @@ namespace BitTorrent lt::add_torrent_params m_ltAddTorrentParams; std::optional m_info; + QDateTime m_creationDate; + QString m_creator; + QString m_comment; }; } diff --git a/src/base/bittorrent/torrentimpl.cpp b/src/base/bittorrent/torrentimpl.cpp index 10160e1a0aa6..af1afc49863f 100644 --- a/src/base/bittorrent/torrentimpl.cpp +++ b/src/base/bittorrent/torrentimpl.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -49,6 +49,7 @@ #include #include +#include #include #include #include @@ -62,6 +63,7 @@ #include "base/types.h" #include "base/utils/fs.h" #include "base/utils/io.h" +#include "base/utils/string.h" #include "common.h" #include "downloadpriority.h" #include "extensiondata.h" @@ -71,11 +73,16 @@ #include "peeraddress.h" #include "peerinfo.h" #include "sessionimpl.h" +#include "trackerentry.h" #if defined(Q_OS_MACOS) || defined(Q_OS_WIN) #include "base/utils/os.h" #endif // Q_OS_MACOS || Q_OS_WIN +#ifndef QBT_USES_LIBTORRENT2 +#include "customstorage.h" +#endif + using namespace BitTorrent; namespace @@ -87,36 +94,24 @@ namespace return entry; } - QDateTime fromLTTimePoint32(const lt::time_point32 &timePoint) + QString toString(const lt::tcp::endpoint <TCPEndpoint) { - const auto ltNow = lt::clock_type::now(); - const auto qNow = QDateTime::currentDateTime(); - const auto secsSinceNow = lt::duration_cast(timePoint - ltNow + lt::milliseconds(500)).count(); + static QCache cache; - return qNow.addSecs(secsSinceNow); - } + if (const QString *endpointName = cache.object(ltTCPEndpoint)) + return *endpointName; - QString toString(const lt::tcp::endpoint <TCPEndpoint) - { - return QString::fromStdString((std::stringstream() << ltTCPEndpoint).str()); + const auto endpointName = Utils::String::fromLatin1((std::ostringstream() << ltTCPEndpoint).str()); + cache.insert(ltTCPEndpoint, new QString(endpointName)); + return endpointName; } - void updateTrackerEntry(TrackerEntry &trackerEntry, const lt::announce_entry &nativeEntry + void updateTrackerEntryStatus(TrackerEntryStatus &trackerEntryStatus, const lt::announce_entry &nativeEntry , const QSet &btProtocols, const QHash> &updateInfo) { - Q_ASSERT(trackerEntry.url == QString::fromStdString(nativeEntry.url)); - - trackerEntry.tier = nativeEntry.tier; + Q_ASSERT(trackerEntryStatus.url == QString::fromStdString(nativeEntry.url)); - // remove outdated endpoints - trackerEntry.endpointEntries.removeIf([&nativeEntry](const QHash, TrackerEndpointEntry>::iterator &iter) - { - return std::none_of(nativeEntry.endpoints.cbegin(), nativeEntry.endpoints.cend() - , [&endpointName = std::get<0>(iter.key())](const auto &existingEndpoint) - { - return (endpointName == toString(existingEndpoint.local_endpoint)); - }); - }); + trackerEntryStatus.tier = nativeEntry.tier; const auto numEndpoints = static_cast(nativeEntry.endpoints.size()) * btProtocols.size(); @@ -141,121 +136,134 @@ namespace const lt::announce_endpoint <AnnounceInfo = ltAnnounceEndpoint; #endif const QMap &endpointUpdateInfo = updateInfo[ltAnnounceEndpoint.local_endpoint]; - TrackerEndpointEntry &trackerEndpointEntry = trackerEntry.endpointEntries[std::make_pair(endpointName, protocolVersion)]; + TrackerEndpointStatus &trackerEndpointStatus = trackerEntryStatus.endpoints[std::make_pair(endpointName, protocolVersion)]; - trackerEndpointEntry.name = endpointName; - trackerEndpointEntry.btVersion = protocolVersion; - trackerEndpointEntry.numPeers = endpointUpdateInfo.value(protocolVersion, trackerEndpointEntry.numPeers); - trackerEndpointEntry.numSeeds = ltAnnounceInfo.scrape_complete; - trackerEndpointEntry.numLeeches = ltAnnounceInfo.scrape_incomplete; - trackerEndpointEntry.numDownloaded = ltAnnounceInfo.scrape_downloaded; - trackerEndpointEntry.nextAnnounceTime = fromLTTimePoint32(ltAnnounceInfo.next_announce); - trackerEndpointEntry.minAnnounceTime = fromLTTimePoint32(ltAnnounceInfo.min_announce); + trackerEndpointStatus.name = endpointName; + trackerEndpointStatus.btVersion = protocolVersion; + trackerEndpointStatus.numPeers = endpointUpdateInfo.value(protocolVersion, trackerEndpointStatus.numPeers); + trackerEndpointStatus.numSeeds = ltAnnounceInfo.scrape_complete; + trackerEndpointStatus.numLeeches = ltAnnounceInfo.scrape_incomplete; + trackerEndpointStatus.numDownloaded = ltAnnounceInfo.scrape_downloaded; + trackerEndpointStatus.nextAnnounceTime = ltAnnounceInfo.next_announce; + trackerEndpointStatus.minAnnounceTime = ltAnnounceInfo.min_announce; if (ltAnnounceInfo.updating) { - trackerEndpointEntry.status = TrackerEntryStatus::Updating; + trackerEndpointStatus.state = TrackerEndpointState::Updating; ++numUpdating; } else if (ltAnnounceInfo.fails > 0) { if (ltAnnounceInfo.last_error == lt::errors::tracker_failure) { - trackerEndpointEntry.status = TrackerEntryStatus::TrackerError; + trackerEndpointStatus.state = TrackerEndpointState::TrackerError; ++numTrackerError; } else if (ltAnnounceInfo.last_error == lt::errors::announce_skipped) { - trackerEndpointEntry.status = TrackerEntryStatus::Unreachable; + trackerEndpointStatus.state = TrackerEndpointState::Unreachable; ++numUnreachable; } else { - trackerEndpointEntry.status = TrackerEntryStatus::NotWorking; + trackerEndpointStatus.state = TrackerEndpointState::NotWorking; ++numNotWorking; } } else if (nativeEntry.verified) { - trackerEndpointEntry.status = TrackerEntryStatus::Working; + trackerEndpointStatus.state = TrackerEndpointState::Working; ++numWorking; } else { - trackerEndpointEntry.status = TrackerEntryStatus::NotContacted; + trackerEndpointStatus.state = TrackerEndpointState::NotContacted; } if (!ltAnnounceInfo.message.empty()) { - trackerEndpointEntry.message = QString::fromStdString(ltAnnounceInfo.message); + trackerEndpointStatus.message = QString::fromStdString(ltAnnounceInfo.message); } else if (ltAnnounceInfo.last_error) { - trackerEndpointEntry.message = QString::fromLocal8Bit(ltAnnounceInfo.last_error.message()); + trackerEndpointStatus.message = QString::fromLocal8Bit(ltAnnounceInfo.last_error.message()); } else { - trackerEndpointEntry.message.clear(); + trackerEndpointStatus.message.clear(); } } } + if (trackerEntryStatus.endpoints.size() > numEndpoints) + { + // remove outdated endpoints + trackerEntryStatus.endpoints.removeIf([&nativeEntry](const QHash, TrackerEndpointStatus>::iterator &iter) + { + return std::none_of(nativeEntry.endpoints.cbegin(), nativeEntry.endpoints.cend() + , [&endpointName = std::get<0>(iter.key())](const auto &existingEndpoint) + { + return (endpointName == toString(existingEndpoint.local_endpoint)); + }); + }); + } + if (numEndpoints > 0) { if (numUpdating > 0) { - trackerEntry.status = TrackerEntryStatus::Updating; + trackerEntryStatus.state = TrackerEndpointState::Updating; } else if (numWorking > 0) { - trackerEntry.status = TrackerEntryStatus::Working; + trackerEntryStatus.state = TrackerEndpointState::Working; } else if (numTrackerError > 0) { - trackerEntry.status = TrackerEntryStatus::TrackerError; + trackerEntryStatus.state = TrackerEndpointState::TrackerError; } else if (numUnreachable == numEndpoints) { - trackerEntry.status = TrackerEntryStatus::Unreachable; + trackerEntryStatus.state = TrackerEndpointState::Unreachable; } else if ((numUnreachable + numNotWorking) == numEndpoints) { - trackerEntry.status = TrackerEntryStatus::NotWorking; + trackerEntryStatus.state = TrackerEndpointState::NotWorking; } } - trackerEntry.numPeers = -1; - trackerEntry.numSeeds = -1; - trackerEntry.numLeeches = -1; - trackerEntry.numDownloaded = -1; - trackerEntry.nextAnnounceTime = QDateTime(); - trackerEntry.minAnnounceTime = QDateTime(); - trackerEntry.message.clear(); + trackerEntryStatus.numPeers = -1; + trackerEntryStatus.numSeeds = -1; + trackerEntryStatus.numLeeches = -1; + trackerEntryStatus.numDownloaded = -1; + trackerEntryStatus.nextAnnounceTime = {}; + trackerEntryStatus.minAnnounceTime = {}; + trackerEntryStatus.message.clear(); - for (const TrackerEndpointEntry &endpointEntry : asConst(trackerEntry.endpointEntries)) + for (const TrackerEndpointStatus &endpointStatus : asConst(trackerEntryStatus.endpoints)) { - trackerEntry.numPeers = std::max(trackerEntry.numPeers, endpointEntry.numPeers); - trackerEntry.numSeeds = std::max(trackerEntry.numSeeds, endpointEntry.numSeeds); - trackerEntry.numLeeches = std::max(trackerEntry.numLeeches, endpointEntry.numLeeches); - trackerEntry.numDownloaded = std::max(trackerEntry.numDownloaded, endpointEntry.numDownloaded); + trackerEntryStatus.numPeers = std::max(trackerEntryStatus.numPeers, endpointStatus.numPeers); + trackerEntryStatus.numSeeds = std::max(trackerEntryStatus.numSeeds, endpointStatus.numSeeds); + trackerEntryStatus.numLeeches = std::max(trackerEntryStatus.numLeeches, endpointStatus.numLeeches); + trackerEntryStatus.numDownloaded = std::max(trackerEntryStatus.numDownloaded, endpointStatus.numDownloaded); - if (endpointEntry.status == trackerEntry.status) + if (endpointStatus.state == trackerEntryStatus.state) { - if (!trackerEntry.nextAnnounceTime.isValid() || (trackerEntry.nextAnnounceTime > endpointEntry.nextAnnounceTime)) + if ((trackerEntryStatus.nextAnnounceTime == AnnounceTimePoint()) || (trackerEntryStatus.nextAnnounceTime > endpointStatus.nextAnnounceTime)) { - trackerEntry.nextAnnounceTime = endpointEntry.nextAnnounceTime; - trackerEntry.minAnnounceTime = endpointEntry.minAnnounceTime; - if ((endpointEntry.status != TrackerEntryStatus::Working) - || !endpointEntry.message.isEmpty()) + trackerEntryStatus.nextAnnounceTime = endpointStatus.nextAnnounceTime; + trackerEntryStatus.minAnnounceTime = endpointStatus.minAnnounceTime; + if ((endpointStatus.state != TrackerEndpointState::Working) + || !endpointStatus.message.isEmpty()) { - trackerEntry.message = endpointEntry.message; + trackerEntryStatus.message = endpointStatus.message; } } - if (endpointEntry.status == TrackerEntryStatus::Working) + if (endpointStatus.state == TrackerEndpointState::Working) { - if (trackerEntry.message.isEmpty()) - trackerEntry.message = endpointEntry.message; + if (trackerEntryStatus.message.isEmpty()) + trackerEntryStatus.message = endpointStatus.message; } } } @@ -298,18 +306,25 @@ TorrentImpl::TorrentImpl(SessionImpl *session, lt::session *nativeSession , m_ratioLimit(params.ratioLimit) , m_seedingTimeLimit(params.seedingTimeLimit) , m_inactiveSeedingTimeLimit(params.inactiveSeedingTimeLimit) + , m_shareLimitAction(params.shareLimitAction) , m_operatingMode(params.operatingMode) , m_contentLayout(params.contentLayout) , m_hasFinishedStatus(params.hasFinishedStatus) , m_hasFirstLastPiecePriority(params.firstLastPiecePriority) , m_useAutoTMM(params.useAutoTMM) , m_isStopped(params.stopped) + , m_sslParams(params.sslParameters) , m_ltAddTorrentParams(params.ltAddTorrentParams) , m_downloadLimit(cleanLimitValue(m_ltAddTorrentParams.download_limit)) , m_uploadLimit(cleanLimitValue(m_ltAddTorrentParams.upload_limit)) { if (m_ltAddTorrentParams.ti) { + if (const std::time_t creationDate = m_ltAddTorrentParams.ti->creation_date(); creationDate > 0) + m_creationDate = QDateTime::fromSecsSinceEpoch(creationDate); + m_creator = QString::fromStdString(m_ltAddTorrentParams.ti->creator()); + m_comment = QString::fromStdString(m_ltAddTorrentParams.ti->comment()); + // Initialize it only if torrent is added with metadata. // Otherwise it should be initialized in "Metadata received" handler. m_torrentInfo = TorrentInfo(*m_ltAddTorrentParams.ti); @@ -345,14 +360,20 @@ TorrentImpl::TorrentImpl(SessionImpl *session, lt::session *nativeSession setStopCondition(params.stopCondition); const auto *extensionData = static_cast(m_ltAddTorrentParams.userdata); - m_trackerEntries.reserve(static_cast(extensionData->trackers.size())); + m_trackerEntryStatuses.reserve(static_cast(extensionData->trackers.size())); for (const lt::announce_entry &announceEntry : extensionData->trackers) - m_trackerEntries.append({QString::fromStdString(announceEntry.url), announceEntry.tier}); + m_trackerEntryStatuses.append({QString::fromStdString(announceEntry.url), announceEntry.tier}); m_urlSeeds.reserve(static_cast(extensionData->urlSeeds.size())); for (const std::string &urlSeed : extensionData->urlSeeds) m_urlSeeds.append(QString::fromStdString(urlSeed)); m_nativeStatus = extensionData->status; + m_addedTime = QDateTime::fromSecsSinceEpoch(m_nativeStatus.added_time); + if (m_nativeStatus.completed_time > 0) + m_completedTime = QDateTime::fromSecsSinceEpoch(m_nativeStatus.completed_time); + if (m_nativeStatus.last_seen_complete > 0) + m_lastSeenComplete = QDateTime::fromSecsSinceEpoch(m_nativeStatus.last_seen_complete); + if (hasMetadata()) updateProgress(); @@ -396,17 +417,17 @@ QString TorrentImpl::name() const QDateTime TorrentImpl::creationDate() const { - return m_torrentInfo.creationDate(); + return m_creationDate; } QString TorrentImpl::creator() const { - return m_torrentInfo.creator(); + return m_creator; } QString TorrentImpl::comment() const { - return m_torrentInfo.comment(); + return m_comment; } bool TorrentImpl::isPrivate() const @@ -442,7 +463,13 @@ qlonglong TorrentImpl::wastedSize() const QString TorrentImpl::currentTracker() const { - return QString::fromStdString(m_nativeStatus.current_tracker); + if (!m_nativeStatus.current_tracker.empty()) + return QString::fromStdString(m_nativeStatus.current_tracker); + + if (!m_trackerEntryStatuses.isEmpty()) + return m_trackerEntryStatuses.constFirst().url; + + return {}; } Path TorrentImpl::savePath() const @@ -453,6 +480,8 @@ Path TorrentImpl::savePath() const void TorrentImpl::setSavePath(const Path &path) { Q_ASSERT(!isAutoTMMEnabled()); + if (isAutoTMMEnabled()) [[unlikely]] + return; const Path basePath = m_session->useCategoryPathsInManualMode() ? m_session->categorySavePath(category()) : m_session->savePath(); @@ -468,7 +497,7 @@ void TorrentImpl::setSavePath(const Path &path) { m_savePath = resolvedPath; m_session->handleTorrentSavePathChanged(this); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } } @@ -480,6 +509,8 @@ Path TorrentImpl::downloadPath() const void TorrentImpl::setDownloadPath(const Path &path) { Q_ASSERT(!isAutoTMMEnabled()); + if (isAutoTMMEnabled()) [[unlikely]] + return; const Path basePath = m_session->useCategoryPathsInManualMode() ? m_session->categoryDownloadPath(category()) : m_session->downloadPath(); @@ -496,7 +527,7 @@ void TorrentImpl::setDownloadPath(const Path &path) { m_downloadPath = resolvedPath; m_session->handleTorrentSavePathChanged(this); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } } @@ -541,7 +572,7 @@ void TorrentImpl::setAutoTMMEnabled(bool enabled) m_downloadPath = m_session->categoryDownloadPath(category()); } - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentSavingModeChanged(this); adjustStorageLocation(); @@ -573,7 +604,8 @@ Path TorrentImpl::makeActualPath(int index, const Path &path) const actualPath += QB_EXT; } - if (m_filePriorities[index] == DownloadPriority::Ignored) + if (m_session->isUnwantedFolderEnabled() + && (m_filePriorities[index] == DownloadPriority::Ignored)) { const Path parentPath = actualPath.parentPath(); const QString fileName = actualPath.filename(); @@ -598,29 +630,34 @@ Path TorrentImpl::makeUserPath(const Path &path) const return userPath; } -QVector TorrentImpl::trackers() const +QList TorrentImpl::trackers() const { - return m_trackerEntries; + return m_trackerEntryStatuses; } -void TorrentImpl::addTrackers(QVector trackers) +void TorrentImpl::addTrackers(QList trackers) { - trackers.removeIf([](const TrackerEntry &entry) { return entry.url.isEmpty(); }); + trackers.removeIf([](const TrackerEntry &trackerEntry) { return trackerEntry.url.isEmpty(); }); + + QSet currentTrackerSet; + currentTrackerSet.reserve(m_trackerEntryStatuses.size()); + for (const TrackerEntryStatus &status : asConst(m_trackerEntryStatuses)) + currentTrackerSet.insert({.url = status.url, .tier = status.tier}); - const auto newTrackers = QSet(trackers.cbegin(), trackers.cend()) - - QSet(m_trackerEntries.cbegin(), m_trackerEntries.cend()); - if (newTrackers.isEmpty()) + const auto newTrackerSet = QSet(trackers.cbegin(), trackers.cend()) - currentTrackerSet; + if (newTrackerSet.isEmpty()) return; - trackers = QVector(newTrackers.cbegin(), newTrackers.cend()); - for (const TrackerEntry &tracker : trackers) + trackers = QList(newTrackerSet.cbegin(), newTrackerSet.cend()); + for (const TrackerEntry &tracker : asConst(trackers)) + { m_nativeHandle.add_tracker(makeNativeAnnounceEntry(tracker.url, tracker.tier)); + m_trackerEntryStatuses.append({tracker.url, tracker.tier}); + } + std::sort(m_trackerEntryStatuses.begin(), m_trackerEntryStatuses.end() + , [](const TrackerEntryStatus &left, const TrackerEntryStatus &right) { return left.tier < right.tier; }); - m_trackerEntries.append(trackers); - std::sort(m_trackerEntries.begin(), m_trackerEntries.end() - , [](const TrackerEntry &lhs, const TrackerEntry &rhs) { return lhs.tier < rhs.tier; }); - - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentTrackersAdded(this, trackers); } @@ -629,56 +666,61 @@ void TorrentImpl::removeTrackers(const QStringList &trackers) QStringList removedTrackers = trackers; for (const QString &tracker : trackers) { - if (!m_trackerEntries.removeOne({tracker})) + if (!m_trackerEntryStatuses.removeOne({tracker})) removedTrackers.removeOne(tracker); } std::vector nativeTrackers; - nativeTrackers.reserve(m_trackerEntries.size()); - for (const TrackerEntry &tracker : asConst(m_trackerEntries)) + nativeTrackers.reserve(m_trackerEntryStatuses.size()); + for (const TrackerEntryStatus &tracker : asConst(m_trackerEntryStatuses)) nativeTrackers.emplace_back(makeNativeAnnounceEntry(tracker.url, tracker.tier)); if (!removedTrackers.isEmpty()) { m_nativeHandle.replace_trackers(nativeTrackers); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentTrackersRemoved(this, removedTrackers); } } -void TorrentImpl::replaceTrackers(QVector trackers) +void TorrentImpl::replaceTrackers(QList trackers) { - trackers.removeIf([](const TrackerEntry &entry) { return entry.url.isEmpty(); }); + trackers.removeIf([](const TrackerEntry &trackerEntry) { return trackerEntry.url.isEmpty(); }); + // Filter out duplicate trackers const auto uniqueTrackers = QSet(trackers.cbegin(), trackers.cend()); - trackers = QVector(uniqueTrackers.cbegin(), uniqueTrackers.cend()); + trackers = QList(uniqueTrackers.cbegin(), uniqueTrackers.cend()); std::sort(trackers.begin(), trackers.end() - , [](const TrackerEntry &lhs, const TrackerEntry &rhs) { return lhs.tier < rhs.tier; }); + , [](const TrackerEntry &left, const TrackerEntry &right) { return left.tier < right.tier; }); std::vector nativeTrackers; nativeTrackers.reserve(trackers.size()); + m_trackerEntryStatuses.clear(); + for (const TrackerEntry &tracker : trackers) + { nativeTrackers.emplace_back(makeNativeAnnounceEntry(tracker.url, tracker.tier)); + m_trackerEntryStatuses.append({tracker.url, tracker.tier}); + } m_nativeHandle.replace_trackers(nativeTrackers); - m_trackerEntries = trackers; // Clear the peer list if it's a private torrent since // we do not want to keep connecting with peers from old tracker. if (isPrivate()) clearPeers(); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentTrackersChanged(this); } -QVector TorrentImpl::urlSeeds() const +QList TorrentImpl::urlSeeds() const { return m_urlSeeds; } -void TorrentImpl::addUrlSeeds(const QVector &urlSeeds) +void TorrentImpl::addUrlSeeds(const QList &urlSeeds) { m_session->invokeAsync([urlSeeds, session = m_session , nativeHandle = m_nativeHandle @@ -687,12 +729,12 @@ void TorrentImpl::addUrlSeeds(const QVector &urlSeeds) try { const std::set nativeSeeds = nativeHandle.url_seeds(); - QVector currentSeeds; + QList currentSeeds; currentSeeds.reserve(static_cast(nativeSeeds.size())); for (const std::string &urlSeed : nativeSeeds) currentSeeds.append(QString::fromStdString(urlSeed)); - QVector addedUrlSeeds; + QList addedUrlSeeds; addedUrlSeeds.reserve(urlSeeds.size()); for (const QUrl &url : urlSeeds) @@ -713,7 +755,7 @@ void TorrentImpl::addUrlSeeds(const QVector &urlSeeds) thisTorrent->m_urlSeeds = currentSeeds; if (!addedUrlSeeds.isEmpty()) { - session->handleTorrentNeedSaveResumeData(thisTorrent); + thisTorrent->deferredRequestResumeData(); session->handleTorrentUrlSeedsAdded(thisTorrent, addedUrlSeeds); } }); @@ -722,7 +764,7 @@ void TorrentImpl::addUrlSeeds(const QVector &urlSeeds) }); } -void TorrentImpl::removeUrlSeeds(const QVector &urlSeeds) +void TorrentImpl::removeUrlSeeds(const QList &urlSeeds) { m_session->invokeAsync([urlSeeds, session = m_session , nativeHandle = m_nativeHandle @@ -731,12 +773,12 @@ void TorrentImpl::removeUrlSeeds(const QVector &urlSeeds) try { const std::set nativeSeeds = nativeHandle.url_seeds(); - QVector currentSeeds; + QList currentSeeds; currentSeeds.reserve(static_cast(nativeSeeds.size())); for (const std::string &urlSeed : nativeSeeds) currentSeeds.append(QString::fromStdString(urlSeed)); - QVector removedUrlSeeds; + QList removedUrlSeeds; removedUrlSeeds.reserve(urlSeeds.size()); for (const QUrl &url : urlSeeds) @@ -757,7 +799,7 @@ void TorrentImpl::removeUrlSeeds(const QVector &urlSeeds) if (!removedUrlSeeds.isEmpty()) { - session->handleTorrentNeedSaveResumeData(thisTorrent); + thisTorrent->deferredRequestResumeData(); session->handleTorrentUrlSeedsRemoved(thisTorrent, removedUrlSeeds); } }); @@ -798,10 +840,26 @@ bool TorrentImpl::needSaveResumeData() const return m_nativeStatus.need_save_resume; } -void TorrentImpl::saveResumeData(lt::resume_data_flags_t flags) +void TorrentImpl::requestResumeData(const lt::resume_data_flags_t flags) { m_nativeHandle.save_resume_data(flags); - m_session->handleTorrentSaveResumeDataRequested(this); + m_deferredRequestResumeDataInvoked = false; + + m_session->handleTorrentResumeDataRequested(this); +} + +void TorrentImpl::deferredRequestResumeData() +{ + if (!m_deferredRequestResumeDataInvoked) + { + QMetaObject::invokeMethod(this, [this] + { + requestResumeData((m_maintenanceJob == MaintenanceJob::HandleMetadata) + ? lt::torrent_handle::save_info_dict : lt::resume_data_flags_t()); + }, Qt::QueuedConnection); + + m_deferredRequestResumeDataInvoked = true; + } } int TorrentImpl::filesCount() const @@ -862,14 +920,14 @@ TagSet TorrentImpl::tags() const return m_tags; } -bool TorrentImpl::hasTag(const QString &tag) const +bool TorrentImpl::hasTag(const Tag &tag) const { return m_tags.contains(tag); } -bool TorrentImpl::addTag(const QString &tag) +bool TorrentImpl::addTag(const Tag &tag) { - if (!m_session->isValidTag(tag)) + if (!tag.isValid()) return false; if (hasTag(tag)) return false; @@ -880,16 +938,16 @@ bool TorrentImpl::addTag(const QString &tag) return false; } m_tags.insert(tag); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentTagAdded(this, tag); return true; } -bool TorrentImpl::removeTag(const QString &tag) +bool TorrentImpl::removeTag(const Tag &tag) { if (m_tags.remove(tag)) { - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentTagRemoved(this, tag); return true; } @@ -898,13 +956,58 @@ bool TorrentImpl::removeTag(const QString &tag) void TorrentImpl::removeAllTags() { - for (const QString &tag : asConst(tags())) + for (const Tag &tag : asConst(tags())) removeTag(tag); } QDateTime TorrentImpl::addedTime() const { - return QDateTime::fromSecsSinceEpoch(m_nativeStatus.added_time); + return m_addedTime; +} + +QDateTime TorrentImpl::completedTime() const +{ + return m_completedTime; +} + +QDateTime TorrentImpl::lastSeenComplete() const +{ + return m_lastSeenComplete; +} + +qlonglong TorrentImpl::activeTime() const +{ + return lt::total_seconds(m_nativeStatus.active_duration); +} + +qlonglong TorrentImpl::finishedTime() const +{ + return lt::total_seconds(m_nativeStatus.finished_duration); +} + +qlonglong TorrentImpl::timeSinceUpload() const +{ + if (m_nativeStatus.last_upload.time_since_epoch().count() == 0) + return -1; + + return lt::total_seconds(lt::clock_type::now() - m_nativeStatus.last_upload); +} + +qlonglong TorrentImpl::timeSinceDownload() const +{ + if (m_nativeStatus.last_download.time_since_epoch().count() == 0) + return -1; + + return lt::total_seconds(lt::clock_type::now() - m_nativeStatus.last_download); +} + +qlonglong TorrentImpl::timeSinceActivity() const +{ + const qlonglong upTime = timeSinceUpload(); + const qlonglong downTime = timeSinceDownload(); + return ((upTime < 0) != (downTime < 0)) + ? std::max(upTime, downTime) + : std::min(upTime, downTime); } qreal TorrentImpl::ratioLimit() const @@ -932,7 +1035,7 @@ Path TorrentImpl::filePath(const int index) const Path TorrentImpl::actualFilePath(const int index) const { - const QVector nativeIndexes = m_torrentInfo.nativeIndexes(); + const QList nativeIndexes = m_torrentInfo.nativeIndexes(); Q_ASSERT(index >= 0); Q_ASSERT(index < nativeIndexes.size()); @@ -952,7 +1055,22 @@ PathList TorrentImpl::filePaths() const return m_filePaths; } -QVector TorrentImpl::filePriorities() const +PathList TorrentImpl::actualFilePaths() const +{ + if (!hasMetadata()) + return {}; + + PathList paths; + paths.reserve(filesCount()); + + const lt::file_storage files = nativeTorrentInfo()->files(); + for (const lt::file_index_t &nativeIndex : asConst(m_torrentInfo.nativeIndexes())) + paths.emplaceBack(files.file_path(nativeIndex)); + + return paths; +} + +QList TorrentImpl::filePriorities() const { return m_filePriorities; } @@ -962,15 +1080,18 @@ TorrentInfo TorrentImpl::info() const return m_torrentInfo; } -bool TorrentImpl::isPaused() const +bool TorrentImpl::isStopped() const { return m_isStopped; } bool TorrentImpl::isQueued() const { - // Torrent is Queued if it isn't in Paused state but paused internally - return (!isPaused() + if (!m_session->isQueueingSystemEnabled()) + return false; + + // Torrent is Queued if it isn't in Stopped state but paused internally + return (!isStopped() && (m_nativeStatus.flags & lt::torrent_flags::auto_managed) && (m_nativeStatus.flags & lt::torrent_flags::paused)); } @@ -990,7 +1111,7 @@ bool TorrentImpl::isDownloading() const case TorrentState::ForcedDownloadingMetadata: case TorrentState::StalledDownloading: case TorrentState::CheckingDownloading: - case TorrentState::PausedDownloading: + case TorrentState::StoppedDownloading: case TorrentState::QueuedDownloading: case TorrentState::ForcedDownloading: return true; @@ -1030,7 +1151,7 @@ bool TorrentImpl::isCompleted() const case TorrentState::Uploading: case TorrentState::StalledUploading: case TorrentState::CheckingUploading: - case TorrentState::PausedUploading: + case TorrentState::StoppedUploading: case TorrentState::QueuedUploading: case TorrentState::ForcedUploading: return true; @@ -1083,7 +1204,7 @@ bool TorrentImpl::isFinished() const bool TorrentImpl::isForced() const { - return (!isPaused() && (m_operatingMode == TorrentOperatingMode::Forced)); + return (!isStopped() && (m_operatingMode == TorrentOperatingMode::Forced)); } bool TorrentImpl::isSequentialDownload() const @@ -1121,23 +1242,23 @@ void TorrentImpl::updateState() } else if (!hasMetadata()) { - if (isPaused()) - m_state = TorrentState::PausedDownloading; - else if (m_session->isQueueingSystemEnabled() && isQueued()) + if (isStopped()) + m_state = TorrentState::StoppedDownloading; + else if (isQueued()) m_state = TorrentState::QueuedDownloading; else m_state = isForced() ? TorrentState::ForcedDownloadingMetadata : TorrentState::DownloadingMetadata; } - else if ((m_nativeStatus.state == lt::torrent_status::checking_files) && !isPaused()) + else if ((m_nativeStatus.state == lt::torrent_status::checking_files) && !isStopped()) { // If the torrent is not just in the "checking" state, but is being actually checked m_state = m_hasFinishedStatus ? TorrentState::CheckingUploading : TorrentState::CheckingDownloading; } else if (isFinished()) { - if (isPaused()) - m_state = TorrentState::PausedUploading; - else if (m_session->isQueueingSystemEnabled() && isQueued()) + if (isStopped()) + m_state = TorrentState::StoppedUploading; + else if (isQueued()) m_state = TorrentState::QueuedUploading; else if (isForced()) m_state = TorrentState::ForcedUploading; @@ -1148,9 +1269,9 @@ void TorrentImpl::updateState() } else { - if (isPaused()) - m_state = TorrentState::PausedDownloading; - else if (m_session->isQueueingSystemEnabled() && isQueued()) + if (isStopped()) + m_state = TorrentState::StoppedDownloading; + else if (isQueued()) m_state = TorrentState::QueuedDownloading; else if (isForced()) m_state = TorrentState::ForcedDownloading; @@ -1184,12 +1305,12 @@ int TorrentImpl::queuePosition() const QString TorrentImpl::error() const { if (m_nativeStatus.errc) - return QString::fromLocal8Bit(m_nativeStatus.errc.message().c_str()); + return Utils::String::fromLocal8Bit(m_nativeStatus.errc.message()); if (m_nativeStatus.flags & lt::torrent_flags::upload_mode) { return tr("Couldn't write to file. Reason: \"%1\". Torrent is now in \"upload only\" mode.") - .arg(QString::fromLocal8Bit(m_lastFileError.error.message().c_str())); + .arg(Utils::String::fromLocal8Bit(m_lastFileError.error.message())); } return {}; @@ -1205,19 +1326,9 @@ qlonglong TorrentImpl::totalUpload() const return m_nativeStatus.all_time_upload; } -qlonglong TorrentImpl::activeTime() const -{ - return lt::total_seconds(m_nativeStatus.active_duration); -} - -qlonglong TorrentImpl::finishedTime() const -{ - return lt::total_seconds(m_nativeStatus.finished_duration); -} - qlonglong TorrentImpl::eta() const { - if (isPaused()) return MAX_ETA; + if (isStopped()) return MAX_ETA; const SpeedSampleAvg speedAverage = m_payloadRateMonitor.average(); @@ -1265,7 +1376,7 @@ qlonglong TorrentImpl::eta() const return (wantedSize() - completedSize()) / speedAverage.download; } -QVector TorrentImpl::filesProgress() const +QList TorrentImpl::filesProgress() const { if (!hasMetadata()) return {}; @@ -1276,9 +1387,9 @@ QVector TorrentImpl::filesProgress() const return {}; if (m_completedFiles.count(true) == count) - return QVector(count, 1); + return QList(count, 1); - QVector result; + QList result; result.reserve(count); for (int i = 0; i < count; ++i) { @@ -1324,45 +1435,6 @@ int TorrentImpl::totalLeechersCount() const return (m_nativeStatus.num_incomplete > -1) ? m_nativeStatus.num_incomplete : (m_nativeStatus.list_peers - m_nativeStatus.list_seeds); } -QDateTime TorrentImpl::lastSeenComplete() const -{ - if (m_nativeStatus.last_seen_complete > 0) - return QDateTime::fromSecsSinceEpoch(m_nativeStatus.last_seen_complete); - else - return {}; -} - -QDateTime TorrentImpl::completedTime() const -{ - if (m_nativeStatus.completed_time > 0) - return QDateTime::fromSecsSinceEpoch(m_nativeStatus.completed_time); - else - return {}; -} - -qlonglong TorrentImpl::timeSinceUpload() const -{ - if (m_nativeStatus.last_upload.time_since_epoch().count() == 0) - return -1; - return lt::total_seconds(lt::clock_type::now() - m_nativeStatus.last_upload); -} - -qlonglong TorrentImpl::timeSinceDownload() const -{ - if (m_nativeStatus.last_download.time_since_epoch().count() == 0) - return -1; - return lt::total_seconds(lt::clock_type::now() - m_nativeStatus.last_download); -} - -qlonglong TorrentImpl::timeSinceActivity() const -{ - const qlonglong upTime = timeSinceUpload(); - const qlonglong downTime = timeSinceDownload(); - return ((upTime < 0) != (downTime < 0)) - ? std::max(upTime, downTime) - : std::min(upTime, downTime); -} - int TorrentImpl::downloadLimit() const { return m_downloadLimit;; @@ -1393,12 +1465,12 @@ bool TorrentImpl::isLSDDisabled() const return static_cast(m_nativeStatus.flags & lt::torrent_flags::disable_lsd); } -QVector TorrentImpl::peers() const +QList TorrentImpl::peers() const { std::vector nativePeers; m_nativeHandle.get_peer_info(nativePeers); - QVector peers; + QList peers; peers.reserve(static_cast(nativePeers.size())); for (const lt::peer_info &peer : nativePeers) @@ -1414,18 +1486,20 @@ QBitArray TorrentImpl::pieces() const QBitArray TorrentImpl::downloadingPieces() const { - QBitArray result(piecesCount()); + if (!hasMetadata()) + return {}; std::vector queue; m_nativeHandle.get_download_queue(queue); + QBitArray result {piecesCount()}; for (const lt::partial_piece_info &info : queue) result.setBit(LT::toUnderlyingType(info.piece_index)); return result; } -QVector TorrentImpl::pieceAvailability() const +QList TorrentImpl::pieceAvailability() const { std::vector avail; m_nativeHandle.piece_availability(avail); @@ -1480,14 +1554,14 @@ qreal TorrentImpl::realRatio() const int TorrentImpl::uploadPayloadRate() const { - // workaround: suppress the speed for paused state - return isPaused() ? 0 : m_nativeStatus.upload_payload_rate; + // workaround: suppress the speed for Stopped state + return isStopped() ? 0 : m_nativeStatus.upload_payload_rate; } int TorrentImpl::downloadPayloadRate() const { - // workaround: suppress the speed for paused state - return isPaused() ? 0 : m_nativeStatus.download_payload_rate; + // workaround: suppress the speed for Stopped state + return isStopped() ? 0 : m_nativeStatus.download_payload_rate; } qlonglong TorrentImpl::totalPayloadUpload() const @@ -1515,12 +1589,21 @@ qlonglong TorrentImpl::nextAnnounce() const return lt::total_seconds(m_nativeStatus.next_announce); } +qreal TorrentImpl::popularity() const +{ + // in order to produce floating-point numbers using `std::chrono::duration_cast`, + // we should use `qreal` as `Rep` to define the `months` duration + using months = std::chrono::duration; + const auto activeMonths = std::chrono::duration_cast(m_nativeStatus.active_duration).count(); + return (activeMonths > 0) ? (realRatio() / activeMonths) : 0; +} + void TorrentImpl::setName(const QString &name) { if (m_name != name) { m_name = name; - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentNameChanged(this); } } @@ -1534,7 +1617,7 @@ bool TorrentImpl::setCategory(const QString &category) const QString oldCategory = m_category; m_category = category; - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentCategoryChanged(this, oldCategory); if (m_useAutoTMM) @@ -1565,23 +1648,35 @@ void TorrentImpl::forceRecheck() 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_nativeStatus.pieces.clear_all(); + m_nativeStatus.num_pieces = 0; + m_ltAddTorrentParams.have_pieces.clear(); + m_ltAddTorrentParams.verified_pieces.clear(); + m_ltAddTorrentParams.unfinished_pieces.clear(); m_completedFiles.fill(false); m_filesProgress.fill(0); m_pieces.fill(false); - m_nativeStatus.pieces.clear_all(); - m_nativeStatus.num_pieces = 0; + m_unchecked = false; + + if (m_hasMissingFiles) + { + m_hasMissingFiles = false; + if (!isStopped()) + { + setAutoManaged(m_operatingMode == TorrentOperatingMode::AutoManaged); + if (m_operatingMode == TorrentOperatingMode::Forced) + m_nativeHandle.resume(); + } + } - if (isPaused()) + if (isStopped()) { - // When "force recheck" is applied on paused torrent, we temporarily resume it - resume(); + // When "force recheck" is applied on Stopped torrent, we start them to perform checking + start(); m_stopCondition = StopCondition::FilesChecked; } } @@ -1599,7 +1694,7 @@ void TorrentImpl::setSequentialDownload(const bool enable) m_nativeStatus.flags &= ~lt::torrent_flags::sequential_download; // prevent return cached value } - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::setFirstLastPiecePriority(const bool enabled) @@ -1614,7 +1709,7 @@ void TorrentImpl::setFirstLastPiecePriority(const bool enabled) LogMsg(tr("Download first and last piece first: %1, torrent: '%2'") .arg((enabled ? tr("On") : tr("Off")), name())); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::applyFirstLastPiecePriority(const bool enabled) @@ -1660,16 +1755,16 @@ void TorrentImpl::fileSearchFinished(const Path &savePath, const PathList &fileN endReceivedMetadataHandling(savePath, fileNames); } -TrackerEntry TorrentImpl::updateTrackerEntry(const lt::announce_entry &announceEntry, const QHash> &updateInfo) +TrackerEntryStatus TorrentImpl::updateTrackerEntryStatus(const lt::announce_entry &announceEntry, const QHash> &updateInfo) { - const auto it = std::find_if(m_trackerEntries.begin(), m_trackerEntries.end() - , [&announceEntry](const TrackerEntry &trackerEntry) + const auto it = std::find_if(m_trackerEntryStatuses.begin(), m_trackerEntryStatuses.end() + , [&announceEntry](const TrackerEntryStatus &trackerEntryStatus) { - return (trackerEntry.url == QString::fromStdString(announceEntry.url)); + return (trackerEntryStatus.url == QString::fromStdString(announceEntry.url)); }); - Q_ASSERT(it != m_trackerEntries.end()); - if (it == m_trackerEntries.end()) [[unlikely]] + Q_ASSERT(it != m_trackerEntryStatuses.end()); + if (it == m_trackerEntryStatuses.end()) [[unlikely]] return {}; #ifdef QBT_USES_LIBTORRENT2 @@ -1682,20 +1777,29 @@ TrackerEntry TorrentImpl::updateTrackerEntry(const lt::announce_entry &announceE #else const QSet btProtocols {1}; #endif - ::updateTrackerEntry(*it, announceEntry, btProtocols, updateInfo); + + ::updateTrackerEntryStatus(*it, announceEntry, btProtocols, updateInfo); + return *it; } -void TorrentImpl::resetTrackerEntries() +void TorrentImpl::resetTrackerEntryStatuses() { - for (auto &trackerEntry : m_trackerEntries) - trackerEntry = {trackerEntry.url, trackerEntry.tier}; + for (TrackerEntryStatus &status : m_trackerEntryStatuses) + { + const QString tempUrl = status.url; + const int tempTier = status.tier; + + status.clear(); + status.url = tempUrl; + status.tier = tempTier; + } } std::shared_ptr TorrentImpl::nativeTorrentInfo() const { - if (m_nativeStatus.torrent_file.expired()) - m_nativeStatus.torrent_file = m_nativeHandle.torrent_file(); + Q_ASSERT(!m_nativeStatus.torrent_file.expired()); + return m_nativeStatus.torrent_file.lock(); } @@ -1732,12 +1836,13 @@ void TorrentImpl::endReceivedMetadataHandling(const Path &savePath, const PathLi const Path filePath = actualFilePath.removedExtension(QB_EXT); m_filePaths.append(filePath); - lt::download_priority_t &nativePriority = p.file_priorities[LT::toUnderlyingType(nativeIndex)]; - if ((nativePriority != lt::dont_download) && m_session->isFilenameExcluded(filePath.filename())) - nativePriority = lt::dont_download; - const auto priority = LT::fromNative(nativePriority); - m_filePriorities.append(priority); + m_filePriorities.append(LT::fromNative(p.file_priorities[LT::toUnderlyingType(nativeIndex)])); } + + m_session->applyFilenameFilter(m_filePaths, m_filePriorities); + for (int i = 0; i < m_filePriorities.size(); ++i) + p.file_priorities[LT::toUnderlyingType(nativeIndexes[i])] = LT::toNative(m_filePriorities[i]); + p.save_path = savePath.toString().toStdString(); p.ti = metadata; @@ -1749,7 +1854,7 @@ void TorrentImpl::endReceivedMetadataHandling(const Path &savePath, const PathLi p.flags |= lt::torrent_flags::paused; p.flags &= ~lt::torrent_flags::auto_managed; - m_session->handleTorrentPaused(this); + m_session->handleTorrentStopped(this); } reload(); @@ -1766,63 +1871,68 @@ void TorrentImpl::endReceivedMetadataHandling(const Path &savePath, const PathLi } void TorrentImpl::reload() -try { - m_completedFiles.fill(false); - m_filesProgress.fill(0); - m_pieces.fill(false); - m_nativeStatus.pieces.clear_all(); - m_nativeStatus.num_pieces = 0; + try + { + m_completedFiles.fill(false); + m_filesProgress.fill(0); + m_pieces.fill(false); + m_nativeStatus.pieces.clear_all(); + m_nativeStatus.num_pieces = 0; - const auto queuePos = m_nativeHandle.queue_position(); + const auto queuePos = m_nativeHandle.queue_position(); - m_nativeSession->remove_torrent(m_nativeHandle, lt::session::delete_partfile); + m_nativeSession->remove_torrent(m_nativeHandle, lt::session::delete_partfile); - lt::add_torrent_params p = m_ltAddTorrentParams; - p.flags |= lt::torrent_flags::update_subscribe - | lt::torrent_flags::override_trackers - | lt::torrent_flags::override_web_seeds; + lt::add_torrent_params p = m_ltAddTorrentParams; + p.flags |= lt::torrent_flags::update_subscribe + | lt::torrent_flags::override_trackers + | lt::torrent_flags::override_web_seeds; - if (m_isStopped) - { - p.flags |= lt::torrent_flags::paused; - p.flags &= ~lt::torrent_flags::auto_managed; - } - else if (m_operatingMode == TorrentOperatingMode::AutoManaged) - { - p.flags |= (lt::torrent_flags::auto_managed | lt::torrent_flags::paused); - } - else - { - p.flags &= ~(lt::torrent_flags::auto_managed | lt::torrent_flags::paused); - } + if (m_isStopped) + { + p.flags |= lt::torrent_flags::paused; + p.flags &= ~lt::torrent_flags::auto_managed; + } + else if (m_operatingMode == TorrentOperatingMode::AutoManaged) + { + p.flags |= (lt::torrent_flags::auto_managed | lt::torrent_flags::paused); + } + else + { + p.flags &= ~(lt::torrent_flags::auto_managed | lt::torrent_flags::paused); + } - auto *const extensionData = new ExtensionData; - p.userdata = LTClientData(extensionData); - m_nativeHandle = m_nativeSession->add_torrent(p); + auto *const extensionData = new ExtensionData; + p.userdata = LTClientData(extensionData); +#ifndef QBT_USES_LIBTORRENT2 + p.storage = customStorageConstructor; +#endif + m_nativeHandle = m_nativeSession->add_torrent(p); - m_nativeStatus = extensionData->status; + m_nativeStatus = extensionData->status; - if (queuePos >= lt::queue_position_t {}) - m_nativeHandle.queue_position_set(queuePos); - m_nativeStatus.queue_position = queuePos; + if (queuePos >= lt::queue_position_t {}) + m_nativeHandle.queue_position_set(queuePos); + m_nativeStatus.queue_position = queuePos; - updateState(); -} -catch (const lt::system_error &err) -{ - throw RuntimeError(tr("Failed to reload torrent. Torrent: %1. Reason: %2") - .arg(id().toString(), QString::fromLocal8Bit(err.what()))); + updateState(); + } + catch (const lt::system_error &err) + { + throw RuntimeError(tr("Failed to reload torrent. Torrent: %1. Reason: %2") + .arg(id().toString(), QString::fromLocal8Bit(err.what()))); + } } -void TorrentImpl::pause() +void TorrentImpl::stop() { if (!m_isStopped) { m_stopCondition = StopCondition::None; m_isStopped = true; - m_session->handleTorrentNeedSaveResumeData(this); - m_session->handleTorrentPaused(this); + deferredRequestResumeData(); + m_session->handleTorrentStopped(this); } if (m_maintenanceJob == MaintenanceJob::None) @@ -1834,7 +1944,7 @@ void TorrentImpl::pause() } } -void TorrentImpl::resume(const TorrentOperatingMode mode) +void TorrentImpl::start(const TorrentOperatingMode mode) { if (hasError()) { @@ -1856,8 +1966,8 @@ void TorrentImpl::resume(const TorrentOperatingMode mode) if (m_isStopped) { m_isStopped = false; - m_session->handleTorrentNeedSaveResumeData(this); - m_session->handleTorrentResumed(this); + deferredRequestResumeData(); + m_session->handleTorrentStarted(this); } if (m_maintenanceJob == MaintenanceJob::None) @@ -1872,8 +1982,17 @@ void TorrentImpl::moveStorage(const Path &newPath, const MoveStorageContext cont { if (!hasMetadata()) { - m_savePath = newPath; - m_session->handleTorrentSavePathChanged(this); + if (context == MoveStorageContext::ChangeSavePath) + { + m_savePath = newPath; + m_session->handleTorrentSavePathChanged(this); + } + else if (context == MoveStorageContext::ChangeDownloadPath) + { + m_downloadPath = newPath; + m_session->handleTorrentSavePathChanged(this); + } + return; } @@ -1905,6 +2024,11 @@ void TorrentImpl::handleStateUpdate(const lt::torrent_status &nativeStatus) updateStatus(nativeStatus); } +void TorrentImpl::handleQueueingModeChanged() +{ + updateState(); +} + void TorrentImpl::handleMoveStorageJobFinished(const Path &path, const MoveStorageContext context, const bool hasOutstandingJob) { if (context == MoveStorageContext::ChangeSavePath) @@ -1915,7 +2039,7 @@ void TorrentImpl::handleMoveStorageJobFinished(const Path &path, const MoveStora m_nativeStatus.save_path = path.toString().toStdString(); m_session->handleTorrentSavePathChanged(this); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); if (!m_storageIsMoving) { @@ -1946,7 +2070,7 @@ void TorrentImpl::handleTorrentCheckedAlert([[maybe_unused]] const lt::torrent_c } if (stopCondition() == StopCondition::FilesChecked) - pause(); + stop(); m_statusUpdatedTriggers.enqueue([this]() { @@ -1962,7 +2086,7 @@ void TorrentImpl::handleTorrentCheckedAlert([[maybe_unused]] const lt::torrent_c adjustStorageLocation(); manageActualFilePaths(); - if (!isPaused()) + if (!isStopped()) { // torrent is internally paused using NativeTorrentExtension after files checked // so we need to resume it if there is no corresponding "stop condition" set @@ -1973,7 +2097,7 @@ void TorrentImpl::handleTorrentCheckedAlert([[maybe_unused]] const lt::torrent_c } if (m_nativeStatus.need_save_resume) - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentChecked(this); }); @@ -1990,7 +2114,7 @@ void TorrentImpl::handleTorrentFinishedAlert([[maybe_unused]] const lt::torrent_ adjustStorageLocation(); manageActualFilePaths(); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); const bool recheckTorrentsOnCompletion = Preferences::instance()->recheckTorrentsOnCompletion(); if (recheckTorrentsOnCompletion && m_unchecked) @@ -2024,10 +2148,10 @@ void TorrentImpl::handleSaveResumeDataAlert(const lt::save_resume_data_alert *p) // URL seed list have been changed by libtorrent for some reason, so we need to update cached one. // Unfortunately, URL seed list containing in "resume data" is generated according to different rules // than the list we usually cache, so we have to request it from the appropriate source. - fetchURLSeeds([this](const QVector &urlSeeds) { m_urlSeeds = urlSeeds; }); + fetchURLSeeds([this](const QList &urlSeeds) { m_urlSeeds = urlSeeds; }); } - if (m_maintenanceJob == MaintenanceJob::HandleMetadata) + if ((m_maintenanceJob == MaintenanceJob::HandleMetadata) && p->params.ti) { Q_ASSERT(m_indexMap.isEmpty()); @@ -2038,8 +2162,11 @@ void TorrentImpl::handleSaveResumeDataAlert(const lt::save_resume_data_alert *p) m_ltAddTorrentParams.have_pieces.clear(); m_ltAddTorrentParams.verified_pieces.clear(); + m_ltAddTorrentParams.unfinished_pieces.clear(); + + m_nativeStatus.torrent_file = m_ltAddTorrentParams.ti; - TorrentInfo metadata = TorrentInfo(*nativeTorrentInfo()); + const auto metadata = TorrentInfo(*m_ltAddTorrentParams.ti); const auto &renamedFiles = m_ltAddTorrentParams.renamed_files; PathList filePaths = metadata.filePaths(); @@ -2047,8 +2174,7 @@ void TorrentImpl::handleSaveResumeDataAlert(const lt::save_resume_data_alert *p) { const Path originalRootFolder = Path::findRootFolder(filePaths); const auto originalContentLayout = (originalRootFolder.isEmpty() - ? TorrentContentLayout::NoSubfolder - : TorrentContentLayout::Subfolder); + ? TorrentContentLayout::NoSubfolder : TorrentContentLayout::Subfolder); if (m_contentLayout != originalContentLayout) { if (m_contentLayout == TorrentContentLayout::NoSubfolder) @@ -2079,23 +2205,37 @@ void TorrentImpl::handleSaveResumeDataAlert(const lt::save_resume_data_alert *p) void TorrentImpl::prepareResumeData(const lt::add_torrent_params ¶ms) { - if (m_hasMissingFiles) { - const auto havePieces = m_ltAddTorrentParams.have_pieces; - const auto unfinishedPieces = m_ltAddTorrentParams.unfinished_pieces; - const auto verifiedPieces = m_ltAddTorrentParams.verified_pieces; + decltype(params.have_pieces) havePieces; + decltype(params.unfinished_pieces) unfinishedPieces; + decltype(params.verified_pieces) verifiedPieces; + + // The resume data obtained from libtorrent contains an empty "progress" in the following cases: + // 1. when it was requested at a time when the initial resume data has not yet been checked, + // 2. when initial resume data was rejected + // We should preserve the initial "progress" in such cases. + const bool needPreserveProgress = m_hasMissingFiles + || (!m_ltAddTorrentParams.have_pieces.empty() && params.have_pieces.empty()); + const bool preserveSeedMode = !m_hasMissingFiles && !hasMetadata() + && (m_ltAddTorrentParams.flags & lt::torrent_flags::seed_mode); + + if (needPreserveProgress) + { + havePieces = std::move(m_ltAddTorrentParams.have_pieces); + unfinishedPieces = std::move(m_ltAddTorrentParams.unfinished_pieces); + verifiedPieces = std::move(m_ltAddTorrentParams.verified_pieces); + } - // Update recent resume data but preserve existing progress - m_ltAddTorrentParams = params; - m_ltAddTorrentParams.have_pieces = havePieces; - m_ltAddTorrentParams.unfinished_pieces = unfinishedPieces; - m_ltAddTorrentParams.verified_pieces = verifiedPieces; - } - else - { - const bool preserveSeedMode = (!hasMetadata() && (m_ltAddTorrentParams.flags & lt::torrent_flags::seed_mode)); // Update recent resume data m_ltAddTorrentParams = params; + + if (needPreserveProgress) + { + m_ltAddTorrentParams.have_pieces = std::move(havePieces); + m_ltAddTorrentParams.unfinished_pieces = std::move(unfinishedPieces); + m_ltAddTorrentParams.verified_pieces = std::move(verifiedPieces); + } + if (preserveSeedMode) m_ltAddTorrentParams.flags |= lt::torrent_flags::seed_mode; } @@ -2103,26 +2243,28 @@ void TorrentImpl::prepareResumeData(const lt::add_torrent_params ¶ms) // We shouldn't save upload_mode flag to allow torrent operate normally on next run m_ltAddTorrentParams.flags &= ~lt::torrent_flags::upload_mode; - LoadTorrentParams resumeData; - resumeData.name = m_name; - resumeData.category = m_category; - resumeData.tags = m_tags; - resumeData.contentLayout = m_contentLayout; - resumeData.ratioLimit = m_ratioLimit; - resumeData.seedingTimeLimit = m_seedingTimeLimit; - resumeData.inactiveSeedingTimeLimit = m_inactiveSeedingTimeLimit; - resumeData.firstLastPiecePriority = m_hasFirstLastPiecePriority; - resumeData.hasFinishedStatus = m_hasFinishedStatus; - resumeData.stopped = m_isStopped; - resumeData.stopCondition = m_stopCondition; - resumeData.operatingMode = m_operatingMode; - resumeData.ltAddTorrentParams = m_ltAddTorrentParams; - resumeData.useAutoTMM = m_useAutoTMM; - if (!resumeData.useAutoTMM) - { - resumeData.savePath = m_savePath; - resumeData.downloadPath = m_downloadPath; - } + const LoadTorrentParams resumeData + { + .ltAddTorrentParams = m_ltAddTorrentParams, + .name = m_name, + .category = m_category, + .tags = m_tags, + .savePath = (!m_useAutoTMM ? m_savePath : Path()), + .downloadPath = (!m_useAutoTMM ? m_downloadPath : Path()), + .contentLayout = m_contentLayout, + .operatingMode = m_operatingMode, + .useAutoTMM = m_useAutoTMM, + .firstLastPiecePriority = m_hasFirstLastPiecePriority, + .hasFinishedStatus = m_hasFinishedStatus, + .stopped = m_isStopped, + .stopCondition = m_stopCondition, + .addToQueueTop = false, + .ratioLimit = m_ratioLimit, + .seedingTimeLimit = m_seedingTimeLimit, + .inactiveSeedingTimeLimit = m_inactiveSeedingTimeLimit, + .shareLimitAction = m_shareLimitAction, + .sslParameters = m_sslParams + }; m_session->handleTorrentResumeDataReady(this, resumeData); } @@ -2132,10 +2274,8 @@ void TorrentImpl::handleSaveResumeDataFailedAlert(const lt::save_resume_data_fai if (p->error != lt::errors::resume_data_not_modified) { LogMsg(tr("Generate resume data failed. Torrent: \"%1\". Reason: \"%2\"") - .arg(name(), QString::fromLocal8Bit(p->error.message().c_str())), Log::CRITICAL); + .arg(name(), Utils::String::fromLocal8Bit(p->error.message())), Log::CRITICAL); } - - m_session->handleTorrentSaveResumeDataFailed(this); } void TorrentImpl::handleFastResumeRejectedAlert(const lt::fastresume_rejected_alert *p) @@ -2171,20 +2311,20 @@ void TorrentImpl::handleFileRenamedAlert(const lt::file_renamed_alert *p) const Path newActualParentPath = newActualFilePath.parentPath(); if (newActualParentPath.filename() == UNWANTED_FOLDER_NAME) { - Q_ASSERT(oldActualParentPath.filename() != UNWANTED_FOLDER_NAME); - + if (oldActualParentPath.filename() != UNWANTED_FOLDER_NAME) + { #ifdef Q_OS_WIN - const std::wstring winPath = (actualStorageLocation() / newActualParentPath).toString().toStdWString(); - const DWORD dwAttrs = ::GetFileAttributesW(winPath.c_str()); - ::SetFileAttributesW(winPath.c_str(), (dwAttrs | FILE_ATTRIBUTE_HIDDEN)); + const std::wstring winPath = (actualStorageLocation() / newActualParentPath).toString().toStdWString(); + const DWORD dwAttrs = ::GetFileAttributesW(winPath.c_str()); + ::SetFileAttributesW(winPath.c_str(), (dwAttrs | FILE_ATTRIBUTE_HIDDEN)); #endif + } } #ifdef QBT_USES_LIBTORRENT2 else if (oldActualParentPath.filename() == UNWANTED_FOLDER_NAME) { - Q_ASSERT(newActualParentPath.filename() != UNWANTED_FOLDER_NAME); - - Utils::Fs::rmdir(actualStorageLocation() / oldActualParentPath); + if (newActualParentPath.filename() != UNWANTED_FOLDER_NAME) + Utils::Fs::rmdir(actualStorageLocation() / oldActualParentPath); } #else else @@ -2213,7 +2353,7 @@ void TorrentImpl::handleFileRenamedAlert(const lt::file_renamed_alert *p) while (!isMoveInProgress() && (m_renameCount == 0) && !m_moveFinishedTriggers.isEmpty()) m_moveFinishedTriggers.takeFirst()(); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::handleFileRenameFailedAlert(const lt::file_rename_failed_alert *p) @@ -2222,13 +2362,13 @@ void TorrentImpl::handleFileRenameFailedAlert(const lt::file_rename_failed_alert Q_ASSERT(fileIndex >= 0); LogMsg(tr("File rename failed. Torrent: \"%1\", file: \"%2\", reason: \"%3\"") - .arg(name(), filePath(fileIndex).toString(), QString::fromLocal8Bit(p->error.message().c_str())), Log::WARNING); + .arg(name(), filePath(fileIndex).toString(), Utils::String::fromLocal8Bit(p->error.message())), Log::WARNING); --m_renameCount; while (!isMoveInProgress() && (m_renameCount == 0) && !m_moveFinishedTriggers.isEmpty()) m_moveFinishedTriggers.takeFirst()(); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::handleFileCompletedAlert(const lt::file_completed_alert *p) @@ -2245,7 +2385,8 @@ void TorrentImpl::handleFileCompletedAlert(const lt::file_completed_alert *p) #if defined(Q_OS_MACOS) || defined(Q_OS_WIN) // only apply Mark-of-the-Web to new download files - if (Preferences::instance()->isMarkOfTheWebEnabled() && isDownloading()) + if (Preferences::instance()->isMarkOfTheWebEnabled() + && (m_nativeStatus.state == lt::torrent_status::downloading)) { const Path fullpath = actualStorageLocation() / actualPath; Utils::OS::applyMarkOfTheWeb(fullpath); @@ -2271,7 +2412,7 @@ void TorrentImpl::handleFileErrorAlert(const lt::file_error_alert *p) #ifdef QBT_USES_LIBTORRENT2 void TorrentImpl::handleFilePrioAlert(const lt::file_prio_alert *) { - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } #endif @@ -2287,7 +2428,7 @@ void TorrentImpl::handleMetadataReceivedAlert([[maybe_unused]] const lt::metadat #endif m_maintenanceJob = MaintenanceJob::HandleMetadata; - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::handlePerformanceAlert(const lt::performance_alert *p) const @@ -2304,7 +2445,16 @@ void TorrentImpl::handleCategoryOptionsChanged() void TorrentImpl::handleAppendExtensionToggled() { - if (!hasMetadata()) return; + if (!hasMetadata()) + return; + + manageActualFilePaths(); +} + +void TorrentImpl::handleUnwantedFolderToggled() +{ + if (!hasMetadata()) + return; manageActualFilePaths(); } @@ -2391,7 +2541,7 @@ void TorrentImpl::adjustStorageLocation() void TorrentImpl::doRenameFile(const int index, const Path &path) { - const QVector nativeIndexes = m_torrentInfo.nativeIndexes(); + const QList nativeIndexes = m_torrentInfo.nativeIndexes(); Q_ASSERT(index >= 0); Q_ASSERT(index < nativeIndexes.size()); @@ -2437,7 +2587,7 @@ void TorrentImpl::setStopCondition(const StopCondition stopCondition) if (stopCondition == m_stopCondition) return; - if (isPaused()) + if (isStopped()) return; if ((stopCondition == StopCondition::MetadataReceived) && hasMetadata()) @@ -2449,6 +2599,32 @@ void TorrentImpl::setStopCondition(const StopCondition stopCondition) m_stopCondition = stopCondition; } +SSLParameters TorrentImpl::getSSLParameters() const +{ + return m_sslParams; +} + +void TorrentImpl::setSSLParameters(const SSLParameters &sslParams) +{ + if (sslParams == getSSLParameters()) + return; + + m_sslParams = sslParams; + applySSLParameters(); + + deferredRequestResumeData(); +} + +bool TorrentImpl::applySSLParameters() +{ + if (!m_sslParams.isValid()) + return false; + + m_nativeHandle.set_ssl_certificate_buffer(m_sslParams.certificate.toPem().toStdString() + , m_sslParams.privateKey.toPem().toStdString(), m_sslParams.dhParams.toStdString()); + return true; +} + bool TorrentImpl::isMoveInProgress() const { return m_storageIsMoving; @@ -2456,11 +2632,23 @@ bool TorrentImpl::isMoveInProgress() const void TorrentImpl::updateStatus(const lt::torrent_status &nativeStatus) { + // Since libtorrent alerts are handled asynchronously there can be obsolete + // "state update" event reached here after torrent was reloaded in libtorrent. + // Just discard such events. + if (nativeStatus.handle != m_nativeHandle) [[unlikely]] + return; + const lt::torrent_status oldStatus = std::exchange(m_nativeStatus, nativeStatus); if (m_nativeStatus.num_pieces != oldStatus.num_pieces) updateProgress(); + if (m_nativeStatus.completed_time != oldStatus.completed_time) + m_completedTime = (m_nativeStatus.completed_time > 0) ? QDateTime::fromSecsSinceEpoch(m_nativeStatus.completed_time) : QDateTime(); + + if (m_nativeStatus.last_seen_complete != oldStatus.last_seen_complete) + m_lastSeenComplete = QDateTime::fromSecsSinceEpoch(m_nativeStatus.last_seen_complete); + updateState(); m_payloadRateMonitor.addSample({nativeStatus.download_payload_rate @@ -2528,7 +2716,7 @@ void TorrentImpl::setRatioLimit(qreal limit) if (m_ratioLimit != limit) { m_ratioLimit = limit; - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentShareLimitChanged(this); } } @@ -2543,7 +2731,7 @@ void TorrentImpl::setSeedingTimeLimit(int limit) if (m_seedingTimeLimit != limit) { m_seedingTimeLimit = limit; - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); m_session->handleTorrentShareLimitChanged(this); } } @@ -2558,7 +2746,22 @@ void TorrentImpl::setInactiveSeedingTimeLimit(int limit) if (m_inactiveSeedingTimeLimit != limit) { m_inactiveSeedingTimeLimit = limit; - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); + m_session->handleTorrentShareLimitChanged(this); + } +} + +ShareLimitAction TorrentImpl::shareLimitAction() const +{ + return m_shareLimitAction; +} + +void TorrentImpl::setShareLimitAction(const ShareLimitAction action) +{ + if (m_shareLimitAction != action) + { + m_shareLimitAction = action; + deferredRequestResumeData(); m_session->handleTorrentShareLimitChanged(this); } } @@ -2571,7 +2774,7 @@ void TorrentImpl::setUploadLimit(const int limit) m_uploadLimit = cleanValue; m_nativeHandle.set_upload_limit(m_uploadLimit); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::setDownloadLimit(const int limit) @@ -2582,7 +2785,7 @@ void TorrentImpl::setDownloadLimit(const int limit) m_downloadLimit = cleanValue; m_nativeHandle.set_download_limit(m_downloadLimit); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::setSuperSeeding(const bool enable) @@ -2595,7 +2798,7 @@ void TorrentImpl::setSuperSeeding(const bool enable) else m_nativeHandle.unset_flags(lt::torrent_flags::super_seeding); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::setDHTDisabled(const bool disable) @@ -2608,7 +2811,7 @@ void TorrentImpl::setDHTDisabled(const bool disable) else m_nativeHandle.unset_flags(lt::torrent_flags::disable_dht); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::setPEXDisabled(const bool disable) @@ -2621,7 +2824,7 @@ void TorrentImpl::setPEXDisabled(const bool disable) else m_nativeHandle.unset_flags(lt::torrent_flags::disable_pex); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::setLSDDisabled(const bool disable) @@ -2634,7 +2837,7 @@ void TorrentImpl::setLSDDisabled(const bool disable) else m_nativeHandle.unset_flags(lt::torrent_flags::disable_lsd); - m_session->handleTorrentNeedSaveResumeData(this); + deferredRequestResumeData(); } void TorrentImpl::flushCache() const @@ -2648,33 +2851,26 @@ QString TorrentImpl::createMagnetURI() const const SHA1Hash infoHash1 = infoHash().v1(); if (infoHash1.isValid()) - { ret += u"xt=urn:btih:" + infoHash1.toString(); - } - const SHA256Hash infoHash2 = infoHash().v2(); - if (infoHash2.isValid()) + if (const SHA256Hash infoHash2 = infoHash().v2(); infoHash2.isValid()) { if (infoHash1.isValid()) ret += u'&'; ret += u"xt=urn:btmh:1220" + infoHash2.toString(); } - const QString displayName = name(); - if (displayName != id().toString()) - { + if (const QString displayName = name(); displayName != id().toString()) ret += u"&dn=" + QString::fromLatin1(QUrl::toPercentEncoding(displayName)); - } - for (const TrackerEntry &tracker : asConst(trackers())) - { + if (hasMetadata()) + ret += u"&xl=" + QString::number(totalSize()); + + for (const TrackerEntryStatus &tracker : asConst(trackers())) ret += u"&tr=" + QString::fromLatin1(QUrl::toPercentEncoding(tracker.url)); - } for (const QUrl &urlSeed : asConst(urlSeeds())) - { - ret += u"&ws=" + QString::fromLatin1(urlSeed.toEncoded()); - } + ret += u"&ws=" + urlSeed.toString(QUrl::FullyEncoded); return ret; } @@ -2694,8 +2890,8 @@ nonstd::expected TorrentImpl::exportTorrent() const #endif lt::create_torrent creator {*torrentInfo}; - for (const TrackerEntry &entry : asConst(trackers())) - creator.add_tracker(entry.url.toStdString(), entry.tier); + for (const TrackerEntryStatus &status : asConst(trackers())) + creator.add_tracker(status.url.toStdString(), status.tier); return creator.generate(); } @@ -2732,15 +2928,15 @@ nonstd::expected TorrentImpl::exportToFile(const Path &path) cons return {}; } -void TorrentImpl::fetchPeerInfo(std::function)> resultHandler) const +void TorrentImpl::fetchPeerInfo(std::function)> resultHandler) const { - invokeAsync([nativeHandle = m_nativeHandle, allPieces = pieces()]() -> QVector + invokeAsync([nativeHandle = m_nativeHandle, allPieces = pieces()]() -> QList { try { std::vector nativePeers; nativeHandle.get_peer_info(nativePeers); - QVector peers; + QList peers; peers.reserve(static_cast(nativePeers.size())); for (const lt::peer_info &peer : nativePeers) peers.append(PeerInfo(peer, allPieces)); @@ -2753,14 +2949,14 @@ void TorrentImpl::fetchPeerInfo(std::function)> resultHa , std::move(resultHandler)); } -void TorrentImpl::fetchURLSeeds(std::function)> resultHandler) const +void TorrentImpl::fetchURLSeeds(std::function)> resultHandler) const { - invokeAsync([nativeHandle = m_nativeHandle]() -> QVector + invokeAsync([nativeHandle = m_nativeHandle]() -> QList { try { const std::set currentSeeds = nativeHandle.url_seeds(); - QVector urlSeeds; + QList urlSeeds; urlSeeds.reserve(static_cast(currentSeeds.size())); for (const std::string &urlSeed : currentSeeds) urlSeeds.append(QString::fromStdString(urlSeed)); @@ -2773,15 +2969,15 @@ void TorrentImpl::fetchURLSeeds(std::function)> resultHandle , std::move(resultHandler)); } -void TorrentImpl::fetchPieceAvailability(std::function)> resultHandler) const +void TorrentImpl::fetchPieceAvailability(std::function)> resultHandler) const { - invokeAsync([nativeHandle = m_nativeHandle]() -> QVector + invokeAsync([nativeHandle = m_nativeHandle]() -> QList { try { std::vector piecesAvailability; nativeHandle.piece_availability(piecesAvailability); - return QVector(piecesAvailability.cbegin(), piecesAvailability.cend()); + return QList(piecesAvailability.cbegin(), piecesAvailability.cend()); } catch (const std::exception &) {} @@ -2815,9 +3011,9 @@ void TorrentImpl::fetchDownloadingPieces(std::function resultH , std::move(resultHandler)); } -void TorrentImpl::fetchAvailableFileFractions(std::function)> resultHandler) const +void TorrentImpl::fetchAvailableFileFractions(std::function)> resultHandler) const { - invokeAsync([nativeHandle = m_nativeHandle, torrentInfo = m_torrentInfo]() -> QVector + invokeAsync([nativeHandle = m_nativeHandle, torrentInfo = m_torrentInfo]() -> QList { if (!torrentInfo.isValid() || (torrentInfo.filesCount() <= 0)) return {}; @@ -2829,9 +3025,9 @@ void TorrentImpl::fetchAvailableFileFractions(std::function const int filesCount = torrentInfo.filesCount(); // libtorrent returns empty array for seeding only torrents if (piecesAvailability.empty()) - return QVector(filesCount, -1); + return QList(filesCount, -1); - QVector result; + QList result; result.reserve(filesCount); for (int i = 0; i < filesCount; ++i) { @@ -2855,7 +3051,7 @@ void TorrentImpl::fetchAvailableFileFractions(std::function , std::move(resultHandler)); } -void TorrentImpl::prioritizeFiles(const QVector &priorities) +void TorrentImpl::prioritizeFiles(const QList &priorities) { if (!hasMetadata()) return; @@ -2864,7 +3060,7 @@ void TorrentImpl::prioritizeFiles(const QVector &priorities) // Reset 'm_hasSeedStatus' if needed in order to react again to // 'torrent_finished_alert' and eg show tray notifications - const QVector oldPriorities = filePriorities(); + const QList oldPriorities = filePriorities(); for (int i = 0; i < oldPriorities.size(); ++i) { if ((oldPriorities[i] == DownloadPriority::Ignored) @@ -2892,18 +3088,18 @@ void TorrentImpl::prioritizeFiles(const QVector &priorities) manageActualFilePaths(); } -QVector TorrentImpl::availableFileFractions() const +QList TorrentImpl::availableFileFractions() const { Q_ASSERT(hasMetadata()); const int filesCount = this->filesCount(); if (filesCount <= 0) return {}; - const QVector piecesAvailability = pieceAvailability(); + const QList piecesAvailability = pieceAvailability(); // libtorrent returns empty array for seeding only torrents - if (piecesAvailability.empty()) return QVector(filesCount, -1); + if (piecesAvailability.empty()) return QList(filesCount, -1); - QVector res; + QList res; res.reserve(filesCount); for (int i = 0; i < filesCount; ++i) { diff --git a/src/base/bittorrent/torrentimpl.h b/src/base/bittorrent/torrentimpl.h index b119d62a50f9..5c54b2d000a3 100644 --- a/src/base/bittorrent/torrentimpl.h +++ b/src/base/bittorrent/torrentimpl.h @@ -41,20 +41,21 @@ #include #include #include +#include #include #include #include #include -#include #include "base/path.h" #include "base/tagset.h" #include "infohash.h" #include "speedmonitor.h" +#include "sslparameters.h" #include "torrent.h" #include "torrentcontentlayout.h" #include "torrentinfo.h" -#include "trackerentry.h" +#include "trackerentrystatus.h" namespace BitTorrent { @@ -128,29 +129,44 @@ namespace BitTorrent bool setCategory(const QString &category) override; TagSet tags() const override; - bool hasTag(const QString &tag) const override; - bool addTag(const QString &tag) override; - bool removeTag(const QString &tag) override; + bool hasTag(const Tag &tag) const override; + bool addTag(const Tag &tag) override; + bool removeTag(const Tag &tag) override; void removeAllTags() override; int filesCount() const override; int piecesCount() const override; int piecesHave() const override; qreal progress() const override; + QDateTime addedTime() const override; + QDateTime completedTime() const override; + QDateTime lastSeenComplete() const override; + qlonglong activeTime() const override; + qlonglong finishedTime() const override; + qlonglong timeSinceUpload() const override; + qlonglong timeSinceDownload() const override; + qlonglong timeSinceActivity() const override; + qreal ratioLimit() const override; + void setRatioLimit(qreal limit) override; int seedingTimeLimit() const override; + void setSeedingTimeLimit(int limit) override; int inactiveSeedingTimeLimit() const override; + void setInactiveSeedingTimeLimit(int limit) override; + ShareLimitAction shareLimitAction() const override; + void setShareLimitAction(ShareLimitAction action) override; Path filePath(int index) const override; Path actualFilePath(int index) const override; qlonglong fileSize(int index) const override; PathList filePaths() const override; - QVector filePriorities() const override; + PathList actualFilePaths() const override; + QList filePriorities() const override; TorrentInfo info() const override; bool isFinished() const override; - bool isPaused() const override; + bool isStopped() const override; bool isQueued() const override; bool isForced() const override; bool isChecking() const override; @@ -168,41 +184,35 @@ namespace BitTorrent bool hasMissingFiles() const override; bool hasError() const override; int queuePosition() const override; - QVector trackers() const override; - QVector urlSeeds() const override; + QList trackers() const override; + QList urlSeeds() const override; QString error() const override; qlonglong totalDownload() const override; qlonglong totalUpload() const override; - qlonglong activeTime() const override; - qlonglong finishedTime() const override; qlonglong eta() const override; - QVector filesProgress() const override; + QList filesProgress() const override; int seedsCount() const override; int peersCount() const override; int leechsCount() const override; int totalSeedsCount() const override; int totalPeersCount() const override; int totalLeechersCount() const override; - QDateTime lastSeenComplete() const override; - QDateTime completedTime() const override; - qlonglong timeSinceUpload() const override; - qlonglong timeSinceDownload() const override; - qlonglong timeSinceActivity() const override; int downloadLimit() const override; int uploadLimit() const override; bool superSeeding() const override; bool isDHTDisabled() const override; bool isPEXDisabled() const override; bool isLSDDisabled() const override; - QVector peers() const override; + QList peers() const override; QBitArray pieces() const override; QBitArray downloadingPieces() const override; - QVector pieceAvailability() const override; + QList pieceAvailability() const override; qreal distributedCopies() const override; qreal maxRatio() const override; int maxSeedingTime() const override; int maxInactiveSeedingTime() const override; qreal realRatio() const override; + qreal popularity() const override; int uploadPayloadRate() const override; int downloadPayloadRate() const override; qlonglong totalPayloadUpload() const override; @@ -210,21 +220,18 @@ namespace BitTorrent int connectionsCount() const override; int connectionsLimit() const override; qlonglong nextAnnounce() const override; - QVector availableFileFractions() const override; + QList availableFileFractions() const override; void setName(const QString &name) override; void setSequentialDownload(bool enable) override; void setFirstLastPiecePriority(bool enabled) override; - void pause() override; - void resume(TorrentOperatingMode mode = TorrentOperatingMode::AutoManaged) override; + void stop() override; + void start(TorrentOperatingMode mode = TorrentOperatingMode::AutoManaged) override; void forceReannounce(int index = -1) override; void forceDHTAnnounce() override; void forceRecheck() override; void renameFile(int index, const Path &path) override; - void prioritizeFiles(const QVector &priorities) override; - void setRatioLimit(qreal limit) override; - void setSeedingTimeLimit(int limit) override; - void setInactiveSeedingTimeLimit(int limit) override; + void prioritizeFiles(const QList &priorities) override; void setUploadLimit(int limit) override; void setDownloadLimit(int limit) override; void setSuperSeeding(bool enable) override; @@ -232,27 +239,30 @@ namespace BitTorrent void setPEXDisabled(bool disable) override; void setLSDDisabled(bool disable) override; void flushCache() const override; - void addTrackers(QVector trackers) override; + void addTrackers(QList trackers) override; void removeTrackers(const QStringList &trackers) override; - void replaceTrackers(QVector trackers) override; - void addUrlSeeds(const QVector &urlSeeds) override; - void removeUrlSeeds(const QVector &urlSeeds) override; + void replaceTrackers(QList trackers) override; + void addUrlSeeds(const QList &urlSeeds) override; + void removeUrlSeeds(const QList &urlSeeds) override; bool connectPeer(const PeerAddress &peerAddress) override; void clearPeers() override; void setMetadata(const TorrentInfo &torrentInfo) override; StopCondition stopCondition() const override; void setStopCondition(StopCondition stopCondition) override; + SSLParameters getSSLParameters() const override; + void setSSLParameters(const SSLParameters &sslParams) override; + bool applySSLParameters(); QString createMagnetURI() const override; nonstd::expected exportToBuffer() const override; nonstd::expected exportToFile(const Path &path) const override; - void fetchPeerInfo(std::function)> resultHandler) const override; - void fetchURLSeeds(std::function)> resultHandler) const override; - void fetchPieceAvailability(std::function)> resultHandler) const override; + void fetchPeerInfo(std::function)> resultHandler) const override; + void fetchURLSeeds(std::function)> resultHandler) const override; + void fetchPieceAvailability(std::function)> resultHandler) const override; void fetchDownloadingPieces(std::function resultHandler) const override; - void fetchAvailableFileFractions(std::function)> resultHandler) const override; + void fetchAvailableFileFractions(std::function)> resultHandler) const override; bool needSaveResumeData() const; @@ -261,13 +271,16 @@ namespace BitTorrent void handleAlert(const lt::alert *a); void handleStateUpdate(const lt::torrent_status &nativeStatus); + void handleQueueingModeChanged(); void handleCategoryOptionsChanged(); void handleAppendExtensionToggled(); - void saveResumeData(lt::resume_data_flags_t flags = {}); + void handleUnwantedFolderToggled(); + void requestResumeData(lt::resume_data_flags_t flags = {}); + void deferredRequestResumeData(); void handleMoveStorageJobFinished(const Path &path, MoveStorageContext context, bool hasOutstandingJob); void fileSearchFinished(const Path &savePath, const PathList &fileNames); - TrackerEntry updateTrackerEntry(const lt::announce_entry &announceEntry, const QHash> &updateInfo); - void resetTrackerEntries(); + TrackerEntryStatus updateTrackerEntryStatus(const lt::announce_entry &announceEntry, const QHash> &updateInfo); + void resetTrackerEntryStatuses(); private: using EventTrigger = std::function; @@ -324,12 +337,20 @@ namespace BitTorrent TorrentInfo m_torrentInfo; PathList m_filePaths; QHash m_indexMap; - QVector m_filePriorities; + QList m_filePriorities; QBitArray m_completedFiles; SpeedMonitor m_payloadRateMonitor; InfoHash m_infoHash; + QDateTime m_creationDate; + QString m_creator; + QString m_comment; + + QDateTime m_addedTime; + QDateTime m_completedTime; + QDateTime m_lastSeenComplete; + // m_moveFinishedTriggers is activated only when the following conditions are met: // all file rename jobs complete, all file move jobs complete QQueue m_moveFinishedTriggers; @@ -340,8 +361,8 @@ namespace BitTorrent MaintenanceJob m_maintenanceJob = MaintenanceJob::None; - QVector m_trackerEntries; - QVector m_urlSeeds; + QList m_trackerEntryStatuses; + QList m_urlSeeds; FileErrorInfo m_lastFileError; // Persistent data @@ -350,17 +371,19 @@ namespace BitTorrent Path m_downloadPath; QString m_category; TagSet m_tags; - qreal m_ratioLimit; - int m_seedingTimeLimit; - int m_inactiveSeedingTimeLimit; - TorrentOperatingMode m_operatingMode; - TorrentContentLayout m_contentLayout; - bool m_hasFinishedStatus; + qreal m_ratioLimit = 0; + int m_seedingTimeLimit = 0; + int m_inactiveSeedingTimeLimit = 0; + ShareLimitAction m_shareLimitAction = ShareLimitAction::Default; + TorrentOperatingMode m_operatingMode = TorrentOperatingMode::AutoManaged; + TorrentContentLayout m_contentLayout = TorrentContentLayout::Original; + bool m_hasFinishedStatus = false; bool m_hasMissingFiles = false; bool m_hasFirstLastPiecePriority = false; - bool m_useAutoTMM; - bool m_isStopped; + bool m_useAutoTMM = false; + bool m_isStopped = false; StopCondition m_stopCondition = StopCondition::None; + SSLParameters m_sslParams; bool m_unchecked = false; @@ -370,6 +393,8 @@ namespace BitTorrent int m_uploadLimit = 0; QBitArray m_pieces; - QVector m_filesProgress; + QList m_filesProgress; + + bool m_deferredRequestResumeDataInvoked = false; }; } diff --git a/src/base/bittorrent/torrentinfo.cpp b/src/base/bittorrent/torrentinfo.cpp index 4a0cd050cd21..590930fe20cb 100644 --- a/src/base/bittorrent/torrentinfo.cpp +++ b/src/base/bittorrent/torrentinfo.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,24 +28,15 @@ #include "torrentinfo.h" -#include -#include #include #include #include -#include -#include #include -#include #include #include "base/global.h" #include "base/path.h" -#include "base/preferences.h" -#include "base/utils/fs.h" -#include "base/utils/io.h" -#include "base/utils/misc.h" #include "infohash.h" #include "trackerentry.h" @@ -82,66 +73,6 @@ bool TorrentInfo::isValid() const return (m_nativeInfo != nullptr); } -nonstd::expected TorrentInfo::load(const QByteArray &data) noexcept -{ - // 2-step construction to overcome default limits of `depth_limit` & `token_limit` which are - // used in `torrent_info()` constructor - const auto *pref = Preferences::instance(); - - lt::error_code ec; - const lt::bdecode_node node = lt::bdecode(data, ec - , nullptr, pref->getBdecodeDepthLimit(), pref->getBdecodeTokenLimit()); - if (ec) - return nonstd::make_unexpected(QString::fromStdString(ec.message())); - - const lt::torrent_info nativeInfo {node, ec}; - if (ec) - return nonstd::make_unexpected(QString::fromStdString(ec.message())); - - return TorrentInfo(nativeInfo); -} - -nonstd::expected TorrentInfo::loadFromFile(const Path &path) noexcept -{ - QByteArray data; - try - { - const qint64 torrentSizeLimit = Preferences::instance()->getTorrentFileSizeLimit(); - const auto readResult = Utils::IO::readFile(path, torrentSizeLimit); - if (!readResult) - return nonstd::make_unexpected(readResult.error().message); - data = readResult.value(); - } - catch (const std::bad_alloc &e) - { - return nonstd::make_unexpected(tr("Failed to allocate memory when reading file. File: \"%1\". Error: \"%2\"") - .arg(path.toString(), QString::fromLocal8Bit(e.what()))); - } - - return load(data); -} - -nonstd::expected TorrentInfo::saveToFile(const Path &path) const -{ - if (!isValid()) - return nonstd::make_unexpected(tr("Invalid metadata")); - - try - { - const auto torrentCreator = lt::create_torrent(*m_nativeInfo); - const lt::entry torrentEntry = torrentCreator.generate(); - const nonstd::expected result = Utils::IO::saveToFile(path, torrentEntry); - if (!result) - return result.get_unexpected(); - } - catch (const lt::system_error &err) - { - return nonstd::make_unexpected(QString::fromLocal8Bit(err.what())); - } - - return {}; -} - InfoHash TorrentInfo::infoHash() const { if (!isValid()) return {}; @@ -160,28 +91,6 @@ QString TorrentInfo::name() const return QString::fromStdString(m_nativeInfo->orig_files().name()); } -QDateTime TorrentInfo::creationDate() const -{ - if (!isValid()) return {}; - - const std::time_t date = m_nativeInfo->creation_date(); - return ((date != 0) ? QDateTime::fromSecsSinceEpoch(date) : QDateTime()); -} - -QString TorrentInfo::creator() const -{ - if (!isValid()) return {}; - - return QString::fromStdString(m_nativeInfo->creator()); -} - -QString TorrentInfo::comment() const -{ - if (!isValid()) return {}; - - return QString::fromStdString(m_nativeInfo->comment()); -} - bool TorrentInfo::isPrivate() const { if (!isValid()) return false; @@ -270,43 +179,7 @@ qlonglong TorrentInfo::fileOffset(const int index) const return m_nativeInfo->orig_files().file_offset(m_nativeIndexes[index]); } -QVector TorrentInfo::trackers() const -{ - if (!isValid()) return {}; - - const std::vector trackers = m_nativeInfo->trackers(); - - QVector ret; - ret.reserve(static_cast(trackers.size())); - for (const lt::announce_entry &tracker : trackers) - ret.append({QString::fromStdString(tracker.url), tracker.tier}); - - return ret; -} - -QVector TorrentInfo::urlSeeds() const -{ - if (!isValid()) return {}; - - const std::vector &nativeWebSeeds = m_nativeInfo->web_seeds(); - - QVector urlSeeds; - urlSeeds.reserve(static_cast(nativeWebSeeds.size())); - - for (const lt::web_seed_entry &webSeed : nativeWebSeeds) - { -#if LIBTORRENT_VERSION_NUM < 20100 - if (webSeed.type == lt::web_seed_entry::url_seed) - urlSeeds.append(QUrl(QString::fromStdString(webSeed.url))); -#else - urlSeeds.append(QUrl(QString::fromStdString(webSeed.url))); -#endif - } - - return urlSeeds; -} - -QByteArray TorrentInfo::metadata() const +QByteArray TorrentInfo::rawData() const { if (!isValid()) return {}; #ifdef QBT_USES_LIBTORRENT2 @@ -320,7 +193,7 @@ QByteArray TorrentInfo::metadata() const PathList TorrentInfo::filesForPiece(const int pieceIndex) const { // no checks here because fileIndicesForPiece() will return an empty list - const QVector fileIndices = fileIndicesForPiece(pieceIndex); + const QList fileIndices = fileIndicesForPiece(pieceIndex); PathList res; res.reserve(fileIndices.size()); @@ -330,14 +203,14 @@ PathList TorrentInfo::filesForPiece(const int pieceIndex) const return res; } -QVector TorrentInfo::fileIndicesForPiece(const int pieceIndex) const +QList TorrentInfo::fileIndicesForPiece(const int pieceIndex) const { if (!isValid() || (pieceIndex < 0) || (pieceIndex >= piecesCount())) return {}; const std::vector files = m_nativeInfo->map_block( lt::piece_index_t {pieceIndex}, 0, m_nativeInfo->piece_size(lt::piece_index_t {pieceIndex})); - QVector res; + QList res; res.reserve(static_cast(files.size())); for (const lt::file_slice &fileSlice : files) { @@ -349,13 +222,13 @@ QVector TorrentInfo::fileIndicesForPiece(const int pieceIndex) const return res; } -QVector TorrentInfo::pieceHashes() const +QList TorrentInfo::pieceHashes() const { if (!isValid()) return {}; const int count = piecesCount(); - QVector hashes; + QList hashes; hashes.reserve(count); for (int i = 0; i < count; ++i) @@ -366,16 +239,7 @@ QVector TorrentInfo::pieceHashes() const TorrentInfo::PieceRange TorrentInfo::filePieces(const Path &filePath) const { - if (!isValid()) // if we do not check here the debug message will be printed, which would be not correct - return {}; - - const int index = fileIndex(filePath); - if (index == -1) - { - qDebug() << "Filename" << filePath.toString() << "was not found in torrent" << name(); - return {}; - } - return filePieces(index); + return filePieces(fileIndex(filePath)); } TorrentInfo::PieceRange TorrentInfo::filePieces(const int fileIndex) const @@ -384,10 +248,7 @@ TorrentInfo::PieceRange TorrentInfo::filePieces(const int fileIndex) const return {}; if ((fileIndex < 0) || (fileIndex >= filesCount())) - { - qDebug() << "File index (" << fileIndex << ") is out of range for torrent" << name(); return {}; - } const lt::file_storage &files = m_nativeInfo->orig_files(); const auto fileSize = files.file_size(m_nativeIndexes[fileIndex]); @@ -450,7 +311,7 @@ std::shared_ptr TorrentInfo::nativeInfo() const return std::make_shared(*m_nativeInfo); } -QVector TorrentInfo::nativeIndexes() const +QList TorrentInfo::nativeIndexes() const { return m_nativeIndexes; } diff --git a/src/base/bittorrent/torrentinfo.h b/src/base/bittorrent/torrentinfo.h index abca5197873e..02f5f78d8c7a 100644 --- a/src/base/bittorrent/torrentinfo.h +++ b/src/base/bittorrent/torrentinfo.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -32,9 +32,8 @@ #include #include -#include +#include -#include "base/3rdparty/expected.hpp" #include "base/indexrange.h" #include "base/pathfwd.h" @@ -50,26 +49,17 @@ namespace BitTorrent class TorrentInfo { - Q_DECLARE_TR_FUNCTIONS(TorrentInfo) - public: TorrentInfo() = default; TorrentInfo(const TorrentInfo &other) = default; explicit TorrentInfo(const lt::torrent_info &nativeInfo); - static nonstd::expected load(const QByteArray &data) noexcept; - static nonstd::expected loadFromFile(const Path &path) noexcept; - nonstd::expected saveToFile(const Path &path) const; - TorrentInfo &operator=(const TorrentInfo &other); bool isValid() const; InfoHash infoHash() const; QString name() const; - QDateTime creationDate() const; - QString creator() const; - QString comment() const; bool isPrivate() const; qlonglong totalSize() const; int filesCount() const; @@ -80,12 +70,9 @@ namespace BitTorrent PathList filePaths() const; qlonglong fileSize(int index) const; qlonglong fileOffset(int index) const; - QVector trackers() const; - QVector urlSeeds() const; - QByteArray metadata() const; PathList filesForPiece(int pieceIndex) const; - QVector fileIndicesForPiece(int pieceIndex) const; - QVector pieceHashes() const; + QList fileIndicesForPiece(int pieceIndex) const; + QList pieceHashes() const; using PieceRange = IndexRange; // returns pair of the first and the last pieces into which @@ -93,10 +80,12 @@ namespace BitTorrent PieceRange filePieces(const Path &filePath) const; PieceRange filePieces(int fileIndex) const; + QByteArray rawData() const; + bool matchesInfoHash(const InfoHash &otherInfoHash) const; std::shared_ptr nativeInfo() const; - QVector nativeIndexes() const; + QList nativeIndexes() const; private: // returns file index or -1 if fileName is not found @@ -106,7 +95,7 @@ namespace BitTorrent // internal indexes of files (payload only, excluding any .pad files) // by which they are addressed in libtorrent - QVector m_nativeIndexes; + QList m_nativeIndexes; }; } diff --git a/src/base/bittorrent/tracker.cpp b/src/base/bittorrent/tracker.cpp index 6da1321cd6df..a86d503104c1 100644 --- a/src/base/bittorrent/tracker.cpp +++ b/src/base/bittorrent/tracker.cpp @@ -380,7 +380,7 @@ void Tracker::registerPeer(const TrackerAnnounceRequest &announceReq) { // Reached max size, remove a random torrent if (m_torrents.size() >= MAX_TORRENTS) - m_torrents.erase(m_torrents.begin()); + m_torrents.erase(m_torrents.cbegin()); } m_torrents[announceReq.torrentID].setPeer(announceReq.peer); diff --git a/src/base/bittorrent/trackerentry.cpp b/src/base/bittorrent/trackerentry.cpp index f81e9c29e34a..1f323d253707 100644 --- a/src/base/bittorrent/trackerentry.cpp +++ b/src/base/bittorrent/trackerentry.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) * Copyright (C) 2015-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or @@ -28,7 +29,9 @@ #include "trackerentry.h" +#include #include +#include QList BitTorrent::parseTrackerEntries(const QStringView str) { diff --git a/src/base/bittorrent/trackerentry.h b/src/base/bittorrent/trackerentry.h index 33fce42f5d4a..cd3cf5c63062 100644 --- a/src/base/bittorrent/trackerentry.h +++ b/src/base/bittorrent/trackerentry.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) * Copyright (C) 2015-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or @@ -29,56 +30,16 @@ #pragma once #include -#include -#include #include -#include + +class QStringView; namespace BitTorrent { - enum class TrackerEntryStatus - { - NotContacted = 1, - Working = 2, - Updating = 3, - NotWorking = 4, - TrackerError = 5, - Unreachable = 6 - }; - struct TrackerEndpointEntry - { - QString name {}; - int btVersion = 1; - - TrackerEntryStatus status = TrackerEntryStatus::NotContacted; - QString message {}; - - int numPeers = -1; - int numSeeds = -1; - int numLeeches = -1; - int numDownloaded = -1; - - QDateTime nextAnnounceTime {}; - QDateTime minAnnounceTime {}; - }; - struct TrackerEntry { QString url {}; int tier = 0; - - TrackerEntryStatus status = TrackerEntryStatus::NotContacted; - QString message {}; - - int numPeers = -1; - int numSeeds = -1; - int numLeeches = -1; - int numDownloaded = -1; - - QDateTime nextAnnounceTime {}; - QDateTime minAnnounceTime {}; - - QHash, TrackerEndpointEntry> endpointEntries {}; }; QList parseTrackerEntries(QStringView str); diff --git a/src/base/bittorrent/trackerentrystatus.cpp b/src/base/bittorrent/trackerentrystatus.cpp new file mode 100644 index 000000000000..35acd09d374a --- /dev/null +++ b/src/base/bittorrent/trackerentrystatus.cpp @@ -0,0 +1,54 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2015-2023 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "trackerentrystatus.h" + +void BitTorrent::TrackerEntryStatus::clear() +{ + url.clear(); + tier = 0; + state = TrackerEndpointState::NotContacted; + message.clear(); + numPeers = -1; + numSeeds = -1; + numLeeches = -1; + numDownloaded = -1; + nextAnnounceTime = {}; + minAnnounceTime = {}; + endpoints.clear(); +} + +bool BitTorrent::operator==(const TrackerEntryStatus &left, const TrackerEntryStatus &right) +{ + return (left.url == right.url); +} + +std::size_t BitTorrent::qHash(const TrackerEntryStatus &key, const std::size_t seed) +{ + return ::qHash(key.url, seed); +} diff --git a/src/base/bittorrent/trackerentrystatus.h b/src/base/bittorrent/trackerentrystatus.h new file mode 100644 index 000000000000..fa5998a58737 --- /dev/null +++ b/src/base/bittorrent/trackerentrystatus.h @@ -0,0 +1,90 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2015-2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include +#include + +#include "announcetimepoint.h" + +class QStringView; + +namespace BitTorrent +{ + enum class TrackerEndpointState + { + NotContacted = 1, + Working = 2, + Updating = 3, + NotWorking = 4, + TrackerError = 5, + Unreachable = 6 + }; + + struct TrackerEndpointStatus + { + QString name {}; + int btVersion = 1; + + TrackerEndpointState state = TrackerEndpointState::NotContacted; + QString message {}; + + int numPeers = -1; + int numSeeds = -1; + int numLeeches = -1; + int numDownloaded = -1; + + AnnounceTimePoint nextAnnounceTime {}; + AnnounceTimePoint minAnnounceTime {}; + }; + + struct TrackerEntryStatus + { + QString url {}; + int tier = 0; + + TrackerEndpointState state = TrackerEndpointState::NotContacted; + QString message {}; + + int numPeers = -1; + int numSeeds = -1; + int numLeeches = -1; + int numDownloaded = -1; + + AnnounceTimePoint nextAnnounceTime {}; + AnnounceTimePoint minAnnounceTime {}; + + QHash, TrackerEndpointStatus> endpoints {}; + + void clear(); + }; + + bool operator==(const TrackerEntryStatus &left, const TrackerEntryStatus &right); + std::size_t qHash(const TrackerEntryStatus &key, std::size_t seed = 0); +} diff --git a/src/base/concepts/explicitlyconvertibleto.h b/src/base/concepts/explicitlyconvertibleto.h new file mode 100644 index 000000000000..3ecd70f1c5ab --- /dev/null +++ b/src/base/concepts/explicitlyconvertibleto.h @@ -0,0 +1,35 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +template +concept ExplicitlyConvertibleTo = requires (From f) +{ + static_cast(f); +}; diff --git a/src/base/http/connection.cpp b/src/base/http/connection.cpp index 4a96295e4ad7..55309a778f51 100644 --- a/src/base/http/connection.cpp +++ b/src/base/http/connection.cpp @@ -44,6 +44,7 @@ Connection::Connection(QTcpSocket *socket, IRequestHandler *requestHandler, QObj , m_requestHandler(requestHandler) { m_socket->setParent(this); + connect(m_socket, &QAbstractSocket::disconnected, this, &Connection::closed); // reserve common size for requests, don't use the max allowed size which is too big for // memory constrained platforms @@ -62,11 +63,6 @@ Connection::Connection(QTcpSocket *socket, IRequestHandler *requestHandler, QObj }); } -Connection::~Connection() -{ - m_socket->close(); -} - void Connection::read() { // reuse existing buffer and avoid unnecessary memory allocation/relocation @@ -164,7 +160,7 @@ void Connection::read() break; default: - Q_ASSERT(false); + Q_UNREACHABLE(); return; } } @@ -182,11 +178,6 @@ bool Connection::hasExpired(const qint64 timeout) const && m_idleTimer.hasExpired(timeout); } -bool Connection::isClosed() const -{ - return (m_socket->state() == QAbstractSocket::UnconnectedState); -} - bool Connection::acceptsGzipEncoding(QString codings) { // [rfc7231] 5.3.4. Accept-Encoding diff --git a/src/base/http/connection.h b/src/base/http/connection.h index 5b8f67a78c6b..46a263106449 100644 --- a/src/base/http/connection.h +++ b/src/base/http/connection.h @@ -47,10 +47,11 @@ namespace Http public: Connection(QTcpSocket *socket, IRequestHandler *requestHandler, QObject *parent = nullptr); - ~Connection(); bool hasExpired(qint64 timeout) const; - bool isClosed() const; + + signals: + void closed(); private: static bool acceptsGzipEncoding(QString codings); diff --git a/src/base/http/requestparser.cpp b/src/base/http/requestparser.cpp index 5b2b500a1b91..bd93fa6cc33c 100644 --- a/src/base/http/requestparser.cpp +++ b/src/base/http/requestparser.cpp @@ -50,7 +50,7 @@ using QStringPair = std::pair; namespace { - const QByteArray EOH = QByteArray(CRLF).repeated(2); + const QByteArray EOH = CRLF.repeated(2); const QByteArrayView viewWithoutEndingWith(const QByteArrayView in, const QByteArrayView str) { @@ -164,7 +164,7 @@ bool RequestParser::parseStartLines(const QStringView data) if (line.at(0).isSpace() && !requestLines.isEmpty()) { // continuation of previous line - requestLines.last() += line.toString(); + requestLines.last() += line; } else { @@ -225,9 +225,7 @@ bool RequestParser::parseRequestLine(const QString &line) const QByteArrayView valueComponent = param.mid(eqCharPos + 1); const QString paramName = QString::fromUtf8( QByteArray::fromPercentEncoding(asQByteArray(nameComponent)).replace('+', ' ')); - const QByteArray paramValue = valueComponent.isNull() - ? QByteArray("") - : QByteArray::fromPercentEncoding(asQByteArray(valueComponent)).replace('+', ' '); + const QByteArray paramValue = QByteArray::fromPercentEncoding(asQByteArray(valueComponent)).replace('+', ' '); m_request.query[paramName] = paramValue; } @@ -337,7 +335,7 @@ bool RequestParser::parseFormData(const QByteArrayView data) } else { - if (!parseHeaderLine(line.toString(), headersMap)) + if (!parseHeaderLine(line, headersMap)) return false; } } @@ -348,7 +346,8 @@ bool RequestParser::parseFormData(const QByteArrayView data) if (headersMap.contains(filename)) { - m_request.files.append({headersMap[filename], headersMap[HEADER_CONTENT_TYPE], payload.toByteArray()}); + m_request.files.append({.filename = headersMap[filename], .type = headersMap[HEADER_CONTENT_TYPE] + , .data = payload.toByteArray()}); } else if (headersMap.contains(name)) { diff --git a/src/base/http/server.cpp b/src/base/http/server.cpp index 525feed10136..7c99d8ecd802 100644 --- a/src/base/http/server.cpp +++ b/src/base/http/server.cpp @@ -32,17 +32,21 @@ #include #include +#include +#include +#include #include +#include #include -#include +#include #include #include #include -#include "base/algorithm.h" #include "base/global.h" #include "base/utils/net.h" +#include "base/utils/sslkey.h" #include "connection.h" using namespace std::chrono_literals; @@ -97,13 +101,12 @@ using namespace Http; Server::Server(IRequestHandler *requestHandler, QObject *parent) : QTcpServer(parent) , m_requestHandler(requestHandler) + , m_sslConfig {QSslConfiguration::defaultConfiguration()} { setProxy(QNetworkProxy::NoProxy); - QSslConfiguration sslConf {QSslConfiguration::defaultConfiguration()}; - sslConf.setProtocol(QSsl::TlsV1_2OrLater); - sslConf.setCiphers(safeCipherList()); - QSslConfiguration::setDefaultConfiguration(sslConf); + m_sslConfig.setCiphers(safeCipherList()); + m_sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone); auto *dropConnectionTimer = new QTimer(this); connect(dropConnectionTimer, &QTimer::timeout, this, &Server::dropTimedOutConnection); @@ -112,32 +115,35 @@ Server::Server(IRequestHandler *requestHandler, QObject *parent) void Server::incomingConnection(const qintptr socketDescriptor) { - if (m_connections.size() >= CONNECTIONS_LIMIT) return; - - QTcpSocket *serverSocket = nullptr; - if (m_https) - serverSocket = new QSslSocket(this); - else - serverSocket = new QTcpSocket(this); - + std::unique_ptr serverSocket = isHttps() ? std::make_unique(this) : std::make_unique(this); if (!serverSocket->setSocketDescriptor(socketDescriptor)) + return; + + if (m_connections.size() >= CONNECTIONS_LIMIT) { - delete serverSocket; + qWarning("Too many connections. Exceeded CONNECTIONS_LIMIT (%d). Connection closed.", CONNECTIONS_LIMIT); return; } - if (m_https) + try { - static_cast(serverSocket)->setProtocol(QSsl::SecureProtocols); - static_cast(serverSocket)->setPrivateKey(m_key); - static_cast(serverSocket)->setLocalCertificateChain(m_certificates); - static_cast(serverSocket)->setPeerVerifyMode(QSslSocket::VerifyNone); - static_cast(serverSocket)->startServerEncryption(); + if (isHttps()) + { + auto *sslSocket = static_cast(serverSocket.get()); + sslSocket->setSslConfiguration(m_sslConfig); + sslSocket->startServerEncryption(); + } + + auto *connection = new Connection(serverSocket.release(), m_requestHandler, this); + m_connections.insert(connection); + connect(connection, &Connection::closed, this, [this, connection] { removeConnection(connection); }); + } + catch (const std::bad_alloc &exception) + { + // drop the connection instead of throwing exception and crash + qWarning("Failed to allocate memory for HTTP connection. Connection closed."); + return; } - - auto *c = new Connection(serverSocket, m_requestHandler, this); - m_connections.insert(c); - connect(serverSocket, &QAbstractSocket::disconnected, this, [c, this]() { removeConnection(c); }); } void Server::removeConnection(Connection *connection) @@ -161,7 +167,7 @@ void Server::dropTimedOutConnection() bool Server::setupHttps(const QByteArray &certificates, const QByteArray &privateKey) { const QList certs {Utils::Net::loadSSLCertificate(certificates)}; - const QSslKey key {Utils::Net::loadSSLKey(privateKey)}; + const QSslKey key {Utils::SSLKey::load(privateKey)}; if (certs.isEmpty() || key.isNull()) { @@ -169,17 +175,17 @@ bool Server::setupHttps(const QByteArray &certificates, const QByteArray &privat return false; } - m_key = key; - m_certificates = certs; + m_sslConfig.setLocalCertificateChain(certs); + m_sslConfig.setPrivateKey(key); m_https = true; return true; } void Server::disableHttps() { + m_sslConfig.setLocalCertificateChain({}); + m_sslConfig.setPrivateKey({}); m_https = false; - m_certificates.clear(); - m_key.clear(); } bool Server::isHttps() const diff --git a/src/base/http/server.h b/src/base/http/server.h index 6e743599c57a..61c9563875f1 100644 --- a/src/base/http/server.h +++ b/src/base/http/server.h @@ -31,8 +31,7 @@ #pragma once #include -#include -#include +#include #include namespace Http @@ -63,7 +62,6 @@ namespace Http QSet m_connections; // for tracking persistent connections bool m_https = false; - QList m_certificates; - QSslKey m_key; + QSslConfiguration m_sslConfig; }; } diff --git a/src/base/http/types.h b/src/base/http/types.h index 156ddf6c0381..dcc8397449b4 100644 --- a/src/base/http/types.h +++ b/src/base/http/types.h @@ -29,9 +29,10 @@ #pragma once +#include #include +#include #include -#include #include "base/global.h" @@ -57,6 +58,7 @@ namespace Http inline const QString HEADER_X_CONTENT_TYPE_OPTIONS = u"x-content-type-options"_s; inline const QString HEADER_X_FORWARDED_FOR = u"x-forwarded-for"_s; inline const QString HEADER_X_FORWARDED_HOST = u"x-forwarded-host"_s; + inline const QString HEADER_X_FORWARDED_PROTO = u"X-forwarded-proto"_s; inline const QString HEADER_X_FRAME_OPTIONS = u"x-frame-options"_s; inline const QString HEADER_X_XSS_PROTECTION = u"x-xss-protection"_s; @@ -75,7 +77,7 @@ namespace Http inline const QString CONTENT_TYPE_FORM_DATA = u"multipart/form-data"_s; // portability: "\r\n" doesn't guarantee mapping to the correct symbol - inline const char CRLF[] = {0x0D, 0x0A, '\0'}; + inline const QByteArray CRLF = QByteArrayLiteral("\x0D\x0A"); struct Environment { @@ -109,7 +111,7 @@ namespace Http HeaderMap headers; QHash query; QHash posts; - QVector files; + QList files; }; struct ResponseStatus diff --git a/src/base/interfaces/iapplication.h b/src/base/interfaces/iapplication.h index 5f8eb18eae64..9a34c2fef18b 100644 --- a/src/base/interfaces/iapplication.h +++ b/src/base/interfaces/iapplication.h @@ -61,6 +61,9 @@ class IApplication public: virtual ~IApplication() = default; + virtual QString instanceName() const = 0; + virtual void setInstanceName(const QString &name) = 0; + // FileLogger properties virtual bool isFileLoggerEnabled() const = 0; virtual void setFileLoggerEnabled(bool value) = 0; @@ -80,6 +83,8 @@ class IApplication virtual int memoryWorkingSetLimit() const = 0; virtual void setMemoryWorkingSetLimit(int size) = 0; + virtual void sendTestEmail() const = 0; + #ifdef Q_OS_WIN virtual MemoryPriority processMemoryPriority() const = 0; virtual void setProcessMemoryPriority(MemoryPriority priority) = 0; diff --git a/src/base/logger.cpp b/src/base/logger.cpp index 7b03b97d6037..9a91632a9ae9 100644 --- a/src/base/logger.cpp +++ b/src/base/logger.cpp @@ -31,14 +31,14 @@ #include #include -#include +#include namespace { template - QVector loadFromBuffer(const boost::circular_buffer_space_optimized &src, const int offset = 0) + QList loadFromBuffer(const boost::circular_buffer_space_optimized &src, const int offset = 0) { - QVector ret; + QList ret; ret.reserve(static_cast(src.size()) - offset); std::copy((src.begin() + offset), src.end(), std::back_inserter(ret)); return ret; @@ -90,7 +90,7 @@ void Logger::addPeer(const QString &ip, const bool blocked, const QString &reaso emit newLogPeer(msg); } -QVector Logger::getMessages(const int lastKnownId) const +QList Logger::getMessages(const int lastKnownId) const { const QReadLocker locker(&m_lock); @@ -106,7 +106,7 @@ QVector Logger::getMessages(const int lastKnownId) const return loadFromBuffer(m_messages, (size - diff)); } -QVector Logger::getPeers(const int lastKnownId) const +QList Logger::getPeers(const int lastKnownId) const { const QReadLocker locker(&m_lock); diff --git a/src/base/logger.h b/src/base/logger.h index e41139f77a13..c948a204afd0 100644 --- a/src/base/logger.h +++ b/src/base/logger.h @@ -81,8 +81,8 @@ class Logger final : public QObject void addMessage(const QString &message, const Log::MsgType &type = Log::NORMAL); void addPeer(const QString &ip, bool blocked, const QString &reason = {}); - QVector getMessages(int lastKnownId = -1) const; - QVector getPeers(int lastKnownId = -1) const; + QList getMessages(int lastKnownId = -1) const; + QList getPeers(int lastKnownId = -1) const; signals: void newLogMessage(const Log::Msg &message); diff --git a/src/base/net/dnsupdater.cpp b/src/base/net/dnsupdater.cpp index 4aa385668cd3..6399fc5a2f5b 100644 --- a/src/base/net/dnsupdater.cpp +++ b/src/base/net/dnsupdater.cpp @@ -153,7 +153,7 @@ QString DNSUpdater::getUpdateUrl() const break; default: qWarning() << "Unrecognized Dynamic DNS service!"; - Q_ASSERT(false); + Q_UNREACHABLE(); break; } url.setPath(u"/nic/update"_s); @@ -305,7 +305,7 @@ QUrl DNSUpdater::getRegistrationUrl(const DNS::Service service) case DNS::Service::NoIP: return {u"https://www.noip.com/remote-access"_s}; default: - Q_ASSERT(false); + Q_UNREACHABLE(); break; } return {}; diff --git a/src/base/net/downloadhandlerimpl.cpp b/src/base/net/downloadhandlerimpl.cpp index 932214d8f017..370347946c1f 100644 --- a/src/base/net/downloadhandlerimpl.cpp +++ b/src/base/net/downloadhandlerimpl.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -30,7 +30,6 @@ #include "downloadhandlerimpl.h" #include -#include #include #include "base/3rdparty/expected.hpp" @@ -49,19 +48,6 @@ const int MAX_REDIRECTIONS = 20; // the common value for web browsers -namespace -{ - nonstd::expected saveToTempFile(const QByteArray &data) - { - QTemporaryFile file {Utils::Fs::tempPath().data()}; - if (!file.open() || (file.write(data) != data.length()) || !file.flush()) - return nonstd::make_unexpected(file.errorString()); - - file.setAutoRemove(false); - return Path(file.fileName()); - } -} - Net::DownloadHandlerImpl::DownloadHandlerImpl(DownloadManager *manager , const DownloadRequest &downloadRequest, const bool useProxy) : DownloadHandler {manager} @@ -75,10 +61,17 @@ Net::DownloadHandlerImpl::DownloadHandlerImpl(DownloadManager *manager void Net::DownloadHandlerImpl::cancel() { - if (m_reply) + if (m_isFinished) + return; + + if (m_reply && m_reply->isRunning()) { m_reply->abort(); } + else if (m_redirectionHandler) + { + m_redirectionHandler->cancel(); + } else { setError(errorCodeToString(QNetworkReply::OperationCanceledError)); @@ -90,6 +83,7 @@ void Net::DownloadHandlerImpl::assignNetworkReply(QNetworkReply *reply) { Q_ASSERT(reply); Q_ASSERT(!m_reply); + Q_ASSERT(!m_isFinished); m_reply = reply; m_reply->setParent(this); @@ -98,6 +92,11 @@ void Net::DownloadHandlerImpl::assignNetworkReply(QNetworkReply *reply) connect(m_reply, &QNetworkReply::finished, this, &DownloadHandlerImpl::processFinishedDownload); } +QNetworkReply *Net::DownloadHandlerImpl::assignedNetworkReply() const +{ + return m_reply; +} + // Returns original url QString Net::DownloadHandlerImpl::url() const { @@ -150,7 +149,7 @@ void Net::DownloadHandlerImpl::processFinishedDownload() const Path destinationPath = m_downloadRequest.destFileName(); if (destinationPath.isEmpty()) { - const nonstd::expected result = saveToTempFile(m_result.data); + const nonstd::expected result = Utils::IO::saveToTempFile(m_result.data); if (result) { m_result.filePath = result.value(); @@ -230,10 +229,10 @@ void Net::DownloadHandlerImpl::handleRedirection(const QUrl &newUrl) return; } - auto *redirected = static_cast( + m_redirectionHandler = static_cast( m_manager->download(DownloadRequest(m_downloadRequest).url(newUrlString), useProxy())); - redirected->m_redirectionCount = m_redirectionCount + 1; - connect(redirected, &DownloadHandlerImpl::finished, this, [this](const DownloadResult &result) + m_redirectionHandler->m_redirectionCount = m_redirectionCount + 1; + connect(m_redirectionHandler, &DownloadHandlerImpl::finished, this, [this](const DownloadResult &result) { m_result = result; m_result.url = url(); @@ -249,6 +248,7 @@ void Net::DownloadHandlerImpl::setError(const QString &error) void Net::DownloadHandlerImpl::finish() { + m_isFinished = true; emit finished(m_result); } diff --git a/src/base/net/downloadhandlerimpl.h b/src/base/net/downloadhandlerimpl.h index 8903daf9bdfe..72bcbce8ba71 100644 --- a/src/base/net/downloadhandlerimpl.h +++ b/src/base/net/downloadhandlerimpl.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -53,6 +53,7 @@ namespace Net bool useProxy() const; void assignNetworkReply(QNetworkReply *reply); + QNetworkReply *assignedNetworkReply() const; private: void processFinishedDownload(); @@ -65,9 +66,11 @@ namespace Net DownloadManager *m_manager = nullptr; QNetworkReply *m_reply = nullptr; + DownloadHandlerImpl *m_redirectionHandler = nullptr; const DownloadRequest m_downloadRequest; const bool m_useProxy = false; short m_redirectionCount = 0; DownloadResult m_result; + bool m_isFinished = false; }; } diff --git a/src/base/net/downloadmanager.cpp b/src/base/net/downloadmanager.cpp index 6a955f26b7d5..2d75de73c179 100644 --- a/src/base/net/downloadmanager.cpp +++ b/src/base/net/downloadmanager.cpp @@ -1,6 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2024 Jonathan Ketchker + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -31,6 +32,7 @@ #include +#include #include #include #include @@ -40,6 +42,7 @@ #include #include #include +#include #include #include "base/global.h" @@ -48,10 +51,31 @@ #include "downloadhandlerimpl.h" #include "proxyconfigurationmanager.h" +using namespace std::chrono_literals; + namespace { - // Disguise as Firefox to avoid web server banning - const char DEFAULT_USER_AGENT[] = "Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"; + // Disguise as browser to circumvent website blocking + QByteArray getBrowserUserAgent() + { + // Firefox release calendar + // https://whattrainisitnow.com/calendar/ + // https://wiki.mozilla.org/index.php?title=Release_Management/Calendar&redirect=no + + static QByteArray ret; + if (ret.isEmpty()) + { + const std::chrono::time_point baseDate = std::chrono::sys_days(2024y / 04 / 16); + const int baseVersion = 125; + + const std::chrono::time_point nowDate = std::chrono::system_clock::now(); + const int nowVersion = baseVersion + std::chrono::duration_cast(nowDate - baseDate).count(); + + QByteArray userAgentTemplate = QByteArrayLiteral("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:%1.0) Gecko/20100101 Firefox/%1.0"); + ret = userAgentTemplate.replace("%1", QByteArray::number(nowVersion)); + } + return ret; + } } class Net::DownloadManager::NetworkCookieJar final : public QNetworkCookieJar @@ -124,10 +148,20 @@ Net::DownloadManager::DownloadManager(QObject *parent) QStringList errorList; for (const QSslError &error : errors) errorList += error.errorString(); - LogMsg(tr("Ignoring SSL error, URL: \"%1\", errors: \"%2\"").arg(reply->url().toString(), errorList.join(u". ")), Log::WARNING); - // Ignore all SSL errors - reply->ignoreSslErrors(); + QString errorMsg; + if (!Preferences::instance()->isIgnoreSSLErrors()) + { + errorMsg = tr("SSL error, URL: \"%1\", errors: \"%2\""); + } + else + { + errorMsg = tr("Ignoring SSL error, URL: \"%1\", errors: \"%2\""); + // Ignore all SSL errors + reply->ignoreSslErrors(); + } + + LogMsg(errorMsg.arg(reply->url().toString(), errorList.join(u". ")), Log::WARNING); }); connect(ProxyConfigurationManager::instance(), &ProxyConfigurationManager::proxyConfigurationChanged @@ -156,34 +190,40 @@ Net::DownloadManager *Net::DownloadManager::instance() Net::DownloadHandler *Net::DownloadManager::download(const DownloadRequest &downloadRequest, const bool useProxy) { // Process download request - const ServiceID id = ServiceID::fromURL(downloadRequest.url()); - const bool isSequentialService = m_sequentialServices.contains(id); + const auto serviceID = ServiceID::fromURL(downloadRequest.url()); + const bool isSequentialService = m_sequentialServices.contains(serviceID); auto *downloadHandler = new DownloadHandlerImpl(this, downloadRequest, useProxy); - connect(downloadHandler, &DownloadHandler::finished, downloadHandler, &QObject::deleteLater); - connect(downloadHandler, &QObject::destroyed, this, [this, id, downloadHandler]() + connect(downloadHandler, &DownloadHandler::finished, this, [this, serviceID, downloadHandler] { - m_waitingJobs[id].removeOne(downloadHandler); + if (!downloadHandler->assignedNetworkReply()) + { + // DownloadHandler was finished (canceled) before QNetworkReply was assigned, + // so it's still in the queue. Just remove it from there. + m_waitingJobs[serviceID].removeOne(downloadHandler); + } + + downloadHandler->deleteLater(); }); - if (isSequentialService && m_busyServices.contains(id)) + if (isSequentialService && m_busyServices.contains(serviceID)) { - m_waitingJobs[id].enqueue(downloadHandler); + m_waitingJobs[serviceID].enqueue(downloadHandler); } else { qDebug("Downloading %s...", qUtf8Printable(downloadRequest.url())); if (isSequentialService) - m_busyServices.insert(id); + m_busyServices.insert(serviceID); processRequest(downloadHandler); } return downloadHandler; } -void Net::DownloadManager::registerSequentialService(const Net::ServiceID &serviceID) +void Net::DownloadManager::registerSequentialService(const Net::ServiceID &serviceID, const std::chrono::seconds delay) { - m_sequentialServices.insert(serviceID); + m_sequentialServices.insert(serviceID, delay); } QList Net::DownloadManager::cookiesForUrl(const QUrl &url) const @@ -259,21 +299,19 @@ void Net::DownloadManager::applyProxySettings() m_proxy.setCapabilities(m_proxy.capabilities() & ~QNetworkProxy::HostNameLookupCapability); } -void Net::DownloadManager::handleDownloadFinished(DownloadHandlerImpl *finishedHandler) +void Net::DownloadManager::processWaitingJobs(const ServiceID &serviceID) { - const ServiceID id = ServiceID::fromURL(finishedHandler->url()); - const auto waitingJobsIter = m_waitingJobs.find(id); + const auto waitingJobsIter = m_waitingJobs.find(serviceID); if ((waitingJobsIter == m_waitingJobs.end()) || waitingJobsIter.value().isEmpty()) { // No more waiting jobs for given ServiceID - m_busyServices.remove(id); + m_busyServices.remove(serviceID); return; } auto *handler = waitingJobsIter.value().dequeue(); qDebug("Downloading %s...", qUtf8Printable(handler->url())); processRequest(handler); - handler->disconnect(this); } void Net::DownloadManager::processRequest(DownloadHandlerImpl *downloadHandler) @@ -282,14 +320,11 @@ void Net::DownloadManager::processRequest(DownloadHandlerImpl *downloadHandler) const DownloadRequest downloadRequest = downloadHandler->downloadRequest(); QNetworkRequest request {downloadRequest.url()}; - - if (downloadRequest.userAgent().isEmpty()) - request.setRawHeader("User-Agent", DEFAULT_USER_AGENT); - else - request.setRawHeader("User-Agent", downloadRequest.userAgent().toUtf8()); + request.setHeader(QNetworkRequest::UserAgentHeader, (downloadRequest.userAgent().isEmpty() + ? getBrowserUserAgent() : downloadRequest.userAgent().toUtf8())); // Spoof HTTP Referer to allow adding torrent link from Torcache/KickAssTorrents - request.setRawHeader("Referer", request.url().toEncoded().data()); + request.setRawHeader("Referer", request.url().toEncoded()); #ifdef QT_NO_COMPRESS // The macro "QT_NO_COMPRESS" defined in QT will disable the zlib related features // and reply data auto-decompression in QT will also be disabled. But we can support @@ -299,10 +334,12 @@ void Net::DownloadManager::processRequest(DownloadHandlerImpl *downloadHandler) // Qt doesn't support Magnet protocol so we need to handle redirections manually request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::ManualRedirectPolicy); + request.setTransferTimeout(); + QNetworkReply *reply = m_networkManager->get(request); - connect(reply, &QNetworkReply::finished, this, [this, downloadHandler] + connect(reply, &QNetworkReply::finished, this, [this, serviceID = ServiceID::fromURL(downloadHandler->url())] { - handleDownloadFinished(downloadHandler); + QTimer::singleShot(m_sequentialServices.value(serviceID, 0s), this, [this, serviceID] { processWaitingJobs(serviceID); }); }); downloadHandler->assignNetworkReply(reply); } diff --git a/src/base/net/downloadmanager.h b/src/base/net/downloadmanager.h index d7a407f975da..8f74c2f9d135 100644 --- a/src/base/net/downloadmanager.h +++ b/src/base/net/downloadmanager.h @@ -1,6 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015-2023 Vladimir Golovnev + * Copyright (C) 2024 Jonathan Ketchker + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,6 +30,8 @@ #pragma once +#include + #include #include #include @@ -137,7 +140,7 @@ namespace Net template void download(const DownloadRequest &downloadRequest, bool useProxy, Context context, Func &&slot); - void registerSequentialService(const ServiceID &serviceID); + void registerSequentialService(const ServiceID &serviceID, std::chrono::seconds delay = std::chrono::seconds(0)); QList cookiesForUrl(const QUrl &url) const; bool setCookiesFromUrl(const QList &cookieList, const QUrl &url); @@ -153,7 +156,7 @@ namespace Net explicit DownloadManager(QObject *parent = nullptr); void applyProxySettings(); - void handleDownloadFinished(DownloadHandlerImpl *finishedHandler); + void processWaitingJobs(const ServiceID &serviceID); void processRequest(DownloadHandlerImpl *downloadHandler); static DownloadManager *m_instance; @@ -161,7 +164,8 @@ namespace Net QNetworkAccessManager *m_networkManager = nullptr; QNetworkProxy m_proxy; - QSet m_sequentialServices; + // m_sequentialServices value is delay for same host requests + QHash m_sequentialServices; QSet m_busyServices; QHash> m_waitingJobs; }; diff --git a/src/base/net/geoipdatabase.cpp b/src/base/net/geoipdatabase.cpp index b53178402138..5655827ea996 100644 --- a/src/base/net/geoipdatabase.cpp +++ b/src/base/net/geoipdatabase.cpp @@ -28,6 +28,7 @@ #include "geoipdatabase.h" +#include #include #include #include @@ -41,7 +42,7 @@ namespace { const qint32 MAX_FILE_SIZE = 67108864; // 64MB const quint32 MAX_METADATA_SIZE = 131072; // 128KB - const char METADATA_BEGIN_MARK[] = "\xab\xcd\xefMaxMind.com"; + const QByteArray METADATA_BEGIN_MARK = QByteArrayLiteral("\xab\xcd\xefMaxMind.com"); const char DATA_SECTION_SEPARATOR[16] = {0}; enum class DataType @@ -309,7 +310,7 @@ QVariantHash GeoIPDatabase::readMetadata() const { if (m_size > MAX_METADATA_SIZE) index += (m_size - MAX_METADATA_SIZE); // from begin of all data - auto offset = static_cast(index + strlen(METADATA_BEGIN_MARK)); + auto offset = static_cast(index + METADATA_BEGIN_MARK.size()); const QVariant metadata = readDataField(offset); if (metadata.userType() == QMetaType::QVariantHash) return metadata.toHash(); diff --git a/src/base/net/geoipmanager.cpp b/src/base/net/geoipmanager.cpp index 0d0a4c412894..423501699f68 100644 --- a/src/base/net/geoipmanager.cpp +++ b/src/base/net/geoipmanager.cpp @@ -456,15 +456,15 @@ void GeoIPManager::downloadFinished(const DownloadResult &result) Utils::Fs::mkpath(targetPath); const auto path = targetPath / Path(GEODB_FILENAME); - const nonstd::expected result = Utils::IO::saveToFile(path, data); - if (result) + const nonstd::expected saveResult = Utils::IO::saveToFile(path, data); + if (saveResult) { LogMsg(tr("Successfully updated IP geolocation database."), Log::INFO); } else { LogMsg(tr("Couldn't save downloaded IP geolocation database file. Reason: %1") - .arg(result.error()), Log::WARNING); + .arg(saveResult.error()), Log::WARNING); } } else diff --git a/src/base/net/smtp.cpp b/src/base/net/smtp.cpp index 94f8338100ee..a8e40acdde28 100644 --- a/src/base/net/smtp.cpp +++ b/src/base/net/smtp.cpp @@ -565,29 +565,11 @@ void Smtp::logError(const QString &msg) QString Smtp::getCurrentDateTime() const { - // return date & time in the format specified in RFC 2822, section 3.3 - const QDateTime nowDateTime = QDateTime::currentDateTime(); - const QDate nowDate = nowDateTime.date(); - const QLocale eng(QLocale::English); - - const QString timeStr = nowDateTime.time().toString(u"HH:mm:ss"); - const QString weekDayStr = eng.dayName(nowDate.dayOfWeek(), QLocale::ShortFormat); - const QString dayStr = QString::number(nowDate.day()); - const QString monthStr = eng.monthName(nowDate.month(), QLocale::ShortFormat); - const QString yearStr = QString::number(nowDate.year()); - - QDateTime tmp = nowDateTime; - tmp.setTimeSpec(Qt::UTC); - const int timeOffsetHour = nowDateTime.secsTo(tmp) / 3600; - const int timeOffsetMin = nowDateTime.secsTo(tmp) / 60 - (60 * timeOffsetHour); - const int timeOffset = timeOffsetHour * 100 + timeOffsetMin; - // buf size = 11 to avoid format truncation warnings from snprintf - char buf[11] = {0}; - std::snprintf(buf, sizeof(buf), "%+05d", timeOffset); - const auto timeOffsetStr = QString::fromUtf8(buf); - - const QString ret = weekDayStr + u", " + dayStr + u' ' + monthStr + u' ' + yearStr + u' ' + timeStr + u' ' + timeOffsetStr; - return ret; + // [rfc2822] 3.3. Date and Time Specification + const auto now = QDateTime::currentDateTime(); + const QLocale eng {QLocale::English}; + const QString weekday = eng.dayName(now.date().dayOfWeek(), QLocale::ShortFormat); + return (weekday + u", " + now.toString(Qt::RFC2822Date)); } void Smtp::error(QAbstractSocket::SocketError socketError) diff --git a/src/base/net/smtp.h b/src/base/net/smtp.h index 28c7cadebfdb..d58d8322b7ac 100644 --- a/src/base/net/smtp.h +++ b/src/base/net/smtp.h @@ -43,7 +43,6 @@ class QSslSocket; #else class QTcpSocket; #endif -class QTextCodec; namespace Net { diff --git a/src/base/orderedset.h b/src/base/orderedset.h index f553f833fdcf..229b23bfd1cd 100644 --- a/src/base/orderedset.h +++ b/src/base/orderedset.h @@ -29,12 +29,9 @@ #pragma once -#include #include #include -#include "algorithm.h" - template > class OrderedSet : public std::set { @@ -70,25 +67,6 @@ class OrderedSet : public std::set return BaseType::empty(); } - QString join(const QString &separator) const - requires std::same_as - { - auto iter = BaseType::cbegin(); - if (iter == BaseType::cend()) - return {}; - - QString ret = *iter; - ++iter; - - while (iter != BaseType::cend()) - { - ret.push_back(separator + *iter); - ++iter; - } - - return ret; - } - bool remove(const key_type &value) { return (BaseType::erase(value) > 0); diff --git a/src/base/preferences.cpp b/src/base/preferences.cpp index 8dd1b4f8744f..4cf0e9bef5ea 100644 --- a/src/base/preferences.cpp +++ b/src/base/preferences.cpp @@ -134,17 +134,17 @@ void Preferences::setCustomUIThemePath(const Path &path) setValue(u"Preferences/General/CustomUIThemePath"_s, path); } -bool Preferences::deleteTorrentFilesAsDefault() const +bool Preferences::removeTorrentContent() const { return value(u"Preferences/General/DeleteTorrentsFilesAsDefault"_s, false); } -void Preferences::setDeleteTorrentFilesAsDefault(const bool del) +void Preferences::setRemoveTorrentContent(const bool remove) { - if (del == deleteTorrentFilesAsDefault()) + if (remove == removeTorrentContent()) return; - setValue(u"Preferences/General/DeleteTorrentsFilesAsDefault"_s, del); + setValue(u"Preferences/General/DeleteTorrentsFilesAsDefault"_s, remove); } bool Preferences::confirmOnExit() const @@ -359,6 +359,19 @@ void Preferences::setStatusbarDisplayed(const bool displayed) setValue(u"Preferences/General/StatusbarDisplayed"_s, displayed); } +bool Preferences::isStatusbarExternalIPDisplayed() const +{ + return value(u"Preferences/General/StatusbarExternalIPDisplayed"_s, false); +} + +void Preferences::setStatusbarExternalIPDisplayed(const bool displayed) +{ + if (displayed == isStatusbarExternalIPDisplayed()) + return; + + setValue(u"Preferences/General/StatusbarExternalIPDisplayed"_s, displayed); +} + bool Preferences::isSplashScreenDisabled() const { return value(u"Preferences/General/NoSplashScreen"_s, true); @@ -429,6 +442,19 @@ void Preferences::setWinStartup(const bool b) settings.remove(profileID); } } + +QString Preferences::getStyle() const +{ + return value(u"Appearance/Style"_s); +} + +void Preferences::setStyle(const QString &styleName) +{ + if (styleName == getStyle()) + return; + + setValue(u"Appearance/Style"_s, styleName); +} #endif // Q_OS_WIN // Downloads @@ -629,6 +655,47 @@ void Preferences::setSearchEnabled(const bool enabled) setValue(u"Preferences/Search/SearchEnabled"_s, enabled); } +int Preferences::searchHistoryLength() const +{ + const int val = value(u"Search/HistoryLength"_s, 50); + return std::clamp(val, 0, 99); +} + +void Preferences::setSearchHistoryLength(const int length) +{ + const int clampedLength = std::clamp(length, 0, 99); + if (clampedLength == searchHistoryLength()) + return; + + setValue(u"Search/HistoryLength"_s, clampedLength); +} + +bool Preferences::storeOpenedSearchTabs() const +{ + return value(u"Search/StoreOpenedSearchTabs"_s, false); +} + +void Preferences::setStoreOpenedSearchTabs(const bool enabled) +{ + if (enabled == storeOpenedSearchTabs()) + return; + + setValue(u"Search/StoreOpenedSearchTabs"_s, enabled); +} + +bool Preferences::storeOpenedSearchTabResults() const +{ + return value(u"Search/StoreOpenedSearchTabResults"_s, false); +} + +void Preferences::setStoreOpenedSearchTabResults(const bool enabled) +{ + if (enabled == storeOpenedSearchTabResults()) + return; + + setValue(u"Search/StoreOpenedSearchTabResults"_s, enabled); +} + bool Preferences::isWebUIEnabled() const { #ifdef DISABLE_GUI @@ -673,11 +740,11 @@ void Preferences::setWebUIAuthSubnetWhitelistEnabled(const bool enabled) setValue(u"Preferences/WebUI/AuthSubnetWhitelistEnabled"_s, enabled); } -QVector Preferences::getWebUIAuthSubnetWhitelist() const +QList Preferences::getWebUIAuthSubnetWhitelist() const { const auto subnets = value(u"Preferences/WebUI/AuthSubnetWhitelist"_s); - QVector ret; + QList ret; ret.reserve(subnets.size()); for (const QString &rawSubnet : subnets) @@ -1330,6 +1397,19 @@ void Preferences::setMarkOfTheWebEnabled(const bool enabled) setValue(u"Preferences/Advanced/markOfTheWeb"_s, enabled); } +bool Preferences::isIgnoreSSLErrors() const +{ + return value(u"Preferences/Advanced/IgnoreSSLErrors"_s, false); +} + +void Preferences::setIgnoreSSLErrors(const bool enabled) +{ + if (enabled == isIgnoreSSLErrors()) + return; + + setValue(u"Preferences/Advanced/IgnoreSSLErrors"_s, enabled); +} + Path Preferences::getPythonExecutablePath() const { return value(u"Preferences/Search/pythonExecutablePath"_s, Path()); @@ -1397,19 +1477,6 @@ void Preferences::setConfirmRemoveAllTags(const bool enabled) setValue(u"Preferences/Advanced/confirmRemoveAllTags"_s, enabled); } -bool Preferences::confirmPauseAndResumeAll() const -{ - return value(u"GUI/ConfirmActions/PauseAndResumeAllTorrents"_s, true); -} - -void Preferences::setConfirmPauseAndResumeAll(const bool enabled) -{ - if (enabled == confirmPauseAndResumeAll()) - return; - - setValue(u"GUI/ConfirmActions/PauseAndResumeAllTorrents"_s, enabled); -} - bool Preferences::confirmMergeTrackers() const { return value(u"GUI/ConfirmActions/MergeTrackers"_s, true); @@ -1480,19 +1547,6 @@ void Preferences::setDNSLastIP(const QString &ip) setValue(u"DNSUpdater/lastIP"_s, ip); } -bool Preferences::getAcceptedLegal() const -{ - return value(u"LegalNotice/Accepted"_s, false); -} - -void Preferences::setAcceptedLegal(const bool accepted) -{ - if (accepted == getAcceptedLegal()) - return; - - setValue(u"LegalNotice/Accepted"_s, accepted); -} - QByteArray Preferences::getMainGeometry() const { return value(u"MainWindow/geometry"_s); diff --git a/src/base/preferences.h b/src/base/preferences.h index f7af048a84f3..95cb873d7a60 100644 --- a/src/base/preferences.h +++ b/src/base/preferences.h @@ -105,8 +105,8 @@ class Preferences final : public QObject void setUseCustomUITheme(bool use); Path customUIThemePath() const; void setCustomUIThemePath(const Path &path); - bool deleteTorrentFilesAsDefault() const; - void setDeleteTorrentFilesAsDefault(bool del); + bool removeTorrentContent() const; + void setRemoveTorrentContent(bool remove); bool confirmOnExit() const; void setConfirmOnExit(bool confirm); bool speedInTitleBar() const; @@ -119,6 +119,8 @@ class Preferences final : public QObject void setHideZeroComboValues(int n); bool isStatusbarDisplayed() const; void setStatusbarDisplayed(bool displayed); + bool isStatusbarExternalIPDisplayed() const; + void setStatusbarExternalIPDisplayed(bool displayed); bool isToolbarDisplayed() const; void setToolbarDisplayed(bool displayed); bool isSplashScreenDisabled() const; @@ -130,6 +132,8 @@ class Preferences final : public QObject #ifdef Q_OS_WIN bool WinStartup() const; void setWinStartup(bool b); + QString getStyle() const; + void setStyle(const QString &styleName); #endif // Downloads @@ -168,6 +172,14 @@ class Preferences final : public QObject bool isSearchEnabled() const; void setSearchEnabled(bool enabled); + // Search UI + int searchHistoryLength() const; + void setSearchHistoryLength(int length); + bool storeOpenedSearchTabs() const; + void setStoreOpenedSearchTabs(bool enabled); + bool storeOpenedSearchTabResults() const; + void setStoreOpenedSearchTabResults(bool enabled); + // HTTP Server bool isWebUIEnabled() const; void setWebUIEnabled(bool enabled); @@ -185,7 +197,7 @@ class Preferences final : public QObject void setWebUILocalAuthEnabled(bool enabled); bool isWebUIAuthSubnetWhitelistEnabled() const; void setWebUIAuthSubnetWhitelistEnabled(bool enabled); - QVector getWebUIAuthSubnetWhitelist() const; + QList getWebUIAuthSubnetWhitelist() const; void setWebUIAuthSubnetWhitelist(QStringList subnets); QString getWebUIUsername() const; void setWebUIUsername(const QString &username); @@ -293,6 +305,8 @@ class Preferences final : public QObject void setTrackerPortForwardingEnabled(bool enabled); bool isMarkOfTheWebEnabled() const; void setMarkOfTheWebEnabled(bool enabled); + bool isIgnoreSSLErrors() const; + void setIgnoreSSLErrors(bool enabled); Path getPythonExecutablePath() const; void setPythonExecutablePath(const Path &path); #if defined(Q_OS_WIN) || defined(Q_OS_MACOS) @@ -305,8 +319,6 @@ class Preferences final : public QObject void setConfirmTorrentRecheck(bool enabled); bool confirmRemoveAllTags() const; void setConfirmRemoveAllTags(bool enabled); - bool confirmPauseAndResumeAll() const; - void setConfirmPauseAndResumeAll(bool enabled); bool confirmMergeTrackers() const; void setConfirmMergeTrackers(bool enabled); bool confirmRemoveTrackerFromAllTorrents() const; @@ -340,8 +352,6 @@ class Preferences final : public QObject void setDNSLastUpd(const QDateTime &date); QString getDNSLastIP() const; void setDNSLastIP(const QString &ip); - bool getAcceptedLegal() const; - void setAcceptedLegal(bool accepted); QByteArray getMainGeometry() const; void setMainGeometry(const QByteArray &geometry); bool isFiltersSidebarVisible() const; diff --git a/src/base/rss/feed_serializer.cpp b/src/base/rss/feed_serializer.cpp index ce097c41c584..838ad06a910b 100644 --- a/src/base/rss/feed_serializer.cpp +++ b/src/base/rss/feed_serializer.cpp @@ -34,14 +34,14 @@ #include #include #include -#include +#include #include "base/logger.h" #include "base/path.h" #include "base/utils/io.h" #include "rss_article.h" -const int ARTICLEDATALIST_TYPEID = qRegisterMetaType>(); +const int ARTICLEDATALIST_TYPEID = qRegisterMetaType>(); void RSS::Private::FeedSerializer::load(const Path &dataFileName, const QString &url) { @@ -61,7 +61,7 @@ void RSS::Private::FeedSerializer::load(const Path &dataFileName, const QString emit loadingFinished(loadArticles(readResult.value(), url)); } -void RSS::Private::FeedSerializer::store(const Path &dataFileName, const QVector &articlesData) +void RSS::Private::FeedSerializer::store(const Path &dataFileName, const QList &articlesData) { QJsonArray arr; for (const QVariantHash &data : articlesData) @@ -73,7 +73,7 @@ void RSS::Private::FeedSerializer::store(const Path &dataFileName, const QVector arr << jsonObj; } - const nonstd::expected result = Utils::IO::saveToFile(dataFileName, QJsonDocument(arr).toJson()); + const nonstd::expected result = Utils::IO::saveToFile(dataFileName, QJsonDocument(arr).toJson(QJsonDocument::Compact)); if (!result) { LogMsg(tr("Failed to save RSS feed in '%1', Reason: %2").arg(dataFileName.toString(), result.error()) @@ -81,7 +81,7 @@ void RSS::Private::FeedSerializer::store(const Path &dataFileName, const QVector } } -QVector RSS::Private::FeedSerializer::loadArticles(const QByteArray &data, const QString &url) +QList RSS::Private::FeedSerializer::loadArticles(const QByteArray &data, const QString &url) { QJsonParseError jsonError; const QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError); @@ -98,7 +98,7 @@ QVector RSS::Private::FeedSerializer::loadArticles(const QByteArra return {}; } - QVector result; + QList result; const QJsonArray jsonArr = jsonDoc.array(); result.reserve(jsonArr.size()); for (int i = 0; i < jsonArr.size(); ++i) diff --git a/src/base/rss/feed_serializer.h b/src/base/rss/feed_serializer.h index db593b0cca95..9bc33c4c8e30 100644 --- a/src/base/rss/feed_serializer.h +++ b/src/base/rss/feed_serializer.h @@ -49,12 +49,12 @@ namespace RSS::Private using QObject::QObject; void load(const Path &dataFileName, const QString &url); - void store(const Path &dataFileName, const QVector &articlesData); + void store(const Path &dataFileName, const QList &articlesData); signals: - void loadingFinished(const QVector &articles); + void loadingFinished(const QList &articles); private: - QVector loadArticles(const QByteArray &data, const QString &url); + QList loadArticles(const QByteArray &data, const QString &url); }; } diff --git a/src/base/rss/rss_autodownloader.cpp b/src/base/rss/rss_autodownloader.cpp index 798634d7a90c..a365a53efbd1 100644 --- a/src/base/rss/rss_autodownloader.cpp +++ b/src/base/rss/rss_autodownloader.cpp @@ -35,11 +35,11 @@ #include #include #include +#include #include #include #include #include -#include #include "base/addtorrentmanager.h" #include "base/asyncfilestorage.h" @@ -68,7 +68,7 @@ const QString RULES_FILE_NAME = u"download_rules.json"_s; namespace { - QVector rulesFromJSON(const QByteArray &jsonData) + QList rulesFromJSON(const QByteArray &jsonData) { QJsonParseError jsonError; const QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData, &jsonError); @@ -79,7 +79,7 @@ namespace throw RSS::ParsingError(RSS::AutoDownloader::tr("Invalid data format.")); const QJsonObject jsonObj {jsonDoc.object()}; - QVector rules; + QList rules; for (auto it = jsonObj.begin(); it != jsonObj.end(); ++it) { const QJsonValue jsonVal {it.value()}; @@ -123,6 +123,7 @@ AutoDownloader::AutoDownloader(IApplication *app) .arg(fileName.toString(), errorString), Log::CRITICAL); }); + m_ioThread->setObjectName("RSS::AutoDownloader m_ioThread"); m_ioThread->start(); connect(app->addTorrentManager(), &AddTorrentManager::torrentAdded diff --git a/src/base/rss/rss_autodownloader.h b/src/base/rss/rss_autodownloader.h index c70bdbf9465a..e69877fb8327 100644 --- a/src/base/rss/rss_autodownloader.h +++ b/src/base/rss/rss_autodownloader.h @@ -41,7 +41,6 @@ #include "base/settingvalue.h" #include "base/utils/thread.h" -class QThread; class QTimer; class Application; diff --git a/src/base/rss/rss_autodownloadrule.cpp b/src/base/rss/rss_autodownloadrule.cpp index b4637cf43e13..2960b984bdf4 100644 --- a/src/base/rss/rss_autodownloadrule.cpp +++ b/src/base/rss/rss_autodownloadrule.cpp @@ -396,6 +396,8 @@ bool AutoDownloadRule::matchesSmartEpisodeFilter(const QString &articleTitle) co m_dataPtr->lastComputedEpisodes.append(episodeStr + u"-REPACK"); m_dataPtr->lastComputedEpisodes.append(episodeStr + u"-PROPER"); } + + return true; } m_dataPtr->lastComputedEpisodes.append(episodeStr); @@ -468,7 +470,7 @@ QJsonObject AutoDownloadRule::toJsonObject() const // TODO: The following code is deprecated. Replace with the commented one after several releases in 4.6.x. // === BEGIN DEPRECATED CODE === // - , {S_ADD_PAUSED, toJsonValue(addTorrentParams.addPaused)} + , {S_ADD_PAUSED, toJsonValue(addTorrentParams.addStopped)} , {S_CONTENT_LAYOUT, contentLayoutToJsonValue(addTorrentParams.contentLayout)} , {S_SAVE_PATH, addTorrentParams.savePath.toString()} , {S_ASSIGNED_CATEGORY, addTorrentParams.category} @@ -525,7 +527,7 @@ AutoDownloadRule AutoDownloadRule::fromJsonObject(const QJsonObject &jsonObj, co { addTorrentParams.savePath = Path(jsonObj.value(S_SAVE_PATH).toString()); addTorrentParams.category = jsonObj.value(S_ASSIGNED_CATEGORY).toString(); - addTorrentParams.addPaused = toOptionalBool(jsonObj.value(S_ADD_PAUSED)); + addTorrentParams.addStopped = toOptionalBool(jsonObj.value(S_ADD_PAUSED)); if (!addTorrentParams.savePath.isEmpty()) addTorrentParams.useAutoTMM = false; @@ -568,7 +570,7 @@ QVariantHash AutoDownloadRule::toLegacyDict() const {u"enabled"_s, isEnabled()}, {u"category_assigned"_s, addTorrentParams.category}, {u"use_regex"_s, useRegex()}, - {u"add_paused"_s, toAddPausedLegacy(addTorrentParams.addPaused)}, + {u"add_paused"_s, toAddPausedLegacy(addTorrentParams.addStopped)}, {u"episode_filter"_s, episodeFilter()}, {u"last_match"_s, lastMatch()}, {u"ignore_days"_s, ignoreDays()}}; @@ -579,7 +581,7 @@ AutoDownloadRule AutoDownloadRule::fromLegacyDict(const QVariantHash &dict) BitTorrent::AddTorrentParams addTorrentParams; addTorrentParams.savePath = Path(dict.value(u"save_path"_s).toString()); addTorrentParams.category = dict.value(u"category_assigned"_s).toString(); - addTorrentParams.addPaused = addPausedLegacyToOptionalBool(dict.value(u"add_paused"_s).toInt()); + addTorrentParams.addStopped = addPausedLegacyToOptionalBool(dict.value(u"add_paused"_s).toInt()); if (!addTorrentParams.savePath.isEmpty()) addTorrentParams.useAutoTMM = false; diff --git a/src/base/rss/rss_feed.cpp b/src/base/rss/rss_feed.cpp index a707851dca36..7b8d4e3fa7ae 100644 --- a/src/base/rss/rss_feed.cpp +++ b/src/base/rss/rss_feed.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2015-2022 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -38,8 +39,8 @@ #include #include #include +#include #include -#include #include "base/asyncfilestorage.h" #include "base/global.h" @@ -98,7 +99,7 @@ Feed::Feed(const QUuid &uid, const QString &url, const QString &path, Session *s else connect(m_session, &Session::processingStateChanged, this, &Feed::handleSessionProcessingEnabledChanged); - Net::DownloadManager::instance()->registerSequentialService(Net::ServiceID::fromURL(m_url)); + Net::DownloadManager::instance()->registerSequentialService(Net::ServiceID::fromURL(m_url), m_session->fetchDelay()); load(); } @@ -159,6 +160,12 @@ void Feed::refresh() emit stateChanged(this); } +void Feed::updateFetchDelay() +{ + // Update delay values for registered sequential services + Net::DownloadManager::instance()->registerSequentialService(Net::ServiceID::fromURL(m_url), m_session->fetchDelay()); +} + QUuid Feed::uid() const { return m_uid; @@ -294,7 +301,7 @@ void Feed::store() m_dirty = false; m_savingTimer.stop(); - QVector articlesData; + QList articlesData; articlesData.reserve(m_articles.size()); for (Article *article :asConst(m_articles)) @@ -320,9 +327,9 @@ bool Feed::addArticle(const QVariantHash &articleData) // Insertion sort const int maxArticles = m_session->maxArticlesPerFeed(); - const auto lowerBound = std::lower_bound(m_articlesByDate.begin(), m_articlesByDate.end() - , articleData.value(Article::KeyDate).toDateTime(), Article::articleDateRecentThan); - if ((lowerBound - m_articlesByDate.begin()) >= maxArticles) + const auto lowerBound = std::lower_bound(m_articlesByDate.cbegin(), m_articlesByDate.cend() + , articleData.value(Article::KeyDate).toDateTime(), Article::articleDateRecentThan); + if ((lowerBound - m_articlesByDate.cbegin()) >= maxArticles) return false; // we reach max articles auto *article = new Article(this, articleData); @@ -388,7 +395,7 @@ int Feed::updateArticles(const QList &loadedArticles) return 0; QDateTime dummyPubDate {QDateTime::currentDateTime()}; - QVector newArticles; + QList newArticles; newArticles.reserve(loadedArticles.size()); for (QVariantHash article : loadedArticles) { @@ -509,7 +516,7 @@ void Feed::handleArticleRead(Article *article) storeDeferred(); } -void Feed::handleArticleLoadFinished(QVector articles) +void Feed::handleArticleLoadFinished(QList articles) { Q_ASSERT(m_articles.isEmpty()); Q_ASSERT(m_unreadCount == 0); diff --git a/src/base/rss/rss_feed.h b/src/base/rss/rss_feed.h index 491985c2db7a..b85231b34886 100644 --- a/src/base/rss/rss_feed.h +++ b/src/base/rss/rss_feed.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2015-2022 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -75,6 +76,7 @@ namespace RSS int unreadCount() const override; void markAsRead() override; void refresh() override; + void updateFetchDelay() override; QUuid uid() const; QString url() const; @@ -100,7 +102,7 @@ namespace RSS void handleDownloadFinished(const Net::DownloadResult &result); void handleParsingFinished(const Private::ParsingResult &result); void handleArticleRead(Article *article); - void handleArticleLoadFinished(QVector articles); + void handleArticleLoadFinished(QList articles); private: void timerEvent(QTimerEvent *event) override; diff --git a/src/base/rss/rss_folder.cpp b/src/base/rss/rss_folder.cpp index 252f4b94c627..ccf06e0efa80 100644 --- a/src/base/rss/rss_folder.cpp +++ b/src/base/rss/rss_folder.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2017 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -91,6 +92,12 @@ void Folder::refresh() item->refresh(); } +void Folder::updateFetchDelay() +{ + for (Item *item : asConst(items())) + item->updateFetchDelay(); +} + QList Folder::items() const { return m_items; diff --git a/src/base/rss/rss_folder.h b/src/base/rss/rss_folder.h index 3441e3a0213e..13b4ce150e13 100644 --- a/src/base/rss/rss_folder.h +++ b/src/base/rss/rss_folder.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2017 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -54,6 +55,7 @@ namespace RSS int unreadCount() const override; void markAsRead() override; void refresh() override; + void updateFetchDelay() override; QList items() const; diff --git a/src/base/rss/rss_item.h b/src/base/rss/rss_item.h index df7c6ff7bdfb..9dcd6f005f5f 100644 --- a/src/base/rss/rss_item.h +++ b/src/base/rss/rss_item.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2017 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -52,6 +53,7 @@ namespace RSS virtual int unreadCount() const = 0; virtual void markAsRead() = 0; virtual void refresh() = 0; + virtual void updateFetchDelay() = 0; QString path() const; QString name() const; diff --git a/src/base/rss/rss_parser.cpp b/src/base/rss/rss_parser.cpp index 7c9acf4ca200..ec646ecc35c1 100644 --- a/src/base/rss/rss_parser.cpp +++ b/src/base/rss/rss_parser.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,13 +29,11 @@ #include "rss_parser.h" -#include #include -#include #include -#include #include #include +#include #include #include #include @@ -359,7 +357,7 @@ namespace }; // Ported to Qt from KDElibs4 - QDateTime parseDate(const QString &string) + QDateTime parseDate(const QString &string, const QDateTime &fallbackDate) { const char16_t shortDay[][4] = { @@ -382,7 +380,7 @@ namespace const QString str = string.trimmed(); if (str.isEmpty()) - return QDateTime::currentDateTime(); + return fallbackDate; int nyear = 6; // indexes within string to values int nmonth = 4; @@ -402,14 +400,14 @@ namespace const bool h1 = (parts[3] == u"-"); const bool h2 = (parts[5] == u"-"); if (h1 != h2) - return QDateTime::currentDateTime(); + return fallbackDate; } else { // Check for the obsolete form "Wdy Mon DD HH:MM:SS YYYY" rx = QRegularExpression {u"^([A-Z][a-z]+)\\s+(\\S+)\\s+(\\d\\d)\\s+(\\d\\d):(\\d\\d):(\\d\\d)\\s+(\\d\\d\\d\\d)$"_s}; if (str.indexOf(rx, 0, &rxMatch) != 0) - return QDateTime::currentDateTime(); + return fallbackDate; nyear = 7; nmonth = 2; @@ -427,14 +425,14 @@ namespace const int hour = parts[nhour].toInt(&ok[2]); const int minute = parts[nmin].toInt(&ok[3]); if (!ok[0] || !ok[1] || !ok[2] || !ok[3]) - return QDateTime::currentDateTime(); + return fallbackDate; int second = 0; if (!parts[nsec].isEmpty()) { second = parts[nsec].toInt(&ok[0]); if (!ok[0]) - return QDateTime::currentDateTime(); + return fallbackDate; } const bool leapSecond = (second == 60); @@ -518,21 +516,21 @@ namespace const QDate qDate(year, month + 1, day); // convert date, and check for out-of-range if (!qDate.isValid()) - return QDateTime::currentDateTime(); + return fallbackDate; const QTime qTime(hour, minute, second); - QDateTime result(qDate, qTime, Qt::UTC); + QDateTime result(qDate, qTime, QTimeZone::UTC); if (offset) result = result.addSecs(-offset); if (!result.isValid()) - return QDateTime::currentDateTime(); // invalid date/time + return fallbackDate; // invalid date/time if (leapSecond) { // Validate a leap second time. Leap seconds are inserted after 23:59:59 UTC. // Convert the time to UTC and check that it is 00:00:00. if ((hour*3600 + minute*60 + 60 - offset + 86400*5) % 86400) // (max abs(offset) is 100 hours) - return QDateTime::currentDateTime(); // the time isn't the last second of the day + return fallbackDate; // the time isn't the last second of the day } return result; @@ -550,6 +548,7 @@ RSS::Private::Parser::Parser(const QString &lastBuildDate) void RSS::Private::Parser::parse(const QByteArray &feedData) { QXmlStreamReader xml {feedData}; + m_fallbackDate = QDateTime::currentDateTime(); XmlStreamEntityResolver resolver; xml.setEntityResolver(&resolver); bool foundChannel = false; @@ -641,7 +640,7 @@ void RSS::Private::Parser::parseRssArticle(QXmlStreamReader &xml) } else if (name == u"pubDate") { - article[Article::KeyDate] = parseDate(xml.readElementText().trimmed()); + article[Article::KeyDate] = parseDate(xml.readElementText().trimmed(), m_fallbackDate); } else if (name == u"author") { @@ -755,7 +754,7 @@ void RSS::Private::Parser::parseAtomArticle(QXmlStreamReader &xml) { // ATOM uses standard compliant date, don't do fancy stuff const QDateTime articleDate = QDateTime::fromString(xml.readElementText().trimmed(), Qt::ISODate); - article[Article::KeyDate] = (articleDate.isValid() ? articleDate : QDateTime::currentDateTime()); + article[Article::KeyDate] = (articleDate.isValid() ? articleDate : m_fallbackDate); } else if (name == u"author") { diff --git a/src/base/rss/rss_parser.h b/src/base/rss/rss_parser.h index 7abfeeb2edf8..17d4a2464225 100644 --- a/src/base/rss/rss_parser.h +++ b/src/base/rss/rss_parser.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,6 +29,7 @@ #pragma once +#include #include #include #include @@ -66,6 +67,7 @@ namespace RSS::Private void parseAtomChannel(QXmlStreamReader &xml); void addArticle(QVariantHash article); + QDateTime m_fallbackDate; QString m_baseUrl; ParsingResult m_result; QSet m_articleIDs; diff --git a/src/base/rss/rss_session.cpp b/src/base/rss/rss_session.cpp index ec4959eebd34..e91d3d70c79d 100644 --- a/src/base/rss/rss_session.cpp +++ b/src/base/rss/rss_session.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2017 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -62,6 +63,7 @@ QPointer Session::m_instance = nullptr; Session::Session() : m_storeProcessingEnabled(u"RSS/Session/EnableProcessing"_s) , m_storeRefreshInterval(u"RSS/Session/RefreshInterval"_s, 30) + , m_storeFetchDelay(u"RSS/Session/FetchDelay"_s, 2) , m_storeMaxArticlesPerFeed(u"RSS/Session/MaxArticlesPerFeed"_s, 50) , m_workingThread(new QThread) { @@ -88,6 +90,7 @@ Session::Session() m_itemsByPath.insert(u""_s, new Folder); // root folder + m_workingThread->setObjectName("RSS::Session m_workingThread"); m_workingThread->start(); load(); @@ -525,6 +528,19 @@ void Session::setRefreshInterval(const int refreshInterval) } } +std::chrono::seconds Session::fetchDelay() const +{ + return std::chrono::seconds(m_storeFetchDelay); +} + +void Session::setFetchDelay(const std::chrono::seconds delay) +{ + if (delay == fetchDelay()) + return; + m_storeFetchDelay = static_cast(delay.count()); + rootFolder()->updateFetchDelay(); +} + QThread *Session::workingThread() const { return m_workingThread.get(); diff --git a/src/base/rss/rss_session.h b/src/base/rss/rss_session.h index 9fee14c1ef81..97241c56f870 100644 --- a/src/base/rss/rss_session.h +++ b/src/base/rss/rss_session.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2017 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * Copyright (C) 2010 Arnaud Demaiziere @@ -68,6 +69,8 @@ * 3. Feed is JSON object (keys are property names, values are property values; 'uid' and 'url' are required) */ +#include + #include #include #include @@ -114,6 +117,9 @@ namespace RSS int refreshInterval() const; void setRefreshInterval(int refreshInterval); + std::chrono::seconds fetchDelay() const; + void setFetchDelay(std::chrono::seconds delay); + nonstd::expected addFolder(const QString &path); nonstd::expected addFeed(const QString &url, const QString &path); nonstd::expected setFeedURL(const QString &path, const QString &url); @@ -161,6 +167,7 @@ namespace RSS CachedSettingValue m_storeProcessingEnabled; CachedSettingValue m_storeRefreshInterval; + CachedSettingValue m_storeFetchDelay; CachedSettingValue m_storeMaxArticlesPerFeed; Utils::Thread::UniquePtr m_workingThread; AsyncFileStorage *m_confFileStorage = nullptr; diff --git a/src/base/search/searchdownloadhandler.cpp b/src/base/search/searchdownloadhandler.cpp index d4de1c10b843..436637183c08 100644 --- a/src/base/search/searchdownloadhandler.cpp +++ b/src/base/search/searchdownloadhandler.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018 Vladimir Golovnev + * Copyright (C) 2018-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -36,10 +36,10 @@ #include "base/utils/fs.h" #include "searchpluginmanager.h" -SearchDownloadHandler::SearchDownloadHandler(const QString &siteUrl, const QString &url, SearchPluginManager *manager) - : QObject {manager} +SearchDownloadHandler::SearchDownloadHandler(const QString &pluginName, const QString &url, SearchPluginManager *manager) + : QObject(manager) , m_manager {manager} - , m_downloadProcess {new QProcess {this}} + , m_downloadProcess {new QProcess(this)} { m_downloadProcess->setEnvironment(QProcess::systemEnvironment()); connect(m_downloadProcess, qOverload(&QProcess::finished) @@ -48,7 +48,7 @@ SearchDownloadHandler::SearchDownloadHandler(const QString &siteUrl, const QStri { Utils::ForeignApps::PYTHON_ISOLATE_MODE_FLAG, (SearchPluginManager::engineLocation() / Path(u"nova2dl.py"_s)).toString(), - siteUrl, + pluginName, url }; // Launch search diff --git a/src/base/search/searchdownloadhandler.h b/src/base/search/searchdownloadhandler.h index 4fa51a43c117..426560e0ad09 100644 --- a/src/base/search/searchdownloadhandler.h +++ b/src/base/search/searchdownloadhandler.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018 Vladimir Golovnev + * Copyright (C) 2018-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -41,7 +41,7 @@ class SearchDownloadHandler : public QObject friend class SearchPluginManager; - SearchDownloadHandler(const QString &siteUrl, const QString &url, SearchPluginManager *manager); + SearchDownloadHandler(const QString &pluginName, const QString &url, SearchPluginManager *manager); signals: void downloadFinished(const QString &path); diff --git a/src/base/search/searchhandler.cpp b/src/base/search/searchhandler.cpp index 2fe4812e922a..fa43ef8802cb 100644 --- a/src/base/search/searchhandler.cpp +++ b/src/base/search/searchhandler.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -31,10 +31,10 @@ #include +#include #include #include #include -#include #include "base/global.h" #include "base/path.h" @@ -55,18 +55,19 @@ namespace PL_LEECHS, PL_ENGINE_URL, PL_DESC_LINK, + PL_PUB_DATE, NB_PLUGIN_COLUMNS }; } SearchHandler::SearchHandler(const QString &pattern, const QString &category, const QStringList &usedPlugins, SearchPluginManager *manager) - : QObject {manager} + : QObject(manager) , m_pattern {pattern} , m_category {category} , m_usedPlugins {usedPlugins} , m_manager {manager} - , m_searchProcess {new QProcess {this}} - , m_searchTimeout {new QTimer {this}} + , m_searchProcess {new QProcess(this)} + , m_searchTimeout {new QTimer(this)} { // Load environment variables (proxy) m_searchProcess->setEnvironment(QProcess::systemEnvironment()); @@ -144,7 +145,7 @@ void SearchHandler::readSearchOutput() lines.prepend(m_searchResultLineTruncated + lines.takeFirst()); m_searchResultLineTruncated = lines.takeLast().trimmed(); - QVector searchResultList; + QList searchResultList; searchResultList.reserve(lines.size()); for (const QByteArray &line : asConst(lines)) @@ -176,7 +177,8 @@ bool SearchHandler::parseSearchResult(const QStringView line, SearchResult &sear const QList parts = line.split(u'|'); const int nbFields = parts.size(); - if (nbFields < (NB_PLUGIN_COLUMNS - 1)) return false; // -1 because desc_link is optional + if (nbFields <= PL_ENGINE_URL) + return false; // Anything after ENGINE_URL is optional searchResult = SearchResult(); searchResult.fileUrl = parts.at(PL_DL_LINK).trimmed().toString(); // download URL @@ -193,10 +195,19 @@ bool SearchHandler::parseSearchResult(const QStringView line, SearchResult &sear if (!ok || (searchResult.nbLeechers < 0)) searchResult.nbLeechers = -1; - searchResult.siteUrl = parts.at(PL_ENGINE_URL).trimmed().toString(); // Search site URL - if (nbFields == NB_PLUGIN_COLUMNS) + searchResult.siteUrl = parts.at(PL_ENGINE_URL).trimmed().toString(); // Search engine site URL + searchResult.engineName = m_manager->pluginNameBySiteURL(searchResult.siteUrl); // Search engine name + + if (nbFields > PL_DESC_LINK) searchResult.descrLink = parts.at(PL_DESC_LINK).trimmed().toString(); // Description Link + if (nbFields > PL_PUB_DATE) + { + const qint64 secs = parts.at(PL_PUB_DATE).trimmed().toLongLong(&ok); + if (ok && (secs > 0)) + searchResult.pubDate = QDateTime::fromSecsSinceEpoch(secs); // Date + } + return true; } diff --git a/src/base/search/searchhandler.h b/src/base/search/searchhandler.h index b11a24de7003..40cf58754e3c 100644 --- a/src/base/search/searchhandler.h +++ b/src/base/search/searchhandler.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -30,6 +30,7 @@ #pragma once #include +#include #include #include #include @@ -45,8 +46,10 @@ struct SearchResult qlonglong fileSize = 0; qlonglong nbSeeders = 0; qlonglong nbLeechers = 0; + QString engineName; QString siteUrl; QString descrLink; + QDateTime pubDate; }; class SearchPluginManager; @@ -72,7 +75,7 @@ class SearchHandler : public QObject signals: void searchFinished(bool cancelled = false); void searchFailed(); - void newSearchResults(const QVector &results); + void newSearchResults(const QList &results); private: void readSearchOutput(); diff --git a/src/base/search/searchpluginmanager.cpp b/src/base/search/searchpluginmanager.cpp index 2127746d3860..09b7a67cc8e4 100644 --- a/src/base/search/searchpluginmanager.cpp +++ b/src/base/search/searchpluginmanager.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -74,12 +74,11 @@ namespace } // python 2: remove "*.pyc" files - const QStringList files = QDir(dir.data()).entryList(QDir::Files); - for (const QString &file : files) + QDirIterator it {dir.data(), {u"*.pyc"_s}, QDir::Files}; + while (it.hasNext()) { - const Path path {file}; - if (path.hasExtension(u".pyc"_s)) - Utils::Fs::removeFile(path); + const QString filePath = it.next(); + Utils::Fs::removeFile(Path(filePath)); } } } @@ -182,6 +181,17 @@ PluginInfo *SearchPluginManager::pluginInfo(const QString &name) const return m_plugins.value(name); } +QString SearchPluginManager::pluginNameBySiteURL(const QString &siteURL) const +{ + for (const PluginInfo *plugin : asConst(m_plugins)) + { + if (plugin->url == siteURL) + return plugin->name; + } + + return {}; +} + void SearchPluginManager::enablePlugin(const QString &name, const bool enabled) { PluginInfo *plugin = m_plugins.value(name, nullptr); @@ -298,11 +308,13 @@ bool SearchPluginManager::uninstallPlugin(const QString &name) clearPythonCache(engineLocation()); // remove it from hard drive - const Path pluginsPath = pluginsLocation(); - const QStringList filters {name + u".*"}; - const QStringList files = QDir(pluginsPath.data()).entryList(filters, QDir::Files, QDir::Unsorted); - for (const QString &file : files) - Utils::Fs::removeFile(pluginsPath / Path(file)); + QDirIterator iter {pluginsLocation().data(), {name + u".*"}, QDir::Files}; + while (iter.hasNext()) + { + const QString filePath = iter.next(); + Utils::Fs::removeFile(Path(filePath)); + } + // Remove it from supported engines delete m_plugins.take(name); @@ -337,9 +349,9 @@ void SearchPluginManager::checkForUpdates() , this, &SearchPluginManager::versionInfoDownloadFinished); } -SearchDownloadHandler *SearchPluginManager::downloadTorrent(const QString &siteUrl, const QString &url) +SearchDownloadHandler *SearchPluginManager::downloadTorrent(const QString &pluginName, const QString &url) { - return new SearchDownloadHandler {siteUrl, url, this}; + return new SearchDownloadHandler(pluginName, url, this); } SearchHandler *SearchPluginManager::startSearch(const QString &pattern, const QString &category, const QStringList &usedPlugins) @@ -347,7 +359,7 @@ SearchHandler *SearchPluginManager::startSearch(const QString &pattern, const QS // No search pattern entered Q_ASSERT(!pattern.isEmpty()); - return new SearchHandler {pattern, category, usedPlugins, this}; + return new SearchHandler(pattern, category, usedPlugins, this); } QString SearchPluginManager::categoryFullName(const QString &categoryName) @@ -355,14 +367,14 @@ QString SearchPluginManager::categoryFullName(const QString &categoryName) const QHash categoryTable { {u"all"_s, tr("All categories")}, + {u"anime"_s, tr("Anime")}, + {u"books"_s, tr("Books")}, + {u"games"_s, tr("Games")}, {u"movies"_s, tr("Movies")}, - {u"tv"_s, tr("TV shows")}, {u"music"_s, tr("Music")}, - {u"games"_s, tr("Games")}, - {u"anime"_s, tr("Anime")}, - {u"software"_s, tr("Software")}, {u"pictures"_s, tr("Pictures")}, - {u"books"_s, tr("Books")} + {u"software"_s, tr("Software")}, + {u"tv"_s, tr("TV shows")} }; return categoryTable.value(categoryName); } diff --git a/src/base/search/searchpluginmanager.h b/src/base/search/searchpluginmanager.h index 86038ad66d2e..72cf0f146bae 100644 --- a/src/base/search/searchpluginmanager.h +++ b/src/base/search/searchpluginmanager.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015, 2018 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -75,6 +75,7 @@ class SearchPluginManager final : public QObject QStringList supportedCategories() const; QStringList getPluginCategories(const QString &pluginName) const; PluginInfo *pluginInfo(const QString &name) const; + QString pluginNameBySiteURL(const QString &siteURL) const; void enablePlugin(const QString &name, bool enabled = true); void updatePlugin(const QString &name); @@ -84,7 +85,7 @@ class SearchPluginManager final : public QObject void checkForUpdates(); SearchHandler *startSearch(const QString &pattern, const QString &category, const QStringList &usedPlugins); - SearchDownloadHandler *downloadTorrent(const QString &siteUrl, const QString &url); + SearchDownloadHandler *downloadTorrent(const QString &pluginName, const QString &url); static PluginVersion getPluginVersion(const Path &filePath); static QString categoryFullName(const QString &categoryName); diff --git a/src/base/settingsstorage.cpp b/src/base/settingsstorage.cpp index ed8f03b0d7a4..c6006beb748c 100644 --- a/src/base/settingsstorage.cpp +++ b/src/base/settingsstorage.cpp @@ -170,7 +170,7 @@ bool SettingsStorage::writeNativeSettings() const // between deleting the file and recreating it. This is a safety measure. // Write everything to qBittorrent_new.ini/qBittorrent_new.conf and if it succeeds // replace qBittorrent.ini/qBittorrent.conf with it. - for (auto i = m_data.begin(); i != m_data.end(); ++i) + for (auto i = m_data.cbegin(); i != m_data.cend(); ++i) nativeSettings->setValue(i.key(), i.value()); nativeSettings->sync(); // Important to get error status @@ -224,3 +224,9 @@ bool SettingsStorage::hasKey(const QString &key) const const QReadLocker locker {&m_lock}; return m_data.contains(key); } + +bool SettingsStorage::isEmpty() const +{ + const QReadLocker locker {&m_lock}; + return m_data.isEmpty(); +} diff --git a/src/base/settingsstorage.h b/src/base/settingsstorage.h index 7abbdae46df9..9163d605ae17 100644 --- a/src/base/settingsstorage.h +++ b/src/base/settingsstorage.h @@ -109,6 +109,7 @@ class SettingsStorage final : public QObject void removeValue(const QString &key); bool hasKey(const QString &key) const; + bool isEmpty() const; public slots: bool save(); diff --git a/src/base/tag.cpp b/src/base/tag.cpp new file mode 100644 index 000000000000..06c1efccf16c --- /dev/null +++ b/src/base/tag.cpp @@ -0,0 +1,91 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "tag.h" + +#include + +#include "base/concepts/stringable.h" + +namespace +{ + QString cleanTag(const QString &tag) + { + return tag.trimmed(); + } +} + +// `Tag` should satisfy `Stringable` concept in order to be stored in settings as string +static_assert(Stringable); + +Tag::Tag(const QString &tagStr) + : m_tagStr {cleanTag(tagStr)} +{ +} + +Tag::Tag(const std::string &tagStr) + : Tag(QString::fromStdString(tagStr)) +{ +} + +bool Tag::isValid() const +{ + if (isEmpty()) + return false; + + return !m_tagStr.contains(u','); +} + +bool Tag::isEmpty() const +{ + return m_tagStr.isEmpty(); +} + +QString Tag::toString() const noexcept +{ + return m_tagStr; +} + +Tag::operator QString() const noexcept +{ + return toString(); +} + +QDataStream &operator<<(QDataStream &out, const Tag &tag) +{ + out << tag.toString(); + return out; +} + +QDataStream &operator>>(QDataStream &in, Tag &tag) +{ + QString tagStr; + in >> tagStr; + tag = Tag(tagStr); + return in; +} diff --git a/src/base/tag.h b/src/base/tag.h new file mode 100644 index 000000000000..35fbca1f8412 --- /dev/null +++ b/src/base/tag.h @@ -0,0 +1,67 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include +#include + +class Tag final +{ +public: + Tag() = default; + + explicit Tag(const QString &tagStr); + explicit Tag(const std::string &tagStr); + + bool isValid() const; + bool isEmpty() const; + + QString toString() const noexcept; + + explicit operator QString() const noexcept; + + friend bool operator==(const Tag &, const Tag &) = default; + +private: + QString m_tagStr; +}; + +Q_DECLARE_METATYPE(Tag) + +QDataStream &operator<<(QDataStream &out, const Tag &tag); +QDataStream &operator>>(QDataStream &in, Tag &tag); + +template <> +struct std::hash +{ + std::size_t operator()(const Tag &tag, const std::size_t seed = 0) const noexcept + { + return qHash(tag.toString(), seed); + } +}; diff --git a/src/base/tagset.cpp b/src/base/tagset.cpp index a63156d0fdf3..2691ba6dbc2d 100644 --- a/src/base/tagset.cpp +++ b/src/base/tagset.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2021 Mike Tzou (Chocobo1) * * This program is free software; you can redistribute it and/or @@ -28,10 +29,10 @@ #include "tagset.h" -bool TagLessThan::operator()(const QString &left, const QString &right) const +bool TagLessThan::operator()(const Tag &left, const Tag &right) const { - const int result = m_compare(left, right); + const int result = m_compare(left.toString(), right.toString()); if (result != 0) return (result < 0); - return (m_subCompare(left, right) < 0); + return (m_subCompare(left.toString(), right.toString()) < 0); } diff --git a/src/base/tagset.h b/src/base/tagset.h index 329bc59ded0e..1f69d4011c68 100644 --- a/src/base/tagset.h +++ b/src/base/tagset.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2021 Mike Tzou (Chocobo1) * * This program is free software; you can redistribute it and/or @@ -29,21 +30,21 @@ #pragma once #include -#include -#include "base/orderedset.h" -#include "base/utils/compare.h" +#include "orderedset.h" +#include "tag.h" +#include "utils/compare.h" class TagLessThan { public: - bool operator()(const QString &left, const QString &right) const; + bool operator()(const Tag &left, const Tag &right) const; private: Utils::Compare::NaturalCompare m_compare; Utils::Compare::NaturalCompare m_subCompare; }; -using TagSet = OrderedSet; +using TagSet = OrderedSet; Q_DECLARE_METATYPE(TagSet) diff --git a/src/base/torrentfileswatcher.cpp b/src/base/torrentfileswatcher.cpp index 1cfcd7a4b90a..5fa224d053ba 100644 --- a/src/base/torrentfileswatcher.cpp +++ b/src/base/torrentfileswatcher.cpp @@ -90,7 +90,7 @@ class TorrentFilesWatcher::Worker final : public QObject Q_DISABLE_COPY_MOVE(Worker) public: - Worker(); + Worker(QFileSystemWatcher *watcher); public slots: void setWatchedFolder(const Path &path, const TorrentFilesWatcher::WatchedFolderOptions &options); @@ -140,35 +140,16 @@ TorrentFilesWatcher *TorrentFilesWatcher::instance() TorrentFilesWatcher::TorrentFilesWatcher(QObject *parent) : QObject(parent) , m_ioThread {new QThread} + , m_asyncWorker {new TorrentFilesWatcher::Worker(new QFileSystemWatcher(this))} { - const auto *btSession = BitTorrent::Session::instance(); - if (btSession->isRestored()) - initWorker(); - else - connect(btSession, &BitTorrent::Session::restored, this, &TorrentFilesWatcher::initWorker); - - load(); -} - -void TorrentFilesWatcher::initWorker() -{ - Q_ASSERT(!m_asyncWorker); - - m_asyncWorker = new TorrentFilesWatcher::Worker; - connect(m_asyncWorker, &TorrentFilesWatcher::Worker::torrentFound, this, &TorrentFilesWatcher::onTorrentFound); m_asyncWorker->moveToThread(m_ioThread.get()); - connect(m_ioThread.get(), &QObject::destroyed, this, [this] { delete m_asyncWorker; }); + connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater); + m_ioThread->setObjectName("TorrentFilesWatcher m_ioThread"); m_ioThread->start(); - for (auto it = m_watchedFolders.cbegin(); it != m_watchedFolders.cend(); ++it) - { - QMetaObject::invokeMethod(m_asyncWorker, [this, path = it.key(), options = it.value()]() - { - m_asyncWorker->setWatchedFolder(path, options); - }); - } + load(); } void TorrentFilesWatcher::load() @@ -299,13 +280,10 @@ void TorrentFilesWatcher::doSetWatchedFolder(const Path &path, const WatchedFold m_watchedFolders[path] = options; - if (m_asyncWorker) + QMetaObject::invokeMethod(m_asyncWorker, [this, path, options] { - QMetaObject::invokeMethod(m_asyncWorker, [this, path, options]() - { - m_asyncWorker->setWatchedFolder(path, options); - }); - } + m_asyncWorker->setWatchedFolder(path, options); + }); emit watchedFolderSet(path, options); } @@ -334,8 +312,8 @@ void TorrentFilesWatcher::onTorrentFound(const BitTorrent::TorrentDescriptor &to BitTorrent::Session::instance()->addTorrent(torrentDescr, addTorrentParams); } -TorrentFilesWatcher::Worker::Worker() - : m_watcher {new QFileSystemWatcher(this)} +TorrentFilesWatcher::Worker::Worker(QFileSystemWatcher *watcher) + : m_watcher {watcher} , m_watchTimer {new QTimer(this)} , m_retryTorrentTimer {new QTimer(this)} { @@ -466,10 +444,10 @@ void TorrentFilesWatcher::Worker::processFolder(const Path &path, const Path &wa if (options.recursive) { - QDirIterator dirIter {path.data(), (QDir::Dirs | QDir::NoDot | QDir::NoDotDot)}; - while (dirIter.hasNext()) + QDirIterator iter {path.data(), (QDir::Dirs | QDir::NoDotAndDotDot)}; + while (iter.hasNext()) { - const Path folderPath {dirIter.next()}; + const Path folderPath {iter.next()}; // Skip processing of subdirectory that is explicitly set as watched folder if (!m_watchedFolders.contains(folderPath)) processFolder(folderPath, watchedFolderPath, options); diff --git a/src/base/torrentfileswatcher.h b/src/base/torrentfileswatcher.h index 1c67ecf52586..9b23615759e6 100644 --- a/src/base/torrentfileswatcher.h +++ b/src/base/torrentfileswatcher.h @@ -36,8 +36,6 @@ #include "base/path.h" #include "base/utils/thread.h" -class QThread; - /* * Watches the configured directories for new .torrent files in order * to add torrents to BitTorrent session. Supports Network File System @@ -73,7 +71,6 @@ private slots: private: explicit TorrentFilesWatcher(QObject *parent = nullptr); - void initWorker(); void load(); void loadLegacy(); void store() const; diff --git a/src/base/torrentfilter.cpp b/src/base/torrentfilter.cpp index 1c81da452854..e1a6243b1856 100644 --- a/src/base/torrentfilter.cpp +++ b/src/base/torrentfilter.cpp @@ -33,13 +33,13 @@ const std::optional TorrentFilter::AnyCategory; const std::optional TorrentFilter::AnyID; -const std::optional TorrentFilter::AnyTag; +const std::optional TorrentFilter::AnyTag; const TorrentFilter TorrentFilter::DownloadingTorrent(TorrentFilter::Downloading); const TorrentFilter TorrentFilter::SeedingTorrent(TorrentFilter::Seeding); const TorrentFilter TorrentFilter::CompletedTorrent(TorrentFilter::Completed); -const TorrentFilter TorrentFilter::PausedTorrent(TorrentFilter::Paused); -const TorrentFilter TorrentFilter::ResumedTorrent(TorrentFilter::Resumed); +const TorrentFilter TorrentFilter::StoppedTorrent(TorrentFilter::Stopped); +const TorrentFilter TorrentFilter::RunningTorrent(TorrentFilter::Running); const TorrentFilter TorrentFilter::ActiveTorrent(TorrentFilter::Active); const TorrentFilter TorrentFilter::InactiveTorrent(TorrentFilter::Inactive); const TorrentFilter TorrentFilter::StalledTorrent(TorrentFilter::Stalled); @@ -52,19 +52,21 @@ const TorrentFilter TorrentFilter::ErroredTorrent(TorrentFilter::Errored); using BitTorrent::Torrent; TorrentFilter::TorrentFilter(const Type type, const std::optional &idSet - , const std::optional &category, const std::optional &tag) - : m_type(type) - , m_category(category) - , m_tag(tag) - , m_idSet(idSet) + , const std::optional &category, const std::optional &tag, const std::optional isPrivate) + : m_type {type} + , m_category {category} + , m_tag {tag} + , m_idSet {idSet} + , m_private {isPrivate} { } TorrentFilter::TorrentFilter(const QString &filter, const std::optional &idSet - , const std::optional &category, const std::optional &tag) - : m_category(category) - , m_tag(tag) - , m_idSet(idSet) + , const std::optional &category, const std::optional &tag, const std::optional isPrivate) + : m_category {category} + , m_tag {tag} + , m_idSet {idSet} + , m_private {isPrivate} { setTypeByName(filter); } @@ -90,10 +92,10 @@ bool TorrentFilter::setTypeByName(const QString &filter) type = Seeding; else if (filter == u"completed") type = Completed; - else if (filter == u"paused") - type = Paused; - else if (filter == u"resumed") - type = Resumed; + else if (filter == u"stopped") + type = Stopped; + else if (filter == u"running") + type = Running; else if (filter == u"active") type = Active; else if (filter == u"inactive") @@ -136,7 +138,7 @@ bool TorrentFilter::setCategory(const std::optional &category) return false; } -bool TorrentFilter::setTag(const std::optional &tag) +bool TorrentFilter::setTag(const std::optional &tag) { if (m_tag != tag) { @@ -147,19 +149,31 @@ bool TorrentFilter::setTag(const std::optional &tag) return false; } +bool TorrentFilter::setPrivate(const std::optional isPrivate) +{ + if (m_private != isPrivate) + { + m_private = isPrivate; + return true; + } + + return false; +} + bool TorrentFilter::match(const Torrent *const torrent) const { if (!torrent) return false; - return (matchState(torrent) && matchHash(torrent) && matchCategory(torrent) && matchTag(torrent)); + return (matchState(torrent) && matchHash(torrent) && matchCategory(torrent) && matchTag(torrent) && matchPrivate(torrent)); } bool TorrentFilter::matchState(const BitTorrent::Torrent *const torrent) const { + const BitTorrent::TorrentState state = torrent->state(); + switch (m_type) { case All: - default: return true; case Downloading: return torrent->isDownloading(); @@ -167,30 +181,35 @@ bool TorrentFilter::matchState(const BitTorrent::Torrent *const torrent) const return torrent->isUploading(); case Completed: return torrent->isCompleted(); - case Paused: - return torrent->isPaused(); - case Resumed: - return torrent->isResumed(); + case Stopped: + return torrent->isStopped(); + case Running: + return torrent->isRunning(); case Active: return torrent->isActive(); case Inactive: return torrent->isInactive(); case Stalled: - return (torrent->state() == BitTorrent::TorrentState::StalledUploading) - || (torrent->state() == BitTorrent::TorrentState::StalledDownloading); + return (state == BitTorrent::TorrentState::StalledUploading) + || (state == BitTorrent::TorrentState::StalledDownloading); case StalledUploading: - return torrent->state() == BitTorrent::TorrentState::StalledUploading; + return state == BitTorrent::TorrentState::StalledUploading; case StalledDownloading: - return torrent->state() == BitTorrent::TorrentState::StalledDownloading; + return state == BitTorrent::TorrentState::StalledDownloading; case Checking: - return (torrent->state() == BitTorrent::TorrentState::CheckingUploading) - || (torrent->state() == BitTorrent::TorrentState::CheckingDownloading) - || (torrent->state() == BitTorrent::TorrentState::CheckingResumeData); + return (state == BitTorrent::TorrentState::CheckingUploading) + || (state == BitTorrent::TorrentState::CheckingDownloading) + || (state == BitTorrent::TorrentState::CheckingResumeData); case Moving: return torrent->isMoving(); case Errored: return torrent->isErrored(); + default: + Q_UNREACHABLE(); + break; } + + return false; } bool TorrentFilter::matchHash(const BitTorrent::Torrent *const torrent) const @@ -220,3 +239,11 @@ bool TorrentFilter::matchTag(const BitTorrent::Torrent *const torrent) const return torrent->hasTag(*m_tag); } + +bool TorrentFilter::matchPrivate(const BitTorrent::Torrent *const torrent) const +{ + if (!m_private) + return true; + + return m_private == torrent->isPrivate(); +} diff --git a/src/base/torrentfilter.h b/src/base/torrentfilter.h index 3358ef380881..39fd3e06f003 100644 --- a/src/base/torrentfilter.h +++ b/src/base/torrentfilter.h @@ -34,6 +34,7 @@ #include #include "base/bittorrent/infohash.h" +#include "base/tag.h" namespace BitTorrent { @@ -51,8 +52,8 @@ class TorrentFilter Downloading, Seeding, Completed, - Resumed, - Paused, + Running, + Stopped, Active, Inactive, Stalled, @@ -60,19 +61,21 @@ class TorrentFilter StalledDownloading, Checking, Moving, - Errored + Errored, + + _Count }; // These mean any permutation, including no category / tag. static const std::optional AnyCategory; static const std::optional AnyID; - static const std::optional AnyTag; + static const std::optional AnyTag; static const TorrentFilter DownloadingTorrent; static const TorrentFilter SeedingTorrent; static const TorrentFilter CompletedTorrent; - static const TorrentFilter PausedTorrent; - static const TorrentFilter ResumedTorrent; + static const TorrentFilter StoppedTorrent; + static const TorrentFilter RunningTorrent; static const TorrentFilter ActiveTorrent; static const TorrentFilter InactiveTorrent; static const TorrentFilter StalledTorrent; @@ -84,16 +87,24 @@ class TorrentFilter TorrentFilter() = default; // category & tags: pass empty string for uncategorized / untagged torrents. - TorrentFilter(Type type, const std::optional &idSet = AnyID - , const std::optional &category = AnyCategory, const std::optional &tag = AnyTag); - TorrentFilter(const QString &filter, const std::optional &idSet = AnyID - , const std::optional &category = AnyCategory, const std::optional &tags = AnyTag); + TorrentFilter(Type type + , const std::optional &idSet = AnyID + , const std::optional &category = AnyCategory + , const std::optional &tag = AnyTag + , std::optional isPrivate = {}); + TorrentFilter(const QString &filter + , const std::optional &idSet = AnyID + , const std::optional &category = AnyCategory + , const std::optional &tags = AnyTag + , std::optional isPrivate = {}); + bool setType(Type type); bool setTypeByName(const QString &filter); bool setTorrentIDSet(const std::optional &idSet); bool setCategory(const std::optional &category); - bool setTag(const std::optional &tag); + bool setTag(const std::optional &tag); + bool setPrivate(std::optional isPrivate); bool match(const BitTorrent::Torrent *torrent) const; @@ -102,9 +113,11 @@ class TorrentFilter bool matchHash(const BitTorrent::Torrent *torrent) const; bool matchCategory(const BitTorrent::Torrent *torrent) const; bool matchTag(const BitTorrent::Torrent *torrent) const; + bool matchPrivate(const BitTorrent::Torrent *torrent) const; Type m_type {All}; std::optional m_category; - std::optional m_tag; + std::optional m_tag; std::optional m_idSet; + std::optional m_private; }; diff --git a/src/base/utils/compare.cpp b/src/base/utils/compare.cpp index 536dd147ce43..aca03e1a631e 100644 --- a/src/base/utils/compare.cpp +++ b/src/base/utils/compare.cpp @@ -31,7 +31,6 @@ #include #include -#ifndef QBT_USE_QCOLLATOR int Utils::Compare::naturalCompare(const QString &left, const QString &right, const Qt::CaseSensitivity caseSensitivity) { // Return value <0: `left` is smaller than `right` @@ -45,8 +44,8 @@ int Utils::Compare::naturalCompare(const QString &left, const QString &right, co if ((posL == left.size()) || (posR == right.size())) return (left.size() - right.size()); // when a shorter string is another string's prefix, shorter string place before longer string - const QChar leftChar = (caseSensitivity == Qt::CaseSensitive) ? left[posL] : left[posL].toLower(); - const QChar rightChar = (caseSensitivity == Qt::CaseSensitive) ? right[posR] : right[posR].toLower(); + const QChar leftChar = (caseSensitivity == Qt::CaseSensitive) ? left[posL] : left[posL].toCaseFolded(); + const QChar rightChar = (caseSensitivity == Qt::CaseSensitive) ? right[posR] : right[posR].toCaseFolded(); // Compare only non-digits. // Numbers should be compared as a whole // otherwise the string->int conversion can yield a wrong value @@ -89,8 +88,7 @@ int Utils::Compare::naturalCompare(const QString &left, const QString &right, co } else { - return (leftChar.unicode() - rightChar.unicode()); + return QString::localeAwareCompare(leftChar, rightChar); } } } -#endif diff --git a/src/base/utils/compare.h b/src/base/utils/compare.h index aa63d102b595..bf222fc1eefd 100644 --- a/src/base/utils/compare.h +++ b/src/base/utils/compare.h @@ -31,20 +31,38 @@ #include #include -#if !defined(Q_OS_WIN) && (!defined(Q_OS_UNIX) || defined(Q_OS_MACOS) || defined(QT_FEATURE_icu)) -#define QBT_USE_QCOLLATOR +// for QT_FEATURE_xxx, see: https://wiki.qt.io/Qt5_Build_System#How_to +#include + +#ifndef QBT_USE_QCOLLATOR +// macOS and Windows support 'case sensitivity' and 'numeric mode' natively +// https://github.com/qt/qtbase/blob/6.0/src/corelib/CMakeLists.txt#L777-L793 +// https://github.com/qt/qtbase/blob/6.0/src/corelib/text/qcollator_macx.cpp#L74-L77 +// https://github.com/qt/qtbase/blob/6.0/src/corelib/text/qcollator_win.cpp#L72-L78 +#if ((QT_FEATURE_icu == 1) || defined(Q_OS_MACOS) || defined(Q_OS_WIN)) +#define QBT_USE_QCOLLATOR 1 #include +#else +#define QBT_USE_QCOLLATOR 0 +#endif #endif class QString; namespace Utils::Compare { -#ifdef QBT_USE_QCOLLATOR + int naturalCompare(const QString &left, const QString &right, Qt::CaseSensitivity caseSensitivity); + template class NaturalCompare { public: +#if (QBT_USE_QCOLLATOR == 0) + int operator()(const QString &left, const QString &right) const + { + return naturalCompare(left, right, caseSensitivity); + } +#else NaturalCompare() { m_collator.setNumericMode(true); @@ -58,20 +76,8 @@ namespace Utils::Compare private: QCollator m_collator; - }; -#else - int naturalCompare(const QString &left, const QString &right, Qt::CaseSensitivity caseSensitivity); - - template - class NaturalCompare - { - public: - int operator()(const QString &left, const QString &right) const - { - return naturalCompare(left, right, caseSensitivity); - } - }; #endif + }; template class NaturalLessThan diff --git a/src/base/utils/datetime.cpp b/src/base/utils/datetime.cpp new file mode 100644 index 000000000000..5791d6452c6f --- /dev/null +++ b/src/base/utils/datetime.cpp @@ -0,0 +1,36 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "datetime.h" + +#include + +qint64 Utils::DateTime::toSecsSinceEpoch(const QDateTime &dateTime) +{ + return dateTime.isValid() ? dateTime.toSecsSinceEpoch() : -1; +} diff --git a/src/base/utils/datetime.h b/src/base/utils/datetime.h new file mode 100644 index 000000000000..d3ee99f62e69 --- /dev/null +++ b/src/base/utils/datetime.h @@ -0,0 +1,38 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +class QDateTime; + +namespace Utils::DateTime +{ + qint64 toSecsSinceEpoch(const QDateTime &dateTime); +} diff --git a/src/base/utils/foreignapps.cpp b/src/base/utils/foreignapps.cpp index 8048688c6c3a..3c80b12f0f3f 100644 --- a/src/base/utils/foreignapps.cpp +++ b/src/base/utils/foreignapps.cpp @@ -252,7 +252,7 @@ bool Utils::ForeignApps::PythonInfo::isValid() const bool Utils::ForeignApps::PythonInfo::isSupportedVersion() const { - return (version >= Version {3, 7, 0}); + return (version >= Version {3, 9, 0}); } PythonInfo Utils::ForeignApps::pythonInfo() diff --git a/src/base/utils/fs.cpp b/src/base/utils/fs.cpp index f52b17ec6bd4..4dd02e3ded9a 100644 --- a/src/base/utils/fs.cpp +++ b/src/base/utils/fs.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,8 +29,6 @@ #include "fs.h" -#include -#include #include #if defined(Q_OS_WIN) @@ -52,6 +50,7 @@ #include #endif +#include #include #include #include @@ -61,7 +60,6 @@ #include #include -#include "base/global.h" #include "base/path.h" /** @@ -151,11 +149,11 @@ qint64 Utils::Fs::computePathSize(const Path &path) // Compute folder size based on its content qint64 size = 0; - QDirIterator iter {path.data(), QDir::Files | QDir::Hidden | QDir::NoSymLinks, QDirIterator::Subdirectories}; + QDirIterator iter {path.data(), (QDir::Files | QDir::Hidden | QDir::NoSymLinks), QDirIterator::Subdirectories}; while (iter.hasNext()) { - iter.next(); - size += iter.fileInfo().size(); + const QFileInfo fileInfo = iter.nextFileInfo(); + size += fileInfo.size(); } return size; } @@ -311,20 +309,42 @@ bool Utils::Fs::renameFile(const Path &from, const Path &to) * * This function will try to fix the file permissions before removing it. */ -bool Utils::Fs::removeFile(const Path &path) +nonstd::expected Utils::Fs::removeFile(const Path &path) { - if (QFile::remove(path.data())) - return true; + QFile file {path.data()}; + if (file.remove()) + return {}; + + if (!file.exists()) + return {}; + + // Make sure we have read/write permissions + file.setPermissions(file.permissions() | QFile::ReadOwner | QFile::WriteOwner | QFile::ReadUser | QFile::WriteUser); + if (file.remove()) + return {}; + + return nonstd::make_unexpected(file.errorString()); +} +nonstd::expected Utils::Fs::moveFileToTrash(const Path &path) +{ QFile file {path.data()}; + if (file.moveToTrash()) + return {}; + if (!file.exists()) - return true; + return {}; // Make sure we have read/write permissions file.setPermissions(file.permissions() | QFile::ReadOwner | QFile::WriteOwner | QFile::ReadUser | QFile::WriteUser); - return file.remove(); + if (file.moveToTrash()) + return {}; + + const QString errorMessage = file.errorString(); + return nonstd::make_unexpected(!errorMessage.isEmpty() ? errorMessage : QCoreApplication::translate("fs", "Unknown error")); } + bool Utils::Fs::isReadable(const Path &path) { return QFileInfo(path.data()).isReadable(); @@ -345,6 +365,11 @@ bool Utils::Fs::isDir(const Path &path) return QFileInfo(path.data()).isDir(); } +Path Utils::Fs::toAbsolutePath(const Path &path) +{ + return Path(QFileInfo(path.data()).absoluteFilePath()); +} + Path Utils::Fs::toCanonicalPath(const Path &path) { return Path(QFileInfo(path.data()).canonicalFilePath()); diff --git a/src/base/utils/fs.h b/src/base/utils/fs.h index 22ad45041fb1..eced8b0723fb 100644 --- a/src/base/utils/fs.h +++ b/src/base/utils/fs.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -35,6 +35,7 @@ #include +#include "base/3rdparty/expected.hpp" #include "base/global.h" #include "base/pathfwd.h" @@ -55,11 +56,13 @@ namespace Utils::Fs QString toValidFileName(const QString &name, const QString &pad = u" "_s); Path toValidPath(const QString &name, const QString &pad = u" "_s); + Path toAbsolutePath(const Path &path); Path toCanonicalPath(const Path &path); bool copyFile(const Path &from, const Path &to); bool renameFile(const Path &from, const Path &to); - bool removeFile(const Path &path); + nonstd::expected removeFile(const Path &path); + nonstd::expected moveFileToTrash(const Path &path); bool mkdir(const Path &dirPath); bool mkpath(const Path &dirPath); bool rmdir(const Path &dirPath); diff --git a/src/base/utils/io.cpp b/src/base/utils/io.cpp index 2be80549b8f7..d62c31f621de 100644 --- a/src/base/utils/io.cpp +++ b/src/base/utils/io.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include "base/path.h" #include "base/utils/fs.h" @@ -149,3 +150,27 @@ nonstd::expected Utils::IO::saveToFile(const Path &path, const lt return {}; } + +nonstd::expected Utils::IO::saveToTempFile(const QByteArray &data) +{ + QTemporaryFile file {(Utils::Fs::tempPath() / Path(u"file_"_s)).data()}; + if (!file.open() || (file.write(data) != data.length()) || !file.flush()) + return nonstd::make_unexpected(file.errorString()); + + file.setAutoRemove(false); + return Path(file.fileName()); +} + +nonstd::expected Utils::IO::saveToTempFile(const lt::entry &data) +{ + QTemporaryFile file {(Utils::Fs::tempPath() / Path(u"file_"_s)).data()}; + if (!file.open()) + return nonstd::make_unexpected(file.errorString()); + + const int bencodedDataSize = lt::bencode(Utils::IO::FileDeviceOutputIterator {file}, data); + if ((file.size() != bencodedDataSize) || !file.flush()) + return nonstd::make_unexpected(file.errorString()); + + file.setAutoRemove(false); + return Path(file.fileName()); +} diff --git a/src/base/utils/io.h b/src/base/utils/io.h index 1005410c5a4a..6cd3a9057dc4 100644 --- a/src/base/utils/io.h +++ b/src/base/utils/io.h @@ -103,4 +103,6 @@ namespace Utils::IO nonstd::expected saveToFile(const Path &path, const QByteArray &data); nonstd::expected saveToFile(const Path &path, const lt::entry &data); + nonstd::expected saveToTempFile(const QByteArray &data); + nonstd::expected saveToTempFile(const lt::entry &data); } diff --git a/src/base/utils/misc.cpp b/src/base/utils/misc.cpp index 68139d8f269d..27d3054521b6 100644 --- a/src/base/utils/misc.cpp +++ b/src/base/utils/misc.cpp @@ -44,8 +44,10 @@ #include #include #include +#include #include +#include "base/net/downloadmanager.h" #include "base/path.h" #include "base/unicodestrings.h" #include "base/utils/string.h" @@ -211,6 +213,14 @@ bool Utils::Misc::isPreviewable(const Path &filePath) return multimediaExtensions.contains(filePath.extension().toUpper()); } +bool Utils::Misc::isTorrentLink(const QString &str) +{ + return str.startsWith(u"magnet:", Qt::CaseInsensitive) + || str.endsWith(TORRENT_FILE_EXTENSION, Qt::CaseInsensitive) + || (!str.startsWith(u"file:", Qt::CaseInsensitive) + && Net::DownloadManager::hasSupportedScheme(str)); +} + QString Utils::Misc::userFriendlyDuration(const qlonglong seconds, const qlonglong maxCap, const TimeResolution resolution) { if (seconds < 0) @@ -252,7 +262,7 @@ QString Utils::Misc::userFriendlyDuration(const qlonglong seconds, const qlonglo return QCoreApplication::translate("misc", "%1y %2d", "e.g: 2 years 10 days").arg(QString::number(years), QString::number(days)); } -QString Utils::Misc::languageToLocalizedString(const QString &localeStr) +QString Utils::Misc::languageToLocalizedString(const QStringView localeStr) { if (localeStr.startsWith(u"eo", Qt::CaseInsensitive)) { diff --git a/src/base/utils/misc.h b/src/base/utils/misc.h index 6ce938067803..7a1f7b6a9db0 100644 --- a/src/base/utils/misc.h +++ b/src/base/utils/misc.h @@ -33,6 +33,7 @@ #include "base/pathfwd.h" class QString; +class QStringView; /* Miscellaneous functions that can be useful */ namespace Utils::Misc @@ -77,10 +78,11 @@ namespace Utils::Misc qint64 sizeInBytes(qreal size, SizeUnit unit); bool isPreviewable(const Path &filePath); + bool isTorrentLink(const QString &str); // Take a number of seconds and return a user-friendly // time duration like "1d 2h 10m". QString userFriendlyDuration(qlonglong seconds, qlonglong maxCap = -1, TimeResolution resolution = TimeResolution::Minutes); - QString languageToLocalizedString(const QString &localeStr); + QString languageToLocalizedString(QStringView localeStr); } diff --git a/src/base/utils/net.cpp b/src/base/utils/net.cpp index 63f8f2eb7615..40247e38c6ec 100644 --- a/src/base/utils/net.cpp +++ b/src/base/utils/net.cpp @@ -33,7 +33,6 @@ #include #include #include -#include #include "base/global.h" @@ -55,14 +54,7 @@ namespace Utils return subnet; } - bool isLoopbackAddress(const QHostAddress &addr) - { - return (addr == QHostAddress::LocalHost) - || (addr == QHostAddress::LocalHostIPv6) - || (addr == QHostAddress(u"::ffff:127.0.0.1"_s)); - } - - bool isIPInSubnets(const QHostAddress &addr, const QVector &subnets) + bool isIPInSubnets(const QHostAddress &addr, const QList &subnets) { QHostAddress protocolEquivalentAddress; bool addrConversionOk = false; @@ -136,19 +128,5 @@ namespace Utils { return !loadSSLCertificate(data).isEmpty(); } - - QSslKey loadSSLKey(const QByteArray &data) - { - // try different formats - const QSslKey key {data, QSsl::Rsa}; - if (!key.isNull()) - return key; - return {data, QSsl::Ec}; - } - - bool isSSLKeyValid(const QByteArray &data) - { - return !loadSSLKey(data).isNull(); - } } } diff --git a/src/base/utils/net.h b/src/base/utils/net.h index ef035bfd227c..6e6e271f7fbd 100644 --- a/src/base/utils/net.h +++ b/src/base/utils/net.h @@ -45,14 +45,11 @@ namespace Utils::Net bool isValidIP(const QString &ip); std::optional parseSubnet(const QString &subnetStr); - bool isLoopbackAddress(const QHostAddress &addr); - bool isIPInSubnets(const QHostAddress &addr, const QVector &subnets); + bool isIPInSubnets(const QHostAddress &addr, const QList &subnets); QString subnetToString(const Subnet &subnet); QHostAddress canonicalIPv6Addr(const QHostAddress &addr); inline const int MAX_SSL_FILE_SIZE = 1024 * 1024; QList loadSSLCertificate(const QByteArray &data); bool isSSLCertificatesValid(const QByteArray &data); - QSslKey loadSSLKey(const QByteArray &data); - bool isSSLKeyValid(const QByteArray &data); } diff --git a/src/base/utils/number.cpp b/src/base/utils/number.cpp new file mode 100644 index 000000000000..b0aa43426c30 --- /dev/null +++ b/src/base/utils/number.cpp @@ -0,0 +1,44 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "number.h" + +#include +#include +#include + +int Utils::Number::clampingAdd(const int num1, const int num2) +{ + static_assert(sizeof(int64_t) > sizeof(int)); + + const int64_t intMin = std::numeric_limits::min(); + const int64_t intMax = std::numeric_limits::max(); + const int64_t sumResult = static_cast(num1) + num2; + const int64_t clampedValue = std::clamp(sumResult, intMin, intMax); + return static_cast(clampedValue); +} diff --git a/src/base/utils/number.h b/src/base/utils/number.h new file mode 100644 index 000000000000..7052506a5d48 --- /dev/null +++ b/src/base/utils/number.h @@ -0,0 +1,35 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +namespace Utils::Number +{ + // math addition that the result will never overflow/underflow + int clampingAdd(int num1, int num2); +} diff --git a/src/base/utils/os.cpp b/src/base/utils/os.cpp index 0430652beba8..c946cb698004 100644 --- a/src/base/utils/os.cpp +++ b/src/base/utils/os.cpp @@ -31,7 +31,7 @@ #include "os.h" #ifdef Q_OS_WIN -#include +#include #include #include @@ -44,6 +44,8 @@ #include #endif // Q_OS_MACOS +#include + #ifdef QBT_USES_DBUS #include #endif // QBT_USES_DBUS @@ -87,11 +89,9 @@ void Utils::OS::shutdownComputer([[maybe_unused]] const ShutdownDialogAction &ac } else { - const QString msg = QCoreApplication::translate("misc" - , "qBittorrent will shutdown the computer now because all downloads are complete."); - auto msgWchar = std::make_unique(msg.length() + 1); - msg.toWCharArray(msgWchar.get()); - ::InitiateSystemShutdownW(nullptr, msgWchar.get(), 10, TRUE, FALSE); + std::wstring msg = QCoreApplication::translate("misc" + , "qBittorrent will shutdown the computer now because all downloads are complete.").toStdWString(); + ::InitiateSystemShutdownW(nullptr, msg.data(), 10, TRUE, FALSE); } // Disable shutdown privilege. @@ -275,6 +275,11 @@ Path Utils::OS::windowsSystemPath() #if defined(Q_OS_MACOS) || defined(Q_OS_WIN) bool Utils::OS::applyMarkOfTheWeb(const Path &file, const QString &url) { + // Trying to apply this to a non-existent file is unacceptable, + // as it may unexpectedly create such a file. + if (!file.exists()) + return false; + Q_ASSERT(url.isEmpty() || url.startsWith(u"http:") || url.startsWith(u"https:")); #ifdef Q_OS_MACOS @@ -282,34 +287,53 @@ bool Utils::OS::applyMarkOfTheWeb(const Path &file, const QString &url) // https://searchfox.org/mozilla-central/rev/ffdc4971dc18e1141cb2a90c2b0b776365650270/xpcom/io/CocoaFileUtils.mm#230 // https://github.com/transmission/transmission/blob/f62f7427edb1fd5c430e0ef6956bbaa4f03ae597/macosx/Torrent.mm#L1945-L1955 + const CFStringRef fileString = file.toString().toCFString(); + [[maybe_unused]] const auto fileStringGuard = qScopeGuard([&fileString] { ::CFRelease(fileString); }); + const CFURLRef fileURL = ::CFURLCreateWithFileSystemPath(kCFAllocatorDefault + , fileString, kCFURLPOSIXPathStyle, false); + [[maybe_unused]] const auto fileURLGuard = qScopeGuard([&fileURL] { ::CFRelease(fileURL); }); + + if (CFDictionaryRef currentProperties = nullptr; + ::CFURLCopyResourcePropertyForKey(fileURL, kCFURLQuarantinePropertiesKey, ¤tProperties, NULL) + && currentProperties) + { + [[maybe_unused]] const auto currentPropertiesGuard = qScopeGuard([¤tProperties] { ::CFRelease(currentProperties); }); + + if (CFStringRef quarantineType = nullptr; + ::CFDictionaryGetValueIfPresent(currentProperties, kLSQuarantineTypeKey, reinterpret_cast(&quarantineType)) + && quarantineType) + { + if (::CFStringCompare(quarantineType, kLSQuarantineTypeOtherDownload, 0) == kCFCompareEqualTo) + return true; + } + } + CFMutableDictionaryRef properties = ::CFDictionaryCreateMutable(kCFAllocatorDefault, 0 , &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - if (properties == NULL) + if (!properties) return false; + [[maybe_unused]] const auto propertiesGuard = qScopeGuard([&properties] { ::CFRelease(properties); }); ::CFDictionarySetValue(properties, kLSQuarantineTypeKey, kLSQuarantineTypeOtherDownload); if (!url.isEmpty()) - ::CFDictionarySetValue(properties, kLSQuarantineDataURLKey, url.toCFString()); - - const CFStringRef fileString = file.toString().toCFString(); - const CFURLRef fileURL = ::CFURLCreateWithFileSystemPath(kCFAllocatorDefault - , fileString, kCFURLPOSIXPathStyle, false); + { + const CFStringRef urlCFString = url.toCFString(); + [[maybe_unused]] const auto urlStringGuard = qScopeGuard([&urlCFString] { ::CFRelease(urlCFString); }); + ::CFDictionarySetValue(properties, kLSQuarantineDataURLKey, urlCFString); + } const Boolean success = ::CFURLSetResourcePropertyForKey(fileURL, kCFURLQuarantinePropertiesKey , properties, NULL); - - ::CFRelease(fileURL); - ::CFRelease(fileString); - ::CFRelease(properties); - return success; #elif defined(Q_OS_WIN) const QString zoneIDStream = file.toString() + u":Zone.Identifier"; - HANDLE handle = ::CreateFileW(zoneIDStream.toStdWString().c_str(), GENERIC_WRITE + + HANDLE handle = ::CreateFileW(zoneIDStream.toStdWString().c_str(), (GENERIC_READ | GENERIC_WRITE) , (FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE) , nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); if (handle == INVALID_HANDLE_VALUE) return false; + [[maybe_unused]] const auto handleGuard = qScopeGuard([&handle] { ::CloseHandle(handle); }); // 5.6.1 Zone.Identifier Stream Name // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/6e3f7352-d11c-4d76-8c39-2516a9df36e8 @@ -317,10 +341,27 @@ bool Utils::OS::applyMarkOfTheWeb(const Path &file, const QString &url) const QByteArray zoneID = QByteArrayLiteral("[ZoneTransfer]\r\nZoneId=3\r\n") + u"HostUrl=%1\r\n"_s.arg(hostURL).toUtf8(); + if (LARGE_INTEGER streamSize = {0}; + ::GetFileSizeEx(handle, &streamSize) && (streamSize.QuadPart > 0)) + { + const DWORD expectedReadSize = std::min(streamSize.QuadPart, 1024); + QByteArray buf {expectedReadSize, '\0'}; + + if (DWORD actualReadSize = 0; + ::ReadFile(handle, buf.data(), expectedReadSize, &actualReadSize, nullptr) && (actualReadSize == expectedReadSize)) + { + if (buf.startsWith("[ZoneTransfer]\r\n") && buf.contains("\r\nZoneId=3\r\n") && buf.contains("\r\nHostUrl=")) + return true; + } + } + + if (!::SetFilePointerEx(handle, {0}, nullptr, FILE_BEGIN)) + return false; + if (!::SetEndOfFile(handle)) + return false; + DWORD written = 0; const BOOL writeResult = ::WriteFile(handle, zoneID.constData(), zoneID.size(), &written, nullptr); - ::CloseHandle(handle); - return writeResult && (written == zoneID.size()); #endif } diff --git a/src/base/utils/password.cpp b/src/base/utils/password.cpp index bec752530071..b3be4dacd60c 100644 --- a/src/base/utils/password.cpp +++ b/src/base/utils/password.cpp @@ -34,8 +34,8 @@ #include #include +#include #include -#include #include "base/global.h" #include "bytearray.h" diff --git a/src/base/utils/random.cpp b/src/base/utils/random.cpp index 99343f0e16c2..57f84c75372b 100644 --- a/src/base/utils/random.cpp +++ b/src/base/utils/random.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2017 Mike Tzou + * Copyright (C) 2017-2024 Mike Tzou (Chocobo1) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -32,107 +32,14 @@ #include -#ifdef Q_OS_WIN -#include -#include -#else // Q_OS_WIN -#include -#include -#include +#if defined(Q_OS_LINUX) +#include "randomlayer_linux.cpp" +#elif defined(Q_OS_WIN) +#include "randomlayer_win.cpp" +#else +#include "randomlayer_other.cpp" #endif -#include - -#include "base/global.h" - -#ifdef Q_OS_WIN -#include "base/utils/os.h" -#endif - -namespace -{ -#ifdef Q_OS_WIN - class RandomLayer - { - // need to satisfy UniformRandomBitGenerator requirements - public: - using result_type = uint32_t; - - RandomLayer() - : m_rtlGenRandom {Utils::OS::loadWinAPI(u"Advapi32.dll"_s, "SystemFunction036")} - { - if (!m_rtlGenRandom) - qFatal("Failed to load RtlGenRandom()"); - } - - static constexpr result_type min() - { - return std::numeric_limits::min(); - } - - static constexpr result_type max() - { - return std::numeric_limits::max(); - } - - result_type operator()() - { - result_type buf = 0; - const bool result = m_rtlGenRandom(&buf, sizeof(buf)); - if (!result) - qFatal("RtlGenRandom() failed"); - - return buf; - } - - private: - using PRTLGENRANDOM = BOOLEAN (WINAPI *)(PVOID, ULONG); - const PRTLGENRANDOM m_rtlGenRandom; - }; -#else // Q_OS_WIN - class RandomLayer - { - // need to satisfy UniformRandomBitGenerator requirements - public: - using result_type = uint32_t; - - RandomLayer() - : m_randDev {fopen("/dev/urandom", "rb")} - { - if (!m_randDev) - qFatal("Failed to open /dev/urandom. Reason: %s. Error code: %d.\n", std::strerror(errno), errno); - } - - ~RandomLayer() - { - fclose(m_randDev); - } - - static constexpr result_type min() - { - return std::numeric_limits::min(); - } - - static constexpr result_type max() - { - return std::numeric_limits::max(); - } - - result_type operator()() const - { - result_type buf = 0; - if (fread(&buf, sizeof(buf), 1, m_randDev) != 1) - qFatal("Read /dev/urandom error. Reason: %s. Error code: %d.\n", std::strerror(errno), errno); - - return buf; - } - - private: - FILE *m_randDev = nullptr; - }; -#endif -} - uint32_t Utils::Random::rand(const uint32_t min, const uint32_t max) { static RandomLayer layer; diff --git a/src/base/utils/random.h b/src/base/utils/random.h index bf004660d0a4..b177933a0115 100644 --- a/src/base/utils/random.h +++ b/src/base/utils/random.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2017 Mike Tzou + * Copyright (C) 2017-2024 Mike Tzou (Chocobo1) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/src/base/utils/randomlayer_linux.cpp b/src/base/utils/randomlayer_linux.cpp new file mode 100644 index 000000000000..29b24631c799 --- /dev/null +++ b/src/base/utils/randomlayer_linux.cpp @@ -0,0 +1,77 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include +#include +#include + +#include + +#include + +namespace +{ + class RandomLayer + { + // need to satisfy UniformRandomBitGenerator requirements + public: + using result_type = uint32_t; + + RandomLayer() + { + } + + static constexpr result_type min() + { + return std::numeric_limits::min(); + } + + static constexpr result_type max() + { + return std::numeric_limits::max(); + } + + result_type operator()() + { + const int RETRY_MAX = 3; + + for (int i = 0; i < RETRY_MAX; ++i) + { + result_type buf = 0; + const ssize_t result = ::getrandom(&buf, sizeof(buf), 0); + if (result == sizeof(buf)) // success + return buf; + + if (result < 0) + qFatal("getrandom() error. Reason: %s. Error code: %d.", std::strerror(errno), errno); + } + + qFatal("getrandom() failed. Reason: too many retries."); + } + }; +} diff --git a/src/base/utils/randomlayer_other.cpp b/src/base/utils/randomlayer_other.cpp new file mode 100644 index 000000000000..fa7e61f380ae --- /dev/null +++ b/src/base/utils/randomlayer_other.cpp @@ -0,0 +1,79 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include + +#include +#include +#include + +#include + +namespace +{ + class RandomLayer + { + // need to satisfy UniformRandomBitGenerator requirements + public: + using result_type = uint32_t; + + RandomLayer() + : m_randDev {fopen("/dev/urandom", "rb")} + { + if (!m_randDev) + qFatal("Failed to open /dev/urandom. Reason: %s. Error code: %d.", std::strerror(errno), errno); + } + + ~RandomLayer() + { + fclose(m_randDev); + } + + static constexpr result_type min() + { + return std::numeric_limits::min(); + } + + static constexpr result_type max() + { + return std::numeric_limits::max(); + } + + result_type operator()() const + { + result_type buf = 0; + if (fread(&buf, sizeof(buf), 1, m_randDev) != 1) + qFatal("Read /dev/urandom error. Reason: %s. Error code: %d.", std::strerror(errno), errno); + + return buf; + } + + private: + FILE *m_randDev = nullptr; + }; +} diff --git a/src/base/utils/randomlayer_win.cpp b/src/base/utils/randomlayer_win.cpp new file mode 100644 index 000000000000..916ed6acf920 --- /dev/null +++ b/src/base/utils/randomlayer_win.cpp @@ -0,0 +1,77 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include + +#include + +#include + +#include "base/global.h" +#include "base/utils/os.h" + +namespace +{ + class RandomLayer + { + // need to satisfy UniformRandomBitGenerator requirements + public: + using result_type = uint32_t; + + RandomLayer() + : m_processPrng {Utils::OS::loadWinAPI(u"BCryptPrimitives.dll"_s, "ProcessPrng")} + { + if (!m_processPrng) + qFatal("Failed to load ProcessPrng()."); + } + + static constexpr result_type min() + { + return std::numeric_limits::min(); + } + + static constexpr result_type max() + { + return std::numeric_limits::max(); + } + + result_type operator()() + { + result_type buf = 0; + const bool result = m_processPrng(reinterpret_cast(&buf), sizeof(buf)); + if (!result) + qFatal("ProcessPrng() failed."); + + return buf; + } + + private: + using PPROCESSPRNG = BOOL (WINAPI *)(PBYTE, SIZE_T); + const PPROCESSPRNG m_processPrng = nullptr; + }; +} diff --git a/src/base/utils/sslkey.cpp b/src/base/utils/sslkey.cpp new file mode 100644 index 000000000000..7a6583ba589e --- /dev/null +++ b/src/base/utils/sslkey.cpp @@ -0,0 +1,40 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "sslkey.h" + +#include +#include + +QSslKey Utils::SSLKey::load(const QByteArray &data) +{ + // try different formats + if (const QSslKey key {data, QSsl::Ec}; !key.isNull()) + return key; + return {data, QSsl::Rsa}; +} diff --git a/src/base/utils/sslkey.h b/src/base/utils/sslkey.h new file mode 100644 index 000000000000..afbd9486e34a --- /dev/null +++ b/src/base/utils/sslkey.h @@ -0,0 +1,37 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +class QByteArray; +class QSslKey; + +namespace Utils::SSLKey +{ + QSslKey load(const QByteArray &data); +} diff --git a/src/base/utils/string.cpp b/src/base/utils/string.cpp index 4f3cebb9b5b6..f3fc4d87e054 100644 --- a/src/base/utils/string.cpp +++ b/src/base/utils/string.cpp @@ -31,10 +31,10 @@ #include +#include #include #include #include -#include // to send numbers instead of strings with suffixes QString Utils::String::fromDouble(const double n, const int precision) @@ -49,6 +49,16 @@ QString Utils::String::fromDouble(const double n, const int precision) return QLocale::system().toString(std::floor(n * prec) / prec, 'f', precision); } +QString Utils::String::fromLatin1(const std::string_view string) +{ + return QString::fromLatin1(string.data(), string.size()); +} + +QString Utils::String::fromLocal8Bit(const std::string_view string) +{ + return QString::fromLocal8Bit(string.data(), string.size()); +} + QString Utils::String::wildcardToRegexPattern(const QString &pattern) { return QRegularExpression::wildcardToRegularExpression(pattern, QRegularExpression::UnanchoredWildcardConversion); @@ -119,14 +129,3 @@ std::optional Utils::String::parseDouble(const QString &string) return std::nullopt; } - -QString Utils::String::join(const QList &strings, const QStringView separator) -{ - if (strings.empty()) - return {}; - - QString ret = strings[0].toString(); - for (int i = 1; i < strings.count(); ++i) - ret += (separator + strings[i]); - return ret; -} diff --git a/src/base/utils/string.h b/src/base/utils/string.h index 00a30cbc1f48..1f5aa2c27930 100644 --- a/src/base/utils/string.h +++ b/src/base/utils/string.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Mike Tzou (Chocobo1) * Copyright (C) 2015 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * @@ -29,14 +30,16 @@ #pragma once +#include #include +#include #include #include #include -#include #include +#include "base/concepts/explicitlyconvertibleto.h" #include "base/global.h" namespace Utils::String @@ -63,9 +66,38 @@ namespace Utils::String QStringList splitCommand(const QString &command); - QString join(const QList &strings, QStringView separator); - QString fromDouble(double n, int precision); + QString fromLatin1(std::string_view string); + QString fromLocal8Bit(std::string_view string); + + template + QString joinIntoString(const Container &container, const QString &separator) + requires ExplicitlyConvertibleTo + { + auto iter = container.cbegin(); + const auto end = container.cend(); + if (iter == end) + return {}; + + const qsizetype totalLength = std::accumulate(iter, end, (separator.size() * (container.size() - 1)) + , [](const qsizetype total, const typename Container::value_type &value) + { + return total + QString(value).size(); + }); + + QString ret; + ret.reserve(totalLength); + ret.append(QString(*iter)); + ++iter; + + while (iter != end) + { + ret.append(separator + QString(*iter)); + ++iter; + } + + return ret; + } template QString fromEnum(const T &value) diff --git a/src/base/version.h.in b/src/base/version.h.in index 56528e963459..94857236a587 100644 --- a/src/base/version.h.in +++ b/src/base/version.h.in @@ -29,7 +29,7 @@ #pragma once #define QBT_VERSION_MAJOR 5 -#define QBT_VERSION_MINOR 0 +#define QBT_VERSION_MINOR 2 #define QBT_VERSION_BUGFIX 0 #define QBT_VERSION_BUILD 0 #define QBT_VERSION_STATUS "alpha1" // Should be empty for stable releases! diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index b939b1fa8582..cbbccd5a7095 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -29,6 +29,7 @@ qt_wrap_ui(UI_HEADERS torrentcategorydialog.ui torrentcreatordialog.ui torrentoptionsdialog.ui + torrentsharelimitswidget.ui torrenttagsdialog.ui trackerentriesdialog.ui trackersadditiondialog.ui @@ -45,12 +46,15 @@ add_library(qbt_gui STATIC autoexpandabledialog.h banlistoptionsdialog.h color.h + colorscheme.h cookiesdialog.h cookiesmodel.h deletionconfirmationdialog.h desktopintegration.h downloadfromurldialog.h executionlogwidget.h + filterpatternformat.h + filterpatternformatmenu.h flowlayout.h fspathedit.h fspathedit_p.h @@ -65,6 +69,7 @@ add_library(qbt_gui STATIC log/logmodel.h mainwindow.h optionsdialog.h + powermanagement/inhibitor.h powermanagement/powermanagement.h previewlistdelegate.h previewselectdialog.h @@ -104,6 +109,7 @@ add_library(qbt_gui STATIC torrentcontentwidget.h torrentcreatordialog.h torrentoptionsdialog.h + torrentsharelimitswidget.h torrenttagsdialog.h trackerentriesdialog.h trackerlist/trackerlistitemdelegate.h @@ -149,6 +155,7 @@ add_library(qbt_gui STATIC desktopintegration.cpp downloadfromurldialog.cpp executionlogwidget.cpp + filterpatternformatmenu.cpp flowlayout.cpp fspathedit.cpp fspathedit_p.cpp @@ -161,6 +168,7 @@ add_library(qbt_gui STATIC log/logmodel.cpp mainwindow.cpp optionsdialog.cpp + powermanagement/inhibitor.cpp powermanagement/powermanagement.cpp previewlistdelegate.cpp previewselectdialog.cpp @@ -200,6 +208,7 @@ add_library(qbt_gui STATIC torrentcontentwidget.cpp torrentcreatordialog.cpp torrentoptionsdialog.cpp + torrentsharelimitswidget.cpp torrenttagsdialog.cpp trackerentriesdialog.cpp trackerlist/trackerlistitemdelegate.cpp @@ -252,8 +261,8 @@ if (DBUS) notifications/dbusnotifier.cpp notifications/dbusnotificationsinterface.h notifications/dbusnotificationsinterface.cpp - powermanagement/powermanagement_x11.h - powermanagement/powermanagement_x11.cpp + powermanagement/inhibitordbus.h + powermanagement/inhibitordbus.cpp ) endif() @@ -267,25 +276,29 @@ if (STACKTRACE) ) endif() -if ((CMAKE_SYSTEM_NAME STREQUAL "Windows") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin")) - target_sources(qbt_gui PRIVATE - programupdater.h - programupdater.cpp - ) -endif() - -if (CMAKE_SYSTEM_NAME STREQUAL "Windows") - target_link_libraries(qbt_gui PRIVATE PowrProf) -endif() - if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") target_sources(qbt_gui PRIVATE macosdockbadge/badger.h macosdockbadge/badger.mm macosdockbadge/badgeview.h macosdockbadge/badgeview.mm + macosshiftclickhandler.h + macosshiftclickhandler.cpp macutilities.h macutilities.mm + powermanagement/inhibitormacos.h + powermanagement/inhibitormacos.cpp + programupdater.h + programupdater.cpp ) target_link_libraries(qbt_gui PRIVATE objc) endif() + +if (CMAKE_SYSTEM_NAME STREQUAL "Windows") + target_sources(qbt_gui PRIVATE + powermanagement/inhibitorwindows.h + powermanagement/inhibitorwindows.cpp + programupdater.h + programupdater.cpp + ) +endif() diff --git a/src/gui/aboutdialog.cpp b/src/gui/aboutdialog.cpp index f439f897cc14..bc1be50a358a 100644 --- a/src/gui/aboutdialog.cpp +++ b/src/gui/aboutdialog.cpp @@ -67,7 +67,7 @@ AboutDialog::AboutDialog(QWidget *parent) u"

    "_s .arg(tr("An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar.") .replace(u"C++"_s, u"C\u2060+\u2060+"_s) // make C++ non-breaking - , tr("Copyright %1 2006-2023 The qBittorrent project").arg(C_COPYRIGHT) + , tr("Copyright %1 2006-2024 The qBittorrent project").arg(C_COPYRIGHT) , tr("Home Page:") , tr("Forum:") , tr("Bug Tracker:")); diff --git a/src/gui/aboutdialog.ui b/src/gui/aboutdialog.ui index abb6fd5c00c2..68e2bf43b696 100644 --- a/src/gui/aboutdialog.ui +++ b/src/gui/aboutdialog.ui @@ -26,14 +26,14 @@ qBittorrent - Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByKeyboard|Qt::TextInteractionFlag::TextSelectableByMouse
    - Qt::Horizontal + Qt::Orientation::Horizontal @@ -67,7 +67,7 @@ - Qt::RichText + Qt::TextFormat::RichText true @@ -75,6 +75,9 @@ true + + Qt::TextInteractionFlag::LinksAccessibleByKeyboard|Qt::TextInteractionFlag::LinksAccessibleByMouse + @@ -90,23 +93,17 @@ Current maintainer - - + + - Greece + Name: - - + + - <a href="mailto:sledgehammer999@qbittorrent.org">sledgehammer999@qbittorrent.org</a> - - - true - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Sledgehammer999 @@ -117,31 +114,37 @@ - - + + - E-mail: + Greece - - + + - Name: + E-mail: - - + + - Sledgehammer999 + <a href="mailto:sledgehammer999@qbittorrent.org">sledgehammer999@qbittorrent.org</a> + + + true + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - Qt::Horizontal + Qt::Orientation::Horizontal @@ -160,10 +163,10 @@ Original author - - + + - France + Name: @@ -174,23 +177,17 @@ - - + + - <a href="mailto:chris@qbittorrent.org">chris@qbittorrent.org</a> - - - true - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Nationality: - - + + - Name: + France @@ -201,17 +198,23 @@ - - + + - Nationality: + <a href="mailto:chris@qbittorrent.org">chris@qbittorrent.org</a> + + + true + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - Qt::Horizontal + Qt::Orientation::Horizontal @@ -227,7 +230,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -285,7 +288,7 @@ - QTextEdit::NoWrap + QTextEdit::LineWrapMode::NoWrap true @@ -337,7 +340,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -359,23 +362,36 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - - + + + + Qt: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - - + + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse + + + + + - Qt::Horizontal + Qt::Orientation::Horizontal @@ -385,63 +401,30 @@ - - - - Qt: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - Libtorrent: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Boost: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - - + + - Qt::Horizontal + Qt::Orientation::Horizontal @@ -451,23 +434,43 @@ + + + + Boost: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse + + + + + + + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse + + + OpenSSL: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse @@ -477,17 +480,17 @@ zlib: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::LinksAccessibleByMouse|Qt::TextInteractionFlag::TextSelectableByMouse @@ -496,7 +499,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -512,14 +515,14 @@ true - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + Qt::TextInteractionFlag::LinksAccessibleByKeyboard|Qt::TextInteractionFlag::LinksAccessibleByMouse - Qt::Vertical + Qt::Orientation::Vertical diff --git a/src/gui/addnewtorrentdialog.cpp b/src/gui/addnewtorrentdialog.cpp index 098b8a820abb..7a048b218fb5 100644 --- a/src/gui/addnewtorrentdialog.cpp +++ b/src/gui/addnewtorrentdialog.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022-2023 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -33,24 +33,29 @@ #include #include +#include #include #include #include #include +#include #include #include #include #include +#include +#include #include #include -#include +#include "base/bittorrent/addtorrentparams.h" #include "base/bittorrent/downloadpriority.h" #include "base/bittorrent/infohash.h" #include "base/bittorrent/session.h" #include "base/bittorrent/torrent.h" #include "base/bittorrent/torrentcontenthandler.h" #include "base/bittorrent/torrentcontentlayout.h" +#include "base/bittorrent/torrentdescriptor.h" #include "base/global.h" #include "base/preferences.h" #include "base/settingsstorage.h" @@ -58,6 +63,8 @@ #include "base/utils/compare.h" #include "base/utils/fs.h" #include "base/utils/misc.h" +#include "base/utils/string.h" +#include "filterpatternformatmenu.h" #include "lineedit.h" #include "torrenttagsdialog.h" @@ -136,7 +143,7 @@ class AddNewTorrentDialog::TorrentContentAdaptor final { public: TorrentContentAdaptor(const BitTorrent::TorrentInfo &torrentInfo, PathList &filePaths - , QVector &filePriorities, std::function onFilePrioritiesChanged) + , QList &filePriorities, std::function onFilePrioritiesChanged) : m_torrentInfo {torrentInfo} , m_filePaths {filePaths} , m_filePriorities {filePriorities} @@ -175,6 +182,11 @@ class AddNewTorrentDialog::TorrentContentAdaptor final return (m_filePaths.isEmpty() ? m_torrentInfo.filePath(index) : m_filePaths.at(index)); } + PathList filePaths() const + { + return (m_filePaths.isEmpty() ? m_torrentInfo.filePaths() : m_filePaths); + } + void renameFile(const int index, const Path &newFilePath) override { Q_ASSERT((index >= 0) && (index < filesCount())); @@ -215,29 +227,29 @@ class AddNewTorrentDialog::TorrentContentAdaptor final } } - QVector filePriorities() const override + QList filePriorities() const override { return m_filePriorities.isEmpty() - ? QVector(filesCount(), BitTorrent::DownloadPriority::Normal) + ? QList(filesCount(), BitTorrent::DownloadPriority::Normal) : m_filePriorities; } - QVector filesProgress() const override + QList filesProgress() const override { - return QVector(filesCount(), 0); + return QList(filesCount(), 0); } - QVector availableFileFractions() const override + QList availableFileFractions() const override { - return QVector(filesCount(), 0); + return QList(filesCount(), 0); } - void fetchAvailableFileFractions(std::function)> resultHandler) const override + void fetchAvailableFileFractions(std::function)> resultHandler) const override { resultHandler(availableFileFractions()); } - void prioritizeFiles(const QVector &priorities) override + void prioritizeFiles(const QList &priorities) override { Q_ASSERT(priorities.size() == filesCount()); m_filePriorities = priorities; @@ -262,131 +274,67 @@ class AddNewTorrentDialog::TorrentContentAdaptor final private: const BitTorrent::TorrentInfo &m_torrentInfo; PathList &m_filePaths; - QVector &m_filePriorities; + QList &m_filePriorities; std::function m_onFilePrioritiesChanged; Path m_originalRootFolder; BitTorrent::TorrentContentLayout m_currentContentLayout; }; +struct AddNewTorrentDialog::Context +{ + BitTorrent::TorrentDescriptor torrentDescr; + BitTorrent::AddTorrentParams torrentParams; +}; + AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::TorrentDescriptor &torrentDescr , const BitTorrent::AddTorrentParams &inParams, QWidget *parent) : QDialog(parent) , m_ui {new Ui::AddNewTorrentDialog} - , m_torrentDescr {torrentDescr} - , m_torrentParams {inParams} , m_filterLine {new LineEdit(this)} , m_storeDialogSize {SETTINGS_KEY(u"DialogSize"_s)} , m_storeDefaultCategory {SETTINGS_KEY(u"DefaultCategory"_s)} , m_storeRememberLastSavePath {SETTINGS_KEY(u"RememberLastSavePath"_s)} , m_storeTreeHeaderState {u"GUI/Qt6/" SETTINGS_KEY(u"TreeHeaderState"_s)} , m_storeSplitterState {u"GUI/Qt6/" SETTINGS_KEY(u"SplitterState"_s)} + , m_storeFilterPatternFormat {u"GUI/" SETTINGS_KEY(u"FilterPatternFormat"_s)} { - // TODO: set dialog file properties using m_torrentParams.filePriorities m_ui->setupUi(this); - connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); - connect(m_ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); - - m_ui->lblMetaLoading->setVisible(false); - m_ui->progMetaLoading->setVisible(false); - m_ui->buttonSave->setVisible(false); - connect(m_ui->buttonSave, &QPushButton::clicked, this, &AddNewTorrentDialog::saveTorrentFile); - m_ui->savePath->setMode(FileSystemPathEdit::Mode::DirectorySave); m_ui->savePath->setDialogCaption(tr("Choose save path")); m_ui->savePath->setMaxVisibleItems(20); - const auto *session = BitTorrent::Session::instance(); - m_ui->downloadPath->setMode(FileSystemPathEdit::Mode::DirectorySave); m_ui->downloadPath->setDialogCaption(tr("Choose save path")); m_ui->downloadPath->setMaxVisibleItems(20); - m_ui->addToQueueTopCheckBox->setChecked(m_torrentParams.addToQueueTop.value_or(session->isAddTorrentToQueueTop())); - m_ui->startTorrentCheckBox->setChecked(!m_torrentParams.addPaused.value_or(session->isAddTorrentPaused())); m_ui->stopConditionComboBox->setToolTip( - u"

    " + tr("None") + u" - " + tr("No stop condition is set.") + u"

    " + - tr("Metadata received") + u" - " + tr("Torrent will stop after metadata is received.") + - u" " + tr("Torrents that have metadata initially aren't affected.") + u"

    " + - tr("Files checked") + u" - " + tr("Torrent will stop after files are initially checked.") + - u" " + tr("This will also download metadata if it wasn't there initially.") + u"

    "); - m_ui->stopConditionComboBox->setItemData(0, QVariant::fromValue(BitTorrent::Torrent::StopCondition::None)); - m_ui->stopConditionComboBox->setItemData(1, QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived)); - m_ui->stopConditionComboBox->setItemData(2, QVariant::fromValue(BitTorrent::Torrent::StopCondition::FilesChecked)); - m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData( - QVariant::fromValue(m_torrentParams.stopCondition.value_or(session->torrentStopCondition())))); - m_ui->stopConditionLabel->setEnabled(m_ui->startTorrentCheckBox->isChecked()); - m_ui->stopConditionComboBox->setEnabled(m_ui->startTorrentCheckBox->isChecked()); - connect(m_ui->startTorrentCheckBox, &QCheckBox::toggled, this, [this](const bool checked) - { - m_ui->stopConditionLabel->setEnabled(checked); - m_ui->stopConditionComboBox->setEnabled(checked); - }); - - m_ui->comboTTM->blockSignals(true); // the TreeView size isn't correct if the slot does its job at this point - m_ui->comboTTM->setCurrentIndex(session->isAutoTMMDisabledByDefault() ? 0 : 1); - m_ui->comboTTM->blockSignals(false); - connect(m_ui->comboTTM, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::TMMChanged); - - connect(m_ui->savePath, &FileSystemPathEdit::selectedPathChanged, this, &AddNewTorrentDialog::onSavePathChanged); - connect(m_ui->downloadPath, &FileSystemPathEdit::selectedPathChanged, this, &AddNewTorrentDialog::onDownloadPathChanged); - connect(m_ui->groupBoxDownloadPath, &QGroupBox::toggled, this, &AddNewTorrentDialog::onUseDownloadPathChanged); + u"

    " + tr("None") + u" - " + tr("No stop condition is set.") + u"

    " + + tr("Metadata received") + u" - " + tr("Torrent will stop after metadata is received.") + + u" " + tr("Torrents that have metadata initially will be added as stopped.") + u"

    " + + tr("Files checked") + u" - " + tr("Torrent will stop after files are initially checked.") + + u" " + tr("This will also download metadata if it wasn't there initially.") + u"

    "); + m_ui->stopConditionComboBox->addItem(tr("None"), QVariant::fromValue(BitTorrent::Torrent::StopCondition::None)); + m_ui->stopConditionComboBox->addItem(tr("Files checked"), QVariant::fromValue(BitTorrent::Torrent::StopCondition::FilesChecked)); m_ui->checkBoxRememberLastSavePath->setChecked(m_storeRememberLastSavePath); - - m_ui->contentLayoutComboBox->setCurrentIndex( - static_cast(m_torrentParams.contentLayout.value_or(session->torrentContentLayout()))); - connect(m_ui->contentLayoutComboBox, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::contentLayoutChanged); - - m_ui->sequentialCheckBox->setChecked(m_torrentParams.sequential); - m_ui->firstLastCheckBox->setChecked(m_torrentParams.firstLastPiecePriority); - - m_ui->skipCheckingCheckBox->setChecked(m_torrentParams.skipChecking); m_ui->doNotDeleteTorrentCheckBox->setVisible(TorrentFileGuard::autoDeleteMode() != TorrentFileGuard::Never); - // Load categories - QStringList categories = session->categories(); - std::sort(categories.begin(), categories.end(), Utils::Compare::NaturalLessThan()); - const QString defaultCategory = m_storeDefaultCategory; - - if (!m_torrentParams.category.isEmpty()) - m_ui->categoryComboBox->addItem(m_torrentParams.category); - if (!defaultCategory.isEmpty()) - m_ui->categoryComboBox->addItem(defaultCategory); - m_ui->categoryComboBox->addItem(u""_s); - - for (const QString &category : asConst(categories)) - { - if ((category != defaultCategory) && (category != m_torrentParams.category)) - m_ui->categoryComboBox->addItem(category); - } - - connect(m_ui->categoryComboBox, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::categoryChanged); - - m_ui->tagsLineEdit->setText(m_torrentParams.tags.join(u", "_s)); - connect(m_ui->tagsEditButton, &QAbstractButton::clicked, this, [this] - { - auto *dlg = new TorrentTagsDialog(m_torrentParams.tags, this); - dlg->setAttribute(Qt::WA_DeleteOnClose); - connect(dlg, &TorrentTagsDialog::accepted, this, [this, dlg] - { - m_torrentParams.tags = dlg->tags(); - m_ui->tagsLineEdit->setText(m_torrentParams.tags.join(u", "_s)); - }); - dlg->open(); - }); - // Torrent content filtering m_filterLine->setPlaceholderText(tr("Filter files...")); m_filterLine->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - connect(m_filterLine, &LineEdit::textChanged, m_ui->contentTreeView, &TorrentContentWidget::setFilterPattern); + m_filterLine->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_filterLine, &QWidget::customContextMenuRequested, this, &AddNewTorrentDialog::showContentFilterContextMenu); m_ui->contentFilterLayout->insertWidget(3, m_filterLine); + const auto *focusSearchHotkey = new QShortcut(QKeySequence::Find, this); + connect(focusSearchHotkey, &QShortcut::activated, this, [this]() + { + m_filterLine->setFocus(); + m_filterLine->selectAll(); + }); loadState(); - connect(m_ui->buttonSelectAll, &QPushButton::clicked, m_ui->contentTreeView, &TorrentContentWidget::checkAll); - connect(m_ui->buttonSelectNone, &QPushButton::clicked, m_ui->contentTreeView, &TorrentContentWidget::checkNone); - if (const QByteArray state = m_storeTreeHeaderState; !state.isEmpty()) m_ui->contentTreeView->header()->restoreState(state); // Hide useless columns after loading the header state @@ -396,17 +344,34 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::TorrentDescriptor &to m_ui->contentTreeView->setColumnsVisibilityMode(TorrentContentWidget::ColumnsVisibilityMode::Locked); m_ui->contentTreeView->setDoubleClickAction(TorrentContentWidget::DoubleClickAction::Rename); - m_ui->labelCommentData->setText(tr("Not Available", "This comment is unavailable")); - m_ui->labelDateData->setText(tr("Not Available", "This date is unavailable")); - - m_filterLine->blockSignals(true); - - // Default focus - if (m_ui->comboTTM->currentIndex() == 0) // 0 is Manual mode - m_ui->savePath->setFocus(); - else - m_ui->categoryComboBox->setFocus(); - + connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(m_ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); + connect(m_ui->buttonSave, &QPushButton::clicked, this, &AddNewTorrentDialog::saveTorrentFile); + connect(m_ui->savePath, &FileSystemPathEdit::selectedPathChanged, this, &AddNewTorrentDialog::onSavePathChanged); + connect(m_ui->downloadPath, &FileSystemPathEdit::selectedPathChanged, this, &AddNewTorrentDialog::onDownloadPathChanged); + connect(m_ui->groupBoxDownloadPath, &QGroupBox::toggled, this, &AddNewTorrentDialog::onUseDownloadPathChanged); + connect(m_ui->comboTMM, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::TMMChanged); + connect(m_ui->startTorrentCheckBox, &QCheckBox::toggled, this, [this](const bool checked) + { + m_ui->stopConditionLabel->setEnabled(checked); + m_ui->stopConditionComboBox->setEnabled(checked); + }); + connect(m_ui->contentLayoutComboBox, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::contentLayoutChanged); + connect(m_ui->categoryComboBox, &QComboBox::currentIndexChanged, this, &AddNewTorrentDialog::categoryChanged); + connect(m_ui->tagsEditButton, &QAbstractButton::clicked, this, [this] + { + auto *dlg = new TorrentTagsDialog(m_currentContext->torrentParams.tags, this); + dlg->setAttribute(Qt::WA_DeleteOnClose); + connect(dlg, &TorrentTagsDialog::accepted, this, [this, dlg] + { + m_currentContext->torrentParams.tags = dlg->tags(); + m_ui->tagsLineEdit->setText(Utils::String::joinIntoString(m_currentContext->torrentParams.tags, u", "_s)); + }); + dlg->open(); + }); + connect(m_filterLine, &LineEdit::textChanged, this, &AddNewTorrentDialog::setContentFilterPattern); + connect(m_ui->buttonSelectAll, &QPushButton::clicked, m_ui->contentTreeView, &TorrentContentWidget::checkAll); + connect(m_ui->buttonSelectNone, &QPushButton::clicked, m_ui->contentTreeView, &TorrentContentWidget::checkNone); connect(Preferences::instance(), &Preferences::changed, [] { const int length = Preferences::instance()->addNewTorrentDialogSavePathHistoryLength(); @@ -414,25 +379,7 @@ AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::TorrentDescriptor &to , QStringList(settings()->loadValue(KEY_SAVEPATHHISTORY).mid(0, length))); }); - const BitTorrent::InfoHash infoHash = m_torrentDescr.infoHash(); - - m_ui->labelInfohash1Data->setText(infoHash.v1().isValid() ? infoHash.v1().toString() : tr("N/A")); - m_ui->labelInfohash2Data->setText(infoHash.v2().isValid() ? infoHash.v2().toString() : tr("N/A")); - - if (hasMetadata()) - { - setupTreeview(); - } - else - { - // Set dialog title - const QString torrentName = m_torrentDescr.name(); - setWindowTitle(torrentName.isEmpty() ? tr("Magnet link") : torrentName); - updateDiskSpaceLabel(); - setMetadataProgressIndicator(true, tr("Retrieving metadata...")); - } - - TMMChanged(m_ui->comboTTM->currentIndex()); + setCurrentContext(std::make_shared(Context {torrentDescr, inParams})); } AddNewTorrentDialog::~AddNewTorrentDialog() @@ -441,16 +388,6 @@ AddNewTorrentDialog::~AddNewTorrentDialog() delete m_ui; } -BitTorrent::TorrentDescriptor AddNewTorrentDialog::torrentDescriptor() const -{ - return m_torrentDescr; -} - -BitTorrent::AddTorrentParams AddNewTorrentDialog::addTorrentParams() const -{ - return m_torrentParams; -} - bool AddNewTorrentDialog::isDoNotDeleteTorrentChecked() const { return m_ui->doNotDeleteTorrentCheckBox->isChecked(); @@ -466,9 +403,16 @@ void AddNewTorrentDialog::loadState() void AddNewTorrentDialog::saveState() { + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const bool hasMetadata = torrentDescr.info().has_value(); + m_storeDialogSize = size(); m_storeSplitterState = m_ui->splitter->saveState(); - if (hasMetadata()) + if (hasMetadata) m_storeTreeHeaderState = m_ui->contentTreeView->header()->saveState(); } @@ -482,15 +426,175 @@ void AddNewTorrentDialog::showEvent(QShowEvent *event) raise(); } +void AddNewTorrentDialog::setCurrentContext(const std::shared_ptr context) +{ + Q_ASSERT(context); + if (!context) [[unlikely]] + return; + + m_currentContext = context; + + const QSignalBlocker comboTMMSignalBlocker {m_ui->comboTMM}; + const QSignalBlocker startTorrentCheckBoxSignalBlocker {m_ui->startTorrentCheckBox}; + const QSignalBlocker contentLayoutComboBoxSignalBlocker {m_ui->contentLayoutComboBox}; + const QSignalBlocker categoryComboBoxSignalBlocker {m_ui->categoryComboBox}; + + const BitTorrent::AddTorrentParams &addTorrentParams = m_currentContext->torrentParams; + const auto *session = BitTorrent::Session::instance(); + + // TODO: set dialog file properties using m_torrentParams.filePriorities + + m_ui->comboTMM->setCurrentIndex(addTorrentParams.useAutoTMM.value_or(!session->isAutoTMMDisabledByDefault()) ? 1 : 0); + m_ui->addToQueueTopCheckBox->setChecked(addTorrentParams.addToQueueTop.value_or(session->isAddTorrentToQueueTop())); + m_ui->startTorrentCheckBox->setChecked(!addTorrentParams.addStopped.value_or(session->isAddTorrentStopped())); + m_ui->stopConditionLabel->setEnabled(m_ui->startTorrentCheckBox->isChecked()); + m_ui->stopConditionComboBox->setEnabled(m_ui->startTorrentCheckBox->isChecked()); + m_ui->contentLayoutComboBox->setCurrentIndex( + static_cast(addTorrentParams.contentLayout.value_or(session->torrentContentLayout()))); + m_ui->sequentialCheckBox->setChecked(addTorrentParams.sequential); + m_ui->firstLastCheckBox->setChecked(addTorrentParams.firstLastPiecePriority); + m_ui->skipCheckingCheckBox->setChecked(addTorrentParams.skipChecking); + m_ui->tagsLineEdit->setText(Utils::String::joinIntoString(addTorrentParams.tags, u", "_s)); + + // Load categories + QStringList categories = session->categories(); + std::sort(categories.begin(), categories.end(), Utils::Compare::NaturalLessThan()); + const QString defaultCategory = m_storeDefaultCategory; + + if (!addTorrentParams.category.isEmpty()) + m_ui->categoryComboBox->addItem(addTorrentParams.category); + if (!defaultCategory.isEmpty()) + m_ui->categoryComboBox->addItem(defaultCategory); + m_ui->categoryComboBox->addItem(u""_s); + + for (const QString &category : asConst(categories)) + { + if ((category != defaultCategory) && (category != addTorrentParams.category)) + m_ui->categoryComboBox->addItem(category); + } + + m_filterLine->blockSignals(true); + m_filterLine->clear(); + + // Default focus + if (m_ui->comboTMM->currentIndex() == 0) // 0 is Manual mode + m_ui->savePath->setFocus(); + else + m_ui->categoryComboBox->setFocus(); + + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const BitTorrent::InfoHash infoHash = torrentDescr.infoHash(); + const bool hasMetadata = torrentDescr.info().has_value(); + + if (hasMetadata) + m_ui->stopConditionComboBox->removeItem(m_ui->stopConditionComboBox->findData(QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived))); + else + m_ui->stopConditionComboBox->insertItem(1, tr("Metadata received"), QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived)); + const auto stopCondition = addTorrentParams.stopCondition.value_or(session->torrentStopCondition()); + if (hasMetadata && (stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived)) + { + m_ui->startTorrentCheckBox->setChecked(false); + m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(QVariant::fromValue(BitTorrent::Torrent::StopCondition::None))); + } + else + { + m_ui->startTorrentCheckBox->setChecked(!addTorrentParams.addStopped.value_or(session->isAddTorrentStopped())); + m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(QVariant::fromValue(stopCondition))); + } + + m_ui->labelInfohash1Data->setText(infoHash.v1().isValid() ? infoHash.v1().toString() : tr("N/A")); + m_ui->labelInfohash2Data->setText(infoHash.v2().isValid() ? infoHash.v2().toString() : tr("N/A")); + + if (hasMetadata) + { + m_ui->lblMetaLoading->setVisible(false); + m_ui->progMetaLoading->setVisible(false); + m_ui->buttonSave->setVisible(false); + setupTreeview(); + } + else + { + // Set dialog title + const QString torrentName = torrentDescr.name(); + setWindowTitle(torrentName.isEmpty() ? tr("Magnet link") : torrentName); + m_ui->labelCommentData->setText(tr("Not Available", "This comment is unavailable")); + m_ui->labelDateData->setText(tr("Not Available", "This date is unavailable")); + updateDiskSpaceLabel(); + setMetadataProgressIndicator(true, tr("Retrieving metadata...")); + } + + TMMChanged(m_ui->comboTMM->currentIndex()); +} + +void AddNewTorrentDialog::updateCurrentContext() +{ + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + + BitTorrent::AddTorrentParams &addTorrentParams = m_currentContext->torrentParams; + + addTorrentParams.skipChecking = m_ui->skipCheckingCheckBox->isChecked(); + + // Category + addTorrentParams.category = m_ui->categoryComboBox->currentText(); + if (m_ui->defaultCategoryCheckbox->isChecked()) + m_storeDefaultCategory = addTorrentParams.category; + + m_storeRememberLastSavePath = m_ui->checkBoxRememberLastSavePath->isChecked(); + + addTorrentParams.addToQueueTop = m_ui->addToQueueTopCheckBox->isChecked(); + addTorrentParams.addStopped = !m_ui->startTorrentCheckBox->isChecked(); + addTorrentParams.stopCondition = m_ui->stopConditionComboBox->currentData().value(); + addTorrentParams.contentLayout = static_cast(m_ui->contentLayoutComboBox->currentIndex()); + + addTorrentParams.sequential = m_ui->sequentialCheckBox->isChecked(); + addTorrentParams.firstLastPiecePriority = m_ui->firstLastCheckBox->isChecked(); + + const bool useAutoTMM = (m_ui->comboTMM->currentIndex() == 1); // 1 is Automatic mode. Handle all non 1 values as manual mode. + addTorrentParams.useAutoTMM = useAutoTMM; + if (!useAutoTMM) + { + const int savePathHistoryLength = Preferences::instance()->addNewTorrentDialogSavePathHistoryLength(); + const Path savePath = m_ui->savePath->selectedPath(); + addTorrentParams.savePath = savePath; + updatePathHistory(KEY_SAVEPATHHISTORY, savePath, savePathHistoryLength); + + addTorrentParams.useDownloadPath = m_ui->groupBoxDownloadPath->isChecked(); + if (addTorrentParams.useDownloadPath) + { + const Path downloadPath = m_ui->downloadPath->selectedPath(); + addTorrentParams.downloadPath = downloadPath; + updatePathHistory(KEY_DOWNLOADPATHHISTORY, downloadPath, savePathHistoryLength); + } + else + { + addTorrentParams.downloadPath = Path(); + } + } + else + { + addTorrentParams.savePath = Path(); + addTorrentParams.downloadPath = Path(); + addTorrentParams.useDownloadPath = std::nullopt; + } +} + void AddNewTorrentDialog::updateDiskSpaceLabel() { + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const bool hasMetadata = torrentDescr.info().has_value(); + // Determine torrent size qlonglong torrentSize = 0; - - if (hasMetadata()) + if (hasMetadata) { - const auto torrentInfo = *m_torrentDescr.info(); - const QVector &priorities = m_contentAdaptor->filePriorities(); + const auto torrentInfo = *torrentDescr.info(); + const QList &priorities = m_contentAdaptor->filePriorities(); Q_ASSERT(priorities.size() == torrentInfo.filesCount()); for (int i = 0; i < priorities.size(); ++i) { @@ -529,7 +633,7 @@ void AddNewTorrentDialog::onUseDownloadPathChanged(const bool checked) void AddNewTorrentDialog::categoryChanged([[maybe_unused]] const int index) { - if (m_ui->comboTTM->currentIndex() == 1) + if (m_ui->comboTMM->currentIndex() == 1) { const auto *btSession = BitTorrent::Session::instance(); const QString categoryName = m_ui->categoryComboBox->currentText(); @@ -548,7 +652,14 @@ void AddNewTorrentDialog::categoryChanged([[maybe_unused]] const int index) void AddNewTorrentDialog::contentLayoutChanged() { - if (!hasMetadata()) + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const bool hasMetadata = torrentDescr.info().has_value(); + + if (!hasMetadata) return; const auto contentLayout = static_cast(m_ui->contentLayoutComboBox->currentIndex()); @@ -558,37 +669,66 @@ void AddNewTorrentDialog::contentLayoutChanged() void AddNewTorrentDialog::saveTorrentFile() { - Q_ASSERT(hasMetadata()); - if (!hasMetadata()) [[unlikely]] + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] return; - const auto torrentInfo = *m_torrentDescr.info(); + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const bool hasMetadata = torrentDescr.info().has_value(); + + Q_ASSERT(hasMetadata); + if (!hasMetadata) [[unlikely]] + return; + + const auto torrentInfo = *torrentDescr.info(); const QString filter {tr("Torrent file (*%1)").arg(TORRENT_FILE_EXTENSION)}; Path path {QFileDialog::getSaveFileName(this, tr("Save as torrent file") , QDir::home().absoluteFilePath(torrentInfo.name() + TORRENT_FILE_EXTENSION) , filter)}; - if (path.isEmpty()) return; + if (path.isEmpty()) + return; if (!path.hasExtension(TORRENT_FILE_EXTENSION)) path += TORRENT_FILE_EXTENSION; - const auto result = m_torrentDescr.saveToFile(path); - if (!result) + if (const auto result = torrentDescr.saveToFile(path); !result) { QMessageBox::critical(this, tr("I/O Error") , tr("Couldn't export torrent metadata file '%1'. Reason: %2.").arg(path.toString(), result.error())); } } -bool AddNewTorrentDialog::hasMetadata() const +void AddNewTorrentDialog::showContentFilterContextMenu() +{ + QMenu *menu = m_filterLine->createStandardContextMenu(); + + auto *formatMenu = new FilterPatternFormatMenu(m_storeFilterPatternFormat.get(FilterPatternFormat::Wildcards), menu); + connect(formatMenu, &FilterPatternFormatMenu::patternFormatChanged, this, [this](const FilterPatternFormat format) + { + m_storeFilterPatternFormat = format; + setContentFilterPattern(); + }); + + menu->addSeparator(); + menu->addMenu(formatMenu); + menu->setAttribute(Qt::WA_DeleteOnClose); + menu->popup(QCursor::pos()); +} + +void AddNewTorrentDialog::setContentFilterPattern() { - return m_torrentDescr.info().has_value(); + m_ui->contentTreeView->setFilterPattern(m_filterLine->text(), m_storeFilterPatternFormat.get(FilterPatternFormat::Wildcards)); } void AddNewTorrentDialog::populateSavePaths() { + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + + const BitTorrent::AddTorrentParams &addTorrentParams = m_currentContext->torrentParams; const auto *btSession = BitTorrent::Session::instance(); m_ui->savePath->blockSignals(true); @@ -610,8 +750,8 @@ void AddNewTorrentDialog::populateSavePaths() } else { - if (!m_torrentParams.savePath.isEmpty()) - setPath(m_ui->savePath, m_torrentParams.savePath); + if (!addTorrentParams.savePath.isEmpty()) + setPath(m_ui->savePath, addTorrentParams.savePath); else if (!m_storeRememberLastSavePath) setPath(m_ui->savePath, btSession->savePath()); else @@ -642,11 +782,11 @@ void AddNewTorrentDialog::populateSavePaths() } else { - const bool useDownloadPath = m_torrentParams.useDownloadPath.value_or(btSession->isDownloadPathEnabled()); + const bool useDownloadPath = addTorrentParams.useDownloadPath.value_or(btSession->isDownloadPathEnabled()); m_ui->groupBoxDownloadPath->setChecked(useDownloadPath); - if (!m_torrentParams.downloadPath.isEmpty()) - setPath(m_ui->downloadPath, m_torrentParams.downloadPath); + if (!addTorrentParams.downloadPath.isEmpty()) + setPath(m_ui->downloadPath, addTorrentParams.downloadPath); else if (!m_storeRememberLastSavePath) setPath(m_ui->downloadPath, btSession->downloadPath()); else @@ -663,63 +803,32 @@ void AddNewTorrentDialog::populateSavePaths() void AddNewTorrentDialog::accept() { - // TODO: Check if destination actually exists - m_torrentParams.skipChecking = m_ui->skipCheckingCheckBox->isChecked(); - - // Category - m_torrentParams.category = m_ui->categoryComboBox->currentText(); - if (m_ui->defaultCategoryCheckbox->isChecked()) - m_storeDefaultCategory = m_torrentParams.category; - - m_storeRememberLastSavePath = m_ui->checkBoxRememberLastSavePath->isChecked(); - - m_torrentParams.addToQueueTop = m_ui->addToQueueTopCheckBox->isChecked(); - m_torrentParams.addPaused = !m_ui->startTorrentCheckBox->isChecked(); - m_torrentParams.stopCondition = m_ui->stopConditionComboBox->currentData().value(); - m_torrentParams.contentLayout = static_cast(m_ui->contentLayoutComboBox->currentIndex()); - - m_torrentParams.sequential = m_ui->sequentialCheckBox->isChecked(); - m_torrentParams.firstLastPiecePriority = m_ui->firstLastCheckBox->isChecked(); - - const bool useAutoTMM = (m_ui->comboTTM->currentIndex() == 1); // 1 is Automatic mode. Handle all non 1 values as manual mode. - m_torrentParams.useAutoTMM = useAutoTMM; - if (!useAutoTMM) - { - const int savePathHistoryLength = Preferences::instance()->addNewTorrentDialogSavePathHistoryLength(); - const Path savePath = m_ui->savePath->selectedPath(); - m_torrentParams.savePath = savePath; - updatePathHistory(KEY_SAVEPATHHISTORY, savePath, savePathHistoryLength); + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; - m_torrentParams.useDownloadPath = m_ui->groupBoxDownloadPath->isChecked(); - if (m_torrentParams.useDownloadPath) - { - const Path downloadPath = m_ui->downloadPath->selectedPath(); - m_torrentParams.downloadPath = downloadPath; - updatePathHistory(KEY_DOWNLOADPATHHISTORY, downloadPath, savePathHistoryLength); - } - else - { - m_torrentParams.downloadPath = Path(); - } - } - else - { - m_torrentParams.savePath = Path(); - m_torrentParams.downloadPath = Path(); - m_torrentParams.useDownloadPath = std::nullopt; - } + updateCurrentContext(); + emit torrentAccepted(m_currentContext->torrentDescr, m_currentContext->torrentParams); - setEnabled(!m_ui->checkBoxNeverShow->isChecked()); + Preferences::instance()->setAddNewTorrentDialogEnabled(!m_ui->checkBoxNeverShow->isChecked()); QDialog::accept(); } void AddNewTorrentDialog::reject() { - if (!hasMetadata()) + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + + emit torrentRejected(m_currentContext->torrentDescr); + + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const bool hasMetadata = torrentDescr.info().has_value(); + if (!hasMetadata) { setMetadataProgressIndicator(false); - BitTorrent::Session::instance()->cancelDownloadMetadata(m_torrentDescr.infoHash().toTorrentID()); + BitTorrent::Session::instance()->cancelDownloadMetadata(torrentDescr.infoHash().toTorrentID()); } QDialog::reject(); @@ -727,26 +836,39 @@ void AddNewTorrentDialog::reject() void AddNewTorrentDialog::updateMetadata(const BitTorrent::TorrentInfo &metadata) { + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] + return; + Q_ASSERT(metadata.isValid()); if (!metadata.isValid()) [[unlikely]] return; - Q_ASSERT(metadata.matchesInfoHash(m_torrentDescr.infoHash())); - if (!metadata.matchesInfoHash(m_torrentDescr.infoHash())) [[unlikely]] + BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + Q_ASSERT(metadata.matchesInfoHash(torrentDescr.infoHash())); + if (!metadata.matchesInfoHash(torrentDescr.infoHash())) [[unlikely]] return; - m_torrentDescr.setTorrentInfo(metadata); + torrentDescr.setTorrentInfo(metadata); setMetadataProgressIndicator(true, tr("Parsing metadata...")); - const auto stopCondition = m_ui->stopConditionComboBox->currentData().value(); - if (stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived) - m_ui->startTorrentCheckBox->setChecked(false); // Update UI setupTreeview(); setMetadataProgressIndicator(false, tr("Metadata retrieval complete")); + if (const auto stopCondition = m_ui->stopConditionComboBox->currentData().value() + ; stopCondition == BitTorrent::Torrent::StopCondition::MetadataReceived) + { + m_ui->startTorrentCheckBox->setChecked(false); + + const auto index = m_ui->stopConditionComboBox->currentIndex(); + m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData( + QVariant::fromValue(BitTorrent::Torrent::StopCondition::None))); + m_ui->stopConditionComboBox->removeItem(index); + } + m_ui->buttonSave->setVisible(true); - if (m_torrentDescr.infoHash().v2().isValid()) + if (torrentDescr.infoHash().v2().isValid()) { m_ui->buttonSave->setEnabled(false); m_ui->buttonSave->setToolTip(tr("Cannot create v2 torrent until its data is fully downloaded.")); @@ -763,24 +885,32 @@ void AddNewTorrentDialog::setMetadataProgressIndicator(bool visibleIndicator, co void AddNewTorrentDialog::setupTreeview() { - Q_ASSERT(hasMetadata()); - if (!hasMetadata()) [[unlikely]] + Q_ASSERT(m_currentContext); + if (!m_currentContext) [[unlikely]] return; - // Set dialog title - setWindowTitle(m_torrentDescr.name()); + const BitTorrent::TorrentDescriptor &torrentDescr = m_currentContext->torrentDescr; + const bool hasMetadata = torrentDescr.info().has_value(); - const auto &torrentInfo = *m_torrentDescr.info(); + Q_ASSERT(hasMetadata); + if (!hasMetadata) [[unlikely]] + return; + + // Set dialog title + setWindowTitle(torrentDescr.name()); // Set torrent information - m_ui->labelCommentData->setText(Utils::Misc::parseHtmlLinks(torrentInfo.comment().toHtmlEscaped())); - m_ui->labelDateData->setText(!torrentInfo.creationDate().isNull() ? QLocale().toString(torrentInfo.creationDate(), QLocale::ShortFormat) : tr("Not available")); + m_ui->labelCommentData->setText(Utils::Misc::parseHtmlLinks(torrentDescr.comment().toHtmlEscaped())); + m_ui->labelDateData->setText(!torrentDescr.creationDate().isNull() ? QLocale().toString(torrentDescr.creationDate(), QLocale::ShortFormat) : tr("Not available")); - if (m_torrentParams.filePaths.isEmpty()) - m_torrentParams.filePaths = torrentInfo.filePaths(); + const auto &torrentInfo = *torrentDescr.info(); - m_contentAdaptor = std::make_unique(torrentInfo, m_torrentParams.filePaths - , m_torrentParams.filePriorities, [this] { updateDiskSpaceLabel(); }); + BitTorrent::AddTorrentParams &addTorrentParams = m_currentContext->torrentParams; + if (addTorrentParams.filePaths.isEmpty()) + addTorrentParams.filePaths = torrentInfo.filePaths(); + + m_contentAdaptor = std::make_unique(torrentInfo, addTorrentParams.filePaths + , addTorrentParams.filePriorities, [this] { updateDiskSpaceLabel(); }); const auto contentLayout = static_cast(m_ui->contentLayoutComboBox->currentIndex()); m_contentAdaptor->applyContentLayout(contentLayout); @@ -788,16 +918,8 @@ void AddNewTorrentDialog::setupTreeview() if (BitTorrent::Session::instance()->isExcludedFileNamesEnabled()) { // Check file name blacklist for torrents that are manually added - QVector priorities = m_contentAdaptor->filePriorities(); - for (int i = 0; i < priorities.size(); ++i) - { - if (priorities[i] == BitTorrent::DownloadPriority::Ignored) - continue; - - if (BitTorrent::Session::instance()->isFilenameExcluded(torrentInfo.filePath(i).filename())) - priorities[i] = BitTorrent::DownloadPriority::Ignored; - } - + QList priorities = m_contentAdaptor->filePriorities(); + BitTorrent::Session::instance()->applyFilenameFilter(m_contentAdaptor->filePaths(), priorities); m_contentAdaptor->prioritizeFiles(priorities); } diff --git a/src/gui/addnewtorrentdialog.h b/src/gui/addnewtorrentdialog.h index 16c68eaccafc..bc530953bd91 100644 --- a/src/gui/addnewtorrentdialog.h +++ b/src/gui/addnewtorrentdialog.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022-2023 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -33,18 +33,24 @@ #include -#include "base/bittorrent/addtorrentparams.h" -#include "base/bittorrent/torrentdescriptor.h" #include "base/path.h" #include "base/settingvalue.h" +#include "filterpatternformat.h" + +class LineEdit; + +namespace BitTorrent +{ + class TorrentDescriptor; + class TorrentInfo; + struct AddTorrentParams; +} namespace Ui { class AddNewTorrentDialog; } -class LineEdit; - class AddNewTorrentDialog final : public QDialog { Q_OBJECT @@ -55,12 +61,13 @@ class AddNewTorrentDialog final : public QDialog , const BitTorrent::AddTorrentParams &inParams, QWidget *parent); ~AddNewTorrentDialog() override; - BitTorrent::TorrentDescriptor torrentDescriptor() const; - BitTorrent::AddTorrentParams addTorrentParams() const; bool isDoNotDeleteTorrentChecked() const; - void updateMetadata(const BitTorrent::TorrentInfo &metadata); +signals: + void torrentAccepted(const BitTorrent::TorrentDescriptor &torrentDescriptor, const BitTorrent::AddTorrentParams &addTorrentParams); + void torrentRejected(const BitTorrent::TorrentDescriptor &torrentDescriptor); + private slots: void updateDiskSpaceLabel(); void onSavePathChanged(const Path &newPath); @@ -75,29 +82,34 @@ private slots: private: class TorrentContentAdaptor; + struct Context; + + void showEvent(QShowEvent *event) override; + void setCurrentContext(std::shared_ptr context); + void updateCurrentContext(); void populateSavePaths(); void loadState(); void saveState(); void setMetadataProgressIndicator(bool visibleIndicator, const QString &labelText = {}); void setupTreeview(); void saveTorrentFile(); - bool hasMetadata() const; - - void showEvent(QShowEvent *event) override; + void showContentFilterContextMenu(); + void setContentFilterPattern(); Ui::AddNewTorrentDialog *m_ui = nullptr; std::unique_ptr m_contentAdaptor; - BitTorrent::TorrentDescriptor m_torrentDescr; - BitTorrent::AddTorrentParams m_torrentParams; int m_savePathIndex = -1; int m_downloadPathIndex = -1; bool m_useDownloadPath = false; LineEdit *m_filterLine = nullptr; + std::shared_ptr m_currentContext; + SettingValue m_storeDialogSize; SettingValue m_storeDefaultCategory; SettingValue m_storeRememberLastSavePath; SettingValue m_storeTreeHeaderState; SettingValue m_storeSplitterState; + SettingValue m_storeFilterPatternFormat; }; diff --git a/src/gui/addnewtorrentdialog.ui b/src/gui/addnewtorrentdialog.ui index 0c9a96e1f61f..7e17af2d6453 100644 --- a/src/gui/addnewtorrentdialog.ui +++ b/src/gui/addnewtorrentdialog.ui @@ -14,10 +14,10 @@ - QFrame::NoFrame + QFrame::Shape::NoFrame - QAbstractScrollArea::AdjustToContents + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents true @@ -47,7 +47,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal false @@ -76,7 +76,7 @@ - + Automatic mode means that various torrent properties(eg save path) will be decided by the associated category @@ -95,7 +95,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -139,7 +139,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -164,7 +164,7 @@ - Torrent settings + Torrent options @@ -188,13 +188,13 @@ true - QComboBox::InsertAtTop + QComboBox::InsertPolicy::InsertAtTop
    - + Set as default category @@ -260,33 +260,14 @@ - - - 0 - - - - None - - - - - Metadata received - - - - - Files checked - - - +
    - Qt::Horizontal + Qt::Orientation::Horizontal @@ -370,7 +351,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -397,26 +378,71 @@ Torrent information - - + + - Info hash v1: + Size: + + + + Date: + + + + + + + Info hash v1: + + + + + + + Qt::TextInteractionFlag::TextSelectableByMouse + + + + + + + Info hash v2: + + + + + + + Qt::TextInteractionFlag::TextSelectableByMouse + + + + + + + Comment: + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + + + - QFrame::NoFrame + QFrame::Shape::NoFrame - QAbstractScrollArea::AdjustToContents + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContents true @@ -446,10 +472,10 @@ - Qt::RichText + Qt::TextFormat::RichText - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop true @@ -458,7 +484,7 @@ true - Qt::TextBrowserInteraction + Qt::TextInteractionFlag::TextSelectableByKeyboard|Qt::TextInteractionFlag::TextSelectableByMouse @@ -466,51 +492,6 @@ - - - - Comment: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - Size: - - - - - - - Qt::TextSelectableByMouse - - - - - - - Date: - - - - - - - Info hash v2: - - - - - - - Qt::TextSelectableByMouse - - - @@ -537,7 +518,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -558,10 +539,10 @@ - Qt::CustomContextMenu + Qt::ContextMenuPolicy::CustomContextMenu - QAbstractItemView::ExtendedSelection + QAbstractItemView::SelectionMode::ExtendedSelection true @@ -588,7 +569,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -642,7 +623,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/addtorrentparamswidget.cpp b/src/gui/addtorrentparamswidget.cpp index d82fe600b169..dd5203dd2f1a 100644 --- a/src/gui/addtorrentparamswidget.cpp +++ b/src/gui/addtorrentparamswidget.cpp @@ -33,6 +33,7 @@ #include "base/bittorrent/session.h" #include "base/bittorrent/torrent.h" #include "base/utils/compare.h" +#include "base/utils/string.h" #include "flowlayout.h" #include "fspathedit.h" #include "torrenttagsdialog.h" @@ -112,7 +113,7 @@ AddTorrentParamsWidget::AddTorrentParamsWidget(BitTorrent::AddTorrentParams addT connect(dlg, &TorrentTagsDialog::accepted, this, [this, dlg] { m_addTorrentParams.tags = dlg->tags(); - m_ui->tagsLineEdit->setText(m_addTorrentParams.tags.join(u", "_s)); + m_ui->tagsLineEdit->setText(Utils::String::joinIntoString(m_addTorrentParams.tags, u", "_s)); }); dlg->open(); }); @@ -142,7 +143,13 @@ void AddTorrentParamsWidget::setAddTorrentParams(BitTorrent::AddTorrentParams ad BitTorrent::AddTorrentParams AddTorrentParamsWidget::addTorrentParams() const { - return cleanParams(m_addTorrentParams); + BitTorrent::AddTorrentParams addTorrentParams = cleanParams(m_addTorrentParams); + addTorrentParams.ratioLimit = m_ui->torrentShareLimitsWidget->ratioLimit().value(); + addTorrentParams.seedingTimeLimit = m_ui->torrentShareLimitsWidget->seedingTimeLimit().value(); + addTorrentParams.inactiveSeedingTimeLimit = m_ui->torrentShareLimitsWidget->inactiveSeedingTimeLimit().value(); + addTorrentParams.shareLimitAction = m_ui->torrentShareLimitsWidget->shareLimitAction().value(); + + return addTorrentParams; } void AddTorrentParamsWidget::populate() @@ -230,18 +237,18 @@ void AddTorrentParamsWidget::populate() m_addTorrentParams.stopCondition = data.value(); }); - m_ui->tagsLineEdit->setText(m_addTorrentParams.tags.join(u", "_s)); + m_ui->tagsLineEdit->setText(Utils::String::joinIntoString(m_addTorrentParams.tags, u", "_s)); m_ui->startTorrentComboBox->disconnect(this); - m_ui->startTorrentComboBox->setCurrentIndex(m_addTorrentParams.addPaused - ? m_ui->startTorrentComboBox->findData(!*m_addTorrentParams.addPaused) : 0); + m_ui->startTorrentComboBox->setCurrentIndex(m_addTorrentParams.addStopped + ? m_ui->startTorrentComboBox->findData(!*m_addTorrentParams.addStopped) : 0); connect(m_ui->startTorrentComboBox, &QComboBox::currentIndexChanged, this, [this] { const QVariant data = m_ui->startTorrentComboBox->currentData(); if (!data.isValid()) - m_addTorrentParams.addPaused = std::nullopt; + m_addTorrentParams.addStopped = std::nullopt; else - m_addTorrentParams.addPaused = !data.toBool(); + m_addTorrentParams.addStopped = !data.toBool(); }); m_ui->skipCheckingCheckBox->disconnect(this); @@ -262,6 +269,11 @@ void AddTorrentParamsWidget::populate() else m_addTorrentParams.addToQueueTop = data.toBool(); }); + + m_ui->torrentShareLimitsWidget->setRatioLimit(m_addTorrentParams.ratioLimit); + m_ui->torrentShareLimitsWidget->setSeedingTimeLimit(m_addTorrentParams.seedingTimeLimit); + m_ui->torrentShareLimitsWidget->setInactiveSeedingTimeLimit(m_addTorrentParams.inactiveSeedingTimeLimit); + m_ui->torrentShareLimitsWidget->setShareLimitAction(m_addTorrentParams.shareLimitAction); } void AddTorrentParamsWidget::loadCustomSavePathOptions() diff --git a/src/gui/addtorrentparamswidget.ui b/src/gui/addtorrentparamswidget.ui index e43d8816975b..58c5969d7898 100644 --- a/src/gui/addtorrentparamswidget.ui +++ b/src/gui/addtorrentparamswidget.ui @@ -7,7 +7,7 @@ 0 0 503 - 366 + 440 @@ -33,7 +33,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -81,7 +81,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -120,14 +120,14 @@ true - QComboBox::InsertAtTop + QComboBox::InsertPolicy::InsertAtTop - Qt::Horizontal + Qt::Orientation::Horizontal @@ -348,6 +348,18 @@ + + + + Torrent share limits + + + + + + + + @@ -357,6 +369,12 @@
    gui/fspathedit.h
    1 + + TorrentShareLimitsWidget + QWidget +
    gui/torrentsharelimitswidget.h
    + 1 +
    diff --git a/src/gui/advancedsettings.cpp b/src/gui/advancedsettings.cpp index 187194d02b35..deb4cb5d3094 100644 --- a/src/gui/advancedsettings.cpp +++ b/src/gui/advancedsettings.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2016 qBittorrent project + * Copyright (C) 2016-2024 qBittorrent project * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,6 +30,7 @@ #include +#include #include #include #include @@ -63,6 +64,7 @@ namespace // qBittorrent section QBITTORRENT_HEADER, RESUME_DATA_STORAGE, + TORRENT_CONTENT_REMOVE_OPTION, #if defined(QBT_USES_LIBTORRENT2) && !defined(Q_OS_MACOS) MEMORY_WORKING_SET_LIMIT, #endif @@ -75,10 +77,12 @@ namespace NETWORK_IFACE_ADDRESS, // behavior SAVE_RESUME_DATA_INTERVAL, + SAVE_STATISTICS_INTERVAL, TORRENT_FILE_SIZE_LIMIT, CONFIRM_RECHECK_TORRENT, RECHECK_COMPLETED, // UI related + APP_INSTANCE_NAME, LIST_REFRESH, RESOLVE_HOSTS, RESOLVE_COUNTRIES, @@ -103,7 +107,10 @@ namespace #if defined(Q_OS_MACOS) || defined(Q_OS_WIN) ENABLE_MARK_OF_THE_WEB, #endif // Q_OS_MACOS || Q_OS_WIN + IGNORE_SSL_ERRORS, PYTHON_EXECUTABLE_PATH, + START_SESSION_PAUSED, + SESSION_SHUTDOWN_TIMEOUT, // libtorrent section LIBTORRENT_HEADER, @@ -156,6 +163,7 @@ namespace ANNOUNCE_ALL_TRACKERS, ANNOUNCE_ALL_TIERS, ANNOUNCE_IP, + ANNOUNCE_PORT, MAX_CONCURRENT_HTTP_ANNOUNCES, STOP_TRACKER_TIMEOUT, PEER_TURNOVER, @@ -257,6 +265,8 @@ void AdvancedSettings::saveAdvancedSettings() const session->setSocketBacklogSize(m_spinBoxSocketBacklogSize.value()); // Save resume data interval session->setSaveResumeDataInterval(m_spinBoxSaveResumeDataInterval.value()); + // Save statistics interval + session->setSaveStatisticsInterval(std::chrono::minutes(m_spinBoxSaveStatisticsInterval.value())); // .torrent file size limit pref->setTorrentFileSizeLimit(m_spinBoxTorrentFileSizeLimit.value() * 1024 * 1024); // Outgoing ports @@ -280,6 +290,8 @@ void AdvancedSettings::saveAdvancedSettings() const session->setBlockPeersOnPrivilegedPorts(m_checkBoxBlockPeersOnPrivilegedPorts.isChecked()); // Recheck torrents on completion pref->recheckTorrentsOnCompletion(m_checkBoxRecheckCompleted.isChecked()); + // Customize application instance name + app()->setInstanceName(m_lineEditAppInstanceName.text()); // Transfer list refresh interval session->setRefreshInterval(m_spinBoxListRefresh.value()); // Peer resolution @@ -298,6 +310,8 @@ void AdvancedSettings::saveAdvancedSettings() const // Construct a QHostAddress to filter malformed strings const QHostAddress addr(m_lineEditAnnounceIP.text().trimmed()); session->setAnnounceIP(addr.toString()); + // Announce Port + session->setAnnouncePort(m_spinBoxAnnouncePort.value()); // Max concurrent HTTP announces session->setMaxConcurrentHTTPAnnounces(m_spinBoxMaxConcurrentHTTPAnnounces.value()); // Stop tracker timeout @@ -326,8 +340,14 @@ void AdvancedSettings::saveAdvancedSettings() const // Mark-of-the-Web pref->setMarkOfTheWebEnabled(m_checkBoxMarkOfTheWeb.isChecked()); #endif // Q_OS_MACOS || Q_OS_WIN + // Ignore SSL errors + pref->setIgnoreSSLErrors(m_checkBoxIgnoreSSLErrors.isChecked()); // Python executable path pref->setPythonExecutablePath(Path(m_pythonExecutablePath.text().trimmed())); + // Start session paused + session->setStartPaused(m_checkBoxStartSessionPaused.isChecked()); + // Session shutdown timeout + session->setShutdownTimeout(m_spinBoxSessionShutdownTimeout.value()); // Choking algorithm session->setChokingAlgorithm(m_comboBoxChokingAlgorithm.currentData().value()); // Seed choking algorithm @@ -355,6 +375,8 @@ void AdvancedSettings::saveAdvancedSettings() const session->setI2PInboundLength(m_spinBoxI2PInboundLength.value()); session->setI2POutboundLength(m_spinBoxI2POutboundLength.value()); #endif + + session->setTorrentContentRemoveOption(m_comboBoxTorrentContentRemoveOption.currentData().value()); } #ifndef QBT_USES_LIBTORRENT2 @@ -391,7 +413,7 @@ void AdvancedSettings::updateInterfaceAddressCombo() case QAbstractSocket::IPv6Protocol: return Utils::Net::canonicalIPv6Addr(address).toString(); default: - Q_ASSERT(false); + Q_UNREACHABLE(); break; } return {}; @@ -463,6 +485,11 @@ void AdvancedSettings::loadAdvancedSettings() m_comboBoxResumeDataStorage.setCurrentIndex(m_comboBoxResumeDataStorage.findData(QVariant::fromValue(session->resumeDataStorageType()))); addRow(RESUME_DATA_STORAGE, tr("Resume data storage type (requires restart)"), &m_comboBoxResumeDataStorage); + m_comboBoxTorrentContentRemoveOption.addItem(tr("Delete files permanently"), QVariant::fromValue(BitTorrent::TorrentContentRemoveOption::Delete)); + m_comboBoxTorrentContentRemoveOption.addItem(tr("Move files to trash (if possible)"), QVariant::fromValue(BitTorrent::TorrentContentRemoveOption::MoveToTrash)); + m_comboBoxTorrentContentRemoveOption.setCurrentIndex(m_comboBoxTorrentContentRemoveOption.findData(QVariant::fromValue(session->torrentContentRemoveOption()))); + addRow(TORRENT_CONTENT_REMOVE_OPTION, tr("Torrent content removing mode"), &m_comboBoxTorrentContentRemoveOption); + #if defined(QBT_USES_LIBTORRENT2) && !defined(Q_OS_MACOS) // Physical memory (RAM) usage limit m_spinBoxMemoryWorkingSetLimit.setMinimum(1); @@ -568,6 +595,7 @@ void AdvancedSettings::loadAdvancedSettings() m_comboBoxDiskIOType.addItem(tr("Default"), QVariant::fromValue(BitTorrent::DiskIOType::Default)); m_comboBoxDiskIOType.addItem(tr("Memory mapped files"), QVariant::fromValue(BitTorrent::DiskIOType::MMap)); m_comboBoxDiskIOType.addItem(tr("POSIX-compliant"), QVariant::fromValue(BitTorrent::DiskIOType::Posix)); + m_comboBoxDiskIOType.addItem(tr("Simple pread/pwrite"), QVariant::fromValue(BitTorrent::DiskIOType::SimplePreadPwrite)); m_comboBoxDiskIOType.setCurrentIndex(m_comboBoxDiskIOType.findData(QVariant::fromValue(session->diskIOType()))); addRow(DISK_IO_TYPE, tr("Disk IO type (requires restart)") + u' ' + makeLink(u"https://www.libtorrent.org/single-page-ref.html#default-disk-io-constructor", u"(?)") , &m_comboBoxDiskIOType); @@ -654,6 +682,13 @@ void AdvancedSettings::loadAdvancedSettings() m_spinBoxSaveResumeDataInterval.setSuffix(tr(" min", " minutes")); m_spinBoxSaveResumeDataInterval.setSpecialValueText(tr("0 (disabled)")); addRow(SAVE_RESUME_DATA_INTERVAL, tr("Save resume data interval [0: disabled]", "How often the fastresume file is saved."), &m_spinBoxSaveResumeDataInterval); + // Save statistics interval + m_spinBoxSaveStatisticsInterval.setMinimum(0); + m_spinBoxSaveStatisticsInterval.setMaximum(std::numeric_limits::max()); + m_spinBoxSaveStatisticsInterval.setValue(session->saveStatisticsInterval().count()); + m_spinBoxSaveStatisticsInterval.setSuffix(tr(" min", " minutes")); + m_spinBoxSaveStatisticsInterval.setSpecialValueText(tr("0 (disabled)")); + addRow(SAVE_STATISTICS_INTERVAL, tr("Save statistics interval [0: disabled]", "How often the statistics file is saved."), &m_spinBoxSaveStatisticsInterval); // .torrent file size limit m_spinBoxTorrentFileSizeLimit.setMinimum(1); m_spinBoxTorrentFileSizeLimit.setMaximum(std::numeric_limits::max() / 1024 / 1024); @@ -723,6 +758,10 @@ void AdvancedSettings::loadAdvancedSettings() // Recheck completed torrents m_checkBoxRecheckCompleted.setChecked(pref->recheckTorrentsOnCompletion()); addRow(RECHECK_COMPLETED, tr("Recheck torrents on completion"), &m_checkBoxRecheckCompleted); + // Customize application instance name + m_lineEditAppInstanceName.setText(app()->instanceName()); + m_lineEditAppInstanceName.setToolTip(tr("It appends the text to the window title to help distinguish qBittorent instances")); + addRow(APP_INSTANCE_NAME, tr("Customize application instance name"), &m_lineEditAppInstanceName); // Refresh interval m_spinBoxListRefresh.setMinimum(30); m_spinBoxListRefresh.setMaximum(99999); @@ -765,6 +804,13 @@ void AdvancedSettings::loadAdvancedSettings() addRow(ANNOUNCE_IP, (tr("IP address reported to trackers (requires restart)") + u' ' + makeLink(u"https://www.libtorrent.org/reference-Settings.html#announce_ip", u"(?)")) , &m_lineEditAnnounceIP); + // Announce port + m_spinBoxAnnouncePort.setMinimum(0); + m_spinBoxAnnouncePort.setMaximum(65535); + m_spinBoxAnnouncePort.setValue(session->announcePort()); + addRow(ANNOUNCE_PORT, (tr("Port reported to trackers (requires restart) [0: listening port]") + + u' ' + makeLink(u"https://www.libtorrent.org/reference-Settings.html#announce_port", u"(?)")) + , &m_spinBoxAnnouncePort); // Max concurrent HTTP announces m_spinBoxMaxConcurrentHTTPAnnounces.setMaximum(std::numeric_limits::max()); m_spinBoxMaxConcurrentHTTPAnnounces.setValue(session->maxConcurrentHTTPAnnounces()); @@ -832,10 +878,25 @@ void AdvancedSettings::loadAdvancedSettings() m_checkBoxMarkOfTheWeb.setChecked(pref->isMarkOfTheWebEnabled()); addRow(ENABLE_MARK_OF_THE_WEB, motwLabel, &m_checkBoxMarkOfTheWeb); #endif // Q_OS_MACOS || Q_OS_WIN + // Ignore SSL errors + m_checkBoxIgnoreSSLErrors.setChecked(pref->isIgnoreSSLErrors()); + m_checkBoxIgnoreSSLErrors.setToolTip(tr("Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc)")); + addRow(IGNORE_SSL_ERRORS, tr("Ignore SSL errors"), &m_checkBoxIgnoreSSLErrors); // Python executable path m_pythonExecutablePath.setPlaceholderText(tr("(Auto detect if empty)")); m_pythonExecutablePath.setText(pref->getPythonExecutablePath().toString()); addRow(PYTHON_EXECUTABLE_PATH, tr("Python executable path (may require restart)"), &m_pythonExecutablePath); + // Start session paused + m_checkBoxStartSessionPaused.setChecked(session->isStartPaused()); + addRow(START_SESSION_PAUSED, tr("Start BitTorrent session in paused state"), &m_checkBoxStartSessionPaused); + // Session shutdown timeout + m_spinBoxSessionShutdownTimeout.setMinimum(-1); + m_spinBoxSessionShutdownTimeout.setMaximum(std::numeric_limits::max()); + m_spinBoxSessionShutdownTimeout.setValue(session->shutdownTimeout()); + m_spinBoxSessionShutdownTimeout.setSuffix(tr(" sec", " seconds")); + m_spinBoxSessionShutdownTimeout.setSpecialValueText(tr("-1 (unlimited)")); + m_spinBoxSessionShutdownTimeout.setToolTip(u"Sets the timeout for the session to be shut down gracefully, at which point it will be forcibly terminated.
    Note that this does not apply to the saving resume data time."_s); + addRow(SESSION_SHUTDOWN_TIMEOUT, tr("BitTorrent session shutdown timeout [-1: unlimited]"), &m_spinBoxSessionShutdownTimeout); // Choking algorithm m_comboBoxChokingAlgorithm.addItem(tr("Fixed slots"), QVariant::fromValue(BitTorrent::ChokingAlgorithm::FixedSlots)); m_comboBoxChokingAlgorithm.addItem(tr("Upload rate based"), QVariant::fromValue(BitTorrent::ChokingAlgorithm::RateBased)); @@ -933,12 +994,19 @@ void AdvancedSettings::addRow(const int row, const QString &text, T *widget) { auto *label = new QLabel(text); label->setOpenExternalLinks(true); + label->setToolTip(widget->toolTip()); setCellWidget(row, PROPERTY, label); setCellWidget(row, VALUE, widget); if constexpr (std::is_same_v) + { +#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) + connect(widget, &QCheckBox::checkStateChanged, this, &AdvancedSettings::settingsChanged); +#else connect(widget, &QCheckBox::stateChanged, this, &AdvancedSettings::settingsChanged); +#endif + } else if constexpr (std::is_same_v) connect(widget, qOverload(&QSpinBox::valueChanged), this, &AdvancedSettings::settingsChanged); else if constexpr (std::is_same_v) diff --git a/src/gui/advancedsettings.h b/src/gui/advancedsettings.h index 8dbc39fd773d..316e688493b4 100644 --- a/src/gui/advancedsettings.h +++ b/src/gui/advancedsettings.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 qBittorrent project + * Copyright (C) 2015-2024 qBittorrent project * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -68,21 +68,22 @@ private slots: void loadAdvancedSettings(); template void addRow(int row, const QString &text, T *widget); - QSpinBox m_spinBoxSaveResumeDataInterval, m_spinBoxTorrentFileSizeLimit, m_spinBoxBdecodeDepthLimit, m_spinBoxBdecodeTokenLimit, + QSpinBox m_spinBoxSaveResumeDataInterval, m_spinBoxSaveStatisticsInterval, m_spinBoxTorrentFileSizeLimit, m_spinBoxBdecodeDepthLimit, m_spinBoxBdecodeTokenLimit, m_spinBoxAsyncIOThreads, m_spinBoxFilePoolSize, m_spinBoxCheckingMemUsage, m_spinBoxDiskQueueSize, m_spinBoxOutgoingPortsMin, m_spinBoxOutgoingPortsMax, m_spinBoxUPnPLeaseDuration, m_spinBoxPeerToS, m_spinBoxListRefresh, m_spinBoxTrackerPort, m_spinBoxSendBufferWatermark, m_spinBoxSendBufferLowWatermark, m_spinBoxSendBufferWatermarkFactor, m_spinBoxConnectionSpeed, m_spinBoxSocketSendBufferSize, m_spinBoxSocketReceiveBufferSize, m_spinBoxSocketBacklogSize, - m_spinBoxMaxConcurrentHTTPAnnounces, m_spinBoxStopTrackerTimeout, + m_spinBoxAnnouncePort, m_spinBoxMaxConcurrentHTTPAnnounces, m_spinBoxStopTrackerTimeout, m_spinBoxSessionShutdownTimeout, m_spinBoxSavePathHistoryLength, m_spinBoxPeerTurnover, m_spinBoxPeerTurnoverCutoff, m_spinBoxPeerTurnoverInterval, m_spinBoxRequestQueueSize; QCheckBox m_checkBoxOsCache, m_checkBoxRecheckCompleted, m_checkBoxResolveCountries, m_checkBoxResolveHosts, m_checkBoxProgramNotifications, m_checkBoxTorrentAddedNotifications, m_checkBoxReannounceWhenAddressChanged, m_checkBoxTrackerFavicon, m_checkBoxTrackerStatus, - m_checkBoxTrackerPortForwarding, m_checkBoxConfirmTorrentRecheck, m_checkBoxConfirmRemoveAllTags, m_checkBoxAnnounceAllTrackers, m_checkBoxAnnounceAllTiers, - m_checkBoxMultiConnectionsPerIp, m_checkBoxValidateHTTPSTrackerCertificate, m_checkBoxSSRFMitigation, m_checkBoxBlockPeersOnPrivilegedPorts, m_checkBoxPieceExtentAffinity, - m_checkBoxSuggestMode, m_checkBoxSpeedWidgetEnabled, m_checkBoxIDNSupport, m_checkBoxConfirmRemoveTrackerFromAllTorrents; + m_checkBoxTrackerPortForwarding, m_checkBoxIgnoreSSLErrors, m_checkBoxConfirmTorrentRecheck, m_checkBoxConfirmRemoveAllTags, m_checkBoxAnnounceAllTrackers, + m_checkBoxAnnounceAllTiers, m_checkBoxMultiConnectionsPerIp, m_checkBoxValidateHTTPSTrackerCertificate, m_checkBoxSSRFMitigation, m_checkBoxBlockPeersOnPrivilegedPorts, + m_checkBoxPieceExtentAffinity, m_checkBoxSuggestMode, m_checkBoxSpeedWidgetEnabled, m_checkBoxIDNSupport, m_checkBoxConfirmRemoveTrackerFromAllTorrents, + m_checkBoxStartSessionPaused; QComboBox m_comboBoxInterface, m_comboBoxInterfaceAddress, m_comboBoxDiskIOReadMode, m_comboBoxDiskIOWriteMode, m_comboBoxUtpMixedMode, m_comboBoxChokingAlgorithm, - m_comboBoxSeedChokingAlgorithm, m_comboBoxResumeDataStorage; - QLineEdit m_pythonExecutablePath, m_lineEditAnnounceIP, m_lineEditDHTBootstrapNodes; + m_comboBoxSeedChokingAlgorithm, m_comboBoxResumeDataStorage, m_comboBoxTorrentContentRemoveOption; + QLineEdit m_lineEditAppInstanceName, m_pythonExecutablePath, m_lineEditAnnounceIP, m_lineEditDHTBootstrapNodes; #ifndef QBT_USES_LIBTORRENT2 QSpinBox m_spinBoxCache, m_spinBoxCacheTTL; diff --git a/src/gui/autoexpandabledialog.ui b/src/gui/autoexpandabledialog.ui index a934bcfa91de..a33825136e0d 100644 --- a/src/gui/autoexpandabledialog.ui +++ b/src/gui/autoexpandabledialog.ui @@ -20,7 +20,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/banlistoptionsdialog.ui b/src/gui/banlistoptionsdialog.ui index a96b6e34dc76..51abbf6dd48d 100644 --- a/src/gui/banlistoptionsdialog.ui +++ b/src/gui/banlistoptionsdialog.ui @@ -29,10 +29,10 @@ true
    - QFrame::Panel + QFrame::Shape::Panel - QFrame::Raised + QFrame::Shadow::Raised 1 @@ -50,7 +50,7 @@ - QAbstractItemView::ExtendedSelection + QAbstractItemView::SelectionMode::ExtendedSelection false @@ -96,18 +96,12 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok - - bannedIPList - txtIP - buttonBanIP - buttonDeleteIP - diff --git a/src/gui/colorscheme.h b/src/gui/colorscheme.h new file mode 100644 index 000000000000..62dcb0d6f1fd --- /dev/null +++ b/src/gui/colorscheme.h @@ -0,0 +1,45 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +inline namespace ColorSchemeNS +{ + Q_NAMESPACE + + enum class ColorScheme + { + System , + Light, + Dark + }; + + Q_ENUM_NS(ColorScheme) +} diff --git a/src/gui/cookiesdialog.ui b/src/gui/cookiesdialog.ui index 536f4e2acdba..343b3b7d018a 100644 --- a/src/gui/cookiesdialog.ui +++ b/src/gui/cookiesdialog.ui @@ -19,13 +19,13 @@ - QAbstractItemView::AllEditTriggers + QAbstractItemView::EditTrigger::AllEditTriggers true - QAbstractItemView::ExtendedSelection + QAbstractItemView::SelectionMode::ExtendedSelection @@ -34,7 +34,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -50,10 +50,10 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::Fixed + QSizePolicy::Policy::Fixed @@ -69,7 +69,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -86,10 +86,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/deletionconfirmationdialog.cpp b/src/gui/deletionconfirmationdialog.cpp index e667a4ad3d62..9f5fe5452521 100644 --- a/src/gui/deletionconfirmationdialog.cpp +++ b/src/gui/deletionconfirmationdialog.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -30,6 +31,7 @@ #include +#include "base/bittorrent/session.h" #include "base/global.h" #include "base/preferences.h" #include "uithememanager.h" @@ -53,8 +55,8 @@ DeletionConfirmationDialog::DeletionConfirmationDialog(QWidget *parent, const in m_ui->rememberBtn->setIcon(UIThemeManager::instance()->getIcon(u"object-locked"_s)); m_ui->rememberBtn->setIconSize(Utils::Gui::mediumIconSize()); - m_ui->checkPermDelete->setChecked(defaultDeleteFiles || Preferences::instance()->deleteTorrentFilesAsDefault()); - connect(m_ui->checkPermDelete, &QCheckBox::clicked, this, &DeletionConfirmationDialog::updateRememberButtonState); + m_ui->checkRemoveContent->setChecked(defaultDeleteFiles || Preferences::instance()->removeTorrentContent()); + connect(m_ui->checkRemoveContent, &QCheckBox::clicked, this, &DeletionConfirmationDialog::updateRememberButtonState); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Remove")); m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setFocus(); @@ -67,18 +69,18 @@ DeletionConfirmationDialog::~DeletionConfirmationDialog() delete m_ui; } -bool DeletionConfirmationDialog::isDeleteFileSelected() const +bool DeletionConfirmationDialog::isRemoveContentSelected() const { - return m_ui->checkPermDelete->isChecked(); + return m_ui->checkRemoveContent->isChecked(); } void DeletionConfirmationDialog::updateRememberButtonState() { - m_ui->rememberBtn->setEnabled(m_ui->checkPermDelete->isChecked() != Preferences::instance()->deleteTorrentFilesAsDefault()); + m_ui->rememberBtn->setEnabled(m_ui->checkRemoveContent->isChecked() != Preferences::instance()->removeTorrentContent()); } void DeletionConfirmationDialog::on_rememberBtn_clicked() { - Preferences::instance()->setDeleteTorrentFilesAsDefault(m_ui->checkPermDelete->isChecked()); + Preferences::instance()->setRemoveTorrentContent(m_ui->checkRemoveContent->isChecked()); m_ui->rememberBtn->setEnabled(false); } diff --git a/src/gui/deletionconfirmationdialog.h b/src/gui/deletionconfirmationdialog.h index f93f1746b38e..9ff657849a83 100644 --- a/src/gui/deletionconfirmationdialog.h +++ b/src/gui/deletionconfirmationdialog.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -37,16 +38,16 @@ namespace Ui class DeletionConfirmationDialog; } -class DeletionConfirmationDialog : public QDialog +class DeletionConfirmationDialog final : public QDialog { Q_OBJECT Q_DISABLE_COPY_MOVE(DeletionConfirmationDialog) public: DeletionConfirmationDialog(QWidget *parent, int size, const QString &name, bool defaultDeleteFiles); - ~DeletionConfirmationDialog(); + ~DeletionConfirmationDialog() override; - bool isDeleteFileSelected() const; + bool isRemoveContentSelected() const; private slots: void updateRememberButtonState(); diff --git a/src/gui/deletionconfirmationdialog.ui b/src/gui/deletionconfirmationdialog.ui index 9912e2b44cc0..3686c5d26477 100644 --- a/src/gui/deletionconfirmationdialog.ui +++ b/src/gui/deletionconfirmationdialog.ui @@ -47,7 +47,7 @@ message goes here - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter true @@ -75,7 +75,7 @@ - + 0 @@ -88,7 +88,7 @@ - Also permanently delete the files + Also remove the content files @@ -103,10 +103,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/desktopintegration.cpp b/src/gui/desktopintegration.cpp index 86c9a961baed..b927633d92fa 100644 --- a/src/gui/desktopintegration.cpp +++ b/src/gui/desktopintegration.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -31,6 +31,7 @@ #include +#include #include #include @@ -72,6 +73,7 @@ using namespace std::chrono_literals; DesktopIntegration::DesktopIntegration(QObject *parent) : QObject(parent) , m_storeNotificationEnabled {NOTIFICATIONS_SETTINGS_KEY(u"Enabled"_s), true} + , m_menu {new QMenu} #ifdef QBT_USES_DBUS , m_storeNotificationTimeOut {NOTIFICATIONS_SETTINGS_KEY(u"Timeout"_s), -1} #endif @@ -79,6 +81,7 @@ DesktopIntegration::DesktopIntegration(QObject *parent) #ifdef Q_OS_MACOS desktopIntegrationInstance = this; MacUtils::overrideDockClickHandler(handleDockClicked); + m_menu->setAsDockMenu(); #else if (Preferences::instance()->systemTrayEnabled()) createTrayIcon(); @@ -131,46 +134,6 @@ QMenu *DesktopIntegration::menu() const return m_menu; } -void DesktopIntegration::setMenu(QMenu *menu) -{ - if (menu == m_menu) - return; - -#if defined Q_OS_MACOS - if (m_menu) - delete m_menu; - - m_menu = menu; - - if (m_menu) - m_menu->setAsDockMenu(); -#elif defined Q_OS_UNIX - const bool systemTrayEnabled = m_systrayIcon; - if (m_menu) - { - if (m_systrayIcon) - { - delete m_systrayIcon; - m_systrayIcon = nullptr; - } - delete m_menu; - } - - m_menu = menu; - - if (systemTrayEnabled && !m_systrayIcon) - createTrayIcon(); -#else - if (m_menu) - delete m_menu; - - m_menu = menu; - - if (m_systrayIcon) - m_systrayIcon->setContextMenu(m_menu); -#endif -} - bool DesktopIntegration::isNotificationsEnabled() const { return m_storeNotificationEnabled; @@ -283,17 +246,25 @@ void DesktopIntegration::createTrayIcon() QIcon DesktopIntegration::getSystrayIcon() const { const TrayIcon::Style style = Preferences::instance()->trayIconStyle(); + QIcon icon; switch (style) { default: case TrayIcon::Style::Normal: - return UIThemeManager::instance()->getIcon(u"qbittorrent-tray"_s); - + icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray"_s); + break; case TrayIcon::Style::MonoDark: - return UIThemeManager::instance()->getIcon(u"qbittorrent-tray-dark"_s); - + icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray-dark"_s); + break; case TrayIcon::Style::MonoLight: - return UIThemeManager::instance()->getIcon(u"qbittorrent-tray-light"_s); + icon = UIThemeManager::instance()->getIcon(u"qbittorrent-tray-light"_s); + break; } +#ifdef Q_OS_UNIX + // Workaround for invisible tray icon in KDE, https://bugreports.qt.io/browse/QTBUG-53550 + if (qEnvironmentVariable("XDG_CURRENT_DESKTOP").compare(u"KDE", Qt::CaseInsensitive) == 0) + return icon.pixmap(32); +#endif + return icon; } #endif // Q_OS_MACOS diff --git a/src/gui/desktopintegration.h b/src/gui/desktopintegration.h index 62dbbc4a90bc..c4b9aba49e42 100644 --- a/src/gui/desktopintegration.h +++ b/src/gui/desktopintegration.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -56,7 +56,6 @@ class DesktopIntegration final : public QObject void setToolTip(const QString &toolTip); QMenu *menu() const; - void setMenu(QMenu *menu); bool isNotificationsEnabled() const; void setNotificationsEnabled(bool value); diff --git a/src/gui/downloadfromurldialog.cpp b/src/gui/downloadfromurldialog.cpp index 183689b94640..ac073777437f 100644 --- a/src/gui/downloadfromurldialog.cpp +++ b/src/gui/downloadfromurldialog.cpp @@ -90,11 +90,12 @@ DownloadFromURLDialog::DownloadFromURLDialog(QWidget *parent) urls << urlString; } - const QString text = urls.join(u'\n') - + (!urls.isEmpty() ? u"\n" : u""); - - m_ui->textUrls->setText(text); - m_ui->textUrls->moveCursor(QTextCursor::End); + if (!urls.isEmpty()) + { + m_ui->textUrls->setText(urls.join(u'\n') + u"\n"); + m_ui->textUrls->moveCursor(QTextCursor::End); + m_ui->buttonBox->setFocus(); + } if (const QSize dialogSize = m_storeDialogSize; dialogSize.isValid()) resize(dialogSize); diff --git a/src/gui/downloadfromurldialog.ui b/src/gui/downloadfromurldialog.ui index ebe19ec6f5c7..39fa2252601e 100644 --- a/src/gui/downloadfromurldialog.ui +++ b/src/gui/downloadfromurldialog.ui @@ -18,7 +18,6 @@ - 75 true @@ -52,7 +51,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok true diff --git a/src/gui/executionlogwidget.ui b/src/gui/executionlogwidget.ui index 9de7af044921..28945c3814ee 100644 --- a/src/gui/executionlogwidget.ui +++ b/src/gui/executionlogwidget.ui @@ -26,7 +26,7 @@ - QTabWidget::East + QTabWidget::TabPosition::East 0 diff --git a/src/gui/filtermode.h b/src/gui/filtermode.h new file mode 100644 index 000000000000..621d5c69cfa2 --- /dev/null +++ b/src/gui/filtermode.h @@ -0,0 +1,36 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +enum class FilterMode +{ + PlainText = 0, + Wildcard = 1, + Regex = 2 +}; diff --git a/src/gui/filterpatternformat.h b/src/gui/filterpatternformat.h new file mode 100644 index 000000000000..71b3c5c51e2a --- /dev/null +++ b/src/gui/filterpatternformat.h @@ -0,0 +1,48 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +// Using `Q_ENUM_NS()` without a wrapper namespace in our case is not advised +// since `Q_NAMESPACE` cannot be used when the same namespace resides at different files. +// https://www.kdab.com/new-qt-5-8-meta-object-support-namespaces/#comment-143779 +inline namespace FilterPatternFormatNS +{ + Q_NAMESPACE + + enum class FilterPatternFormat + { + PlainText, + Wildcards, + Regex + }; + + Q_ENUM_NS(FilterPatternFormat) +} diff --git a/src/gui/filterpatternformatmenu.cpp b/src/gui/filterpatternformatmenu.cpp new file mode 100644 index 000000000000..d13ab685a9fd --- /dev/null +++ b/src/gui/filterpatternformatmenu.cpp @@ -0,0 +1,82 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "filterpatternformatmenu.h" + +#include + +FilterPatternFormatMenu::FilterPatternFormatMenu(const FilterPatternFormat format, QWidget *parent) + : QMenu(parent) +{ + setTitle(tr("Pattern Format")); + + auto *patternFormatGroup = new QActionGroup(this); + patternFormatGroup->setExclusive(true); + + QAction *plainTextAction = addAction(tr("Plain text")); + plainTextAction->setCheckable(true); + patternFormatGroup->addAction(plainTextAction); + + QAction *wildcardsAction = addAction(tr("Wildcards")); + wildcardsAction->setCheckable(true); + patternFormatGroup->addAction(wildcardsAction); + + QAction *regexAction = addAction(tr("Regular expression")); + regexAction->setCheckable(true); + patternFormatGroup->addAction(regexAction); + + switch (format) + { + case FilterPatternFormat::Wildcards: + default: + wildcardsAction->setChecked(true); + break; + case FilterPatternFormat::PlainText: + plainTextAction->setChecked(true); + break; + case FilterPatternFormat::Regex: + regexAction->setChecked(true); + break; + } + + connect(plainTextAction, &QAction::toggled, this, [this](const bool checked) + { + if (checked) + emit patternFormatChanged(FilterPatternFormat::PlainText); + }); + connect(wildcardsAction, &QAction::toggled, this, [this](const bool checked) + { + if (checked) + emit patternFormatChanged(FilterPatternFormat::Wildcards); + }); + connect(regexAction, &QAction::toggled, this, [this](const bool checked) + { + if (checked) + emit patternFormatChanged(FilterPatternFormat::Regex); + }); +} diff --git a/src/gui/filterpatternformatmenu.h b/src/gui/filterpatternformatmenu.h new file mode 100644 index 000000000000..e201fd89d12a --- /dev/null +++ b/src/gui/filterpatternformatmenu.h @@ -0,0 +1,45 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +#include "filterpatternformat.h" + +class FilterPatternFormatMenu final : public QMenu +{ + Q_OBJECT + Q_DISABLE_COPY_MOVE(FilterPatternFormatMenu) + +public: + explicit FilterPatternFormatMenu(FilterPatternFormat format, QWidget *parent = nullptr); + +signals: + void patternFormatChanged(FilterPatternFormat format); +}; diff --git a/src/gui/fspathedit_p.cpp b/src/gui/fspathedit_p.cpp index 83b81269e47e..370628e2c0b7 100644 --- a/src/gui/fspathedit_p.cpp +++ b/src/gui/fspathedit_p.cpp @@ -1,7 +1,8 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Mike Tzou (Chocobo1) - * Copyright (C) 2016 Eugene Shalygin + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2022 Mike Tzou (Chocobo1) + * Copyright (C) 2016 Eugene Shalygin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -32,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -159,36 +161,34 @@ QValidator::State Private::FileSystemPathValidator::validate(QString &input, [[m } Private::FileLineEdit::FileLineEdit(QWidget *parent) - : QLineEdit {parent} - , m_completerModel {new QFileSystemModel(this)} - , m_completer {new QCompleter(this)} + : QLineEdit(parent) { - m_iconProvider.setOptions(QFileIconProvider::DontUseCustomDirectoryIcons); - - m_completerModel->setIconProvider(&m_iconProvider); - m_completerModel->setOptions(QFileSystemModel::DontWatchForChanges); - - m_completer->setModel(m_completerModel); - setCompleter(m_completer); - + setCompleter(new QCompleter(this)); connect(this, &QLineEdit::textChanged, this, &FileLineEdit::validateText); } Private::FileLineEdit::~FileLineEdit() { delete m_completerModel; // has to be deleted before deleting the m_iconProvider object + delete m_iconProvider; } void Private::FileLineEdit::completeDirectoriesOnly(const bool completeDirsOnly) { - const QDir::Filters filters = QDir::NoDotAndDotDot - | (completeDirsOnly ? QDir::Dirs : QDir::AllEntries); - m_completerModel->setFilter(filters); + m_completeDirectoriesOnly = completeDirsOnly; + if (m_completerModel) + { + const QDir::Filters filters = QDir::NoDotAndDotDot + | (completeDirsOnly ? QDir::Dirs : QDir::AllEntries); + m_completerModel->setFilter(filters); + } } void Private::FileLineEdit::setFilenameFilters(const QStringList &filters) { - m_completerModel->setNameFilters(filters); + m_filenameFilters = filters; + if (m_completerModel) + m_completerModel->setNameFilters(m_filenameFilters); } void Private::FileLineEdit::setBrowseAction(QAction *action) @@ -222,6 +222,22 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e) if ((e->key() == Qt::Key_Space) && (e->modifiers() == Qt::CTRL)) { + if (!m_completerModel) + { + m_iconProvider = new QFileIconProvider; + m_iconProvider->setOptions(QFileIconProvider::DontUseCustomDirectoryIcons); + + m_completerModel = new QFileSystemModel(this); + m_completerModel->setIconProvider(m_iconProvider); + m_completerModel->setOptions(QFileSystemModel::DontWatchForChanges); + m_completerModel->setNameFilters(m_filenameFilters); + const QDir::Filters filters = QDir::NoDotAndDotDot + | (m_completeDirectoriesOnly ? QDir::Dirs : QDir::AllEntries); + m_completerModel->setFilter(filters); + + completer()->setModel(m_completerModel); + } + m_completerModel->setRootPath(Path(text()).data()); showCompletionPopup(); } @@ -243,8 +259,8 @@ void Private::FileLineEdit::contextMenuEvent(QContextMenuEvent *event) void Private::FileLineEdit::showCompletionPopup() { - m_completer->setCompletionPrefix(text()); - m_completer->complete(); + completer()->setCompletionPrefix(text()); + completer()->complete(); } void Private::FileLineEdit::validateText() diff --git a/src/gui/fspathedit_p.h b/src/gui/fspathedit_p.h index 69592281b6e1..e52face0f844 100644 --- a/src/gui/fspathedit_p.h +++ b/src/gui/fspathedit_p.h @@ -1,6 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2016 Eugene Shalygin + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2016 Eugene Shalygin * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -29,7 +30,6 @@ #pragma once #include -#include #include #include #include @@ -37,8 +37,8 @@ #include "base/pathfwd.h" class QAction; -class QCompleter; class QContextMenuEvent; +class QFileIconProvider; class QFileSystemModel; class QKeyEvent; @@ -140,10 +140,11 @@ namespace Private static QString warningText(FileSystemPathValidator::TestResult result); QFileSystemModel *m_completerModel = nullptr; - QCompleter *m_completer = nullptr; QAction *m_browseAction = nullptr; QAction *m_warningAction = nullptr; - QFileIconProvider m_iconProvider; + QFileIconProvider *m_iconProvider = nullptr; + bool m_completeDirectoriesOnly = false; + QStringList m_filenameFilters; }; class FileComboEdit final : public QComboBox, public IFileEditorWithCompletion diff --git a/src/gui/guiaddtorrentmanager.cpp b/src/gui/guiaddtorrentmanager.cpp index 57ecd713b29f..d1c733073af9 100644 --- a/src/gui/guiaddtorrentmanager.cpp +++ b/src/gui/guiaddtorrentmanager.cpp @@ -29,6 +29,8 @@ #include "guiaddtorrentmanager.h" +#include + #include "base/bittorrent/session.h" #include "base/bittorrent/torrentdescriptor.h" #include "base/logger.h" @@ -40,6 +42,40 @@ #include "mainwindow.h" #include "raisedmessagebox.h" +namespace +{ + void adjustDialogGeometry(QWidget *dialog, const QWidget *parentWindow) + { + // It is preferable to place the dialog in the center of the parent window. + // However, if it goes beyond the current screen, then move it so that it fits there + // (or, if the dialog is larger than the current screen, at least make sure that + // the upper/left coordinates of the dialog are inside it). + + QRect dialogGeometry = dialog->geometry(); + + dialogGeometry.moveCenter(parentWindow->geometry().center()); + + const QRect screenGeometry = parentWindow->screen()->availableGeometry(); + + QPoint delta = screenGeometry.bottomRight() - dialogGeometry.bottomRight(); + if (delta.x() > 0) + delta.setX(0); + if (delta.y() > 0) + delta.setY(0); + dialogGeometry.translate(delta); + + const QPoint frameOffset {10, 40}; + delta = screenGeometry.topLeft() - dialogGeometry.topLeft() + frameOffset; + if (delta.x() < 0) + delta.setX(0); + if (delta.y() < 0) + delta.setY(0); + dialogGeometry.translate(delta); + + dialog->setGeometry(dialogGeometry); + } +} + GUIAddTorrentManager::GUIAddTorrentManager(IGUIApplication *app, BitTorrent::Session *session, QObject *parent) : GUIApplicationComponent(app, session, parent) { @@ -139,7 +175,8 @@ void GUIAddTorrentManager::onMetadataDownloaded(const BitTorrent::TorrentInfo &m } } -bool GUIAddTorrentManager::processTorrent(const QString &source, const BitTorrent::TorrentDescriptor &torrentDescr, const BitTorrent::AddTorrentParams ¶ms) +bool GUIAddTorrentManager::processTorrent(const QString &source + , const BitTorrent::TorrentDescriptor &torrentDescr, const BitTorrent::AddTorrentParams ¶ms) { const bool hasMetadata = torrentDescr.info().has_value(); const BitTorrent::InfoHash infoHash = torrentDescr.infoHash(); @@ -147,33 +184,40 @@ bool GUIAddTorrentManager::processTorrent(const QString &source, const BitTorren // Prevent showing the dialog if download is already present if (BitTorrent::Torrent *torrent = btSession()->findTorrent(infoHash)) { - if (hasMetadata) - { - // Trying to set metadata to existing torrent in case if it has none - torrent->setMetadata(*torrentDescr.info()); - } - - if (torrent->isPrivate() || (hasMetadata && torrentDescr.info()->isPrivate())) + if (Preferences::instance()->confirmMergeTrackers()) { - handleDuplicateTorrent(source, torrent, tr("Trackers cannot be merged because it is a private torrent")); - } - else - { - bool mergeTrackers = btSession()->isMergeTrackersEnabled(); - if (Preferences::instance()->confirmMergeTrackers()) + if (hasMetadata) { - const QMessageBox::StandardButton btn = RaisedMessageBox::question(app()->mainWindow(), tr("Torrent is already present") - , tr("Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source?").arg(torrent->name()) - , (QMessageBox::Yes | QMessageBox::No), QMessageBox::Yes); - mergeTrackers = (btn == QMessageBox::Yes); + // Trying to set metadata to existing torrent in case if it has none + torrent->setMetadata(*torrentDescr.info()); } - if (mergeTrackers) + const bool isPrivate = torrent->isPrivate() || (hasMetadata && torrentDescr.info()->isPrivate()); + const QString dialogCaption = tr("Torrent is already present"); + if (isPrivate) + { + // We cannot merge trackers for private torrent but we still notify user + // about duplicate torrent if confirmation dialog is enabled. + RaisedMessageBox::warning(app()->mainWindow(), dialogCaption + , tr("Trackers cannot be merged because it is a private torrent.")); + } + else { - torrent->addTrackers(torrentDescr.trackers()); - torrent->addUrlSeeds(torrentDescr.urlSeeds()); + const bool mergeTrackers = btSession()->isMergeTrackersEnabled(); + const QMessageBox::StandardButton btn = RaisedMessageBox::question(app()->mainWindow(), dialogCaption + , tr("Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source?").arg(torrent->name()) + , (QMessageBox::Yes | QMessageBox::No), (mergeTrackers ? QMessageBox::Yes : QMessageBox::No)); + if (btn == QMessageBox::Yes) + { + torrent->addTrackers(torrentDescr.trackers()); + torrent->addUrlSeeds(torrentDescr.urlSeeds()); + } } } + else + { + handleDuplicateTorrent(source, torrentDescr, torrent); + } return false; } @@ -190,16 +234,27 @@ bool GUIAddTorrentManager::processTorrent(const QString &source, const BitTorren dlg->setAttribute(Qt::WA_DeleteOnClose); m_dialogs[infoHash] = dlg; - connect(dlg, &QDialog::finished, this, [this, source, infoHash, dlg](int result) + connect(dlg, &AddNewTorrentDialog::torrentAccepted, this + , [this, source, dlg](const BitTorrent::TorrentDescriptor &torrentDescr, const BitTorrent::AddTorrentParams &addTorrentParams) { if (dlg->isDoNotDeleteTorrentChecked()) - releaseTorrentFileGuard(source); - - if (result == QDialog::Accepted) - addTorrentToSession(source, dlg->torrentDescriptor(), dlg->addTorrentParams()); + { + if (auto torrentFileGuard = releaseTorrentFileGuard(source)) + torrentFileGuard->setAutoRemove(false); + } + addTorrentToSession(source, torrentDescr, addTorrentParams); + }); + connect(dlg, &AddNewTorrentDialog::torrentRejected, this, [this, source] + { + releaseTorrentFileGuard(source); + }); + connect(dlg, &QDialog::finished, this, [this, infoHash] + { m_dialogs.remove(infoHash); }); + + adjustDialogGeometry(dlg, app()->mainWindow()); dlg->show(); return true; diff --git a/src/gui/ipsubnetwhitelistoptionsdialog.ui b/src/gui/ipsubnetwhitelistoptionsdialog.ui index 9c85f79f57f5..962055d36b8c 100644 --- a/src/gui/ipsubnetwhitelistoptionsdialog.ui +++ b/src/gui/ipsubnetwhitelistoptionsdialog.ui @@ -20,10 +20,10 @@ true - QFrame::Panel + QFrame::Shape::Panel - QFrame::Raised + QFrame::Shadow::Raised @@ -80,18 +80,12 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok - - whitelistedIPSubnetList - txtIPSubnet - buttonWhitelistIPSubnet - buttonDeleteIPSubnet - diff --git a/src/gui/lineedit.cpp b/src/gui/lineedit.cpp index f388fab60d69..08a5aeea58f2 100644 --- a/src/gui/lineedit.cpp +++ b/src/gui/lineedit.cpp @@ -29,20 +29,41 @@ #include "lineedit.h" +#include + #include #include +#include #include "base/global.h" #include "uithememanager.h" +using namespace std::chrono_literals; + +namespace +{ + const std::chrono::milliseconds FILTER_INPUT_DELAY {400}; +} + LineEdit::LineEdit(QWidget *parent) : QLineEdit(parent) + , m_delayedTextChangedTimer {new QTimer(this)} { auto *action = new QAction(UIThemeManager::instance()->getIcon(u"edit-find"_s), QString(), this); addAction(action, QLineEdit::LeadingPosition); setClearButtonEnabled(true); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + + m_delayedTextChangedTimer->setSingleShot(true); + connect(m_delayedTextChangedTimer, &QTimer::timeout, this, [this] + { + emit textChanged(text()); + }); + connect(this, &QLineEdit::textChanged, this, [this] + { + m_delayedTextChangedTimer->start(FILTER_INPUT_DELAY); + }); } void LineEdit::keyPressEvent(QKeyEvent *event) diff --git a/src/gui/lineedit.h b/src/gui/lineedit.h index 55ed3bd85529..459740f86946 100644 --- a/src/gui/lineedit.h +++ b/src/gui/lineedit.h @@ -31,6 +31,9 @@ #include +class QKeyEvent; +class QTimer; + class LineEdit final : public QLineEdit { Q_OBJECT @@ -39,6 +42,11 @@ class LineEdit final : public QLineEdit public: explicit LineEdit(QWidget *parent = nullptr); +signals: + void textChanged(const QString &text); + private: void keyPressEvent(QKeyEvent *event) override; + + QTimer *m_delayedTextChangedTimer = nullptr; }; diff --git a/src/gui/log/logfiltermodel.cpp b/src/gui/log/logfiltermodel.cpp index 033deb2c9ca0..6c923735f0b6 100644 --- a/src/gui/log/logfiltermodel.cpp +++ b/src/gui/log/logfiltermodel.cpp @@ -39,7 +39,7 @@ LogFilterModel::LogFilterModel(const Log::MsgTypes types, QObject *parent) void LogFilterModel::setMessageTypes(const Log::MsgTypes types) { m_types = types; - invalidateFilter(); + invalidateRowsFilter(); } bool LogFilterModel::filterAcceptsRow(const int sourceRow, const QModelIndex &sourceParent) const diff --git a/src/gui/log/logmodel.cpp b/src/gui/log/logmodel.cpp index 3f59f7e07b7e..e1bcb9fef9e9 100644 --- a/src/gui/log/logmodel.cpp +++ b/src/gui/log/logmodel.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2020 Prince Gupta * Copyright (C) 2019 sledgehammer999 * @@ -36,65 +37,26 @@ #include "base/global.h" #include "gui/uithememanager.h" -namespace -{ - const int MAX_VISIBLE_MESSAGES = 20000; - - QColor getTimestampColor() - { - return UIThemeManager::instance()->getColor(u"Log.TimeStamp"_s); - } - - QColor getLogNormalColor() - { - return UIThemeManager::instance()->getColor(u"Log.Normal"_s); - } - - QColor getLogInfoColor() - { - return UIThemeManager::instance()->getColor(u"Log.Info"_s); - } - - QColor getLogWarningColor() - { - return UIThemeManager::instance()->getColor(u"Log.Warning"_s); - } +const int MAX_VISIBLE_MESSAGES = 20000; - QColor getLogCriticalColor() - { - return UIThemeManager::instance()->getColor(u"Log.Critical"_s); - } - - QColor getPeerBannedColor() - { - return UIThemeManager::instance()->getColor(u"Log.BannedPeer"_s); - } -} - -BaseLogModel::Message::Message(const QString &time, const QString &message, const QColor &foreground, const Log::MsgType type) - : m_time(time) - , m_message(message) - , m_foreground(foreground) - , m_type(type) +BaseLogModel::Message::Message(const QString &time, const QString &message, const Log::MsgType type) + : m_time {time} + , m_message {message} + , m_type {type} { } -QVariant BaseLogModel::Message::time() const +QString BaseLogModel::Message::time() const { return m_time; } -QVariant BaseLogModel::Message::message() const +QString BaseLogModel::Message::message() const { return m_message; } -QVariant BaseLogModel::Message::foreground() const -{ - return m_foreground; -} - -QVariant BaseLogModel::Message::type() const +Log::MsgType BaseLogModel::Message::type() const { return m_type; } @@ -102,8 +64,9 @@ QVariant BaseLogModel::Message::type() const BaseLogModel::BaseLogModel(QObject *parent) : QAbstractListModel(parent) , m_messages(MAX_VISIBLE_MESSAGES) - , m_timeForeground(getTimestampColor()) { + loadColors(); + connect(UIThemeManager::instance(), &UIThemeManager::themeChanged, this, &BaseLogModel::onUIThemeChanged); } int BaseLogModel::rowCount(const QModelIndex &) const @@ -135,7 +98,7 @@ QVariant BaseLogModel::data(const QModelIndex &index, const int role) const case TimeForegroundRole: return m_timeForeground; case MessageForegroundRole: - return message.foreground(); + return messageForeground(message); case TypeRole: return message.type(); default: @@ -160,6 +123,17 @@ void BaseLogModel::addNewMessage(const BaseLogModel::Message &message) endInsertRows(); } +void BaseLogModel::onUIThemeChanged() +{ + loadColors(); + emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1)), {TimeForegroundRole, MessageForegroundRole}); +} + +void BaseLogModel::loadColors() +{ + m_timeForeground = UIThemeManager::instance()->getColor(u"Log.TimeStamp"_s); +} + void BaseLogModel::reset() { beginResetModel(); @@ -169,14 +143,9 @@ void BaseLogModel::reset() LogMessageModel::LogMessageModel(QObject *parent) : BaseLogModel(parent) - , m_foregroundForMessageTypes - { - {Log::NORMAL, getLogNormalColor()}, - {Log::INFO, getLogInfoColor()}, - {Log::WARNING, getLogWarningColor()}, - {Log::CRITICAL, getLogCriticalColor()} - } { + loadColors(); + for (const Log::Msg &msg : asConst(Logger::instance()->getMessages())) handleNewMessage(msg); connect(Logger::instance(), &Logger::newLogMessage, this, &LogMessageModel::handleNewMessage); @@ -185,16 +154,38 @@ LogMessageModel::LogMessageModel(QObject *parent) void LogMessageModel::handleNewMessage(const Log::Msg &message) { const QString time = QLocale::system().toString(QDateTime::fromSecsSinceEpoch(message.timestamp), QLocale::ShortFormat); - const QString messageText = message.message; - const QColor foreground = m_foregroundForMessageTypes[message.type]; + addNewMessage({time, message.message, message.type}); +} - addNewMessage({time, messageText, foreground, message.type}); +QColor LogMessageModel::messageForeground(const Message &message) const +{ + return m_foregroundForMessageTypes.value(message.type()); +} + +void LogMessageModel::onUIThemeChanged() +{ + loadColors(); + BaseLogModel::onUIThemeChanged(); +} + +void LogMessageModel::loadColors() +{ + const auto *themeManager = UIThemeManager::instance(); + const QColor normalColor = themeManager->getColor(u"Log.Normal"_s); + m_foregroundForMessageTypes = + { + {Log::NORMAL, normalColor.isValid() ? normalColor : QApplication::palette().color(QPalette::Active, QPalette::WindowText)}, + {Log::INFO, themeManager->getColor(u"Log.Info"_s)}, + {Log::WARNING, themeManager->getColor(u"Log.Warning"_s)}, + {Log::CRITICAL, themeManager->getColor(u"Log.Critical"_s)} + }; } LogPeerModel::LogPeerModel(QObject *parent) : BaseLogModel(parent) - , m_bannedPeerForeground(getPeerBannedColor()) { + loadColors(); + for (const Log::Peer &peer : asConst(Logger::instance()->getPeers())) handleNewMessage(peer); connect(Logger::instance(), &Logger::newLogPeer, this, &LogPeerModel::handleNewMessage); @@ -207,5 +198,21 @@ void LogPeerModel::handleNewMessage(const Log::Peer &peer) ? tr("%1 was blocked. Reason: %2.", "0.0.0.0 was blocked. Reason: reason for blocking.").arg(peer.ip, peer.reason) : tr("%1 was banned", "0.0.0.0 was banned").arg(peer.ip); - addNewMessage({time, message, m_bannedPeerForeground, Log::NORMAL}); + addNewMessage({time, message, Log::NORMAL}); +} + +QColor LogPeerModel::messageForeground([[maybe_unused]] const Message &message) const +{ + return m_bannedPeerForeground; +} + +void LogPeerModel::onUIThemeChanged() +{ + loadColors(); + BaseLogModel::onUIThemeChanged(); +} + +void LogPeerModel::loadColors() +{ + m_bannedPeerForeground = UIThemeManager::instance()->getColor(u"Log.BannedPeer"_s); } diff --git a/src/gui/log/logmodel.h b/src/gui/log/logmodel.h index 4f88bba6257c..7056d25f0019 100644 --- a/src/gui/log/logmodel.h +++ b/src/gui/log/logmodel.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2020 Prince Gupta * Copyright (C) 2019 sledgehammer999 * @@ -62,25 +63,27 @@ class BaseLogModel : public QAbstractListModel class Message { public: - Message(const QString &time, const QString &message, const QColor &foreground, Log::MsgType type); + Message(const QString &time, const QString &message, Log::MsgType type); - QVariant time() const; - QVariant message() const; - QVariant foreground() const; - QVariant type() const; + QString time() const; + QString message() const; + Log::MsgType type() const; private: - QVariant m_time; - QVariant m_message; - QVariant m_foreground; - QVariant m_type; + QString m_time; + QString m_message; + Log::MsgType m_type; }; void addNewMessage(const Message &message); + virtual QColor messageForeground(const Message &message) const = 0; + virtual void onUIThemeChanged(); private: + void loadColors(); + boost::circular_buffer_space_optimized m_messages; - const QColor m_timeForeground; + QColor m_timeForeground; }; class LogMessageModel : public BaseLogModel @@ -95,7 +98,11 @@ private slots: void handleNewMessage(const Log::Msg &message); private: - const QHash m_foregroundForMessageTypes; + QColor messageForeground(const Message &message) const override; + void onUIThemeChanged() override; + void loadColors(); + + QHash m_foregroundForMessageTypes; }; class LogPeerModel : public BaseLogModel @@ -110,5 +117,9 @@ private slots: void handleNewMessage(const Log::Peer &peer); private: - const QColor m_bannedPeerForeground; + QColor messageForeground(const Message &message) const override; + void onUIThemeChanged() override; + void loadColors(); + + QColor m_bannedPeerForeground; }; diff --git a/src/gui/macosshiftclickhandler.cpp b/src/gui/macosshiftclickhandler.cpp new file mode 100644 index 000000000000..81ba819260de --- /dev/null +++ b/src/gui/macosshiftclickhandler.cpp @@ -0,0 +1,73 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Luke Memet (lukemmtt) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "macosshiftclickhandler.h" + +#include +#include + +MacOSShiftClickHandler::MacOSShiftClickHandler(QTreeView *treeView) + : QObject(treeView) + , m_treeView {treeView} +{ + treeView->installEventFilter(this); +} + +bool MacOSShiftClickHandler::eventFilter(QObject *watched, QEvent *event) +{ + if ((watched == m_treeView) && (event->type() == QEvent::MouseButtonPress)) + { + const auto *mouseEvent = static_cast(event); + if (mouseEvent->button() != Qt::LeftButton) + return false; + + const QModelIndex clickedIndex = m_treeView->indexAt(mouseEvent->position().toPoint()); + if (!clickedIndex.isValid()) + return false; + + const Qt::KeyboardModifiers modifiers = mouseEvent->modifiers(); + const bool shiftPressed = modifiers.testFlag(Qt::ShiftModifier); + + if (shiftPressed && m_lastClickedIndex.isValid()) + { + const QItemSelection selection(m_lastClickedIndex, clickedIndex); + const bool commandPressed = modifiers.testFlag(Qt::ControlModifier); + if (commandPressed) + m_treeView->selectionModel()->select(selection, (QItemSelectionModel::Select | QItemSelectionModel::Rows)); + else + m_treeView->selectionModel()->select(selection, (QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows)); + m_treeView->selectionModel()->setCurrentIndex(clickedIndex, QItemSelectionModel::NoUpdate); + return true; + } + + if (!modifiers.testFlags(Qt::AltModifier | Qt::MetaModifier)) + m_lastClickedIndex = clickedIndex; + } + + return QObject::eventFilter(watched, event); +} diff --git a/src/base/iconprovider.h b/src/gui/macosshiftclickhandler.h similarity index 72% rename from src/base/iconprovider.h rename to src/gui/macosshiftclickhandler.h index ea272c51d40e..43d6fda1645f 100644 --- a/src/base/iconprovider.h +++ b/src/gui/macosshiftclickhandler.h @@ -1,7 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev - * Copyright (C) 2011 Christophe Dumez + * Copyright (C) 2025 Luke Memet (lukemmtt) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,25 +29,22 @@ #pragma once #include +#include -#include "base/pathfwd.h" +class QTreeView; -class QString; - -class IconProvider final : public QObject +// Workaround for QTBUG-115838: Shift-click range selection not working properly on macOS +class MacOSShiftClickHandler final : public QObject { - Q_DISABLE_COPY_MOVE(IconProvider) + Q_OBJECT + Q_DISABLE_COPY_MOVE(MacOSShiftClickHandler) public: - static void initInstance(); - static void freeInstance(); - static IconProvider *instance(); - - virtual Path getIconPath(const QString &iconId) const; + explicit MacOSShiftClickHandler(QTreeView *treeView); -protected: - explicit IconProvider(QObject *parent = nullptr); - ~IconProvider() = default; +private: + bool eventFilter(QObject *watched, QEvent *event) override; - static IconProvider *m_instance; + QTreeView *m_treeView = nullptr; + QPersistentModelIndex m_lastClickedIndex; }; diff --git a/src/gui/macutilities.mm b/src/gui/macutilities.mm index 823a1daa91d9..77a7f450b003 100644 --- a/src/gui/macutilities.mm +++ b/src/gui/macutilities.mm @@ -34,7 +34,6 @@ #include #include #include -#include #include "base/path.h" diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index ef8458ef88fc..b98663b5c3c2 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022-2023 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -43,7 +43,6 @@ #include #include #include -#include #include #include #include @@ -54,8 +53,14 @@ #include #include #include +#include #include +#ifdef Q_OS_WIN +#include +#include +#endif + #include "base/bittorrent/session.h" #include "base/bittorrent/sessionstatus.h" #include "base/global.h" @@ -82,6 +87,7 @@ #include "powermanagement/powermanagement.h" #include "properties/peerlistwidget.h" #include "properties/propertieswidget.h" +#include "properties/proptabbar.h" #include "rss/rsswidget.h" #include "search/searchwidget.h" #include "speedlimitdialog.h" @@ -112,36 +118,39 @@ namespace const std::chrono::seconds PREVENT_SUSPEND_INTERVAL {60}; - bool isTorrentLink(const QString &str) - { - return str.startsWith(u"magnet:", Qt::CaseInsensitive) - || str.endsWith(TORRENT_FILE_EXTENSION, Qt::CaseInsensitive) - || (!str.startsWith(u"file:", Qt::CaseInsensitive) - && Net::DownloadManager::hasSupportedScheme(str)); - } +#ifdef Q_OS_WIN + const QString PYTHON_INSTALLER_URL = u"https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe"_s; + const QByteArray PYTHON_INSTALLER_MD5 = QByteArrayLiteral("f5e5d48ba86586d4bef67bcb3790d339"); + const QByteArray PYTHON_INSTALLER_SHA3_512 = QByteArrayLiteral("28ed23b82451efa5ec87e5dd18d7dacb9bc4d0a3643047091e5a687439f7e03a1c6e60ec64ee1210a0acaf2e5012504ff342ff27e5db108db05407e62aeff2f1"); +#endif } -MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) +MainWindow::MainWindow(IGUIApplication *app, const WindowState initialState, const QString &titleSuffix) : GUIApplicationComponent(app) - , m_ui(new Ui::MainWindow) - , m_storeExecutionLogEnabled(EXECUTIONLOG_SETTINGS_KEY(u"Enabled"_s)) - , m_storeDownloadTrackerFavicon(SETTINGS_KEY(u"DownloadTrackerFavicon"_s)) - , m_storeExecutionLogTypes(EXECUTIONLOG_SETTINGS_KEY(u"Types"_s), Log::MsgType::ALL) + , m_ui {new Ui::MainWindow} + , m_downloadRate {Utils::Misc::friendlyUnit(0, true)} + , m_uploadRate {Utils::Misc::friendlyUnit(0, true)} + , m_pwr {new PowerManagement} + , m_preventTimer {new QTimer(this)} + , m_storeExecutionLogEnabled {EXECUTIONLOG_SETTINGS_KEY(u"Enabled"_s)} + , m_storeDownloadTrackerFavicon {SETTINGS_KEY(u"DownloadTrackerFavicon"_s)} + , m_storeExecutionLogTypes {EXECUTIONLOG_SETTINGS_KEY(u"Types"_s), Log::MsgType::ALL} #ifdef Q_OS_MACOS - , m_badger(std::make_unique()) + , m_badger {std::make_unique()} #endif // Q_OS_MACOS { m_ui->setupUi(this); Preferences *const pref = Preferences::instance(); m_uiLocked = pref->isUILocked(); - setWindowTitle(QStringLiteral("qBittorrent " QBT_VERSION)); m_displaySpeedInTitle = pref->speedInTitleBar(); // Setting icons #ifndef Q_OS_MACOS setWindowIcon(UIThemeManager::instance()->getIcon(u"qbittorrent"_s)); #endif // Q_OS_MACOS + setTitleSuffix(titleSuffix); + #if (defined(Q_OS_UNIX)) m_ui->actionOptions->setText(tr("Preferences")); #endif @@ -164,21 +173,37 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) m_ui->actionExit->setIcon(UIThemeManager::instance()->getIcon(u"application-exit"_s)); m_ui->actionLock->setIcon(UIThemeManager::instance()->getIcon(u"object-locked"_s)); m_ui->actionOptions->setIcon(UIThemeManager::instance()->getIcon(u"configure"_s, u"preferences-system"_s)); - m_ui->actionPause->setIcon(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s)); - m_ui->actionPauseAll->setIcon(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s)); m_ui->actionStart->setIcon(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s)); - m_ui->actionStartAll->setIcon(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s)); + m_ui->actionStop->setIcon(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s)); + m_ui->actionPauseSession->setIcon(UIThemeManager::instance()->getIcon(u"pause-session"_s, u"media-playback-pause"_s)); + m_ui->actionResumeSession->setIcon(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s)); m_ui->menuAutoShutdownOnDownloadsCompletion->setIcon(UIThemeManager::instance()->getIcon(u"task-complete"_s, u"application-exit"_s)); m_ui->actionManageCookies->setIcon(UIThemeManager::instance()->getIcon(u"browser-cookies"_s, u"preferences-web-browser-cookies"_s)); m_ui->menuLog->setIcon(UIThemeManager::instance()->getIcon(u"help-contents"_s)); m_ui->actionCheckForUpdates->setIcon(UIThemeManager::instance()->getIcon(u"view-refresh"_s)); - auto *lockMenu = new QMenu(this); + m_ui->actionPauseSession->setVisible(!BitTorrent::Session::instance()->isPaused()); + m_ui->actionResumeSession->setVisible(BitTorrent::Session::instance()->isPaused()); + connect(BitTorrent::Session::instance(), &BitTorrent::Session::paused, this, [this] + { + m_ui->actionPauseSession->setVisible(false); + m_ui->actionResumeSession->setVisible(true); + refreshWindowTitle(); + refreshTrayIconTooltip(); + }); + connect(BitTorrent::Session::instance(), &BitTorrent::Session::resumed, this, [this] + { + m_ui->actionPauseSession->setVisible(true); + m_ui->actionResumeSession->setVisible(false); + refreshWindowTitle(); + refreshTrayIconTooltip(); + }); + + auto *lockMenu = new QMenu(m_ui->menuView); lockMenu->addAction(tr("&Set Password"), this, &MainWindow::defineUILockPassword); lockMenu->addAction(tr("&Clear Password"), this, &MainWindow::clearUILockPassword); m_ui->actionLock->setMenu(lockMenu); - // Creating Bittorrent session updateAltSpeedsBtn(BitTorrent::Session::instance()->isAltGlobalSpeedLimitEnabled()); connect(BitTorrent::Session::instance(), &BitTorrent::Session::speedLimitModeChanged, this, &MainWindow::updateAltSpeedsBtn); @@ -220,7 +245,7 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) m_ui->toolBar->insertWidget(m_columnFilterAction, spacer); // Transfer List tab - m_transferListWidget = new TransferListWidget(hSplitter, this); + m_transferListWidget = new TransferListWidget(app, this); m_propertiesWidget = new PropertiesWidget(hSplitter); connect(m_transferListWidget, &TransferListWidget::currentTorrentChanged, m_propertiesWidget, &PropertiesWidget::loadTorrentInfos); hSplitter->addWidget(m_transferListWidget); @@ -233,7 +258,7 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) #endif tr("Transfers")); // Filter types - const QVector filterTypes = {TransferListModel::Column::TR_NAME, TransferListModel::Column::TR_SAVE_PATH}; + const QList filterTypes = {TransferListModel::Column::TR_NAME, TransferListModel::Column::TR_SAVE_PATH}; for (const TransferListModel::Column type : filterTypes) { const QString typeName = m_transferListWidget->getSourceModel()->headerData(type, Qt::Horizontal, Qt::DisplayRole).value(); @@ -282,17 +307,14 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) // Transfer list slots connect(m_ui->actionStart, &QAction::triggered, m_transferListWidget, &TransferListWidget::startSelectedTorrents); - connect(m_ui->actionStartAll, &QAction::triggered, m_transferListWidget, &TransferListWidget::resumeAllTorrents); - connect(m_ui->actionPause, &QAction::triggered, m_transferListWidget, &TransferListWidget::pauseSelectedTorrents); - connect(m_ui->actionPauseAll, &QAction::triggered, m_transferListWidget, &TransferListWidget::pauseAllTorrents); + connect(m_ui->actionStop, &QAction::triggered, m_transferListWidget, &TransferListWidget::stopSelectedTorrents); + connect(m_ui->actionPauseSession, &QAction::triggered, m_transferListWidget, &TransferListWidget::pauseSession); + connect(m_ui->actionResumeSession, &QAction::triggered, m_transferListWidget, &TransferListWidget::resumeSession); connect(m_ui->actionDelete, &QAction::triggered, m_transferListWidget, &TransferListWidget::softDeleteSelectedTorrents); connect(m_ui->actionTopQueuePos, &QAction::triggered, m_transferListWidget, &TransferListWidget::topQueuePosSelectedTorrents); connect(m_ui->actionIncreaseQueuePos, &QAction::triggered, m_transferListWidget, &TransferListWidget::increaseQueuePosSelectedTorrents); connect(m_ui->actionDecreaseQueuePos, &QAction::triggered, m_transferListWidget, &TransferListWidget::decreaseQueuePosSelectedTorrents); connect(m_ui->actionBottomQueuePos, &QAction::triggered, m_transferListWidget, &TransferListWidget::bottomQueuePosSelectedTorrents); -#ifndef Q_OS_MACOS - connect(m_ui->actionToggleVisibility, &QAction::triggered, this, &MainWindow::toggleVisibility); -#endif connect(m_ui->actionMinimize, &QAction::triggered, this, &MainWindow::minimizeWindow); connect(m_ui->actionUseAlternativeSpeedLimits, &QAction::triggered, this, &MainWindow::toggleAlternativeSpeeds); @@ -316,8 +338,6 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) connect(m_ui->actionManageCookies, &QAction::triggered, this, &MainWindow::manageCookies); // Initialise system sleep inhibition timer - m_pwr = new PowerManagement(this); - m_preventTimer = new QTimer(this); m_preventTimer->setSingleShot(true); connect(m_preventTimer, &QTimer::timeout, this, &MainWindow::updatePowerManagementState); connect(pref, &Preferences::changed, this, &MainWindow::updatePowerManagementState); @@ -326,11 +346,9 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) // Configure BT session according to options loadPreferences(); - connect(BitTorrent::Session::instance(), &BitTorrent::Session::statsUpdated, this, &MainWindow::reloadSessionStats); + connect(BitTorrent::Session::instance(), &BitTorrent::Session::statsUpdated, this, &MainWindow::loadSessionStats); connect(BitTorrent::Session::instance(), &BitTorrent::Session::torrentsUpdated, this, &MainWindow::reloadTorrentStats); - // Accept drag 'n drops - setAcceptDrops(true); createKeyboardShortcuts(); #ifdef Q_OS_MACOS @@ -384,7 +402,7 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) // Load Window state and sizes loadSettings(); - app->desktopIntegration()->setMenu(createDesktopIntegrationMenu()); + populateDesktopIntegrationMenu(); #ifndef Q_OS_MACOS m_ui->actionLock->setVisible(app->desktopIntegration()->isActive()); connect(app->desktopIntegration(), &DesktopIntegration::stateChanged, this, [this, app]() @@ -464,7 +482,7 @@ MainWindow::MainWindow(IGUIApplication *app, WindowState initialState) { m_transferListWidget->applyStatusFilter(pref->getTransSelFilter()); m_transferListWidget->applyCategoryFilter(QString()); - m_transferListWidget->applyTagFilter(QString()); + m_transferListWidget->applyTagFilter(std::nullopt); m_transferListWidget->applyTrackerFilterAll(); } @@ -523,6 +541,16 @@ void MainWindow::setDownloadTrackerFavicon(const bool value) m_storeDownloadTrackerFavicon = value; } +void MainWindow::setTitleSuffix(const QString &suffix) +{ + const auto emDash = QChar(0x2014); + const QString separator = u' ' + emDash + u' '; + m_windowTitle = QStringLiteral("qBittorrent " QBT_VERSION) + + (!suffix.isEmpty() ? (separator + suffix) : QString()); + + refreshWindowTitle(); +} + void MainWindow::addToolbarContextMenu() { const Preferences *const pref = Preferences::instance(); @@ -711,6 +739,16 @@ void MainWindow::displaySearchTab(bool enable) if (!m_searchWidget) { m_searchWidget = new SearchWidget(app(), this); + connect(m_searchWidget, &SearchWidget::searchFinished, this, [this](const bool failed) + { + if (app()->desktopIntegration()->isNotificationsEnabled() && (currentTabWidget() != m_searchWidget)) + { + if (failed) + app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Search has failed")); + else + app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Search has finished")); + } + }); m_tabs->insertTab(1, m_searchWidget, #ifndef Q_OS_MACOS UIThemeManager::instance()->getIcon(u"edit-find"_s), @@ -724,10 +762,18 @@ void MainWindow::displaySearchTab(bool enable) } } -void MainWindow::focusSearchFilter() +void MainWindow::toggleFocusBetweenLineEdits() { - m_columnFilterEdit->setFocus(); - m_columnFilterEdit->selectAll(); + if (m_columnFilterEdit->hasFocus() && (m_propertiesWidget->tabBar()->currentIndex() == PropTabBar::FilesTab)) + { + m_propertiesWidget->contentFilterLine()->setFocus(); + m_propertiesWidget->contentFilterLine()->selectAll(); + } + else + { + m_columnFilterEdit->setFocus(); + m_columnFilterEdit->selectAll(); + } } void MainWindow::updateNbTorrents() @@ -778,8 +824,11 @@ void MainWindow::saveSplitterSettings() const void MainWindow::cleanup() { - saveSettings(); - saveSplitterSettings(); + if (!m_neverShown) + { + saveSettings(); + saveSplitterSettings(); + } // delete RSSWidget explicitly to avoid crash in // handleRSSUnreadCountUpdated() at application shutdown @@ -788,6 +837,7 @@ void MainWindow::cleanup() delete m_executableWatcher; m_preventTimer->stop(); + delete m_pwr; #if (defined(Q_OS_WIN) || defined(Q_OS_MACOS)) if (m_programUpdateTimer) @@ -852,17 +902,17 @@ void MainWindow::createKeyboardShortcuts() const auto *switchExecutionLogShortcut = new QShortcut((Qt::ALT | Qt::Key_4), this); connect(switchExecutionLogShortcut, &QShortcut::activated, this, &MainWindow::displayExecutionLogTab); const auto *switchSearchFilterShortcut = new QShortcut(QKeySequence::Find, m_transferListWidget); - connect(switchSearchFilterShortcut, &QShortcut::activated, this, &MainWindow::focusSearchFilter); + connect(switchSearchFilterShortcut, &QShortcut::activated, this, &MainWindow::toggleFocusBetweenLineEdits); const auto *switchSearchFilterShortcutAlternative = new QShortcut((Qt::CTRL | Qt::Key_E), m_transferListWidget); - connect(switchSearchFilterShortcutAlternative, &QShortcut::activated, this, &MainWindow::focusSearchFilter); + connect(switchSearchFilterShortcutAlternative, &QShortcut::activated, this, &MainWindow::toggleFocusBetweenLineEdits); m_ui->actionDocumentation->setShortcut(QKeySequence::HelpContents); m_ui->actionOptions->setShortcut(Qt::ALT | Qt::Key_O); m_ui->actionStatistics->setShortcut(Qt::CTRL | Qt::Key_I); m_ui->actionStart->setShortcut(Qt::CTRL | Qt::Key_S); - m_ui->actionStartAll->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_S); - m_ui->actionPause->setShortcut(Qt::CTRL | Qt::Key_P); - m_ui->actionPauseAll->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_P); + m_ui->actionStop->setShortcut(Qt::CTRL | Qt::Key_P); + m_ui->actionPauseSession->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_P); + m_ui->actionResumeSession->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_S); m_ui->actionBottomQueuePos->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_Minus); m_ui->actionDecreaseQueuePos->setShortcut(Qt::CTRL | Qt::Key_Minus); m_ui->actionIncreaseQueuePos->setShortcut(Qt::CTRL | Qt::Key_Plus); @@ -1085,16 +1135,13 @@ void MainWindow::keyPressEvent(QKeyEvent *event) if (event->matches(QKeySequence::Paste)) { const QMimeData *mimeData = QGuiApplication::clipboard()->mimeData(); - if (mimeData->hasText()) { const QStringList lines = mimeData->text().split(u'\n', Qt::SkipEmptyParts); - for (QString line : lines) { line = line.trimmed(); - - if (!isTorrentLink(line)) + if (!Utils::Misc::isTorrentLink(line)) continue; app()->addTorrentManager()->addTorrent(line); @@ -1133,7 +1180,7 @@ void MainWindow::closeEvent(QCloseEvent *e) } #endif // Q_OS_MACOS - const QVector allTorrents = BitTorrent::Session::instance()->torrents(); + const QList allTorrents = BitTorrent::Session::instance()->torrents(); const bool hasActiveTorrents = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [](BitTorrent::Torrent *torrent) { return torrent->isActive(); @@ -1245,72 +1292,6 @@ bool MainWindow::event(QEvent *e) return QMainWindow::event(e); } -// action executed when a file is dropped -void MainWindow::dropEvent(QDropEvent *event) -{ - event->acceptProposedAction(); - - // remove scheme - QStringList files; - if (event->mimeData()->hasUrls()) - { - for (const QUrl &url : asConst(event->mimeData()->urls())) - { - if (url.isEmpty()) - continue; - - files << ((url.scheme().compare(u"file", Qt::CaseInsensitive) == 0) - ? url.toLocalFile() - : url.toString()); - } - } - else - { - files = event->mimeData()->text().split(u'\n'); - } - - // differentiate ".torrent" files/links & magnet links from others - QStringList torrentFiles, otherFiles; - for (const QString &file : asConst(files)) - { - if (isTorrentLink(file)) - torrentFiles << file; - else - otherFiles << file; - } - - // Download torrents - for (const QString &file : asConst(torrentFiles)) - app()->addTorrentManager()->addTorrent(file); - if (!torrentFiles.isEmpty()) return; - - // Create torrent - for (const QString &file : asConst(otherFiles)) - { - createTorrentTriggered(Path(file)); - - // currently only handle the first entry - // this is a stub that can be expanded later to create many torrents at once - break; - } -} - -// Decode if we accept drag 'n drop or not -void MainWindow::dragEnterEvent(QDragEnterEvent *event) -{ - for (const QString &mime : asConst(event->mimeData()->formats())) - qDebug("mimeData: %s", mime.toLocal8Bit().data()); - - if (event->mimeData()->hasFormat(u"text/plain"_s) || event->mimeData()->hasFormat(u"text/uri-list"_s)) - event->acceptProposedAction(); -} - -/***************************************************** -* * -* Torrent * -* * -*****************************************************/ - // Display a dialog to allow user to add // torrents to download list void MainWindow::on_actionOpen_triggered() @@ -1374,7 +1355,7 @@ void MainWindow::showFiltersSidebar(const bool show) connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersAdded, m_transferListFiltersWidget, &TransferListFiltersWidget::addTrackers); connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersRemoved, m_transferListFiltersWidget, &TransferListFiltersWidget::removeTrackers); connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackersChanged, m_transferListFiltersWidget, &TransferListFiltersWidget::refreshTrackers); - connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerEntriesUpdated, m_transferListFiltersWidget, &TransferListFiltersWidget::trackerEntriesUpdated); + connect(BitTorrent::Session::instance(), &BitTorrent::Session::trackerEntryStatusesUpdated, m_transferListFiltersWidget, &TransferListFiltersWidget::trackerEntryStatusesUpdated); m_splitter->insertWidget(0, m_transferListFiltersWidget); m_splitter->setCollapsible(0, true); @@ -1473,30 +1454,24 @@ void MainWindow::loadPreferences() qDebug("GUI settings loaded"); } -void MainWindow::reloadSessionStats() +void MainWindow::loadSessionStats() { - const BitTorrent::SessionStatus &status = BitTorrent::Session::instance()->status(); + const auto *btSession = BitTorrent::Session::instance(); + const BitTorrent::SessionStatus &status = btSession->status(); + m_downloadRate = Utils::Misc::friendlyUnit(status.payloadDownloadRate, true); + m_uploadRate = Utils::Misc::friendlyUnit(status.payloadUploadRate, true); // update global information #ifdef Q_OS_MACOS m_badger->updateSpeed(status.payloadDownloadRate, status.payloadUploadRate); #else - const auto toolTip = u"%1\n%2"_s.arg( - tr("DL speed: %1", "e.g: Download speed: 10 KiB/s").arg(Utils::Misc::friendlyUnit(status.payloadDownloadRate, true)) - , tr("UP speed: %1", "e.g: Upload speed: 10 KiB/s").arg(Utils::Misc::friendlyUnit(status.payloadUploadRate, true))); - app()->desktopIntegration()->setToolTip(toolTip); // tray icon + refreshTrayIconTooltip(); #endif // Q_OS_MACOS - if (m_displaySpeedInTitle) - { - setWindowTitle(tr("[D: %1, U: %2] qBittorrent %3", "D = Download; U = Upload; %3 is qBittorrent version") - .arg(Utils::Misc::friendlyUnit(status.payloadDownloadRate, true) - , Utils::Misc::friendlyUnit(status.payloadUploadRate, true) - , QStringLiteral(QBT_VERSION))); - } + refreshWindowTitle(); } -void MainWindow::reloadTorrentStats(const QVector &torrents) +void MainWindow::reloadTorrentStats(const QList &torrents) { if (currentTabWidget() == m_transferListWidget) { @@ -1505,33 +1480,23 @@ void MainWindow::reloadTorrentStats(const QVector &torren } } -/***************************************************** -* * -* Utils * -* * -*****************************************************/ - void MainWindow::downloadFromURLList(const QStringList &urlList) { for (const QString &url : urlList) app()->addTorrentManager()->addTorrent(url); } -/***************************************************** -* * -* Options * -* * -*****************************************************/ - -QMenu *MainWindow::createDesktopIntegrationMenu() +void MainWindow::populateDesktopIntegrationMenu() { - auto *menu = new QMenu; + auto *menu = app()->desktopIntegration()->menu(); + menu->clear(); #ifndef Q_OS_MACOS connect(menu, &QMenu::aboutToShow, this, [this]() { m_ui->actionToggleVisibility->setText(isVisible() ? tr("Hide") : tr("Show")); }); + connect(m_ui->actionToggleVisibility, &QAction::triggered, this, &MainWindow::toggleVisibility); menu->addAction(m_ui->actionToggleVisibility); menu->addSeparator(); @@ -1545,8 +1510,8 @@ QMenu *MainWindow::createDesktopIntegrationMenu() menu->addAction(m_ui->actionSetGlobalSpeedLimits); menu->addSeparator(); - menu->addAction(m_ui->actionStartAll); - menu->addAction(m_ui->actionPauseAll); + menu->addAction(m_ui->actionResumeSession); + menu->addAction(m_ui->actionPauseSession); #ifndef Q_OS_MACOS menu->addSeparator(); @@ -1555,8 +1520,6 @@ QMenu *MainWindow::createDesktopIntegrationMenu() if (m_uiLocked) menu->setEnabled(false); - - return menu; } void MainWindow::updateAltSpeedsBtn(const bool alternative) @@ -1609,10 +1572,7 @@ void MainWindow::on_actionSpeedInTitleBar_triggered() { m_displaySpeedInTitle = static_cast(sender())->isChecked(); Preferences::instance()->showSpeedInTitleBar(m_displaySpeedInTitle); - if (m_displaySpeedInTitle) - reloadSessionStats(); - else - setWindowTitle(QStringLiteral("qBittorrent " QBT_VERSION)); + refreshWindowTitle(); } void MainWindow::on_actionRSSReader_triggered() @@ -1655,14 +1615,14 @@ void MainWindow::on_actionSearchWidget_triggered() #ifdef Q_OS_WIN const QMessageBox::StandardButton buttonPressed = QMessageBox::question(this, tr("Old Python Runtime") , tr("Your Python version (%1) is outdated. Minimum requirement: %2.\nDo you want to install a newer version now?") - .arg(pyInfo.version.toString(), u"3.7.0") + .arg(pyInfo.version.toString(), u"3.9.0") , (QMessageBox::Yes | QMessageBox::No), QMessageBox::Yes); if (buttonPressed == QMessageBox::Yes) installPython(); #else QMessageBox::information(this, tr("Old Python Runtime") , tr("Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work.\nMinimum requirement: %2.") - .arg(pyInfo.version.toString(), u"3.7.0")); + .arg(pyInfo.version.toString(), u"3.9.0")); #endif return; } @@ -1674,12 +1634,6 @@ void MainWindow::on_actionSearchWidget_triggered() displaySearchTab(m_ui->actionSearchWidget->isChecked()); } -/***************************************************** -* * -* HTTP Downloader * -* * -*****************************************************/ - // Display an input dialog to prompt user for // an url void MainWindow::on_actionDownloadFromURL_triggered() @@ -1712,7 +1666,7 @@ void MainWindow::handleUpdateCheckFinished(ProgramUpdater *updater, const bool i { const QString msg {tr("A new version is available.") + u"
    " + tr("Do you want to download %1?").arg(newVersion) + u"

    " - + u"%1"_s.arg(tr("Open changelog..."))}; + + u"%1"_s.arg(tr("Open changelog..."))}; auto *msgBox = new QMessageBox {QMessageBox::Question, tr("qBittorrent Update Available"), msg , (QMessageBox::Yes | QMessageBox::No), this}; msgBox->setAttribute(Qt::WA_DeleteOnClose); @@ -1862,18 +1816,18 @@ void MainWindow::updatePowerManagementState() const const bool preventFromSuspendWhenDownloading = pref->preventFromSuspendWhenDownloading(); const bool preventFromSuspendWhenSeeding = pref->preventFromSuspendWhenSeeding(); - const QVector allTorrents = BitTorrent::Session::instance()->torrents(); + const QList allTorrents = BitTorrent::Session::instance()->torrents(); const bool inhibitSuspend = std::any_of(allTorrents.cbegin(), allTorrents.cend(), [&](const BitTorrent::Torrent *torrent) { - if (preventFromSuspendWhenDownloading && (!torrent->isFinished() && !torrent->isPaused() && !torrent->isErrored() && torrent->hasMetadata())) + if (preventFromSuspendWhenDownloading && (!torrent->isFinished() && !torrent->isStopped() && !torrent->isErrored() && torrent->hasMetadata())) return true; - if (preventFromSuspendWhenSeeding && (torrent->isFinished() && !torrent->isPaused())) + if (preventFromSuspendWhenSeeding && (torrent->isFinished() && !torrent->isStopped())) return true; return torrent->isMoving(); }); - m_pwr->setActivityState(inhibitSuspend); + m_pwr->setActivityState(inhibitSuspend ? PowerManagement::ActivityState::Busy : PowerManagement::ActivityState::Idle); m_preventTimer->start(PREVENT_SUSPEND_INTERVAL); } @@ -1883,6 +1837,45 @@ void MainWindow::applyTransferListFilter() m_transferListWidget->applyFilter(m_columnFilterEdit->text(), m_columnFilterComboBox->currentData().value()); } +void MainWindow::refreshWindowTitle() +{ + const auto *btSession = BitTorrent::Session::instance(); + if (btSession->isPaused()) + { + const QString title = tr("[PAUSED] %1", "%1 is the rest of the window title").arg(m_windowTitle); + setWindowTitle(title); + } + else + { + if (m_displaySpeedInTitle) + { + const QString title = tr("[D: %1, U: %2] %3", "D = Download; U = Upload; %3 is the rest of the window title") + .arg(m_downloadRate, m_uploadRate, m_windowTitle); + setWindowTitle(title); + } + else + { + setWindowTitle(m_windowTitle); + } + } +} + +void MainWindow::refreshTrayIconTooltip() +{ + const auto *btSession = BitTorrent::Session::instance(); + if (!btSession->isPaused()) + { + const auto toolTip = u"%1\n%2"_s.arg( + tr("DL speed: %1", "e.g: Download speed: 10 KiB/s").arg(m_downloadRate) + , tr("UP speed: %1", "e.g: Upload speed: 10 KiB/s").arg(m_uploadRate)); + app()->desktopIntegration()->setToolTip(toolTip); + } + else + { + app()->desktopIntegration()->setToolTip(tr("Paused")); + } +} + #if defined(Q_OS_WIN) || defined(Q_OS_MACOS) void MainWindow::checkProgramUpdate(const bool invokedByUser) { @@ -1906,50 +1899,114 @@ void MainWindow::checkProgramUpdate(const bool invokedByUser) #ifdef Q_OS_WIN void MainWindow::installPython() { - setCursor(QCursor(Qt::WaitCursor)); + m_ui->actionSearchWidget->setEnabled(false); + m_ui->actionSearchWidget->setToolTip(tr("Python installation in progress...")); + setCursor(Qt::WaitCursor); // Download python - const auto installerURL = u"https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe"_s; Net::DownloadManager::instance()->download( - Net::DownloadRequest(installerURL).saveToFile(true) + Net::DownloadRequest(PYTHON_INSTALLER_URL).saveToFile(true) , Preferences::instance()->useProxyForGeneralPurposes() , this, &MainWindow::pythonDownloadFinished); } +bool MainWindow::verifyPythonInstaller(const Path &installerPath) const +{ + // Verify installer hash + // Python.org only provides MD5 hash but MD5 is already broken and doesn't guarantee file is not tampered. + // Therefore, MD5 is only included to prove that the hash is still the same with upstream and we rely on + // SHA3-512 for the main check. + + QFile file {installerPath.data()}; + if (!file.open(QIODevice::ReadOnly)) + { + LogMsg((tr("Failed to open Python installer. File: \"%1\".").arg(installerPath.toString())), Log::WARNING); + return false; + } + + QCryptographicHash md5Hash {QCryptographicHash::Md5}; + md5Hash.addData(&file); + if (const QByteArray hashHex = md5Hash.result().toHex(); hashHex != PYTHON_INSTALLER_MD5) + { + LogMsg((tr("Failed MD5 hash check for Python installer. File: \"%1\". Result hash: \"%2\". Expected hash: \"%3\".") + .arg(installerPath.toString(), QString::fromLatin1(hashHex), QString::fromLatin1(PYTHON_INSTALLER_MD5))) + , Log::WARNING); + return false; + } + + file.seek(0); + + QCryptographicHash sha3Hash {QCryptographicHash::Sha3_512}; + sha3Hash.addData(&file); + if (const QByteArray hashHex = sha3Hash.result().toHex(); hashHex != PYTHON_INSTALLER_SHA3_512) + { + LogMsg((tr("Failed SHA3-512 hash check for Python installer. File: \"%1\". Result hash: \"%2\". Expected hash: \"%3\".") + .arg(installerPath.toString(), QString::fromLatin1(hashHex), QString::fromLatin1(PYTHON_INSTALLER_SHA3_512))) + , Log::WARNING); + return false; + } + + return true; +} + void MainWindow::pythonDownloadFinished(const Net::DownloadResult &result) { + auto restoreWidgetsGuard = qScopeGuard([this] + { + m_ui->actionSearchWidget->setEnabled(true); + m_ui->actionSearchWidget->setToolTip({}); + setCursor(Qt::ArrowCursor); + }); + if (result.status != Net::DownloadStatus::Success) { - setCursor(QCursor(Qt::ArrowCursor)); QMessageBox::warning( this, tr("Download error") - , tr("Python setup could not be downloaded, reason: %1.\nPlease install it manually.") + , tr("Python installer could not be downloaded. Error: %1.\nPlease install it manually.") .arg(result.errorString)); return; } - setCursor(QCursor(Qt::ArrowCursor)); - QProcess installer; - qDebug("Launching Python installer in passive mode..."); - const Path exePath = result.filePath + u".exe"; - Utils::Fs::renameFile(result.filePath, exePath); - installer.start(exePath.toString(), {u"/passive"_s}); + if (!Utils::Fs::renameFile(result.filePath, exePath)) + { + LogMsg(tr("Rename Python installer failed. Source: \"%1\". Destination: \"%2\".") + .arg(result.filePath.toString(), exePath.toString()) + , Log::WARNING); + return; + } - // Wait for setup to complete - installer.waitForFinished(10 * 60 * 1000); + if (!verifyPythonInstaller(exePath)) + return; - qDebug("Installer stdout: %s", installer.readAllStandardOutput().data()); - qDebug("Installer stderr: %s", installer.readAllStandardError().data()); - qDebug("Setup should be complete!"); + // launch installer + auto *installer = new QProcess(this); + installer->connect(installer, &QProcess::finished, this, [this, exePath, installer, restoreWidgetsGuard = std::move(restoreWidgetsGuard)](const int exitCode, const QProcess::ExitStatus exitStatus) + { + installer->deleteLater(); - // Delete temp file - Utils::Fs::removeFile(exePath); + if ((exitStatus == QProcess::NormalExit) && (exitCode == 0)) + { + LogMsg(tr("Python installation success."), Log::INFO); - // Reload search engine - if (Utils::ForeignApps::pythonInfo().isSupportedVersion()) - { - m_ui->actionSearchWidget->setChecked(true); - displaySearchTab(true); - } + // Delete installer + Utils::Fs::removeFile(exePath); + + // Reload search engine + if (Utils::ForeignApps::pythonInfo().isSupportedVersion()) + { + m_ui->actionSearchWidget->setChecked(true); + displaySearchTab(true); + } + } + else + { + const QString errorInfo = (exitStatus == QProcess::NormalExit) + ? tr("Exit code: %1.").arg(QString::number(exitCode)) + : tr("Reason: installer crashed."); + LogMsg(u"%1 %2"_s.arg(tr("Python installation failed."), errorInfo), Log::WARNING); + } + }); + LogMsg(tr("Launching Python installer. File: \"%1\".").arg(exePath.toString()), Log::INFO); + installer->start(exePath.toString(), {u"/passive"_s}); } #endif // Q_OS_WIN diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 65d1088c8bf3..99b0989a5556 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -42,6 +42,7 @@ class QCloseEvent; class QComboBox; class QFileSystemWatcher; class QSplitter; +class QString; class QTabWidget; class QTimer; @@ -84,7 +85,7 @@ class MainWindow final : public GUIApplicationComponent Q_DISABLE_COPY_MOVE(MainWindow) public: - explicit MainWindow(IGUIApplication *app, WindowState initialState = WindowState::Normal); + explicit MainWindow(IGUIApplication *app, WindowState initialState = WindowState::Normal, const QString &titleSuffix = {}); ~MainWindow() override; QWidget *currentTabWidget() const; @@ -97,12 +98,12 @@ class MainWindow final : public GUIApplicationComponent Log::MsgTypes executionLogMsgTypes() const; void setExecutionLogMsgTypes(Log::MsgTypes value); - // Notifications properties - // Misc properties bool isDownloadTrackerFavicon() const; void setDownloadTrackerFavicon(bool value); + void setTitleSuffix(const QString &suffix); + void activate(); void cleanup(); @@ -125,16 +126,13 @@ private slots: void displaySearchTab(); void displayRSSTab(); void displayExecutionLogTab(); - void focusSearchFilter(); - void reloadSessionStats(); - void reloadTorrentStats(const QVector &torrents); + void toggleFocusBetweenLineEdits(); + void loadSessionStats(); + void reloadTorrentStats(const QList &torrents); void loadPreferences(); void optionsSaved(); void toggleAlternativeSpeeds(); -#ifdef Q_OS_WIN - void pythonDownloadFinished(const Net::DownloadResult &result); -#endif void addToolbarContextMenu(); void manageCookies(); @@ -169,7 +167,7 @@ private slots: void on_actionDownloadFromURL_triggered(); void on_actionExit_triggered(); void on_actionLock_triggered(); - // Check for unpaused downloading or seeding torrents and prevent system suspend/sleep according to preferences + // Check for non-stopped downloading or seeding torrents and prevent system suspend/sleep according to preferences void updatePowerManagementState() const; void toolbarMenuRequested(); @@ -183,15 +181,13 @@ private slots: #else void toggleVisibility(); #endif - -private: - QMenu *createDesktopIntegrationMenu(); #ifdef Q_OS_WIN - void installPython(); + void pythonDownloadFinished(const Net::DownloadResult &result); #endif - void dropEvent(QDropEvent *event) override; - void dragEnterEvent(QDragEnterEvent *event) override; +private: + void populateDesktopIntegrationMenu(); + void closeEvent(QCloseEvent *) override; void showEvent(QShowEvent *) override; void keyPressEvent(QKeyEvent *event) override; @@ -202,13 +198,24 @@ private slots: void showStatusBar(bool show); void showFiltersSidebar(bool show); void applyTransferListFilter(); + void refreshWindowTitle(); + void refreshTrayIconTooltip(); + +#ifdef Q_OS_WIN + void installPython(); + bool verifyPythonInstaller(const Path &installerPath) const; +#endif Ui::MainWindow *m_ui = nullptr; - QFileSystemWatcher *m_executableWatcher = nullptr; - // GUI related + QString m_windowTitle; + QString m_downloadRate; + QString m_uploadRate; bool m_posInitialized = false; bool m_neverShown = true; + + QFileSystemWatcher *m_executableWatcher = nullptr; + // GUI related QPointer m_tabs; QPointer m_statusBar; QPointer m_options; diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index 1a44708cd894..24c6ada61749 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -11,7 +11,7 @@
    - Qt::CustomContextMenu + Qt::ContextMenuPolicy::CustomContextMenu @@ -43,15 +43,16 @@ &Edit
    - - - + + + + @@ -134,10 +135,10 @@ false - Qt::Horizontal + Qt::Orientation::Horizontal - Qt::ToolButtonFollowStyle + Qt::ToolButtonStyle::ToolButtonFollowStyle false @@ -153,7 +154,7 @@ - + @@ -188,22 +189,22 @@ - &Resume + Sta&rt - + - &Pause + Sto&p - + - R&esume All + R&esume Session - + - P&ause All + Pau&se Session @@ -391,7 +392,7 @@ true - S&hutdown System + Sh&utdown System diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index 02d7ff2f34fe..3527e4db9ed5 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -1,6 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2025 Vladimir Golovnev + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,6 +30,8 @@ #include "optionsdialog.h" +#include +#include #include #include @@ -42,9 +45,15 @@ #include #include +#ifdef Q_OS_WIN +#include +#endif + #include "base/bittorrent/session.h" +#include "base/bittorrent/sharelimitaction.h" #include "base/exceptions.h" #include "base/global.h" +#include "base/net/downloadmanager.h" #include "base/net/portforwarder.h" #include "base/net/proxyconfigurationmanager.h" #include "base/path.h" @@ -53,12 +62,14 @@ #include "base/rss/rss_session.h" #include "base/torrentfileguard.h" #include "base/torrentfileswatcher.h" +#include "base/utils/compare.h" #include "base/utils/io.h" #include "base/utils/misc.h" #include "base/utils/net.h" #include "base/utils/os.h" #include "base/utils/password.h" #include "base/utils/random.h" +#include "base/utils/sslkey.h" #include "addnewtorrentdialog.h" #include "advancedsettings.h" #include "banlistoptionsdialog.h" @@ -153,6 +164,7 @@ OptionsDialog::OptionsDialog(IGUIApplication *app, QWidget *parent) m_ui->tabSelection->item(TAB_DOWNLOADS)->setIcon(UIThemeManager::instance()->getIcon(u"download"_s, u"folder-download"_s)); m_ui->tabSelection->item(TAB_SPEED)->setIcon(UIThemeManager::instance()->getIcon(u"speedometer"_s, u"chronometer"_s)); m_ui->tabSelection->item(TAB_RSS)->setIcon(UIThemeManager::instance()->getIcon(u"application-rss"_s, u"application-rss+xml"_s)); + m_ui->tabSelection->item(TAB_SEARCH)->setIcon(UIThemeManager::instance()->getIcon(u"edit-find"_s)); #ifdef DISABLE_WEBUI m_ui->tabSelection->item(TAB_WEBUI)->setHidden(true); #else @@ -179,6 +191,7 @@ OptionsDialog::OptionsDialog(IGUIApplication *app, QWidget *parent) loadSpeedTabOptions(); loadBittorrentTabOptions(); loadRSSTabOptions(); + loadSearchTabOptions(); #ifndef DISABLE_WEBUI loadWebUITabOptions(); #endif @@ -232,6 +245,9 @@ void OptionsDialog::loadBehaviorTabOptions() initializeLanguageCombo(); setLocale(pref->getLocale()); + initializeStyleCombo(); + initializeColorSchemeOptions(); + m_ui->checkUseCustomTheme->setChecked(Preferences::instance()->useCustomUITheme()); m_ui->customThemeFilePath->setSelectedPath(Preferences::instance()->customUIThemePath()); m_ui->customThemeFilePath->setMode(FileSystemPathEdit::Mode::FileOpen); @@ -249,17 +265,17 @@ void OptionsDialog::loadBehaviorTabOptions() m_ui->comboHideZero->setCurrentIndex(pref->getHideZeroComboValues()); m_ui->comboHideZero->setEnabled(m_ui->checkHideZero->isChecked()); - m_ui->actionTorrentDlOnDblClBox->setItemData(0, TOGGLE_PAUSE); + m_ui->actionTorrentDlOnDblClBox->setItemData(0, TOGGLE_STOP); m_ui->actionTorrentDlOnDblClBox->setItemData(1, OPEN_DEST); m_ui->actionTorrentDlOnDblClBox->setItemData(2, PREVIEW_FILE); m_ui->actionTorrentDlOnDblClBox->setItemData(3, SHOW_OPTIONS); m_ui->actionTorrentDlOnDblClBox->setItemData(4, NO_ACTION); int actionDownloading = pref->getActionOnDblClOnTorrentDl(); if ((actionDownloading < 0) || (actionDownloading >= m_ui->actionTorrentDlOnDblClBox->count())) - actionDownloading = TOGGLE_PAUSE; + actionDownloading = TOGGLE_STOP; m_ui->actionTorrentDlOnDblClBox->setCurrentIndex(m_ui->actionTorrentDlOnDblClBox->findData(actionDownloading)); - m_ui->actionTorrentFnOnDblClBox->setItemData(0, TOGGLE_PAUSE); + m_ui->actionTorrentFnOnDblClBox->setItemData(0, TOGGLE_STOP); m_ui->actionTorrentFnOnDblClBox->setItemData(1, OPEN_DEST); m_ui->actionTorrentFnOnDblClBox->setItemData(2, PREVIEW_FILE); m_ui->actionTorrentFnOnDblClBox->setItemData(3, SHOW_OPTIONS); @@ -277,7 +293,6 @@ void OptionsDialog::loadBehaviorTabOptions() m_ui->checkShowSplash->setChecked(!pref->isSplashScreenDisabled()); m_ui->checkProgramExitConfirm->setChecked(pref->confirmOnExit()); m_ui->checkProgramAutoExitConfirm->setChecked(!pref->dontConfirmAutoExit()); - m_ui->checkConfirmPauseAndResumeAll->setChecked(pref->confirmPauseAndResumeAll()); m_ui->windowStateComboBox->addItem(tr("Normal"), QVariant::fromValue(WindowState::Normal)); m_ui->windowStateComboBox->addItem(tr("Minimized"), QVariant::fromValue(WindowState::Minimized)); @@ -340,9 +355,18 @@ void OptionsDialog::loadBehaviorTabOptions() // Groupbox's check state must be initialized after some of its children if they are manually enabled/disabled m_ui->checkFileLog->setChecked(app()->isFileLoggerEnabled()); + m_ui->checkBoxExternalIPStatusBar->setChecked(pref->isStatusbarExternalIPDisplayed()); m_ui->checkBoxPerformanceWarning->setChecked(session->isPerformanceWarningEnabled()); - connect(m_ui->comboI18n, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); + connect(m_ui->comboLanguage, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); + +#ifdef Q_OS_WIN + connect(m_ui->comboStyle, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); +#endif + +#ifdef QBT_HAS_COLORSCHEME_OPTION + connect(m_ui->comboColorScheme, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); +#endif #if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) connect(m_ui->checkUseSystemIcon, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); @@ -377,7 +401,6 @@ void OptionsDialog::loadBehaviorTabOptions() connect(m_ui->checkShowSplash, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkProgramExitConfirm, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkProgramAutoExitConfirm, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); - connect(m_ui->checkConfirmPauseAndResumeAll, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkShowSystray, &QGroupBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkMinimizeToSysTray, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkCloseToSystray, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); @@ -420,6 +443,7 @@ void OptionsDialog::loadBehaviorTabOptions() connect(m_ui->spinFileLogAge, qSpinBoxValueChanged, this, &ThisType::enableApplyButton); connect(m_ui->comboFileLogAgeType, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); + connect(m_ui->checkBoxExternalIPStatusBar, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkBoxPerformanceWarning, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); } @@ -441,6 +465,14 @@ void OptionsDialog::saveBehaviorTabOptions() const } pref->setLocale(locale); +#ifdef Q_OS_WIN + pref->setStyle(m_ui->comboStyle->currentData().toString()); +#endif + +#ifdef QBT_HAS_COLORSCHEME_OPTION + UIThemeManager::instance()->setColorScheme(m_ui->comboColorScheme->currentData().value()); +#endif + #if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) pref->useSystemIcons(m_ui->checkUseSystemIcon->isChecked()); #endif @@ -460,7 +492,6 @@ void OptionsDialog::saveBehaviorTabOptions() const pref->setSplashScreenDisabled(isSplashScreenDisabled()); pref->setConfirmOnExit(m_ui->checkProgramExitConfirm->isChecked()); pref->setDontConfirmAutoExit(!m_ui->checkProgramAutoExitConfirm->isChecked()); - pref->setConfirmPauseAndResumeAll(m_ui->checkConfirmPauseAndResumeAll->isChecked()); #ifdef Q_OS_WIN pref->setWinStartup(WinStartup()); @@ -505,6 +536,7 @@ void OptionsDialog::saveBehaviorTabOptions() const app()->setStartUpWindowState(m_ui->windowStateComboBox->currentData().value()); + pref->setStatusbarExternalIPDisplayed(m_ui->checkBoxExternalIPStatusBar->isChecked()); session->setPerformanceWarningEnabled(m_ui->checkBoxPerformanceWarning->isChecked()); } @@ -518,20 +550,20 @@ void OptionsDialog::loadDownloadsTabOptions() m_ui->contentLayoutComboBox->setCurrentIndex(static_cast(session->torrentContentLayout())); m_ui->checkAddToQueueTop->setChecked(session->isAddTorrentToQueueTop()); - m_ui->checkStartPaused->setChecked(session->isAddTorrentPaused()); + m_ui->checkAddStopped->setChecked(session->isAddTorrentStopped()); m_ui->stopConditionComboBox->setToolTip( u"

    " + tr("None") + u" - " + tr("No stop condition is set.") + u"

    " + tr("Metadata received") + u" - " + tr("Torrent will stop after metadata is received.") + - u" " + tr("Torrents that have metadata initially aren't affected.") + u"

    " + + u" " + tr("Torrents that have metadata initially will be added as stopped.") + u"

    " + tr("Files checked") + u" - " + tr("Torrent will stop after files are initially checked.") + u" " + tr("This will also download metadata if it wasn't there initially.") + u"

    "); m_ui->stopConditionComboBox->setItemData(0, QVariant::fromValue(BitTorrent::Torrent::StopCondition::None)); m_ui->stopConditionComboBox->setItemData(1, QVariant::fromValue(BitTorrent::Torrent::StopCondition::MetadataReceived)); m_ui->stopConditionComboBox->setItemData(2, QVariant::fromValue(BitTorrent::Torrent::StopCondition::FilesChecked)); m_ui->stopConditionComboBox->setCurrentIndex(m_ui->stopConditionComboBox->findData(QVariant::fromValue(session->torrentStopCondition()))); - m_ui->stopConditionLabel->setEnabled(!m_ui->checkStartPaused->isChecked()); - m_ui->stopConditionComboBox->setEnabled(!m_ui->checkStartPaused->isChecked()); + m_ui->stopConditionLabel->setEnabled(!m_ui->checkAddStopped->isChecked()); + m_ui->stopConditionComboBox->setEnabled(!m_ui->checkAddStopped->isChecked()); m_ui->checkMergeTrackers->setChecked(session->isMergeTrackersEnabled()); m_ui->checkConfirmMergeTrackers->setEnabled(m_ui->checkAdditionDialog->isChecked()); @@ -563,6 +595,7 @@ void OptionsDialog::loadDownloadsTabOptions() m_ui->checkPreallocateAll->setChecked(session->isPreallocationEnabled()); m_ui->checkAppendqB->setChecked(session->isAppendExtensionEnabled()); + m_ui->checkUnwantedFolder->setChecked(session->isUnwantedFolderEnabled()); m_ui->checkRecursiveDownload->setChecked(pref->isRecursiveDownloadEnabled()); m_ui->comboSavingMode->setCurrentIndex(!session->isAutoTMMDisabledByDefault()); @@ -650,8 +683,8 @@ void OptionsDialog::loadDownloadsTabOptions() connect(m_ui->contentLayoutComboBox, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); connect(m_ui->checkAddToQueueTop, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); - connect(m_ui->checkStartPaused, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); - connect(m_ui->checkStartPaused, &QAbstractButton::toggled, this, [this](const bool checked) + connect(m_ui->checkAddStopped, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); + connect(m_ui->checkAddStopped, &QAbstractButton::toggled, this, [this](const bool checked) { m_ui->stopConditionLabel->setEnabled(!checked); m_ui->stopConditionComboBox->setEnabled(!checked); @@ -666,6 +699,7 @@ void OptionsDialog::loadDownloadsTabOptions() connect(m_ui->checkPreallocateAll, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkAppendqB, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); + connect(m_ui->checkUnwantedFolder, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkRecursiveDownload, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->comboSavingMode, qComboBoxCurrentIndexChanged, this, &ThisType::enableApplyButton); @@ -702,6 +736,11 @@ void OptionsDialog::loadDownloadsTabOptions() connect(m_ui->groupMailNotifAuth, &QGroupBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->mailNotifUsername, &QLineEdit::textChanged, this, &ThisType::enableApplyButton); connect(m_ui->mailNotifPassword, &QLineEdit::textChanged, this, &ThisType::enableApplyButton); + connect(m_ui->sendTestEmail, &QPushButton::clicked, this, [this] + { + app()->sendTestEmail(); + QMessageBox::information(this, tr("Test email"), tr("Attempted to send email. Check your inbox to confirm success")); + }); connect(m_ui->groupBoxRunOnAdded, &QGroupBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->lineEditRunOnAdded, &QLineEdit::textChanged, this, &ThisType::enableApplyButton); @@ -721,7 +760,7 @@ void OptionsDialog::saveDownloadsTabOptions() const session->setTorrentContentLayout(static_cast(m_ui->contentLayoutComboBox->currentIndex())); session->setAddTorrentToQueueTop(m_ui->checkAddToQueueTop->isChecked()); - session->setAddTorrentPaused(addTorrentsInPause()); + session->setAddTorrentStopped(addTorrentsStopped()); session->setTorrentStopCondition(m_ui->stopConditionComboBox->currentData().value()); TorrentFileGuard::setAutoDeleteMode(!m_ui->deleteTorrentBox->isChecked() ? TorrentFileGuard::Never : !m_ui->deleteCancelledTorrentBox->isChecked() ? TorrentFileGuard::IfAdded @@ -732,6 +771,7 @@ void OptionsDialog::saveDownloadsTabOptions() const session->setPreallocationEnabled(preAllocateAllFiles()); session->setAppendExtensionEnabled(m_ui->checkAppendqB->isChecked()); + session->setUnwantedFolderEnabled(m_ui->checkUnwantedFolder->isChecked()); pref->setRecursiveDownloadEnabled(m_ui->checkRecursiveDownload->isChecked()); session->setAutoTMMDisabledByDefault(m_ui->comboSavingMode->currentIndex() == 0); @@ -1099,18 +1139,22 @@ void OptionsDialog::loadBittorrentTabOptions() } m_ui->comboRatioLimitAct->setEnabled((session->globalMaxSeedingMinutes() >= 0) || (session->globalMaxRatio() >= 0.) || (session->globalMaxInactiveSeedingMinutes() >= 0)); - const QHash actIndex = + const QHash actIndex = { - {Pause, 0}, - {Remove, 1}, - {DeleteFiles, 2}, - {EnableSuperSeeding, 3} + {BitTorrent::ShareLimitAction::Stop, 0}, + {BitTorrent::ShareLimitAction::Remove, 1}, + {BitTorrent::ShareLimitAction::RemoveWithContent, 2}, + {BitTorrent::ShareLimitAction::EnableSuperSeeding, 3} }; - m_ui->comboRatioLimitAct->setCurrentIndex(actIndex.value(session->maxRatioAction())); + m_ui->comboRatioLimitAct->setCurrentIndex(actIndex.value(session->shareLimitAction())); m_ui->checkEnableAddTrackers->setChecked(session->isAddTrackersEnabled()); m_ui->textTrackers->setPlainText(session->additionalTrackers()); + m_ui->checkAddTrackersFromURL->setChecked(session->isAddTrackersFromURLEnabled()); + m_ui->textTrackersURL->setText(session->additionalTrackersURL()); + m_ui->textTrackersFromURL->setPlainText(session->additionalTrackersFromURL()); + connect(m_ui->checkDHT, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkPeX, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkLSD, &QAbstractButton::toggled, this, &ThisType::enableApplyButton); @@ -1144,6 +1188,9 @@ void OptionsDialog::loadBittorrentTabOptions() connect(m_ui->checkEnableAddTrackers, &QGroupBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->textTrackers, &QPlainTextEdit::textChanged, this, &ThisType::enableApplyButton); + + connect(m_ui->checkAddTrackersFromURL, &QGroupBox::toggled, this, &ThisType::enableApplyButton); + connect(m_ui->textTrackersURL, &QLineEdit::textChanged, this, &ThisType::enableApplyButton); } void OptionsDialog::saveBittorrentTabOptions() const @@ -1170,17 +1217,20 @@ void OptionsDialog::saveBittorrentTabOptions() const session->setGlobalMaxRatio(getMaxRatio()); session->setGlobalMaxSeedingMinutes(getMaxSeedingMinutes()); session->setGlobalMaxInactiveSeedingMinutes(getMaxInactiveSeedingMinutes()); - const QVector actIndex = + const QList actIndex = { - Pause, - Remove, - DeleteFiles, - EnableSuperSeeding + BitTorrent::ShareLimitAction::Stop, + BitTorrent::ShareLimitAction::Remove, + BitTorrent::ShareLimitAction::RemoveWithContent, + BitTorrent::ShareLimitAction::EnableSuperSeeding }; - session->setMaxRatioAction(actIndex.value(m_ui->comboRatioLimitAct->currentIndex())); + session->setShareLimitAction(actIndex.value(m_ui->comboRatioLimitAct->currentIndex())); session->setAddTrackersEnabled(m_ui->checkEnableAddTrackers->isChecked()); session->setAdditionalTrackers(m_ui->textTrackers->toPlainText()); + + session->setAddTrackersFromURLEnabled(m_ui->checkAddTrackersFromURL->isChecked()); + session->setAdditionalTrackersURL(m_ui->textTrackersURL->text()); } void OptionsDialog::loadRSSTabOptions() @@ -1190,6 +1240,7 @@ void OptionsDialog::loadRSSTabOptions() m_ui->checkRSSEnable->setChecked(rssSession->isProcessingEnabled()); m_ui->spinRSSRefreshInterval->setValue(rssSession->refreshInterval()); + m_ui->spinRSSFetchDelay->setValue(rssSession->fetchDelay().count()); m_ui->spinRSSMaxArticlesPerFeed->setValue(rssSession->maxArticlesPerFeed()); m_ui->checkRSSAutoDownloaderEnable->setChecked(autoDownloader->isProcessingEnabled()); m_ui->textSmartEpisodeFilters->setPlainText(autoDownloader->smartEpisodeFilters().join(u'\n')); @@ -1206,6 +1257,7 @@ void OptionsDialog::loadRSSTabOptions() connect(m_ui->textSmartEpisodeFilters, &QPlainTextEdit::textChanged, this, &OptionsDialog::enableApplyButton); connect(m_ui->checkSmartFilterDownloadRepacks, &QCheckBox::toggled, this, &OptionsDialog::enableApplyButton); connect(m_ui->spinRSSRefreshInterval, qSpinBoxValueChanged, this, &OptionsDialog::enableApplyButton); + connect(m_ui->spinRSSFetchDelay, qSpinBoxValueChanged, this, &OptionsDialog::enableApplyButton); connect(m_ui->spinRSSMaxArticlesPerFeed, qSpinBoxValueChanged, this, &OptionsDialog::enableApplyButton); } @@ -1216,12 +1268,35 @@ void OptionsDialog::saveRSSTabOptions() const rssSession->setProcessingEnabled(m_ui->checkRSSEnable->isChecked()); rssSession->setRefreshInterval(m_ui->spinRSSRefreshInterval->value()); + rssSession->setFetchDelay(std::chrono::seconds(m_ui->spinRSSFetchDelay->value())); rssSession->setMaxArticlesPerFeed(m_ui->spinRSSMaxArticlesPerFeed->value()); autoDownloader->setProcessingEnabled(m_ui->checkRSSAutoDownloaderEnable->isChecked()); autoDownloader->setSmartEpisodeFilters(m_ui->textSmartEpisodeFilters->toPlainText().split(u'\n', Qt::SkipEmptyParts)); autoDownloader->setDownloadRepacks(m_ui->checkSmartFilterDownloadRepacks->isChecked()); } +void OptionsDialog::loadSearchTabOptions() +{ + const auto *pref = Preferences::instance(); + + m_ui->groupStoreOpenedTabs->setChecked(pref->storeOpenedSearchTabs()); + m_ui->checkStoreTabsSearchResults->setChecked(pref->storeOpenedSearchTabResults()); + m_ui->searchHistoryLengthSpinBox->setValue(pref->searchHistoryLength()); + + connect(m_ui->groupStoreOpenedTabs, &QGroupBox::toggled, this, &OptionsDialog::enableApplyButton); + connect(m_ui->checkStoreTabsSearchResults, &QCheckBox::toggled, this, &OptionsDialog::enableApplyButton); + connect(m_ui->searchHistoryLengthSpinBox, qSpinBoxValueChanged, this, &OptionsDialog::enableApplyButton); +} + +void OptionsDialog::saveSearchTabOptions() const +{ + auto *pref = Preferences::instance(); + + pref->setStoreOpenedSearchTabs(m_ui->groupStoreOpenedTabs->isChecked()); + pref->setStoreOpenedSearchTabResults(m_ui->checkStoreTabsSearchResults->isChecked()); + pref->setSearchHistoryLength(m_ui->searchHistoryLengthSpinBox->value()); +} + #ifndef DISABLE_WEBUI void OptionsDialog::loadWebUITabOptions() { @@ -1261,7 +1336,6 @@ void OptionsDialog::loadWebUITabOptions() // Security m_ui->checkClickjacking->setChecked(pref->isWebUIClickjackingProtectionEnabled()); m_ui->checkCSRFProtection->setChecked(pref->isWebUICSRFProtectionEnabled()); - m_ui->checkSecureCookie->setEnabled(pref->isWebUIHttpsEnabled()); m_ui->checkSecureCookie->setChecked(pref->isWebUISecureCookieEnabled()); m_ui->groupHostHeaderValidation->setChecked(pref->isWebUIHostHeaderValidationEnabled()); m_ui->textServerDomains->setText(pref->getServerDomains()); @@ -1303,7 +1377,6 @@ void OptionsDialog::loadWebUITabOptions() connect(m_ui->checkClickjacking, &QCheckBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->checkCSRFProtection, &QCheckBox::toggled, this, &ThisType::enableApplyButton); - connect(m_ui->checkWebUIHttps, &QGroupBox::toggled, m_ui->checkSecureCookie, &QWidget::setEnabled); connect(m_ui->checkSecureCookie, &QCheckBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->groupHostHeaderValidation, &QGroupBox::toggled, this, &ThisType::enableApplyButton); connect(m_ui->textServerDomains, &QLineEdit::textChanged, this, &ThisType::enableApplyButton); @@ -1371,13 +1444,11 @@ void OptionsDialog::saveWebUITabOptions() const void OptionsDialog::initializeLanguageCombo() { // List language files - const QDir langDir(u":/lang"_s); - const QStringList langFiles = langDir.entryList(QStringList(u"qbittorrent_*.qm"_s), QDir::Files); + const QStringList langFiles = QDir(u":/lang"_s).entryList({u"qbittorrent_*.qm"_s}, QDir::Files, QDir::Name); for (const QString &langFile : langFiles) { - const QString localeStr = langFile.section(u"_"_s, 1, -1).section(u"."_s, 0, 0); // remove "qbittorrent_" and ".qm" - m_ui->comboI18n->addItem(/*QIcon(":/icons/flags/"+country+".svg"), */ Utils::Misc::languageToLocalizedString(localeStr), localeStr); - qDebug() << "Supported locale:" << localeStr; + const QString langCode = QStringView(langFile).sliced(12).chopped(3).toString(); // remove "qbittorrent_" and ".qm" + m_ui->comboLanguage->addItem(Utils::Misc::languageToLocalizedString(langCode), langCode); } } @@ -1418,6 +1489,7 @@ void OptionsDialog::saveOptions() const saveSpeedTabOptions(); saveBittorrentTabOptions(); saveRSSTabOptions(); + saveSearchTabOptions(); #ifndef DISABLE_WEBUI saveWebUITabOptions(); #endif @@ -1662,6 +1734,50 @@ bool OptionsDialog::isSplashScreenDisabled() const return !m_ui->checkShowSplash->isChecked(); } +void OptionsDialog::initializeStyleCombo() +{ +#ifdef Q_OS_WIN + m_ui->labelStyleHint->setText(tr("%1 is recommended for best compatibility with Windows dark mode" + , "Fusion is recommended for best compatibility with Windows dark mode").arg(u"Fusion"_s)); + m_ui->comboStyle->addItem(tr("System", "System default Qt style"), u"system"_s); + m_ui->comboStyle->setItemData(0, tr("Let Qt decide the style for this system"), Qt::ToolTipRole); + m_ui->comboStyle->insertSeparator(1); + + QStringList styleNames = QStyleFactory::keys(); + std::sort(styleNames.begin(), styleNames.end(), Utils::Compare::NaturalLessThan()); + for (const QString &styleName : asConst(styleNames)) + m_ui->comboStyle->addItem(styleName, styleName); + + const QString prefStyleName = Preferences::instance()->getStyle(); + const QString selectedStyleName = prefStyleName.isEmpty() ? QApplication::style()->name() : prefStyleName; + const int styleIndex = m_ui->comboStyle->findData(selectedStyleName, Qt::UserRole, Qt::MatchFixedString); + m_ui->comboStyle->setCurrentIndex(std::max(0, styleIndex)); +#else + m_ui->labelStyle->hide(); + m_ui->comboStyle->hide(); + m_ui->labelStyleHint->hide(); + m_ui->UISettingsBoxLayout->removeWidget(m_ui->labelStyle); + m_ui->UISettingsBoxLayout->removeWidget(m_ui->comboStyle); + m_ui->UISettingsBoxLayout->removeWidget(m_ui->labelStyleHint); +#endif +} + +void OptionsDialog::initializeColorSchemeOptions() +{ +#ifdef QBT_HAS_COLORSCHEME_OPTION + m_ui->comboColorScheme->addItem(tr("Dark", "Dark color scheme"), QVariant::fromValue(ColorScheme::Dark)); + m_ui->comboColorScheme->addItem(tr("Light", "Light color scheme"), QVariant::fromValue(ColorScheme::Light)); + m_ui->comboColorScheme->addItem(tr("System", "System color scheme"), QVariant::fromValue(ColorScheme::System)); + m_ui->comboColorScheme->setCurrentIndex(m_ui->comboColorScheme->findData(QVariant::fromValue(UIThemeManager::instance()->colorScheme()))); +#else + m_ui->labelColorScheme->hide(); + m_ui->comboColorScheme->hide(); + m_ui->UISettingsBoxLayout->removeWidget(m_ui->labelColorScheme); + m_ui->UISettingsBoxLayout->removeWidget(m_ui->comboColorScheme); + m_ui->UISettingsBoxLayout->removeItem(m_ui->spacerColorScheme); +#endif +} + #ifdef Q_OS_WIN bool OptionsDialog::WinStartup() const { @@ -1674,9 +1790,9 @@ bool OptionsDialog::preAllocateAllFiles() const return m_ui->checkPreallocateAll->isChecked(); } -bool OptionsDialog::addTorrentsInPause() const +bool OptionsDialog::addTorrentsStopped() const { - return m_ui->checkStartPaused->isChecked(); + return m_ui->checkAddStopped->isChecked(); } // Proxy settings @@ -1711,7 +1827,7 @@ QString OptionsDialog::getProxyPassword() const // Locale Settings QString OptionsDialog::getLocale() const { - return m_ui->comboI18n->itemData(m_ui->comboI18n->currentIndex(), Qt::UserRole).toString(); + return m_ui->comboLanguage->itemData(m_ui->comboLanguage->currentIndex(), Qt::UserRole).toString(); } void OptionsDialog::setLocale(const QString &localeStr) @@ -1736,7 +1852,7 @@ void OptionsDialog::setLocale(const QString &localeStr) name = locale.name(); } // Attempt to find exact match - int index = m_ui->comboI18n->findData(name, Qt::UserRole); + int index = m_ui->comboLanguage->findData(name, Qt::UserRole); if (index < 0) { //Attempt to find a language match without a country @@ -1744,16 +1860,16 @@ void OptionsDialog::setLocale(const QString &localeStr) if (pos > -1) { QString lang = name.left(pos); - index = m_ui->comboI18n->findData(lang, Qt::UserRole); + index = m_ui->comboLanguage->findData(lang, Qt::UserRole); } } if (index < 0) { // Unrecognized, use US English - index = m_ui->comboI18n->findData(u"en"_s, Qt::UserRole); + index = m_ui->comboLanguage->findData(u"en"_s, Qt::UserRole); Q_ASSERT(index >= 0); } - m_ui->comboI18n->setCurrentIndex(index); + m_ui->comboLanguage->setCurrentIndex(index); } Path OptionsDialog::getTorrentExportDir() const @@ -1869,7 +1985,7 @@ void OptionsDialog::webUIHttpsCertChanged(const Path &path) void OptionsDialog::webUIHttpsKeyChanged(const Path &path) { const auto readResult = Utils::IO::readFile(path, Utils::Net::MAX_SSL_FILE_SIZE); - const bool isKeyValid = Utils::Net::isSSLKeyValid(readResult.value_or(QByteArray())); + const bool isKeyValid = !Utils::SSLKey::load(readResult.value_or(QByteArray())).isNull(); m_ui->textWebUIHttpsKey->setSelectedPath(path); m_ui->lblSslKeyStatus->setPixmap(UIThemeManager::instance()->getScaledPixmap( diff --git a/src/gui/optionsdialog.h b/src/gui/optionsdialog.h index 9fd26dafa3b7..c1e29c1d6c3c 100644 --- a/src/gui/optionsdialog.h +++ b/src/gui/optionsdialog.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -42,7 +42,7 @@ class AdvancedSettings; // actions on double-click on torrents enum DoubleClickAction { - TOGGLE_PAUSE = 0, + TOGGLE_STOP = 0, OPEN_DEST = 1, PREVIEW_FILE = 2, NO_ACTION = 3, @@ -73,6 +73,7 @@ class OptionsDialog final : public GUIApplicationComponent TAB_CONNECTION, TAB_SPEED, TAB_BITTORRENT, + TAB_SEARCH, TAB_RSS, TAB_WEBUI, TAB_ADVANCED @@ -136,6 +137,9 @@ private slots: void loadRSSTabOptions(); void saveRSSTabOptions() const; + void loadSearchTabOptions(); + void saveSearchTabOptions() const; + #ifndef DISABLE_WEBUI void loadWebUITabOptions(); void saveWebUITabOptions() const; @@ -143,6 +147,8 @@ private slots: // General options void initializeLanguageCombo(); + void initializeStyleCombo(); + void initializeColorSchemeOptions(); QString getLocale() const; bool isSplashScreenDisabled() const; #ifdef Q_OS_WIN @@ -151,7 +157,7 @@ private slots: // Downloads bool preAllocateAllFiles() const; bool useAdditionDialog() const; - bool addTorrentsInPause() const; + bool addTorrentsStopped() const; Path getTorrentExportDir() const; Path getFinishedTorrentExportDir() const; // Connection options diff --git a/src/gui/optionsdialog.ui b/src/gui/optionsdialog.ui index ac6778ff8fbe..71906f13b547 100644 --- a/src/gui/optionsdialog.ui +++ b/src/gui/optionsdialog.ui @@ -17,32 +17,32 @@ - Qt::Horizontal + Qt::Orientation::Horizontal false - Qt::LeftToRight + Qt::LayoutDirection::LeftToRight - Qt::ScrollBarAlwaysOff + Qt::ScrollBarPolicy::ScrollBarAlwaysOff - QListView::Static + QListView::Movement::Static - QListView::TopToBottom + QListView::Flow::TopToBottom false - QListView::Adjust + QListView::ResizeMode::Adjust - QListView::IconMode + QListView::ViewMode::IconMode 0 @@ -72,6 +72,11 @@ BitTorrent + + + Search + + RSS @@ -79,7 +84,7 @@ - Web UI + WebUI @@ -132,9 +137,9 @@ Interface - + - + true @@ -146,42 +151,71 @@ - + Language: - - + + + + + + Qt::Orientation::Horizontal + + - 0 - 0 + 200 + 20 - - QComboBox::AdjustToContents + + + + + + Style: + + + + + + + + + + + true + - - 0 + + + + + + Color scheme: - - + + + + + - Qt::Horizontal + Qt::Orientation::Horizontal - 200 + 40 20 - + Use custom UI Theme @@ -203,14 +237,14 @@
    - + Use icons from system theme - + Customize UI Theme... @@ -239,19 +273,6 @@ - - - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - Confirm "Pause/Resume all" actions - - - true - - - @@ -280,7 +301,7 @@ - Paused torrents only + Stopped torrents only @@ -288,7 +309,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -320,7 +341,7 @@ - Start / Stop Torrent + Start / stop torrent @@ -335,7 +356,7 @@ - Show torrent options + Open torrent options dialog @@ -345,6 +366,19 @@ + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + @@ -356,7 +390,7 @@ - Start / Stop Torrent + Start / stop torrent @@ -371,7 +405,7 @@ - Show torrent options + Open torrent options dialog @@ -381,19 +415,6 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - @@ -449,7 +470,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -547,7 +568,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -664,7 +685,7 @@ - &Log file + &Log Files true @@ -724,7 +745,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -783,7 +804,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -798,6 +819,13 @@ + + + + Show external IP in status bar + + + @@ -808,7 +836,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -915,7 +943,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -938,12 +966,12 @@ - + - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - Do not start the download automatically + Do not start the download automatically @@ -981,7 +1009,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1094,6 +1122,13 @@ + + + + Keep unselected files in ".unwanted" folder + + + @@ -1145,7 +1180,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually
    - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1183,7 +1218,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually
    - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1224,7 +1259,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1265,7 +1300,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1328,9 +1363,6 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - - - @@ -1338,6 +1370,9 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually + + + @@ -1366,16 +1401,16 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - QAbstractItemView::AllEditTriggers + QAbstractItemView::EditTrigger::AllEditTriggers - QAbstractItemView::SingleSelection + QAbstractItemView::SelectionMode::SingleSelection - QAbstractItemView::SelectRows + QAbstractItemView::SelectionBehavior::SelectRows - Qt::ElideNone + Qt::TextElideMode::ElideNone false @@ -1420,7 +1455,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - Qt::Vertical + Qt::Orientation::Vertical @@ -1466,8 +1501,11 @@ readme.txt: filter exact file name. ?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. + + true + - QPlainTextEdit::NoWrap + QPlainTextEdit::LineWrapMode::NoWrap @@ -1488,8 +1526,18 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - + + + + Sender + + + From: + + + + + @@ -1501,6 +1549,9 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. + + + @@ -1511,19 +1562,6 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - - - - - - Sender - - - From: - - - @@ -1565,13 +1603,26 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - QLineEdit::Password + QLineEdit::EchoMode::Password + + + + + 0 + 0 + + + + Send test email + + + @@ -1584,7 +1635,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Run on torrent added + Run on torrent added: true @@ -1602,7 +1653,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Run on torrent finished + Run on torrent finished: true @@ -1700,7 +1751,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1750,7 +1801,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1781,26 +1832,6 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'.Connections Limits - - - - 500 - - - 4 - - - - - - - Maximum number of connections per torrent: - - - true - - - @@ -1827,6 +1858,29 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Maximum number of connections per torrent: + + + true + + + @@ -1840,13 +1894,6 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - - - Maximum number of upload slots per torrent: - - - @@ -1864,18 +1911,22 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - - - Qt::Horizontal + + + + Maximum number of upload slots per torrent: - - - 40 - 20 - + + + + + + 500 - + + 4 + + @@ -1927,7 +1978,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1942,7 +1993,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> Mixed mode @@ -2006,7 +2057,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Qt::Horizontal + Qt::Orientation::Horizontal @@ -2077,7 +2128,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - QLineEdit::Password + QLineEdit::EchoMode::Password @@ -2200,7 +2251,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Qt::Vertical + Qt::Orientation::Vertical @@ -2251,24 +2302,18 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'.Global Rate Limits - - - - - - - KiB/s - - - 2000000 - - - 100 + + + + + + + Upload: - - + + @@ -2278,18 +2323,18 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + 100 - - - - Qt::Horizontal + Qt::Orientation::Horizontal @@ -2299,13 +2344,6 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - - - Upload: - - - @@ -2313,17 +2351,8 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - - - - - - Alternative Rate Limits - - - + @@ -2333,14 +2362,91 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + - 10 + 100 + + + + + + + Alternative Rate Limits + + + + + + Upload: + + + + + + + + + + KiB/s + + + 2000000 + + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + + + 10 + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Download: + + + + + + + + + + KiB/s + + + 2000000 + + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + + + 10 + + + @@ -2363,17 +2469,20 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - + + true hh:mm + + false + @@ -2390,26 +2499,36 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - + + true hh:mm - - false - + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + @@ -2442,65 +2561,9 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - KiB/s - - - 2000000 - - - 10 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Upload: - - - - - - - Download: - - - @@ -2537,7 +2600,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Qt::Vertical + Qt::Orientation::Vertical @@ -2663,7 +2726,7 @@ Disable encryption: Only connect to peers without protocol encryption - Qt::Horizontal + Qt::Orientation::Horizontal @@ -2695,12 +2758,15 @@ Disable encryption: Only connect to peers without protocol encryption true + + Qt::TextInteractionFlag::LinksAccessibleByKeyboard|Qt::TextInteractionFlag::LinksAccessibleByMouse + - Qt::Horizontal + Qt::Orientation::Horizontal @@ -2740,7 +2806,7 @@ Disable encryption: Only connect to peers without protocol encryption - Qt::Horizontal + Qt::Orientation::Horizontal @@ -2784,6 +2850,19 @@ Disable encryption: Only connect to peers without protocol encryption + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + @@ -2824,19 +2903,6 @@ Disable encryption: Only connect to peers without protocol encryption - - - - Qt::Horizontal - - - - 40 - 20 - - - - @@ -2849,6 +2915,13 @@ Disable encryption: Only connect to peers without protocol encryption false + + + + Download rate threshold: + + + @@ -2857,11 +2930,34 @@ Disable encryption: Only connect to peers without protocol encryption 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + 2 + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + Upload rate threshold: + + + @@ -2870,38 +2966,21 @@ Disable encryption: Only connect to peers without protocol encryption 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + 2 - - - - Upload rate threshold: - - - - - + + - Download rate threshold: + Torrent inactivity timer: - - - - Qt::Horizontal - - - - 40 - 20 - - - - @@ -2918,13 +2997,6 @@ Disable encryption: Only connect to peers without protocol encryption - - - - Torrent inactivity timer: - - - @@ -2963,7 +3035,7 @@ Disable encryption: Only connect to peers without protocol encryption - Qt::Horizontal + Qt::Orientation::Horizontal @@ -3025,7 +3097,7 @@ Disable encryption: Only connect to peers without protocol encryption then - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -3036,7 +3108,7 @@ Disable encryption: Only connect to peers without protocol encryption - Pause torrent + Stop torrent @@ -3062,7 +3134,7 @@ Disable encryption: Only connect to peers without protocol encryption - A&utomatically add these trackers to new downloads: + A&utomatically append these trackers to new downloads: true @@ -3072,7 +3144,54 @@ Disable encryption: Only connect to peers without protocol encryption - + + + true + + + + + + + + + + Automatically append trackers from URL to new downloads: + + + true + + + false + + + + + + + + URL: + + + + + + + + + + + + Fetched trackers + + + + + + + true + + @@ -3080,7 +3199,7 @@ Disable encryption: Only connect to peers without protocol encryption - Qt::Vertical + Qt::Orientation::Vertical @@ -3096,6 +3215,122 @@ Disable encryption: Only connect to peers without protocol encryption + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + + 0 + 0 + 521 + 541 + + + + + + + Search UI + + + + + + Store opened tabs + + + true + + + false + + + + + + Also store search results + + + + + + + + + + + + History length + + + + + + + QAbstractSpinBox::ButtonSymbols::PlusMinus + + + 99 + + + QAbstractSpinBox::StepType::DefaultStepType + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Qt::Orientation::Vertical + + + + 20 + 422 + + + + + + + + + + @@ -3147,23 +3382,6 @@ Disable encryption: Only connect to peers without protocol encryption - - - - 2147483646 - - - 100 - - - - - - - Maximum number of articles per feed: - - - @@ -3183,7 +3401,7 @@ Disable encryption: Only connect to peers without protocol encryption - Qt::Horizontal + Qt::Orientation::Horizontal @@ -3193,6 +3411,43 @@ Disable encryption: Only connect to peers without protocol encryption + + + + Same host request delay: + + + + + + + sec + + + 2147483646 + + + 2 + + + + + + + Maximum number of articles per feed: + + + + + + + 2147483646 + + + 100 + + + @@ -3242,7 +3497,11 @@ Disable encryption: Only connect to peers without protocol encryption - + + + true + + @@ -3250,7 +3509,7 @@ Disable encryption: Only connect to peers without protocol encryption - Qt::Vertical + Qt::Orientation::Vertical @@ -3381,12 +3640,8 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv false - - - - Key: - - + + @@ -3395,28 +3650,35 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv - - + + + + + + Key: + + + + + + - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> true + + Qt::TextInteractionFlag::LinksAccessibleByKeyboard|Qt::TextInteractionFlag::LinksAccessibleByMouse + - - - - - - @@ -3448,7 +3710,7 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv - QLineEdit::Password + QLineEdit::EchoMode::Password Change current password @@ -3493,10 +3755,20 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv + + + + Never + + + 2147483647 + + + - Qt::Horizontal + Qt::Orientation::Horizontal @@ -3506,23 +3778,13 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv - - - - Never - - - 2147483647 - - - ban for: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -3566,7 +3828,7 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv - Qt::Horizontal + Qt::Orientation::Horizontal @@ -3584,7 +3846,7 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv - Use alternative Web UI + Use alternative WebUI true @@ -3592,17 +3854,34 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv false - + - + + + + + Files location: + + + + + + + + + + - Files location: + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + true + + + Qt::TextInteractionFlag::LinksAccessibleByKeyboard|Qt::TextInteractionFlag::LinksAccessibleByMouse - - - @@ -3629,7 +3908,7 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv - Enable cookie Secure flag (requires HTTPS) + Enable cookie Secure flag (requires HTTPS or localhost connection) @@ -3681,8 +3960,11 @@ Use ';' to split multiple entries. Can use wildcard '*'. + + true + - QPlainTextEdit::NoWrap + QPlainTextEdit::LineWrapMode::NoWrap Header: value pairs, one per line @@ -3719,6 +4001,19 @@ Use ';' to split multiple entries. Can use wildcard '*'. + + + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + true + + + Qt::TextInteractionFlag::LinksAccessibleByKeyboard|Qt::TextInteractionFlag::LinksAccessibleByMouse + + + @@ -3800,7 +4095,7 @@ Use ';' to split multiple entries. Can use wildcard '*'. - QLineEdit::Password + QLineEdit::EchoMode::Password @@ -3813,7 +4108,7 @@ Use ';' to split multiple entries. Can use wildcard '*'. - Qt::Vertical + Qt::Orientation::Vertical @@ -3851,7 +4146,7 @@ Use ';' to split multiple entries. Can use wildcard '*'. - QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Apply|QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok @@ -3865,122 +4160,6 @@ Use ';' to split multiple entries. Can use wildcard '*'. 1 - - tabOption - comboI18n - checkUseCustomTheme - customThemeFilePath - checkStartPaused - stopConditionComboBox - spinPort - checkUPnP - textWebUIUsername - checkWebUI - textSavePath - scrollArea_7 - scrollArea_2 - spinWebUIPort - textWebUIPassword - buttonBox - tabSelection - scrollArea - confirmDeletion - checkAltRowColors - actionTorrentDlOnDblClBox - actionTorrentFnOnDblClBox - checkBoxHideZeroStatusFilters - checkStartup - checkShowSplash - windowStateComboBox - checkProgramExitConfirm - checkShowSystray - checkMinimizeToSysTray - checkCloseToSystray - checkAssociateTorrents - checkAssociateMagnetLinks - checkPreventFromSuspendWhenDownloading - checkPreventFromSuspendWhenSeeding - checkAdditionDialog - checkAdditionDialogFront - checkPreallocateAll - checkUseDownloadPath - textDownloadPath - checkAppendqB - scanFoldersView - addWatchedFolderButton - editWatchedFolderButton - removeWatchedFolderButton - checkExportDir - textExportDir - checkExportDirFin - textExportDirFin - groupMailNotification - lineEditDestEmail - lineEditSmtpServer - groupMailNotifAuth - mailNotifUsername - mailNotifPassword - checkSmtpSSL - lineEditRunOnAdded - lineEditRunOnFinished - scrollArea_3 - randomButton - checkMaxConnections - spinMaxConnec - checkMaxConnectionsPerTorrent - spinMaxConnecPerTorrent - checkMaxUploadsPerTorrent - spinMaxUploadsPerTorrent - checkMaxUploads - spinMaxUploads - comboProxyType - textProxyIP - spinProxyPort - checkProxyHostnameLookup - checkProxyAuth - textProxyUsername - textProxyPassword - checkProxyBitTorrent - checkProxyPeerConnections - checkProxyRSS - checkProxyMisc - checkIPFilter - textFilterPath - IpFilterRefreshBtn - checkIpFilterTrackers - scrollArea_9 - spinUploadLimit - spinDownloadLimit - groupBoxSchedule - timeEditScheduleTo - timeEditScheduleFrom - comboBoxScheduleDays - spinUploadLimitAlt - spinDownloadLimitAlt - checkLimitLocalPeerRate - checkLimitTransportOverhead - scrollArea_4 - checkDHT - checkPeX - checkLSD - comboEncryption - checkAnonymousMode - checkEnableQueueing - spinMaxActiveDownloads - spinMaxActiveUploads - spinMaxActiveTorrents - checkWebUIUPnP - checkWebUIHttps - checkBypassLocalAuth - checkBypassAuthSubnetWhitelist - IPSubnetWhitelistButton - checkDynDNS - comboDNSService - registerDNSBtn - domainNameTxt - DNSUsernameTxt - DNSPasswordTxt - diff --git a/src/gui/powermanagement/inhibitor.cpp b/src/gui/powermanagement/inhibitor.cpp new file mode 100644 index 000000000000..dff5633bae3b --- /dev/null +++ b/src/gui/powermanagement/inhibitor.cpp @@ -0,0 +1,40 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) + * Copyright (C) 2011 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "inhibitor.h" + +bool Inhibitor::requestBusy() +{ + return true; +} + +bool Inhibitor::requestIdle() +{ + return true; +} diff --git a/src/gui/powermanagement/inhibitor.h b/src/gui/powermanagement/inhibitor.h new file mode 100644 index 000000000000..7b0d6bb685a6 --- /dev/null +++ b/src/gui/powermanagement/inhibitor.h @@ -0,0 +1,38 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +class Inhibitor +{ +public: + virtual ~Inhibitor() = default; + + virtual bool requestBusy(); + virtual bool requestIdle(); +}; diff --git a/src/gui/powermanagement/powermanagement_x11.cpp b/src/gui/powermanagement/inhibitordbus.cpp similarity index 89% rename from src/gui/powermanagement/powermanagement_x11.cpp rename to src/gui/powermanagement/inhibitordbus.cpp index ed3b1607979c..4e8d716abc05 100644 --- a/src/gui/powermanagement/powermanagement_x11.cpp +++ b/src/gui/powermanagement/inhibitordbus.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) * Copyright (C) 2011 Vladimir Golovnev * * This program is free software; you can redistribute it and/or @@ -26,7 +27,7 @@ * exception statement from your version. */ -#include "powermanagement_x11.h" +#include "inhibitordbus.h" #include #include @@ -36,7 +37,7 @@ #include "base/global.h" #include "base/logger.h" -PowerManagementInhibitor::PowerManagementInhibitor(QObject *parent) +InhibitorDBus::InhibitorDBus(QObject *parent) : QObject(parent) , m_busInterface {new QDBusInterface(u"org.gnome.SessionManager"_s, u"/org/gnome/SessionManager"_s , u"org.gnome.SessionManager"_s, QDBusConnection::sessionBus(), this)} @@ -70,38 +71,26 @@ PowerManagementInhibitor::PowerManagementInhibitor(QObject *parent) } else { + m_state = Error; LogMsg(tr("Power management error. Did not found suitable D-Bus interface."), Log::WARNING); } } -void PowerManagementInhibitor::requestIdle() +bool InhibitorDBus::requestBusy() { - m_intendedState = Idle; - if ((m_state == Error) || (m_state == Idle) || (m_state == RequestIdle) || (m_state == RequestBusy)) - return; + m_intendedState = Busy; - if (m_manager == ManagerType::Systemd) + switch (m_state) { - m_fd = {}; - m_state = Idle; - return; - } - - m_state = RequestIdle; - - const QString method = (m_manager == ManagerType::Gnome) - ? u"Uninhibit"_s - : u"UnInhibit"_s; - const QDBusPendingCall pcall = m_busInterface->asyncCall(method, m_cookie); - const auto *watcher = new QDBusPendingCallWatcher(pcall, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, &PowerManagementInhibitor::onAsyncReply); -} - -void PowerManagementInhibitor::requestBusy() -{ - m_intendedState = Busy; - if ((m_state == Error) || (m_state == Busy) || (m_state == RequestBusy) || (m_state == RequestIdle)) - return; + case Busy: + case RequestBusy: + return true; + case Error: + case RequestIdle: + return false; + case Idle: + break; + }; m_state = RequestBusy; @@ -123,10 +112,45 @@ void PowerManagementInhibitor::requestBusy() const QDBusPendingCall pcall = m_busInterface->asyncCallWithArgumentList(u"Inhibit"_s, args); const auto *watcher = new QDBusPendingCallWatcher(pcall, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, &PowerManagementInhibitor::onAsyncReply); + connect(watcher, &QDBusPendingCallWatcher::finished, this, &InhibitorDBus::onAsyncReply); + return true; +} + +bool InhibitorDBus::requestIdle() +{ + m_intendedState = Idle; + + switch (m_state) + { + case Idle: + case RequestIdle: + return true; + case Error: + case RequestBusy: + return false; + case Busy: + break; + }; + + if (m_manager == ManagerType::Systemd) + { + m_fd = {}; + m_state = Idle; + return true; + } + + m_state = RequestIdle; + + const QString method = (m_manager == ManagerType::Gnome) + ? u"Uninhibit"_s + : u"UnInhibit"_s; + const QDBusPendingCall pcall = m_busInterface->asyncCall(method, m_cookie); + const auto *watcher = new QDBusPendingCallWatcher(pcall, this); + connect(watcher, &QDBusPendingCallWatcher::finished, this, &InhibitorDBus::onAsyncReply); + return true; } -void PowerManagementInhibitor::onAsyncReply(QDBusPendingCallWatcher *call) +void InhibitorDBus::onAsyncReply(QDBusPendingCallWatcher *call) { call->deleteLater(); diff --git a/src/gui/powermanagement/powermanagement_x11.h b/src/gui/powermanagement/inhibitordbus.h similarity index 89% rename from src/gui/powermanagement/powermanagement_x11.h rename to src/gui/powermanagement/inhibitordbus.h index cc6fa529f484..e0cc998ef09b 100644 --- a/src/gui/powermanagement/powermanagement_x11.h +++ b/src/gui/powermanagement/inhibitordbus.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) * Copyright (C) 2011 Vladimir Golovnev * * This program is free software; you can redistribute it and/or @@ -31,20 +32,21 @@ #include #include +#include "inhibitor.h" + class QDBusInterface; class QDBusPendingCallWatcher; -class PowerManagementInhibitor final : public QObject +class InhibitorDBus final : public QObject, public Inhibitor { Q_OBJECT - Q_DISABLE_COPY_MOVE(PowerManagementInhibitor) + Q_DISABLE_COPY_MOVE(InhibitorDBus) public: - PowerManagementInhibitor(QObject *parent = nullptr); - ~PowerManagementInhibitor() override = default; + InhibitorDBus(QObject *parent = nullptr); - void requestIdle(); - void requestBusy(); + bool requestBusy() override; + bool requestIdle() override; private slots: void onAsyncReply(QDBusPendingCallWatcher *call); diff --git a/src/gui/powermanagement/inhibitormacos.cpp b/src/gui/powermanagement/inhibitormacos.cpp new file mode 100644 index 000000000000..c22d10b28e1d --- /dev/null +++ b/src/gui/powermanagement/inhibitormacos.cpp @@ -0,0 +1,46 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) + * Copyright (C) 2011 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "inhibitormacos.h" + +#include + +bool InhibitorMacOS::requestBusy() +{ + const CFStringRef assertName = tr("PMMacOS", "qBittorrent is active").toCFString(); + [[maybe_unused]] const auto assertNameGuard = qScopeGuard([&assertName] { ::CFRelease(assertName); }); + const IOReturn result = ::IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn + , assertName, &m_assertionID); + return result == kIOReturnSuccess; +} + +bool InhibitorMacOS::requestIdle() +{ + return ::IOPMAssertionRelease(m_assertionID) == kIOReturnSuccess; +} diff --git a/src/gui/powermanagement/inhibitormacos.h b/src/gui/powermanagement/inhibitormacos.h new file mode 100644 index 000000000000..5ad4f06a3080 --- /dev/null +++ b/src/gui/powermanagement/inhibitormacos.h @@ -0,0 +1,47 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +#include + +#include "inhibitor.h" + +class InhibitorMacOS final : public Inhibitor +{ + Q_DECLARE_TR_FUNCTIONS(InhibitorMacOS) + +public: + bool requestBusy() override; + bool requestIdle() override; + +private: + IOPMAssertionID m_assertionID {}; +}; diff --git a/src/gui/powermanagement/inhibitorwindows.cpp b/src/gui/powermanagement/inhibitorwindows.cpp new file mode 100644 index 000000000000..d31eb23b5ead --- /dev/null +++ b/src/gui/powermanagement/inhibitorwindows.cpp @@ -0,0 +1,42 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) + * Copyright (C) 2011 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "inhibitorwindows.h" + +#include + +bool InhibitorWindows::requestBusy() +{ + return ::SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED) != NULL; +} + +bool InhibitorWindows::requestIdle() +{ + return ::SetThreadExecutionState(ES_CONTINUOUS) != NULL; +} diff --git a/src/gui/powermanagement/inhibitorwindows.h b/src/gui/powermanagement/inhibitorwindows.h new file mode 100644 index 000000000000..79bf8df29d33 --- /dev/null +++ b/src/gui/powermanagement/inhibitorwindows.h @@ -0,0 +1,38 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include "inhibitor.h" + +class InhibitorWindows final : public Inhibitor +{ +public: + bool requestBusy() override; + bool requestIdle() override; +}; diff --git a/src/gui/powermanagement/powermanagement.cpp b/src/gui/powermanagement/powermanagement.cpp index a51bb10fe8d9..68c12dc934f6 100644 --- a/src/gui/powermanagement/powermanagement.cpp +++ b/src/gui/powermanagement/powermanagement.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) * Copyright (C) 2011 Vladimir Golovnev * * This program is free software; you can redistribute it and/or @@ -30,68 +31,59 @@ #include -#ifdef Q_OS_MACOS -#include -#endif - -#ifdef Q_OS_WIN -#include -#endif - -#ifdef QBT_USES_DBUS -#include "powermanagement_x11.h" +#if defined(Q_OS_MACOS) +#include "inhibitormacos.h" +using InhibitorImpl = InhibitorMacOS; +#elif defined(Q_OS_WIN) +#include "inhibitorwindows.h" +using InhibitorImpl = InhibitorWindows; +#elif defined(QBT_USES_DBUS) +#include "inhibitordbus.h" +using InhibitorImpl = InhibitorDBus; +#else +#include "inhibitor.h" +using InhibitorImpl = Inhibitor; #endif -PowerManagement::PowerManagement(QObject *parent) - : QObject(parent) -#ifdef QBT_USES_DBUS - , m_inhibitor {new PowerManagementInhibitor(this)} -#endif +PowerManagement::PowerManagement() + : m_inhibitor {new InhibitorImpl} { } PowerManagement::~PowerManagement() { setIdle(); + delete m_inhibitor; } -void PowerManagement::setActivityState(const bool busy) +void PowerManagement::setActivityState(const ActivityState state) { - if (busy) + switch (state) + { + case ActivityState::Busy: setBusy(); - else + break; + + case ActivityState::Idle: setIdle(); + break; + }; } void PowerManagement::setBusy() { - if (m_busy) + if (m_state == ActivityState::Busy) return; - m_busy = true; -#ifdef Q_OS_WIN - ::SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED); -#elif defined(QBT_USES_DBUS) - m_inhibitor->requestBusy(); -#elif defined(Q_OS_MACOS) - const IOReturn success = ::IOPMAssertionCreateWithName(kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn - , tr("qBittorrent is active").toCFString(), &m_assertionID); - if (success != kIOReturnSuccess) - m_busy = false; -#endif + if (m_inhibitor->requestBusy()) + m_state = ActivityState::Busy; } void PowerManagement::setIdle() { - if (!m_busy) + if (m_state == ActivityState::Idle) return; - m_busy = false; -#ifdef Q_OS_WIN - ::SetThreadExecutionState(ES_CONTINUOUS); -#elif defined(QBT_USES_DBUS) - m_inhibitor->requestIdle(); -#elif defined(Q_OS_MACOS) - ::IOPMAssertionRelease(m_assertionID); -#endif + if (m_inhibitor->requestIdle()) + m_state = ActivityState::Idle; } diff --git a/src/gui/powermanagement/powermanagement.h b/src/gui/powermanagement/powermanagement.h index f5168c1dff2c..e81a1b0b1b3d 100644 --- a/src/gui/powermanagement/powermanagement.h +++ b/src/gui/powermanagement/powermanagement.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2025 Mike Tzou (Chocobo1) * Copyright (C) 2011 Vladimir Golovnev * * This program is free software; you can redistribute it and/or @@ -28,38 +29,26 @@ #pragma once -#include +class Inhibitor; -#ifdef Q_OS_MACOS -// Require Mac OS X >= 10.5 -#include -#endif - -#ifdef QBT_USES_DBUS -class PowerManagementInhibitor; -#endif - -class PowerManagement final : public QObject +class PowerManagement final { - Q_OBJECT - Q_DISABLE_COPY_MOVE(PowerManagement) - public: - PowerManagement(QObject *parent = nullptr); - ~PowerManagement() override; + enum class ActivityState + { + Busy, + Idle + }; - void setActivityState(bool busy); + PowerManagement(); + ~PowerManagement(); + + void setActivityState(ActivityState state); private: void setBusy(); void setIdle(); - bool m_busy = false; - -#ifdef QBT_USES_DBUS - PowerManagementInhibitor *m_inhibitor = nullptr; -#endif -#ifdef Q_OS_MACOS - IOPMAssertionID m_assertionID {}; -#endif + ActivityState m_state = ActivityState::Idle; + Inhibitor *m_inhibitor = nullptr; }; diff --git a/src/gui/previewselectdialog.cpp b/src/gui/previewselectdialog.cpp index f325e5adbed3..00d103cab63e 100644 --- a/src/gui/previewselectdialog.cpp +++ b/src/gui/previewselectdialog.cpp @@ -48,6 +48,11 @@ #define SETTINGS_KEY(name) u"PreviewSelectDialog/" name +enum Roles +{ + SortRole = Qt::UserRole +}; + PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::Torrent *torrent) : QDialog(parent) , m_ui {new Ui::PreviewSelectDialog} @@ -75,13 +80,12 @@ PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::Torr m_ui->previewList->setAlternatingRowColors(pref->useAlternatingRowColors()); m_ui->previewList->setUniformRowHeights(true); m_ui->previewList->setModel(previewListModel); - m_ui->previewList->hideColumn(FILE_INDEX); auto *listDelegate = new PreviewListDelegate(this); m_ui->previewList->setItemDelegate(listDelegate); // Fill list in - const QVector fp = torrent->filesProgress(); + const QList fp = torrent->filesProgress(); for (int i = 0; i < torrent->filesCount(); ++i) { const Path filePath = torrent->filePath(i); @@ -89,13 +93,19 @@ PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::Torr { int row = previewListModel->rowCount(); previewListModel->insertRow(row); - previewListModel->setData(previewListModel->index(row, NAME), filePath.filename()); - previewListModel->setData(previewListModel->index(row, SIZE), Utils::Misc::friendlyUnit(torrent->fileSize(i))); - previewListModel->setData(previewListModel->index(row, PROGRESS), fp[i]); - previewListModel->setData(previewListModel->index(row, FILE_INDEX), i); + previewListModel->setData(previewListModel->index(row, NAME), filePath.filename(), Qt::DisplayRole); + previewListModel->setData(previewListModel->index(row, NAME), filePath.filename(), SortRole); + // Sorting file size by bytes, while displaying by human readable format + previewListModel->setData(previewListModel->index(row, SIZE), Utils::Misc::friendlyUnit(torrent->fileSize(i)), Qt::DisplayRole); + previewListModel->setData(previewListModel->index(row, SIZE), torrent->fileSize(i), SortRole); + previewListModel->setData(previewListModel->index(row, PROGRESS), fp[i], Qt::DisplayRole); + previewListModel->setData(previewListModel->index(row, PROGRESS), fp[i], SortRole); + previewListModel->setData(previewListModel->index(row, FILE_INDEX), i, Qt::DisplayRole); + previewListModel->setData(previewListModel->index(row, FILE_INDEX), i, SortRole); } } + previewListModel->setSortRole(SortRole); previewListModel->sort(NAME); m_ui->previewList->header()->setContextMenuPolicy(Qt::CustomContextMenu); m_ui->previewList->header()->setFirstSectionMovable(true); @@ -106,6 +116,7 @@ PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::Torr // Restore dialog state loadWindowState(); + m_ui->previewList->hideColumn(FILE_INDEX); } PreviewSelectDialog::~PreviewSelectDialog() diff --git a/src/gui/previewselectdialog.ui b/src/gui/previewselectdialog.ui index bd21963e4101..9564b65833d7 100644 --- a/src/gui/previewselectdialog.ui +++ b/src/gui/previewselectdialog.ui @@ -31,7 +31,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok true diff --git a/src/gui/programupdater.cpp b/src/gui/programupdater.cpp index ead2e9e49afa..063bc5473a43 100644 --- a/src/gui/programupdater.cpp +++ b/src/gui/programupdater.cpp @@ -29,6 +29,9 @@ #include "programupdater.h" +#include + +#include #include #include #include @@ -61,6 +64,20 @@ namespace } return (newVersion > currentVersion); } + + QString buildVariant() + { +#if defined(Q_OS_MACOS) + const auto BASE_OS = u"Mac OS X"_s; +#elif defined(Q_OS_WIN) + const auto BASE_OS = u"Windows x64"_s; +#endif + + if constexpr ((QT_VERSION_MAJOR == 6) && (LIBTORRENT_VERSION_MAJOR == 1)) + return BASE_OS; + + return u"%1 (qt%2 lt%3%4)"_s.arg(BASE_OS, QString::number(QT_VERSION_MAJOR), QString::number(LIBTORRENT_VERSION_MAJOR), QString::number(LIBTORRENT_VERSION_MINOR)); + } } void ProgramUpdater::checkForUpdates() const @@ -97,12 +114,7 @@ void ProgramUpdater::rssDownloadFinished(const Net::DownloadResult &result) : QString {}; }; -#ifdef Q_OS_MACOS - const QString OS_TYPE = u"Mac OS X"_s; -#elif defined(Q_OS_WIN) - const QString OS_TYPE = u"Windows x64"_s; -#endif - + const QString variant = buildVariant(); bool inItem = false; QString version; QString updateLink; @@ -128,7 +140,7 @@ void ProgramUpdater::rssDownloadFinished(const Net::DownloadResult &result) { if (inItem && (xml.name() == u"item")) { - if (type.compare(OS_TYPE, Qt::CaseInsensitive) == 0) + if (type.compare(variant, Qt::CaseInsensitive) == 0) { qDebug("The last update available is %s", qUtf8Printable(version)); if (!version.isEmpty()) diff --git a/src/gui/properties/downloadedpiecesbar.cpp b/src/gui/properties/downloadedpiecesbar.cpp index 486d761d4e65..0f1ec8cea3af 100644 --- a/src/gui/properties/downloadedpiecesbar.cpp +++ b/src/gui/properties/downloadedpiecesbar.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -32,7 +33,7 @@ #include #include -#include +#include #include "base/global.h" @@ -46,14 +47,14 @@ namespace } DownloadedPiecesBar::DownloadedPiecesBar(QWidget *parent) - : base {parent} - , m_dlPieceColor {dlPieceColor(pieceColor())} + : base(parent) { + updateColorsImpl(); } -QVector DownloadedPiecesBar::bitfieldToFloatVector(const QBitArray &vecin, int reqSize) +QList DownloadedPiecesBar::bitfieldToFloatVector(const QBitArray &vecin, int reqSize) { - QVector result(reqSize, 0.0); + QList result(reqSize, 0.0); if (vecin.isEmpty()) return result; const float ratio = vecin.size() / static_cast(reqSize); @@ -128,25 +129,24 @@ QVector DownloadedPiecesBar::bitfieldToFloatVector(const QBitArray &vecin return result; } -bool DownloadedPiecesBar::updateImage(QImage &image) +QImage DownloadedPiecesBar::renderImage() { // qDebug() << "updateImage"; - QImage image2(width() - 2 * borderWidth, 1, QImage::Format_RGB888); - if (image2.isNull()) + QImage image {width() - 2 * borderWidth, 1, QImage::Format_RGB888}; + if (image.isNull()) { - qDebug() << "QImage image2() allocation failed, width():" << width(); - return false; + qDebug() << "QImage allocation failed, width():" << width(); + return image; } if (m_pieces.isEmpty()) { - image2.fill(backgroundColor()); - image = image2; - return true; + image.fill(backgroundColor()); + return image; } - QVector scaledPieces = bitfieldToFloatVector(m_pieces, image2.width()); - QVector scaledPiecesDl = bitfieldToFloatVector(m_downloadedPieces, image2.width()); + QList scaledPieces = bitfieldToFloatVector(m_pieces, image.width()); + QList scaledPiecesDl = bitfieldToFloatVector(m_downloadedPieces, image.width()); // filling image for (int x = 0; x < scaledPieces.size(); ++x) @@ -161,15 +161,15 @@ bool DownloadedPiecesBar::updateImage(QImage &image) QRgb mixedColor = mixTwoColors(pieceColor().rgb(), m_dlPieceColor.rgb(), ratio); mixedColor = mixTwoColors(backgroundColor().rgb(), mixedColor, fillRatio); - image2.setPixel(x, 0, mixedColor); + image.setPixel(x, 0, mixedColor); } else { - image2.setPixel(x, 0, pieceColors()[piecesToValue * 255]); + image.setPixel(x, 0, pieceColors()[piecesToValue * 255]); } } - image = image2; - return true; + + return image; } void DownloadedPiecesBar::setProgress(const QBitArray &pieces, const QBitArray &downloadedPieces) @@ -177,7 +177,7 @@ void DownloadedPiecesBar::setProgress(const QBitArray &pieces, const QBitArray & m_pieces = pieces; m_downloadedPieces = downloadedPieces; - requestImageUpdate(); + redraw(); } void DownloadedPiecesBar::clear() @@ -198,3 +198,14 @@ QString DownloadedPiecesBar::simpleToolTipText() const + u""; } + +void DownloadedPiecesBar::updateColors() +{ + PiecesBar::updateColors(); + updateColorsImpl(); +} + +void DownloadedPiecesBar::updateColorsImpl() +{ + m_dlPieceColor = dlPieceColor(pieceColor()); +} diff --git a/src/gui/properties/downloadedpiecesbar.h b/src/gui/properties/downloadedpiecesbar.h index d98a114b2f2b..85e9e0c8d0f0 100644 --- a/src/gui/properties/downloadedpiecesbar.h +++ b/src/gui/properties/downloadedpiecesbar.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -51,12 +52,14 @@ class DownloadedPiecesBar final : public PiecesBar private: // scale bitfield vector to float vector - QVector bitfieldToFloatVector(const QBitArray &vecin, int reqSize); - bool updateImage(QImage &image) override; + QList bitfieldToFloatVector(const QBitArray &vecin, int reqSize); + QImage renderImage() override; QString simpleToolTipText() const override; + void updateColors() override; + void updateColorsImpl(); // incomplete piece color - const QColor m_dlPieceColor; + QColor m_dlPieceColor; // last used bitfields, uses to better resize redraw // TODO: make a diff pieces to new pieces and update only changed pixels, speedup when update > 20x faster QBitArray m_pieces; diff --git a/src/gui/properties/peerlistwidget.cpp b/src/gui/properties/peerlistwidget.cpp index 02f0cc60939d..d10bb9c031c9 100644 --- a/src/gui/properties/peerlistwidget.cpp +++ b/src/gui/properties/peerlistwidget.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -42,7 +43,6 @@ #include #include #include -#include #include #include "base/bittorrent/peeraddress.h" @@ -290,7 +290,7 @@ void PeerListWidget::showPeerListMenu() QAction *addNewPeer = menu->addAction(UIThemeManager::instance()->getIcon(u"peers-add"_s), tr("Add peers...") , this, [this, torrent]() { - const QVector peersList = PeersAdditionDialog::askForPeers(this); + const QList peersList = PeersAdditionDialog::askForPeers(this); const int peerCount = std::count_if(peersList.cbegin(), peersList.cend(), [torrent](const BitTorrent::PeerAddress &peer) { return torrent->connectPeer(peer); @@ -335,7 +335,7 @@ void PeerListWidget::banSelectedPeers() // Store selected rows first as selected peers may disconnect const QModelIndexList selectedIndexes = selectionModel()->selectedRows(); - QVector selectedIPs; + QList selectedIPs; selectedIPs.reserve(selectedIndexes.size()); for (const QModelIndex &index : selectedIndexes) @@ -405,13 +405,13 @@ void PeerListWidget::loadPeers(const BitTorrent::Torrent *torrent) return; using TorrentPtr = QPointer; - torrent->fetchPeerInfo([this, torrent = TorrentPtr(torrent)](const QVector &peers) + torrent->fetchPeerInfo([this, torrent = TorrentPtr(torrent)](const QList &peers) { if (torrent != m_properties->getCurrentTorrent()) return; // Remove I2P peers since they will be completely reloaded. - for (QStandardItem *item : asConst(m_I2PPeerItems)) + for (const QStandardItem *item : asConst(m_I2PPeerItems)) m_listModel->removeRow(item->row()); m_I2PPeerItems.clear(); @@ -420,7 +420,8 @@ void PeerListWidget::loadPeers(const BitTorrent::Torrent *torrent) for (auto i = m_peerItems.cbegin(); i != m_peerItems.cend(); ++i) existingPeers.insert(i.key()); - const bool hideZeroValues = Preferences::instance()->getHideZeroValues(); + const Preferences *pref = Preferences::instance(); + const bool hideZeroValues = (pref->getHideZeroValues() && (pref->getHideZeroComboValues() == 0)); for (const BitTorrent::PeerInfo &peer : peers) { const PeerEndpoint peerEndpoint {peer.address(), peer.connectionType()}; @@ -466,10 +467,14 @@ void PeerListWidget::loadPeers(const BitTorrent::Torrent *torrent) { QStandardItem *item = m_peerItems.take(peerEndpoint); - QSet &items = m_itemsByIP[peerEndpoint.address.ip]; - items.remove(item); - if (items.isEmpty()) - m_itemsByIP.remove(peerEndpoint.address.ip); + const auto items = m_itemsByIP.find(peerEndpoint.address.ip); + Q_ASSERT(items != m_itemsByIP.end()); + if (items == m_itemsByIP.end()) [[unlikely]] + continue; + + items->remove(item); + if (items->isEmpty()) + m_itemsByIP.erase(items); m_listModel->removeRow(item->row()); } diff --git a/src/gui/properties/peersadditiondialog.cpp b/src/gui/properties/peersadditiondialog.cpp index 6ef62a7f1ee7..a982270837be 100644 --- a/src/gui/properties/peersadditiondialog.cpp +++ b/src/gui/properties/peersadditiondialog.cpp @@ -50,7 +50,7 @@ PeersAdditionDialog::~PeersAdditionDialog() delete m_ui; } -QVector PeersAdditionDialog::askForPeers(QWidget *parent) +QList PeersAdditionDialog::askForPeers(QWidget *parent) { PeersAdditionDialog dlg(parent); dlg.exec(); diff --git a/src/gui/properties/peersadditiondialog.h b/src/gui/properties/peersadditiondialog.h index a778ccb39de2..078b7f775680 100644 --- a/src/gui/properties/peersadditiondialog.h +++ b/src/gui/properties/peersadditiondialog.h @@ -29,7 +29,7 @@ #pragma once #include -#include +#include #include "base/bittorrent/peerinfo.h" @@ -47,12 +47,12 @@ class PeersAdditionDialog : public QDialog PeersAdditionDialog(QWidget *parent); ~PeersAdditionDialog(); - static QVector askForPeers(QWidget *parent); + static QList askForPeers(QWidget *parent); protected slots: void validateInput(); private: Ui::PeersAdditionDialog *m_ui = nullptr; - QVector m_peersList; + QList m_peersList; }; diff --git a/src/gui/properties/peersadditiondialog.ui b/src/gui/properties/peersadditiondialog.ui index 3084080fec31..fcc39159af60 100644 --- a/src/gui/properties/peersadditiondialog.ui +++ b/src/gui/properties/peersadditiondialog.ui @@ -23,8 +23,11 @@ + + true + - QTextEdit::NoWrap + QTextEdit::LineWrapMode::NoWrap false @@ -37,10 +40,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/properties/pieceavailabilitybar.cpp b/src/gui/properties/pieceavailabilitybar.cpp index 0f33d704bfe8..5a9e618457a9 100644 --- a/src/gui/properties/pieceavailabilitybar.cpp +++ b/src/gui/properties/pieceavailabilitybar.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -40,9 +41,9 @@ PieceAvailabilityBar::PieceAvailabilityBar(QWidget *parent) { } -QVector PieceAvailabilityBar::intToFloatVector(const QVector &vecin, int reqSize) +QList PieceAvailabilityBar::intToFloatVector(const QList &vecin, int reqSize) { - QVector result(reqSize, 0.0); + QList result(reqSize, 0.0); if (vecin.isEmpty()) return result; const float ratio = static_cast(vecin.size()) / reqSize; @@ -126,39 +127,38 @@ QVector PieceAvailabilityBar::intToFloatVector(const QVector &vecin, return result; } -bool PieceAvailabilityBar::updateImage(QImage &image) +QImage PieceAvailabilityBar::renderImage() { - QImage image2(width() - 2 * borderWidth, 1, QImage::Format_RGB888); - if (image2.isNull()) + QImage image {width() - 2 * borderWidth, 1, QImage::Format_RGB888}; + if (image.isNull()) { - qDebug() << "QImage image2() allocation failed, width():" << width(); - return false; + qDebug() << "QImage allocation failed, width():" << width(); + return image; } if (m_pieces.empty()) { - image2.fill(backgroundColor()); - image = image2; - return true; + image.fill(backgroundColor()); + return image; } - QVector scaledPieces = intToFloatVector(m_pieces, image2.width()); + QList scaledPieces = intToFloatVector(m_pieces, image.width()); // filling image for (int x = 0; x < scaledPieces.size(); ++x) { float piecesToValue = scaledPieces.at(x); - image2.setPixel(x, 0, pieceColors()[piecesToValue * 255]); + image.setPixel(x, 0, pieceColors()[piecesToValue * 255]); } - image = image2; - return true; + + return image; } -void PieceAvailabilityBar::setAvailability(const QVector &avail) +void PieceAvailabilityBar::setAvailability(const QList &avail) { m_pieces = avail; - requestImageUpdate(); + redraw(); } void PieceAvailabilityBar::clear() diff --git a/src/gui/properties/pieceavailabilitybar.h b/src/gui/properties/pieceavailabilitybar.h index 05472d489b38..3fb6be98e41e 100644 --- a/src/gui/properties/pieceavailabilitybar.h +++ b/src/gui/properties/pieceavailabilitybar.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -40,19 +41,19 @@ class PieceAvailabilityBar final : public PiecesBar public: PieceAvailabilityBar(QWidget *parent); - void setAvailability(const QVector &avail); + void setAvailability(const QList &avail); // PiecesBar interface void clear() override; private: - bool updateImage(QImage &image) override; + QImage renderImage() override; QString simpleToolTipText() const override; // last used int vector, uses to better resize redraw // TODO: make a diff pieces to new pieces and update only changed pixels, speedup when update > 20x faster - QVector m_pieces; + QList m_pieces; // scale int vector to float vector - QVector intToFloatVector(const QVector &vecin, int reqSize); + QList intToFloatVector(const QList &vecin, int reqSize); }; diff --git a/src/gui/properties/piecesbar.cpp b/src/gui/properties/piecesbar.cpp index 0d42ec2ab14b..87b941493b07 100644 --- a/src/gui/properties/piecesbar.cpp +++ b/src/gui/properties/piecesbar.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2016 Eugene Shalygin * Copyright (C) 2006 Christophe Dumez * @@ -114,10 +115,10 @@ namespace } PiecesBar::PiecesBar(QWidget *parent) - : QWidget {parent} + : QWidget(parent) { - updatePieceColors(); setMouseTracking(true); + updateColorsImpl(); } void PiecesBar::setTorrent(const BitTorrent::Torrent *torrent) @@ -135,12 +136,19 @@ void PiecesBar::clear() bool PiecesBar::event(QEvent *e) { - if (e->type() == QEvent::ToolTip) + const QEvent::Type eventType = e->type(); + if (eventType == QEvent::ToolTip) { showToolTip(static_cast(e)); return true; } + if (eventType == QEvent::PaletteChange) + { + updateColors(); + redraw(); + } + return base::event(e); } @@ -154,7 +162,7 @@ void PiecesBar::leaveEvent(QEvent *e) { m_hovered = false; m_highlightedRegion = {}; - requestImageUpdate(); + redraw(); base::leaveEvent(e); } @@ -178,16 +186,17 @@ void PiecesBar::paintEvent(QPaintEvent *) else { if (m_image.width() != imageRect.width()) - updateImage(m_image); + { + if (const QImage image = renderImage(); !image.isNull()) + m_image = image; + } painter.drawImage(imageRect, m_image); } if (!m_highlightedRegion.isNull()) { - QColor highlightColor {this->palette().color(QPalette::Active, QPalette::Highlight)}; - highlightColor.setAlphaF(0.35f); QRect targetHighlightRect {m_highlightedRegion.adjusted(borderWidth, borderWidth, borderWidth, height() - 2 * borderWidth)}; - painter.fillRect(targetHighlightRect, highlightColor); + painter.fillRect(targetHighlightRect, highlightedPieceColor()); } QPainterPath border; @@ -196,33 +205,43 @@ void PiecesBar::paintEvent(QPaintEvent *) painter.drawPath(border); } -void PiecesBar::requestImageUpdate() +void PiecesBar::redraw() { - if (updateImage(m_image)) + if (const QImage image = renderImage(); !image.isNull()) + { + m_image = image; update(); + } } QColor PiecesBar::backgroundColor() const { - return palette().color(QPalette::Base); + return palette().color(QPalette::Active, QPalette::Base); } QColor PiecesBar::borderColor() const { - return palette().color(QPalette::Dark); + return palette().color(QPalette::Active, QPalette::Dark); } QColor PiecesBar::pieceColor() const { - return palette().color(QPalette::Highlight); + return palette().color(QPalette::Active, QPalette::Highlight); +} + +QColor PiecesBar::highlightedPieceColor() const +{ + QColor col = palette().color(QPalette::Highlight).darker(); + col.setAlphaF(0.35); + return col; } QColor PiecesBar::colorBoxBorderColor() const { - return palette().color(QPalette::ToolTipText); + return palette().color(QPalette::Active, QPalette::ToolTipText); } -const QVector &PiecesBar::pieceColors() const +const QList &PiecesBar::pieceColors() const { return m_pieceColors; } @@ -261,7 +280,7 @@ void PiecesBar::showToolTip(const QHelpEvent *e) { const PieceIndexToImagePos transform {torrentInfo, m_image}; const int pieceIndex = transform.pieceIndex(imagePos); - const QVector fileIndexes = torrentInfo.fileIndicesForPiece(pieceIndex); + const QList fileIndexes = torrentInfo.fileIndicesForPiece(pieceIndex); QString tooltipTitle; if (fileIndexes.count() > 1) @@ -305,7 +324,7 @@ void PiecesBar::highlightFile(int imagePos) PieceIndexToImagePos transform {torrentInfo, m_image}; int pieceIndex = transform.pieceIndex(imagePos); - QVector fileIndices {torrentInfo.fileIndicesForPiece(pieceIndex)}; + QList fileIndices {torrentInfo.fileIndicesForPiece(pieceIndex)}; if (fileIndices.count() == 1) { BitTorrent::TorrentInfo::PieceRange filePieces = torrentInfo.filePieces(fileIndices.first()); @@ -325,12 +344,17 @@ void PiecesBar::highlightFile(int imagePos) } } -void PiecesBar::updatePieceColors() +void PiecesBar::updateColors() +{ + updateColorsImpl(); +} + +void PiecesBar::updateColorsImpl() { - m_pieceColors = QVector(256); + m_pieceColors = QList(256); for (int i = 0; i < 256; ++i) { - float ratio = (i / 255.0); + const float ratio = (i / 255.0); m_pieceColors[i] = mixTwoColors(backgroundColor().rgb(), pieceColor().rgb(), ratio); } } diff --git a/src/gui/properties/piecesbar.h b/src/gui/properties/piecesbar.h index 2f6e2061566d..3811ae4711d2 100644 --- a/src/gui/properties/piecesbar.h +++ b/src/gui/properties/piecesbar.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2016 Eugene Shalygin * Copyright (C) 2006 Christophe Dumez * @@ -54,23 +55,23 @@ class PiecesBar : public QWidget virtual void clear(); - // QObject interface - bool event(QEvent *e) override; - protected: - // QWidget interface + bool event(QEvent *e) override; void enterEvent(QEnterEvent *e) override; void leaveEvent(QEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override; - void paintEvent(QPaintEvent *e) override; - void requestImageUpdate(); + + virtual void updateColors(); + void redraw(); QColor backgroundColor() const; QColor borderColor() const; QColor pieceColor() const; + QColor highlightedPieceColor() const; QColor colorBoxBorderColor() const; - const QVector &pieceColors() const; + + const QList &pieceColors() const; // mix two colors by light model, ratio <0, 1> static QRgb mixTwoColors(QRgb rgb1, QRgb rgb2, float ratio); @@ -82,16 +83,14 @@ class PiecesBar : public QWidget void highlightFile(int imagePos); virtual QString simpleToolTipText() const = 0; + virtual QImage renderImage() = 0; - // draw new image to replace the actual image - // returns true if image was successfully updated - virtual bool updateImage(QImage &image) = 0; - void updatePieceColors(); + void updateColorsImpl(); const BitTorrent::Torrent *m_torrent = nullptr; QImage m_image; // buffered 256 levels gradient from bg_color to piece_color - QVector m_pieceColors; + QList m_pieceColors; bool m_hovered = false; QRect m_highlightedRegion; // part of the bar can be highlighted; this rectangle is in the same frame as m_image }; diff --git a/src/gui/properties/propertieswidget.cpp b/src/gui/properties/propertieswidget.cpp index e9f30c0952c3..d5c2b03a48bb 100644 --- a/src/gui/properties/propertieswidget.cpp +++ b/src/gui/properties/propertieswidget.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -39,7 +39,6 @@ #include #include #include -#include #include #include "base/bittorrent/infohash.h" @@ -52,6 +51,7 @@ #include "base/utils/misc.h" #include "base/utils/string.h" #include "gui/autoexpandabledialog.h" +#include "gui/filterpatternformatmenu.h" #include "gui/lineedit.h" #include "gui/trackerlist/trackerlistwidget.h" #include "gui/uithememanager.h" @@ -66,6 +66,7 @@ PropertiesWidget::PropertiesWidget(QWidget *parent) : QWidget(parent) , m_ui {new Ui::PropertiesWidget} + , m_storeFilterPatternFormat {u"GUI/PropertiesWidget/FilterPatternFormat"_s} { m_ui->setupUi(this); #ifndef Q_OS_MACOS @@ -78,7 +79,9 @@ PropertiesWidget::PropertiesWidget(QWidget *parent) m_contentFilterLine = new LineEdit(this); m_contentFilterLine->setPlaceholderText(tr("Filter files...")); m_contentFilterLine->setFixedWidth(300); - connect(m_contentFilterLine, &LineEdit::textChanged, m_ui->filesList, &TorrentContentWidget::setFilterPattern); + m_contentFilterLine->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_contentFilterLine, &QWidget::customContextMenuRequested, this, &PropertiesWidget::showContentFilterContextMenu); + connect(m_contentFilterLine, &LineEdit::textChanged, this, &PropertiesWidget::setContentFilterPattern); m_ui->contentFilterLayout->insertWidget(3, m_contentFilterLine); m_ui->filesList->setDoubleClickAction(TorrentContentWidget::DoubleClickAction::Open); @@ -206,6 +209,7 @@ void PropertiesWidget::clear() m_ui->labelSavePathVal->clear(); m_ui->labelCreatedOnVal->clear(); m_ui->labelTotalPiecesVal->clear(); + m_ui->labelPrivateVal->clear(); m_ui->labelInfohash1Val->clear(); m_ui->labelInfohash2Val->clear(); m_ui->labelCommentVal->clear(); @@ -220,6 +224,7 @@ void PropertiesWidget::clear() m_ui->labelConnectionsVal->clear(); m_ui->labelReannounceInVal->clear(); m_ui->labelShareRatioVal->clear(); + m_ui->labelPopularityVal->clear(); m_ui->listWebSeeds->clear(); m_ui->labelETAVal->clear(); m_ui->labelSeedsVal->clear(); @@ -257,12 +262,44 @@ QTreeView *PropertiesWidget::getFilesList() const return m_ui->filesList; } +PropTabBar *PropertiesWidget::tabBar() const +{ + return m_tabBar; +} + +LineEdit *PropertiesWidget::contentFilterLine() const +{ + return m_contentFilterLine; +} + void PropertiesWidget::updateSavePath(BitTorrent::Torrent *const torrent) { if (torrent == m_torrent) m_ui->labelSavePathVal->setText(m_torrent->savePath().toString()); } +void PropertiesWidget::showContentFilterContextMenu() +{ + QMenu *menu = m_contentFilterLine->createStandardContextMenu(); + + auto *formatMenu = new FilterPatternFormatMenu(m_storeFilterPatternFormat.get(FilterPatternFormat::Wildcards), menu); + connect(formatMenu, &FilterPatternFormatMenu::patternFormatChanged, this, [this](const FilterPatternFormat format) + { + m_storeFilterPatternFormat = format; + setContentFilterPattern(); + }); + + menu->addSeparator(); + menu->addMenu(formatMenu); + menu->setAttribute(Qt::WA_DeleteOnClose); + menu->popup(QCursor::pos()); +} + +void PropertiesWidget::setContentFilterPattern() +{ + m_ui->filesList->setFilterPattern(m_contentFilterLine->text(), m_storeFilterPatternFormat.get(FilterPatternFormat::Wildcards)); +} + void PropertiesWidget::updateTorrentInfos(BitTorrent::Torrent *const torrent) { if (torrent == m_torrent) @@ -285,6 +322,8 @@ void PropertiesWidget::loadTorrentInfos(BitTorrent::Torrent *const torrent) // Info hashes m_ui->labelInfohash1Val->setText(m_torrent->infoHash().v1().isValid() ? m_torrent->infoHash().v1().toString() : tr("N/A")); m_ui->labelInfohash2Val->setText(m_torrent->infoHash().v2().isValid() ? m_torrent->infoHash().v2().toString() : tr("N/A")); + // URL seeds + loadUrlSeeds(); if (m_torrent->hasMetadata()) { // Creation date @@ -295,11 +334,15 @@ void PropertiesWidget::loadTorrentInfos(BitTorrent::Torrent *const torrent) // Comment m_ui->labelCommentVal->setText(Utils::Misc::parseHtmlLinks(m_torrent->comment().toHtmlEscaped())); - // URL seeds - loadUrlSeeds(); - m_ui->labelCreatedByVal->setText(m_torrent->creator()); + + m_ui->labelPrivateVal->setText(m_torrent->isPrivate() ? tr("Yes") : tr("No")); + } + else + { + m_ui->labelPrivateVal->setText(tr("N/A")); } + // Load dynamic data loadDynamicData(); } @@ -398,6 +441,9 @@ void PropertiesWidget::loadDynamicData() const qreal ratio = m_torrent->realRatio(); m_ui->labelShareRatioVal->setText(ratio > BitTorrent::Torrent::MAX_RATIO ? C_INFINITY : Utils::String::fromDouble(ratio, 2)); + const qreal popularity = m_torrent->popularity(); + m_ui->labelPopularityVal->setText(popularity > BitTorrent::Torrent::MAX_RATIO ? C_INFINITY : Utils::String::fromDouble(popularity, 2)); + m_ui->labelSeedsVal->setText(tr("%1 (%2 total)", "%1 and %2 are numbers, e.g. 3 (10 total)") .arg(QString::number(m_torrent->seedsCount()) , QString::number(m_torrent->totalSeedsCount()))); @@ -428,11 +474,11 @@ void PropertiesWidget::loadDynamicData() m_ui->labelTotalPiecesVal->setText(tr("%1 x %2 (have %3)", "(torrent pieces) eg 152 x 4MB (have 25)").arg(m_torrent->piecesCount()).arg(Utils::Misc::friendlyUnit(m_torrent->pieceLength())).arg(m_torrent->piecesHave())); - if (!m_torrent->isFinished() && !m_torrent->isPaused() && !m_torrent->isQueued() && !m_torrent->isChecking()) + if (!m_torrent->isFinished() && !m_torrent->isStopped() && !m_torrent->isQueued() && !m_torrent->isChecking()) { // Pieces availability showPiecesAvailability(true); - m_torrent->fetchPieceAvailability([this, torrent = TorrentPtr(m_torrent)](const QVector &pieceAvailability) + m_torrent->fetchPieceAvailability([this, torrent = TorrentPtr(m_torrent)](const QList &pieceAvailability) { if (torrent == m_torrent) m_piecesAvailability->setAvailability(pieceAvailability); @@ -478,17 +524,17 @@ void PropertiesWidget::loadUrlSeeds() return; using TorrentPtr = QPointer; - m_torrent->fetchURLSeeds([this, torrent = TorrentPtr(m_torrent)](const QVector &urlSeeds) + m_torrent->fetchURLSeeds([this, torrent = TorrentPtr(m_torrent)](const QList &urlSeeds) { if (torrent != m_torrent) return; m_ui->listWebSeeds->clear(); - qDebug("Loading URL seeds"); + qDebug("Loading web seeds"); // Add url seeds for (const QUrl &urlSeed : urlSeeds) { - qDebug("Loading URL seed: %s", qUtf8Printable(urlSeed.toString())); + qDebug("Loading web seed: %s", qUtf8Printable(urlSeed.toString())); new QListWidgetItem(urlSeed.toString(), m_ui->listWebSeeds); } }); @@ -503,16 +549,16 @@ void PropertiesWidget::displayWebSeedListMenu() QMenu *menu = new QMenu(this); menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(UIThemeManager::instance()->getIcon(u"list-add"_s), tr("New Web seed"), this, &PropertiesWidget::askWebSeed); + menu->addAction(UIThemeManager::instance()->getIcon(u"list-add"_s), tr("Add web seed..."), this, &PropertiesWidget::askWebSeed); if (!rows.isEmpty()) { - menu->addAction(UIThemeManager::instance()->getIcon(u"edit-clear"_s, u"list-remove"_s), tr("Remove Web seed") + menu->addAction(UIThemeManager::instance()->getIcon(u"edit-clear"_s, u"list-remove"_s), tr("Remove web seed") , this, &PropertiesWidget::deleteSelectedUrlSeeds); menu->addSeparator(); - menu->addAction(UIThemeManager::instance()->getIcon(u"edit-copy"_s), tr("Copy Web seed URL") + menu->addAction(UIThemeManager::instance()->getIcon(u"edit-copy"_s), tr("Copy web seed URL") , this, &PropertiesWidget::copySelectedWebSeedsToClipboard); - menu->addAction(UIThemeManager::instance()->getIcon(u"edit-rename"_s), tr("Edit Web seed URL") + menu->addAction(UIThemeManager::instance()->getIcon(u"edit-rename"_s), tr("Edit web seed URL...") , this, &PropertiesWidget::editWebSeed); } @@ -560,14 +606,14 @@ void PropertiesWidget::askWebSeed() { bool ok = false; // Ask user for a new url seed - const QString urlSeed = AutoExpandableDialog::getText(this, tr("New URL seed", "New HTTP source"), - tr("New URL seed:"), QLineEdit::Normal, + const QString urlSeed = AutoExpandableDialog::getText(this, tr("Add web seed", "Add HTTP source"), + tr("Add web seed:"), QLineEdit::Normal, u"http://www."_s, &ok); if (!ok) return; qDebug("Adding %s web seed", qUtf8Printable(urlSeed)); if (!m_ui->listWebSeeds->findItems(urlSeed, Qt::MatchFixedString).empty()) { - QMessageBox::warning(this, u"qBittorrent"_s, tr("This URL seed is already in the list."), QMessageBox::Ok); + QMessageBox::warning(this, u"qBittorrent"_s, tr("This web seed is already in the list."), QMessageBox::Ok); return; } if (m_torrent) @@ -581,7 +627,7 @@ void PropertiesWidget::deleteSelectedUrlSeeds() const QList selectedItems = m_ui->listWebSeeds->selectedItems(); if (selectedItems.isEmpty()) return; - QVector urlSeeds; + QList urlSeeds; urlSeeds.reserve(selectedItems.size()); for (const QListWidgetItem *item : selectedItems) @@ -620,7 +666,7 @@ void PropertiesWidget::editWebSeed() if (!m_ui->listWebSeeds->findItems(newSeed, Qt::MatchFixedString).empty()) { QMessageBox::warning(this, u"qBittorrent"_s, - tr("This URL seed is already in the list."), + tr("This web seed is already in the list."), QMessageBox::Ok); return; } diff --git a/src/gui/properties/propertieswidget.h b/src/gui/properties/propertieswidget.h index f8dfc9ebaab8..21b1b5fc584b 100644 --- a/src/gui/properties/propertieswidget.h +++ b/src/gui/properties/propertieswidget.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -32,7 +32,8 @@ #include #include -#include "base/pathfwd.h" +#include "base/settingvalue.h" +#include "gui/filterpatternformat.h" class QPushButton; class QTreeView; @@ -73,6 +74,8 @@ class PropertiesWidget : public QWidget TrackerListWidget *getTrackerList() const; PeerListWidget *getPeerList() const; QTreeView *getFilesList() const; + PropTabBar *tabBar() const; + LineEdit *contentFilterLine() const; public slots: void setVisibility(bool visible); @@ -100,6 +103,8 @@ private slots: private: QPushButton *getButtonFromIndex(int index); + void showContentFilterContextMenu(); + void setContentFilterPattern(); Ui::PropertiesWidget *m_ui = nullptr; BitTorrent::Torrent *m_torrent = nullptr; @@ -113,4 +118,6 @@ private slots: PropTabBar *m_tabBar = nullptr; LineEdit *m_contentFilterLine = nullptr; int m_handleWidth = -1; + + SettingValue m_storeFilterPatternFormat; }; diff --git a/src/gui/properties/propertieswidget.ui b/src/gui/properties/propertieswidget.ui index 2dcae04c2b39..dd21f6fefb41 100644 --- a/src/gui/properties/propertieswidget.ui +++ b/src/gui/properties/propertieswidget.ui @@ -81,7 +81,14 @@ Progress: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + Qt::TextFormat::PlainText @@ -94,7 +101,7 @@ - Qt::PlainText + Qt::TextFormat::PlainText @@ -110,7 +117,14 @@ Availability: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + Qt::TextFormat::PlainText @@ -123,21 +137,7 @@ - Qt::PlainText - - - - - - - Qt::PlainText - - - - - - - Qt::PlainText + Qt::TextFormat::PlainText @@ -147,7 +147,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -163,8 +163,24 @@ 4 - - + + + + + 0 + 0 + + + + Time Active: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + 0 @@ -172,12 +188,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -185,15 +201,15 @@ - Upload Speed: + ETA: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -201,12 +217,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -214,44 +230,44 @@ - Peers: + Connections: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + - + 0 0 - - Connections: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Qt::TextFormat::PlainText - - + + - + 0 0 - - Qt::PlainText + + Downloaded: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -259,12 +275,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -272,44 +288,44 @@ - Download Limit: + Uploaded: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + - + 0 0 - - Share Ratio: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Qt::TextFormat::PlainText - - + + - + 0 0 - - Qt::PlainText + + Seeds: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -317,12 +333,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -330,31 +346,28 @@ - Downloaded: + Download Speed: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + - + 0 0 - - Upload Limit: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Qt::TextFormat::PlainText - - + + 0 @@ -362,15 +375,15 @@ - Last Seen Complete: + Upload Speed: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -378,12 +391,28 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + + + + 0 + 0 + + + + Peers: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + 0 @@ -391,12 +420,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -404,15 +433,15 @@ - Reannounce In: + Download Limit: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -420,12 +449,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -433,15 +462,28 @@ - Seeds: + Upload Limit: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + + + + 0 + 0 + + + + Qt::TextFormat::PlainText + + + + + 0 @@ -449,15 +491,15 @@ - Download Speed: + Wasted: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -465,20 +507,23 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + - + 0 0 - - Qt::PlainText + + Share Ratio: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -491,12 +536,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -504,28 +549,15 @@ - Uploaded: + Reannounce In: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - Qt::PlainText + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -533,12 +565,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 @@ -546,15 +578,15 @@ - Time Active: + Last Seen Complete: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + 0 @@ -562,39 +594,42 @@ - Qt::PlainText + Qt::TextFormat::PlainText - - + + 0 0 + + Ratio / Time Active (in months), indicates how popular the torrent is + - ETA: + Popularity: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + - + 0 0 - - Wasted: + + Ratio / Time Active (in months), indicates how popular the torrent is - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Qt::TextFormat::PlainText @@ -625,7 +660,7 @@ Total Size: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -638,7 +673,7 @@ - Qt::PlainText + Qt::TextFormat::PlainText @@ -654,7 +689,7 @@ Pieces: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -667,7 +702,7 @@ - Qt::PlainText + Qt::TextFormat::PlainText @@ -683,7 +718,7 @@ Created By: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -696,7 +731,7 @@ - Qt::PlainText + Qt::TextFormat::PlainText @@ -712,7 +747,7 @@ Added On: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -725,7 +760,7 @@ - Qt::PlainText + Qt::TextFormat::PlainText @@ -741,7 +776,7 @@ Completed On: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -754,7 +789,7 @@ - Qt::PlainText + Qt::TextFormat::PlainText @@ -770,7 +805,7 @@ Created On: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter @@ -783,12 +818,12 @@ - Qt::PlainText + Qt::TextFormat::PlainText - + 0 @@ -796,15 +831,31 @@ - Info Hash v1: + Private: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + + 0 + 0 + + + + Qt::TextFormat::PlainText + + + Qt::TextInteractionFlag::TextSelectableByMouse - + 0 @@ -812,15 +863,15 @@ - Info Hash v2: + Info Hash v1: - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - + 0 @@ -828,15 +879,15 @@ - Qt::PlainText + Qt::TextFormat::PlainText - Qt::TextSelectableByMouse + Qt::TextInteractionFlag::TextSelectableByMouse - + 0 @@ -844,46 +895,46 @@ - Save Path: + Info Hash v2: - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter - - + + - + 0 0 - - Comment: + + Qt::TextFormat::PlainText - - Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing + + Qt::TextInteractionFlag::TextSelectableByMouse - - + + - + 0 0 - - Qt::PlainText + + Save Path: - - Qt::TextSelectableByMouse + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTop|Qt::AlignmentFlag::AlignTrailing - + @@ -892,17 +943,33 @@ - Qt::PlainText + Qt::TextFormat::PlainText true - Qt::TextSelectableByMouse + Qt::TextInteractionFlag::TextSelectableByMouse - + + + + + 0 + 0 + + + + Comment: + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTop|Qt::AlignmentFlag::AlignTrailing + + + + @@ -911,10 +978,10 @@ - Qt::RichText + Qt::TextFormat::RichText - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop true @@ -923,7 +990,7 @@ true - Qt::TextBrowserInteraction + Qt::TextInteractionFlag::TextBrowserInteraction true @@ -958,7 +1025,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -977,7 +1044,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -1024,10 +1091,10 @@ - Qt::CustomContextMenu + Qt::ContextMenuPolicy::CustomContextMenu - QAbstractItemView::ExtendedSelection + QAbstractItemView::SelectionMode::ExtendedSelection @@ -1069,7 +1136,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -1084,13 +1151,13 @@ - Qt::CustomContextMenu + Qt::ContextMenuPolicy::CustomContextMenu - QAbstractItemView::AllEditTriggers + QAbstractItemView::EditTrigger::AllEditTriggers - QAbstractItemView::ExtendedSelection + QAbstractItemView::SelectionMode::ExtendedSelection true @@ -1123,7 +1190,7 @@ TorrentContentWidget QTreeView -
    gui/torrentcontentwidget.h
    +
    gui/torrentcontentwidget.h
    diff --git a/src/gui/properties/speedplotview.cpp b/src/gui/properties/speedplotview.cpp index 5dcb3d092b3c..6fb78c95d24e 100644 --- a/src/gui/properties/speedplotview.cpp +++ b/src/gui/properties/speedplotview.cpp @@ -292,7 +292,7 @@ void SpeedPlotView::paintEvent(QPaintEvent *) rect.adjust(0, fontMetrics.height(), 0, 0); // Add top padding for top speed text // draw Y axis speed labels - const QVector speedLabels = + const QList speedLabels = { formatLabel(niceScale.arg, niceScale.unit), formatLabel((0.75 * niceScale.arg), niceScale.unit), @@ -358,7 +358,7 @@ void SpeedPlotView::paintEvent(QPaintEvent *) if (!m_properties[static_cast(id)].enable) continue; - QVector points; + QList points; milliseconds duration {0}; for (int i = static_cast(queue.size()) - 1; i >= 0; --i) diff --git a/src/gui/rss/articlelistwidget.cpp b/src/gui/rss/articlelistwidget.cpp index 599a4d886530..8c13a43f93e2 100644 --- a/src/gui/rss/articlelistwidget.cpp +++ b/src/gui/rss/articlelistwidget.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2017 Vladimir Golovnev + * Copyright (C) 2017-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,6 +28,7 @@ #include "articlelistwidget.h" +#include #include #include "base/global.h" @@ -42,6 +43,12 @@ ArticleListWidget::ArticleListWidget(QWidget *parent) setSelectionMode(QAbstractItemView::ExtendedSelection); checkInvariant(); + + connect(UIThemeManager::instance(), &UIThemeManager::themeChanged, this, [this] + { + for (int row = 0; row < count(); ++row) + applyUITheme(item(row)); + }); } RSS::Article *ArticleListWidget::getRSSArticle(QListWidgetItem *item) const @@ -100,11 +107,10 @@ void ArticleListWidget::handleArticleAdded(RSS::Article *rssArticle) void ArticleListWidget::handleArticleRead(RSS::Article *rssArticle) { auto *item = mapRSSArticle(rssArticle); - if (!item) return; + if (!item) + return; - const QBrush foregroundBrush {UIThemeManager::instance()->getColor(u"RSS.ReadArticle"_s)}; - item->setData(Qt::ForegroundRole, foregroundBrush); - item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"loading"_s, u"sphere"_s)); + applyUITheme(item); checkInvariant(); } @@ -127,18 +133,25 @@ QListWidgetItem *ArticleListWidget::createItem(RSS::Article *article) const item->setData(Qt::DisplayRole, article->title()); item->setData(Qt::UserRole, QVariant::fromValue(article)); - if (article->isRead()) + applyUITheme(item); + + return item; +} + +void ArticleListWidget::applyUITheme(QListWidgetItem *item) const +{ + const bool isRead = getRSSArticle(item)->isRead(); + const auto *themeManager = UIThemeManager::instance(); + if (isRead) { - const QBrush foregroundBrush {UIThemeManager::instance()->getColor(u"RSS.ReadArticle"_s)}; - item->setData(Qt::ForegroundRole, foregroundBrush); - item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"loading"_s, u"sphere"_s)); + const QColor color = themeManager->getColor(u"RSS.ReadArticle"_s); + item->setData(Qt::ForegroundRole, (color.isValid() ? color : QApplication::palette().color(QPalette::Inactive, QPalette::WindowText))); + item->setData(Qt::DecorationRole, themeManager->getIcon(u"rss_read_article"_s, u"sphere"_s)); } else { - const QBrush foregroundBrush {UIThemeManager::instance()->getColor(u"RSS.UnreadArticle"_s)}; - item->setData(Qt::ForegroundRole, foregroundBrush); - item->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"loading"_s, u"sphere"_s)); + const QColor color = themeManager->getColor(u"RSS.UnreadArticle"_s); + item->setData(Qt::ForegroundRole, (color.isValid() ? color : QApplication::palette().color(QPalette::Active, QPalette::Link))); + item->setData(Qt::DecorationRole, themeManager->getIcon(u"rss_unread_article"_s, u"sphere"_s)); } - - return item; } diff --git a/src/gui/rss/articlelistwidget.h b/src/gui/rss/articlelistwidget.h index 16c0fe089215..b576b9d66480 100644 --- a/src/gui/rss/articlelistwidget.h +++ b/src/gui/rss/articlelistwidget.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2017 Vladimir Golovnev + * Copyright (C) 2017-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -58,6 +58,7 @@ private slots: private: void checkInvariant() const; QListWidgetItem *createItem(RSS::Article *article) const; + void applyUITheme(QListWidgetItem *item) const; RSS::Item *m_rssItem = nullptr; bool m_unreadOnly = false; diff --git a/src/gui/rss/automatedrssdownloader.cpp b/src/gui/rss/automatedrssdownloader.cpp index 6ebfaaf4c847..5492a6732fa8 100644 --- a/src/gui/rss/automatedrssdownloader.cpp +++ b/src/gui/rss/automatedrssdownloader.cpp @@ -29,6 +29,7 @@ #include "automatedrssdownloader.h" +#include #include #include #include @@ -129,10 +130,17 @@ AutomatedRssDownloader::AutomatedRssDownloader(QWidget *parent) connect(m_ui->lineNotContains, &QLineEdit::textEdited, this, &AutomatedRssDownloader::updateMustNotLineValidity); connect(m_ui->lineEFilter, &QLineEdit::textEdited, this, &AutomatedRssDownloader::handleRuleDefinitionChanged); connect(m_ui->lineEFilter, &QLineEdit::textEdited, this, &AutomatedRssDownloader::updateEpisodeFilterValidity); +#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0) + connect(m_ui->checkRegex, &QCheckBox::checkStateChanged, this, &AutomatedRssDownloader::handleRuleDefinitionChanged); + connect(m_ui->checkRegex, &QCheckBox::checkStateChanged, this, &AutomatedRssDownloader::updateMustLineValidity); + connect(m_ui->checkRegex, &QCheckBox::checkStateChanged, this, &AutomatedRssDownloader::updateMustNotLineValidity); + connect(m_ui->checkSmart, &QCheckBox::checkStateChanged, this, &AutomatedRssDownloader::handleRuleDefinitionChanged); +#else connect(m_ui->checkRegex, &QCheckBox::stateChanged, this, &AutomatedRssDownloader::handleRuleDefinitionChanged); connect(m_ui->checkRegex, &QCheckBox::stateChanged, this, &AutomatedRssDownloader::updateMustLineValidity); connect(m_ui->checkRegex, &QCheckBox::stateChanged, this, &AutomatedRssDownloader::updateMustNotLineValidity); connect(m_ui->checkSmart, &QCheckBox::stateChanged, this, &AutomatedRssDownloader::handleRuleDefinitionChanged); +#endif connect(m_ui->spinIgnorePeriod, qOverload(&QSpinBox::valueChanged) , this, &AutomatedRssDownloader::handleRuleDefinitionChanged); diff --git a/src/gui/rss/automatedrssdownloader.ui b/src/gui/rss/automatedrssdownloader.ui index a78b26f3de35..ad54a0eb01ce 100644 --- a/src/gui/rss/automatedrssdownloader.ui +++ b/src/gui/rss/automatedrssdownloader.ui @@ -41,7 +41,7 @@
    - Qt::Horizontal + Qt::Orientation::Horizontal @@ -100,7 +100,7 @@ - Qt::CustomContextMenu + Qt::ContextMenuPolicy::CustomContextMenu @@ -108,7 +108,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -118,13 +118,13 @@ - Qt::ScrollBarAlwaysOn + Qt::ScrollBarPolicy::ScrollBarAlwaysOn - Qt::ScrollBarAsNeeded + Qt::ScrollBarPolicy::ScrollBarAsNeeded - QAbstractScrollArea::AdjustToContentsOnFirstShow + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow true @@ -154,7 +154,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -182,22 +182,11 @@
    - - - - Must Not Contain: - - - - - - - Episode Filter: - - + + - - + + 18 @@ -206,6 +195,16 @@ + + + + Must Not Contain: + + + + + + @@ -216,11 +215,18 @@ - - + + + + Episode Filter: + + - - + + + + + 18 @@ -239,12 +245,6 @@ - - - - - - @@ -294,7 +294,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also true
    - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter
    @@ -325,7 +325,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Qt::Vertical + Qt::Orientation::Vertical @@ -341,7 +341,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - QLayout::SetDefaultConstraint + QLayout::SizeConstraint::SetDefaultConstraint @@ -416,10 +416,10 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Qt::StrongFocus + Qt::FocusPolicy::StrongFocus - QDialogButtonBox::Close + QDialogButtonBox::StandardButton::Close @@ -427,20 +427,6 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - - renameRuleBtn - removeRuleBtn - addRuleBtn - ruleList - lineContains - lineNotContains - lineEFilter - spinIgnorePeriod - listFeeds - matchingArticlesTree - importBtn - exportBtn - diff --git a/src/gui/rss/htmlbrowser.cpp b/src/gui/rss/htmlbrowser.cpp index ecf3ff7adad3..4c34923bcbc8 100644 --- a/src/gui/rss/htmlbrowser.cpp +++ b/src/gui/rss/htmlbrowser.cpp @@ -106,10 +106,12 @@ void HtmlBrowser::resourceLoaded(QNetworkReply *reply) atts[QNetworkRequest::HttpStatusCodeAttribute] = 200; atts[QNetworkRequest::HttpReasonPhraseAttribute] = u"Ok"_s; metaData.setAttributes(atts); - metaData.setLastModified(QDateTime::currentDateTime()); - metaData.setExpirationDate(QDateTime::currentDateTime().addDays(1)); + const auto currentDateTime = QDateTime::currentDateTime(); + metaData.setLastModified(currentDateTime); + metaData.setExpirationDate(currentDateTime.addDays(1)); QIODevice *dev = m_diskCache->prepare(metaData); - if (!dev) return; + if (!dev) + return; QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(32, 32).save(dev, "PNG"); m_diskCache->insert(dev); diff --git a/src/gui/rss/rsswidget.cpp b/src/gui/rss/rsswidget.cpp index 75d0be77a1aa..5d05df0b8b9c 100644 --- a/src/gui/rss/rsswidget.cpp +++ b/src/gui/rss/rsswidget.cpp @@ -54,6 +54,48 @@ #include "feedlistwidget.h" #include "ui_rsswidget.h" +namespace +{ + void convertRelativeUrlToAbsolute(QString &html, const QString &baseUrl) + { + const QRegularExpression rx {uR"(((]*?href|]*?src)\s*=\s*["'])((https?|ftp):)?(\/\/[^\/]*)?(\/?[^\/"].*?)(["']))"_s + , QRegularExpression::CaseInsensitiveOption}; + + const QString normalizedBaseUrl = baseUrl.endsWith(u'/') ? baseUrl : (baseUrl + u'/'); + const QUrl url {normalizedBaseUrl}; + const QString defaultScheme = url.scheme(); + QRegularExpressionMatchIterator iter = rx.globalMatch(html); + + while (iter.hasNext()) + { + const QRegularExpressionMatch match = iter.next(); + const QString scheme = match.captured(4); + const QString host = match.captured(5); + if (!scheme.isEmpty()) + { + if (host.isEmpty()) + break; // invalid URL, should never happen + + // already absolute URL + continue; + } + + QString relativePath = match.captured(6); + if (relativePath.startsWith(u'/')) + relativePath = relativePath.mid(1); + + const QString absoluteUrl = !host.isEmpty() + ? QString(defaultScheme + u':' + host) : (normalizedBaseUrl + relativePath); + const QString fullMatch = match.captured(0); + const QString prefix = match.captured(1); + const QString suffix = match.captured(7); + + html.replace(fullMatch, (prefix + absoluteUrl + suffix)); + } + } +} + + RSSWidget::RSSWidget(IGUIApplication *app, QWidget *parent) : GUIApplicationComponent(app, parent) , m_ui {new Ui::RSSWidget} @@ -79,23 +121,19 @@ RSSWidget::RSSWidget(IGUIApplication *app, QWidget *parent) m_ui->rssDownloaderBtn->setIcon(UIThemeManager::instance()->getIcon(u"downloading"_s, u"download"_s)); #endif - m_articleListWidget = new ArticleListWidget(m_ui->splitterMain); - m_ui->splitterMain->insertWidget(0, m_articleListWidget); - connect(m_articleListWidget, &ArticleListWidget::customContextMenuRequested, this, &RSSWidget::displayItemsListMenu); - connect(m_articleListWidget, &ArticleListWidget::currentItemChanged, this, &RSSWidget::handleCurrentArticleItemChanged); - connect(m_articleListWidget, &ArticleListWidget::itemDoubleClicked, this, &RSSWidget::downloadSelectedTorrents); - - m_feedListWidget = new FeedListWidget(m_ui->splitterSide); - m_ui->splitterSide->insertWidget(0, m_feedListWidget); - connect(m_feedListWidget, &QAbstractItemView::doubleClicked, this, &RSSWidget::renameSelectedRSSItem); - connect(m_feedListWidget, &QTreeWidget::currentItemChanged, this, &RSSWidget::handleCurrentFeedItemChanged); - connect(m_feedListWidget, &QWidget::customContextMenuRequested, this, &RSSWidget::displayRSSListMenu); + connect(m_ui->articleListWidget, &ArticleListWidget::customContextMenuRequested, this, &RSSWidget::displayItemsListMenu); + connect(m_ui->articleListWidget, &ArticleListWidget::currentItemChanged, this, &RSSWidget::handleCurrentArticleItemChanged); + connect(m_ui->articleListWidget, &ArticleListWidget::itemDoubleClicked, this, &RSSWidget::downloadSelectedTorrents); + + connect(m_ui->feedListWidget, &QAbstractItemView::doubleClicked, this, &RSSWidget::renameSelectedRSSItem); + connect(m_ui->feedListWidget, &QTreeWidget::currentItemChanged, this, &RSSWidget::handleCurrentFeedItemChanged); + connect(m_ui->feedListWidget, &QWidget::customContextMenuRequested, this, &RSSWidget::displayRSSListMenu); loadFoldersOpenState(); - m_feedListWidget->setCurrentItem(m_feedListWidget->stickyUnreadItem()); + m_ui->feedListWidget->setCurrentItem(m_ui->feedListWidget->stickyUnreadItem()); - const auto *editHotkey = new QShortcut(Qt::Key_F2, m_feedListWidget, nullptr, nullptr, Qt::WidgetShortcut); + const auto *editHotkey = new QShortcut(Qt::Key_F2, m_ui->feedListWidget, nullptr, nullptr, Qt::WidgetShortcut); connect(editHotkey, &QShortcut::activated, this, &RSSWidget::renameSelectedRSSItem); - const auto *deleteHotkey = new QShortcut(QKeySequence::Delete, m_feedListWidget, nullptr, nullptr, Qt::WidgetShortcut); + const auto *deleteHotkey = new QShortcut(QKeySequence::Delete, m_ui->feedListWidget, nullptr, nullptr, Qt::WidgetShortcut); connect(deleteHotkey, &QShortcut::activated, this, &RSSWidget::deleteSelectedItems); // Feeds list actions @@ -126,31 +164,32 @@ RSSWidget::RSSWidget(IGUIApplication *app, QWidget *parent) , this, &RSSWidget::handleSessionProcessingStateChanged); connect(RSS::Session::instance()->rootFolder(), &RSS::Folder::unreadCountChanged , this, &RSSWidget::handleUnreadCountChanged); + + m_ui->textBrowser->installEventFilter(this); } RSSWidget::~RSSWidget() { // we need it here to properly mark latest article // as read without having additional code - m_articleListWidget->clear(); + m_ui->articleListWidget->clear(); saveFoldersOpenState(); - delete m_feedListWidget; delete m_ui; } // display a right-click menu void RSSWidget::displayRSSListMenu(const QPoint &pos) { - if (!m_feedListWidget->indexAt(pos).isValid()) + if (!m_ui->feedListWidget->indexAt(pos).isValid()) // No item under the mouse, clear selection - m_feedListWidget->clearSelection(); + m_ui->feedListWidget->clearSelection(); QMenu *menu = new QMenu(this); menu->setAttribute(Qt::WA_DeleteOnClose); - const QList selectedItems = m_feedListWidget->selectedItems(); + const QList selectedItems = m_ui->feedListWidget->selectedItems(); if (!selectedItems.isEmpty()) { menu->addAction(m_ui->actionUpdate); @@ -160,14 +199,14 @@ void RSSWidget::displayRSSListMenu(const QPoint &pos) if (selectedItems.size() == 1) { QTreeWidgetItem *selectedItem = selectedItems.first(); - if (selectedItem != m_feedListWidget->stickyUnreadItem()) + if (selectedItem != m_ui->feedListWidget->stickyUnreadItem()) { menu->addAction(m_ui->actionRename); - if (m_feedListWidget->isFeed(selectedItem)) + if (m_ui->feedListWidget->isFeed(selectedItem)) menu->addAction(m_ui->actionEditFeedURL); menu->addAction(m_ui->actionDelete); menu->addSeparator(); - if (m_feedListWidget->isFolder(selectedItem)) + if (m_ui->feedListWidget->isFolder(selectedItem)) menu->addAction(m_ui->actionNewFolder); } } @@ -179,7 +218,7 @@ void RSSWidget::displayRSSListMenu(const QPoint &pos) menu->addAction(m_ui->actionNewSubscription); - if (m_feedListWidget->isFeed(selectedItems.first())) + if (m_ui->feedListWidget->isFeed(selectedItems.first())) { menu->addSeparator(); menu->addAction(m_ui->actionCopyFeedURL); @@ -200,7 +239,7 @@ void RSSWidget::displayItemsListMenu() { bool hasTorrent = false; bool hasLink = false; - for (const QListWidgetItem *item : asConst(m_articleListWidget->selectedItems())) + for (const QListWidgetItem *item : asConst(m_ui->articleListWidget->selectedItems())) { auto *article = item->data(Qt::UserRole).value(); Q_ASSERT(article); @@ -238,17 +277,17 @@ void RSSWidget::askNewFolder() // Determine destination folder for new item QTreeWidgetItem *destItem = nullptr; - QList selectedItems = m_feedListWidget->selectedItems(); + QList selectedItems = m_ui->feedListWidget->selectedItems(); if (!selectedItems.empty()) { destItem = selectedItems.first(); - if (!m_feedListWidget->isFolder(destItem)) + if (!m_ui->feedListWidget->isFolder(destItem)) destItem = destItem->parent(); } // Consider the case where the user clicked on Unread item - RSS::Folder *rssDestFolder = ((!destItem || (destItem == m_feedListWidget->stickyUnreadItem())) + RSS::Folder *rssDestFolder = ((!destItem || (destItem == m_ui->feedListWidget->stickyUnreadItem())) ? RSS::Session::instance()->rootFolder() - : qobject_cast(m_feedListWidget->getRSSItem(destItem))); + : qobject_cast(m_ui->feedListWidget->getRSSItem(destItem))); const QString newFolderPath = RSS::Item::joinPath(rssDestFolder->path(), newName); const nonstd::expected result = RSS::Session::instance()->addFolder(newFolderPath); @@ -256,10 +295,10 @@ void RSSWidget::askNewFolder() QMessageBox::warning(this, u"qBittorrent"_s, result.error(), QMessageBox::Ok); // Expand destination folder to display new feed - if (destItem && (destItem != m_feedListWidget->stickyUnreadItem())) + if (destItem && (destItem != m_ui->feedListWidget->stickyUnreadItem())) destItem->setExpanded(true); // As new RSS items are added synchronously, we can do the following here. - m_feedListWidget->setCurrentItem(m_feedListWidget->mapRSSItem(RSS::Session::instance()->itemByPath(newFolderPath))); + m_ui->feedListWidget->setCurrentItem(m_ui->feedListWidget->mapRSSItem(RSS::Session::instance()->itemByPath(newFolderPath))); } // add a stream by a button @@ -279,17 +318,17 @@ void RSSWidget::on_newFeedButton_clicked() // Determine destination folder for new item QTreeWidgetItem *destItem = nullptr; - QList selectedItems = m_feedListWidget->selectedItems(); + QList selectedItems = m_ui->feedListWidget->selectedItems(); if (!selectedItems.empty()) { destItem = selectedItems.first(); - if (!m_feedListWidget->isFolder(destItem)) + if (!m_ui->feedListWidget->isFolder(destItem)) destItem = destItem->parent(); } // Consider the case where the user clicked on Unread item - RSS::Folder *rssDestFolder = ((!destItem || (destItem == m_feedListWidget->stickyUnreadItem())) + RSS::Folder *rssDestFolder = ((!destItem || (destItem == m_ui->feedListWidget->stickyUnreadItem())) ? RSS::Session::instance()->rootFolder() - : qobject_cast(m_feedListWidget->getRSSItem(destItem))); + : qobject_cast(m_ui->feedListWidget->getRSSItem(destItem))); // NOTE: We still add feed using legacy way (with URL as feed name) const QString newFeedPath = RSS::Item::joinPath(rssDestFolder->path(), newURL); @@ -298,18 +337,18 @@ void RSSWidget::on_newFeedButton_clicked() QMessageBox::warning(this, u"qBittorrent"_s, result.error(), QMessageBox::Ok); // Expand destination folder to display new feed - if (destItem && (destItem != m_feedListWidget->stickyUnreadItem())) + if (destItem && (destItem != m_ui->feedListWidget->stickyUnreadItem())) destItem->setExpanded(true); // As new RSS items are added synchronously, we can do the following here. - m_feedListWidget->setCurrentItem(m_feedListWidget->mapRSSItem(RSS::Session::instance()->itemByPath(newFeedPath))); + m_ui->feedListWidget->setCurrentItem(m_ui->feedListWidget->mapRSSItem(RSS::Session::instance()->itemByPath(newFeedPath))); } void RSSWidget::deleteSelectedItems() { - const QList selectedItems = m_feedListWidget->selectedItems(); + const QList selectedItems = m_ui->feedListWidget->selectedItems(); if (selectedItems.isEmpty()) return; - if ((selectedItems.size() == 1) && (selectedItems.first() == m_feedListWidget->stickyUnreadItem())) + if ((selectedItems.size() == 1) && (selectedItems.first() == m_ui->feedListWidget->stickyUnreadItem())) return; QMessageBox::StandardButton answer = QMessageBox::question( @@ -319,8 +358,8 @@ void RSSWidget::deleteSelectedItems() return; for (QTreeWidgetItem *item : selectedItems) - if (item != m_feedListWidget->stickyUnreadItem()) - RSS::Session::instance()->removeItem(m_feedListWidget->itemPath(item)); + if (item != m_ui->feedListWidget->stickyUnreadItem()) + RSS::Session::instance()->removeItem(m_ui->feedListWidget->itemPath(item)); } void RSSWidget::loadFoldersOpenState() @@ -331,11 +370,11 @@ void RSSWidget::loadFoldersOpenState() QTreeWidgetItem *parent = nullptr; for (const QString &name : asConst(varPath.split(u'\\'))) { - int nbChildren = (parent ? parent->childCount() : m_feedListWidget->topLevelItemCount()); + int nbChildren = (parent ? parent->childCount() : m_ui->feedListWidget->topLevelItemCount()); for (int i = 0; i < nbChildren; ++i) { - QTreeWidgetItem *child = (parent ? parent->child(i) : m_feedListWidget->topLevelItem(i)); - if (m_feedListWidget->getRSSItem(child)->name() == name) + QTreeWidgetItem *child = (parent ? parent->child(i) : m_ui->feedListWidget->topLevelItem(i)); + if (m_ui->feedListWidget->getRSSItem(child)->name() == name) { parent = child; parent->setExpanded(true); @@ -349,8 +388,8 @@ void RSSWidget::loadFoldersOpenState() void RSSWidget::saveFoldersOpenState() { QStringList openedFolders; - for (QTreeWidgetItem *item : asConst(m_feedListWidget->getAllOpenedFolders())) - openedFolders << m_feedListWidget->itemPath(item); + for (QTreeWidgetItem *item : asConst(m_ui->feedListWidget->getAllOpenedFolders())) + openedFolders << m_ui->feedListWidget->itemPath(item); Preferences::instance()->setRssOpenFolders(openedFolders); } @@ -361,7 +400,7 @@ void RSSWidget::refreshAllFeeds() void RSSWidget::downloadSelectedTorrents() { - for (QListWidgetItem *item : asConst(m_articleListWidget->selectedItems())) + for (QListWidgetItem *item : asConst(m_ui->articleListWidget->selectedItems())) { auto *article = item->data(Qt::UserRole).value(); Q_ASSERT(article); @@ -376,7 +415,7 @@ void RSSWidget::downloadSelectedTorrents() // open the url of the selected RSS articles in the Web browser void RSSWidget::openSelectedArticlesUrls() { - for (QListWidgetItem *item : asConst(m_articleListWidget->selectedItems())) + for (QListWidgetItem *item : asConst(m_ui->articleListWidget->selectedItems())) { auto *article = item->data(Qt::UserRole).value(); Q_ASSERT(article); @@ -391,14 +430,14 @@ void RSSWidget::openSelectedArticlesUrls() void RSSWidget::renameSelectedRSSItem() { - QList selectedItems = m_feedListWidget->selectedItems(); + QList selectedItems = m_ui->feedListWidget->selectedItems(); if (selectedItems.size() != 1) return; QTreeWidgetItem *item = selectedItems.first(); - if (item == m_feedListWidget->stickyUnreadItem()) + if (item == m_ui->feedListWidget->stickyUnreadItem()) return; - RSS::Item *rssItem = m_feedListWidget->getRSSItem(item); + RSS::Item *rssItem = m_ui->feedListWidget->getRSSItem(item); const QString parentPath = RSS::Item::parentPath(rssItem->path()); bool ok = false; do @@ -420,12 +459,12 @@ void RSSWidget::renameSelectedRSSItem() void RSSWidget::editSelectedRSSFeedURL() { - QList selectedItems = m_feedListWidget->selectedItems(); + QList selectedItems = m_ui->feedListWidget->selectedItems(); if (selectedItems.size() != 1) return; QTreeWidgetItem *item = selectedItems.first(); - RSS::Feed *rssFeed = qobject_cast(m_feedListWidget->getRSSItem(item)); + RSS::Feed *rssFeed = qobject_cast(m_ui->feedListWidget->getRSSItem(item)); Q_ASSERT(rssFeed); if (!rssFeed) [[unlikely]] return; @@ -443,24 +482,24 @@ void RSSWidget::editSelectedRSSFeedURL() void RSSWidget::refreshSelectedItems() { - for (QTreeWidgetItem *item : asConst(m_feedListWidget->selectedItems())) + for (QTreeWidgetItem *item : asConst(m_ui->feedListWidget->selectedItems())) { - if (item == m_feedListWidget->stickyUnreadItem()) + if (item == m_ui->feedListWidget->stickyUnreadItem()) { refreshAllFeeds(); return; } - m_feedListWidget->getRSSItem(item)->refresh(); + m_ui->feedListWidget->getRSSItem(item)->refresh(); } } void RSSWidget::copySelectedFeedsURL() { QStringList URLs; - for (QTreeWidgetItem *item : asConst(m_feedListWidget->selectedItems())) + for (QTreeWidgetItem *item : asConst(m_ui->feedListWidget->selectedItems())) { - if (auto *feed = qobject_cast(m_feedListWidget->getRSSItem(item))) + if (auto *feed = qobject_cast(m_ui->feedListWidget->getRSSItem(item))) URLs << feed->url(); } qApp->clipboard()->setText(URLs.join(u'\n')); @@ -468,16 +507,16 @@ void RSSWidget::copySelectedFeedsURL() void RSSWidget::handleCurrentFeedItemChanged(QTreeWidgetItem *currentItem) { - m_articleListWidget->setRSSItem(m_feedListWidget->getRSSItem(currentItem) - , (currentItem == m_feedListWidget->stickyUnreadItem())); + m_ui->articleListWidget->setRSSItem(m_ui->feedListWidget->getRSSItem(currentItem) + , (currentItem == m_ui->feedListWidget->stickyUnreadItem())); } void RSSWidget::on_markReadButton_clicked() { - for (QTreeWidgetItem *item : asConst(m_feedListWidget->selectedItems())) + for (QTreeWidgetItem *item : asConst(m_ui->feedListWidget->selectedItems())) { - m_feedListWidget->getRSSItem(item)->markAsRead(); - if (item == m_feedListWidget->stickyUnreadItem()) + m_ui->feedListWidget->getRSSItem(item)->markAsRead(); + if (item == m_ui->feedListWidget->stickyUnreadItem()) break; // all items was read } } @@ -489,26 +528,88 @@ void RSSWidget::handleCurrentArticleItemChanged(QListWidgetItem *currentItem, QL if (previousItem) { - auto *article = m_articleListWidget->getRSSArticle(previousItem); + auto *article = m_ui->articleListWidget->getRSSArticle(previousItem); Q_ASSERT(article); article->markAsRead(); } - if (!currentItem) return; + if (!currentItem) + return; + + auto *article = m_ui->articleListWidget->getRSSArticle(currentItem); + renderArticle(article); +} + +void RSSWidget::saveSlidersPosition() +{ + // Remember sliders positions + Preferences *const pref = Preferences::instance(); + pref->setRssSideSplitterState(m_ui->splitterSide->saveState()); + pref->setRssMainSplitterState(m_ui->splitterMain->saveState()); +} + +void RSSWidget::restoreSlidersPosition() +{ + const Preferences *const pref = Preferences::instance(); + const QByteArray stateSide = pref->getRssSideSplitterState(); + if (!stateSide.isEmpty()) + m_ui->splitterSide->restoreState(stateSide); + const QByteArray stateMain = pref->getRssMainSplitterState(); + if (!stateMain.isEmpty()) + m_ui->splitterMain->restoreState(stateMain); +} + +void RSSWidget::updateRefreshInterval(int val) const +{ + RSS::Session::instance()->setRefreshInterval(val); +} + +void RSSWidget::on_rssDownloaderBtn_clicked() +{ + auto *downloader = new AutomatedRssDownloader(this); + downloader->setAttribute(Qt::WA_DeleteOnClose); + downloader->open(); +} + +void RSSWidget::handleSessionProcessingStateChanged(bool enabled) +{ + m_ui->labelWarn->setVisible(!enabled); +} - auto *article = m_articleListWidget->getRSSArticle(currentItem); +void RSSWidget::handleUnreadCountChanged() +{ + emit unreadCountUpdated(RSS::Session::instance()->rootFolder()->unreadCount()); +} + +bool RSSWidget::eventFilter(QObject *obj, QEvent *event) +{ + if ((obj == m_ui->textBrowser) && (event->type() == QEvent::PaletteChange)) + { + QListWidgetItem *currentItem = m_ui->articleListWidget->currentItem(); + if (currentItem) + { + const RSS::Article *article = m_ui->articleListWidget->getRSSArticle(currentItem); + renderArticle(article); + } + } + + return false; +} + +void RSSWidget::renderArticle(const RSS::Article *article) const +{ Q_ASSERT(article); - const QString highlightedBaseColor = m_ui->textBrowser->palette().color(QPalette::Highlight).name(); - const QString highlightedBaseTextColor = m_ui->textBrowser->palette().color(QPalette::HighlightedText).name(); - const QString alternateBaseColor = m_ui->textBrowser->palette().color(QPalette::AlternateBase).name(); + const QString highlightedBaseColor = m_ui->textBrowser->palette().color(QPalette::Active, QPalette::Highlight).name(); + const QString highlightedBaseTextColor = m_ui->textBrowser->palette().color(QPalette::Active, QPalette::HighlightedText).name(); + const QString alternateBaseColor = m_ui->textBrowser->palette().color(QPalette::Active, QPalette::AlternateBase).name(); QString html = u"
    " + u"
    %3
    "_s.arg(highlightedBaseColor, highlightedBaseTextColor, article->title()); if (article->date().isValid()) html += u"
    %2%3
    "_s.arg(alternateBaseColor, tr("Date: "), QLocale::system().toString(article->date().toLocalTime())); - if (m_feedListWidget->currentItem() == m_feedListWidget->stickyUnreadItem()) + if (m_ui->feedListWidget->currentItem() == m_ui->feedListWidget->stickyUnreadItem()) html += u"
    %2%3
    "_s.arg(alternateBaseColor, tr("Feed: "), article->feed()->title()); if (!article->author().isEmpty()) html += u"
    %2%3
    "_s.arg(alternateBaseColor, tr("Author: "), article->author()); @@ -524,7 +625,7 @@ void RSSWidget::handleCurrentArticleItemChanged(QListWidgetItem *currentItem, QL QRegularExpression rx; // If description is plain text, replace BBCode tags with HTML and wrap everything in
     so it looks nice
             rx.setPatternOptions(QRegularExpression::InvertedGreedinessOption
    -            | QRegularExpression::CaseInsensitiveOption);
    +                             | QRegularExpression::CaseInsensitiveOption);
     
             rx.setPattern(u"\\[img\\](.+)\\[/img\\]"_s);
             description = description.replace(rx, u""_s);
    @@ -546,47 +647,11 @@ void RSSWidget::handleCurrentArticleItemChanged(QListWidgetItem *currentItem, QL
     
             html += u"
    " + description + u"
    "; } + + // Supplement relative URLs to absolute ones + const QUrl url {article->link()}; + const QString baseUrl = url.toString(QUrl::RemovePath | QUrl::RemoveQuery); + convertRelativeUrlToAbsolute(html, baseUrl); html += u"
    "; m_ui->textBrowser->setHtml(html); } - -void RSSWidget::saveSlidersPosition() -{ - // Remember sliders positions - Preferences *const pref = Preferences::instance(); - pref->setRssSideSplitterState(m_ui->splitterSide->saveState()); - pref->setRssMainSplitterState(m_ui->splitterMain->saveState()); -} - -void RSSWidget::restoreSlidersPosition() -{ - const Preferences *const pref = Preferences::instance(); - const QByteArray stateSide = pref->getRssSideSplitterState(); - if (!stateSide.isEmpty()) - m_ui->splitterSide->restoreState(stateSide); - const QByteArray stateMain = pref->getRssMainSplitterState(); - if (!stateMain.isEmpty()) - m_ui->splitterMain->restoreState(stateMain); -} - -void RSSWidget::updateRefreshInterval(int val) const -{ - RSS::Session::instance()->setRefreshInterval(val); -} - -void RSSWidget::on_rssDownloaderBtn_clicked() -{ - auto *downloader = new AutomatedRssDownloader(this); - downloader->setAttribute(Qt::WA_DeleteOnClose); - downloader->open(); -} - -void RSSWidget::handleSessionProcessingStateChanged(bool enabled) -{ - m_ui->labelWarn->setVisible(!enabled); -} - -void RSSWidget::handleUnreadCountChanged() -{ - emit unreadCountUpdated(RSS::Session::instance()->rootFolder()->unreadCount()); -} diff --git a/src/gui/rss/rsswidget.h b/src/gui/rss/rsswidget.h index 5c5aaaa1baeb..98bceac30d7b 100644 --- a/src/gui/rss/rsswidget.h +++ b/src/gui/rss/rsswidget.h @@ -37,8 +37,10 @@ class QListWidgetItem; class QTreeWidgetItem; -class ArticleListWidget; -class FeedListWidget; +namespace RSS +{ + class Article; +} namespace Ui { @@ -85,7 +87,8 @@ private slots: void handleUnreadCountChanged(); private: + bool eventFilter(QObject *obj, QEvent *event) override; + void renderArticle(const RSS::Article *article) const; + Ui::RSSWidget *m_ui = nullptr; - ArticleListWidget *m_articleListWidget = nullptr; - FeedListWidget *m_feedListWidget = nullptr; }; diff --git a/src/gui/rss/rsswidget.ui b/src/gui/rss/rsswidget.ui index 97f06194c40f..97fc97e8334d 100644 --- a/src/gui/rss/rsswidget.ui +++ b/src/gui/rss/rsswidget.ui @@ -64,7 +64,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -92,15 +92,15 @@ - Qt::Horizontal + Qt::Orientation::Horizontal + - 75 true @@ -118,8 +118,9 @@
    - Qt::Horizontal + Qt::Orientation::Horizontal + true @@ -212,6 +213,16 @@ QTextBrowser
    gui/rss/htmlbrowser.h
    + + FeedListWidget + QTreeWidget +
    gui/rss/feedlistwidget.h
    +
    + + ArticleListWidget + QListWidget +
    gui/rss/articlelistwidget.h
    +
    diff --git a/src/gui/search/pluginselectdialog.cpp b/src/gui/search/pluginselectdialog.cpp index f549ec410c05..d97e91a8bec1 100644 --- a/src/gui/search/pluginselectdialog.cpp +++ b/src/gui/search/pluginselectdialog.cpp @@ -169,9 +169,9 @@ void PluginSelectDialog::togglePluginState(QTreeWidgetItem *item, int) void PluginSelectDialog::displayContextMenu() { - // Enable/disable pause/start action given the DL state const QList items = m_ui->pluginsTree->selectedItems(); - if (items.isEmpty()) return; + if (items.isEmpty()) + return; QMenu *myContextMenu = new QMenu(this); myContextMenu->setAttribute(Qt::WA_DeleteOnClose); @@ -249,9 +249,9 @@ void PluginSelectDialog::setRowColor(const int row, const QString &color) } } -QVector PluginSelectDialog::findItemsWithUrl(const QString &url) +QList PluginSelectDialog::findItemsWithUrl(const QString &url) { - QVector res; + QList res; res.reserve(m_ui->pluginsTree->topLevelItemCount()); for (int i = 0; i < m_ui->pluginsTree->topLevelItemCount(); ++i) diff --git a/src/gui/search/pluginselectdialog.h b/src/gui/search/pluginselectdialog.h index 29df65a33de6..101a81f00280 100644 --- a/src/gui/search/pluginselectdialog.h +++ b/src/gui/search/pluginselectdialog.h @@ -57,7 +57,7 @@ class PluginSelectDialog final : public QDialog explicit PluginSelectDialog(SearchPluginManager *pluginManager, QWidget *parent = nullptr); ~PluginSelectDialog() override; - QVector findItemsWithUrl(const QString &url); + QList findItemsWithUrl(const QString &url); QTreeWidgetItem *findItemWithID(const QString &id); protected: diff --git a/src/gui/search/pluginselectdialog.ui b/src/gui/search/pluginselectdialog.ui index 7bd9d57d8261..388833c35757 100644 --- a/src/gui/search/pluginselectdialog.ui +++ b/src/gui/search/pluginselectdialog.ui @@ -21,7 +21,6 @@ - 75 true true @@ -34,10 +33,10 @@ - Qt::CustomContextMenu + Qt::ContextMenuPolicy::CustomContextMenu - QAbstractItemView::ExtendedSelection + QAbstractItemView::SelectionMode::ExtendedSelection true diff --git a/src/gui/search/pluginsourcedialog.ui b/src/gui/search/pluginsourcedialog.ui index 5e3e39001d52..767431f4f09b 100644 --- a/src/gui/search/pluginsourcedialog.ui +++ b/src/gui/search/pluginsourcedialog.ui @@ -18,7 +18,6 @@ - 75 true true diff --git a/src/gui/search/searchjobwidget.cpp b/src/gui/search/searchjobwidget.cpp index 99f06b6acbd0..aae330ce42fa 100644 --- a/src/gui/search/searchjobwidget.cpp +++ b/src/gui/search/searchjobwidget.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018 Vladimir Golovnev + * Copyright (C) 2018-2025 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -50,11 +50,43 @@ #include "searchsortmodel.h" #include "ui_searchjobwidget.h" -SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, IGUIApplication *app, QWidget *parent) +namespace +{ + enum DataRole + { + LinkVisitedRole = Qt::UserRole + 100 + }; + + QColor visitedRowColor() + { + return QApplication::palette().color(QPalette::Disabled, QPalette::WindowText); + } + + QString statusText(SearchJobWidget::Status st) + { + switch (st) + { + case SearchJobWidget::Status::Ongoing: + return SearchJobWidget::tr("Searching..."); + case SearchJobWidget::Status::Finished: + return SearchJobWidget::tr("Search has finished"); + case SearchJobWidget::Status::Aborted: + return SearchJobWidget::tr("Search aborted"); + case SearchJobWidget::Status::Error: + return SearchJobWidget::tr("An error occurred during search..."); + case SearchJobWidget::Status::NoResults: + return SearchJobWidget::tr("Search returned no results"); + default: + return {}; + } + } +} + +SearchJobWidget::SearchJobWidget(const QString &id, IGUIApplication *app, QWidget *parent) : GUIApplicationComponent(app, parent) - , m_ui {new Ui::SearchJobWidget} - , m_searchHandler {searchHandler} , m_nameFilteringMode {u"Search/FilteringMode"_s} + , m_id {id} + , m_ui {new Ui::SearchJobWidget} { m_ui->setupUi(this); @@ -70,7 +102,9 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, IGUIApplication * m_searchListModel->setHeaderData(SearchSortModel::SIZE, Qt::Horizontal, tr("Size", "i.e: file size")); m_searchListModel->setHeaderData(SearchSortModel::SEEDS, Qt::Horizontal, tr("Seeders", "i.e: Number of full sources")); m_searchListModel->setHeaderData(SearchSortModel::LEECHES, Qt::Horizontal, tr("Leechers", "i.e: Number of partial sources")); - m_searchListModel->setHeaderData(SearchSortModel::ENGINE_URL, Qt::Horizontal, tr("Search engine")); + m_searchListModel->setHeaderData(SearchSortModel::ENGINE_NAME, Qt::Horizontal, tr("Engine")); + m_searchListModel->setHeaderData(SearchSortModel::ENGINE_URL, Qt::Horizontal, tr("Engine URL")); + m_searchListModel->setHeaderData(SearchSortModel::PUB_DATE, Qt::Horizontal, tr("Published On")); // Set columns text alignment m_searchListModel->setHeaderData(SearchSortModel::SIZE, Qt::Horizontal, QVariant(Qt::AlignRight | Qt::AlignVCenter), Qt::TextAlignmentRole); m_searchListModel->setHeaderData(SearchSortModel::SEEDS, Qt::Horizontal, QVariant(Qt::AlignRight | Qt::AlignVCenter), Qt::TextAlignmentRole); @@ -79,7 +113,6 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, IGUIApplication * m_proxyModel = new SearchSortModel(this); m_proxyModel->setDynamicSortFilter(true); m_proxyModel->setSourceModel(m_searchListModel); - m_proxyModel->setNameFilter(searchHandler->pattern()); m_ui->resultsBrowser->setModel(m_proxyModel); m_ui->resultsBrowser->hideColumn(SearchSortModel::DL_LINK); // Hide url column @@ -120,15 +153,13 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, IGUIApplication * fillFilterComboBoxes(); - updateFilter(); - m_lineEditSearchResultsFilter = new LineEdit(this); m_lineEditSearchResultsFilter->setPlaceholderText(tr("Filter search results...")); m_lineEditSearchResultsFilter->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_lineEditSearchResultsFilter, &QWidget::customContextMenuRequested, this, &SearchJobWidget::showFilterContextMenu); + connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults); m_ui->horizontalLayout->insertWidget(0, m_lineEditSearchResultsFilter); - connect(m_lineEditSearchResultsFilter, &LineEdit::textChanged, this, &SearchJobWidget::filterSearchResults); connect(m_ui->filterMode, qOverload(&QComboBox::currentIndexChanged) , this, &SearchJobWidget::updateFilter); connect(m_ui->minSeeds, &QAbstractSpinBox::editingFinished, this, &SearchJobWidget::updateFilter); @@ -150,12 +181,24 @@ SearchJobWidget::SearchJobWidget(SearchHandler *searchHandler, IGUIApplication * connect(m_ui->resultsBrowser, &QAbstractItemView::doubleClicked, this, &SearchJobWidget::onItemDoubleClicked); - connect(searchHandler, &SearchHandler::newSearchResults, this, &SearchJobWidget::appendSearchResults); - connect(searchHandler, &SearchHandler::searchFinished, this, &SearchJobWidget::searchFinished); - connect(searchHandler, &SearchHandler::searchFailed, this, &SearchJobWidget::searchFailed); - connect(this, &QObject::destroyed, searchHandler, &QObject::deleteLater); + connect(UIThemeManager::instance(), &UIThemeManager::themeChanged, this, &SearchJobWidget::onUIThemeChanged); +} + +SearchJobWidget::SearchJobWidget(const QString &id, const QString &searchPattern + , const QList &searchResults, IGUIApplication *app, QWidget *parent) + : SearchJobWidget(id, app, parent) +{ + m_searchPattern = searchPattern; + m_proxyModel->setNameFilter(m_searchPattern); + updateFilter(); + + appendSearchResults(searchResults); +} - setStatusTip(statusText(m_status)); +SearchJobWidget::SearchJobWidget(const QString &id, SearchHandler *searchHandler, IGUIApplication *app, QWidget *parent) + : SearchJobWidget(id, app, parent) +{ + assignSearchHandler(searchHandler); } SearchJobWidget::~SearchJobWidget() @@ -164,6 +207,21 @@ SearchJobWidget::~SearchJobWidget() delete m_ui; } +QString SearchJobWidget::id() const +{ + return m_id; +} + +QString SearchJobWidget::searchPattern() const +{ + return m_searchPattern; +} + +QList SearchJobWidget::searchResults() const +{ + return m_searchResults; +} + void SearchJobWidget::onItemDoubleClicked(const QModelIndex &index) { downloadTorrent(index); @@ -177,9 +235,31 @@ QHeaderView *SearchJobWidget::header() const // Set the color of a row in data model void SearchJobWidget::setRowColor(int row, const QColor &color) { - m_proxyModel->setDynamicSortFilter(false); for (int i = 0; i < m_proxyModel->columnCount(); ++i) m_proxyModel->setData(m_proxyModel->index(row, i), color, Qt::ForegroundRole); +} + +void SearchJobWidget::setRowVisited(const int row) +{ + m_proxyModel->setDynamicSortFilter(false); + + m_proxyModel->setData(m_proxyModel->index(row, 0), true, LinkVisitedRole); + setRowColor(row, visitedRowColor()); + + m_proxyModel->setDynamicSortFilter(true); +} + +void SearchJobWidget::onUIThemeChanged() +{ + m_proxyModel->setDynamicSortFilter(false); + + for (int row = 0; row < m_proxyModel->rowCount(); ++row) + { + const QVariant userData = m_proxyModel->data(m_proxyModel->index(row, 0), LinkVisitedRole); + const bool isVisited = userData.toBool(); + if (isVisited) + setRowColor(row, visitedRowColor()); + } m_proxyModel->setDynamicSortFilter(true); } @@ -199,9 +279,37 @@ LineEdit *SearchJobWidget::lineEditSearchResultsFilter() const return m_lineEditSearchResultsFilter; } +void SearchJobWidget::assignSearchHandler(SearchHandler *searchHandler) +{ + Q_ASSERT(searchHandler); + if (!searchHandler) [[unlikely]] + return; + + m_searchResults.clear(); + m_searchListModel->removeRows(0, m_searchListModel->rowCount()); + delete m_searchHandler; + + m_searchHandler = searchHandler; + m_searchHandler->setParent(this); + connect(m_searchHandler, &SearchHandler::newSearchResults, this, &SearchJobWidget::appendSearchResults); + connect(m_searchHandler, &SearchHandler::searchFinished, this, &SearchJobWidget::searchFinished); + connect(m_searchHandler, &SearchHandler::searchFailed, this, &SearchJobWidget::searchFailed); + + m_searchPattern = m_searchHandler->pattern(); + + m_proxyModel->setNameFilter(m_searchPattern); + updateFilter(); + + setStatus(Status::Ongoing); +} + void SearchJobWidget::cancelSearch() { + if (!m_searchHandler) + return; + m_searchHandler->cancelSearch(); + setStatus(Status::Aborted); } void SearchJobWidget::downloadTorrents(const AddTorrentOption option) @@ -257,7 +365,8 @@ void SearchJobWidget::copyField(const int column) const void SearchJobWidget::setStatus(Status value) { - if (m_status == value) return; + if (m_status == value) + return; m_status = value; setStatusTip(statusText(value)); @@ -268,8 +377,8 @@ void SearchJobWidget::downloadTorrent(const QModelIndex &rowIndex, const AddTorr { const QString torrentUrl = m_proxyModel->data( m_proxyModel->index(rowIndex.row(), SearchSortModel::DL_LINK)).toString(); - const QString siteUrl = m_proxyModel->data( - m_proxyModel->index(rowIndex.row(), SearchSortModel::ENGINE_URL)).toString(); + const QString engineName = m_proxyModel->data( + m_proxyModel->index(rowIndex.row(), SearchSortModel::ENGINE_NAME)).toString(); if (torrentUrl.startsWith(u"magnet:", Qt::CaseInsensitive)) { @@ -277,12 +386,13 @@ void SearchJobWidget::downloadTorrent(const QModelIndex &rowIndex, const AddTorr } else { - SearchDownloadHandler *downloadHandler = m_searchHandler->manager()->downloadTorrent(siteUrl, torrentUrl); + SearchDownloadHandler *downloadHandler = SearchPluginManager::instance()->downloadTorrent(engineName, torrentUrl); connect(downloadHandler, &SearchDownloadHandler::downloadFinished , this, [this, option](const QString &source) { addTorrentToSession(source, option); }); connect(downloadHandler, &SearchDownloadHandler::downloadFinished, downloadHandler, &SearchDownloadHandler::deleteLater); } - setRowColor(rowIndex.row(), QApplication::palette().color(QPalette::LinkVisited)); + + setRowVisited(rowIndex.row()); } void SearchJobWidget::addTorrentToSession(const QString &source, const AddTorrentOption option) @@ -404,25 +514,6 @@ void SearchJobWidget::contextMenuEvent(QContextMenuEvent *event) menu->popup(event->globalPos()); } -QString SearchJobWidget::statusText(SearchJobWidget::Status st) -{ - switch (st) - { - case Status::Ongoing: - return tr("Searching..."); - case Status::Finished: - return tr("Search has finished"); - case Status::Aborted: - return tr("Search aborted"); - case Status::Error: - return tr("An error occurred during search..."); - case Status::NoResults: - return tr("Search returned no results"); - default: - return {}; - } -} - SearchJobWidget::NameFilteringMode SearchJobWidget::filteringMode() const { return static_cast(m_ui->filterMode->itemData(m_ui->filterMode->currentIndex()).toInt()); @@ -506,7 +597,7 @@ void SearchJobWidget::searchFailed() setStatus(Status::Error); } -void SearchJobWidget::appendSearchResults(const QVector &results) +void SearchJobWidget::appendSearchResults(const QList &results) { for (const SearchResult &result : results) { @@ -515,7 +606,7 @@ void SearchJobWidget::appendSearchResults(const QVector &results) m_searchListModel->insertRow(row); const auto setModelData = [this, row] (const int column, const QString &displayData - , const QVariant &underlyingData, const Qt::Alignment textAlignmentData = {}) + , const QVariant &underlyingData, const Qt::Alignment textAlignmentData = {}) { const QMap data = { @@ -528,13 +619,16 @@ void SearchJobWidget::appendSearchResults(const QVector &results) setModelData(SearchSortModel::NAME, result.fileName, result.fileName); setModelData(SearchSortModel::DL_LINK, result.fileUrl, result.fileUrl); + setModelData(SearchSortModel::ENGINE_NAME, result.engineName, result.engineName); setModelData(SearchSortModel::ENGINE_URL, result.siteUrl, result.siteUrl); setModelData(SearchSortModel::DESC_LINK, result.descrLink, result.descrLink); setModelData(SearchSortModel::SIZE, Utils::Misc::friendlyUnit(result.fileSize), result.fileSize, (Qt::AlignRight | Qt::AlignVCenter)); setModelData(SearchSortModel::SEEDS, QString::number(result.nbSeeders), result.nbSeeders, (Qt::AlignRight | Qt::AlignVCenter)); setModelData(SearchSortModel::LEECHES, QString::number(result.nbLeechers), result.nbLeechers, (Qt::AlignRight | Qt::AlignVCenter)); + setModelData(SearchSortModel::PUB_DATE, QLocale().toString(result.pubDate.toLocalTime(), QLocale::ShortFormat), result.pubDate); } + m_searchResults.append(results); updateResultsCount(); } diff --git a/src/gui/search/searchjobwidget.h b/src/gui/search/searchjobwidget.h index f597c03af6e4..7ef36cf3884d 100644 --- a/src/gui/search/searchjobwidget.h +++ b/src/gui/search/searchjobwidget.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018 Vladimir Golovnev + * Copyright (C) 2018-2025 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -69,6 +69,7 @@ class SearchJobWidget final : public GUIApplicationComponent enum class Status { + Ready, Ongoing, Finished, Error, @@ -76,13 +77,18 @@ class SearchJobWidget final : public GUIApplicationComponent NoResults }; - SearchJobWidget(SearchHandler *searchHandler, IGUIApplication *app, QWidget *parent = nullptr); + SearchJobWidget(const QString &id, const QString &searchPattern, const QList &searchResults, IGUIApplication *app, QWidget *parent = nullptr); + SearchJobWidget(const QString &id, SearchHandler *searchHandler, IGUIApplication *app, QWidget *parent = nullptr); ~SearchJobWidget() override; + QString id() const; + QString searchPattern() const; + QList searchResults() const; Status status() const; int visibleResultsCount() const; LineEdit *lineEditSearchResultsFilter() const; + void assignSearchHandler(SearchHandler *searchHandler); void cancelSearch(); signals: @@ -96,6 +102,8 @@ private slots: void displayColumnHeaderMenu(); private: + SearchJobWidget(const QString &id, IGUIApplication *app, QWidget *parent); + void loadSettings(); void saveSettings() const; void updateFilter(); @@ -105,7 +113,7 @@ private slots: void onItemDoubleClicked(const QModelIndex &index); void searchFinished(bool cancelled); void searchFailed(); - void appendSearchResults(const QVector &results); + void appendSearchResults(const QList &results); void updateResultsCount(); void setStatus(Status value); void downloadTorrent(const QModelIndex &rowIndex, AddTorrentOption option = AddTorrentOption::Default); @@ -113,8 +121,10 @@ private slots: void fillFilterComboBoxes(); NameFilteringMode filteringMode() const; QHeaderView *header() const; - void setRowColor(int row, const QColor &color); int visibleColumnsCount() const; + void setRowColor(int row, const QColor &color); + void setRowVisited(int row); + void onUIThemeChanged(); void downloadTorrents(AddTorrentOption option = AddTorrentOption::Default); void openTorrentPages() const; @@ -123,17 +133,18 @@ private slots: void copyTorrentNames() const; void copyField(int column) const; - static QString statusText(Status st); + SettingValue m_nameFilteringMode; + QString m_id; + QString m_searchPattern; + QList m_searchResults; Ui::SearchJobWidget *m_ui = nullptr; SearchHandler *m_searchHandler = nullptr; QStandardItemModel *m_searchListModel = nullptr; SearchSortModel *m_proxyModel = nullptr; LineEdit *m_lineEditSearchResultsFilter = nullptr; - Status m_status = Status::Ongoing; + Status m_status = Status::Ready; bool m_noSearchResults = true; - - SettingValue m_nameFilteringMode; }; Q_DECLARE_METATYPE(SearchJobWidget::NameFilteringMode) diff --git a/src/gui/search/searchjobwidget.ui b/src/gui/search/searchjobwidget.ui index 56012013360f..7305afec2c1f 100644 --- a/src/gui/search/searchjobwidget.ui +++ b/src/gui/search/searchjobwidget.ui @@ -23,7 +23,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -50,10 +50,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QSizePolicy::Minimum + QSizePolicy::Policy::Minimum @@ -106,10 +106,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QSizePolicy::Minimum + QSizePolicy::Policy::Minimum diff --git a/src/gui/search/searchsortmodel.h b/src/gui/search/searchsortmodel.h index 32f239d342bd..f250cded53d0 100644 --- a/src/gui/search/searchsortmodel.h +++ b/src/gui/search/searchsortmodel.h @@ -44,7 +44,9 @@ class SearchSortModel final : public QSortFilterProxyModel SIZE, SEEDS, LEECHES, + ENGINE_NAME, ENGINE_URL, + PUB_DATE, DL_LINK, DESC_LINK, NB_SEARCH_COLUMNS diff --git a/src/gui/search/searchwidget.cpp b/src/gui/search/searchwidget.cpp index 1128a561e9ce..4369be0b1cf2 100644 --- a/src/gui/search/searchwidget.cpp +++ b/src/gui/search/searchwidget.cpp @@ -1,7 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2015-2025 Vladimir Golovnev * Copyright (C) 2020, Will Da Silva - * Copyright (C) 2015, 2018 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -34,37 +34,99 @@ #include -#ifdef Q_OS_WIN -#include -#endif - +#include #include #include -#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include #include -#include +#include +#include +#include +#include #include "base/global.h" +#include "base/logger.h" +#include "base/preferences.h" +#include "base/profile.h" #include "base/search/searchhandler.h" #include "base/search/searchpluginmanager.h" +#include "base/utils/bytearray.h" +#include "base/utils/compare.h" +#include "base/utils/datetime.h" +#include "base/utils/fs.h" #include "base/utils/foreignapps.h" +#include "base/utils/io.h" #include "gui/desktopintegration.h" #include "gui/interfaces/iguiapplication.h" -#include "gui/mainwindow.h" #include "gui/uithememanager.h" #include "pluginselectdialog.h" #include "searchjobwidget.h" #include "ui_searchwidget.h" -#define SEARCHHISTORY_MAXSIZE 50 -#define URL_COLUMN 5 +const int HISTORY_FILE_MAX_SIZE = 10 * 1024 * 1024; +const int SESSION_FILE_MAX_SIZE = 10 * 1024 * 1024; +const int RESULTS_FILE_MAX_SIZE = 10 * 1024 * 1024; + +const QString DATA_FOLDER_NAME = u"SearchUI"_s; +const QString HISTORY_FILE_NAME = u"History.txt"_s; +const QString SESSION_FILE_NAME = u"Session.json"_s; + +const QString KEY_SESSION_TABS = u"Tabs"_s; +const QString KEY_SESSION_CURRENTTAB = u"CurrentTab"_s; +const QString KEY_TAB_ID = u"ID"_s; +const QString KEY_TAB_SEARCHPATTERN = u"SearchPattern"_s; +const QString KEY_RESULT_FILENAME = u"FileName"_s; +const QString KEY_RESULT_FILEURL = u"FileURL"_s; +const QString KEY_RESULT_FILESIZE = u"FileSize"_s; +const QString KEY_RESULT_SEEDERSCOUNT = u"SeedersCount"_s; +const QString KEY_RESULT_LEECHERSCOUNT = u"LeechersCount"_s; +const QString KEY_RESULT_ENGINENAME = u"EngineName"_s; +const QString KEY_RESULT_SITEURL = u"SiteURL"_s; +const QString KEY_RESULT_DESCRLINK = u"DescrLink"_s; +const QString KEY_RESULT_PUBDATE = u"PubDate"_s; namespace { + class SearchHistorySortModel final : public QSortFilterProxyModel + { + Q_OBJECT + Q_DISABLE_COPY_MOVE(SearchHistorySortModel) + + public: + using QSortFilterProxyModel::QSortFilterProxyModel; + + private: + bool lessThan(const QModelIndex &left, const QModelIndex &right) const override + { + const int result = m_naturalCompare(left.data(sortRole()).toString(), right.data(sortRole()).toString()); + return result < 0; + } + + Utils::Compare::NaturalCompare m_naturalCompare; + }; + + struct TabData + { + QString tabID; + QString searchPattern; + }; + + struct SessionData + { + QList tabs; + QString currentTabID; + }; + QString statusIconName(const SearchJobWidget::Status st) { switch (st) @@ -82,14 +144,211 @@ namespace return {}; } } + + Path makeDataFilePath(const QString &fileName) + { + return specialFolderLocation(SpecialFolder::Data) / Path(DATA_FOLDER_NAME) / Path(fileName); + } + + QString makeTabName(SearchJobWidget *searchJobWdget) + { + Q_ASSERT(searchJobWdget); + if (!searchJobWdget) [[unlikely]] + return {}; + + QString tabName = searchJobWdget->searchPattern(); + tabName.replace(QRegularExpression(u"&{1}"_s), u"&&"_s); + return tabName; + } + + nonstd::expected loadHistory(const Path &filePath) + { + const auto readResult = Utils::IO::readFile(filePath, HISTORY_FILE_MAX_SIZE); + if (!readResult) + { + if (readResult.error().status == Utils::IO::ReadError::NotExist) + return {}; + + return nonstd::make_unexpected(readResult.error().message); + } + + QStringList history; + for (const QByteArrayView line : asConst(Utils::ByteArray::splitToViews(readResult.value(), "\n"))) + history.append(QString::fromUtf8(line)); + + return history; + } + + nonstd::expected loadSession(const Path &filePath) + { + const auto readResult = Utils::IO::readFile(filePath, SESSION_FILE_MAX_SIZE); + if (!readResult) + { + if (readResult.error().status == Utils::IO::ReadError::NotExist) + return {}; + + return nonstd::make_unexpected(readResult.error().message); + } + + const QString formatErrorMsg = SearchWidget::tr("Invalid data format."); + QJsonParseError jsonError; + const QJsonDocument sessionDoc = QJsonDocument::fromJson(readResult.value(), &jsonError); + if (jsonError.error != QJsonParseError::NoError) + return nonstd::make_unexpected(jsonError.errorString()); + + if (!sessionDoc.isObject()) + return nonstd::make_unexpected(formatErrorMsg); + + const QJsonObject sessionObj = sessionDoc.object(); + const QJsonValue tabsVal = sessionObj[KEY_SESSION_TABS]; + if (!tabsVal.isArray()) + return nonstd::make_unexpected(formatErrorMsg); + + QList tabs; + QSet tabIDs; + for (const QJsonValue &tabVal : asConst(tabsVal.toArray())) + { + if (!tabVal.isObject()) + return nonstd::make_unexpected(formatErrorMsg); + + const QJsonObject tabObj = tabVal.toObject(); + + const QJsonValue tabIDVal = tabObj[KEY_TAB_ID]; + if (!tabIDVal.isString()) + return nonstd::make_unexpected(formatErrorMsg); + + const QJsonValue patternVal = tabObj[KEY_TAB_SEARCHPATTERN]; + if (!patternVal.isString()) + return nonstd::make_unexpected(formatErrorMsg); + + const QString tabID = tabIDVal.toString(); + tabIDs.insert(tabID); + tabs.emplaceBack(TabData {tabID, patternVal.toString()}); + if (tabs.size() != tabIDs.size()) // duplicate ID + return nonstd::make_unexpected(formatErrorMsg); + } + + const QJsonValue currentTabVal = sessionObj[KEY_SESSION_CURRENTTAB]; + if (!currentTabVal.isString()) + return nonstd::make_unexpected(formatErrorMsg); + + return SessionData {.tabs = tabs, .currentTabID = currentTabVal.toString()}; + } + + nonstd::expected, QString> loadSearchResults(const Path &filePath) + { + const auto readResult = Utils::IO::readFile(filePath, RESULTS_FILE_MAX_SIZE); + if (!readResult) + { + if (readResult.error().status != Utils::IO::ReadError::NotExist) + { + return nonstd::make_unexpected(readResult.error().message); + } + + return {}; + } + + const QString formatErrorMsg = SearchWidget::tr("Invalid data format."); + QJsonParseError jsonError; + const QJsonDocument searchResultsDoc = QJsonDocument::fromJson(readResult.value(), &jsonError); + if (jsonError.error != QJsonParseError::NoError) + return nonstd::make_unexpected(jsonError.errorString()); + + if (!searchResultsDoc.isArray()) + return nonstd::make_unexpected(formatErrorMsg); + + const QJsonArray resultsList = searchResultsDoc.array(); + QList searchResults; + for (const QJsonValue &resultVal : resultsList) + { + if (!resultVal.isObject()) + return nonstd::make_unexpected(formatErrorMsg); + + const QJsonObject resultObj = resultVal.toObject(); + SearchResult &searchResult = searchResults.emplaceBack(); + + if (const QJsonValue fileNameVal = resultObj[KEY_RESULT_FILENAME]; fileNameVal.isString()) + searchResult.fileName = fileNameVal.toString(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue fileURLVal = resultObj[KEY_RESULT_FILEURL]; fileURLVal.isString()) + searchResult.fileUrl= fileURLVal.toString(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue fileSizeVal = resultObj[KEY_RESULT_FILESIZE]; fileSizeVal.isDouble()) + searchResult.fileSize= fileSizeVal.toInteger(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue seedersCountVal = resultObj[KEY_RESULT_SEEDERSCOUNT]; seedersCountVal.isDouble()) + searchResult.nbSeeders = seedersCountVal.toInteger(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue leechersCountVal = resultObj[KEY_RESULT_LEECHERSCOUNT]; leechersCountVal.isDouble()) + searchResult.nbLeechers = leechersCountVal.toInteger(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue engineNameVal = resultObj[KEY_RESULT_ENGINENAME]; engineNameVal.isString()) + searchResult.engineName= engineNameVal.toString(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue siteURLVal = resultObj[KEY_RESULT_SITEURL]; siteURLVal.isString()) + searchResult.siteUrl= siteURLVal.toString(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue descrLinkVal = resultObj[KEY_RESULT_DESCRLINK]; descrLinkVal.isString()) + searchResult.descrLink= descrLinkVal.toString(); + else + return nonstd::make_unexpected(formatErrorMsg); + + if (const QJsonValue pubDateVal = resultObj[KEY_RESULT_PUBDATE]; pubDateVal.isDouble()) + searchResult.pubDate = QDateTime::fromSecsSinceEpoch(pubDateVal.toInteger()); + else + return nonstd::make_unexpected(formatErrorMsg); + } + + return searchResults; + } } -SearchWidget::SearchWidget(IGUIApplication *app, MainWindow *mainWindow) - : GUIApplicationComponent(app, mainWindow) +class SearchWidget::DataStorage final : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY_MOVE(DataStorage) + +public: + using QObject::QObject; + + void loadSession(bool withSearchResults); + void storeSession(const SessionData &sessionData); + void removeSession(); + void storeTab(const QString &tabID, const QList &searchResults); + void removeTab(const QString &tabID); + void loadHistory(); + void storeHistory(const QStringList &history); + void removeHistory(); + +signals: + void historyLoaded(const QStringList &history); + void sessionLoaded(const SessionData &sessionData); + void tabLoaded(const QString &tabID, const QString &searchPattern, const QList &searchResults); +}; + +SearchWidget::SearchWidget(IGUIApplication *app, QWidget *parent) + : GUIApplicationComponent(app, parent) , m_ui {new Ui::SearchWidget()} - , m_mainWindow {mainWindow} + , m_ioThread {new QThread} + , m_dataStorage {new DataStorage} { m_ui->setupUi(this); + + m_ui->stopButton->hide(); m_ui->tabWidget->tabBar()->installEventFilter(this); const QString searchPatternHint = u"

    " @@ -119,7 +378,25 @@ SearchWidget::SearchWidget(IGUIApplication *app, MainWindow *mainWindow) m_ui->tabWidget->setIconSize(iconSize); #endif connect(m_ui->tabWidget, &QTabWidget::tabCloseRequested, this, &SearchWidget::closeTab); - connect(m_ui->tabWidget, &QTabWidget::currentChanged, this, &SearchWidget::tabChanged); + connect(m_ui->tabWidget, &QTabWidget::currentChanged, this, &SearchWidget::currentTabChanged); + connect(m_ui->tabWidget, &QTabWidget::currentChanged, this, &SearchWidget::saveSession); + connect(m_ui->tabWidget->tabBar(), &QTabBar::tabMoved, this, &SearchWidget::saveSession); + + connect(m_ui->tabWidget, &QTabWidget::tabBarDoubleClicked, this, [this](const int tabIndex) + { + if (tabIndex < 0) + return; + + // Reset current search pattern + auto *searchJobWidget = static_cast(m_ui->tabWidget->widget(tabIndex)); + const QString pattern = searchJobWidget->searchPattern(); + if (pattern != m_ui->lineEditSearchPattern->text()) + { + m_ui->lineEditSearchPattern->setText(pattern); + m_isNewQueryString = false; + adjustSearchButton(); + } + }); const auto *searchManager = SearchPluginManager::instance(); const auto onPluginChanged = [this]() @@ -136,6 +413,9 @@ SearchWidget::SearchWidget(IGUIApplication *app, MainWindow *mainWindow) // Fill in category combobox onPluginChanged(); + connect(m_ui->pluginsButton, &QPushButton::clicked, this, &SearchWidget::pluginsButtonClicked); + connect(m_ui->searchButton, &QPushButton::clicked, this, &SearchWidget::searchButtonClicked); + connect(m_ui->stopButton, &QPushButton::clicked, this, &SearchWidget::stopButtonClicked); connect(m_ui->lineEditSearchPattern, &LineEdit::returnPressed, m_ui->searchButton, &QPushButton::click); connect(m_ui->lineEditSearchPattern, &LineEdit::textEdited, this, &SearchWidget::searchTextEdited); connect(m_ui->selectPlugin, qOverload(&QComboBox::currentIndexChanged) @@ -147,6 +427,19 @@ SearchWidget::SearchWidget(IGUIApplication *app, MainWindow *mainWindow) connect(focusSearchHotkey, &QShortcut::activated, this, &SearchWidget::toggleFocusBetweenLineEdits); const auto *focusSearchHotkeyAlternative = new QShortcut((Qt::CTRL | Qt::Key_E), this); connect(focusSearchHotkeyAlternative, &QShortcut::activated, this, &SearchWidget::toggleFocusBetweenLineEdits); + + m_historyLength = Preferences::instance()->searchHistoryLength(); + m_storeOpenedTabs = Preferences::instance()->storeOpenedSearchTabs(); + m_storeOpenedTabsResults = Preferences::instance()->storeOpenedSearchTabResults(); + connect(Preferences::instance(), &Preferences::changed, this, &SearchWidget::onPreferencesChanged); + + m_dataStorage->moveToThread(m_ioThread.get()); + connect(m_ioThread.get(), &QThread::finished, m_dataStorage, &QObject::deleteLater); + m_ioThread->setObjectName("SearchWidget m_ioThread"); + m_ioThread->start(); + + loadHistory(); + restoreSession(); } bool SearchWidget::eventFilter(QObject *object, QEvent *event) @@ -159,33 +452,115 @@ bool SearchWidget::eventFilter(QObject *object, QEvent *event) const auto *mouseEvent = static_cast(event); const int tabIndex = m_ui->tabWidget->tabBar()->tabAt(mouseEvent->pos()); - if ((mouseEvent->button() == Qt::MiddleButton) && (tabIndex >= 0)) - { - closeTab(tabIndex); - return true; - } - if (mouseEvent->button() == Qt::RightButton) + if (tabIndex >= 0) { - QMenu *menu = new QMenu(this); - menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(tr("Close tab"), this, [this, tabIndex]() { closeTab(tabIndex); }); - menu->addAction(tr("Close all tabs"), this, &SearchWidget::closeAllTabs); - menu->popup(QCursor::pos()); - return true; + if (mouseEvent->button() == Qt::MiddleButton) + { + closeTab(tabIndex); + return true; + } + + if (mouseEvent->button() == Qt::RightButton) + { + showTabMenu(tabIndex); + return true; + } } + return false; } + return QWidget::eventFilter(object, event); } +void SearchWidget::onPreferencesChanged() +{ + const auto *pref = Preferences::instance(); + + const bool storeOpenedTabs = pref->storeOpenedSearchTabs(); + const bool isStoreOpenedTabsChanged = storeOpenedTabs != m_storeOpenedTabs; + if (isStoreOpenedTabsChanged) + { + m_storeOpenedTabs = storeOpenedTabs; + if (m_storeOpenedTabs) + { + saveSession(); + } + else + { + QMetaObject::invokeMethod(m_dataStorage, &SearchWidget::DataStorage::removeSession); + } + } + + + const bool storeOpenedTabsResults = pref->storeOpenedSearchTabResults(); + const bool isStoreOpenedTabsResultsChanged = storeOpenedTabsResults != m_storeOpenedTabsResults; + if (isStoreOpenedTabsResultsChanged) + m_storeOpenedTabsResults = storeOpenedTabsResults; + + if (isStoreOpenedTabsResultsChanged || isStoreOpenedTabsChanged) + { + if (m_storeOpenedTabsResults) + { + for (int tabIndex = (m_ui->tabWidget->count() - 1); tabIndex >= 0; --tabIndex) + { + const auto *tab = static_cast(m_ui->tabWidget->widget(tabIndex)); + QMetaObject::invokeMethod(m_dataStorage, [this, tabID = tab->id(), searchResults = tab->searchResults()] + { + m_dataStorage->storeTab(tabID, searchResults); + }); + } + } + else + { + for (int tabIndex = (m_ui->tabWidget->count() - 1); tabIndex >= 0; --tabIndex) + { + const auto *tab = static_cast(m_ui->tabWidget->widget(tabIndex)); + QMetaObject::invokeMethod(m_dataStorage, [this, tabID = tab->id()] { m_dataStorage->removeTab(tabID); }); + } + } + } + + const int historyLength = pref->searchHistoryLength(); + if (historyLength != m_historyLength) + { + if (m_historyLength <= 0) + { + createSearchPatternCompleter(); + } + else + { + if (historyLength <= 0) + { + m_searchPatternCompleterModel->removeRows(0, m_searchPatternCompleterModel->rowCount()); + QMetaObject::invokeMethod(m_dataStorage, &SearchWidget::DataStorage::removeHistory); + } + else if (historyLength < m_historyLength) + { + if (const int rowCount = m_searchPatternCompleterModel->rowCount(); rowCount > historyLength) + { + m_searchPatternCompleterModel->removeRows(0, (rowCount - historyLength)); + QMetaObject::invokeMethod(m_dataStorage, [this] + { + m_dataStorage->storeHistory(m_searchPatternCompleterModel->stringList()); + }); + } + } + } + + m_historyLength = historyLength; + } +} + void SearchWidget::fillCatCombobox() { m_ui->comboCategory->clear(); m_ui->comboCategory->addItem(SearchPluginManager::categoryFullName(u"all"_s), u"all"_s); using QStrPair = std::pair; - QVector tmpList; - for (const QString &cat : asConst(SearchPluginManager::instance()->getPluginCategories(selectedPlugin()))) + QList tmpList; + const auto selectedPlugin = m_ui->selectPlugin->itemData(m_ui->selectPlugin->currentIndex()).toString(); + for (const QString &cat : asConst(SearchPluginManager::instance()->getPluginCategories(selectedPlugin))) tmpList << std::make_pair(SearchPluginManager::categoryFullName(cat), cat); std::sort(tmpList.begin(), tmpList.end(), [](const QStrPair &l, const QStrPair &r) { return (QString::localeAwareCompare(l.first, r.first) < 0); }); @@ -207,7 +582,7 @@ void SearchWidget::fillPluginComboBox() m_ui->selectPlugin->addItem(tr("Select..."), u"multi"_s); using QStrPair = std::pair; - QVector tmpList; + QList tmpList; for (const QString &name : asConst(SearchPluginManager::instance()->enabledPlugins())) tmpList << std::make_pair(SearchPluginManager::instance()->pluginFullName(name), name); std::sort(tmpList.begin(), tmpList.end(), [](const QStrPair &l, const QStrPair &r) { return (l.first < r.first); } ); @@ -224,9 +599,138 @@ QString SearchWidget::selectedCategory() const return m_ui->comboCategory->itemData(m_ui->comboCategory->currentIndex()).toString(); } -QString SearchWidget::selectedPlugin() const +QStringList SearchWidget::selectedPlugins() const +{ + const auto itemText = m_ui->selectPlugin->itemData(m_ui->selectPlugin->currentIndex()).toString(); + + if (itemText == u"all") + return SearchPluginManager::instance()->allPlugins(); + + if ((itemText == u"enabled") || (itemText == u"multi")) + return SearchPluginManager::instance()->enabledPlugins(); + + return {itemText}; +} + +QString SearchWidget::generateTabID() const +{ + for (;;) + { + const QString tabID = QString::number(qHash(QDateTime::currentDateTimeUtc())); + if (!m_tabWidgets.contains(tabID)) + return tabID; + } + + return {}; +} + +int SearchWidget::addTab(const QString &tabID, SearchJobWidget *searchJobWdget) +{ + Q_ASSERT(!m_tabWidgets.contains(tabID)); + + connect(searchJobWdget, &SearchJobWidget::statusChanged, this, [this, searchJobWdget]() { tabStatusChanged(searchJobWdget); }); + m_tabWidgets.insert(tabID, searchJobWdget); + return m_ui->tabWidget->addTab(searchJobWdget, makeTabName(searchJobWdget)); +} + +void SearchWidget::updateHistory(const QString &newSearchPattern) +{ + if (m_historyLength <= 0) + return; + + if (m_searchPatternCompleterModel->stringList().contains(newSearchPattern)) + return; + + const int rowNum = m_searchPatternCompleterModel->rowCount(); + m_searchPatternCompleterModel->insertRow(rowNum); + m_searchPatternCompleterModel->setData(m_searchPatternCompleterModel->index(rowNum, 0), newSearchPattern); + if (m_searchPatternCompleterModel->rowCount() > m_historyLength) + m_searchPatternCompleterModel->removeRow(0); + + QMetaObject::invokeMethod(m_dataStorage, [this, history = m_searchPatternCompleterModel->stringList()] + { + m_dataStorage->storeHistory(history); + }); +} + +void SearchWidget::loadHistory() { - return m_ui->selectPlugin->itemData(m_ui->selectPlugin->currentIndex()).toString(); + if (m_historyLength <= 0) + return; + + createSearchPatternCompleter(); + + connect(m_dataStorage, &DataStorage::historyLoaded, this, [this](const QStringList &storedHistory) + { + if (m_historyLength <= 0) + return; + + QStringList history = storedHistory; + for (const QString &newPattern : asConst(m_searchPatternCompleterModel->stringList())) + { + if (!history.contains(newPattern)) + history.append(newPattern); + } + + if (history.size() > m_historyLength) + history = history.mid(history.size() - m_historyLength); + + m_searchPatternCompleterModel->setStringList(history); + }); + + QMetaObject::invokeMethod(m_dataStorage, &SearchWidget::DataStorage::loadHistory); +} + +void SearchWidget::saveSession() const +{ + if (!m_storeOpenedTabs) + return; + + const int currentIndex = m_ui->tabWidget->currentIndex(); + SessionData sessionData; + for (int tabIndex = 0; tabIndex < m_ui->tabWidget->count(); ++tabIndex) + { + auto *searchJobWidget = static_cast(m_ui->tabWidget->widget(tabIndex)); + sessionData.tabs.emplaceBack(TabData {searchJobWidget->id(), searchJobWidget->searchPattern()}); + if (currentIndex == tabIndex) + sessionData.currentTabID = searchJobWidget->id(); + } + + QMetaObject::invokeMethod(m_dataStorage, [this, sessionData] { m_dataStorage->storeSession(sessionData); }); +} + +void SearchWidget::createSearchPatternCompleter() +{ + Q_ASSERT(!m_ui->lineEditSearchPattern->completer()); + + m_searchPatternCompleterModel = new QStringListModel(this); + auto *sortModel = new SearchHistorySortModel(this); + sortModel->setSourceModel(m_searchPatternCompleterModel); + sortModel->sort(0); + auto *completer = new QCompleter(sortModel, this); + completer->setCaseSensitivity(Qt::CaseInsensitive); + completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); + m_ui->lineEditSearchPattern->setCompleter(completer); +} + +void SearchWidget::restoreSession() +{ + if (!m_storeOpenedTabs) + return; + + connect(m_dataStorage, &DataStorage::tabLoaded, this + , [this](const QString &tabID, const QString &searchPattern, const QList &searchResults) + { + auto *restoredTab = new SearchJobWidget(tabID, searchPattern, searchResults, app(), this); + addTab(tabID, restoredTab); + }); + + connect(m_dataStorage, &DataStorage::sessionLoaded, this, [this](const SessionData &sessionData) + { + m_ui->tabWidget->setCurrentWidget(m_tabWidgets.value(sessionData.currentTabID)); + }); + + QMetaObject::invokeMethod(m_dataStorage, [this] { m_dataStorage->loadSession(m_storeOpenedTabsResults); }); } void SearchWidget::selectActivePage() @@ -255,17 +759,28 @@ SearchWidget::~SearchWidget() delete m_ui; } -void SearchWidget::tabChanged(const int index) +void SearchWidget::currentTabChanged(const int index) { // when we switch from a tab that is not empty to another that is empty // the download button doesn't have to be available - m_currentSearchTab = ((index < 0) ? nullptr : m_allTabs.at(m_ui->tabWidget->currentIndex())); + m_currentSearchTab = (index >= 0) + ? static_cast(m_ui->tabWidget->widget(index)) + : nullptr; + + if (!m_currentSearchTab) + m_isNewQueryString = true; + + if (!m_isNewQueryString) + m_ui->lineEditSearchPattern->setText(m_currentSearchTab->searchPattern()); + + adjustSearchButton(); } void SearchWidget::selectMultipleBox([[maybe_unused]] const int index) { - if (selectedPlugin() == u"multi") - on_pluginsButton_clicked(); + const auto itemText = m_ui->selectPlugin->itemData(m_ui->selectPlugin->currentIndex()).toString(); + if (itemText == u"multi") + pluginsButtonClicked(); } void SearchWidget::toggleFocusBetweenLineEdits() @@ -282,18 +797,63 @@ void SearchWidget::toggleFocusBetweenLineEdits() } } -void SearchWidget::on_pluginsButton_clicked() +void SearchWidget::adjustSearchButton() +{ + if (!m_isNewQueryString + && (m_currentSearchTab && (m_currentSearchTab->status() == SearchJobWidget::Status::Ongoing))) + { + if (m_ui->searchButton->isVisible()) + { + m_ui->searchButton->hide(); + m_ui->stopButton->show(); + } + } + else + { + if (m_ui->stopButton->isVisible()) + { + m_ui->stopButton->hide(); + m_ui->searchButton->show(); + } + } +} + +void SearchWidget::showTabMenu(const int index) +{ + QMenu *menu = new QMenu(this); + + if (auto *searchJobWidget = static_cast(m_ui->tabWidget->widget(index)); + searchJobWidget->status() != SearchJobWidget::Status::Ongoing) + { + menu->addAction(tr("Refresh"), this, [this, searchJobWidget] { refreshTab(searchJobWidget); }); + } + else + { + menu->addAction(tr("Stop"), this, [searchJobWidget] { searchJobWidget->cancelSearch(); }); + } + + menu->addSeparator(); + menu->addAction(tr("Close tab"), this, [this, index] { closeTab(index); }); + menu->addAction(tr("Close all tabs"), this, &SearchWidget::closeAllTabs); + + menu->setAttribute(Qt::WA_DeleteOnClose); + menu->popup(QCursor::pos()); +} + +void SearchWidget::pluginsButtonClicked() { auto *dlg = new PluginSelectDialog(SearchPluginManager::instance(), this); dlg->setAttribute(Qt::WA_DeleteOnClose); dlg->show(); } -void SearchWidget::searchTextEdited(const QString &) +void SearchWidget::searchTextEdited(const QString &text) { - // Enable search button - m_ui->searchButton->setText(tr("Search")); - m_isNewQueryString = true; + if (m_currentSearchTab) + { + m_isNewQueryString = m_currentSearchTab->searchPattern() != text; + adjustSearchButton(); + } } void SearchWidget::giveFocusToSearchInput() @@ -302,24 +862,8 @@ void SearchWidget::giveFocusToSearchInput() } // Function called when we click on search button -void SearchWidget::on_searchButton_clicked() +void SearchWidget::searchButtonClicked() { - if (!Utils::ForeignApps::pythonInfo().isValid()) - { - app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Please install Python to use the Search Engine.")); - return; - } - - if (m_activeSearchTab) - { - m_activeSearchTab->cancelSearch(); - if (!m_isNewQueryString) - { - m_ui->searchButton->setText(tr("Search")); - return; - } - } - m_isNewQueryString = false; const QString pattern = m_ui->lineEditSearchPattern->text().trimmed(); @@ -330,72 +874,222 @@ void SearchWidget::on_searchButton_clicked() return; } - const QString plugin = selectedPlugin(); - - QStringList plugins; - if (plugin == u"all") - plugins = SearchPluginManager::instance()->allPlugins(); - else if ((plugin == u"enabled") || (plugin == u"multi")) - plugins = SearchPluginManager::instance()->enabledPlugins(); - else - plugins << plugin; + if (!Utils::ForeignApps::pythonInfo().isValid()) + { + app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Please install Python to use the Search Engine.")); + return; + } qDebug("Search with category: %s", qUtf8Printable(selectedCategory())); // Launch search - auto *searchHandler = SearchPluginManager::instance()->startSearch(pattern, selectedCategory(), plugins); + auto *searchHandler = SearchPluginManager::instance()->startSearch(pattern, selectedCategory(), selectedPlugins()); // Tab Addition - auto *newTab = new SearchJobWidget(searchHandler, app(), this); - m_allTabs.append(newTab); - - QString tabName = pattern; - tabName.replace(QRegularExpression(u"&{1}"_s), u"&&"_s); - m_ui->tabWidget->addTab(newTab, tabName); + const QString newTabID = generateTabID(); + auto *newTab = new SearchJobWidget(newTabID, searchHandler, app(), this); + const int tabIndex = addTab(newTabID, newTab); + m_ui->tabWidget->setTabToolTip(tabIndex, newTab->statusTip()); + m_ui->tabWidget->setTabIcon(tabIndex, UIThemeManager::instance()->getIcon(statusIconName(newTab->status()))); m_ui->tabWidget->setCurrentWidget(newTab); + adjustSearchButton(); + updateHistory(pattern); + saveSession(); +} - connect(newTab, &SearchJobWidget::statusChanged, this, [this, newTab]() { tabStatusChanged(newTab); }); - - m_ui->searchButton->setText(tr("Stop")); - m_activeSearchTab = newTab; - tabStatusChanged(newTab); +void SearchWidget::stopButtonClicked() +{ + m_currentSearchTab->cancelSearch(); } -void SearchWidget::tabStatusChanged(QWidget *tab) +void SearchWidget::tabStatusChanged(SearchJobWidget *tab) { const int tabIndex = m_ui->tabWidget->indexOf(tab); m_ui->tabWidget->setTabToolTip(tabIndex, tab->statusTip()); m_ui->tabWidget->setTabIcon(tabIndex, UIThemeManager::instance()->getIcon( - statusIconName(static_cast(tab)->status()))); + statusIconName(static_cast(tab)->status()))); - if ((tab == m_activeSearchTab) && (m_activeSearchTab->status() != SearchJobWidget::Status::Ongoing)) + if (tab->status() != SearchJobWidget::Status::Ongoing) { - Q_ASSERT(m_activeSearchTab->status() != SearchJobWidget::Status::Ongoing); + if (tab == m_currentSearchTab) + adjustSearchButton(); - if (app()->desktopIntegration()->isNotificationsEnabled() && (m_mainWindow->currentTabWidget() != this)) + emit searchFinished(tab->status() == SearchJobWidget::Status::Error); + + if (m_storeOpenedTabsResults) { - if (m_activeSearchTab->status() == SearchJobWidget::Status::Error) - app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Search has failed")); + QMetaObject::invokeMethod(m_dataStorage, [this, tabID = tab->id(), searchResults = tab->searchResults()] + { + m_dataStorage->storeTab(tabID, searchResults); + }); + } + } +} + +void SearchWidget::closeTab(const int index) +{ + const auto *tab = static_cast(m_ui->tabWidget->widget(index)); + const QString tabID = tab->id(); + delete m_tabWidgets.take(tabID); + + QMetaObject::invokeMethod(m_dataStorage, [this, tabID] { m_dataStorage->removeTab(tabID); }); + saveSession(); +} + +void SearchWidget::closeAllTabs() +{ + for (int tabIndex = (m_ui->tabWidget->count() - 1); tabIndex >= 0; --tabIndex) + { + const auto *tab = static_cast(m_ui->tabWidget->widget(tabIndex)); + const QString tabID = tab->id(); + delete m_tabWidgets.take(tabID); + QMetaObject::invokeMethod(m_dataStorage, [this, tabID] { m_dataStorage->removeTab(tabID); }); + } + + saveSession(); +} + +void SearchWidget::refreshTab(SearchJobWidget *searchJobWidget) +{ + if (!Utils::ForeignApps::pythonInfo().isValid()) + { + app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Please install Python to use the Search Engine.")); + return; + } + + // Re-launch search + auto *searchHandler = SearchPluginManager::instance()->startSearch(searchJobWidget->searchPattern(), selectedCategory(), selectedPlugins()); + searchJobWidget->assignSearchHandler(searchHandler); +} + +void SearchWidget::DataStorage::loadSession(const bool withSearchResults) +{ + const Path sessionFilePath = makeDataFilePath(SESSION_FILE_NAME); + const auto loadResult = ::loadSession(sessionFilePath); + if (!loadResult) + { + LogMsg(tr("Failed to load Search UI saved state data. File: \"%1\". Error: \"%2\"") + .arg(sessionFilePath.toString(), loadResult.error()), Log::WARNING); + return; + } + + const SessionData &sessionData = loadResult.value(); + + for (const auto &[tabID, searchPattern] : sessionData.tabs) + { + QList searchResults; + + if (withSearchResults) + { + const Path tabStateFilePath = makeDataFilePath(tabID + u".json"); + if (const auto loadTabStateResult = loadSearchResults(tabStateFilePath)) + { + searchResults = loadTabStateResult.value(); + } else - app()->desktopIntegration()->showNotification(tr("Search Engine"), tr("Search has finished")); + { + LogMsg(tr("Failed to load saved search results. Tab: \"%1\". File: \"%2\". Error: \"%3\"") + .arg(searchPattern, tabStateFilePath.toString(), loadTabStateResult.error()), Log::WARNING); + } } - m_activeSearchTab = nullptr; - m_ui->searchButton->setText(tr("Search")); + emit tabLoaded(tabID, searchPattern, searchResults); } + + emit sessionLoaded(sessionData); } -void SearchWidget::closeTab(int index) +void SearchWidget::DataStorage::storeSession(const SessionData &sessionData) { - SearchJobWidget *tab = m_allTabs.takeAt(index); - if (tab == m_activeSearchTab) - m_ui->searchButton->setText(tr("Search")); + QJsonArray tabsList; + for (const auto &[tabID, searchPattern] : sessionData.tabs) + { + const QJsonObject tabObj { + {u"ID"_s, tabID}, + {u"SearchPattern"_s, searchPattern} + }; + tabsList.append(tabObj); + } + + const QJsonObject sessionObj { + {u"Tabs"_s, tabsList}, + {u"CurrentTab"_s, sessionData.currentTabID} + }; - delete tab; + const Path sessionFilePath = makeDataFilePath(SESSION_FILE_NAME); + const auto saveResult = Utils::IO::saveToFile(sessionFilePath, QJsonDocument(sessionObj).toJson(QJsonDocument::Compact)); + if (!saveResult) + { + LogMsg(tr("Failed to save Search UI state. File: \"%1\". Error: \"%2\"") + .arg(sessionFilePath.toString(), saveResult.error()), Log::WARNING); + } } -void SearchWidget::closeAllTabs() +void SearchWidget::DataStorage::removeSession() +{ + Utils::Fs::removeFile(makeDataFilePath(SESSION_FILE_NAME)); +} + +void SearchWidget::DataStorage::storeTab(const QString &tabID, const QList &searchResults) +{ + QJsonArray searchResultsArray; + for (const SearchResult &searchResult : searchResults) + { + searchResultsArray.append(QJsonObject { + {KEY_RESULT_FILENAME, searchResult.fileName}, + {KEY_RESULT_FILEURL, searchResult.fileUrl}, + {KEY_RESULT_FILESIZE, searchResult.fileSize}, + {KEY_RESULT_SEEDERSCOUNT, searchResult.nbSeeders}, + {KEY_RESULT_LEECHERSCOUNT, searchResult.nbLeechers}, + {KEY_RESULT_ENGINENAME, searchResult.engineName}, + {KEY_RESULT_SITEURL, searchResult.siteUrl}, + {KEY_RESULT_DESCRLINK, searchResult.descrLink}, + {KEY_RESULT_PUBDATE, Utils::DateTime::toSecsSinceEpoch(searchResult.pubDate)} + }); + } + + const Path filePath = makeDataFilePath(tabID + u".json"); + const auto saveResult = Utils::IO::saveToFile(filePath, QJsonDocument(searchResultsArray).toJson(QJsonDocument::Compact)); + if (!saveResult) + { + LogMsg(tr("Failed to save search results. Tab: \"%1\". File: \"%2\". Error: \"%3\"") + .arg(tabID, filePath.toString(), saveResult.error()), Log::WARNING); + } +} + +void SearchWidget::DataStorage::removeTab(const QString &tabID) +{ + Utils::Fs::removeFile(makeDataFilePath(tabID + u".json")); +} + +void SearchWidget::DataStorage::loadHistory() { - for (int i = (m_allTabs.size() - 1); i >= 0; --i) - closeTab(i); + const Path historyFilePath = makeDataFilePath(HISTORY_FILE_NAME); + const auto loadResult = ::loadHistory(historyFilePath); + if (!loadResult) + { + LogMsg(tr("Failed to load Search UI history. File: \"%1\". Error: \"%2\"") + .arg(historyFilePath.toString(), loadResult.error()), Log::WARNING); + return; + } + + emit historyLoaded(loadResult.value()); } + +void SearchWidget::DataStorage::storeHistory(const QStringList &history) +{ + const Path filePath = makeDataFilePath(HISTORY_FILE_NAME); + const auto saveResult = Utils::IO::saveToFile(filePath, history.join(u'\n').toUtf8()); + if (!saveResult) + { + LogMsg(tr("Failed to save search history. File: \"%1\". Error: \"%2\"") + .arg(filePath.toString(), saveResult.error()), Log::WARNING); + } +} + +void SearchWidget::DataStorage::removeHistory() +{ + Utils::Fs::removeFile(makeDataFilePath(HISTORY_FILE_NAME)); +} + +#include "searchwidget.moc" diff --git a/src/gui/search/searchwidget.h b/src/gui/search/searchwidget.h index 06544308c007..a09493ef6f42 100644 --- a/src/gui/search/searchwidget.h +++ b/src/gui/search/searchwidget.h @@ -1,7 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2015-2025 Vladimir Golovnev * Copyright (C) 2020, Will Da Silva - * Copyright (C) 2015, 2018 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -30,17 +30,17 @@ #pragma once -#include #include +#include #include +#include "base/utils/thread.h" #include "gui/guiapplicationcomponent.h" class QEvent; class QObject; -class QTabWidget; +class QStringListModel; -class MainWindow; class SearchJobWidget; namespace Ui @@ -54,36 +54,66 @@ class SearchWidget : public GUIApplicationComponent Q_DISABLE_COPY_MOVE(SearchWidget) public: - explicit SearchWidget(IGUIApplication *app, MainWindow *mainWindow); + explicit SearchWidget(IGUIApplication *app, QWidget *parent); ~SearchWidget() override; void giveFocusToSearchInput(); -private slots: - void on_searchButton_clicked(); - void on_pluginsButton_clicked(); +signals: + void searchFinished(bool failed); private: bool eventFilter(QObject *object, QEvent *event) override; - void tabChanged(int index); + + void onPreferencesChanged(); + + void pluginsButtonClicked(); + void searchButtonClicked(); + void stopButtonClicked(); + void searchTextEdited(const QString &text); + void currentTabChanged(int index); + + void tabStatusChanged(SearchJobWidget *tab); + void closeTab(int index); void closeAllTabs(); - void tabStatusChanged(QWidget *tab); + void refreshTab(SearchJobWidget *searchJobWidget); + void showTabMenu(int index); + void selectMultipleBox(int index); void toggleFocusBetweenLineEdits(); + void adjustSearchButton(); void fillCatCombobox(); void fillPluginComboBox(); void selectActivePage(); - void searchTextEdited(const QString &); QString selectedCategory() const; - QString selectedPlugin() const; + QStringList selectedPlugins() const; + + QString generateTabID() const; + int addTab(const QString &tabID, SearchJobWidget *searchJobWdget); + + void loadHistory(); + void restoreSession(); + void updateHistory(const QString &newSearchPattern); + void saveSession() const; + + void createSearchPatternCompleter(); Ui::SearchWidget *m_ui = nullptr; QPointer m_currentSearchTab; // Selected tab - QPointer m_activeSearchTab; // Tab with running search - QList m_allTabs; // To store all tabs - MainWindow *m_mainWindow = nullptr; bool m_isNewQueryString = false; + QHash m_tabWidgets; + + bool m_storeOpenedTabs = false; + bool m_storeOpenedTabsResults = false; + int m_historyLength = 0; + + Utils::Thread::UniquePtr m_ioThread; + + class DataStorage; + DataStorage *m_dataStorage = nullptr; + + QStringListModel *m_searchPatternCompleterModel = nullptr; }; diff --git a/src/gui/search/searchwidget.ui b/src/gui/search/searchwidget.ui index 109632f43fc5..54442b20106c 100644 --- a/src/gui/search/searchwidget.ui +++ b/src/gui/search/searchwidget.ui @@ -52,6 +52,13 @@ + + + + Stop + + + @@ -80,7 +87,7 @@ Click the "Search plugins..." button at the bottom right of the window to install some. - Qt::AlignCenter + Qt::AlignmentFlag::AlignCenter @@ -105,6 +112,9 @@ Click the "Search plugins..." button at the bottom right of the window true + + true + @@ -116,7 +126,7 @@ Click the "Search plugins..." button at the bottom right of the window - Qt::Horizontal + Qt::Orientation::Horizontal diff --git a/src/gui/shutdownconfirmdialog.ui b/src/gui/shutdownconfirmdialog.ui index 2db0987011dc..9c1f42351599 100644 --- a/src/gui/shutdownconfirmdialog.ui +++ b/src/gui/shutdownconfirmdialog.ui @@ -22,17 +22,17 @@ warning icon - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop - Qt::Horizontal + Qt::Orientation::Horizontal - QSizePolicy::Fixed + QSizePolicy::Policy::Fixed @@ -70,7 +70,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -83,7 +83,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/speedlimitdialog.ui b/src/gui/speedlimitdialog.ui index e9250793d3e0..71cef5f65914 100644 --- a/src/gui/speedlimitdialog.ui +++ b/src/gui/speedlimitdialog.ui @@ -37,7 +37,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -52,6 +52,9 @@ 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + @@ -64,7 +67,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -79,6 +82,9 @@ 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + @@ -107,7 +113,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -122,6 +128,9 @@ 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + @@ -134,7 +143,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -149,6 +158,9 @@ 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + @@ -157,7 +169,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -170,7 +182,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/statsdialog.ui b/src/gui/statsdialog.ui index 76e22599e09d..acb2767cc4ad 100644 --- a/src/gui/statsdialog.ui +++ b/src/gui/statsdialog.ui @@ -20,29 +20,15 @@ User statistics - - - - TextLabel - - - - - - - Connected peers: - - - - - + + - All-time share ratio: + All-time upload: - - + + TextLabel @@ -55,14 +41,21 @@ - + TextLabel - + + + + All-time share ratio: + + + + TextLabel @@ -76,15 +69,22 @@ - - + + - All-time upload: + TextLabel - - + + + + Connected peers: + + + + + TextLabel @@ -106,24 +106,24 @@ - + TextLabel - - + + - TextLabel + Total buffer size: - - + + - Total buffer size: + TextLabel @@ -136,28 +136,28 @@ Performance statistics - - + + - TextLabel + Write cache overload: - - + + TextLabel - - + + - TextLabel + Read cache overload: - + TextLabel @@ -171,10 +171,10 @@ - - + + - Write cache overload: + TextLabel @@ -185,10 +185,10 @@ - - + + - Read cache overload: + TextLabel @@ -199,7 +199,7 @@ - + TextLabel @@ -212,7 +212,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -225,7 +225,7 @@ - QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/statusbar.cpp b/src/gui/statusbar.cpp index 8eef15e7baf2..9f40708087cb 100644 --- a/src/gui/statusbar.cpp +++ b/src/gui/statusbar.cpp @@ -38,6 +38,7 @@ #include "base/bittorrent/session.h" #include "base/bittorrent/sessionstatus.h" +#include "base/preferences.h" #include "base/utils/misc.h" #include "speedlimitdialog.h" #include "uithememanager.h" @@ -86,6 +87,9 @@ StatusBar::StatusBar(QWidget *parent) m_upSpeedLbl->setStyleSheet(u"text-align:left;"_s); m_upSpeedLbl->setMinimumWidth(200); + m_lastExternalIPsLbl = new QLabel(tr("External IP: N/A")); + m_lastExternalIPsLbl->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + m_DHTLbl = new QLabel(tr("DHT: %1 nodes").arg(0), this); m_DHTLbl->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); @@ -129,24 +133,33 @@ StatusBar::StatusBar(QWidget *parent) #ifndef Q_OS_MACOS statusSep4->setFrameShadow(QFrame::Raised); #endif - layout->addWidget(m_DHTLbl); + QFrame *statusSep5 = new QFrame(this); + statusSep5->setFrameStyle(QFrame::VLine); +#ifndef Q_OS_MACOS + statusSep5->setFrameShadow(QFrame::Raised); +#endif + layout->addWidget(m_lastExternalIPsLbl); layout->addWidget(statusSep1); - layout->addWidget(m_connecStatusLblIcon); + layout->addWidget(m_DHTLbl); layout->addWidget(statusSep2); + layout->addWidget(m_connecStatusLblIcon); + layout->addWidget(statusSep3); layout->addWidget(m_altSpeedsBtn); layout->addWidget(statusSep4); layout->addWidget(m_dlSpeedLbl); - layout->addWidget(statusSep3); + layout->addWidget(statusSep5); layout->addWidget(m_upSpeedLbl); addPermanentWidget(container); setStyleSheet(u"QWidget {margin: 0;}"_s); container->adjustSize(); adjustSize(); + updateExternalAddressesVisibility(); // Is DHT enabled m_DHTLbl->setVisible(session->isDHTEnabled()); refresh(); connect(session, &BitTorrent::Session::statsUpdated, this, &StatusBar::refresh); + connect(Preferences::instance(), &Preferences::changed, this, &StatusBar::optionsSaved); } StatusBar::~StatusBar() @@ -212,6 +225,28 @@ void StatusBar::updateDHTNodesNumber() } } +void StatusBar::updateExternalAddressesLabel() +{ + const QString lastExternalIPv4Address = BitTorrent::Session::instance()->lastExternalIPv4Address(); + const QString lastExternalIPv6Address = BitTorrent::Session::instance()->lastExternalIPv6Address(); + QString addressText = tr("External IP: N/A"); + + const bool hasIPv4Address = !lastExternalIPv4Address.isEmpty(); + const bool hasIPv6Address = !lastExternalIPv6Address.isEmpty(); + + if (hasIPv4Address && hasIPv6Address) + addressText = tr("External IPs: %1, %2").arg(lastExternalIPv4Address, lastExternalIPv6Address); + else if (hasIPv4Address || hasIPv6Address) + addressText = tr("External IP: %1%2").arg(lastExternalIPv4Address, lastExternalIPv6Address); + + m_lastExternalIPsLbl->setText(addressText); +} + +void StatusBar::updateExternalAddressesVisibility() +{ + m_lastExternalIPsLbl->setVisible(Preferences::instance()->isStatusbarExternalIPDisplayed()); +} + void StatusBar::updateSpeedLabels() { const BitTorrent::SessionStatus &sessionStatus = BitTorrent::Session::instance()->status(); @@ -235,6 +270,7 @@ void StatusBar::refresh() { updateConnectionStatus(); updateDHTNodesNumber(); + updateExternalAddressesLabel(); updateSpeedLabels(); } @@ -261,3 +297,8 @@ void StatusBar::capSpeed() dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->open(); } + +void StatusBar::optionsSaved() +{ + updateExternalAddressesVisibility(); +} diff --git a/src/gui/statusbar.h b/src/gui/statusbar.h index be5f993d08c8..d468467079ae 100644 --- a/src/gui/statusbar.h +++ b/src/gui/statusbar.h @@ -58,14 +58,18 @@ private slots: void refresh(); void updateAltSpeedsBtn(bool alternative); void capSpeed(); + void optionsSaved(); private: void updateConnectionStatus(); void updateDHTNodesNumber(); + void updateExternalAddressesLabel(); + void updateExternalAddressesVisibility(); void updateSpeedLabels(); QPushButton *m_dlSpeedLbl = nullptr; QPushButton *m_upSpeedLbl = nullptr; + QLabel *m_lastExternalIPsLbl = nullptr; QLabel *m_DHTLbl = nullptr; QPushButton *m_connecStatusLblIcon = nullptr; QPushButton *m_altSpeedsBtn = nullptr; diff --git a/src/gui/torrentcategorydialog.cpp b/src/gui/torrentcategorydialog.cpp index f93b0801758c..a9762d81d592 100644 --- a/src/gui/torrentcategorydialog.cpp +++ b/src/gui/torrentcategorydialog.cpp @@ -169,14 +169,13 @@ void TorrentCategoryDialog::setCategoryOptions(const BitTorrent::CategoryOptions void TorrentCategoryDialog::categoryNameChanged(const QString &categoryName) { - const Path categoryPath = Utils::Fs::toValidPath(categoryName); const auto *btSession = BitTorrent::Session::instance(); - m_ui->comboSavePath->setPlaceholder(btSession->savePath() / categoryPath); + m_ui->comboSavePath->setPlaceholder(btSession->categorySavePath(categoryName, categoryOptions())); const int index = m_ui->comboUseDownloadPath->currentIndex(); - const bool useDownloadPath = (index == 1) || ((index == 0) && BitTorrent::Session::instance()->isDownloadPathEnabled()); + const bool useDownloadPath = (index == 1) || ((index == 0) && btSession->isDownloadPathEnabled()); if (useDownloadPath) - m_ui->comboDownloadPath->setPlaceholder(btSession->downloadPath() / categoryPath); + m_ui->comboDownloadPath->setPlaceholder(btSession->categoryDownloadPath(categoryName, categoryOptions())); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!categoryName.isEmpty()); } @@ -190,8 +189,9 @@ void TorrentCategoryDialog::useDownloadPathChanged(const int index) m_ui->comboDownloadPath->setEnabled(index == 1); m_ui->comboDownloadPath->setSelectedPath((index == 1) ? m_lastEnteredDownloadPath : Path()); + const auto *btSession = BitTorrent::Session::instance(); const QString categoryName = m_ui->textCategoryName->text(); - const Path categoryPath = BitTorrent::Session::instance()->downloadPath() / Utils::Fs::toValidPath(categoryName); - const bool useDownloadPath = (index == 1) || ((index == 0) && BitTorrent::Session::instance()->isDownloadPathEnabled()); + const bool useDownloadPath = (index == 1) || ((index == 0) && btSession->isDownloadPathEnabled()); + const Path categoryPath = btSession->categoryDownloadPath(categoryName, categoryOptions()); m_ui->comboDownloadPath->setPlaceholder(useDownloadPath ? categoryPath : Path()); } diff --git a/src/gui/torrentcategorydialog.ui b/src/gui/torrentcategorydialog.ui index ed0c131239cd..804af09dd3dd 100644 --- a/src/gui/torrentcategorydialog.ui +++ b/src/gui/torrentcategorydialog.ui @@ -17,7 +17,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -98,7 +98,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -143,7 +143,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -156,10 +156,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok @@ -173,12 +173,6 @@ 1 - - textCategoryName - comboSavePath - comboUseDownloadPath - comboDownloadPath - diff --git a/src/gui/torrentcontentmodel.cpp b/src/gui/torrentcontentmodel.cpp index 61c43cebc6a2..e75fc1856e3d 100644 --- a/src/gui/torrentcontentmodel.cpp +++ b/src/gui/torrentcontentmodel.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022-2023 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2006-2012 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -34,20 +34,17 @@ #include #include #include +#include #include #include +#include -#if defined(Q_OS_WIN) -#include -#include -#else -#include -#include -#endif - -#if defined Q_OS_WIN || defined Q_OS_MACOS +#if defined(Q_OS_MACOS) #define QBT_PIXMAP_CACHE_FOR_FILE_ICONS #include +#elif !defined(Q_OS_WIN) +#include +#include #endif #include "base/bittorrent/downloadpriority.h" @@ -116,27 +113,8 @@ namespace }; #endif // QBT_PIXMAP_CACHE_FOR_FILE_ICONS -#if defined(Q_OS_WIN) - // See QTBUG-25319 for explanation why this is required - class WinShellFileIconProvider final : public CachingFileIconProvider - { - QPixmap pixmapForExtension(const QString &ext) const override - { - const std::wstring extWStr = QString(u'.' + ext).toStdWString(); - - SHFILEINFOW sfi {}; - const HRESULT hr = ::SHGetFileInfoW(extWStr.c_str(), - FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(sfi), (SHGFI_ICON | SHGFI_USEFILEATTRIBUTES)); - if (FAILED(hr)) - return {}; - - const auto iconPixmap = QPixmap::fromImage(QImage::fromHICON(sfi.hIcon)); - ::DestroyIcon(sfi.hIcon); - return iconPixmap; - } - }; -#elif defined(Q_OS_MACOS) - // There is a similar bug on macOS, to be reported to Qt +#if defined(Q_OS_MACOS) + // There is a bug on macOS, to be reported to Qt // https://github.com/qbittorrent/qBittorrent/pull/6156#issuecomment-316302615 class MacFileIconProvider final : public CachingFileIconProvider { @@ -145,7 +123,7 @@ namespace return MacUtils::pixmapForExtension(ext, QSize(32, 32)); } }; -#else +#elif !defined(Q_OS_WIN) /** * @brief Tests whether QFileIconProvider actually works * @@ -187,9 +165,9 @@ namespace TorrentContentModel::TorrentContentModel(QObject *parent) : QAbstractItemModel(parent) - , m_rootItem(new TorrentContentModelFolder(QVector({ tr("Name"), tr("Total Size"), tr("Progress"), tr("Download Priority"), tr("Remaining"), tr("Availability") }))) + , m_rootItem(new TorrentContentModelFolder(QList({ tr("Name"), tr("Total Size"), tr("Progress"), tr("Download Priority"), tr("Remaining"), tr("Availability") }))) #if defined(Q_OS_WIN) - , m_fileIconProvider {new WinShellFileIconProvider} + , m_fileIconProvider {new QFileIconProvider} #elif defined(Q_OS_MACOS) , m_fileIconProvider {new MacFileIconProvider} #else @@ -209,7 +187,7 @@ void TorrentContentModel::updateFilesProgress() { Q_ASSERT(m_contentHandler && m_contentHandler->hasMetadata()); - const QVector &filesProgress = m_contentHandler->filesProgress(); + const QList &filesProgress = m_contentHandler->filesProgress(); Q_ASSERT(m_filesIndex.size() == filesProgress.size()); // XXX: Why is this necessary? if (m_filesIndex.size() != filesProgress.size()) [[unlikely]] @@ -226,7 +204,7 @@ void TorrentContentModel::updateFilesPriorities() { Q_ASSERT(m_contentHandler && m_contentHandler->hasMetadata()); - const QVector fprio = m_contentHandler->filePriorities(); + const QList fprio = m_contentHandler->filePriorities(); Q_ASSERT(m_filesIndex.size() == fprio.size()); // XXX: Why is this necessary? if (m_filesIndex.size() != fprio.size()) @@ -241,7 +219,7 @@ void TorrentContentModel::updateFilesAvailability() Q_ASSERT(m_contentHandler && m_contentHandler->hasMetadata()); using HandlerPtr = QPointer; - m_contentHandler->fetchAvailableFileFractions([this, handler = HandlerPtr(m_contentHandler)](const QVector &availableFileFractions) + m_contentHandler->fetchAvailableFileFractions([this, handler = HandlerPtr(m_contentHandler)](const QList &availableFileFractions) { if (handler != m_contentHandler) return; @@ -274,7 +252,7 @@ bool TorrentContentModel::setItemPriority(const QModelIndex &index, BitTorrent:: m_rootItem->recalculateProgress(); m_rootItem->recalculateAvailability(); - const QVector columns = + const QList columns = { {TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME}, {TorrentContentModelItem::COL_PRIO, TorrentContentModelItem::COL_PRIO} @@ -284,9 +262,9 @@ bool TorrentContentModel::setItemPriority(const QModelIndex &index, BitTorrent:: return true; } -QVector TorrentContentModel::getFilePriorities() const +QList TorrentContentModel::getFilePriorities() const { - QVector prio; + QList prio; prio.reserve(m_filesIndex.size()); for (const TorrentContentModelFile *file : asConst(m_filesIndex)) prio.push_back(file->priority()); @@ -422,7 +400,9 @@ QVariant TorrentContentModel::data(const QModelIndex &index, const int role) con const bool hasIgnored = std::any_of(childItems.cbegin(), childItems.cend() , [](const TorrentContentModelItem *childItem) { - return (childItem->priority() == BitTorrent::DownloadPriority::Ignored); + const auto prio = childItem->priority(); + return ((prio == BitTorrent::DownloadPriority::Ignored) + || (prio == BitTorrent::DownloadPriority::Mixed)); }); return hasIgnored ? Qt::PartiallyChecked : Qt::Checked; @@ -458,7 +438,7 @@ Qt::ItemFlags TorrentContentModel::flags(const QModelIndex &index) const if (!index.isValid()) return Qt::NoItemFlags; - Qt::ItemFlags flags {Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable}; + Qt::ItemFlags flags {Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable}; if (itemType(index) == TorrentContentModelItem::FolderType) flags |= Qt::ItemIsAutoTristate; if (index.column() == TorrentContentModelItem::COL_PRIO) @@ -539,6 +519,47 @@ int TorrentContentModel::rowCount(const QModelIndex &parent) const return parentItem ? parentItem->childCount() : 0; } +QMimeData *TorrentContentModel::mimeData(const QModelIndexList &indexes) const +{ + if (indexes.isEmpty()) + return nullptr; + + const Path storagePath = contentHandler()->actualStorageLocation(); + + QList paths; + paths.reserve(indexes.size()); + + for (const QModelIndex &index : indexes) + { + if (!index.isValid()) + continue; + if (index.column() != TorrentContentModelItem::COL_NAME) + continue; + + if (itemType(index) == TorrentContentModelItem::FileType) + { + const int idx = getFileIndex(index); + const Path fullPath = storagePath / contentHandler()->actualFilePath(idx); + paths.append(QUrl::fromLocalFile(fullPath.data())); + } + else // folder type + { + const Path fullPath = storagePath / getItemPath(index); + paths.append(QUrl::fromLocalFile(fullPath.data())); + } + } + + auto *mimeData = new QMimeData; // lifetime will be handled by Qt + mimeData->setUrls(paths); + + return mimeData; +} + +QStringList TorrentContentModel::mimeTypes() const +{ + return {u"text/uri-list"_s}; +} + void TorrentContentModel::populate() { Q_ASSERT(m_contentHandler && m_contentHandler->hasMetadata()); @@ -547,7 +568,7 @@ void TorrentContentModel::populate() m_filesIndex.reserve(filesCount); QHash> folderMap; - QVector lastParentPath; + QList lastParentPath; TorrentContentModelFolder *lastParent = m_rootItem; // Iterate over files for (int i = 0; i < filesCount; ++i) @@ -626,7 +647,7 @@ void TorrentContentModel::refresh() updateFilesPriorities(); updateFilesAvailability(); - const QVector columns = + const QList columns = { {TorrentContentModelItem::COL_NAME, TorrentContentModelItem::COL_NAME}, {TorrentContentModelItem::COL_PROGRESS, TorrentContentModelItem::COL_PROGRESS}, @@ -643,7 +664,7 @@ void TorrentContentModel::refresh() } } -void TorrentContentModel::notifySubtreeUpdated(const QModelIndex &index, const QVector &columns) +void TorrentContentModel::notifySubtreeUpdated(const QModelIndex &index, const QList &columns) { // For best performance, `columns` entries should be arranged from left to right @@ -663,7 +684,7 @@ void TorrentContentModel::notifySubtreeUpdated(const QModelIndex &index, const Q } // propagate down the model - QVector parentIndexes; + QList parentIndexes; if (hasChildren(index)) parentIndexes.push_back(index); diff --git a/src/gui/torrentcontentmodel.h b/src/gui/torrentcontentmodel.h index d1857745323e..b1b33105256f 100644 --- a/src/gui/torrentcontentmodel.h +++ b/src/gui/torrentcontentmodel.h @@ -30,13 +30,14 @@ #pragma once #include -#include +#include #include "base/indexrange.h" #include "base/pathfwd.h" #include "torrentcontentmodelitem.h" class QFileIconProvider; +class QMimeData; class QModelIndex; class QVariant; @@ -66,7 +67,7 @@ class TorrentContentModel final : public QAbstractItemModel void refresh(); - QVector getFilePriorities() const; + QList getFilePriorities() const; TorrentContentModelItem::ItemType itemType(const QModelIndex &index) const; int getFileIndex(const QModelIndex &index) const; Path getItemPath(const QModelIndex &index) const; @@ -86,15 +87,17 @@ class TorrentContentModel final : public QAbstractItemModel private: using ColumnInterval = IndexInterval; + QMimeData *mimeData(const QModelIndexList &indexes) const override; + QStringList mimeTypes() const override; void populate(); void updateFilesProgress(); void updateFilesPriorities(); void updateFilesAvailability(); bool setItemPriority(const QModelIndex &index, BitTorrent::DownloadPriority priority); - void notifySubtreeUpdated(const QModelIndex &index, const QVector &columns); + void notifySubtreeUpdated(const QModelIndex &index, const QList &columns); BitTorrent::TorrentContentHandler *m_contentHandler = nullptr; TorrentContentModelFolder *m_rootItem = nullptr; - QVector m_filesIndex; + QList m_filesIndex; QFileIconProvider *m_fileIconProvider = nullptr; }; diff --git a/src/gui/torrentcontentmodelfolder.cpp b/src/gui/torrentcontentmodelfolder.cpp index abece9c9ba67..baaa098aa6db 100644 --- a/src/gui/torrentcontentmodelfolder.cpp +++ b/src/gui/torrentcontentmodelfolder.cpp @@ -39,7 +39,7 @@ TorrentContentModelFolder::TorrentContentModelFolder(const QString &name, Torren m_name = name; } -TorrentContentModelFolder::TorrentContentModelFolder(const QVector &data) +TorrentContentModelFolder::TorrentContentModelFolder(const QList &data) : TorrentContentModelItem(nullptr) { Q_ASSERT(data.size() == NB_COL); @@ -63,7 +63,7 @@ void TorrentContentModelFolder::deleteAllChildren() m_childItems.clear(); } -const QVector &TorrentContentModelFolder::children() const +const QList &TorrentContentModelFolder::children() const { return m_childItems; } @@ -97,7 +97,7 @@ void TorrentContentModelFolder::updatePriority() // If all children have the same priority // then the folder should have the same // priority - const BitTorrent::DownloadPriority prio = m_childItems.first()->priority(); + const BitTorrent::DownloadPriority prio = m_childItems.constFirst()->priority(); for (int i = 1; i < m_childItems.size(); ++i) { if (m_childItems.at(i)->priority() != prio) @@ -147,10 +147,19 @@ void TorrentContentModelFolder::recalculateProgress() tRemaining += child->remaining(); } - if (!isRootItem() && (tSize > 0)) + if (!isRootItem()) { - m_progress = tProgress / tSize; - m_remaining = tRemaining; + if (tSize > 0) + { + m_progress = tProgress / tSize; + m_remaining = tRemaining; + } + else + { + m_progress = 1.0; + m_remaining = 0; + } + Q_ASSERT(m_progress <= 1.); } } diff --git a/src/gui/torrentcontentmodelfolder.h b/src/gui/torrentcontentmodelfolder.h index c82c1008e90e..7e3fdfc2b873 100644 --- a/src/gui/torrentcontentmodelfolder.h +++ b/src/gui/torrentcontentmodelfolder.h @@ -42,7 +42,7 @@ class TorrentContentModelFolder final : public TorrentContentModelItem TorrentContentModelFolder(const QString &name, TorrentContentModelFolder *parent); // Invisible root item constructor - explicit TorrentContentModelFolder(const QVector &data); + explicit TorrentContentModelFolder(const QList &data); ~TorrentContentModelFolder() override; @@ -56,11 +56,11 @@ class TorrentContentModelFolder final : public TorrentContentModelItem void setPriority(BitTorrent::DownloadPriority newPriority, bool updateParent = true) override; void deleteAllChildren(); - const QVector &children() const; + const QList &children() const; void appendChild(TorrentContentModelItem *item); TorrentContentModelItem *child(int row) const; int childCount() const; private: - QVector m_childItems; + QList m_childItems; }; diff --git a/src/gui/torrentcontentmodelitem.cpp b/src/gui/torrentcontentmodelitem.cpp index d226d0852cbf..ee5245c9624f 100644 --- a/src/gui/torrentcontentmodelitem.cpp +++ b/src/gui/torrentcontentmodelitem.cpp @@ -140,9 +140,11 @@ QString TorrentContentModelItem::displayData(const int column) const return (value + u'%'); } default: - Q_ASSERT(false); - return {}; + Q_UNREACHABLE(); + break; } + + return {}; } QVariant TorrentContentModelItem::underlyingData(const int column) const @@ -165,9 +167,11 @@ QVariant TorrentContentModelItem::underlyingData(const int column) const case COL_AVAILABILITY: return availability(); default: - Q_ASSERT(false); - return {}; + Q_UNREACHABLE(); + break; } + + return {}; } int TorrentContentModelItem::row() const diff --git a/src/gui/torrentcontentmodelitem.h b/src/gui/torrentcontentmodelitem.h index 27a33a4ada89..e644f047e993 100644 --- a/src/gui/torrentcontentmodelitem.h +++ b/src/gui/torrentcontentmodelitem.h @@ -29,7 +29,7 @@ #pragma once #include -#include +#include #include "base/bittorrent/downloadpriority.h" @@ -86,7 +86,7 @@ class TorrentContentModelItem protected: TorrentContentModelFolder *m_parentItem = nullptr; // Root item members - QVector m_itemData; + QList m_itemData; // Non-root item members QString m_name; qulonglong m_size = 0; diff --git a/src/gui/torrentcontentwidget.cpp b/src/gui/torrentcontentwidget.cpp index 1b3817408e1f..472537bf2ca5 100644 --- a/src/gui/torrentcontentwidget.cpp +++ b/src/gui/torrentcontentwidget.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2014 Ivan Sorokin * * This program is free software; you can redistribute it and/or @@ -37,7 +37,6 @@ #include #include #include -#include #include #include "base/bittorrent/torrentcontenthandler.h" @@ -56,9 +55,24 @@ #include "gui/macutilities.h" #endif +namespace +{ + QList toPersistentIndexes(const QModelIndexList &indexes) + { + QList persistentIndexes; + persistentIndexes.reserve(indexes.size()); + for (const QModelIndex &index : indexes) + persistentIndexes.emplaceBack(index); + + return persistentIndexes; + } +} + TorrentContentWidget::TorrentContentWidget(QWidget *parent) : QTreeView(parent) { + setDragEnabled(true); + setDragDropMode(QAbstractItemView::DragOnly); setExpandsOnDoubleClick(false); setSortingEnabled(true); setUniformRowHeights(true); @@ -173,10 +187,20 @@ Path TorrentContentWidget::getItemPath(const QModelIndex &index) const return path; } -void TorrentContentWidget::setFilterPattern(const QString &patternText) +void TorrentContentWidget::setFilterPattern(const QString &patternText, const FilterPatternFormat format) { - const QString pattern = Utils::String::wildcardToRegexPattern(patternText); - m_filterModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption)); + if (format == FilterPatternFormat::PlainText) + { + m_filterModel->setFilterFixedString(patternText); + m_filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + } + else + { + const QString pattern = ((format == FilterPatternFormat::Regex) + ? patternText : Utils::String::wildcardToRegexPattern(patternText)); + m_filterModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption)); + } + if (patternText.isEmpty()) { collapseAll(); @@ -219,9 +243,9 @@ void TorrentContentWidget::keyPressEvent(QKeyEvent *event) const Qt::CheckState state = (static_cast(value.toInt()) == Qt::Checked) ? Qt::Unchecked : Qt::Checked; - const QModelIndexList selection = selectionModel()->selectedRows(TorrentContentModelItem::COL_NAME); + const QList selection = toPersistentIndexes(selectionModel()->selectedRows(TorrentContentModelItem::COL_NAME)); - for (const QModelIndex &index : selection) + for (const QPersistentModelIndex &index : selection) model()->setData(index, state, Qt::CheckStateRole); } @@ -248,10 +272,10 @@ void TorrentContentWidget::renameSelectedFile() void TorrentContentWidget::applyPriorities(const BitTorrent::DownloadPriority priority) { - const QModelIndexList selectedRows = selectionModel()->selectedRows(0); - for (const QModelIndex &index : selectedRows) + const QList selectedRows = toPersistentIndexes(selectionModel()->selectedRows(Priority)); + for (const QPersistentModelIndex &index : selectedRows) { - model()->setData(index.sibling(index.row(), Priority), static_cast(priority)); + model()->setData(index, static_cast(priority)); } } @@ -261,7 +285,7 @@ void TorrentContentWidget::applyPrioritiesByOrder() // a download priority that will apply to each item. The number of groups depends on how // many "download priority" are available to be assigned - const QModelIndexList selectedRows = selectionModel()->selectedRows(0); + const QList selectedRows = toPersistentIndexes(selectionModel()->selectedRows(Priority)); const qsizetype priorityGroups = 3; const auto priorityGroupSize = std::max((selectedRows.length() / priorityGroups), 1); @@ -283,8 +307,8 @@ void TorrentContentWidget::applyPrioritiesByOrder() break; } - const QModelIndex &index = selectedRows[i]; - model()->setData(index.sibling(index.row(), Priority), static_cast(priority)); + const QPersistentModelIndex &index = selectedRows[i]; + model()->setData(index, static_cast(priority)); } } diff --git a/src/gui/torrentcontentwidget.h b/src/gui/torrentcontentwidget.h index 4baccb8831e1..1e9f0835cdd6 100644 --- a/src/gui/torrentcontentwidget.h +++ b/src/gui/torrentcontentwidget.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2022 Vladimir Golovnev + * Copyright (C) 2022-2024 Vladimir Golovnev * Copyright (C) 2014 Ivan Sorokin * * This program is free software; you can redistribute it and/or @@ -33,6 +33,7 @@ #include "base/bittorrent/downloadpriority.h" #include "base/pathfwd.h" +#include "filterpatternformat.h" class QShortcut; @@ -92,7 +93,7 @@ class TorrentContentWidget final : public QTreeView int getFileIndex(const QModelIndex &index) const; Path getItemPath(const QModelIndex &index) const; - void setFilterPattern(const QString &patternText); + void setFilterPattern(const QString &patternText, FilterPatternFormat format = FilterPatternFormat::Wildcards); void checkAll(); void checkNone(); diff --git a/src/gui/torrentcreatordialog.cpp b/src/gui/torrentcreatordialog.cpp index 27dda0be0d90..71405ca8e331 100644 --- a/src/gui/torrentcreatordialog.cpp +++ b/src/gui/torrentcreatordialog.cpp @@ -1,5 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa * Copyright (C) 2017 Mike Tzou (Chocobo1) * Copyright (C) 2010 Christophe Dumez * @@ -82,11 +84,7 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const Path &defaultP m_ui->setupUi(this); m_ui->comboPieceSize->addItem(tr("Auto"), 0); -#ifdef QBT_USES_LIBTORRENT2 - for (int i = 4; i <= 18; ++i) -#else for (int i = 4; i <= 17; ++i) -#endif { const int size = 1024 << i; const QString displaySize = Utils::Misc::friendlyUnit(size, false, 0); @@ -107,6 +105,7 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const Path &defaultP updateInputPath(defaultPath); m_threadPool.setMaxThreadCount(1); + m_threadPool.setObjectName("TorrentCreatorDialog m_threadPool"); #ifdef QBT_USES_LIBTORRENT2 m_ui->checkOptimizeAlignment->hide(); @@ -227,27 +226,27 @@ void TorrentCreatorDialog::onCreateButtonClicked() .replace(QRegularExpression(u"\n\n[\n]+"_s), u"\n\n"_s).split(u'\n'); const BitTorrent::TorrentCreatorParams params { - m_ui->checkPrivate->isChecked() + .isPrivate = m_ui->checkPrivate->isChecked(), #ifdef QBT_USES_LIBTORRENT2 - , getTorrentFormat() + .torrentFormat = getTorrentFormat(), #else - , m_ui->checkOptimizeAlignment->isChecked() - , getPaddedFileSizeLimit() + .isAlignmentOptimized = m_ui->checkOptimizeAlignment->isChecked(), + .paddedFileSizeLimit = getPaddedFileSizeLimit(), #endif - , getPieceSize() - , inputPath - , destPath - , m_ui->txtComment->toPlainText() - , m_ui->lineEditSource->text() - , trackers - , m_ui->URLSeedsList->toPlainText().split(u'\n', Qt::SkipEmptyParts) + .pieceSize = getPieceSize(), + .sourcePath = inputPath, + .torrentFilePath = destPath, + .comment = m_ui->txtComment->toPlainText(), + .source = m_ui->lineEditSource->text(), + .trackers = trackers, + .urlSeeds = m_ui->URLSeedsList->toPlainText().split(u'\n', Qt::SkipEmptyParts) }; auto *torrentCreator = new BitTorrent::TorrentCreator(params); connect(this, &QDialog::rejected, torrentCreator, &BitTorrent::TorrentCreator::requestInterruption); connect(torrentCreator, &BitTorrent::TorrentCreator::creationSuccess, this, &TorrentCreatorDialog::handleCreationSuccess); connect(torrentCreator, &BitTorrent::TorrentCreator::creationFailure, this, &TorrentCreatorDialog::handleCreationFailure); - connect(torrentCreator, &BitTorrent::TorrentCreator::updateProgress, this, &TorrentCreatorDialog::updateProgressBar); + connect(torrentCreator, &BitTorrent::TorrentCreator::progressUpdated, this, &TorrentCreatorDialog::updateProgressBar); // run the torrentCreator in a thread m_threadPool.start(torrentCreator); @@ -257,40 +256,40 @@ void TorrentCreatorDialog::handleCreationFailure(const QString &msg) { // Remove busy cursor setCursor(QCursor(Qt::ArrowCursor)); - QMessageBox::information(this, tr("Torrent creation failed"), tr("Reason: %1").arg(msg)); + QMessageBox::information(this, tr("Torrent creation failed"), msg); setInteractionEnabled(true); } -void TorrentCreatorDialog::handleCreationSuccess(const Path &path, const Path &branchPath) +void TorrentCreatorDialog::handleCreationSuccess(const BitTorrent::TorrentCreatorResult &result) { setCursor(QCursor(Qt::ArrowCursor)); setInteractionEnabled(true); QMessageBox::information(this, tr("Torrent creator") - , u"%1\n%2"_s.arg(tr("Torrent created:"), path.toString())); + , u"%1\n%2"_s.arg(tr("Torrent created:"), result.torrentFilePath.toString())); if (m_ui->checkStartSeeding->isChecked()) { - const auto loadResult = BitTorrent::TorrentDescriptor::loadFromFile(path); - if (!loadResult) + if (const auto loadResult = BitTorrent::TorrentDescriptor::loadFromFile(result.torrentFilePath)) { - const QString message = tr("Add torrent to transfer list failed.") + u'\n' + tr("Reason: \"%1\"").arg(loadResult.error()); - QMessageBox::critical(this, tr("Add torrent failed"), message); - return; + BitTorrent::AddTorrentParams params; + params.savePath = result.savePath; + params.skipChecking = true; + if (m_ui->checkIgnoreShareLimits->isChecked()) + { + params.ratioLimit = BitTorrent::Torrent::NO_RATIO_LIMIT; + params.seedingTimeLimit = BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT; + params.inactiveSeedingTimeLimit = BitTorrent::Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT; + } + params.useAutoTMM = false; // otherwise if it is on by default, it will overwrite `savePath` to the default save path + + BitTorrent::Session::instance()->addTorrent(loadResult.value(), params); } - - BitTorrent::AddTorrentParams params; - params.savePath = branchPath; - params.skipChecking = true; - if (m_ui->checkIgnoreShareLimits->isChecked()) + else { - params.ratioLimit = BitTorrent::Torrent::NO_RATIO_LIMIT; - params.seedingTimeLimit = BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT; - params.inactiveSeedingTimeLimit = BitTorrent::Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT; + const QString message = tr("Add torrent to transfer list failed.") + u'\n' + tr("Reason: \"%1\"").arg(loadResult.error()); + QMessageBox::critical(this, tr("Add torrent failed"), message); } - params.useAutoTMM = false; // otherwise if it is on by default, it will overwrite `savePath` to the default save path - - BitTorrent::Session::instance()->addTorrent(loadResult.value(), params); } } diff --git a/src/gui/torrentcreatordialog.h b/src/gui/torrentcreatordialog.h index addda955d832..28397818468b 100644 --- a/src/gui/torrentcreatordialog.h +++ b/src/gui/torrentcreatordialog.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Radu Carpa * Copyright (C) 2017 Mike Tzou (Chocobo1) * Copyright (C) 2010 Christophe Dumez * @@ -58,7 +59,7 @@ private slots: void onAddFileButtonClicked(); void onAddFolderButtonClicked(); void handleCreationFailure(const QString &msg); - void handleCreationSuccess(const Path &path, const Path &branchPath); + void handleCreationSuccess(const BitTorrent::TorrentCreatorResult &result); private: void dropEvent(QDropEvent *event) override; diff --git a/src/gui/torrentcreatordialog.ui b/src/gui/torrentcreatordialog.ui index d25d58a51c17..6a3eb33be6e7 100644 --- a/src/gui/torrentcreatordialog.ui +++ b/src/gui/torrentcreatordialog.ui @@ -20,7 +20,7 @@ - QFrame::NoFrame + QFrame::Shape::NoFrame true @@ -66,7 +66,7 @@ - + false @@ -91,7 +91,7 @@ [Drag and drop area] - Qt::AlignCenter + Qt::AlignmentFlag::AlignCenter @@ -164,7 +164,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -213,7 +213,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -289,7 +289,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -313,11 +313,21 @@ Fields + + + + Tracker URLs: + + + You can separate tracker tiers / groups with an empty line. + + true + false @@ -332,25 +342,14 @@ - - false + + true - - - - false - - - - Tracker URLs: - - - @@ -358,6 +357,16 @@ + + + + true + + + false + + + @@ -396,7 +405,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok true @@ -413,19 +422,6 @@ 1 - - textInputPath - addFileButton - addFolderButton - comboPieceSize - checkPrivate - checkStartSeeding - checkIgnoreShareLimits - checkOptimizeAlignment - trackersList - URLSeedsList - txtComment - diff --git a/src/gui/torrentoptionsdialog.cpp b/src/gui/torrentoptionsdialog.cpp index 611f1c7103a9..85b72ea7ce25 100644 --- a/src/gui/torrentoptionsdialog.cpp +++ b/src/gui/torrentoptionsdialog.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2020 thalieht * Copyright (C) 2011 Christian Kandeler * Copyright (C) 2011 Christophe Dumez @@ -49,8 +50,6 @@ namespace { - const int MIXED_SHARE_LIMITS = -9; - void updateSliderValue(QSlider *slider, const int value) { if (value > slider->maximum()) @@ -59,7 +58,7 @@ namespace } } -TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector &torrents) +TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QList &torrents) : QDialog {parent} , m_ui {new Ui::TorrentOptionsDialog} , m_storeDialogSize {SETTINGS_KEY(u"Size"_s)} @@ -83,6 +82,7 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVectorratioLimit(); const int firstTorrentSeedingTime = torrents[0]->seedingTimeLimit(); const int firstTorrentInactiveSeedingTime = torrents[0]->inactiveSeedingTimeLimit(); + const BitTorrent::ShareLimitAction firstTorrentShareLimitAction = torrents[0]->shareLimitAction(); const bool isFirstTorrentDHTDisabled = torrents[0]->isDHTDisabled(); const bool isFirstTorrentPEXDisabled = torrents[0]->isPEXDisabled(); @@ -161,6 +162,11 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVectorinactiveSeedingTimeLimit() != firstTorrentInactiveSeedingTime) allSameInactiveSeedingTime = false; } + if (allSameShareLimitAction) + { + if (torrent->shareLimitAction() != firstTorrentShareLimitAction) + allSameShareLimitAction = false; + } if (allTorrentsArePrivate) { if (!torrent->isPrivate()) @@ -283,46 +289,15 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVectorradioUseGlobalShareLimits->setChecked(false); - m_ui->radioNoLimit->setChecked(false); - m_ui->radioTorrentLimit->setChecked(false); - } - else if (useGlobalValue) - { - m_ui->radioUseGlobalShareLimits->setChecked(true); - } - else if ((firstTorrentRatio == BitTorrent::Torrent::NO_RATIO_LIMIT) - && (firstTorrentSeedingTime == BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT) - && (firstTorrentInactiveSeedingTime == BitTorrent::Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT)) - { - m_ui->radioNoLimit->setChecked(true); - } - else - { - m_ui->radioTorrentLimit->setChecked(true); - if (firstTorrentRatio >= 0) - m_ui->checkMaxRatio->setChecked(true); - if (firstTorrentSeedingTime >= 0) - m_ui->checkMaxTime->setChecked(true); - if (firstTorrentInactiveSeedingTime >= 0) - m_ui->checkMaxInactiveTime->setChecked(true); - } - - const qreal maxRatio = (allSameRatio && (firstTorrentRatio >= 0)) - ? firstTorrentRatio : session->globalMaxRatio(); - const int maxSeedingTime = (allSameSeedingTime && (firstTorrentSeedingTime >= 0)) - ? firstTorrentSeedingTime : session->globalMaxSeedingMinutes(); - const int maxInactiveSeedingTime = (allSameInactiveSeedingTime && (firstTorrentInactiveSeedingTime >= 0)) - ? firstTorrentInactiveSeedingTime : session->globalMaxInactiveSeedingMinutes(); - m_ui->spinRatioLimit->setValue(maxRatio); - m_ui->spinTimeLimit->setValue(maxSeedingTime); - m_ui->spinInactiveTimeLimit->setValue(maxInactiveSeedingTime); + m_ui->torrentShareLimitsWidget->setDefaultLimits(session->globalMaxRatio(), session->globalMaxSeedingMinutes(), session->globalMaxInactiveSeedingMinutes()); + if (allSameRatio) + m_ui->torrentShareLimitsWidget->setRatioLimit(firstTorrentRatio); + if (allSameSeedingTime) + m_ui->torrentShareLimitsWidget->setSeedingTimeLimit(firstTorrentSeedingTime); + if (allSameInactiveSeedingTime) + m_ui->torrentShareLimitsWidget->setInactiveSeedingTimeLimit(firstTorrentInactiveSeedingTime); + if (allSameShareLimitAction) + m_ui->torrentShareLimitsWidget->setShareLimitAction(firstTorrentShareLimitAction); if (!allTorrentsArePrivate) { @@ -368,27 +343,27 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVectorsavePath->selectedPath(), - m_ui->downloadPath->selectedPath(), - m_ui->comboCategory->currentText(), - getRatio(), - getSeedingTime(), - getInactiveSeedingTime(), - m_ui->spinUploadLimit->value(), - m_ui->spinDownloadLimit->value(), - m_ui->checkAutoTMM->checkState(), - m_ui->checkUseDownloadPath->checkState(), - m_ui->checkDisableDHT->checkState(), - m_ui->checkDisablePEX->checkState(), - m_ui->checkDisableLSD->checkState(), - m_ui->checkSequential->checkState(), - m_ui->checkFirstLastPieces->checkState() + .savePath = m_ui->savePath->selectedPath(), + .downloadPath = m_ui->downloadPath->selectedPath(), + .category = m_ui->comboCategory->currentText(), + .ratio = m_ui->torrentShareLimitsWidget->ratioLimit(), + .seedingTime = m_ui->torrentShareLimitsWidget->seedingTimeLimit(), + .inactiveSeedingTime = m_ui->torrentShareLimitsWidget->inactiveSeedingTimeLimit(), + .shareLimitAction = m_ui->torrentShareLimitsWidget->shareLimitAction(), + .upSpeedLimit = m_ui->spinUploadLimit->value(), + .downSpeedLimit = m_ui->spinDownloadLimit->value(), + .autoTMM = m_ui->checkAutoTMM->checkState(), + .useDownloadPath = m_ui->checkUseDownloadPath->checkState(), + .disableDHT = m_ui->checkDisableDHT->checkState(), + .disablePEX = m_ui->checkDisablePEX->checkState(), + .disableLSD = m_ui->checkDisableLSD->checkState(), + .sequential = m_ui->checkSequential->checkState(), + .firstLastPieces = m_ui->checkFirstLastPieces->checkState() }; // Needs to be called after the initial values struct is initialized handleTMMChanged(); handleUseDownloadPathChanged(); - handleRatioTypeChanged(); connect(m_ui->checkAutoTMM, &QCheckBox::clicked, this, &TorrentOptionsDialog::handleTMMChanged); connect(m_ui->checkUseDownloadPath, &QCheckBox::clicked, this, &TorrentOptionsDialog::handleUseDownloadPathChanged); @@ -402,12 +377,6 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVectorspinDownloadLimit, qOverload(&QSpinBox::valueChanged) , this, [this](const int value) { updateSliderValue(m_ui->sliderDownloadLimit, value); }); - connect(m_ui->checkMaxRatio, &QCheckBox::toggled, m_ui->spinRatioLimit, &QWidget::setEnabled); - connect(m_ui->checkMaxTime, &QCheckBox::toggled, m_ui->spinTimeLimit, &QWidget::setEnabled); - connect(m_ui->checkMaxInactiveTime, &QCheckBox::toggled, m_ui->spinInactiveTimeLimit, &QSpinBox::setEnabled); - - connect(m_ui->buttonGroup, &QButtonGroup::idClicked, this, &TorrentOptionsDialog::handleRatioTypeChanged); - if (const QSize dialogSize = m_storeDialogSize; dialogSize.isValid()) resize(dialogSize); } @@ -420,13 +389,6 @@ TorrentOptionsDialog::~TorrentOptionsDialog() void TorrentOptionsDialog::accept() { - if (m_ui->radioTorrentLimit->isChecked() && !m_ui->checkMaxRatio->isChecked() - && !m_ui->checkMaxTime->isChecked() && !m_ui->checkMaxInactiveTime->isChecked()) - { - QMessageBox::critical(this, tr("No share limit method selected"), tr("Please select a limit method first")); - return; - } - auto *session = BitTorrent::Session::instance(); for (const BitTorrent::TorrentID &id : asConst(m_torrentIDs)) { @@ -470,17 +432,29 @@ void TorrentOptionsDialog::accept() if (m_initialValues.downSpeedLimit != m_ui->spinDownloadLimit->value()) torrent->setDownloadLimit(m_ui->spinDownloadLimit->value() * 1024); - const qreal ratioLimit = getRatio(); - if (m_initialValues.ratio != ratioLimit) - torrent->setRatioLimit(ratioLimit); + if (const std::optional ratioLimit = m_ui->torrentShareLimitsWidget->ratioLimit(); + m_initialValues.ratio != ratioLimit) + { + torrent->setRatioLimit(ratioLimit.value()); + } + + if (const std::optional seedingTimeLimit = m_ui->torrentShareLimitsWidget->seedingTimeLimit(); + m_initialValues.seedingTime != seedingTimeLimit) + { + torrent->setSeedingTimeLimit(seedingTimeLimit.value()); + } - const int seedingTimeLimit = getSeedingTime(); - if (m_initialValues.seedingTime != seedingTimeLimit) - torrent->setSeedingTimeLimit(seedingTimeLimit); + if (const std::optional inactiveSeedingTimeLimit = m_ui->torrentShareLimitsWidget->inactiveSeedingTimeLimit(); + m_initialValues.inactiveSeedingTime != inactiveSeedingTimeLimit) + { + torrent->setInactiveSeedingTimeLimit(inactiveSeedingTimeLimit.value()); + } - const int inactiveSeedingTimeLimit = getInactiveSeedingTime(); - if (m_initialValues.inactiveSeedingTime != inactiveSeedingTimeLimit) - torrent->setInactiveSeedingTimeLimit(inactiveSeedingTimeLimit); + if (const std::optional shareLimitAction = m_ui->torrentShareLimitsWidget->shareLimitAction(); + m_initialValues.shareLimitAction != shareLimitAction) + { + torrent->setShareLimitAction(shareLimitAction.value()); + } if (!torrent->isPrivate()) { @@ -501,48 +475,6 @@ void TorrentOptionsDialog::accept() QDialog::accept(); } -qreal TorrentOptionsDialog::getRatio() const -{ - if (m_ui->buttonGroup->checkedId() == -1) // No radio button is selected - return MIXED_SHARE_LIMITS; - - if (m_ui->radioUseGlobalShareLimits->isChecked()) - return BitTorrent::Torrent::USE_GLOBAL_RATIO; - - if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxRatio->isChecked()) - return BitTorrent::Torrent::NO_RATIO_LIMIT; - - return m_ui->spinRatioLimit->value(); -} - -int TorrentOptionsDialog::getSeedingTime() const -{ - if (m_ui->buttonGroup->checkedId() == -1) // No radio button is selected - return MIXED_SHARE_LIMITS; - - if (m_ui->radioUseGlobalShareLimits->isChecked()) - return BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME; - - if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxTime->isChecked()) - return BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT; - - return m_ui->spinTimeLimit->value(); -} - -int TorrentOptionsDialog::getInactiveSeedingTime() const -{ - if (m_ui->buttonGroup->checkedId() == -1) // No radio button is selected - return MIXED_SHARE_LIMITS; - - if (m_ui->radioUseGlobalShareLimits->isChecked()) - return BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME; - - if (m_ui->radioNoLimit->isChecked() || !m_ui->checkMaxInactiveTime->isChecked()) - return BitTorrent::Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT; - - return m_ui->spinInactiveTimeLimit->value(); -} - void TorrentOptionsDialog::handleCategoryChanged([[maybe_unused]] const int index) { if (m_ui->checkAutoTMM->checkState() == Qt::Checked) @@ -618,31 +550,6 @@ void TorrentOptionsDialog::handleUseDownloadPathChanged() m_ui->downloadPath->setSelectedPath(BitTorrent::Session::instance()->downloadPath()); } -void TorrentOptionsDialog::handleRatioTypeChanged() -{ - if ((m_initialValues.ratio == MIXED_SHARE_LIMITS) || (m_initialValues.seedingTime == MIXED_SHARE_LIMITS) - || (m_initialValues.inactiveSeedingTime == MIXED_SHARE_LIMITS)) - { - QAbstractButton *currentRadio = m_ui->buttonGroup->checkedButton(); - if (currentRadio && (currentRadio == m_previousRadio)) - { - // Hack to deselect the currently selected radio button programmatically because Qt doesn't allow it in exclusive mode - m_ui->buttonGroup->setExclusive(false); - currentRadio->setChecked(false); - m_ui->buttonGroup->setExclusive(true); - } - m_previousRadio = m_ui->buttonGroup->checkedButton(); - } - - m_ui->checkMaxRatio->setEnabled(m_ui->radioTorrentLimit->isChecked()); - m_ui->checkMaxTime->setEnabled(m_ui->radioTorrentLimit->isChecked()); - m_ui->checkMaxInactiveTime->setEnabled(m_ui->radioTorrentLimit->isChecked()); - - m_ui->spinRatioLimit->setEnabled(m_ui->radioTorrentLimit->isChecked() && m_ui->checkMaxRatio->isChecked()); - m_ui->spinTimeLimit->setEnabled(m_ui->radioTorrentLimit->isChecked() && m_ui->checkMaxTime->isChecked()); - m_ui->spinInactiveTimeLimit->setEnabled(m_ui->radioTorrentLimit->isChecked() && m_ui->checkMaxInactiveTime->isChecked()); -} - void TorrentOptionsDialog::handleUpSpeedLimitChanged() { m_ui->spinUploadLimit->setMinimum(0); diff --git a/src/gui/torrentoptionsdialog.h b/src/gui/torrentoptionsdialog.h index d6d8222d7f3c..25accf3dbbc0 100644 --- a/src/gui/torrentoptionsdialog.h +++ b/src/gui/torrentoptionsdialog.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2020 thalieht * Copyright (C) 2011 Christian Kandeler * Copyright (C) 2011 Christophe Dumez @@ -30,8 +31,11 @@ #pragma once +#include + #include +#include "base/bittorrent/sharelimitaction.h" #include "base/path.h" #include "base/settingvalue.h" @@ -54,7 +58,7 @@ class TorrentOptionsDialog final : public QDialog Q_DISABLE_COPY_MOVE(TorrentOptionsDialog) public: - explicit TorrentOptionsDialog(QWidget *parent, const QVector &torrents); + explicit TorrentOptionsDialog(QWidget *parent, const QList &torrents); ~TorrentOptionsDialog() override; public slots: @@ -68,14 +72,8 @@ private slots: void handleUpSpeedLimitChanged(); void handleDownSpeedLimitChanged(); - void handleRatioTypeChanged(); - private: - qreal getRatio() const; - int getSeedingTime() const; - int getInactiveSeedingTime() const; - - QVector m_torrentIDs; + QList m_torrentIDs; Ui::TorrentOptionsDialog *m_ui = nullptr; SettingValue m_storeDialogSize; QStringList m_categories; @@ -87,9 +85,10 @@ private slots: Path savePath; Path downloadPath; QString category; - qreal ratio; - int seedingTime; - int inactiveSeedingTime; + std::optional ratio; + std::optional seedingTime; + std::optional inactiveSeedingTime; + std::optional shareLimitAction; int upSpeedLimit; int downSpeedLimit; Qt::CheckState autoTMM; diff --git a/src/gui/torrentoptionsdialog.ui b/src/gui/torrentoptionsdialog.ui index 708a34c7a40c..9fcb65d5240f 100644 --- a/src/gui/torrentoptionsdialog.ui +++ b/src/gui/torrentoptionsdialog.ui @@ -52,6 +52,13 @@ + + + + Category: + + + @@ -67,14 +74,7 @@ 2147483647 - QComboBox::InsertAtTop - - - - - - - Category: + QComboBox::InsertPolicy::InsertAtTop @@ -83,26 +83,20 @@ - Torrent speed limits + Torrent Speed Limits - - + + - Download: + Upload: - - - - - - - KiB/s - - - 2000000 + + + + Qt::Orientation::Horizontal @@ -117,33 +111,45 @@ 2000000 + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType + - - + + - These will not exceed the global limits + Download: - - - - Upload: + + + + Qt::Orientation::Horizontal - - - - Qt::Horizontal + + + + + + + KiB/s + + + 2000000 + + + QAbstractSpinBox::StepType::AdaptiveDecimalStepType - - - - Qt::Horizontal + + + + These will not exceed the global limits @@ -151,111 +157,13 @@ - + - Torrent share limits + Torrent Share Limits - - - - - Use global share limit - - - buttonGroup - - - - - - - Set no share limit - - - buttonGroup - - - + - - - - - Set share limit to - - - buttonGroup - - - - - - - ratio - - - - - - - 9999.000000000000000 - - - 0.050000000000000 - - - 1.000000000000000 - - - - - - - total minutes - - - - - - - 525600 - - - 1440 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - inactive minutes - - - - - - - 525600 - - - 1440 - - - - + @@ -279,7 +187,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -315,7 +223,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -328,7 +236,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok @@ -341,10 +249,13 @@

    gui/fspathedit.h
    1 + + TorrentShareLimitsWidget + QWidget +
    gui/torrentsharelimitswidget.h
    + 1 +
    - - - diff --git a/src/gui/torrentsharelimitswidget.cpp b/src/gui/torrentsharelimitswidget.cpp new file mode 100644 index 000000000000..79784566449f --- /dev/null +++ b/src/gui/torrentsharelimitswidget.cpp @@ -0,0 +1,304 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "torrentsharelimitswidget.h" + +#include "base/bittorrent/torrent.h" +#include "ui_torrentsharelimitswidget.h" + +namespace +{ + enum ShareLimitModeIndex + { + UninitializedModeIndex = -1, + DefaultModeIndex, + UnlimitedModeIndex, + AssignedModeIndex + }; + + enum ShareLimitActionIndex + { + UninitializedActionIndex = -1, + DefaultActionIndex, + StopActionIndex, + RemoveActionIndex, + RemoveWithContentActionIndex, + SuperSeedingActionIndex + }; +} + +TorrentShareLimitsWidget::TorrentShareLimitsWidget(QWidget *parent) + : QWidget(parent) + , m_ui {new Ui::TorrentShareLimitsWidget} +{ + m_ui->setupUi(this); + + m_ui->spinBoxRatioValue->setEnabled(false); + m_ui->spinBoxRatioValue->setSuffix({}); + m_ui->spinBoxRatioValue->clear(); + m_ui->spinBoxSeedingTimeValue->setEnabled(false); + m_ui->spinBoxSeedingTimeValue->setSuffix({}); + m_ui->spinBoxSeedingTimeValue->clear(); + m_ui->spinBoxInactiveSeedingTimeValue->setEnabled(false); + m_ui->spinBoxInactiveSeedingTimeValue->setSuffix({}); + m_ui->spinBoxInactiveSeedingTimeValue->clear(); + + connect(m_ui->comboBoxRatioMode, &QComboBox::currentIndexChanged, this, &TorrentShareLimitsWidget::refreshRatioLimitControls); + connect(m_ui->comboBoxSeedingTimeMode, &QComboBox::currentIndexChanged, this, &TorrentShareLimitsWidget::refreshSeedingTimeLimitControls); + connect(m_ui->comboBoxInactiveSeedingTimeMode, &QComboBox::currentIndexChanged, this, &TorrentShareLimitsWidget::refreshInactiveSeedingTimeLimitControls); +} + +TorrentShareLimitsWidget::~TorrentShareLimitsWidget() +{ + delete m_ui; +} + +void TorrentShareLimitsWidget::setRatioLimit(const qreal ratioLimit) +{ + if (ratioLimit == BitTorrent::Torrent::USE_GLOBAL_RATIO) + { + m_ui->comboBoxRatioMode->setCurrentIndex(DefaultModeIndex); + } + else if (ratioLimit == BitTorrent::Torrent::NO_RATIO_LIMIT) + { + m_ui->comboBoxRatioMode->setCurrentIndex(UnlimitedModeIndex); + } + else + { + m_ui->comboBoxRatioMode->setCurrentIndex(AssignedModeIndex); + m_ui->spinBoxRatioValue->setValue(ratioLimit); + } +} + +void TorrentShareLimitsWidget::setSeedingTimeLimit(const int seedingTimeLimit) +{ + if (seedingTimeLimit == BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME) + { + m_ui->comboBoxSeedingTimeMode->setCurrentIndex(DefaultModeIndex); + } + else if (seedingTimeLimit == BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT) + { + m_ui->comboBoxSeedingTimeMode->setCurrentIndex(UnlimitedModeIndex); + } + else + { + m_ui->comboBoxSeedingTimeMode->setCurrentIndex(AssignedModeIndex); + m_ui->spinBoxSeedingTimeValue->setValue(seedingTimeLimit); + } +} + +void TorrentShareLimitsWidget::setInactiveSeedingTimeLimit(const int inactiveSeedingTimeLimit) +{ + if (inactiveSeedingTimeLimit == BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME) + { + m_ui->comboBoxInactiveSeedingTimeMode->setCurrentIndex(DefaultModeIndex); + } + else if (inactiveSeedingTimeLimit == BitTorrent::Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT) + { + m_ui->comboBoxInactiveSeedingTimeMode->setCurrentIndex(UnlimitedModeIndex); + } + else + { + m_ui->comboBoxInactiveSeedingTimeMode->setCurrentIndex(AssignedModeIndex); + m_ui->spinBoxInactiveSeedingTimeValue->setValue(inactiveSeedingTimeLimit); + } +} + +void TorrentShareLimitsWidget::setShareLimitAction(const BitTorrent::ShareLimitAction action) +{ + switch (action) + { + case BitTorrent::ShareLimitAction::Default: + default: + m_ui->comboBoxAction->setCurrentIndex(DefaultActionIndex); + break; + case BitTorrent::ShareLimitAction::Stop: + m_ui->comboBoxAction->setCurrentIndex(StopActionIndex); + break; + case BitTorrent::ShareLimitAction::Remove: + m_ui->comboBoxAction->setCurrentIndex(RemoveActionIndex); + break; + case BitTorrent::ShareLimitAction::RemoveWithContent: + m_ui->comboBoxAction->setCurrentIndex(RemoveWithContentActionIndex); + break; + case BitTorrent::ShareLimitAction::EnableSuperSeeding: + m_ui->comboBoxAction->setCurrentIndex(SuperSeedingActionIndex); + break; + } +} + +void TorrentShareLimitsWidget::setDefaultLimits(const qreal ratioLimit, const int seedingTimeLimit, const int inactiveSeedingTimeLimit) +{ + if (m_defaultRatioLimit != ratioLimit) + { + m_defaultRatioLimit = ratioLimit; + refreshRatioLimitControls(); + } + + if (m_defaultSeedingTimeLimit != seedingTimeLimit) + { + m_defaultSeedingTimeLimit = seedingTimeLimit; + refreshSeedingTimeLimitControls(); + } + + if (m_defaultInactiveSeedingTimeLimit != inactiveSeedingTimeLimit) + { + m_defaultInactiveSeedingTimeLimit = inactiveSeedingTimeLimit; + refreshInactiveSeedingTimeLimitControls(); + } +} + +std::optional TorrentShareLimitsWidget::ratioLimit() const +{ + switch (m_ui->comboBoxRatioMode->currentIndex()) + { + case DefaultModeIndex: + return BitTorrent::Torrent::USE_GLOBAL_RATIO; + case UnlimitedModeIndex: + return BitTorrent::Torrent::NO_RATIO_LIMIT; + case AssignedModeIndex: + return m_ui->spinBoxRatioValue->value(); + default: + return std::nullopt; + } +} + +std::optional TorrentShareLimitsWidget::seedingTimeLimit() const +{ + switch (m_ui->comboBoxSeedingTimeMode->currentIndex()) + { + case DefaultModeIndex: + return BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME; + case UnlimitedModeIndex: + return BitTorrent::Torrent::NO_SEEDING_TIME_LIMIT; + case AssignedModeIndex: + return m_ui->spinBoxSeedingTimeValue->value(); + default: + return std::nullopt; + } +} + +std::optional TorrentShareLimitsWidget::inactiveSeedingTimeLimit() const +{ + switch (m_ui->comboBoxInactiveSeedingTimeMode->currentIndex()) + { + case DefaultModeIndex: + return BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME; + case UnlimitedModeIndex: + return BitTorrent::Torrent::NO_INACTIVE_SEEDING_TIME_LIMIT; + case AssignedModeIndex: + return m_ui->spinBoxInactiveSeedingTimeValue->value(); + default: + return std::nullopt; + } +} + +std::optional TorrentShareLimitsWidget::shareLimitAction() const +{ + switch (m_ui->comboBoxAction->currentIndex()) + { + case DefaultActionIndex: + return BitTorrent::ShareLimitAction::Default; + case StopActionIndex: + return BitTorrent::ShareLimitAction::Stop; + case RemoveActionIndex: + return BitTorrent::ShareLimitAction::Remove; + case RemoveWithContentActionIndex: + return BitTorrent::ShareLimitAction::RemoveWithContent; + case SuperSeedingActionIndex: + return BitTorrent::ShareLimitAction::EnableSuperSeeding; + default: + return std::nullopt; + } +} + +void TorrentShareLimitsWidget::refreshRatioLimitControls() +{ + const auto index = m_ui->comboBoxRatioMode->currentIndex(); + + m_ui->spinBoxRatioValue->setEnabled(index == AssignedModeIndex); + if (index == AssignedModeIndex) + { + m_ui->spinBoxRatioValue->setValue(m_ratioLimit); + } + else if ((index == DefaultModeIndex) && (m_defaultRatioLimit >= 0)) + { + m_ui->spinBoxRatioValue->setValue(m_defaultRatioLimit); + } + else + { + m_ratioLimit = m_ui->spinBoxRatioValue->value(); + m_ui->spinBoxRatioValue->clear(); + } +} + +void TorrentShareLimitsWidget::refreshSeedingTimeLimitControls() +{ + const auto index = m_ui->comboBoxSeedingTimeMode->currentIndex(); + + m_ui->spinBoxSeedingTimeValue->setEnabled(index == AssignedModeIndex); + if (index == AssignedModeIndex) + { + m_ui->spinBoxSeedingTimeValue->setValue(m_seedingTimeLimit); + m_ui->spinBoxSeedingTimeValue->setSuffix(tr(" min")); + } + else if ((index == DefaultModeIndex) && (m_defaultSeedingTimeLimit >= 0)) + { + m_ui->spinBoxSeedingTimeValue->setValue(m_defaultSeedingTimeLimit); + m_ui->spinBoxSeedingTimeValue->setSuffix(tr(" min")); + } + else + { + m_seedingTimeLimit = m_ui->spinBoxSeedingTimeValue->value(); + m_ui->spinBoxSeedingTimeValue->setSuffix({}); + m_ui->spinBoxSeedingTimeValue->clear(); + } +} + +void TorrentShareLimitsWidget::refreshInactiveSeedingTimeLimitControls() +{ + const auto index = m_ui->comboBoxInactiveSeedingTimeMode->currentIndex(); + + m_ui->spinBoxInactiveSeedingTimeValue->setEnabled(index == AssignedModeIndex); + if (index == AssignedModeIndex) + { + m_ui->spinBoxInactiveSeedingTimeValue->setValue(m_inactiveSeedingTimeLimit); + m_ui->spinBoxInactiveSeedingTimeValue->setSuffix(tr(" min")); + } + else if ((index == DefaultModeIndex) && (m_defaultInactiveSeedingTimeLimit >= 0)) + { + m_ui->spinBoxInactiveSeedingTimeValue->setValue(m_defaultInactiveSeedingTimeLimit); + m_ui->spinBoxInactiveSeedingTimeValue->setSuffix(tr(" min")); + } + else + { + m_inactiveSeedingTimeLimit = m_ui->spinBoxInactiveSeedingTimeValue->value(); + m_ui->spinBoxInactiveSeedingTimeValue->setSuffix({}); + m_ui->spinBoxInactiveSeedingTimeValue->clear(); + } +} diff --git a/src/gui/torrentsharelimitswidget.h b/src/gui/torrentsharelimitswidget.h new file mode 100644 index 000000000000..b99a830b6d6c --- /dev/null +++ b/src/gui/torrentsharelimitswidget.h @@ -0,0 +1,77 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include + +#include + +#include "base/bittorrent/sharelimitaction.h" + +namespace Ui +{ + class TorrentShareLimitsWidget; +} + +class TorrentShareLimitsWidget final : public QWidget +{ + Q_OBJECT + Q_DISABLE_COPY_MOVE(TorrentShareLimitsWidget) + +public: + explicit TorrentShareLimitsWidget(QWidget *parent = nullptr); + ~TorrentShareLimitsWidget() override; + + void setRatioLimit(qreal ratioLimit); + void setSeedingTimeLimit(int seedingTimeLimit); + void setInactiveSeedingTimeLimit(int inactiveSeedingTimeLimit); + void setShareLimitAction(BitTorrent::ShareLimitAction action); + + void setDefaultLimits(qreal ratioLimit, int seedingTimeLimit, int inactiveSeedingTimeLimit); + + std::optional ratioLimit() const; + std::optional seedingTimeLimit() const; + std::optional inactiveSeedingTimeLimit() const; + std::optional shareLimitAction() const; + +private: + void refreshRatioLimitControls(); + void refreshSeedingTimeLimitControls(); + void refreshInactiveSeedingTimeLimitControls(); + + Ui::TorrentShareLimitsWidget *m_ui = nullptr; + + int m_seedingTimeLimit = 1440; + int m_inactiveSeedingTimeLimit = 1440; + qreal m_ratioLimit = 1; + + int m_defaultSeedingTimeLimit = -1; + int m_defaultInactiveSeedingTimeLimit = -1; + qreal m_defaultRatioLimit = -1; +}; diff --git a/src/gui/torrentsharelimitswidget.ui b/src/gui/torrentsharelimitswidget.ui new file mode 100644 index 000000000000..9ada9ed67acf --- /dev/null +++ b/src/gui/torrentsharelimitswidget.ui @@ -0,0 +1,213 @@ + + + TorrentShareLimitsWidget + + + + 0 + 0 + 445 + 132 + + + + + + + + + Ratio: + + + + + + + -1 + + + + Default + + + + + Unlimited + + + + + Set to + + + + + + + + false + + + 9998.000000000000000 + + + 0.050000000000000 + + + 1.000000000000000 + + + + + + + Seeding time: + + + + + + + -1 + + + + Default + + + + + Unlimited + + + + + Set to + + + + + + + + false + + + min + + + 9999999 + + + 1440 + + + + + + + Inactive seeding time: + + + + + + + -1 + + + + Default + + + + + Unlimited + + + + + Set to + + + + + + + + false + + + min + + + 9999999 + + + 1440 + + + + + + + + + + + Action when the limit is reached: + + + + + + + -1 + + + + Default + + + + + Stop torrent + + + + + Remove torrent + + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/src/gui/torrenttagsdialog.cpp b/src/gui/torrenttagsdialog.cpp index eb4d8616806f..a1c57d71eda4 100644 --- a/src/gui/torrenttagsdialog.cpp +++ b/src/gui/torrenttagsdialog.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -37,6 +37,7 @@ #include "base/global.h" #include "autoexpandabledialog.h" #include "flowlayout.h" +#include "utils.h" #include "ui_torrenttagsdialog.h" @@ -52,10 +53,10 @@ TorrentTagsDialog::TorrentTagsDialog(const TagSet &initialTags, QWidget *parent) connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(m_ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); - auto *tagsLayout = new FlowLayout(m_ui->scrollArea); - for (const QString &tag : asConst(initialTags.united(BitTorrent::Session::instance()->tags()))) + auto *tagsLayout = new FlowLayout(m_ui->scrollArea->widget()); + for (const Tag &tag : asConst(initialTags.united(BitTorrent::Session::instance()->tags()))) { - auto *tagWidget = new QCheckBox(tag); + auto *tagWidget = new QCheckBox(Utils::Gui::tagToWidgetText(tag)); if (initialTags.contains(tag)) tagWidget->setChecked(true); tagsLayout->addWidget(tagWidget); @@ -78,12 +79,12 @@ TorrentTagsDialog::~TorrentTagsDialog() TagSet TorrentTagsDialog::tags() const { TagSet tags; - auto *layout = m_ui->scrollArea->layout(); + auto *layout = m_ui->scrollArea->widget()->layout(); for (int i = 0; i < (layout->count() - 1); ++i) { const auto *tagWidget = static_cast(layout->itemAt(i)->widget()); if (tagWidget->isChecked()) - tags.insert(tagWidget->text()); + tags.insert(Utils::Gui::widgetTextToTag(tagWidget->text())); } return tags; @@ -92,18 +93,18 @@ TagSet TorrentTagsDialog::tags() const void TorrentTagsDialog::addNewTag() { bool done = false; - QString tag; + Tag tag; while (!done) { bool ok = false; - tag = AutoExpandableDialog::getText(this - , tr("New Tag"), tr("Tag:"), QLineEdit::Normal, tag, &ok).trimmed(); + tag = Tag(AutoExpandableDialog::getText(this, tr("Add tag") + , tr("Tag:"), QLineEdit::Normal, tag.toString(), &ok)); if (!ok || tag.isEmpty()) break; - if (!BitTorrent::Session::isValidTag(tag)) + if (!tag.isValid()) { - QMessageBox::warning(this, tr("Invalid tag name"), tr("Tag name '%1' is invalid.").arg(tag)); + QMessageBox::warning(this, tr("Invalid tag name"), tr("Tag name '%1' is invalid.").arg(tag.toString())); } else if (BitTorrent::Session::instance()->tags().contains(tag)) { @@ -111,9 +112,9 @@ void TorrentTagsDialog::addNewTag() } else { - auto *layout = m_ui->scrollArea->layout(); + auto *layout = m_ui->scrollArea->widget()->layout(); auto *btn = layout->takeAt(layout->count() - 1); - auto *tagWidget = new QCheckBox(tag); + auto *tagWidget = new QCheckBox(Utils::Gui::tagToWidgetText(tag)); tagWidget->setChecked(true); layout->addWidget(tagWidget); layout->addItem(btn); diff --git a/src/gui/torrenttagsdialog.ui b/src/gui/torrenttagsdialog.ui index c27b683ff7f3..f432b06cd48d 100644 --- a/src/gui/torrenttagsdialog.ui +++ b/src/gui/torrenttagsdialog.ui @@ -17,7 +17,7 @@ - Qt::ScrollBarAlwaysOff + Qt::ScrollBarPolicy::ScrollBarAlwaysOff true @@ -37,7 +37,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/trackerentriesdialog.cpp b/src/gui/trackerentriesdialog.cpp index 8dd2b88d70b1..db963fd267a8 100644 --- a/src/gui/trackerentriesdialog.cpp +++ b/src/gui/trackerentriesdialog.cpp @@ -31,7 +31,7 @@ #include #include -#include +#include #include "base/bittorrent/trackerentry.h" #include "ui_trackerentriesdialog.h" @@ -59,7 +59,7 @@ TrackerEntriesDialog::~TrackerEntriesDialog() delete m_ui; } -void TrackerEntriesDialog::setTrackers(const QVector &trackers) +void TrackerEntriesDialog::setTrackers(const QList &trackers) { int maxTier = -1; QHash tiers; // @@ -78,7 +78,7 @@ void TrackerEntriesDialog::setTrackers(const QVector & m_ui->plainTextEdit->setPlainText(text); } -QVector TrackerEntriesDialog::trackers() const +QList TrackerEntriesDialog::trackers() const { return BitTorrent::parseTrackerEntries(m_ui->plainTextEdit->toPlainText()); } diff --git a/src/gui/trackerentriesdialog.h b/src/gui/trackerentriesdialog.h index b4882fe7b1db..f1516c3f9aee 100644 --- a/src/gui/trackerentriesdialog.h +++ b/src/gui/trackerentriesdialog.h @@ -52,8 +52,8 @@ class TrackerEntriesDialog : public QDialog explicit TrackerEntriesDialog(QWidget *parent); ~TrackerEntriesDialog() override; - void setTrackers(const QVector &trackers); - QVector trackers() const; + void setTrackers(const QList &trackers); + QList trackers() const; private: void saveSettings(); diff --git a/src/gui/trackerentriesdialog.ui b/src/gui/trackerentriesdialog.ui index adee9c8ff264..25651f816dfc 100644 --- a/src/gui/trackerentriesdialog.ui +++ b/src/gui/trackerentriesdialog.ui @@ -36,7 +36,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/trackerlist/trackerlistmodel.cpp b/src/gui/trackerlist/trackerlistmodel.cpp index 3ac377327e89..78465488c312 100644 --- a/src/gui/trackerlist/trackerlistmodel.cpp +++ b/src/gui/trackerlist/trackerlistmodel.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -29,6 +29,7 @@ #include "trackerlistmodel.h" +#include #include #include @@ -40,85 +41,88 @@ #include #include +#include #include #include #include #include +#include "base/bittorrent/announcetimepoint.h" #include "base/bittorrent/peerinfo.h" #include "base/bittorrent/session.h" #include "base/bittorrent/torrent.h" +#include "base/bittorrent/trackerentry.h" #include "base/global.h" #include "base/utils/misc.h" using namespace std::chrono_literals; using namespace boost::multi_index; -const std::chrono::milliseconds ANNOUNCE_TIME_REFRESH_INTERVAL = 4s; - namespace { - const QString STR_WORKING = TrackerListModel::tr("Working"); - const QString STR_DISABLED = TrackerListModel::tr("Disabled"); - const QString STR_TORRENT_DISABLED = TrackerListModel::tr("Disabled for this torrent"); - const QString STR_PRIVATE_MSG = TrackerListModel::tr("This torrent is private"); + const std::chrono::milliseconds ANNOUNCE_TIME_REFRESH_INTERVAL = 4s; + + const char STR_WORKING[] = QT_TRANSLATE_NOOP("TrackerListModel", "Working"); + const char STR_DISABLED[] = QT_TRANSLATE_NOOP("TrackerListModel", "Disabled"); + const char STR_TORRENT_DISABLED[] = QT_TRANSLATE_NOOP("TrackerListModel", "Disabled for this torrent"); + const char STR_PRIVATE_MSG[] = QT_TRANSLATE_NOOP("TrackerListModel", "This torrent is private"); QString prettyCount(const int val) { return (val > -1) ? QString::number(val) : TrackerListModel::tr("N/A"); } - QString toString(const BitTorrent::TrackerEntryStatus status) + QString toString(const BitTorrent::TrackerEndpointState state) { - switch (status) + switch (state) { - case BitTorrent::TrackerEntryStatus::Working: - return TrackerListModel::tr("Working"); - case BitTorrent::TrackerEntryStatus::Updating: + case BitTorrent::TrackerEndpointState::Working: + return TrackerListModel::tr(STR_WORKING); + case BitTorrent::TrackerEndpointState::Updating: return TrackerListModel::tr("Updating..."); - case BitTorrent::TrackerEntryStatus::NotWorking: + case BitTorrent::TrackerEndpointState::NotWorking: return TrackerListModel::tr("Not working"); - case BitTorrent::TrackerEntryStatus::TrackerError: + case BitTorrent::TrackerEndpointState::TrackerError: return TrackerListModel::tr("Tracker error"); - case BitTorrent::TrackerEntryStatus::Unreachable: + case BitTorrent::TrackerEndpointState::Unreachable: return TrackerListModel::tr("Unreachable"); - case BitTorrent::TrackerEntryStatus::NotContacted: + case BitTorrent::TrackerEndpointState::NotContacted: return TrackerListModel::tr("Not contacted yet"); } - return TrackerListModel::tr("Invalid status!"); + return TrackerListModel::tr("Invalid state!"); } QString statusDHT(const BitTorrent::Torrent *torrent) { if (!torrent->session()->isDHTEnabled()) - return STR_DISABLED; + return TrackerListModel::tr(STR_DISABLED); if (torrent->isPrivate() || torrent->isDHTDisabled()) - return STR_TORRENT_DISABLED; + return TrackerListModel::tr(STR_TORRENT_DISABLED); - return STR_WORKING; + return TrackerListModel::tr(STR_WORKING); } QString statusPeX(const BitTorrent::Torrent *torrent) { if (!torrent->session()->isPeXEnabled()) - return STR_DISABLED; + return TrackerListModel::tr(STR_DISABLED); if (torrent->isPrivate() || torrent->isPEXDisabled()) - return STR_TORRENT_DISABLED; + return TrackerListModel::tr(STR_TORRENT_DISABLED); - return STR_WORKING; + return TrackerListModel::tr(STR_WORKING); } QString statusLSD(const BitTorrent::Torrent *torrent) { if (!torrent->session()->isLSDEnabled()) - return STR_DISABLED; + return TrackerListModel::tr(STR_DISABLED); if (torrent->isPrivate() || torrent->isLSDDisabled()) - return STR_TORRENT_DISABLED; + return TrackerListModel::tr(STR_TORRENT_DISABLED); - return STR_WORKING; + return TrackerListModel::tr(STR_WORKING); } } @@ -132,7 +136,7 @@ struct TrackerListModel::Item final QString name {}; int tier = -1; int btVersion = -1; - BitTorrent::TrackerEntryStatus status = BitTorrent::TrackerEntryStatus::NotContacted; + BitTorrent::TrackerEndpointState status = BitTorrent::TrackerEndpointState::NotContacted; QString message {}; int numPeers = -1; @@ -140,12 +144,12 @@ struct TrackerListModel::Item final int numLeeches = -1; int numDownloaded = -1; - QDateTime nextAnnounceTime {}; - QDateTime minAnnounceTime {}; + BitTorrent::AnnounceTimePoint nextAnnounceTime; + BitTorrent::AnnounceTimePoint minAnnounceTime; qint64 secsToNextAnnounce = 0; qint64 secsToMinAnnounce = 0; - QDateTime announceTimestamp; + BitTorrent::AnnounceTimePoint announceTimestamp; std::weak_ptr parentItem {}; @@ -159,11 +163,11 @@ struct TrackerListModel::Item final >> childItems {}; Item(QStringView name, QStringView message); - explicit Item(const BitTorrent::TrackerEntry &trackerEntry); - Item(const std::shared_ptr &parentItem, const BitTorrent::TrackerEndpointEntry &endpointEntry); + explicit Item(const BitTorrent::TrackerEntryStatus &trackerEntryStatus); + Item(const std::shared_ptr &parentItem, const BitTorrent::TrackerEndpointStatus &endpointStatus); - void fillFrom(const BitTorrent::TrackerEntry &trackerEntry); - void fillFrom(const BitTorrent::TrackerEndpointEntry &endpointEntry); + void fillFrom(const BitTorrent::TrackerEntryStatus &trackerEntryStatus); + void fillFrom(const BitTorrent::TrackerEndpointStatus &endpointStatus); }; class TrackerListModel::Items final : public multi_index_container< @@ -180,56 +184,56 @@ TrackerListModel::Item::Item(const QStringView name, const QStringView message) { } -TrackerListModel::Item::Item(const BitTorrent::TrackerEntry &trackerEntry) - : name {trackerEntry.url} +TrackerListModel::Item::Item(const BitTorrent::TrackerEntryStatus &trackerEntryStatus) + : name {trackerEntryStatus.url} { - fillFrom(trackerEntry); + fillFrom(trackerEntryStatus); } -TrackerListModel::Item::Item(const std::shared_ptr &parentItem, const BitTorrent::TrackerEndpointEntry &endpointEntry) - : name {endpointEntry.name} - , btVersion {endpointEntry.btVersion} +TrackerListModel::Item::Item(const std::shared_ptr &parentItem, const BitTorrent::TrackerEndpointStatus &endpointStatus) + : name {endpointStatus.name} + , btVersion {endpointStatus.btVersion} , parentItem {parentItem} { - fillFrom(endpointEntry); + fillFrom(endpointStatus); } -void TrackerListModel::Item::fillFrom(const BitTorrent::TrackerEntry &trackerEntry) +void TrackerListModel::Item::fillFrom(const BitTorrent::TrackerEntryStatus &trackerEntryStatus) { Q_ASSERT(parentItem.expired()); - Q_ASSERT(trackerEntry.url == name); - - tier = trackerEntry.tier; - status = trackerEntry.status; - message = trackerEntry.message; - numPeers = trackerEntry.numPeers; - numSeeds = trackerEntry.numSeeds; - numLeeches = trackerEntry.numLeeches; - numDownloaded = trackerEntry.numDownloaded; - nextAnnounceTime = trackerEntry.nextAnnounceTime; - minAnnounceTime = trackerEntry.minAnnounceTime; + Q_ASSERT(trackerEntryStatus.url == name); + + tier = trackerEntryStatus.tier; + status = trackerEntryStatus.state; + message = trackerEntryStatus.message; + numPeers = trackerEntryStatus.numPeers; + numSeeds = trackerEntryStatus.numSeeds; + numLeeches = trackerEntryStatus.numLeeches; + numDownloaded = trackerEntryStatus.numDownloaded; + nextAnnounceTime = trackerEntryStatus.nextAnnounceTime; + minAnnounceTime = trackerEntryStatus.minAnnounceTime; secsToNextAnnounce = 0; secsToMinAnnounce = 0; - announceTimestamp = QDateTime(); + announceTimestamp = {}; } -void TrackerListModel::Item::fillFrom(const BitTorrent::TrackerEndpointEntry &endpointEntry) +void TrackerListModel::Item::fillFrom(const BitTorrent::TrackerEndpointStatus &endpointStatus) { Q_ASSERT(!parentItem.expired()); - Q_ASSERT(endpointEntry.name == name); - Q_ASSERT(endpointEntry.btVersion == btVersion); - - status = endpointEntry.status; - message = endpointEntry.message; - numPeers = endpointEntry.numPeers; - numSeeds = endpointEntry.numSeeds; - numLeeches = endpointEntry.numLeeches; - numDownloaded = endpointEntry.numDownloaded; - nextAnnounceTime = endpointEntry.nextAnnounceTime; - minAnnounceTime = endpointEntry.minAnnounceTime; + Q_ASSERT(endpointStatus.name == name); + Q_ASSERT(endpointStatus.btVersion == btVersion); + + status = endpointStatus.state; + message = endpointStatus.message; + numPeers = endpointStatus.numPeers; + numSeeds = endpointStatus.numSeeds; + numLeeches = endpointStatus.numLeeches; + numDownloaded = endpointStatus.numDownloaded; + nextAnnounceTime = endpointStatus.nextAnnounceTime; + minAnnounceTime = endpointStatus.minAnnounceTime; secsToNextAnnounce = 0; secsToMinAnnounce = 0; - announceTimestamp = QDateTime(); + announceTimestamp = {}; } TrackerListModel::TrackerListModel(BitTorrent::Session *btSession, QObject *parent) @@ -261,8 +265,8 @@ TrackerListModel::TrackerListModel(BitTorrent::Session *btSession, QObject *pare if (torrent == m_torrent) onTrackersChanged(); }); - connect(m_btSession, &BitTorrent::Session::trackerEntriesUpdated, this - , [this](BitTorrent::Torrent *torrent, const QHash &updatedTrackers) + connect(m_btSession, &BitTorrent::Session::trackerEntryStatusesUpdated, this + , [this](BitTorrent::Torrent *torrent, const QHash &updatedTrackers) { if (torrent == m_torrent) onTrackersUpdated(updatedTrackers); @@ -296,10 +300,10 @@ void TrackerListModel::populate() { Q_ASSERT(m_torrent); - const QList trackerEntries = m_torrent->trackers(); - m_items->reserve(trackerEntries.size() + STICKY_ROW_COUNT); + const QList trackers = m_torrent->trackers(); + m_items->reserve(trackers.size() + STICKY_ROW_COUNT); - const QString &privateTorrentMessage = m_torrent->isPrivate() ? STR_PRIVATE_MSG : u""_s; + const QString &privateTorrentMessage = m_torrent->isPrivate() ? tr(STR_PRIVATE_MSG) : u""_s; m_items->emplace_back(std::make_shared(u"** [DHT] **", privateTorrentMessage)); m_items->emplace_back(std::make_shared(u"** [PeX] **", privateTorrentMessage)); m_items->emplace_back(std::make_shared(u"** [LSD] **", privateTorrentMessage)); @@ -365,46 +369,44 @@ void TrackerListModel::populate() emit dataChanged(index(ROW_DHT, COL_SEEDS), index(ROW_LSD, COL_LEECHES)); }); - for (const BitTorrent::TrackerEntry &trackerEntry : trackerEntries) - addTrackerItem(trackerEntry); + for (const BitTorrent::TrackerEntryStatus &status : trackers) + addTrackerItem(status); - m_announceTimestamp = QDateTime::currentDateTime(); + m_announceTimestamp = BitTorrent::AnnounceTimePoint::clock::now(); m_announceRefreshTimer->start(ANNOUNCE_TIME_REFRESH_INTERVAL); } -std::shared_ptr TrackerListModel::createTrackerItem(const BitTorrent::TrackerEntry &trackerEntry) +std::shared_ptr TrackerListModel::createTrackerItem(const BitTorrent::TrackerEntryStatus &trackerEntryStatus) { - auto item = std::make_shared(trackerEntry); - for (const auto &[id, endpointEntry] : trackerEntry.endpointEntries.asKeyValueRange()) - { - item->childItems.emplace_back(std::make_shared(item, endpointEntry)); - } + const auto item = std::make_shared(trackerEntryStatus); + for (const auto &[id, endpointStatus] : trackerEntryStatus.endpoints.asKeyValueRange()) + item->childItems.emplace_back(std::make_shared(item, endpointStatus)); return item; } -void TrackerListModel::addTrackerItem(const BitTorrent::TrackerEntry &trackerEntry) +void TrackerListModel::addTrackerItem(const BitTorrent::TrackerEntryStatus &trackerEntryStatus) { - [[maybe_unused]] const auto &[iter, res] = m_items->emplace_back(createTrackerItem(trackerEntry)); + [[maybe_unused]] const auto &[iter, res] = m_items->emplace_back(createTrackerItem(trackerEntryStatus)); Q_ASSERT(res); } -void TrackerListModel::updateTrackerItem(const std::shared_ptr &item, const BitTorrent::TrackerEntry &trackerEntry) +void TrackerListModel::updateTrackerItem(const std::shared_ptr &item, const BitTorrent::TrackerEntryStatus &trackerEntryStatus) { QSet> endpointItemIDs; QList> newEndpointItems; - for (const auto &[id, endpointEntry] : trackerEntry.endpointEntries.asKeyValueRange()) + for (const auto &[id, endpointStatus] : trackerEntryStatus.endpoints.asKeyValueRange()) { endpointItemIDs.insert(id); auto &itemsByID = item->childItems.get(); if (const auto &iter = itemsByID.find(std::make_tuple(id.first, id.second)); iter != itemsByID.end()) { - (*iter)->fillFrom(endpointEntry); + (*iter)->fillFrom(endpointStatus); } else { - newEndpointItems.emplace_back(std::make_shared(item, endpointEntry)); + newEndpointItems.emplace_back(std::make_shared(item, endpointStatus)); } } @@ -429,7 +431,7 @@ void TrackerListModel::updateTrackerItem(const std::shared_ptr &item, cons } } - const auto numRows = rowCount(trackerIndex); + const int numRows = rowCount(trackerIndex); emit dataChanged(index(0, 0, trackerIndex), index((numRows - 1), (columnCount(trackerIndex) - 1), trackerIndex)); if (!newEndpointItems.isEmpty()) @@ -440,7 +442,7 @@ void TrackerListModel::updateTrackerItem(const std::shared_ptr &item, cons endInsertRows(); } - item->fillFrom(trackerEntry); + item->fillFrom(trackerEntryStatus); emit dataChanged(trackerIndex, index(trackerRow, (columnCount() - 1))); } @@ -449,7 +451,7 @@ void TrackerListModel::refreshAnnounceTimes() if (!m_torrent) return; - m_announceTimestamp = QDateTime::currentDateTime(); + m_announceTimestamp = BitTorrent::AnnounceTimePoint::clock::now(); emit dataChanged(index(0, COL_NEXT_ANNOUNCE), index((rowCount() - 1), COL_MIN_ANNOUNCE)); for (int i = 0; i < rowCount(); ++i) { @@ -489,11 +491,11 @@ QVariant TrackerListModel::headerData(const int section, const Qt::Orientation o switch (section) { case COL_URL: - return tr("URL/Announce endpoint"); + return tr("URL/Announce Endpoint"); case COL_TIER: return tr("Tier"); case COL_PROTOCOL: - return tr("Protocol"); + return tr("BT Protocol"); case COL_STATUS: return tr("Status"); case COL_PEERS: @@ -507,9 +509,9 @@ QVariant TrackerListModel::headerData(const int section, const Qt::Orientation o case COL_MSG: return tr("Message"); case COL_NEXT_ANNOUNCE: - return tr("Next announce"); + return tr("Next Announce"); case COL_MIN_ANNOUNCE: - return tr("Min announce"); + return tr("Min Announce"); default: return {}; } @@ -546,8 +548,12 @@ QVariant TrackerListModel::data(const QModelIndex &index, const int role) const if (itemPtr->announceTimestamp != m_announceTimestamp) { - itemPtr->secsToNextAnnounce = std::max(0, m_announceTimestamp.secsTo(itemPtr->nextAnnounceTime)); - itemPtr->secsToMinAnnounce = std::max(0, m_announceTimestamp.secsTo(itemPtr->minAnnounceTime)); + const auto timeToNextAnnounce = std::chrono::duration_cast(itemPtr->nextAnnounceTime - m_announceTimestamp); + itemPtr->secsToNextAnnounce = std::max(0, timeToNextAnnounce.count()); + + const auto timeToMinAnnounce = std::chrono::duration_cast(itemPtr->minAnnounceTime - m_announceTimestamp); + itemPtr->secsToMinAnnounce = std::max(0, timeToMinAnnounce.count()); + itemPtr->announceTimestamp = m_announceTimestamp; } @@ -586,7 +592,7 @@ QVariant TrackerListModel::data(const QModelIndex &index, const int role) const case COL_TIER: return (isEndpoint || (index.row() < STICKY_ROW_COUNT)) ? QString() : QString::number(itemPtr->tier); case COL_PROTOCOL: - return isEndpoint ? tr("v%1").arg(itemPtr->btVersion) : QString(); + return isEndpoint ? (u'v' + QString::number(itemPtr->btVersion)) : QString(); case COL_STATUS: if (isEndpoint) return toString(itemPtr->status); @@ -697,10 +703,10 @@ QModelIndex TrackerListModel::parent(const QModelIndex &index) const void TrackerListModel::onTrackersAdded(const QList &newTrackers) { - const auto row = rowCount(); + const int row = rowCount(); beginInsertRows({}, row, (row + newTrackers.size() - 1)); - for (const BitTorrent::TrackerEntry &trackerEntry : newTrackers) - addTrackerItem(trackerEntry); + for (const BitTorrent::TrackerEntry &entry : newTrackers) + addTrackerItem({entry.url, entry.tier}); endInsertRows(); } @@ -727,18 +733,18 @@ void TrackerListModel::onTrackersChanged() trackerItemIDs.insert(m_items->at(i)->name); QList> newTrackerItems; - for (const BitTorrent::TrackerEntry &trackerEntry : m_torrent->trackers()) + for (const BitTorrent::TrackerEntryStatus &trackerEntryStatus : m_torrent->trackers()) { - trackerItemIDs.insert(trackerEntry.url); + trackerItemIDs.insert(trackerEntryStatus.url); auto &itemsByName = m_items->get(); - if (const auto &iter = itemsByName.find(trackerEntry.url); iter != itemsByName.end()) + if (const auto &iter = itemsByName.find(trackerEntryStatus.url); iter != itemsByName.end()) { - updateTrackerItem(*iter, trackerEntry); + updateTrackerItem(*iter, trackerEntryStatus); } else { - newTrackerItems.emplace_back(createTrackerItem(trackerEntry)); + newTrackerItems.emplace_back(createTrackerItem(trackerEntryStatus)); } } @@ -760,7 +766,7 @@ void TrackerListModel::onTrackersChanged() if (!newTrackerItems.isEmpty()) { - const auto numRows = rowCount(); + const int numRows = rowCount(); beginInsertRows({}, numRows, (numRows + newTrackerItems.size() - 1)); for (const auto &newTrackerItem : asConst(newTrackerItems)) m_items->get<0>().push_back(newTrackerItem); @@ -768,14 +774,14 @@ void TrackerListModel::onTrackersChanged() } } -void TrackerListModel::onTrackersUpdated(const QHash &updatedTrackers) +void TrackerListModel::onTrackersUpdated(const QHash &updatedTrackers) { - for (const auto &[url, entry] : updatedTrackers.asKeyValueRange()) + for (const auto &[url, tracker] : updatedTrackers.asKeyValueRange()) { auto &itemsByName = m_items->get(); - if (const auto &iter = itemsByName.find(entry.url); iter != itemsByName.end()) [[likely]] + if (const auto &iter = itemsByName.find(tracker.url); iter != itemsByName.end()) [[likely]] { - updateTrackerItem(*iter, entry); + updateTrackerItem(*iter, tracker); } } } diff --git a/src/gui/trackerlist/trackerlistmodel.h b/src/gui/trackerlist/trackerlistmodel.h index 2065a4eb2e53..523f894b5c7c 100644 --- a/src/gui/trackerlist/trackerlistmodel.h +++ b/src/gui/trackerlist/trackerlistmodel.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -33,9 +33,9 @@ #include #include -#include -#include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/announcetimepoint.h" +#include "base/bittorrent/trackerentrystatus.h" class QTimer; @@ -43,6 +43,7 @@ namespace BitTorrent { class Session; class Torrent; + struct TrackerEntry; } class TrackerListModel final : public QAbstractItemModel @@ -99,14 +100,14 @@ class TrackerListModel final : public QAbstractItemModel struct Item; void populate(); - std::shared_ptr createTrackerItem(const BitTorrent::TrackerEntry &trackerEntry); - void addTrackerItem(const BitTorrent::TrackerEntry &trackerEntry); - void updateTrackerItem(const std::shared_ptr &item, const BitTorrent::TrackerEntry &trackerEntry); + std::shared_ptr createTrackerItem(const BitTorrent::TrackerEntryStatus &trackerEntryStatus); + void addTrackerItem(const BitTorrent::TrackerEntryStatus &trackerEntryStatus); + void updateTrackerItem(const std::shared_ptr &item, const BitTorrent::TrackerEntryStatus &trackerEntryStatus); void refreshAnnounceTimes(); void onTrackersAdded(const QList &newTrackers); void onTrackersRemoved(const QStringList &deletedTrackers); void onTrackersChanged(); - void onTrackersUpdated(const QHash &updatedTrackers); + void onTrackersUpdated(const QHash &updatedTrackers); BitTorrent::Session *m_btSession = nullptr; BitTorrent::Torrent *m_torrent = nullptr; @@ -114,6 +115,6 @@ class TrackerListModel final : public QAbstractItemModel class Items; std::unique_ptr m_items; - QDateTime m_announceTimestamp; + BitTorrent::AnnounceTimePoint m_announceTimestamp; QTimer *m_announceRefreshTimer = nullptr; }; diff --git a/src/gui/trackerlist/trackerlistwidget.cpp b/src/gui/trackerlist/trackerlistwidget.cpp index 0cc73898d637..51ef35c9c57a 100644 --- a/src/gui/trackerlist/trackerlistwidget.cpp +++ b/src/gui/trackerlist/trackerlistwidget.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -42,12 +43,11 @@ #include #include #include -#include #include #include "base/bittorrent/session.h" #include "base/bittorrent/torrent.h" -#include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/global.h" #include "base/preferences.h" #include "gui/autoexpandabledialog.h" @@ -142,52 +142,68 @@ QModelIndexList TrackerListWidget::getSelectedTrackerRows() const void TrackerListWidget::decreaseSelectedTrackerTiers() { - const auto &trackerIndexes = getSelectedTrackerRows(); + const QModelIndexList trackerIndexes = getSelectedTrackerRows(); if (trackerIndexes.isEmpty()) return; QSet trackerURLs; + trackerURLs.reserve(trackerIndexes.size()); for (const QModelIndex &index : trackerIndexes) - { trackerURLs.insert(index.siblingAtColumn(TrackerListModel::COL_URL).data().toString()); - } - QList trackers = m_model->torrent()->trackers(); - for (BitTorrent::TrackerEntry &trackerEntry : trackers) + const QList trackers = m_model->torrent()->trackers(); + QList adjustedTrackers; + adjustedTrackers.reserve(trackers.size()); + + for (const BitTorrent::TrackerEntryStatus &status : trackers) { - if (trackerURLs.contains(trackerEntry.url)) + BitTorrent::TrackerEntry entry + { + .url = status.url, + .tier = status.tier + }; + if (trackerURLs.contains(entry.url)) { - if (trackerEntry.tier > 0) - --trackerEntry.tier; + if (entry.tier > 0) + --entry.tier; } + adjustedTrackers.append(entry); } - m_model->torrent()->replaceTrackers(trackers); + m_model->torrent()->replaceTrackers(adjustedTrackers); } void TrackerListWidget::increaseSelectedTrackerTiers() { - const auto &trackerIndexes = getSelectedTrackerRows(); + const QModelIndexList trackerIndexes = getSelectedTrackerRows(); if (trackerIndexes.isEmpty()) return; QSet trackerURLs; + trackerURLs.reserve(trackerIndexes.size()); for (const QModelIndex &index : trackerIndexes) - { trackerURLs.insert(index.siblingAtColumn(TrackerListModel::COL_URL).data().toString()); - } - QList trackers = m_model->torrent()->trackers(); - for (BitTorrent::TrackerEntry &trackerEntry : trackers) + const QList trackers = m_model->torrent()->trackers(); + QList adjustedTrackers; + adjustedTrackers.reserve(trackers.size()); + + for (const BitTorrent::TrackerEntryStatus &status : trackers) { - if (trackerURLs.contains(trackerEntry.url)) + BitTorrent::TrackerEntry entry { - if (trackerEntry.tier < std::numeric_limits::max()) - ++trackerEntry.tier; + .url = status.url, + .tier = status.tier + }; + if (trackerURLs.contains(entry.url)) + { + if (entry.tier < std::numeric_limits::max()) + ++entry.tier; } + adjustedTrackers.append(entry); } - m_model->torrent()->replaceTrackers(trackers); + m_model->torrent()->replaceTrackers(adjustedTrackers); } void TrackerListWidget::openAddTrackersDialog() @@ -205,7 +221,7 @@ void TrackerListWidget::copyTrackerUrl() if (!torrent()) return; - const auto &selectedTrackerIndexes = getSelectedTrackerRows(); + const QModelIndexList selectedTrackerIndexes = getSelectedTrackerRows(); if (selectedTrackerIndexes.isEmpty()) return; @@ -226,7 +242,7 @@ void TrackerListWidget::deleteSelectedTrackers() if (!torrent()) return; - const auto &selectedTrackerIndexes = getSelectedTrackerRows(); + const QModelIndexList selectedTrackerIndexes = getSelectedTrackerRows(); if (selectedTrackerIndexes.isEmpty()) return; @@ -245,7 +261,7 @@ void TrackerListWidget::editSelectedTracker() if (!torrent()) return; - const auto &selectedTrackerIndexes = getSelectedTrackerRows(); + const QModelIndexList selectedTrackerIndexes = getSelectedTrackerRows(); if (selectedTrackerIndexes.isEmpty()) return; @@ -268,24 +284,36 @@ void TrackerListWidget::editSelectedTracker() if (newTrackerURL == trackerURL) return; - QList trackers = torrent()->trackers(); + const QList trackers = torrent()->trackers(); + QList entries; + entries.reserve(trackers.size()); + bool match = false; - for (BitTorrent::TrackerEntry &entry : trackers) + for (const BitTorrent::TrackerEntryStatus &status : trackers) { - if (newTrackerURL == QUrl(entry.url)) + const QUrl url {status.url}; + + if (newTrackerURL == url) { QMessageBox::warning(this, tr("Tracker editing failed"), tr("The tracker URL already exists.")); return; } - if (!match && (trackerURL == QUrl(entry.url))) + BitTorrent::TrackerEntry entry + { + .url = status.url, + .tier = status.tier + }; + + if (!match && (trackerURL == url)) { match = true; entry.url = newTrackerURL.toString(); } + entries.append(entry); } - torrent()->replaceTrackers(trackers); + torrent()->replaceTrackers(entries); } void TrackerListWidget::reannounceSelected() @@ -315,14 +343,12 @@ void TrackerListWidget::reannounceSelected() trackerURLs.insert(index.siblingAtColumn(TrackerListModel::COL_URL).data().toString()); } - const QList &trackers = m_model->torrent()->trackers(); + const QList &trackers = m_model->torrent()->trackers(); for (qsizetype i = 0; i < trackers.size(); ++i) { - const BitTorrent::TrackerEntry &trackerEntry = trackers.at(i); - if (trackerURLs.contains(trackerEntry.url)) - { + const BitTorrent::TrackerEntryStatus &status = trackers.at(i); + if (trackerURLs.contains(status.url)) torrent()->forceReannounce(i); - } } } @@ -346,14 +372,14 @@ void TrackerListWidget::showTrackerListMenu() , this, &TrackerListWidget::deleteSelectedTrackers); menu->addAction(UIThemeManager::instance()->getIcon(u"edit-copy"_s), tr("Copy tracker URL") , this, &TrackerListWidget::copyTrackerUrl); - if (!torrent()->isPaused()) + if (!torrent()->isStopped()) { menu->addAction(UIThemeManager::instance()->getIcon(u"reannounce"_s, u"view-refresh"_s), tr("Force reannounce to selected trackers") , this, &TrackerListWidget::reannounceSelected); } } - if (!torrent()->isPaused()) + if (!torrent()->isStopped()) { menu->addSeparator(); menu->addAction(UIThemeManager::instance()->getIcon(u"reannounce"_s, u"view-refresh"_s), tr("Force reannounce to all trackers") diff --git a/src/gui/trackersadditiondialog.cpp b/src/gui/trackersadditiondialog.cpp index 344bd2fd6314..0014d5a5521b 100644 --- a/src/gui/trackersadditiondialog.cpp +++ b/src/gui/trackersadditiondialog.cpp @@ -29,16 +29,18 @@ #include "trackersadditiondialog.h" +#include #include #include #include -#include #include "base/bittorrent/torrent.h" #include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/global.h" #include "base/net/downloadmanager.h" #include "base/preferences.h" +#include "base/utils/number.h" #include "gui/uithememanager.h" #include "ui_trackersadditiondialog.h" @@ -74,7 +76,13 @@ TrackersAdditionDialog::~TrackersAdditionDialog() void TrackersAdditionDialog::onAccepted() const { - const QVector entries = BitTorrent::parseTrackerEntries(m_ui->textEditTrackersList->toPlainText()); + const QList currentTrackers = m_torrent->trackers(); + const int baseTier = !currentTrackers.isEmpty() ? (currentTrackers.last().tier + 1) : 0; + + QList entries = BitTorrent::parseTrackerEntries(m_ui->textEditTrackersList->toPlainText()); + for (BitTorrent::TrackerEntry &entry : entries) + entry.tier = Utils::Number::clampingAdd(entry.tier, baseTier); + m_torrent->addTrackers(entries); } diff --git a/src/gui/trackersadditiondialog.ui b/src/gui/trackersadditiondialog.ui index 4f97142b4ce7..75c57445904e 100644 --- a/src/gui/trackersadditiondialog.ui +++ b/src/gui/trackersadditiondialog.ui @@ -23,8 +23,11 @@ + + true + - QTextEdit::NoWrap + QTextEdit::LineWrapMode::NoWrap false @@ -55,10 +58,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/transferlistdelegate.cpp b/src/gui/transferlistdelegate.cpp index dc21654d7fd1..e08cb7ef81e2 100644 --- a/src/gui/transferlistdelegate.cpp +++ b/src/gui/transferlistdelegate.cpp @@ -74,7 +74,7 @@ void TransferListDelegate::paint(QPainter *painter, const QStyleOptionViewItem & switch (state) { case TorrentState::Error: - case TorrentState::PausedDownloading: + case TorrentState::StoppedDownloading: case TorrentState::Unknown: return false; default: diff --git a/src/gui/transferlistfilters/basefilterwidget.h b/src/gui/transferlistfilters/basefilterwidget.h index 9f0afecdb080..912986098b2a 100644 --- a/src/gui/transferlistfilters/basefilterwidget.h +++ b/src/gui/transferlistfilters/basefilterwidget.h @@ -55,7 +55,7 @@ public slots: private slots: virtual void showMenu() = 0; virtual void applyFilter(int row) = 0; - virtual void handleTorrentsLoaded(const QVector &torrents) = 0; + virtual void handleTorrentsLoaded(const QList &torrents) = 0; virtual void torrentAboutToBeDeleted(BitTorrent::Torrent *) = 0; private: diff --git a/src/gui/transferlistfilters/categoryfiltermodel.cpp b/src/gui/transferlistfilters/categoryfiltermodel.cpp index 294966c3186b..ecee8997520d 100644 --- a/src/gui/transferlistfilters/categoryfiltermodel.cpp +++ b/src/gui/transferlistfilters/categoryfiltermodel.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2016 Vladimir Golovnev + * Copyright (C) 2016-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -38,6 +38,9 @@ class CategoryModelItem { public: + inline static const QString UID_ALL {QChar(1)}; + inline static const QString UID_UNCATEGORIZED; + CategoryModelItem() = default; CategoryModelItem(CategoryModelItem *parent, const QString &categoryName, const int torrentsCount = 0) @@ -99,9 +102,21 @@ class CategoryModelItem int pos() const { - if (!m_parent) return -1; + if (!m_parent) + return -1; + + if (const int posByName = m_parent->m_childUids.indexOf(m_name); posByName >= 0) + return posByName; + + // special cases + if (this == m_parent->m_children[UID_ALL]) + return 0; + + if (this == m_parent->m_children[UID_UNCATEGORIZED]) + return 1; - return m_parent->m_childUids.indexOf(m_name); + Q_ASSERT(false); + return -1; } bool hasChild(const QString &name) const @@ -202,7 +217,8 @@ int CategoryFilterModel::columnCount(const QModelIndex &) const QVariant CategoryFilterModel::data(const QModelIndex &index, int role) const { - if (!index.isValid()) return {}; + if (!index.isValid()) + return {}; const auto *item = static_cast(index.internalPointer()); @@ -248,8 +264,8 @@ QModelIndex CategoryFilterModel::index(int row, int column, const QModelIndex &p if (parent.isValid() && (parent.column() != 0)) return {}; - auto *parentItem = parent.isValid() ? static_cast(parent.internalPointer()) - : m_rootItem; + auto *parentItem = parent.isValid() + ? static_cast(parent.internalPointer()) : m_rootItem; if (row < parentItem->childCount()) return createIndex(row, column, parentItem->childAt(row)); @@ -262,7 +278,8 @@ QModelIndex CategoryFilterModel::parent(const QModelIndex &index) const return {}; auto *item = static_cast(index.internalPointer()); - if (!item) return {}; + if (!item) + return {}; return this->index(item->parent()); } @@ -276,7 +293,8 @@ int CategoryFilterModel::rowCount(const QModelIndex &parent) const return m_rootItem->childCount(); auto *item = static_cast(parent.internalPointer()); - if (!item) return 0; + if (!item) + return 0; return item->childCount(); } @@ -288,13 +306,16 @@ QModelIndex CategoryFilterModel::index(const QString &categoryName) const QString CategoryFilterModel::categoryName(const QModelIndex &index) const { - if (!index.isValid()) return {}; + if (!index.isValid()) + return {}; + return static_cast(index.internalPointer())->fullName(); } QModelIndex CategoryFilterModel::index(CategoryModelItem *item) const { - if (!item || !item->parent()) return {}; + if (!item || !item->parent()) + return {}; return index(item->pos(), 0, index(item->parent())); } @@ -329,7 +350,7 @@ void CategoryFilterModel::categoryRemoved(const QString &categoryName) } } -void CategoryFilterModel::torrentsLoaded(const QVector &torrents) +void CategoryFilterModel::torrentsLoaded(const QList &torrents) { for (const BitTorrent::Torrent *torrent : torrents) { @@ -337,8 +358,17 @@ void CategoryFilterModel::torrentsLoaded(const QVector &t Q_ASSERT(item); item->increaseTorrentsCount(); + QModelIndex i = index(item); + while (i.isValid()) + { + emit dataChanged(i, i); + i = parent(i); + } + m_rootItem->childAt(0)->increaseTorrentsCount(); } + + emit dataChanged(index(0, 0), index(0, 0)); } void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent) @@ -347,18 +377,24 @@ void CategoryFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const tor Q_ASSERT(item); item->decreaseTorrentsCount(); + QModelIndex i = index(item); + while (i.isValid()) + { + emit dataChanged(i, i); + i = parent(i); + } + m_rootItem->childAt(0)->decreaseTorrentsCount(); + emit dataChanged(index(0, 0), index(0, 0)); } void CategoryFilterModel::torrentCategoryChanged(BitTorrent::Torrent *const torrent, const QString &oldCategory) { - QModelIndex i; - auto *item = findItem(oldCategory); Q_ASSERT(item); item->decreaseTorrentsCount(); - i = index(item); + QModelIndex i = index(item); while (i.isValid()) { emit dataChanged(i, i); @@ -392,17 +428,16 @@ void CategoryFilterModel::populate() const auto torrents = session->torrents(); m_isSubcategoriesEnabled = session->isSubcategoriesEnabled(); - const QString UID_ALL; - const QString UID_UNCATEGORIZED(QChar(1)); - // All torrents - m_rootItem->addChild(UID_ALL, new CategoryModelItem(nullptr, tr("All"), torrents.count())); + m_rootItem->addChild(CategoryModelItem::UID_ALL + , new CategoryModelItem(nullptr, tr("All"), torrents.count())); // Uncategorized torrents using Torrent = BitTorrent::Torrent; const int torrentsCount = std::count_if(torrents.begin(), torrents.end() - , [](Torrent *torrent) { return torrent->category().isEmpty(); }); - m_rootItem->addChild(UID_UNCATEGORIZED, new CategoryModelItem(nullptr, tr("Uncategorized"), torrentsCount)); + , [](Torrent *torrent) { return torrent->category().isEmpty(); }); + m_rootItem->addChild(CategoryModelItem::UID_UNCATEGORIZED + , new CategoryModelItem(nullptr, tr("Uncategorized"), torrentsCount)); using BitTorrent::Torrent; if (m_isSubcategoriesEnabled) @@ -446,7 +481,9 @@ CategoryModelItem *CategoryFilterModel::findItem(const QString &fullName) const for (const QString &subcat : asConst(BitTorrent::Session::expandCategory(fullName))) { const QString subcatName = shortName(subcat); - if (!item->hasChild(subcatName)) return nullptr; + if (!item->hasChild(subcatName)) + return nullptr; + item = item->child(subcatName); } diff --git a/src/gui/transferlistfilters/categoryfiltermodel.h b/src/gui/transferlistfilters/categoryfiltermodel.h index 9576f094a768..fce28243d1ea 100644 --- a/src/gui/transferlistfilters/categoryfiltermodel.h +++ b/src/gui/transferlistfilters/categoryfiltermodel.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2016 Vladimir Golovnev + * Copyright (C) 2016-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -62,7 +62,7 @@ class CategoryFilterModel final : public QAbstractItemModel private slots: void categoryAdded(const QString &categoryName); void categoryRemoved(const QString &categoryName); - void torrentsLoaded(const QVector &torrents); + void torrentsLoaded(const QList &torrents); void torrentAboutToBeRemoved(BitTorrent::Torrent *torrent); void torrentCategoryChanged(BitTorrent::Torrent *torrent, const QString &oldCategory); void subcategoriesSupportChanged(); diff --git a/src/gui/transferlistfilters/categoryfilterwidget.cpp b/src/gui/transferlistfilters/categoryfilterwidget.cpp index 655b5ffbd92a..49bab70c468b 100644 --- a/src/gui/transferlistfilters/categoryfilterwidget.cpp +++ b/src/gui/transferlistfilters/categoryfilterwidget.cpp @@ -128,10 +128,10 @@ void CategoryFilterWidget::showMenu() menu->addAction(UIThemeManager::instance()->getIcon(u"edit-clear"_s, u"list-remove"_s), tr("Remove unused categories") , this, &CategoryFilterWidget::removeUnusedCategories); menu->addSeparator(); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Resume torrents") - , this, &CategoryFilterWidget::actionResumeTorrentsTriggered); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Pause torrents") - , this, &CategoryFilterWidget::actionPauseTorrentsTriggered); + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Start torrents") + , this, &CategoryFilterWidget::actionStartTorrentsTriggered); + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Stop torrents") + , this, &CategoryFilterWidget::actionStopTorrentsTriggered); menu->addAction(UIThemeManager::instance()->getIcon(u"list-remove"_s), tr("Remove torrents") , this, &CategoryFilterWidget::actionDeleteTorrentsTriggered); diff --git a/src/gui/transferlistfilters/categoryfilterwidget.h b/src/gui/transferlistfilters/categoryfilterwidget.h index 6ca759b95ad9..d340d933786d 100644 --- a/src/gui/transferlistfilters/categoryfilterwidget.h +++ b/src/gui/transferlistfilters/categoryfilterwidget.h @@ -42,8 +42,8 @@ class CategoryFilterWidget final : public QTreeView signals: void categoryChanged(const QString &categoryName); - void actionResumeTorrentsTriggered(); - void actionPauseTorrentsTriggered(); + void actionStartTorrentsTriggered(); + void actionStopTorrentsTriggered(); void actionDeleteTorrentsTriggered(); private slots: diff --git a/src/gui/transferlistfilters/statusfilterwidget.cpp b/src/gui/transferlistfilters/statusfilterwidget.cpp index 99b00af76207..92f9d8c3e2c6 100644 --- a/src/gui/transferlistfilters/statusfilterwidget.cpp +++ b/src/gui/transferlistfilters/statusfilterwidget.cpp @@ -55,12 +55,12 @@ StatusFilterWidget::StatusFilterWidget(QWidget *parent, TransferListWidget *tran auto *completed = new QListWidgetItem(this); completed->setData(Qt::DisplayRole, tr("Completed (0)")); completed->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"checked-completed"_s, u"completed"_s)); - auto *resumed = new QListWidgetItem(this); - resumed->setData(Qt::DisplayRole, tr("Resumed (0)")); - resumed->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s)); - auto *paused = new QListWidgetItem(this); - paused->setData(Qt::DisplayRole, tr("Paused (0)")); - paused->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"stopped"_s, u"media-playback-pause"_s)); + auto *running = new QListWidgetItem(this); + running->setData(Qt::DisplayRole, tr("Running (0)")); + running->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s)); + auto *stopped = new QListWidgetItem(this); + stopped->setData(Qt::DisplayRole, tr("Stopped (0)")); + stopped->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"stopped"_s, u"media-playback-pause"_s)); auto *active = new QListWidgetItem(this); active->setData(Qt::DisplayRole, tr("Active (0)")); active->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"filter-active"_s, u"filteractive"_s)); @@ -86,7 +86,7 @@ StatusFilterWidget::StatusFilterWidget(QWidget *parent, TransferListWidget *tran errored->setData(Qt::DisplayRole, tr("Errored (0)")); errored->setData(Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"error"_s)); - const QVector torrents = BitTorrent::Session::instance()->torrents(); + const QList torrents = BitTorrent::Session::instance()->torrents(); update(torrents); connect(BitTorrent::Session::instance(), &BitTorrent::Session::torrentsUpdated , this, &StatusFilterWidget::update); @@ -95,7 +95,7 @@ StatusFilterWidget::StatusFilterWidget(QWidget *parent, TransferListWidget *tran connect(pref, &Preferences::changed, this, &StatusFilterWidget::configure); const int storedRow = pref->getTransSelFilter(); - if (item((storedRow < count()) ? storedRow : 0)->isHidden()) + if (item(((storedRow >= 0) && (storedRow < count())) ? storedRow : 0)->isHidden()) setCurrentRow(TorrentFilter::All, QItemSelectionModel::SelectCurrent); else setCurrentRow(storedRow, QItemSelectionModel::SelectCurrent); @@ -147,8 +147,8 @@ void StatusFilterWidget::updateTorrentStatus(const BitTorrent::Torrent *torrent) update(TorrentFilter::Downloading, m_nbDownloading); update(TorrentFilter::Seeding, m_nbSeeding); update(TorrentFilter::Completed, m_nbCompleted); - update(TorrentFilter::Resumed, m_nbResumed); - update(TorrentFilter::Paused, m_nbPaused); + update(TorrentFilter::Running, m_nbRunning); + update(TorrentFilter::Stopped, m_nbStopped); update(TorrentFilter::Active, m_nbActive); update(TorrentFilter::Inactive, m_nbInactive); update(TorrentFilter::StalledUploading, m_nbStalledUploading); @@ -167,8 +167,8 @@ void StatusFilterWidget::updateTexts() item(TorrentFilter::Downloading)->setData(Qt::DisplayRole, tr("Downloading (%1)").arg(m_nbDownloading)); item(TorrentFilter::Seeding)->setData(Qt::DisplayRole, tr("Seeding (%1)").arg(m_nbSeeding)); item(TorrentFilter::Completed)->setData(Qt::DisplayRole, tr("Completed (%1)").arg(m_nbCompleted)); - item(TorrentFilter::Resumed)->setData(Qt::DisplayRole, tr("Resumed (%1)").arg(m_nbResumed)); - item(TorrentFilter::Paused)->setData(Qt::DisplayRole, tr("Paused (%1)").arg(m_nbPaused)); + item(TorrentFilter::Running)->setData(Qt::DisplayRole, tr("Running (%1)").arg(m_nbRunning)); + item(TorrentFilter::Stopped)->setData(Qt::DisplayRole, tr("Stopped (%1)").arg(m_nbStopped)); item(TorrentFilter::Active)->setData(Qt::DisplayRole, tr("Active (%1)").arg(m_nbActive)); item(TorrentFilter::Inactive)->setData(Qt::DisplayRole, tr("Inactive (%1)").arg(m_nbInactive)); item(TorrentFilter::Stalled)->setData(Qt::DisplayRole, tr("Stalled (%1)").arg(m_nbStalled)); @@ -184,8 +184,8 @@ void StatusFilterWidget::hideZeroItems() item(TorrentFilter::Downloading)->setHidden(m_nbDownloading == 0); item(TorrentFilter::Seeding)->setHidden(m_nbSeeding == 0); item(TorrentFilter::Completed)->setHidden(m_nbCompleted == 0); - item(TorrentFilter::Resumed)->setHidden(m_nbResumed == 0); - item(TorrentFilter::Paused)->setHidden(m_nbPaused == 0); + item(TorrentFilter::Running)->setHidden(m_nbRunning == 0); + item(TorrentFilter::Stopped)->setHidden(m_nbStopped == 0); item(TorrentFilter::Active)->setHidden(m_nbActive == 0); item(TorrentFilter::Inactive)->setHidden(m_nbInactive == 0); item(TorrentFilter::Stalled)->setHidden(m_nbStalled == 0); @@ -199,7 +199,7 @@ void StatusFilterWidget::hideZeroItems() setCurrentRow(TorrentFilter::All, QItemSelectionModel::SelectCurrent); } -void StatusFilterWidget::update(const QVector &torrents) +void StatusFilterWidget::update(const QList &torrents) { for (const BitTorrent::Torrent *torrent : torrents) updateTorrentStatus(torrent); @@ -218,10 +218,10 @@ void StatusFilterWidget::showMenu() QMenu *menu = new QMenu(this); menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Resume torrents") + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Start torrents") , transferList(), &TransferListWidget::startVisibleTorrents); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Pause torrents") - , transferList(), &TransferListWidget::pauseVisibleTorrents); + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Stop torrents") + , transferList(), &TransferListWidget::stopVisibleTorrents); menu->addAction(UIThemeManager::instance()->getIcon(u"list-remove"_s), tr("Remove torrents") , transferList(), &TransferListWidget::deleteVisibleTorrents); @@ -233,12 +233,9 @@ void StatusFilterWidget::applyFilter(int row) transferList()->applyStatusFilter(row); } -void StatusFilterWidget::handleTorrentsLoaded(const QVector &torrents) +void StatusFilterWidget::handleTorrentsLoaded(const QList &torrents) { - for (const BitTorrent::Torrent *torrent : torrents) - updateTorrentStatus(torrent); - - updateTexts(); + update(torrents); } void StatusFilterWidget::torrentAboutToBeDeleted(BitTorrent::Torrent *const torrent) @@ -251,10 +248,10 @@ void StatusFilterWidget::torrentAboutToBeDeleted(BitTorrent::Torrent *const torr --m_nbSeeding; if (status[TorrentFilter::Completed]) --m_nbCompleted; - if (status[TorrentFilter::Resumed]) - --m_nbResumed; - if (status[TorrentFilter::Paused]) - --m_nbPaused; + if (status[TorrentFilter::Running]) + --m_nbRunning; + if (status[TorrentFilter::Stopped]) + --m_nbStopped; if (status[TorrentFilter::Active]) --m_nbActive; if (status[TorrentFilter::Inactive]) @@ -273,6 +270,12 @@ void StatusFilterWidget::torrentAboutToBeDeleted(BitTorrent::Torrent *const torr m_nbStalled = m_nbStalledUploading + m_nbStalledDownloading; updateTexts(); + + if (Preferences::instance()->getHideZeroStatusFilters()) + { + hideZeroItems(); + updateGeometry(); + } } void StatusFilterWidget::configure() diff --git a/src/gui/transferlistfilters/statusfilterwidget.h b/src/gui/transferlistfilters/statusfilterwidget.h index ac1bbd5a546d..3e78e333752e 100644 --- a/src/gui/transferlistfilters/statusfilterwidget.h +++ b/src/gui/transferlistfilters/statusfilterwidget.h @@ -53,12 +53,12 @@ class StatusFilterWidget final : public BaseFilterWidget // No need to redeclare them here as slots. void showMenu() override; void applyFilter(int row) override; - void handleTorrentsLoaded(const QVector &torrents) override; + void handleTorrentsLoaded(const QList &torrents) override; void torrentAboutToBeDeleted(BitTorrent::Torrent *) override; void configure(); - void update(const QVector &torrents); + void update(const QList &torrents); void updateTorrentStatus(const BitTorrent::Torrent *torrent); void updateTexts(); void hideZeroItems(); @@ -68,8 +68,8 @@ class StatusFilterWidget final : public BaseFilterWidget int m_nbDownloading = 0; int m_nbSeeding = 0; int m_nbCompleted = 0; - int m_nbResumed = 0; - int m_nbPaused = 0; + int m_nbRunning = 0; + int m_nbStopped = 0; int m_nbActive = 0; int m_nbInactive = 0; int m_nbStalled = 0; diff --git a/src/gui/transferlistfilters/tagfiltermodel.cpp b/src/gui/transferlistfilters/tagfiltermodel.cpp index 35c74a42cced..da76e7be65be 100644 --- a/src/gui/transferlistfilters/tagfiltermodel.cpp +++ b/src/gui/transferlistfilters/tagfiltermodel.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2017 Tony Gregerson * * This program is free software; you can redistribute it and/or @@ -28,41 +29,26 @@ #include "tagfiltermodel.h" -#include #include -#include +#include #include "base/bittorrent/session.h" #include "base/global.h" #include "gui/uithememanager.h" -namespace -{ - QString getSpecialAllTag() - { - const QString ALL_TAG = u" "_s; - Q_ASSERT(!BitTorrent::Session::isValidTag(ALL_TAG)); - return ALL_TAG; - } - - QString getSpecialUntaggedTag() - { - const QString UNTAGGED_TAG = u" "_s; - Q_ASSERT(!BitTorrent::Session::isValidTag(UNTAGGED_TAG)); - return UNTAGGED_TAG; - } -} +const int ROW_ALL = 0; +const int ROW_UNTAGGED = 1; class TagModelItem { public: - TagModelItem(const QString &tag, int torrentsCount = 0) - : m_tag(tag) - , m_torrentsCount(torrentsCount) + TagModelItem(const Tag &tag, int torrentsCount = 0) + : m_tag {tag} + , m_torrentsCount {torrentsCount} { } - QString tag() const + Tag tag() const { return m_tag; } @@ -84,7 +70,7 @@ class TagModelItem } private: - QString m_tag; + Tag m_tag; int m_torrentsCount; }; @@ -120,12 +106,25 @@ QVariant TagFilterModel::data(const QModelIndex &index, int role) const Q_ASSERT(isValidRow(row)); const TagModelItem &item = m_tagItems[row]; + const auto displayName = [&row, tag = item.tag()] + { + switch (row) + { + case 0: + return tr("All"); + case 1: + return tr("Untagged"); + default: + return tag.toString(); + } + }; + switch (role) { case Qt::DecorationRole: return UIThemeManager::instance()->getIcon(u"tags"_s, u"inode-directory"_s); case Qt::DisplayRole: - return u"%1 (%2)"_s.arg(tagDisplayName(item.tag())).arg(item.torrentsCount()); + return u"%1 (%2)"_s.arg(displayName(), QString::number(item.torrentsCount())); case Qt::UserRole: return item.torrentsCount(); default: @@ -167,7 +166,7 @@ bool TagFilterModel::isValidRow(int row) const return (row >= 0) && (row < m_tagItems.size()); } -QModelIndex TagFilterModel::index(const QString &tag) const +QModelIndex TagFilterModel::index(const Tag &tag) const { const int row = findRow(tag); if (!isValidRow(row)) @@ -175,7 +174,7 @@ QModelIndex TagFilterModel::index(const QString &tag) const return index(row, 0, QModelIndex()); } -QString TagFilterModel::tag(const QModelIndex &index) const +Tag TagFilterModel::tag(const QModelIndex &index) const { if (!index.isValid()) return {}; @@ -184,7 +183,7 @@ QString TagFilterModel::tag(const QModelIndex &index) const return m_tagItems[row].tag(); } -void TagFilterModel::tagAdded(const QString &tag) +void TagFilterModel::tagAdded(const Tag &tag) { const int row = m_tagItems.count(); beginInsertRows(QModelIndex(), row, row); @@ -192,7 +191,7 @@ void TagFilterModel::tagAdded(const QString &tag) endInsertRows(); } -void TagFilterModel::tagRemoved(const QString &tag) +void TagFilterModel::tagRemoved(const Tag &tag) { QModelIndex i = index(tag); beginRemoveRows(i.parent(), i.row(), i.row()); @@ -200,24 +199,32 @@ void TagFilterModel::tagRemoved(const QString &tag) endRemoveRows(); } -void TagFilterModel::torrentTagAdded(BitTorrent::Torrent *const torrent, const QString &tag) +void TagFilterModel::torrentTagAdded(BitTorrent::Torrent *const torrent, const Tag &tag) { if (torrent->tags().count() == 1) + { untaggedItem()->decreaseTorrentsCount(); + const QModelIndex i = index(ROW_UNTAGGED, 0); + emit dataChanged(i, i); + } const int row = findRow(tag); Q_ASSERT(isValidRow(row)); TagModelItem &item = m_tagItems[row]; item.increaseTorrentsCount(); - const QModelIndex i = index(row, 0, QModelIndex()); + const QModelIndex i = index(row, 0); emit dataChanged(i, i); } -void TagFilterModel::torrentTagRemoved(BitTorrent::Torrent *const torrent, const QString &tag) +void TagFilterModel::torrentTagRemoved(BitTorrent::Torrent *const torrent, const Tag &tag) { if (torrent->tags().empty()) + { untaggedItem()->increaseTorrentsCount(); + const QModelIndex i = index(ROW_UNTAGGED, 0); + emit dataChanged(i, i); + } const int row = findRow(tag); if (row < 0) @@ -225,43 +232,56 @@ void TagFilterModel::torrentTagRemoved(BitTorrent::Torrent *const torrent, const m_tagItems[row].decreaseTorrentsCount(); - const QModelIndex i = index(row, 0, QModelIndex()); + const QModelIndex i = index(row, 0); emit dataChanged(i, i); } -void TagFilterModel::torrentsLoaded(const QVector &torrents) +void TagFilterModel::torrentsLoaded(const QList &torrents) { for (const BitTorrent::Torrent *torrent : torrents) { allTagsItem()->increaseTorrentsCount(); - const QVector items = findItems(torrent->tags()); + const QList items = findItems(torrent->tags()); if (items.isEmpty()) untaggedItem()->increaseTorrentsCount(); for (TagModelItem *item : items) item->increaseTorrentsCount(); } + + emit dataChanged(index(0, 0), index((rowCount() - 1), 0)); } void TagFilterModel::torrentAboutToBeRemoved(BitTorrent::Torrent *const torrent) { allTagsItem()->decreaseTorrentsCount(); + { + const QModelIndex i = index(ROW_ALL, 0); + emit dataChanged(i, i); + } + if (torrent->tags().isEmpty()) + { untaggedItem()->decreaseTorrentsCount(); - - for (TagModelItem *item : asConst(findItems(torrent->tags()))) - item->decreaseTorrentsCount(); -} - -QString TagFilterModel::tagDisplayName(const QString &tag) -{ - if (tag == getSpecialAllTag()) - return tr("All"); - if (tag == getSpecialUntaggedTag()) - return tr("Untagged"); - return tag; + const QModelIndex i = index(ROW_UNTAGGED, 0); + emit dataChanged(i, i); + } + else + { + for (const Tag &tag : asConst(torrent->tags())) + { + const int row = findRow(tag); + Q_ASSERT(isValidRow(row)); + if (!isValidRow(row)) [[unlikely]] + continue; + + m_tagItems[row].decreaseTorrentsCount(); + const QModelIndex i = index(row, 0); + emit dataChanged(i, i); + } + } } void TagFilterModel::populate() @@ -272,21 +292,21 @@ void TagFilterModel::populate() const auto torrents = session->torrents(); // All torrents - addToModel(getSpecialAllTag(), torrents.count()); + addToModel(Tag(), torrents.count()); - const int untaggedCount = std::count_if(torrents.cbegin(), torrents.cend(), - [](Torrent *torrent) { return torrent->tags().isEmpty(); }); - addToModel(getSpecialUntaggedTag(), untaggedCount); + const int untaggedCount = std::count_if(torrents.cbegin(), torrents.cend() + , [](Torrent *torrent) { return torrent->tags().isEmpty(); }); + addToModel(Tag(), untaggedCount); - for (const QString &tag : asConst(session->tags())) + for (const Tag &tag : asConst(session->tags())) { - const int count = std::count_if(torrents.cbegin(), torrents.cend(), - [tag](Torrent *torrent) { return torrent->hasTag(tag); }); + const int count = std::count_if(torrents.cbegin(), torrents.cend() + , [tag](Torrent *torrent) { return torrent->hasTag(tag); }); addToModel(tag, count); } } -void TagFilterModel::addToModel(const QString &tag, int count) +void TagFilterModel::addToModel(const Tag &tag, const int count) { m_tagItems.append(TagModelItem(tag, count)); } @@ -297,17 +317,21 @@ void TagFilterModel::removeFromModel(int row) m_tagItems.removeAt(row); } -int TagFilterModel::findRow(const QString &tag) const +int TagFilterModel::findRow(const Tag &tag) const { + if (!tag.isValid()) + return -1; + for (int i = 0; i < m_tagItems.size(); ++i) { if (m_tagItems[i].tag() == tag) return i; } + return -1; } -TagModelItem *TagFilterModel::findItem(const QString &tag) +TagModelItem *TagFilterModel::findItem(const Tag &tag) { const int row = findRow(tag); if (!isValidRow(row)) @@ -315,17 +339,17 @@ TagModelItem *TagFilterModel::findItem(const QString &tag) return &m_tagItems[row]; } -QVector TagFilterModel::findItems(const TagSet &tags) +QList TagFilterModel::findItems(const TagSet &tags) { - QVector items; + QList items; items.reserve(tags.count()); - for (const QString &tag : tags) + for (const Tag &tag : tags) { TagModelItem *item = findItem(tag); if (item) items.push_back(item); else - qWarning() << u"Requested tag '%1' missing from the model."_s.arg(tag); + qWarning() << u"Requested tag '%1' missing from the model."_s.arg(tag.toString()); } return items; } @@ -333,11 +357,11 @@ QVector TagFilterModel::findItems(const TagSet &tags) TagModelItem *TagFilterModel::allTagsItem() { Q_ASSERT(!m_tagItems.isEmpty()); - return &m_tagItems[0]; + return &m_tagItems[ROW_ALL]; } TagModelItem *TagFilterModel::untaggedItem() { - Q_ASSERT(m_tagItems.size() > 1); - return &m_tagItems[1]; + Q_ASSERT(m_tagItems.size() > ROW_UNTAGGED); + return &m_tagItems[ROW_UNTAGGED]; } diff --git a/src/gui/transferlistfilters/tagfiltermodel.h b/src/gui/transferlistfilters/tagfiltermodel.h index 577530ac861f..c58920287918 100644 --- a/src/gui/transferlistfilters/tagfiltermodel.h +++ b/src/gui/transferlistfilters/tagfiltermodel.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2017 Tony Gregerson * * This program is free software; you can redistribute it and/or @@ -55,27 +56,25 @@ class TagFilterModel final : public QAbstractListModel QModelIndex index(int row, int column, const QModelIndex &parent = {}) const override; int rowCount(const QModelIndex &parent = {}) const override; - QModelIndex index(const QString &tag) const; - QString tag(const QModelIndex &index) const; + QModelIndex index(const Tag &tag) const; + Tag tag(const QModelIndex &index) const; private slots: - void tagAdded(const QString &tag); - void tagRemoved(const QString &tag); - void torrentTagAdded(BitTorrent::Torrent *torrent, const QString &tag); - void torrentTagRemoved(BitTorrent::Torrent *, const QString &tag); - void torrentsLoaded(const QVector &torrents); + void tagAdded(const Tag &tag); + void tagRemoved(const Tag &tag); + void torrentTagAdded(BitTorrent::Torrent *torrent, const Tag &tag); + void torrentTagRemoved(BitTorrent::Torrent *, const Tag &tag); + void torrentsLoaded(const QList &torrents); void torrentAboutToBeRemoved(BitTorrent::Torrent *torrent); private: - static QString tagDisplayName(const QString &tag); - void populate(); - void addToModel(const QString &tag, int count); + void addToModel(const Tag &tag, int count); void removeFromModel(int row); bool isValidRow(int row) const; - int findRow(const QString &tag) const; - TagModelItem *findItem(const QString &tag); - QVector findItems(const TagSet &tags); + int findRow(const Tag &tag) const; + TagModelItem *findItem(const Tag &tag); + QList findItems(const TagSet &tags); TagModelItem *allTagsItem(); TagModelItem *untaggedItem(); diff --git a/src/gui/transferlistfilters/tagfilterproxymodel.cpp b/src/gui/transferlistfilters/tagfilterproxymodel.cpp index 732888c483ff..866a400d38e4 100644 --- a/src/gui/transferlistfilters/tagfilterproxymodel.cpp +++ b/src/gui/transferlistfilters/tagfilterproxymodel.cpp @@ -35,12 +35,12 @@ TagFilterProxyModel::TagFilterProxyModel(QObject *parent) { } -QModelIndex TagFilterProxyModel::index(const QString &tag) const +QModelIndex TagFilterProxyModel::index(const Tag &tag) const { return mapFromSource(static_cast(sourceModel())->index(tag)); } -QString TagFilterProxyModel::tag(const QModelIndex &index) const +Tag TagFilterProxyModel::tag(const QModelIndex &index) const { return static_cast(sourceModel())->tag(mapToSource(index)); } diff --git a/src/gui/transferlistfilters/tagfilterproxymodel.h b/src/gui/transferlistfilters/tagfilterproxymodel.h index 40390812f2f1..314fe84cbee4 100644 --- a/src/gui/transferlistfilters/tagfilterproxymodel.h +++ b/src/gui/transferlistfilters/tagfilterproxymodel.h @@ -34,14 +34,16 @@ class QString; +class Tag; + class TagFilterProxyModel final : public QSortFilterProxyModel { public: explicit TagFilterProxyModel(QObject *parent = nullptr); // TagFilterModel methods which we need to relay - QModelIndex index(const QString &tag) const; - QString tag(const QModelIndex &index) const; + QModelIndex index(const Tag &tag) const; + Tag tag(const QModelIndex &index) const; protected: bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; diff --git a/src/gui/transferlistfilters/tagfilterwidget.cpp b/src/gui/transferlistfilters/tagfilterwidget.cpp index 79b8bce2e5b9..fab4f8445a92 100644 --- a/src/gui/transferlistfilters/tagfilterwidget.cpp +++ b/src/gui/transferlistfilters/tagfilterwidget.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2017 Tony Gregerson * * This program is free software; you can redistribute it and/or @@ -41,17 +42,15 @@ namespace { - QString getTagFilter(const TagFilterProxyModel *const model, const QModelIndex &index) + std::optional getTagFilter(const TagFilterProxyModel *const model, const QModelIndex &index) { - QString tagFilter; // Defaults to All - if (index.isValid()) - { - if (index.row() == 1) - tagFilter = u""_s; // Untagged - else if (index.row() > 1) - tagFilter = model->tag(index); - } - return tagFilter; + if (!index.isValid() || (index.row() == 0)) + return std::nullopt; // All tags + + if (index.row() == 1) + return Tag(); // Untagged + + return model->tag(index); } } @@ -85,7 +84,7 @@ TagFilterWidget::TagFilterWidget(QWidget *parent) connect(model(), &QAbstractItemModel::modelReset, this, &TagFilterWidget::callUpdateGeometry); } -QString TagFilterWidget::currentTag() const +std::optional TagFilterWidget::currentTag() const { QModelIndex current; const auto selectedRows = selectionModel()->selectedRows(); @@ -118,10 +117,10 @@ void TagFilterWidget::showMenu() menu->addAction(UIThemeManager::instance()->getIcon(u"edit-clear"_s, u"list-remove"_s), tr("Remove unused tags") , this, &TagFilterWidget::removeUnusedTags); menu->addSeparator(); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Resume torrents") - , this, &TagFilterWidget::actionResumeTorrentsTriggered); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Pause torrents") - , this, &TagFilterWidget::actionPauseTorrentsTriggered); + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Start torrents") + , this, &TagFilterWidget::actionStartTorrentsTriggered); + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Stop torrents") + , this, &TagFilterWidget::actionStopTorrentsTriggered); menu->addAction(UIThemeManager::instance()->getIcon(u"list-remove"_s), tr("Remove torrents") , this, &TagFilterWidget::actionDeleteTorrentsTriggered); @@ -157,35 +156,36 @@ void TagFilterWidget::rowsInserted(const QModelIndex &parent, int start, int end updateGeometry(); } -QString TagFilterWidget::askTagName() +Tag TagFilterWidget::askTagName() { bool ok = false; - QString tag = u""_s; + Tag tag; bool invalid = true; while (invalid) { invalid = false; - tag = AutoExpandableDialog::getText( - this, tr("New Tag"), tr("Tag:"), QLineEdit::Normal, tag, &ok).trimmed(); + tag = Tag(AutoExpandableDialog::getText(this, tr("Add tag"), tr("Tag:") + , QLineEdit::Normal, tag.toString(), &ok)); if (ok && !tag.isEmpty()) { - if (!BitTorrent::Session::isValidTag(tag)) + if (!tag.isValid()) { QMessageBox::warning( this, tr("Invalid tag name") - , tr("Tag name '%1' is invalid").arg(tag)); + , tr("Tag name '%1' is invalid").arg(tag.toString())); invalid = true; } } } - return ok ? tag : QString(); + return ok ? tag : Tag(); } void TagFilterWidget::addTag() { - const QString tag = askTagName(); - if (tag.isEmpty()) return; + const Tag tag = askTagName(); + if (tag.isEmpty()) + return; if (BitTorrent::Session::instance()->tags().contains(tag)) QMessageBox::warning(this, tr("Tag exists"), tr("Tag name already exists.")); @@ -207,7 +207,7 @@ void TagFilterWidget::removeTag() void TagFilterWidget::removeUnusedTags() { auto *session = BitTorrent::Session::instance(); - for (const QString &tag : asConst(session->tags())) + for (const Tag &tag : asConst(session->tags())) if (model()->data(static_cast(model())->index(tag), Qt::UserRole) == 0) session->removeTag(tag); updateGeometry(); diff --git a/src/gui/transferlistfilters/tagfilterwidget.h b/src/gui/transferlistfilters/tagfilterwidget.h index d5be96cf0a05..e7ee2c0c1908 100644 --- a/src/gui/transferlistfilters/tagfilterwidget.h +++ b/src/gui/transferlistfilters/tagfilterwidget.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2017 Tony Gregerson * * This program is free software; you can redistribute it and/or @@ -30,6 +31,8 @@ #include +class Tag; + class TagFilterWidget final : public QTreeView { Q_OBJECT @@ -38,12 +41,12 @@ class TagFilterWidget final : public QTreeView public: explicit TagFilterWidget(QWidget *parent = nullptr); - QString currentTag() const; + std::optional currentTag() const; signals: - void tagChanged(const QString &tag); - void actionResumeTorrentsTriggered(); - void actionPauseTorrentsTriggered(); + void tagChanged(const std::optional &tag); + void actionStartTorrentsTriggered(); + void actionStopTorrentsTriggered(); void actionDeleteTorrentsTriggered(); private slots: @@ -58,5 +61,5 @@ private slots: QSize sizeHint() const override; QSize minimumSizeHint() const override; void rowsInserted(const QModelIndex &parent, int start, int end) override; - QString askTagName(); + Tag askTagName(); }; diff --git a/src/gui/transferlistfilters/trackersfilterwidget.cpp b/src/gui/transferlistfilters/trackersfilterwidget.cpp index 2e8586f28965..9ab0a54a17cb 100644 --- a/src/gui/transferlistfilters/trackersfilterwidget.cpp +++ b/src/gui/transferlistfilters/trackersfilterwidget.cpp @@ -38,6 +38,8 @@ #include "base/algorithm.h" #include "base/bittorrent/session.h" +#include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/global.h" #include "base/net/downloadmanager.h" #include "base/preferences.h" @@ -153,7 +155,7 @@ TrackersFilterWidget::~TrackersFilterWidget() Utils::Fs::removeFile(iconPath); } -void TrackersFilterWidget::addTrackers(const BitTorrent::Torrent *torrent, const QVector &trackers) +void TrackersFilterWidget::addTrackers(const BitTorrent::Torrent *torrent, const QList &trackers) { const BitTorrent::TorrentID torrentID = torrent->id(); @@ -202,16 +204,15 @@ void TrackersFilterWidget::refreshTrackers(const BitTorrent::Torrent *torrent) return false; }); - const QVector trackerEntries = torrent->trackers(); - const bool isTrackerless = trackerEntries.isEmpty(); - if (isTrackerless) + const QList trackers = torrent->trackers(); + if (trackers.isEmpty()) { addItems(NULL_HOST, {torrentID}); } else { - for (const BitTorrent::TrackerEntry &trackerEntry : trackerEntries) - addItems(trackerEntry.url, {torrentID}); + for (const BitTorrent::TrackerEntryStatus &status : trackers) + addItems(status.url, {torrentID}); } item(OTHERERROR_ROW)->setText(formatItemText(OTHERERROR_ROW, m_errors.size())); @@ -227,7 +228,7 @@ void TrackersFilterWidget::refreshTrackers(const BitTorrent::Torrent *torrent) updateGeometry(); } -void TrackersFilterWidget::addItems(const QString &trackerURL, const QVector &torrents) +void TrackersFilterWidget::addItems(const QString &trackerURL, const QList &torrents) { const QString host = getHost(trackerURL); auto trackersIt = m_trackers.find(host); @@ -380,8 +381,8 @@ void TrackersFilterWidget::setDownloadTrackerFavicon(bool value) } } -void TrackersFilterWidget::handleTrackerEntriesUpdated(const BitTorrent::Torrent *torrent - , const QHash &updatedTrackerEntries) +void TrackersFilterWidget::handleTrackerStatusesUpdated(const BitTorrent::Torrent *torrent + , const QHash &updatedTrackers) { const BitTorrent::TorrentID id = torrent->id(); @@ -389,52 +390,83 @@ void TrackersFilterWidget::handleTrackerEntriesUpdated(const BitTorrent::Torrent auto trackerErrorHashesIt = m_trackerErrors.find(id); auto warningHashesIt = m_warnings.find(id); - for (const BitTorrent::TrackerEntry &trackerEntry : updatedTrackerEntries) + for (const BitTorrent::TrackerEntryStatus &trackerEntryStatus : updatedTrackers) { - if (trackerEntry.status == BitTorrent::TrackerEntryStatus::Working) + switch (trackerEntryStatus.state) { - if (errorHashesIt != m_errors.end()) + case BitTorrent::TrackerEndpointState::Working: { - errorHashesIt->remove(trackerEntry.url); + // remove tracker from "error" and "tracker error" categories + if (errorHashesIt != m_errors.end()) + errorHashesIt->remove(trackerEntryStatus.url); + if (trackerErrorHashesIt != m_trackerErrors.end()) + trackerErrorHashesIt->remove(trackerEntryStatus.url); + + const bool hasNoWarningMessages = std::all_of(trackerEntryStatus.endpoints.cbegin(), trackerEntryStatus.endpoints.cend() + , [](const BitTorrent::TrackerEndpointStatus &endpointEntry) + { + return endpointEntry.message.isEmpty() || (endpointEntry.state != BitTorrent::TrackerEndpointState::Working); + }); + if (hasNoWarningMessages) + { + if (warningHashesIt != m_warnings.end()) + { + warningHashesIt->remove(trackerEntryStatus.url); + } + } + else + { + if (warningHashesIt == m_warnings.end()) + warningHashesIt = m_warnings.insert(id, {}); + warningHashesIt->insert(trackerEntryStatus.url); + } } + break; - if (trackerErrorHashesIt != m_trackerErrors.end()) + case BitTorrent::TrackerEndpointState::NotWorking: + case BitTorrent::TrackerEndpointState::Unreachable: { - trackerErrorHashesIt->remove(trackerEntry.url); + // remove tracker from "tracker error" and "warning" categories + if (warningHashesIt != m_warnings.end()) + warningHashesIt->remove(trackerEntryStatus.url); + if (trackerErrorHashesIt != m_trackerErrors.end()) + trackerErrorHashesIt->remove(trackerEntryStatus.url); + + if (errorHashesIt == m_errors.end()) + errorHashesIt = m_errors.insert(id, {}); + errorHashesIt->insert(trackerEntryStatus.url); } + break; - const bool hasNoWarningMessages = std::all_of(trackerEntry.endpointEntries.cbegin(), trackerEntry.endpointEntries.cend() - , [](const BitTorrent::TrackerEndpointEntry &endpointEntry) - { - return endpointEntry.message.isEmpty() || (endpointEntry.status != BitTorrent::TrackerEntryStatus::Working); - }); - if (hasNoWarningMessages) + case BitTorrent::TrackerEndpointState::TrackerError: { + // remove tracker from "error" and "warning" categories if (warningHashesIt != m_warnings.end()) - { - warningHashesIt->remove(trackerEntry.url); - } + warningHashesIt->remove(trackerEntryStatus.url); + if (errorHashesIt != m_errors.end()) + errorHashesIt->remove(trackerEntryStatus.url); + + if (trackerErrorHashesIt == m_trackerErrors.end()) + trackerErrorHashesIt = m_trackerErrors.insert(id, {}); + trackerErrorHashesIt->insert(trackerEntryStatus.url); } - else + break; + + case BitTorrent::TrackerEndpointState::NotContacted: { - if (warningHashesIt == m_warnings.end()) - warningHashesIt = m_warnings.insert(id, {}); - warningHashesIt->insert(trackerEntry.url); + // remove tracker from "error", "tracker error" and "warning" categories + if (warningHashesIt != m_warnings.end()) + warningHashesIt->remove(trackerEntryStatus.url); + if (errorHashesIt != m_errors.end()) + errorHashesIt->remove(trackerEntryStatus.url); + if (trackerErrorHashesIt != m_trackerErrors.end()) + trackerErrorHashesIt->remove(trackerEntryStatus.url); } - } - else if ((trackerEntry.status == BitTorrent::TrackerEntryStatus::NotWorking) - || (trackerEntry.status == BitTorrent::TrackerEntryStatus::Unreachable)) - { - if (errorHashesIt == m_errors.end()) - errorHashesIt = m_errors.insert(id, {}); - errorHashesIt->insert(trackerEntry.url); - } - else if (trackerEntry.status == BitTorrent::TrackerEntryStatus::TrackerError) - { - if (trackerErrorHashesIt == m_trackerErrors.end()) - trackerErrorHashesIt = m_trackerErrors.insert(id, {}); - trackerErrorHashesIt->insert(trackerEntry.url); - } + break; + + case BitTorrent::TrackerEndpointState::Updating: + break; + }; } if ((errorHashesIt != m_errors.end()) && errorHashesIt->isEmpty()) @@ -481,10 +513,10 @@ void TrackersFilterWidget::removeTracker(const QString &tracker) continue; QStringList trackersToRemove; - for (const BitTorrent::TrackerEntry &trackerEntry : asConst(torrent->trackers())) + for (const BitTorrent::TrackerEntryStatus &trackerEntryStatus : asConst(torrent->trackers())) { - if ((trackerEntry.url == tracker) || (QUrl(trackerEntry.url).host() == tracker)) - trackersToRemove.append(trackerEntry.url); + if ((trackerEntryStatus.url == tracker) || (QUrl(trackerEntryStatus.url).host() == tracker)) + trackersToRemove.append(trackerEntryStatus.url); } torrent->removeTrackers({trackersToRemove}); @@ -568,10 +600,10 @@ void TrackersFilterWidget::showMenu() menu->addSeparator(); } - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Resume torrents") + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("Start torrents") , transferList(), &TransferListWidget::startVisibleTorrents); - menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Pause torrents") - , transferList(), &TransferListWidget::pauseVisibleTorrents); + menu->addAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Stop torrents") + , transferList(), &TransferListWidget::stopVisibleTorrents); menu->addAction(UIThemeManager::instance()->getIcon(u"list-remove"_s), tr("Remove torrents") , transferList(), &TransferListWidget::deleteVisibleTorrents); @@ -586,14 +618,14 @@ void TrackersFilterWidget::applyFilter(const int row) transferList()->applyTrackerFilter(getTorrentIDs(row)); } -void TrackersFilterWidget::handleTorrentsLoaded(const QVector &torrents) +void TrackersFilterWidget::handleTorrentsLoaded(const QList &torrents) { - QHash> torrentsPerTracker; + QHash> torrentsPerTracker; for (const BitTorrent::Torrent *torrent : torrents) { const BitTorrent::TorrentID torrentID = torrent->id(); - const QVector trackers = torrent->trackers(); - for (const BitTorrent::TrackerEntry &tracker : trackers) + const QList trackers = torrent->trackers(); + for (const BitTorrent::TrackerEntryStatus &tracker : trackers) torrentsPerTracker[tracker.url].append(torrentID); // Check for trackerless torrent @@ -613,8 +645,8 @@ void TrackersFilterWidget::handleTorrentsLoaded(const QVectorid(); - const QVector trackers = torrent->trackers(); - for (const BitTorrent::TrackerEntry &tracker : trackers) + const QList trackers = torrent->trackers(); + for (const BitTorrent::TrackerEntryStatus &tracker : trackers) removeItem(tracker.url, torrentID); // Check for trackerless torrent diff --git a/src/gui/transferlistfilters/trackersfilterwidget.h b/src/gui/transferlistfilters/trackersfilterwidget.h index fe740b2c1e8e..0b7e82731312 100644 --- a/src/gui/transferlistfilters/trackersfilterwidget.h +++ b/src/gui/transferlistfilters/trackersfilterwidget.h @@ -32,12 +32,17 @@ #include #include -#include "base/bittorrent/trackerentry.h" #include "base/path.h" #include "basefilterwidget.h" class TransferListWidget; +namespace BitTorrent +{ + struct TrackerEntry; + struct TrackerEntryStatus; +} + namespace Net { struct DownloadResult; @@ -52,11 +57,11 @@ class TrackersFilterWidget final : public BaseFilterWidget TrackersFilterWidget(QWidget *parent, TransferListWidget *transferList, bool downloadFavicon); ~TrackersFilterWidget() override; - void addTrackers(const BitTorrent::Torrent *torrent, const QVector &trackers); + void addTrackers(const BitTorrent::Torrent *torrent, const QList &trackers); void removeTrackers(const BitTorrent::Torrent *torrent, const QStringList &trackers); void refreshTrackers(const BitTorrent::Torrent *torrent); - void handleTrackerEntriesUpdated(const BitTorrent::Torrent *torrent - , const QHash &updatedTrackerEntries); + void handleTrackerStatusesUpdated(const BitTorrent::Torrent *torrent + , const QHash &updatedTrackers); void setDownloadTrackerFavicon(bool value); private slots: @@ -67,12 +72,12 @@ private slots: // No need to redeclare them here as slots. void showMenu() override; void applyFilter(int row) override; - void handleTorrentsLoaded(const QVector &torrents) override; + void handleTorrentsLoaded(const QList &torrents) override; void torrentAboutToBeDeleted(BitTorrent::Torrent *torrent) override; void onRemoveTrackerTriggered(); - void addItems(const QString &trackerURL, const QVector &torrents); + void addItems(const QString &trackerURL, const QList &torrents); void removeItem(const QString &trackerURL, const BitTorrent::TorrentID &id); QString trackerFromRow(int row) const; int rowFromTracker(const QString &tracker) const; diff --git a/src/gui/transferlistfilterswidget.cpp b/src/gui/transferlistfilterswidget.cpp index f99b502a6eb4..e9d301212ba2 100644 --- a/src/gui/transferlistfilterswidget.cpp +++ b/src/gui/transferlistfilterswidget.cpp @@ -39,9 +39,9 @@ #include #include -#include "base/algorithm.h" #include "base/bittorrent/session.h" #include "base/bittorrent/torrent.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/global.h" #include "base/logger.h" #include "base/net/downloadmanager.h" @@ -123,9 +123,9 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi m_categoryFilterWidget = new CategoryFilterWidget(this); connect(m_categoryFilterWidget, &CategoryFilterWidget::actionDeleteTorrentsTriggered , transferList, &TransferListWidget::deleteVisibleTorrents); - connect(m_categoryFilterWidget, &CategoryFilterWidget::actionPauseTorrentsTriggered - , transferList, &TransferListWidget::pauseVisibleTorrents); - connect(m_categoryFilterWidget, &CategoryFilterWidget::actionResumeTorrentsTriggered + connect(m_categoryFilterWidget, &CategoryFilterWidget::actionStopTorrentsTriggered + , transferList, &TransferListWidget::stopVisibleTorrents); + connect(m_categoryFilterWidget, &CategoryFilterWidget::actionStartTorrentsTriggered , transferList, &TransferListWidget::startVisibleTorrents); connect(m_categoryFilterWidget, &CategoryFilterWidget::categoryChanged , transferList, &TransferListWidget::applyCategoryFilter); @@ -141,9 +141,9 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi m_tagFilterWidget = new TagFilterWidget(this); connect(m_tagFilterWidget, &TagFilterWidget::actionDeleteTorrentsTriggered , transferList, &TransferListWidget::deleteVisibleTorrents); - connect(m_tagFilterWidget, &TagFilterWidget::actionPauseTorrentsTriggered - , transferList, &TransferListWidget::pauseVisibleTorrents); - connect(m_tagFilterWidget, &TagFilterWidget::actionResumeTorrentsTriggered + connect(m_tagFilterWidget, &TagFilterWidget::actionStopTorrentsTriggered + , transferList, &TransferListWidget::stopVisibleTorrents); + connect(m_tagFilterWidget, &TagFilterWidget::actionStartTorrentsTriggered , transferList, &TransferListWidget::startVisibleTorrents); connect(m_tagFilterWidget, &TagFilterWidget::tagChanged , transferList, &TransferListWidget::applyTagFilter); @@ -176,7 +176,7 @@ void TransferListFiltersWidget::setDownloadTrackerFavicon(bool value) m_trackersFilterWidget->setDownloadTrackerFavicon(value); } -void TransferListFiltersWidget::addTrackers(const BitTorrent::Torrent *torrent, const QVector &trackers) +void TransferListFiltersWidget::addTrackers(const BitTorrent::Torrent *torrent, const QList &trackers) { m_trackersFilterWidget->addTrackers(torrent, trackers); } @@ -191,10 +191,10 @@ void TransferListFiltersWidget::refreshTrackers(const BitTorrent::Torrent *torre m_trackersFilterWidget->refreshTrackers(torrent); } -void TransferListFiltersWidget::trackerEntriesUpdated(const BitTorrent::Torrent *torrent - , const QHash &updatedTrackerEntries) +void TransferListFiltersWidget::trackerEntryStatusesUpdated(const BitTorrent::Torrent *torrent + , const QHash &updatedTrackers) { - m_trackersFilterWidget->handleTrackerEntriesUpdated(torrent, updatedTrackerEntries); + m_trackersFilterWidget->handleTrackerStatusesUpdated(torrent, updatedTrackers); } void TransferListFiltersWidget::onCategoryFilterStateChanged(bool enabled) @@ -218,5 +218,5 @@ void TransferListFiltersWidget::onTagFilterStateChanged(bool enabled) void TransferListFiltersWidget::toggleTagFilter(bool enabled) { m_tagFilterWidget->setVisible(enabled); - m_transferList->applyTagFilter(enabled ? m_tagFilterWidget->currentTag() : QString()); + m_transferList->applyTagFilter(enabled ? m_tagFilterWidget->currentTag() : std::nullopt); } diff --git a/src/gui/transferlistfilterswidget.h b/src/gui/transferlistfilterswidget.h index 456701c6b233..b6afbb9ee7f5 100644 --- a/src/gui/transferlistfilterswidget.h +++ b/src/gui/transferlistfilterswidget.h @@ -30,10 +30,8 @@ #pragma once #include -#include #include -#include "base/bittorrent/torrent.h" #include "base/bittorrent/trackerentry.h" class CategoryFilterWidget; @@ -42,6 +40,12 @@ class TagFilterWidget; class TrackersFilterWidget; class TransferListWidget; +namespace BitTorrent +{ + class Torrent; + struct TrackerEntryStatus; +} + class TransferListFiltersWidget final : public QWidget { Q_OBJECT @@ -52,11 +56,11 @@ class TransferListFiltersWidget final : public QWidget void setDownloadTrackerFavicon(bool value); public slots: - void addTrackers(const BitTorrent::Torrent *torrent, const QVector &trackers); + void addTrackers(const BitTorrent::Torrent *torrent, const QList &trackers); void removeTrackers(const BitTorrent::Torrent *torrent, const QStringList &trackers); void refreshTrackers(const BitTorrent::Torrent *torrent); - void trackerEntriesUpdated(const BitTorrent::Torrent *torrent - , const QHash &updatedTrackerEntries); + void trackerEntryStatusesUpdated(const BitTorrent::Torrent *torrent + , const QHash &updatedTrackers); private slots: void onCategoryFilterStateChanged(bool enabled); diff --git a/src/gui/transferlistmodel.cpp b/src/gui/transferlistmodel.cpp index 272ea253cfe1..7c827c1a6a84 100644 --- a/src/gui/transferlistmodel.cpp +++ b/src/gui/transferlistmodel.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -70,8 +70,8 @@ namespace {BitTorrent::TorrentState::CheckingDownloading, u"TransferList.CheckingDownloading"_s}, {BitTorrent::TorrentState::CheckingUploading, u"TransferList.CheckingUploading"_s}, {BitTorrent::TorrentState::CheckingResumeData, u"TransferList.CheckingResumeData"_s}, - {BitTorrent::TorrentState::PausedDownloading, u"TransferList.PausedDownloading"_s}, - {BitTorrent::TorrentState::PausedUploading, u"TransferList.PausedUploading"_s}, + {BitTorrent::TorrentState::StoppedDownloading, u"TransferList.StoppedDownloading"_s}, + {BitTorrent::TorrentState::StoppedUploading, u"TransferList.StoppedUploading"_s}, {BitTorrent::TorrentState::Moving, u"TransferList.Moving"_s}, {BitTorrent::TorrentState::MissingFiles, u"TransferList.MissingFiles"_s}, {BitTorrent::TorrentState::Error, u"TransferList.Error"_s} @@ -106,27 +106,23 @@ TransferListModel::TransferListModel(QObject *parent) {BitTorrent::TorrentState::CheckingDownloading, tr("Checking", "Torrent local data is being checked")}, {BitTorrent::TorrentState::CheckingUploading, tr("Checking", "Torrent local data is being checked")}, {BitTorrent::TorrentState::CheckingResumeData, tr("Checking resume data", "Used when loading the torrents from disk after qbt is launched. It checks the correctness of the .fastresume file. Normally it is completed in a fraction of a second, unless loading many many torrents.")}, - {BitTorrent::TorrentState::PausedDownloading, tr("Paused")}, - {BitTorrent::TorrentState::PausedUploading, tr("Completed")}, + {BitTorrent::TorrentState::StoppedDownloading, tr("Stopped")}, + {BitTorrent::TorrentState::StoppedUploading, tr("Completed")}, {BitTorrent::TorrentState::Moving, tr("Moving", "Torrent local data are being moved/relocated")}, {BitTorrent::TorrentState::MissingFiles, tr("Missing Files")}, {BitTorrent::TorrentState::Error, tr("Errored", "Torrent status, the torrent has an error")} } - , m_stateThemeColors {torrentStateColorsFromUITheme()} - , m_checkingIcon {UIThemeManager::instance()->getIcon(u"force-recheck"_s, u"checking"_s)} - , m_completedIcon {UIThemeManager::instance()->getIcon(u"checked-completed"_s, u"completed"_s)} - , m_downloadingIcon {UIThemeManager::instance()->getIcon(u"downloading"_s)} - , m_errorIcon {UIThemeManager::instance()->getIcon(u"error"_s)} - , m_movingIcon {UIThemeManager::instance()->getIcon(u"set-location"_s)} - , m_pausedIcon {UIThemeManager::instance()->getIcon(u"stopped"_s, u"media-playback-pause"_s)} - , m_queuedIcon {UIThemeManager::instance()->getIcon(u"queued"_s)} - , m_stalledDLIcon {UIThemeManager::instance()->getIcon(u"stalledDL"_s)} - , m_stalledUPIcon {UIThemeManager::instance()->getIcon(u"stalledUP"_s)} - , m_uploadingIcon {UIThemeManager::instance()->getIcon(u"upload"_s, u"uploading"_s)} { configure(); connect(Preferences::instance(), &Preferences::changed, this, &TransferListModel::configure); + loadUIThemeResources(); + connect(UIThemeManager::instance(), &UIThemeManager::themeChanged, this, [this] + { + loadUIThemeResources(); + emit dataChanged(index(0, 0), index((rowCount() - 1), (columnCount() - 1)), {Qt::DecorationRole, Qt::ForegroundRole}); + }); + // Load the torrents using namespace BitTorrent; addTorrents(Session::instance()->torrents()); @@ -138,8 +134,8 @@ TransferListModel::TransferListModel(QObject *parent) connect(Session::instance(), &Session::torrentFinished, this, &TransferListModel::handleTorrentStatusUpdated); connect(Session::instance(), &Session::torrentMetadataReceived, this, &TransferListModel::handleTorrentStatusUpdated); - connect(Session::instance(), &Session::torrentResumed, this, &TransferListModel::handleTorrentStatusUpdated); - connect(Session::instance(), &Session::torrentPaused, this, &TransferListModel::handleTorrentStatusUpdated); + connect(Session::instance(), &Session::torrentStarted, this, &TransferListModel::handleTorrentStatusUpdated); + connect(Session::instance(), &Session::torrentStopped, this, &TransferListModel::handleTorrentStatusUpdated); connect(Session::instance(), &Session::torrentFinishedChecking, this, &TransferListModel::handleTorrentStatusUpdated); } @@ -165,12 +161,13 @@ QVariant TransferListModel::headerData(const int section, const Qt::Orientation case TR_NAME: return tr("Name", "i.e: torrent name"); case TR_SIZE: return tr("Size", "i.e: torrent size"); case TR_PROGRESS: return tr("Progress", "% Done"); - case TR_STATUS: return tr("Status", "Torrent status (e.g. downloading, seeding, paused)"); + case TR_STATUS: return tr("Status", "Torrent status (e.g. downloading, seeding, stopped)"); case TR_SEEDS: return tr("Seeds", "i.e. full sources (often untranslated)"); case TR_PEERS: return tr("Peers", "i.e. partial sources (often untranslated)"); case TR_DLSPEED: return tr("Down Speed", "i.e: Download speed"); case TR_UPSPEED: return tr("Up Speed", "i.e: Upload speed"); case TR_RATIO: return tr("Ratio", "Share ratio"); + case TR_POPULARITY: return tr("Popularity"); case TR_ETA: return tr("ETA", "i.e: Estimated Time of Arrival / Time left"); case TR_CATEGORY: return tr("Category"); case TR_TAGS: return tr("Tags"); @@ -184,7 +181,7 @@ QVariant TransferListModel::headerData(const int section, const Qt::Orientation case TR_AMOUNT_DOWNLOADED_SESSION: return tr("Session Download", "Amount of data downloaded since program open (e.g. in MB)"); case TR_AMOUNT_UPLOADED_SESSION: return tr("Session Upload", "Amount of data uploaded since program open (e.g. in MB)"); case TR_AMOUNT_LEFT: return tr("Remaining", "Amount of data left to download (e.g. in MB)"); - case TR_TIME_ELAPSED: return tr("Time Active", "Time (duration) the torrent is active (not paused)"); + case TR_TIME_ELAPSED: return tr("Time Active", "Time (duration) the torrent is active (not stopped)"); case TR_SAVE_PATH: return tr("Save Path", "Torrent save path"); case TR_DOWNLOAD_PATH: return tr("Incomplete Save Path", "Torrent incomplete save path"); case TR_COMPLETED: return tr("Completed", "Amount of data completed (e.g. in MB)"); @@ -196,6 +193,15 @@ QVariant TransferListModel::headerData(const int section, const Qt::Orientation case TR_INFOHASH_V1: return tr("Info Hash v1", "i.e: torrent info hash v1"); case TR_INFOHASH_V2: return tr("Info Hash v2", "i.e: torrent info hash v2"); case TR_REANNOUNCE: return tr("Reannounce In", "Indicates the time until next trackers reannounce"); + case TR_PRIVATE: return tr("Private", "Flags private torrents"); + default: return {}; + } + } + else if (role == Qt::ToolTipRole) + { + switch (section) + { + case TR_POPULARITY: return tr("Ratio / Time Active (in months), indicates how popular the torrent is"); default: return {}; } } @@ -220,6 +226,7 @@ QVariant TransferListModel::headerData(const int section, const Qt::Orientation case TR_DLLIMIT: case TR_RATIO_LIMIT: case TR_RATIO: + case TR_POPULARITY: case TR_QUEUE_POSITION: case TR_LAST_ACTIVITY: case TR_AVAILABILITY: @@ -239,8 +246,8 @@ QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, cons bool hideValues = false; if (m_hideZeroValuesMode == HideZeroValuesMode::Always) hideValues = true; - else if (m_hideZeroValuesMode == HideZeroValuesMode::Paused) - hideValues = (torrent->state() == BitTorrent::TorrentState::PausedDownloading); + else if (m_hideZeroValuesMode == HideZeroValuesMode::Stopped) + hideValues = (torrent->state() == BitTorrent::TorrentState::StoppedDownloading); const auto availabilityString = [hideValues](const qreal value) -> QString { @@ -351,6 +358,15 @@ QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, cons return Utils::Misc::userFriendlyDuration(time); }; + const auto privateString = [hideValues](const bool isPrivate, const bool hasMetadata) -> QString + { + if (hideValues && !isPrivate) + return {}; + if (hasMetadata) + return isPrivate ? tr("Yes") : tr("No"); + return tr("N/A"); + }; + switch (column) { case TR_NAME: @@ -377,10 +393,12 @@ QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, cons return ratioString(torrent->realRatio()); case TR_RATIO_LIMIT: return ratioString(torrent->maxRatio()); + case TR_POPULARITY: + return ratioString(torrent->popularity()); case TR_CATEGORY: return torrent->category(); case TR_TAGS: - return torrent->tags().join(u", "_s); + return Utils::String::joinIntoString(torrent->tags(), u", "_s); case TR_ADD_DATE: return QLocale().toString(torrent->addedTime().toLocalTime(), QLocale::ShortFormat); case TR_SEED_DATE: @@ -423,6 +441,8 @@ QString TransferListModel::displayValue(const BitTorrent::Torrent *torrent, cons return hashString(torrent->infoHash().v2()); case TR_REANNOUNCE: return reannounceString(torrent->nextAnnounce()); + case TR_PRIVATE: + return privateString(torrent->isPrivate(), torrent->hasMetadata()); } return {}; @@ -454,6 +474,8 @@ QVariant TransferListModel::internalValue(const BitTorrent::Torrent *torrent, co return torrent->eta(); case TR_RATIO: return torrent->realRatio(); + case TR_POPULARITY: + return torrent->popularity(); case TR_CATEGORY: return torrent->category(); case TR_TAGS: @@ -502,6 +524,8 @@ QVariant TransferListModel::internalValue(const BitTorrent::Torrent *torrent, co return QVariant::fromValue(torrent->infoHash().v2()); case TR_REANNOUNCE: return torrent->nextAnnounce(); + case TR_PRIVATE: + return (torrent->hasMetadata() ? torrent->isPrivate() : QVariant()); } return {}; @@ -563,6 +587,7 @@ QVariant TransferListModel::data(const QModelIndex &index, const int role) const case TR_DLLIMIT: case TR_RATIO_LIMIT: case TR_RATIO: + case TR_POPULARITY: case TR_QUEUE_POSITION: case TR_LAST_ACTIVITY: case TR_AVAILABILITY: @@ -600,7 +625,7 @@ bool TransferListModel::setData(const QModelIndex &index, const QVariant &value, return true; } -void TransferListModel::addTorrents(const QVector &torrents) +void TransferListModel::addTorrents(const QList &torrents) { qsizetype row = m_torrentList.size(); const qsizetype total = row + torrents.size(); @@ -658,7 +683,7 @@ void TransferListModel::handleTorrentStatusUpdated(BitTorrent::Torrent *const to emit dataChanged(index(row, 0), index(row, columnCount() - 1)); } -void TransferListModel::handleTorrentsUpdated(const QVector &torrents) +void TransferListModel::handleTorrentsUpdated(const QList &torrents) { const int columns = (columnCount() - 1); @@ -687,7 +712,7 @@ void TransferListModel::configure() if (pref->getHideZeroValues()) { if (pref->getHideZeroComboValues() == 1) - hideZeroValuesMode = HideZeroValuesMode::Paused; + hideZeroValuesMode = HideZeroValuesMode::Stopped; else hideZeroValuesMode = HideZeroValuesMode::Always; } @@ -699,6 +724,23 @@ void TransferListModel::configure() } } +void TransferListModel::loadUIThemeResources() +{ + m_stateThemeColors = torrentStateColorsFromUITheme(); + + const auto *themeManager = UIThemeManager::instance(); + m_checkingIcon = themeManager->getIcon(u"force-recheck"_s, u"checking"_s); + m_completedIcon = themeManager->getIcon(u"checked-completed"_s, u"completed"_s); + m_downloadingIcon = themeManager->getIcon(u"downloading"_s); + m_errorIcon = themeManager->getIcon(u"error"_s); + m_movingIcon = themeManager->getIcon(u"set-location"_s); + m_stoppedIcon = themeManager->getIcon(u"stopped"_s, u"media-playback-pause"_s); + m_queuedIcon = themeManager->getIcon(u"queued"_s); + m_stalledDLIcon = themeManager->getIcon(u"stalledDL"_s); + m_stalledUPIcon = themeManager->getIcon(u"stalledUP"_s); + m_uploadingIcon = themeManager->getIcon(u"upload"_s, u"uploading"_s); +} + QIcon TransferListModel::getIconByState(const BitTorrent::TorrentState state) const { switch (state) @@ -715,9 +757,9 @@ QIcon TransferListModel::getIconByState(const BitTorrent::TorrentState state) co case BitTorrent::TorrentState::Uploading: case BitTorrent::TorrentState::ForcedUploading: return m_uploadingIcon; - case BitTorrent::TorrentState::PausedDownloading: - return m_pausedIcon; - case BitTorrent::TorrentState::PausedUploading: + case BitTorrent::TorrentState::StoppedDownloading: + return m_stoppedIcon; + case BitTorrent::TorrentState::StoppedUploading: return m_completedIcon; case BitTorrent::TorrentState::QueuedDownloading: case BitTorrent::TorrentState::QueuedUploading: @@ -733,7 +775,9 @@ QIcon TransferListModel::getIconByState(const BitTorrent::TorrentState state) co case BitTorrent::TorrentState::Error: return m_errorIcon; default: - Q_ASSERT(false); - return m_errorIcon; + Q_UNREACHABLE(); + break; } + + return {}; } diff --git a/src/gui/transferlistmodel.h b/src/gui/transferlistmodel.h index 827072af0dba..306beee0b9a3 100644 --- a/src/gui/transferlistmodel.h +++ b/src/gui/transferlistmodel.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2015 Vladimir Golovnev + * Copyright (C) 2015-2024 Vladimir Golovnev * Copyright (C) 2010 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -62,6 +62,7 @@ class TransferListModel final : public QAbstractListModel TR_UPSPEED, TR_ETA, TR_RATIO, + TR_POPULARITY, TR_CATEGORY, TR_TAGS, TR_ADD_DATE, @@ -85,6 +86,7 @@ class TransferListModel final : public QAbstractListModel TR_INFOHASH_V1, TR_INFOHASH_V2, TR_REANNOUNCE, + TR_PRIVATE, NB_COLUMNS }; @@ -107,13 +109,14 @@ class TransferListModel final : public QAbstractListModel BitTorrent::Torrent *torrentHandle(const QModelIndex &index) const; private slots: - void addTorrents(const QVector &torrents); + void addTorrents(const QList &torrents); void handleTorrentAboutToBeRemoved(BitTorrent::Torrent *torrent); void handleTorrentStatusUpdated(BitTorrent::Torrent *torrent); - void handleTorrentsUpdated(const QVector &torrents); + void handleTorrentsUpdated(const QList &torrents); private: void configure(); + void loadUIThemeResources(); QString displayValue(const BitTorrent::Torrent *torrent, int column) const; QVariant internalValue(const BitTorrent::Torrent *torrent, int column, bool alt) const; QIcon getIconByState(BitTorrent::TorrentState state) const; @@ -122,12 +125,12 @@ private slots: QHash m_torrentMap; // maps torrent handle to row number const QHash m_statusStrings; // row text colors - const QHash m_stateThemeColors; + QHash m_stateThemeColors; enum class HideZeroValuesMode { Never, - Paused, + Stopped, Always }; @@ -139,7 +142,7 @@ private slots: QIcon m_downloadingIcon; QIcon m_errorIcon; QIcon m_movingIcon; - QIcon m_pausedIcon; + QIcon m_stoppedIcon; QIcon m_queuedIcon; QIcon m_stalledDLIcon; QIcon m_stalledUPIcon; diff --git a/src/gui/transferlistsortmodel.cpp b/src/gui/transferlistsortmodel.cpp index 131d729a2723..782aead74276 100644 --- a/src/gui/transferlistsortmodel.cpp +++ b/src/gui/transferlistsortmodel.cpp @@ -59,10 +59,10 @@ namespace int customCompare(const TagSet &left, const TagSet &right, const Utils::Compare::NaturalCompare &compare) { for (auto leftIter = left.cbegin(), rightIter = right.cbegin(); - (leftIter != left.cend()) && (rightIter != right.cend()); - ++leftIter, ++rightIter) + (leftIter != left.cend()) && (rightIter != right.cend()); + ++leftIter, ++rightIter) { - const int result = compare(*leftIter, *rightIter); + const int result = compare(leftIter->toString(), rightIter->toString()); if (result != 0) return result; } @@ -84,6 +84,17 @@ namespace return isLeftValid ? -1 : 1; } + int compareAsBool(const QVariant &left, const QVariant &right) + { + const bool leftValid = left.isValid(); + const bool rightValid = right.isValid(); + if (leftValid && rightValid) + return threeWayCompare(left.toBool(), right.toBool()); + if (!leftValid && !rightValid) + return 0; + return leftValid ? -1 : 1; + } + int adjustSubSortColumn(const int column) { return ((column >= 0) && (column < TransferListModel::NB_COLUMNS)) @@ -112,46 +123,46 @@ void TransferListSortModel::sort(const int column, const Qt::SortOrder order) QSortFilterProxyModel::sort(column, order); } -void TransferListSortModel::setStatusFilter(TorrentFilter::Type filter) +void TransferListSortModel::setStatusFilter(const TorrentFilter::Type filter) { if (m_filter.setType(filter)) - invalidateFilter(); + invalidateRowsFilter(); } void TransferListSortModel::setCategoryFilter(const QString &category) { if (m_filter.setCategory(category)) - invalidateFilter(); + invalidateRowsFilter(); } void TransferListSortModel::disableCategoryFilter() { if (m_filter.setCategory(TorrentFilter::AnyCategory)) - invalidateFilter(); + invalidateRowsFilter(); } -void TransferListSortModel::setTagFilter(const QString &tag) +void TransferListSortModel::setTagFilter(const Tag &tag) { if (m_filter.setTag(tag)) - invalidateFilter(); + invalidateRowsFilter(); } void TransferListSortModel::disableTagFilter() { if (m_filter.setTag(TorrentFilter::AnyTag)) - invalidateFilter(); + invalidateRowsFilter(); } void TransferListSortModel::setTrackerFilter(const QSet &torrentIDs) { if (m_filter.setTorrentIDSet(torrentIDs)) - invalidateFilter(); + invalidateRowsFilter(); } void TransferListSortModel::disableTrackerFilter() { if (m_filter.setTorrentIDSet(TorrentFilter::AnyID)) - invalidateFilter(); + invalidateRowsFilter(); } int TransferListSortModel::compare(const QModelIndex &left, const QModelIndex &right) const @@ -186,6 +197,7 @@ int TransferListSortModel::compare(const QModelIndex &left, const QModelIndex &r case TransferListModel::TR_COMPLETED: case TransferListModel::TR_ETA: case TransferListModel::TR_LAST_ACTIVITY: + case TransferListModel::TR_REANNOUNCE: case TransferListModel::TR_SIZE: case TransferListModel::TR_TIME_ELAPSED: case TransferListModel::TR_TOTAL_SIZE: @@ -195,6 +207,7 @@ int TransferListSortModel::compare(const QModelIndex &left, const QModelIndex &r case TransferListModel::TR_PROGRESS: case TransferListModel::TR_RATIO: case TransferListModel::TR_RATIO_LIMIT: + case TransferListModel::TR_POPULARITY: return customCompare(leftValue.toReal(), rightValue.toReal()); case TransferListModel::TR_STATUS: @@ -212,6 +225,9 @@ int TransferListSortModel::compare(const QModelIndex &left, const QModelIndex &r case TransferListModel::TR_UPSPEED: return customCompare(leftValue.toInt(), rightValue.toInt()); + case TransferListModel::TR_PRIVATE: + return compareAsBool(leftValue, rightValue); + case TransferListModel::TR_PEERS: case TransferListModel::TR_SEEDS: { diff --git a/src/gui/transferlistsortmodel.h b/src/gui/transferlistsortmodel.h index 46d6cc52adaf..3b3a59694a45 100644 --- a/src/gui/transferlistsortmodel.h +++ b/src/gui/transferlistsortmodel.h @@ -52,7 +52,7 @@ class TransferListSortModel final : public QSortFilterProxyModel void setStatusFilter(TorrentFilter::Type filter); void setCategoryFilter(const QString &category); void disableCategoryFilter(); - void setTagFilter(const QString &tag); + void setTagFilter(const Tag &tag); void disableTagFilter(); void setTrackerFilter(const QSet &torrentIDs); void disableTrackerFilter(); diff --git a/src/gui/transferlistwidget.cpp b/src/gui/transferlistwidget.cpp index c731775db6ad..cd6b44653846 100644 --- a/src/gui/transferlistwidget.cpp +++ b/src/gui/transferlistwidget.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023-2024 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -34,17 +35,18 @@ #include #include #include +#include #include #include +#include #include #include #include -#include #include #include "base/bittorrent/session.h" #include "base/bittorrent/torrent.h" -#include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/global.h" #include "base/logger.h" #include "base/path.h" @@ -56,11 +58,13 @@ #include "base/utils/string.h" #include "autoexpandabledialog.h" #include "deletionconfirmationdialog.h" +#include "interfaces/iguiapplication.h" #include "mainwindow.h" #include "optionsdialog.h" #include "previewselectdialog.h" #include "speedlimitdialog.h" #include "torrentcategorydialog.h" +#include "torrentcreatordialog.h" #include "torrentoptionsdialog.h" #include "trackerentriesdialog.h" #include "transferlistdelegate.h" @@ -70,14 +74,15 @@ #include "utils.h" #ifdef Q_OS_MACOS +#include "macosshiftclickhandler.h" #include "macutilities.h" #endif namespace { - QVector extractIDs(const QVector &torrents) + QList extractIDs(const QList &torrents) { - QVector torrentIDs; + QList torrentIDs; torrentIDs.reserve(torrents.size()); for (const BitTorrent::Torrent *torrent : torrents) torrentIDs << torrent->id(); @@ -112,20 +117,20 @@ namespace #endif } - void removeTorrents(const QVector &torrents, const bool isDeleteFileSelected) + void removeTorrents(const QList &torrents, const bool isDeleteFileSelected) { auto *session = BitTorrent::Session::instance(); - const DeleteOption deleteOption = isDeleteFileSelected ? DeleteTorrentAndFiles : DeleteTorrent; + const BitTorrent::TorrentRemoveOption removeOption = isDeleteFileSelected + ? BitTorrent::TorrentRemoveOption::RemoveContent : BitTorrent::TorrentRemoveOption::KeepContent; for (const BitTorrent::Torrent *torrent : torrents) - session->deleteTorrent(torrent->id(), deleteOption); + session->removeTorrent(torrent->id(), removeOption); } } -TransferListWidget::TransferListWidget(QWidget *parent, MainWindow *mainWindow) - : QTreeView {parent} +TransferListWidget::TransferListWidget(IGUIApplication *app, QWidget *parent) + : GUIApplicationComponent(app, parent) , m_listModel {new TransferListModel {this}} , m_sortFilterModel {new TransferListSortModel {this}} - , m_mainWindow {mainWindow} { // Load settings const bool columnLoaded = loadSettings(); @@ -149,9 +154,12 @@ TransferListWidget::TransferListWidget(QWidget *parent, MainWindow *mainWindow) setSelectionMode(QAbstractItemView::ExtendedSelection); setItemsExpandable(false); setAutoScroll(true); - setDragDropMode(QAbstractItemView::DragOnly); + setAcceptDrops(true); + setDragDropMode(QAbstractItemView::DropOnly); + setDropIndicatorShown(true); #if defined(Q_OS_MACOS) setAttribute(Qt::WA_MacShowFocusRect, false); + new MacOSShiftClickHandler(this); #endif header()->setFirstSectionMovable(true); header()->setStretchLastSection(false); @@ -177,10 +185,12 @@ TransferListWidget::TransferListWidget(QWidget *parent, MainWindow *mainWindow) setColumnHidden(TransferListModel::TR_INFOHASH_V2, true); setColumnHidden(TransferListModel::TR_COMPLETED, true); setColumnHidden(TransferListModel::TR_RATIO_LIMIT, true); + setColumnHidden(TransferListModel::TR_POPULARITY, true); setColumnHidden(TransferListModel::TR_SEEN_COMPLETE_DATE, true); setColumnHidden(TransferListModel::TR_LAST_ACTIVITY, true); setColumnHidden(TransferListModel::TR_TOTAL_SIZE, true); setColumnHidden(TransferListModel::TR_REANNOUNCE, true); + setColumnHidden(TransferListModel::TR_PRIVATE, true); } //Ensure that at least one column is visible at all times @@ -292,11 +302,11 @@ void TransferListWidget::torrentDoubleClicked() switch (action) { - case TOGGLE_PAUSE: - if (torrent->isPaused()) - torrent->resume(); + case TOGGLE_STOP: + if (torrent->isStopped()) + torrent->start(); else - torrent->pause(); + torrent->stop(); break; case PREVIEW_FILE: if (torrentContainsPreviewableFiles(torrent)) @@ -320,22 +330,22 @@ void TransferListWidget::torrentDoubleClicked() } } -QVector TransferListWidget::getSelectedTorrents() const +QList TransferListWidget::getSelectedTorrents() const { const QModelIndexList selectedRows = selectionModel()->selectedRows(); - QVector torrents; + QList torrents; torrents.reserve(selectedRows.size()); for (const QModelIndex &index : selectedRows) torrents << m_listModel->torrentHandle(mapToSource(index)); return torrents; } -QVector TransferListWidget::getVisibleTorrents() const +QList TransferListWidget::getVisibleTorrents() const { const int visibleTorrentsCount = m_sortFilterModel->rowCount(); - QVector torrents; + QList torrents; torrents.reserve(visibleTorrentsCount); for (int i = 0; i < visibleTorrentsCount; ++i) torrents << m_listModel->torrentHandle(mapToSource(m_sortFilterModel->index(i, 0))); @@ -344,7 +354,7 @@ QVector TransferListWidget::getVisibleTorrents() const void TransferListWidget::setSelectedTorrentsLocation() { - const QVector torrents = getSelectedTorrents(); + const QList torrents = getSelectedTorrents(); if (torrents.isEmpty()) return; @@ -356,7 +366,7 @@ void TransferListWidget::setSelectedTorrentsLocation() fileDialog->setOptions(QFileDialog::DontConfirmOverwrite | QFileDialog::ShowDirsOnly | QFileDialog::HideNameFilterDetails); connect(fileDialog, &QDialog::accepted, this, [this, fileDialog]() { - const QVector torrents = getSelectedTorrents(); + const QList torrents = getSelectedTorrents(); if (torrents.isEmpty()) return; @@ -375,66 +385,44 @@ void TransferListWidget::setSelectedTorrentsLocation() fileDialog->open(); } -void TransferListWidget::pauseAllTorrents() +void TransferListWidget::pauseSession() { - if (Preferences::instance()->confirmPauseAndResumeAll()) - { - // Show confirmation if user would really like to Pause All - const QMessageBox::StandardButton ret = QMessageBox::question(this, tr("Confirm pause") - , tr("Would you like to pause all torrents?"), (QMessageBox::Yes | QMessageBox::No)); - - if (ret != QMessageBox::Yes) - return; - } - - for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents())) - torrent->pause(); + BitTorrent::Session::instance()->pause(); } -void TransferListWidget::resumeAllTorrents() +void TransferListWidget::resumeSession() { - if (Preferences::instance()->confirmPauseAndResumeAll()) - { - // Show confirmation if user would really like to Resume All - const QMessageBox::StandardButton ret = QMessageBox::question(this, tr("Confirm resume") - , tr("Would you like to resume all torrents?"), (QMessageBox::Yes | QMessageBox::No)); - - if (ret != QMessageBox::Yes) - return; - } - - for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents())) - torrent->resume(); + BitTorrent::Session::instance()->resume(); } void TransferListWidget::startSelectedTorrents() { for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents())) - torrent->resume(); + torrent->start(); } void TransferListWidget::forceStartSelectedTorrents() { for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents())) - torrent->resume(BitTorrent::TorrentOperatingMode::Forced); + torrent->start(BitTorrent::TorrentOperatingMode::Forced); } void TransferListWidget::startVisibleTorrents() { for (BitTorrent::Torrent *const torrent : asConst(getVisibleTorrents())) - torrent->resume(); + torrent->start(); } -void TransferListWidget::pauseSelectedTorrents() +void TransferListWidget::stopSelectedTorrents() { for (BitTorrent::Torrent *const torrent : asConst(getSelectedTorrents())) - torrent->pause(); + torrent->stop(); } -void TransferListWidget::pauseVisibleTorrents() +void TransferListWidget::stopVisibleTorrents() { for (BitTorrent::Torrent *const torrent : asConst(getVisibleTorrents())) - torrent->pause(); + torrent->stop(); } void TransferListWidget::softDeleteSelectedTorrents() @@ -449,9 +437,9 @@ void TransferListWidget::permDeleteSelectedTorrents() void TransferListWidget::deleteSelectedTorrents(const bool deleteLocalFiles) { - if (m_mainWindow->currentTabWidget() != this) return; + if (app()->mainWindow()->currentTabWidget() != this) return; - const QVector torrents = getSelectedTorrents(); + const QList torrents = getSelectedTorrents(); if (torrents.empty()) return; if (Preferences::instance()->confirmTorrentDeletion()) @@ -462,7 +450,7 @@ void TransferListWidget::deleteSelectedTorrents(const bool deleteLocalFiles) { // Some torrents might be removed when waiting for user input, so refetch the torrent list // NOTE: this will only work when dialog is modal - removeTorrents(getSelectedTorrents(), dialog->isDeleteFileSelected()); + removeTorrents(getSelectedTorrents(), dialog->isRemoveContentSelected()); }); dialog->open(); } @@ -474,7 +462,7 @@ void TransferListWidget::deleteSelectedTorrents(const bool deleteLocalFiles) void TransferListWidget::deleteVisibleTorrents() { - const QVector torrents = getVisibleTorrents(); + const QList torrents = getVisibleTorrents(); if (torrents.empty()) return; if (Preferences::instance()->confirmTorrentDeletion()) @@ -485,7 +473,7 @@ void TransferListWidget::deleteVisibleTorrents() { // Some torrents might be removed when waiting for user input, so refetch the torrent list // NOTE: this will only work when dialog is modal - removeTorrents(getVisibleTorrents(), dialog->isDeleteFileSelected()); + removeTorrents(getVisibleTorrents(), dialog->isRemoveContentSelected()); }); dialog->open(); } @@ -498,26 +486,26 @@ void TransferListWidget::deleteVisibleTorrents() void TransferListWidget::increaseQueuePosSelectedTorrents() { qDebug() << Q_FUNC_INFO; - if (m_mainWindow->currentTabWidget() == this) + if (app()->mainWindow()->currentTabWidget() == this) BitTorrent::Session::instance()->increaseTorrentsQueuePos(extractIDs(getSelectedTorrents())); } void TransferListWidget::decreaseQueuePosSelectedTorrents() { qDebug() << Q_FUNC_INFO; - if (m_mainWindow->currentTabWidget() == this) + if (app()->mainWindow()->currentTabWidget() == this) BitTorrent::Session::instance()->decreaseTorrentsQueuePos(extractIDs(getSelectedTorrents())); } void TransferListWidget::topQueuePosSelectedTorrents() { - if (m_mainWindow->currentTabWidget() == this) + if (app()->mainWindow()->currentTabWidget() == this) BitTorrent::Session::instance()->topTorrentsQueuePos(extractIDs(getSelectedTorrents())); } void TransferListWidget::bottomQueuePosSelectedTorrents() { - if (m_mainWindow->currentTabWidget() == this) + if (app()->mainWindow()->currentTabWidget() == this) BitTorrent::Session::instance()->bottomTorrentsQueuePos(extractIDs(getSelectedTorrents())); } @@ -643,7 +631,7 @@ void TransferListWidget::previewSelectedTorrents() void TransferListWidget::setTorrentOptions() { - const QVector selectedTorrents = getSelectedTorrents(); + const QList selectedTorrents = getSelectedTorrents(); if (selectedTorrents.empty()) return; auto *dialog = new TorrentOptionsDialog {this, selectedTorrents}; @@ -695,6 +683,7 @@ void TransferListWidget::displayColumnHeaderMenu() continue; const auto columnName = m_listModel->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString(); + const QVariant columnToolTip = m_listModel->headerData(i, Qt::Horizontal, Qt::ToolTipRole); QAction *action = menu->addAction(columnName, this, [this, i](const bool checked) { if (!checked && (visibleColumnsCount() <= 1)) @@ -709,6 +698,8 @@ void TransferListWidget::displayColumnHeaderMenu() }); action->setCheckable(true); action->setChecked(!isColumnHidden(i)); + if (!columnToolTip.isNull()) + action->setToolTip(columnToolTip.toString()); } menu->addSeparator(); @@ -770,26 +761,26 @@ void TransferListWidget::askNewCategoryForSelection() void TransferListWidget::askAddTagsForSelection() { - const QStringList tags = askTagsForSelection(tr("Add Tags")); - for (const QString &tag : tags) + const TagSet tags = askTagsForSelection(tr("Add tags")); + for (const Tag &tag : tags) addSelectionTag(tag); } void TransferListWidget::editTorrentTrackers() { - const QVector torrents = getSelectedTorrents(); - QVector commonTrackers; + const QList torrents = getSelectedTorrents(); + QList commonTrackers; if (!torrents.empty()) { - commonTrackers = torrents[0]->trackers(); + for (const BitTorrent::TrackerEntryStatus &status : asConst(torrents[0]->trackers())) + commonTrackers.append({.url = status.url, .tier = status.tier}); for (const BitTorrent::Torrent *torrent : torrents) { QSet trackerSet; - - for (const BitTorrent::TrackerEntry &entry : asConst(torrent->trackers())) - trackerSet.insert(entry); + for (const BitTorrent::TrackerEntryStatus &status : asConst(torrent->trackers())) + trackerSet.insert({.url = status.url, .tier = status.tier}); commonTrackers.erase(std::remove_if(commonTrackers.begin(), commonTrackers.end() , [&trackerSet](const BitTorrent::TrackerEntry &entry) { return !trackerSet.contains(entry); }) @@ -821,7 +812,7 @@ void TransferListWidget::exportTorrent() fileDialog->setOptions(QFileDialog::ShowDirsOnly); connect(fileDialog, &QFileDialog::fileSelected, this, [this](const QString &dir) { - const QVector torrents = getSelectedTorrents(); + const QList torrents = getSelectedTorrents(); if (torrents.isEmpty()) return; @@ -871,9 +862,9 @@ void TransferListWidget::confirmRemoveAllTagsForSelection() clearSelectionTags(); } -QStringList TransferListWidget::askTagsForSelection(const QString &dialogTitle) +TagSet TransferListWidget::askTagsForSelection(const QString &dialogTitle) { - QStringList tags; + TagSet tags; bool invalid = true; while (invalid) { @@ -883,18 +874,23 @@ QStringList TransferListWidget::askTagsForSelection(const QString &dialogTitle) this, dialogTitle, tr("Comma-separated tags:"), QLineEdit::Normal, {}, &ok).trimmed(); if (!ok || tagsInput.isEmpty()) return {}; - tags = tagsInput.split(u',', Qt::SkipEmptyParts); - for (QString &tag : tags) + + const QStringList tagStrings = tagsInput.split(u',', Qt::SkipEmptyParts); + tags.clear(); + for (const QString &tagStr : tagStrings) { - tag = tag.trimmed(); - if (!BitTorrent::Session::isValidTag(tag)) + const Tag tag {tagStr}; + if (!tag.isValid()) { - QMessageBox::warning(this, tr("Invalid tag") - , tr("Tag name: '%1' is invalid").arg(tag)); + QMessageBox::warning(this, tr("Invalid tag"), tr("Tag name: '%1' is invalid").arg(tag.toString())); invalid = true; } + + if (!invalid) + tags.insert(tag); } } + return tags; } @@ -939,12 +935,12 @@ void TransferListWidget::setSelectionCategory(const QString &category) applyToSelectedTorrents([&category](BitTorrent::Torrent *torrent) { torrent->setCategory(category); }); } -void TransferListWidget::addSelectionTag(const QString &tag) +void TransferListWidget::addSelectionTag(const Tag &tag) { applyToSelectedTorrents([&tag](BitTorrent::Torrent *const torrent) { torrent->addTag(tag); }); } -void TransferListWidget::removeSelectionTag(const QString &tag) +void TransferListWidget::removeSelectionTag(const Tag &tag) { applyToSelectedTorrents([&tag](BitTorrent::Torrent *const torrent) { torrent->removeTag(tag); }); } @@ -966,11 +962,11 @@ void TransferListWidget::displayListMenu() // Create actions - auto *actionStart = new QAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("&Resume", "Resume/start the torrent"), listMenu); + auto *actionStart = new QAction(UIThemeManager::instance()->getIcon(u"torrent-start"_s, u"media-playback-start"_s), tr("&Start", "Resume/start the torrent"), listMenu); connect(actionStart, &QAction::triggered, this, &TransferListWidget::startSelectedTorrents); - auto *actionPause = new QAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("&Pause", "Pause the torrent"), listMenu); - connect(actionPause, &QAction::triggered, this, &TransferListWidget::pauseSelectedTorrents); - auto *actionForceStart = new QAction(UIThemeManager::instance()->getIcon(u"torrent-start-forced"_s, u"media-playback-start"_s), tr("Force Resu&me", "Force Resume/start the torrent"), listMenu); + auto *actionStop = new QAction(UIThemeManager::instance()->getIcon(u"torrent-stop"_s, u"media-playback-pause"_s), tr("Sto&p", "Stop the torrent"), listMenu); + connect(actionStop, &QAction::triggered, this, &TransferListWidget::stopSelectedTorrents); + auto *actionForceStart = new QAction(UIThemeManager::instance()->getIcon(u"torrent-start-forced"_s, u"media-playback-start"_s), tr("Force Star&t", "Force Resume/start the torrent"), listMenu); connect(actionForceStart, &QAction::triggered, this, &TransferListWidget::forceStartSelectedTorrents); auto *actionDelete = new QAction(UIThemeManager::instance()->getIcon(u"list-remove"_s), tr("&Remove", "Remove the torrent"), listMenu); connect(actionDelete, &QAction::triggered, this, &TransferListWidget::softDeleteSelectedTorrents); @@ -1023,8 +1019,8 @@ void TransferListWidget::displayListMenu() connect(actionExportTorrent, &QAction::triggered, this, &TransferListWidget::exportTorrent); // End of actions - // Enable/disable pause/start action given the DL state - bool needsPause = false, needsStart = false, needsForce = false, needsPreview = false; + // Enable/disable stop/start action given the DL state + bool needsStop = false, needsStart = false, needsForce = false, needsPreview = false; bool allSameSuperSeeding = true; bool superSeedingMode = false; bool allSameSequentialDownloadMode = true, allSamePrioFirstlast = true; @@ -1042,10 +1038,9 @@ void TransferListWidget::displayListMenu() for (const QModelIndex &index : selectedIndexes) { - // Get the file name - // Get handle and pause the torrent const BitTorrent::Torrent *torrent = m_listModel->torrentHandle(mapToSource(index)); - if (!torrent) continue; + if (!torrent) + continue; if (firstCategory.isEmpty() && first) firstCategory = torrent->category(); @@ -1102,11 +1097,11 @@ void TransferListWidget::displayListMenu() else needsStart = true; - const bool isPaused = torrent->isPaused(); - if (isPaused) + const bool isStopped = torrent->isStopped(); + if (isStopped) needsStart = true; else - needsPause = true; + needsStop = true; if (torrent->isErrored() || torrent->hasMissingFiles()) { @@ -1130,17 +1125,16 @@ void TransferListWidget::displayListMenu() if (rechecking) { needsStart = true; - needsPause = true; + needsStop = true; } - const bool queued = (BitTorrent::Session::instance()->isQueueingSystemEnabled() && torrent->isQueued()); - - if (!isPaused && !rechecking && !queued) + const bool queued = torrent->isQueued(); + if (!isStopped && !rechecking && !queued) oneCanForceReannounce = true; if (oneHasMetadata && oneNotFinished && !allSameSequentialDownloadMode && !allSamePrioFirstlast && !allSameSuperSeeding && !allSameCategory - && needsStart && needsForce && needsPause && needsPreview && !allSameAutoTMM + && needsStart && needsForce && needsStop && needsPreview && !allSameAutoTMM && hasInfohashV1 && hasInfohashV2 && oneCanForceReannounce) { break; @@ -1149,8 +1143,8 @@ void TransferListWidget::displayListMenu() if (needsStart) listMenu->addAction(actionStart); - if (needsPause) - listMenu->addAction(actionPause); + if (needsStop) + listMenu->addAction(actionStop); if (needsForce) listMenu->addAction(actionForceStart); listMenu->addSeparator(); @@ -1187,9 +1181,6 @@ void TransferListWidget::displayListMenu() } // Tag Menu - QStringList tags(BitTorrent::Session::instance()->tags().values()); - std::sort(tags.begin(), tags.end(), Utils::Compare::NaturalLessThan()); - QMenu *tagsMenu = listMenu->addMenu(UIThemeManager::instance()->getIcon(u"tags"_s, u"view-categories"_s), tr("Ta&gs")); tagsMenu->addAction(UIThemeManager::instance()->getIcon(u"list-add"_s), tr("&Add...", "Add / assign multiple tags...") @@ -1204,9 +1195,10 @@ void TransferListWidget::displayListMenu() }); tagsMenu->addSeparator(); - for (const QString &tag : asConst(tags)) + const TagSet tags = BitTorrent::Session::instance()->tags(); + for (const Tag &tag : asConst(tags)) { - auto *action = new TriStateAction(tag, tagsMenu); + auto *action = new TriStateAction(Utils::Gui::tagToWidgetText(tag), tagsMenu); action->setCloseOnInteraction(false); const Qt::CheckState initialState = tagsInAll.contains(tag) ? Qt::Checked @@ -1264,12 +1256,12 @@ void TransferListWidget::displayListMenu() listMenu->addSeparator(); if (oneHasMetadata) listMenu->addAction(actionForceRecheck); - // We can not force reannounce torrents that are paused/errored/checking/missing files/queued. + // We can not force reannounce torrents that are stopped/errored/checking/missing files/queued. // We may already have the tracker list from magnet url. So we can force reannounce torrents without metadata anyway. listMenu->addAction(actionForceReannounce); actionForceReannounce->setEnabled(oneCanForceReannounce); if (!oneCanForceReannounce) - actionForceReannounce->setToolTip(tr("Can not force reannounce if torrent is Paused/Queued/Errored/Checking")); + actionForceReannounce->setToolTip(tr("Can not force reannounce if torrent is Stopped/Queued/Errored/Checking")); listMenu->addSeparator(); listMenu->addAction(actionOpenDestinationFolder); if (BitTorrent::Session::instance()->isQueueingSystemEnabled() && oneNotFinished) @@ -1320,12 +1312,12 @@ void TransferListWidget::applyCategoryFilter(const QString &category) m_sortFilterModel->setCategoryFilter(category); } -void TransferListWidget::applyTagFilter(const QString &tag) +void TransferListWidget::applyTagFilter(const std::optional &tag) { - if (tag.isNull()) + if (!tag) m_sortFilterModel->disableTagFilter(); else - m_sortFilterModel->setTagFilter(tag); + m_sortFilterModel->setTagFilter(*tag); } void TransferListWidget::applyTrackerFilterAll() @@ -1346,9 +1338,10 @@ void TransferListWidget::applyFilter(const QString &name, const TransferListMode m_sortFilterModel->setFilterRegularExpression(QRegularExpression(pattern, QRegularExpression::CaseInsensitiveOption)); } -void TransferListWidget::applyStatusFilter(int f) +void TransferListWidget::applyStatusFilter(const int filterIndex) { - m_sortFilterModel->setStatusFilter(static_cast(f)); + const auto filterType = static_cast(filterIndex); + m_sortFilterModel->setStatusFilter(((filterType >= TorrentFilter::All) && (filterType < TorrentFilter::_Count)) ? filterType : TorrentFilter::All); // Select first item if nothing is selected if (selectionModel()->selectedRows(0).empty() && (m_sortFilterModel->rowCount() > 0)) { @@ -1367,6 +1360,79 @@ bool TransferListWidget::loadSettings() return header()->restoreState(Preferences::instance()->getTransHeaderState()); } +void TransferListWidget::dragEnterEvent(QDragEnterEvent *event) +{ + if (const QMimeData *data = event->mimeData(); data->hasText() || data->hasUrls()) + { + event->setDropAction(Qt::CopyAction); + event->accept(); + } +} + +void TransferListWidget::dragMoveEvent(QDragMoveEvent *event) +{ + event->acceptProposedAction(); // required, otherwise we won't get `dropEvent` +} + +void TransferListWidget::dropEvent(QDropEvent *event) +{ + event->acceptProposedAction(); + // remove scheme + QStringList files; + if (const QMimeData *data = event->mimeData(); data->hasUrls()) + { + const QList urls = data->urls(); + files.reserve(urls.size()); + + for (const QUrl &url : urls) + { + if (url.isEmpty()) + continue; + + files.append(url.isLocalFile() + ? url.toLocalFile() + : url.toString()); + } + } + else + { + files = data->text().split(u'\n', Qt::SkipEmptyParts); + } + + // differentiate ".torrent" files/links & magnet links from others + QStringList torrentFiles, otherFiles; + torrentFiles.reserve(files.size()); + otherFiles.reserve(files.size()); + for (const QString &file : asConst(files)) + { + if (Utils::Misc::isTorrentLink(file)) + torrentFiles << file; + else + otherFiles << file; + } + + // Download torrents + if (!torrentFiles.isEmpty()) + { + for (const QString &file : asConst(torrentFiles)) + app()->addTorrentManager()->addTorrent(file); + + return; + } + + // Create torrent + for (const QString &file : asConst(otherFiles)) + { + auto torrentCreator = new TorrentCreatorDialog(this, Path(file)); + torrentCreator->setAttribute(Qt::WA_DeleteOnClose); + torrentCreator->show(); + + // currently only handle the first entry + // this is a stub that can be expanded later to create many torrents at once + break; + } +} + void TransferListWidget::wheelEvent(QWheelEvent *event) { if (event->modifiers() & Qt::ShiftModifier) diff --git a/src/gui/transferlistwidget.h b/src/gui/transferlistwidget.h index 88a00662b625..c5b24ba2405a 100644 --- a/src/gui/transferlistwidget.h +++ b/src/gui/transferlistwidget.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2023 Vladimir Golovnev * Copyright (C) 2006 Christophe Dumez * * This program is free software; you can redistribute it and/or @@ -34,9 +35,9 @@ #include #include "base/bittorrent/infohash.h" +#include "guiapplicationcomponent.h" #include "transferlistmodel.h" -class MainWindow; class Path; class TransferListSortModel; @@ -51,29 +52,29 @@ enum class CopyInfohashPolicy Version2 }; -class TransferListWidget final : public QTreeView +class TransferListWidget final : public GUIApplicationComponent { Q_OBJECT Q_DISABLE_COPY_MOVE(TransferListWidget) public: - TransferListWidget(QWidget *parent, MainWindow *mainWindow); + TransferListWidget(IGUIApplication *app, QWidget *parent); ~TransferListWidget() override; TransferListModel *getSourceModel() const; public slots: void setSelectionCategory(const QString &category); - void addSelectionTag(const QString &tag); - void removeSelectionTag(const QString &tag); + void addSelectionTag(const Tag &tag); + void removeSelectionTag(const Tag &tag); void clearSelectionTags(); void setSelectedTorrentsLocation(); - void pauseAllTorrents(); - void resumeAllTorrents(); + void pauseSession(); + void resumeSession(); void startSelectedTorrents(); void forceStartSelectedTorrents(); void startVisibleTorrents(); - void pauseSelectedTorrents(); - void pauseVisibleTorrents(); + void stopSelectedTorrents(); + void stopVisibleTorrents(); void softDeleteSelectedTorrents(); void permDeleteSelectedTorrents(); void deleteSelectedTorrents(bool deleteLocalFiles); @@ -94,9 +95,9 @@ public slots: void previewSelectedTorrents(); void hideQueuePosColumn(bool hide); void applyFilter(const QString &name, const TransferListModel::Column &type); - void applyStatusFilter(int f); + void applyStatusFilter(int filterIndex); void applyCategoryFilter(const QString &category); - void applyTagFilter(const QString &tag); + void applyTagFilter(const std::optional &tag); void applyTrackerFilterAll(); void applyTrackerFilter(const QSet &torrentIDs); void previewFile(const Path &filePath); @@ -118,22 +119,24 @@ private slots: void saveSettings(); private: + void dragEnterEvent(QDragEnterEvent *event) override; + void dragMoveEvent(QDragMoveEvent *event) override; + void dropEvent(QDropEvent *event) override; void wheelEvent(QWheelEvent *event) override; QModelIndex mapToSource(const QModelIndex &index) const; QModelIndexList mapToSource(const QModelIndexList &indexes) const; QModelIndex mapFromSource(const QModelIndex &index) const; bool loadSettings(); - QVector getSelectedTorrents() const; + QList getSelectedTorrents() const; void askAddTagsForSelection(); void editTorrentTrackers(); void exportTorrent(); void confirmRemoveAllTagsForSelection(); - QStringList askTagsForSelection(const QString &dialogTitle); + TagSet askTagsForSelection(const QString &dialogTitle); void applyToSelectedTorrents(const std::function &fn); - QVector getVisibleTorrents() const; + QList getVisibleTorrents() const; int visibleColumnsCount() const; TransferListModel *m_listModel = nullptr; TransferListSortModel *m_sortFilterModel = nullptr; - MainWindow *m_mainWindow = nullptr; }; diff --git a/src/gui/uithemecommon.h b/src/gui/uithemecommon.h index f08cb2de1f7e..31ae5a456050 100644 --- a/src/gui/uithemecommon.h +++ b/src/gui/uithemecommon.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -29,7 +29,6 @@ #pragma once -#include #include #include #include @@ -53,17 +52,16 @@ struct UIThemeColor inline QHash defaultUIThemeColors() { - const QPalette palette = QApplication::palette(); return { {u"Log.TimeStamp"_s, {Color::Primer::Light::fgSubtle, Color::Primer::Dark::fgSubtle}}, - {u"Log.Normal"_s, {palette.color(QPalette::Active, QPalette::WindowText), palette.color(QPalette::Active, QPalette::WindowText)}}, + {u"Log.Normal"_s, {{}, {}}}, {u"Log.Info"_s, {Color::Primer::Light::accentFg, Color::Primer::Dark::accentFg}}, {u"Log.Warning"_s, {Color::Primer::Light::severeFg, Color::Primer::Dark::severeFg}}, {u"Log.Critical"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}}, {u"Log.BannedPeer"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}}, - {u"RSS.ReadArticle"_s, {palette.color(QPalette::Inactive, QPalette::WindowText), palette.color(QPalette::Inactive, QPalette::WindowText)}}, - {u"RSS.UnreadArticle"_s, {palette.color(QPalette::Active, QPalette::Link), palette.color(QPalette::Active, QPalette::Link)}}, + {u"RSS.ReadArticle"_s, {{}, {}}}, + {u"RSS.UnreadArticle"_s, {{}, {}}}, {u"TransferList.Downloading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}}, {u"TransferList.StalledDownloading"_s, {Color::Primer::Light::successEmphasis, Color::Primer::Dark::successEmphasis}}, @@ -78,8 +76,8 @@ inline QHash defaultUIThemeColors() {u"TransferList.CheckingDownloading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}}, {u"TransferList.CheckingUploading"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}}, {u"TransferList.CheckingResumeData"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}}, - {u"TransferList.PausedDownloading"_s, {Color::Primer::Light::fgMuted, Color::Primer::Dark::fgMuted}}, - {u"TransferList.PausedUploading"_s, {Color::Primer::Light::doneFg, Color::Primer::Dark::doneFg}}, + {u"TransferList.StoppedDownloading"_s, {Color::Primer::Light::fgMuted, Color::Primer::Dark::fgMuted}}, + {u"TransferList.StoppedUploading"_s, {Color::Primer::Light::doneFg, Color::Primer::Dark::doneFg}}, {u"TransferList.Moving"_s, {Color::Primer::Light::successFg, Color::Primer::Dark::successFg}}, {u"TransferList.MissingFiles"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}}, {u"TransferList.Error"_s, {Color::Primer::Light::dangerFg, Color::Primer::Dark::dangerFg}} @@ -134,6 +132,8 @@ inline QSet defaultUIThemeIcons() u"network-connect"_s, u"network-server"_s, u"object-locked"_s, + u"pause-session"_s, + u"paused"_s, u"peers"_s, u"peers-add"_s, u"peers-remove"_s, @@ -148,6 +148,8 @@ inline QSet defaultUIThemeIcons() u"queued"_s, u"ratio"_s, u"reannounce"_s, + u"rss_read_article"_s, + u"rss_unread_article"_s, u"security-high"_s, u"security-low"_s, u"set-location"_s, diff --git a/src/gui/uithemedialog.cpp b/src/gui/uithemedialog.cpp index 3187a0f1542d..24ee381dacab 100644 --- a/src/gui/uithemedialog.cpp +++ b/src/gui/uithemedialog.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -64,20 +64,23 @@ namespace } } -class ColorWidget final : public QFrame +class ColorWidget final : public QLabel { Q_DISABLE_COPY_MOVE(ColorWidget) + Q_DECLARE_TR_FUNCTIONS(ColorWidget) public: explicit ColorWidget(const QColor ¤tColor, const QColor &defaultColor, QWidget *parent = nullptr) - : QFrame(parent) + : QLabel(parent) , m_defaultColor {defaultColor} + , m_currentColor {currentColor} { - setObjectName(u"colorWidget"_s); + setObjectName("colorWidget"); setFrameShape(QFrame::Box); setFrameShadow(QFrame::Plain); + setAlignment(Qt::AlignCenter); - setCurrentColor(currentColor); + applyColor(currentColor); } QColor currentColor() const @@ -118,7 +121,16 @@ class ColorWidget final : public QFrame void applyColor(const QColor &color) { - setStyleSheet(u"#colorWidget { background-color: %1; }"_s.arg(color.name())); + if (color.isValid()) + { + setStyleSheet(u"#colorWidget { background-color: %1; }"_s.arg(color.name())); + setText({}); + } + else + { + setStyleSheet({}); + setText(tr("System")); + } } void showColorDialog() @@ -140,13 +152,14 @@ class ColorWidget final : public QFrame class IconWidget final : public QLabel { Q_DISABLE_COPY_MOVE(IconWidget) + Q_DECLARE_TR_FUNCTIONS(IconWidget) public: explicit IconWidget(const Path ¤tPath, const Path &defaultPath, QWidget *parent = nullptr) : QLabel(parent) , m_defaultPath {defaultPath} { - setObjectName(u"iconWidget"_s); + setObjectName("iconWidget"); setAlignment(Qt::AlignCenter); setCurrentPath(currentPath); @@ -260,6 +273,8 @@ void UIThemeDialog::loadColors() int row = 2; for (const QString &id : colorIDs) { + if (id == u"Log.Normal") + qDebug() << "!!!!!!!"; m_ui->colorsLayout->addWidget(new QLabel(id), row, 0); const UIThemeColor &defaultColor = defaultColors.value(id); diff --git a/src/gui/uithemedialog.ui b/src/gui/uithemedialog.ui index 067905456bbd..c2de159d08d2 100644 --- a/src/gui/uithemedialog.ui +++ b/src/gui/uithemedialog.ui @@ -54,10 +54,10 @@ - QFrame::NoFrame + QFrame::Shape::NoFrame - QAbstractScrollArea::AdjustToContentsOnFirstShow + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow true @@ -115,7 +115,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -157,10 +157,10 @@ - QFrame::NoFrame + QFrame::Shape::NoFrame - QAbstractScrollArea::AdjustToContentsOnFirstShow + QAbstractScrollArea::SizeAdjustPolicy::AdjustToContentsOnFirstShow true @@ -218,7 +218,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -239,10 +239,10 @@ - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/gui/uithememanager.cpp b/src/gui/uithememanager.cpp index aa49badd5632..b8cd31fb9918 100644 --- a/src/gui/uithememanager.cpp +++ b/src/gui/uithememanager.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * Copyright (C) 2019, 2021 Prince Gupta * * This program is free software; you can redistribute it and/or @@ -30,9 +30,12 @@ #include "uithememanager.h" +#include #include #include #include +#include +#include #include "base/global.h" #include "base/logger.h" @@ -66,10 +69,28 @@ void UIThemeManager::initInstance() UIThemeManager::UIThemeManager() : m_useCustomTheme {Preferences::instance()->useCustomUITheme()} +#ifdef QBT_HAS_COLORSCHEME_OPTION + , m_colorSchemeSetting {u"Appearance/ColorScheme"_s} +#endif #if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) , m_useSystemIcons {Preferences::instance()->useSystemIcons()} #endif { +#ifdef Q_OS_WIN + if (const QString styleName = Preferences::instance()->getStyle(); styleName.compare(u"system", Qt::CaseInsensitive) != 0) + { + if (!QApplication::setStyle(styleName.isEmpty() ? u"Fusion"_s : styleName)) + LogMsg(tr("Set app style failed. Unknown style: \"%1\"").arg(styleName), Log::WARNING); + } +#endif + +#ifdef QBT_HAS_COLORSCHEME_OPTION + applyColorScheme(); +#endif + + // NOTE: Qt::QueuedConnection can be omitted as soon as support for Qt 6.5 is dropped + connect(QApplication::styleHints(), &QStyleHints::colorSchemeChanged, this, &UIThemeManager::onColorSchemeChanged, Qt::QueuedConnection); + if (m_useCustomTheme) { const Path themePath = Preferences::instance()->customUIThemePath(); @@ -102,11 +123,51 @@ UIThemeManager *UIThemeManager::instance() return m_instance; } +#ifdef QBT_HAS_COLORSCHEME_OPTION +ColorScheme UIThemeManager::colorScheme() const +{ + return m_colorSchemeSetting.get(ColorScheme::System); +} + +void UIThemeManager::setColorScheme(const ColorScheme value) +{ + if (value == colorScheme()) + return; + + m_colorSchemeSetting = value; +} + +void UIThemeManager::applyColorScheme() const +{ + switch (colorScheme()) + { + case ColorScheme::System: + default: + qApp->styleHints()->unsetColorScheme(); + break; + case ColorScheme::Light: + qApp->styleHints()->setColorScheme(Qt::ColorScheme::Light); + break; + case ColorScheme::Dark: + qApp->styleHints()->setColorScheme(Qt::ColorScheme::Dark); + break; + } +} +#endif + void UIThemeManager::applyStyleSheet() const { qApp->setStyleSheet(QString::fromUtf8(m_themeSource->readStyleSheet())); } +void UIThemeManager::onColorSchemeChanged() +{ + emit themeChanged(); + + // workaround to refresh styled controls once color scheme is changed + QApplication::setStyle(QApplication::style()->name()); +} + QIcon UIThemeManager::getIcon(const QString &iconId, [[maybe_unused]] const QString &fallback) const { const auto colorMode = isDarkTheme() ? ColorMode::Dark : ColorMode::Light; @@ -138,8 +199,8 @@ QIcon UIThemeManager::getFlagIcon(const QString &countryIsoCode) const return {}; const QString key = countryIsoCode.toLower(); - const auto iter = m_flags.find(key); - if (iter != m_flags.end()) + const auto iter = m_flags.constFind(key); + if (iter != m_flags.cend()) return *iter; const QIcon icon {u":/icons/flags/" + key + u".svg"}; @@ -169,8 +230,6 @@ QPixmap UIThemeManager::getScaledPixmap(const QString &iconId, const int height) QColor UIThemeManager::getColor(const QString &id) const { const QColor color = m_themeSource->getColor(id, (isDarkTheme() ? ColorMode::Dark : ColorMode::Light)); - Q_ASSERT(color.isValid()); - return color; } diff --git a/src/gui/uithememanager.h b/src/gui/uithememanager.h index 88c7eba3b91b..3a2f9ad951bb 100644 --- a/src/gui/uithememanager.h +++ b/src/gui/uithememanager.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2023 Vladimir Golovnev + * Copyright (C) 2023-2024 Vladimir Golovnev * Copyright (C) 2019 Prince Gupta * * This program is free software; you can redistribute it and/or @@ -31,6 +31,7 @@ #pragma once #include +#include #include #include #include @@ -38,9 +39,17 @@ #include #include -#include "base/pathfwd.h" #include "uithemesource.h" +#if (QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)) && defined(Q_OS_WIN) +#define QBT_HAS_COLORSCHEME_OPTION +#endif + +#ifdef QBT_HAS_COLORSCHEME_OPTION +#include "base/settingvalue.h" +#include "colorscheme.h" +#endif + class UIThemeManager final : public QObject { Q_OBJECT @@ -51,20 +60,36 @@ class UIThemeManager final : public QObject static void freeInstance(); static UIThemeManager *instance(); +#ifdef QBT_HAS_COLORSCHEME_OPTION + ColorScheme colorScheme() const; + void setColorScheme(ColorScheme value); +#endif + QIcon getIcon(const QString &iconId, const QString &fallback = {}) const; QIcon getFlagIcon(const QString &countryIsoCode) const; QPixmap getScaledPixmap(const QString &iconId, int height) const; QColor getColor(const QString &id) const; +signals: + void themeChanged(); + private: UIThemeManager(); // singleton class void applyPalette() const; void applyStyleSheet() const; + void onColorSchemeChanged(); + +#ifdef QBT_HAS_COLORSCHEME_OPTION + void applyColorScheme() const; +#endif static UIThemeManager *m_instance; const bool m_useCustomTheme; +#ifdef QBT_HAS_COLORSCHEME_OPTION + SettingValue m_colorSchemeSetting; +#endif #if (defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)) const bool m_useSystemIcons; #endif diff --git a/src/gui/uithemesource.cpp b/src/gui/uithemesource.cpp index c4e4ef7f4c87..c3908b0b8c9f 100644 --- a/src/gui/uithemesource.cpp +++ b/src/gui/uithemesource.cpp @@ -114,8 +114,13 @@ QByteArray DefaultThemeSource::readStyleSheet() QColor DefaultThemeSource::getColor(const QString &colorId, const ColorMode colorMode) const { + const auto iter = m_colors.constFind(colorId); + Q_ASSERT(iter != m_colors.constEnd()); + if (iter == m_colors.constEnd()) [[unlikely]] + return {}; + return (colorMode == ColorMode::Light) - ? m_colors.value(colorId).light : m_colors.value(colorId).dark; + ? iter.value().light : iter.value().dark; } Path DefaultThemeSource::getIconPath(const QString &iconId, const ColorMode colorMode) const @@ -170,7 +175,7 @@ void DefaultThemeSource::loadColors() const QHash lightModeColorOverrides = colorsFromJSON(config.value(KEY_COLORS_LIGHT).toObject()); for (auto overridesIt = lightModeColorOverrides.cbegin(); overridesIt != lightModeColorOverrides.cend(); ++overridesIt) { - auto it = m_colors.find(overridesIt.key()); + const auto it = m_colors.find(overridesIt.key()); if (it != m_colors.end()) it.value().light = overridesIt.value(); } @@ -178,7 +183,7 @@ void DefaultThemeSource::loadColors() const QHash darkModeColorOverrides = colorsFromJSON(config.value(KEY_COLORS_DARK).toObject()); for (auto overridesIt = darkModeColorOverrides.cbegin(); overridesIt != darkModeColorOverrides.cend(); ++overridesIt) { - auto it = m_colors.find(overridesIt.key()); + const auto it = m_colors.find(overridesIt.key()); if (it != m_colors.end()) it.value().dark = overridesIt.value(); } diff --git a/src/gui/uithemesource.h b/src/gui/uithemesource.h index cb2afbbeb9f2..cd7870595102 100644 --- a/src/gui/uithemesource.h +++ b/src/gui/uithemesource.h @@ -61,6 +61,8 @@ class UIThemeSource class DefaultThemeSource final : public UIThemeSource { + Q_DECLARE_TR_FUNCTIONS(DefaultThemeSource) + public: DefaultThemeSource(); @@ -78,6 +80,8 @@ class DefaultThemeSource final : public UIThemeSource class CustomThemeSource : public UIThemeSource { + Q_DECLARE_TR_FUNCTIONS(CustomThemeSource) + public: QColor getColor(const QString &colorId, ColorMode colorMode) const override; Path getIconPath(const QString &iconId, ColorMode colorMode) const override; diff --git a/src/gui/utils.cpp b/src/gui/utils.cpp index c7c1f24c4e76..c14bb4ed1c5d 100644 --- a/src/gui/utils.cpp +++ b/src/gui/utils.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2017 Mike Tzou * * This program is free software; you can redistribute it and/or @@ -38,7 +39,6 @@ #include #include -#include #include #include #include @@ -54,16 +54,10 @@ #include "base/global.h" #include "base/path.h" +#include "base/tag.h" #include "base/utils/fs.h" #include "base/utils/version.h" -QPixmap Utils::Gui::scaledPixmap(const QIcon &icon, const int height) -{ - Q_ASSERT(height > 0); - - return icon.pixmap(height); -} - QPixmap Utils::Gui::scaledPixmap(const Path &path, const int height) { Q_ASSERT(height >= 0); @@ -140,6 +134,7 @@ void Utils::Gui::openPath(const Path &path) ::CoUninitialize(); } }); + thread->setObjectName("Utils::Gui::openPath thread"); QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater); thread->start(); #else @@ -174,6 +169,7 @@ void Utils::Gui::openFolderSelect(const Path &path) ::CoUninitialize(); } }); + thread->setObjectName("Utils::Gui::openFolderSelect thread"); QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater); thread->start(); #elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) @@ -207,6 +203,10 @@ void Utils::Gui::openFolderSelect(const Path &path) { proc.startDetached(u"konqueror"_s, {u"--select"_s, path.toString()}); } + else if (output == u"thunar.desktop") + { + proc.startDetached(u"thunar"_s, {path.toString()}); + } else { // "caja" manager can't pinpoint the file, see: https://github.com/qbittorrent/qBittorrent/issues/5003 @@ -216,3 +216,29 @@ void Utils::Gui::openFolderSelect(const Path &path) openPath(path.parentPath()); #endif } + +QString Utils::Gui::tagToWidgetText(const Tag &tag) +{ + return tag.toString().replace(u'&', u"&&"_s); +} + +Tag Utils::Gui::widgetTextToTag(const QString &text) +{ + // replace pairs of '&' with single '&' and remove non-paired occurrences of '&' + QString cleanedText; + cleanedText.reserve(text.size()); + bool amp = false; + for (const QChar c : text) + { + if (c == u'&') + { + amp = !amp; + if (amp) + continue; + } + + cleanedText.append(c); + } + + return Tag(cleanedText); +} diff --git a/src/gui/utils.h b/src/gui/utils.h index c633cb45d4ed..4d994815b75e 100644 --- a/src/gui/utils.h +++ b/src/gui/utils.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2017 Mike Tzou * * This program is free software; you can redistribute it and/or @@ -30,17 +31,18 @@ #include "base/pathfwd.h" -class QIcon; class QPixmap; class QPoint; class QSize; +class QString; class QWidget; +class Tag; + namespace Utils::Gui { bool isDarkTheme(); - QPixmap scaledPixmap(const QIcon &icon, int height); QPixmap scaledPixmap(const Path &path, int height = 0); QSize smallIconSize(const QWidget *widget = nullptr); @@ -51,4 +53,7 @@ namespace Utils::Gui void openPath(const Path &path); void openFolderSelect(const Path &path); + + QString tagToWidgetText(const Tag &tag); + Tag widgetTextToTag(const QString &text); } diff --git a/src/gui/watchedfolderoptionsdialog.ui b/src/gui/watchedfolderoptionsdialog.ui index 92a1a5a17707..4c32920fbeec 100644 --- a/src/gui/watchedfolderoptionsdialog.ui +++ b/src/gui/watchedfolderoptionsdialog.ui @@ -29,7 +29,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -65,7 +65,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -80,7 +80,7 @@ - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok diff --git a/src/icons/flags/ad.svg b/src/icons/flags/ad.svg index 3793d99aa3ac..067ab772f61a 100644 --- a/src/icons/flags/ad.svg +++ b/src/icons/flags/ad.svg @@ -2,16 +2,16 @@ - + - + - + @@ -96,11 +96,11 @@ - + - + @@ -110,17 +110,17 @@ - - - + + + - + - - - + + + @@ -128,21 +128,21 @@ - + - + - + - + - + diff --git a/src/icons/flags/ae.svg b/src/icons/flags/ae.svg index b7acdbdb3671..651ac8523d3d 100644 --- a/src/icons/flags/ae.svg +++ b/src/icons/flags/ae.svg @@ -1,6 +1,6 @@ - + diff --git a/src/icons/flags/af.svg b/src/icons/flags/af.svg index 417dd04769e5..521ac4cfd880 100644 --- a/src/icons/flags/af.svg +++ b/src/icons/flags/af.svg @@ -1,29 +1,29 @@ - + - + - + - - + + - - + + - + - + - - - - + + + + @@ -59,23 +59,23 @@ - + - + - - - - - - - - - + + + + + + + + + - - + + diff --git a/src/icons/flags/ag.svg b/src/icons/flags/ag.svg index 250b50126913..243c3d8f9e78 100644 --- a/src/icons/flags/ag.svg +++ b/src/icons/flags/ag.svg @@ -4,11 +4,11 @@ - - - - - - + + + + + + diff --git a/src/icons/flags/ai.svg b/src/icons/flags/ai.svg index 81a857d5bce2..628ad9be9389 100644 --- a/src/icons/flags/ai.svg +++ b/src/icons/flags/ai.svg @@ -1,17 +1,17 @@ - + - + - + - - + + @@ -25,5 +25,5 @@ - + diff --git a/src/icons/flags/al.svg b/src/icons/flags/al.svg index b69ae195dc9b..1135b4b80a74 100644 --- a/src/icons/flags/al.svg +++ b/src/icons/flags/al.svg @@ -1,5 +1,5 @@ - + diff --git a/src/icons/flags/ao.svg b/src/icons/flags/ao.svg index 4dc39f6aaf22..b1863bd0f687 100644 --- a/src/icons/flags/ao.svg +++ b/src/icons/flags/ao.svg @@ -1,12 +1,12 @@ - + - - - - + + + + diff --git a/src/icons/flags/ar.svg b/src/icons/flags/ar.svg index 364fca8ff4b4..d20cbbdcdcc6 100644 --- a/src/icons/flags/ar.svg +++ b/src/icons/flags/ar.svg @@ -1,7 +1,7 @@ - + @@ -20,13 +20,13 @@ - - - - + + + + - + - + diff --git a/src/icons/flags/arab.svg b/src/icons/flags/arab.svg index c45e3d207d43..96d27157e9f7 100644 --- a/src/icons/flags/arab.svg +++ b/src/icons/flags/arab.svg @@ -14,7 +14,7 @@ - + @@ -60,7 +60,7 @@ - + diff --git a/src/icons/flags/as.svg b/src/icons/flags/as.svg index b974013aceaf..3543556725d8 100644 --- a/src/icons/flags/as.svg +++ b/src/icons/flags/as.svg @@ -6,67 +6,67 @@ - + - - + + - - + + - - - - + + + + - - - + + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + - - - - + + + + - + - - + + - - - - - - - + + + + + + + - + diff --git a/src/icons/flags/at.svg b/src/icons/flags/at.svg index c28250887f96..9d2775c08328 100644 --- a/src/icons/flags/at.svg +++ b/src/icons/flags/at.svg @@ -1,6 +1,4 @@ - - - - + + diff --git a/src/icons/flags/au.svg b/src/icons/flags/au.svg index 407fef43dcae..96e80768bb70 100644 --- a/src/icons/flags/au.svg +++ b/src/icons/flags/au.svg @@ -2,7 +2,7 @@ - + - + diff --git a/src/icons/flags/aw.svg b/src/icons/flags/aw.svg index 32cabd5457be..413b7c45b60d 100644 --- a/src/icons/flags/aw.svg +++ b/src/icons/flags/aw.svg @@ -5,182 +5,182 @@ - - + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/flags/az.svg b/src/icons/flags/az.svg index 8e56ef53c2ec..35575221104f 100644 --- a/src/icons/flags/az.svg +++ b/src/icons/flags/az.svg @@ -4,5 +4,5 @@ - + diff --git a/src/icons/flags/ba.svg b/src/icons/flags/ba.svg index fcd18914a8b2..93bd9cf93784 100644 --- a/src/icons/flags/ba.svg +++ b/src/icons/flags/ba.svg @@ -4,9 +4,9 @@ - - - - + + + + diff --git a/src/icons/flags/bb.svg b/src/icons/flags/bb.svg index 263bdec05744..cecd5cc33439 100644 --- a/src/icons/flags/bb.svg +++ b/src/icons/flags/bb.svg @@ -1,6 +1,6 @@ - + diff --git a/src/icons/flags/be.svg b/src/icons/flags/be.svg index 327f28fa2eb1..ac706a0b5a14 100644 --- a/src/icons/flags/be.svg +++ b/src/icons/flags/be.svg @@ -1,6 +1,6 @@ - + diff --git a/src/icons/flags/bg.svg b/src/icons/flags/bg.svg index b100dd0dc68d..af2d0d07c31e 100644 --- a/src/icons/flags/bg.svg +++ b/src/icons/flags/bg.svg @@ -1,7 +1,5 @@ - - - - - + + + diff --git a/src/icons/flags/bi.svg b/src/icons/flags/bi.svg index 1050838bc861..a4434a955fbc 100644 --- a/src/icons/flags/bi.svg +++ b/src/icons/flags/bi.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/bl.svg b/src/icons/flags/bl.svg index 819afc111d5f..f84cbbaeb194 100644 --- a/src/icons/flags/bl.svg +++ b/src/icons/flags/bl.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/bm.svg b/src/icons/flags/bm.svg index a4dbc728f1e9..bab3e0abe025 100644 --- a/src/icons/flags/bm.svg +++ b/src/icons/flags/bm.svg @@ -8,18 +8,18 @@ - + - + - + @@ -57,38 +57,38 @@ - + - + - + - + - + - + - + - - + + - - + + - + diff --git a/src/icons/flags/bn.svg b/src/icons/flags/bn.svg index f906abfebbdb..4b416ebb73f9 100644 --- a/src/icons/flags/bn.svg +++ b/src/icons/flags/bn.svg @@ -1,36 +1,36 @@ - - - + + + - + - - - - + + + + - - - - + + + + - + - + - - - - - - + + + + + + diff --git a/src/icons/flags/bo.svg b/src/icons/flags/bo.svg index 17a0a0c12876..46dc76735eaa 100644 --- a/src/icons/flags/bo.svg +++ b/src/icons/flags/bo.svg @@ -73,10 +73,10 @@ - + - + @@ -101,19 +101,19 @@ - + - - - - + + + + - + @@ -139,16 +139,16 @@ - - - - + + + + - + - + @@ -157,21 +157,21 @@ - + - + - + - + @@ -183,24 +183,24 @@ - + - + - + - + - + - + - + @@ -299,28 +299,28 @@ - - - - - - - - + + + + + + + + - - + + - - - - + + + + @@ -330,157 +330,155 @@ - + - + - - - + - + - + - + - - + + - - - - + + + + - - + + - - - - - + + + + + - - - + + + - - - - - - - + + + + + + + - + - - - + + + - - - - + + + + - - + + - - - + + + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - + + + - - + + - - - + + + - - - - - - + + + + + + - - + + @@ -491,18 +489,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -510,41 +508,41 @@ - - + + - + - + - + - - - - + + + + - - - - - - + + + + + + - + @@ -558,7 +556,7 @@ - + @@ -566,33 +564,33 @@ - - - + + + - + - - - - + + + + - + - - - - - + + + + + - - + + @@ -600,19 +598,19 @@ - + - - + + - + @@ -620,54 +618,54 @@ - + - - + + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - - - + + + - + - + diff --git a/src/icons/flags/br.svg b/src/icons/flags/br.svg index 354a7013f3c7..22c908e7e34c 100644 --- a/src/icons/flags/br.svg +++ b/src/icons/flags/br.svg @@ -1,45 +1,45 @@ - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + diff --git a/src/icons/flags/bs.svg b/src/icons/flags/bs.svg index 513be43ac43d..5cc918e5ad40 100644 --- a/src/icons/flags/bs.svg +++ b/src/icons/flags/bs.svg @@ -8,6 +8,6 @@ - + diff --git a/src/icons/flags/bt.svg b/src/icons/flags/bt.svg index cea6006c1993..798c79b381dd 100644 --- a/src/icons/flags/bt.svg +++ b/src/icons/flags/bt.svg @@ -3,25 +3,25 @@ - - - - - - - - - + + + + + + + + + - - - - + + + + - + @@ -60,7 +60,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/src/icons/flags/bw.svg b/src/icons/flags/bw.svg index a1c8db0af1d1..3435608d6c0d 100644 --- a/src/icons/flags/bw.svg +++ b/src/icons/flags/bw.svg @@ -2,6 +2,6 @@ - + diff --git a/src/icons/flags/by.svg b/src/icons/flags/by.svg index 8d25ee3c1fc9..7e90ff255c35 100644 --- a/src/icons/flags/by.svg +++ b/src/icons/flags/by.svg @@ -1,20 +1,18 @@ - + - + - - - - - - - - - - - + + + + + + + + + diff --git a/src/icons/flags/bz.svg b/src/icons/flags/bz.svg index 08d3579de385..25386a51a455 100644 --- a/src/icons/flags/bz.svg +++ b/src/icons/flags/bz.svg @@ -17,16 +17,16 @@ - - + + - - + + - + - + @@ -40,7 +40,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -60,9 +60,9 @@ - + - + @@ -70,21 +70,21 @@ - + - + - + - + @@ -92,7 +92,7 @@ - + @@ -104,42 +104,42 @@ - + - + - + - + - + - + - + - + - + diff --git a/src/icons/flags/ca.svg b/src/icons/flags/ca.svg index f1b2c968aad5..89da5b7b556e 100644 --- a/src/icons/flags/ca.svg +++ b/src/icons/flags/ca.svg @@ -1,4 +1,4 @@ - + diff --git a/src/icons/flags/cc.svg b/src/icons/flags/cc.svg index 93025bd2dc5b..ddfd1803820b 100644 --- a/src/icons/flags/cc.svg +++ b/src/icons/flags/cc.svg @@ -8,8 +8,8 @@ - - + + diff --git a/src/icons/flags/cd.svg b/src/icons/flags/cd.svg index e106ddd5328f..b9cf52894137 100644 --- a/src/icons/flags/cd.svg +++ b/src/icons/flags/cd.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/cg.svg b/src/icons/flags/cg.svg index 9128715f6197..f5a0e42d4595 100644 --- a/src/icons/flags/cg.svg +++ b/src/icons/flags/cg.svg @@ -6,7 +6,7 @@ - - + + diff --git a/src/icons/flags/cl.svg b/src/icons/flags/cl.svg index 01766fefd7b6..5b3c72fa7c26 100644 --- a/src/icons/flags/cl.svg +++ b/src/icons/flags/cl.svg @@ -7,7 +7,7 @@ - + diff --git a/src/icons/flags/cm.svg b/src/icons/flags/cm.svg index 389b66277bd8..70adc8b6818f 100644 --- a/src/icons/flags/cm.svg +++ b/src/icons/flags/cm.svg @@ -2,7 +2,7 @@ - + diff --git a/src/icons/flags/cp.svg b/src/icons/flags/cp.svg index b3efb074296f..b8aa9cfd693d 100644 --- a/src/icons/flags/cp.svg +++ b/src/icons/flags/cp.svg @@ -1,7 +1,7 @@ - - + + diff --git a/src/icons/flags/cu.svg b/src/icons/flags/cu.svg index 6464f8ebaa3c..053c9ee3a029 100644 --- a/src/icons/flags/cu.svg +++ b/src/icons/flags/cu.svg @@ -4,10 +4,10 @@ - + - - + + diff --git a/src/icons/flags/cv.svg b/src/icons/flags/cv.svg index 5c251da2a947..aec8994902cc 100644 --- a/src/icons/flags/cv.svg +++ b/src/icons/flags/cv.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/cx.svg b/src/icons/flags/cx.svg index 6803b3b66131..374ff2dab511 100644 --- a/src/icons/flags/cx.svg +++ b/src/icons/flags/cx.svg @@ -2,11 +2,11 @@ - + - + - + diff --git a/src/icons/flags/cy.svg b/src/icons/flags/cy.svg index 2f69bf79f8a7..7e3d883da817 100644 --- a/src/icons/flags/cy.svg +++ b/src/icons/flags/cy.svg @@ -1,6 +1,6 @@ - + - + diff --git a/src/icons/flags/de.svg b/src/icons/flags/de.svg index b08334b62e2f..71aa2d2c30f5 100644 --- a/src/icons/flags/de.svg +++ b/src/icons/flags/de.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/icons/flags/dg.svg b/src/icons/flags/dg.svg index b9f99a99d164..f163caf94750 100644 --- a/src/icons/flags/dg.svg +++ b/src/icons/flags/dg.svg @@ -30,7 +30,7 @@ - + @@ -104,8 +104,8 @@ - - + + @@ -120,7 +120,7 @@ - + diff --git a/src/icons/flags/dj.svg b/src/icons/flags/dj.svg index ebf2fc66f1c5..9b00a8205662 100644 --- a/src/icons/flags/dj.svg +++ b/src/icons/flags/dj.svg @@ -4,10 +4,10 @@ - + - + diff --git a/src/icons/flags/dm.svg b/src/icons/flags/dm.svg index 60457b79618f..f692094ddb14 100644 --- a/src/icons/flags/dm.svg +++ b/src/icons/flags/dm.svg @@ -4,66 +4,66 @@ - + - - + + - + - - + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - + - + - - + + - + - + - + diff --git a/src/icons/flags/do.svg b/src/icons/flags/do.svg index d837690055bf..b1be393ed1eb 100644 --- a/src/icons/flags/do.svg +++ b/src/icons/flags/do.svg @@ -2,64 +2,64 @@ - + - - - + + + - - - + + + - - - - - - - - - - + + + + + + + + + + - - + + - + - - - - - - + + + + + + - - - + + + - - - - + + + + - - - - - + + + + + - + @@ -67,20 +67,20 @@ - - - - - + + + + + - + - + @@ -101,7 +101,7 @@ - + @@ -110,12 +110,12 @@ - + - + - - + + diff --git a/src/icons/flags/eac.svg b/src/icons/flags/eac.svg index 25a09a132bbc..aaf8133f35a0 100644 --- a/src/icons/flags/eac.svg +++ b/src/icons/flags/eac.svg @@ -4,45 +4,45 @@ - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - + + + + + - - + + diff --git a/src/icons/flags/ec.svg b/src/icons/flags/ec.svg index 65b78858a684..397bfd982251 100644 --- a/src/icons/flags/ec.svg +++ b/src/icons/flags/ec.svg @@ -5,15 +5,15 @@ - - - + + + - - - - - + + + + + @@ -40,9 +40,9 @@ - - - + + + @@ -50,15 +50,15 @@ - - - + + + - - - - + + + + @@ -73,10 +73,10 @@ - - - - + + + + @@ -86,53 +86,53 @@ - - - - + + + + - - - - + + + + - + - + - - - + + + - - + + - + - + - + - + - - + + - + diff --git a/src/icons/flags/ee.svg b/src/icons/flags/ee.svg index 36ea288ca8a7..8b98c2c429bc 100644 --- a/src/icons/flags/ee.svg +++ b/src/icons/flags/ee.svg @@ -1,7 +1,5 @@ - - - - - + + + diff --git a/src/icons/flags/eg.svg b/src/icons/flags/eg.svg index 58c943c231ef..00d1fa59eedc 100644 --- a/src/icons/flags/eg.svg +++ b/src/icons/flags/eg.svg @@ -1,37 +1,37 @@ - + - - - + + + - + - - - - + + + + - - + + - + - + diff --git a/src/icons/flags/eh.svg b/src/icons/flags/eh.svg index 2c9525bd025f..6aec72883c46 100644 --- a/src/icons/flags/eh.svg +++ b/src/icons/flags/eh.svg @@ -4,8 +4,8 @@ - - + + diff --git a/src/icons/flags/er.svg b/src/icons/flags/er.svg index 2705295f2784..3f4f3f292143 100644 --- a/src/icons/flags/er.svg +++ b/src/icons/flags/er.svg @@ -1,8 +1,8 @@ - - - + + + diff --git a/src/icons/flags/es-ga.svg b/src/icons/flags/es-ga.svg index a91ffed06732..31657813ea87 100644 --- a/src/icons/flags/es-ga.svg +++ b/src/icons/flags/es-ga.svg @@ -1,7 +1,7 @@ - + @@ -10,27 +10,27 @@ - + - + - + - + - + @@ -124,7 +124,7 @@ - + @@ -136,11 +136,11 @@ - + - - + + @@ -150,7 +150,7 @@ - + @@ -181,7 +181,7 @@ - + diff --git a/src/icons/flags/es.svg b/src/icons/flags/es.svg index 815e0f8468b2..acdf927f235a 100644 --- a/src/icons/flags/es.svg +++ b/src/icons/flags/es.svg @@ -8,20 +8,20 @@ - + - + - - + + - + - - + + @@ -30,15 +30,15 @@ - + - + - + - + @@ -46,33 +46,33 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -82,54 +82,54 @@ - - + + - - + + - - - + + + - + - + - - + + - - + + - + - + - + @@ -153,49 +153,49 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -206,16 +206,16 @@ - - + + - - + + - - + + @@ -232,25 +232,25 @@ - - + + - - + + - + - + - + @@ -276,24 +276,24 @@ - + - + - - + + - + - + - - + + @@ -309,65 +309,65 @@ - + - - + + - - + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - - + + + - + - + - - + + - - - - + + + + - - + + @@ -462,78 +462,78 @@ - - - - + + + + - - + + - - + + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - - - + + + - + - + - + - + - + - - - + + + - - + + diff --git a/src/icons/flags/et.svg b/src/icons/flags/et.svg index a3378fd9582f..3f99be486098 100644 --- a/src/icons/flags/et.svg +++ b/src/icons/flags/et.svg @@ -4,11 +4,11 @@ - + - + diff --git a/src/icons/flags/eu.svg b/src/icons/flags/eu.svg index bbfefd6b47a8..b0874c1ed497 100644 --- a/src/icons/flags/eu.svg +++ b/src/icons/flags/eu.svg @@ -13,7 +13,7 @@ - + diff --git a/src/icons/flags/fj.svg b/src/icons/flags/fj.svg index 2d7cd980c454..23fbe57a8db2 100644 --- a/src/icons/flags/fj.svg +++ b/src/icons/flags/fj.svg @@ -1,11 +1,11 @@ - + - + @@ -13,41 +13,41 @@ - - + + - - - - - - - - + + + + + + + + - + - - - - - - + + + + + + - + - + - + @@ -56,17 +56,17 @@ - + - + - + - + @@ -75,25 +75,25 @@ - - - - + + + + - - + + - - - - - + + + + + - + @@ -101,15 +101,15 @@ - + - - - - - + + + + + diff --git a/src/icons/flags/fk.svg b/src/icons/flags/fk.svg index b4935a55e3df..c65bf96de941 100644 --- a/src/icons/flags/fk.svg +++ b/src/icons/flags/fk.svg @@ -21,27 +21,27 @@ - + - + - - - + + + - - + + - + @@ -56,13 +56,13 @@ - + - + diff --git a/src/icons/flags/fm.svg b/src/icons/flags/fm.svg index 85f4f47ece77..c1b7c9778436 100644 --- a/src/icons/flags/fm.svg +++ b/src/icons/flags/fm.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/fo.svg b/src/icons/flags/fo.svg index 717ee20b8142..f802d285ac7b 100644 --- a/src/icons/flags/fo.svg +++ b/src/icons/flags/fo.svg @@ -6,7 +6,7 @@ - - + + diff --git a/src/icons/flags/fr.svg b/src/icons/flags/fr.svg index 79689fe94a73..4110e59e4ca5 100644 --- a/src/icons/flags/fr.svg +++ b/src/icons/flags/fr.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/gb-nir.svg b/src/icons/flags/gb-nir.svg index c9510f30cad3..e6be8dbc2d79 100644 --- a/src/icons/flags/gb-nir.svg +++ b/src/icons/flags/gb-nir.svg @@ -5,10 +5,10 @@ - + - + @@ -19,20 +19,20 @@ - + - + - + - + - + @@ -40,30 +40,30 @@ - + - + - + - + - + - + @@ -72,56 +72,56 @@ - + - + - + - + - + - + - - + + - - - + + + - + - + - + - - + + - + - + diff --git a/src/icons/flags/gb.svg b/src/icons/flags/gb.svg index dbac25eae4cf..799138319d84 100644 --- a/src/icons/flags/gb.svg +++ b/src/icons/flags/gb.svg @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/src/icons/flags/gd.svg b/src/icons/flags/gd.svg index f44e839139fd..cb51e9618e46 100644 --- a/src/icons/flags/gd.svg +++ b/src/icons/flags/gd.svg @@ -15,13 +15,13 @@ - + - + - - + + - + diff --git a/src/icons/flags/gf.svg b/src/icons/flags/gf.svg index 734934266d47..f8fe94c6597c 100644 --- a/src/icons/flags/gf.svg +++ b/src/icons/flags/gf.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/gh.svg b/src/icons/flags/gh.svg index a6497de880a0..5c3e3e69abef 100644 --- a/src/icons/flags/gh.svg +++ b/src/icons/flags/gh.svg @@ -2,5 +2,5 @@ - + diff --git a/src/icons/flags/gi.svg b/src/icons/flags/gi.svg index 92496be6bae6..e2b590afefb5 100644 --- a/src/icons/flags/gi.svg +++ b/src/icons/flags/gi.svg @@ -1,18 +1,18 @@ - + - + - + - + @@ -20,10 +20,10 @@ - + - + diff --git a/src/icons/flags/gp.svg b/src/icons/flags/gp.svg index 528e554f055c..ee55c4bcd372 100644 --- a/src/icons/flags/gp.svg +++ b/src/icons/flags/gp.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/gq.svg b/src/icons/flags/gq.svg index ba2acf28d964..134e44217310 100644 --- a/src/icons/flags/gq.svg +++ b/src/icons/flags/gq.svg @@ -4,7 +4,7 @@ - + @@ -16,8 +16,8 @@ - + - + diff --git a/src/icons/flags/gs.svg b/src/icons/flags/gs.svg index 2e045dfdd682..1536e073ec0d 100644 --- a/src/icons/flags/gs.svg +++ b/src/icons/flags/gs.svg @@ -27,27 +27,27 @@ - + - - + + - + - - + + - + - + @@ -65,7 +65,7 @@ - + @@ -96,14 +96,14 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -124,7 +124,7 @@ - + diff --git a/src/icons/flags/gt.svg b/src/icons/flags/gt.svg index 9b3471244ebb..f7cffbdc7abc 100644 --- a/src/icons/flags/gt.svg +++ b/src/icons/flags/gt.svg @@ -118,27 +118,27 @@ - - - - - + + + + + - + - + - + - + - + @@ -148,53 +148,53 @@ - + - + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + diff --git a/src/icons/flags/gu.svg b/src/icons/flags/gu.svg index a5584ffd4aad..0d66e1bfa809 100644 --- a/src/icons/flags/gu.svg +++ b/src/icons/flags/gu.svg @@ -2,22 +2,22 @@ - - + + - - - G - U - A - M - + + + G + U + A + M + - - - - - + + + + + diff --git a/src/icons/flags/gw.svg b/src/icons/flags/gw.svg index b8d566a2ab00..d470bac9f71b 100644 --- a/src/icons/flags/gw.svg +++ b/src/icons/flags/gw.svg @@ -3,7 +3,7 @@ - + diff --git a/src/icons/flags/gy.svg b/src/icons/flags/gy.svg index f4d9b8ab2b93..569fb562759e 100644 --- a/src/icons/flags/gy.svg +++ b/src/icons/flags/gy.svg @@ -1,9 +1,9 @@ - + - + diff --git a/src/icons/flags/hk.svg b/src/icons/flags/hk.svg index ec40b5feda58..4fd55bc14b06 100644 --- a/src/icons/flags/hk.svg +++ b/src/icons/flags/hk.svg @@ -1,6 +1,6 @@ - + diff --git a/src/icons/flags/hm.svg b/src/icons/flags/hm.svg index c0748d3be4ad..815c48208507 100644 --- a/src/icons/flags/hm.svg +++ b/src/icons/flags/hm.svg @@ -2,7 +2,7 @@ - + - + diff --git a/src/icons/flags/hn.svg b/src/icons/flags/hn.svg index 1c166dc46492..11fde67db930 100644 --- a/src/icons/flags/hn.svg +++ b/src/icons/flags/hn.svg @@ -1,7 +1,7 @@ - + diff --git a/src/icons/flags/hr.svg b/src/icons/flags/hr.svg index febbc2400c01..44fed27d54e1 100644 --- a/src/icons/flags/hr.svg +++ b/src/icons/flags/hr.svg @@ -4,55 +4,55 @@ - - + + - - + + - - - + + + - + - + - - + + - - + + - - + + - - - + + + - + - + - + - - - - + + + + diff --git a/src/icons/flags/ht.svg b/src/icons/flags/ht.svg index 4cd4470f43d7..5d48eb93b2e5 100644 --- a/src/icons/flags/ht.svg +++ b/src/icons/flags/ht.svg @@ -4,37 +4,37 @@ - + - + - - - + + + - - - + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + @@ -44,36 +44,36 @@ - - - - - + + + + + - + - + - - - - - + + + + + - - - - - + + + + + - + @@ -88,29 +88,29 @@ - + - + - + - + - - - + + + - + diff --git a/src/icons/flags/il.svg b/src/icons/flags/il.svg index 724cf8bf392a..f43be7e8ed7a 100644 --- a/src/icons/flags/il.svg +++ b/src/icons/flags/il.svg @@ -4,11 +4,11 @@ - + - - - - + + + + diff --git a/src/icons/flags/im.svg b/src/icons/flags/im.svg index 3d597a14be77..f06f3d6fe1a5 100644 --- a/src/icons/flags/im.svg +++ b/src/icons/flags/im.svg @@ -4,11 +4,11 @@ - + - + @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + diff --git a/src/icons/flags/in.svg b/src/icons/flags/in.svg index c634f68acf90..bc47d74911bb 100644 --- a/src/icons/flags/in.svg +++ b/src/icons/flags/in.svg @@ -11,7 +11,7 @@ - + diff --git a/src/icons/flags/io.svg b/src/icons/flags/io.svg index b04c46f5e0af..77016679ef7d 100644 --- a/src/icons/flags/io.svg +++ b/src/icons/flags/io.svg @@ -30,7 +30,7 @@ - + @@ -104,8 +104,8 @@ - - + + @@ -120,7 +120,7 @@ - + diff --git a/src/icons/flags/iq.svg b/src/icons/flags/iq.svg index 6891785379f9..259da9adc58d 100644 --- a/src/icons/flags/iq.svg +++ b/src/icons/flags/iq.svg @@ -1,10 +1,10 @@ - - - + + + - + diff --git a/src/icons/flags/ir.svg b/src/icons/flags/ir.svg index 5c9609eff73f..8c6d51621699 100644 --- a/src/icons/flags/ir.svg +++ b/src/icons/flags/ir.svg @@ -4,7 +4,7 @@ - + @@ -209,11 +209,11 @@ - - - - - + + + + + diff --git a/src/icons/flags/is.svg b/src/icons/flags/is.svg index 56cc977874c1..a6588afaefd0 100644 --- a/src/icons/flags/is.svg +++ b/src/icons/flags/is.svg @@ -6,7 +6,7 @@ - - + + diff --git a/src/icons/flags/je.svg b/src/icons/flags/je.svg index e69e4f465ba1..611180d42a87 100644 --- a/src/icons/flags/je.svg +++ b/src/icons/flags/je.svg @@ -1,45 +1,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/flags/jm.svg b/src/icons/flags/jm.svg index e03a3422a6ba..269df0383684 100644 --- a/src/icons/flags/jm.svg +++ b/src/icons/flags/jm.svg @@ -1,6 +1,6 @@ - + diff --git a/src/icons/flags/jo.svg b/src/icons/flags/jo.svg index 50802915e425..d6f927d44f21 100644 --- a/src/icons/flags/jo.svg +++ b/src/icons/flags/jo.svg @@ -4,12 +4,12 @@ - + - + - + diff --git a/src/icons/flags/jp.svg b/src/icons/flags/jp.svg index cd03a339df18..cc1c181ce9b2 100644 --- a/src/icons/flags/jp.svg +++ b/src/icons/flags/jp.svg @@ -6,6 +6,6 @@ - + diff --git a/src/icons/flags/ke.svg b/src/icons/flags/ke.svg index 5b3779370f7c..3a67ca3ccd48 100644 --- a/src/icons/flags/ke.svg +++ b/src/icons/flags/ke.svg @@ -3,14 +3,14 @@ - + - + diff --git a/src/icons/flags/kg.svg b/src/icons/flags/kg.svg index 626af14da93d..68c210b1cfdf 100644 --- a/src/icons/flags/kg.svg +++ b/src/icons/flags/kg.svg @@ -4,12 +4,12 @@ - + - - + + diff --git a/src/icons/flags/ki.svg b/src/icons/flags/ki.svg index 1697ffe8b775..0c8032807138 100644 --- a/src/icons/flags/ki.svg +++ b/src/icons/flags/ki.svg @@ -4,28 +4,28 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + diff --git a/src/icons/flags/km.svg b/src/icons/flags/km.svg index 56d62c32e8ca..414d65e47fd1 100644 --- a/src/icons/flags/km.svg +++ b/src/icons/flags/km.svg @@ -9,7 +9,7 @@ - + diff --git a/src/icons/flags/kn.svg b/src/icons/flags/kn.svg index 01a3a0a2ab36..47fe64d617ab 100644 --- a/src/icons/flags/kn.svg +++ b/src/icons/flags/kn.svg @@ -4,11 +4,11 @@ - + - - - + + + diff --git a/src/icons/flags/kp.svg b/src/icons/flags/kp.svg index 94bc8e1ede4a..4d1dbab24676 100644 --- a/src/icons/flags/kp.svg +++ b/src/icons/flags/kp.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/kr.svg b/src/icons/flags/kr.svg index 44b51e2513c5..6947eab2b390 100644 --- a/src/icons/flags/kr.svg +++ b/src/icons/flags/kr.svg @@ -4,11 +4,11 @@ - + - + - + @@ -16,7 +16,7 @@ - + diff --git a/src/icons/flags/kw.svg b/src/icons/flags/kw.svg index 7ff91a845945..3dd89e9962e6 100644 --- a/src/icons/flags/kw.svg +++ b/src/icons/flags/kw.svg @@ -8,6 +8,6 @@ - + diff --git a/src/icons/flags/ky.svg b/src/icons/flags/ky.svg index d6e567b59d1d..74a2fea2a1d9 100644 --- a/src/icons/flags/ky.svg +++ b/src/icons/flags/ky.svg @@ -5,7 +5,7 @@ - + @@ -14,20 +14,20 @@ - + - - - - + + + + - + @@ -60,22 +60,22 @@ - + - + - + - + @@ -89,8 +89,8 @@ - - + + diff --git a/src/icons/flags/kz.svg b/src/icons/flags/kz.svg index a69ba7a3b0a3..04a47f53e82d 100644 --- a/src/icons/flags/kz.svg +++ b/src/icons/flags/kz.svg @@ -5,7 +5,7 @@ - + @@ -16,8 +16,8 @@ - - + + diff --git a/src/icons/flags/la.svg b/src/icons/flags/la.svg index 9723a781ad63..6aea6b72b405 100644 --- a/src/icons/flags/la.svg +++ b/src/icons/flags/la.svg @@ -7,6 +7,6 @@ - + diff --git a/src/icons/flags/lb.svg b/src/icons/flags/lb.svg index 49650ad85c89..8619f2410e14 100644 --- a/src/icons/flags/lb.svg +++ b/src/icons/flags/lb.svg @@ -4,12 +4,12 @@ - + - + diff --git a/src/icons/flags/lc.svg b/src/icons/flags/lc.svg index 46bbc6cc7035..bb256541c6ed 100644 --- a/src/icons/flags/lc.svg +++ b/src/icons/flags/lc.svg @@ -1,8 +1,8 @@ - - - + + + diff --git a/src/icons/flags/li.svg b/src/icons/flags/li.svg index a08a05acd7a2..68ea26fa30e8 100644 --- a/src/icons/flags/li.svg +++ b/src/icons/flags/li.svg @@ -3,10 +3,10 @@ - + - + @@ -20,23 +20,23 @@ - + - + - + - + - + diff --git a/src/icons/flags/lk.svg b/src/icons/flags/lk.svg index 24c6559b70c4..2c5cdbe09dc1 100644 --- a/src/icons/flags/lk.svg +++ b/src/icons/flags/lk.svg @@ -11,12 +11,12 @@ - - - - - - + + + + + + diff --git a/src/icons/flags/lr.svg b/src/icons/flags/lr.svg index a31377f97590..e482ab9d749d 100644 --- a/src/icons/flags/lr.svg +++ b/src/icons/flags/lr.svg @@ -9,6 +9,6 @@ - + diff --git a/src/icons/flags/ls.svg b/src/icons/flags/ls.svg index e70165028357..a7c01a98ffc7 100644 --- a/src/icons/flags/ls.svg +++ b/src/icons/flags/ls.svg @@ -4,5 +4,5 @@ - + diff --git a/src/icons/flags/lu.svg b/src/icons/flags/lu.svg index c31d2bfa24a7..cc122068125c 100644 --- a/src/icons/flags/lu.svg +++ b/src/icons/flags/lu.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/ly.svg b/src/icons/flags/ly.svg index 14abcb24306e..1eaa51e468b7 100644 --- a/src/icons/flags/ly.svg +++ b/src/icons/flags/ly.svg @@ -6,7 +6,7 @@ - + diff --git a/src/icons/flags/md.svg b/src/icons/flags/md.svg index a806572c2f10..6dc441e17765 100644 --- a/src/icons/flags/md.svg +++ b/src/icons/flags/md.svg @@ -7,7 +7,7 @@ - + @@ -32,17 +32,17 @@ - + - + - - + + @@ -51,19 +51,19 @@ - + - - + + - - + + - + diff --git a/src/icons/flags/me.svg b/src/icons/flags/me.svg index b56cce0946f3..d8918907460b 100644 --- a/src/icons/flags/me.svg +++ b/src/icons/flags/me.svg @@ -1,28 +1,28 @@ - - + + - - - + + + - + - + - - - - - - + + + + + + @@ -32,43 +32,43 @@ - - - - - + + + + + - - - - + + + + - + - + - + - - + + - - + + - + - - - - - - + + + + + + @@ -81,36 +81,36 @@ - - + + - - + + - - - + + + - + - + - + - + - + - - - + + + - + diff --git a/src/icons/flags/mf.svg b/src/icons/flags/mf.svg index a53ce5012972..6305edc1c239 100644 --- a/src/icons/flags/mf.svg +++ b/src/icons/flags/mf.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/mh.svg b/src/icons/flags/mh.svg index 46351e541e66..7b9f49075518 100644 --- a/src/icons/flags/mh.svg +++ b/src/icons/flags/mh.svg @@ -1,7 +1,7 @@ - - + + diff --git a/src/icons/flags/mm.svg b/src/icons/flags/mm.svg index 8ed5e6ac2cba..42b4dee2b8cc 100644 --- a/src/icons/flags/mm.svg +++ b/src/icons/flags/mm.svg @@ -2,7 +2,7 @@ - + diff --git a/src/icons/flags/mn.svg b/src/icons/flags/mn.svg index 56cb0729b4b4..152c2fcb0f93 100644 --- a/src/icons/flags/mn.svg +++ b/src/icons/flags/mn.svg @@ -4,9 +4,9 @@ - + - + diff --git a/src/icons/flags/mo.svg b/src/icons/flags/mo.svg index 257faed69f94..d39985d05fbf 100644 --- a/src/icons/flags/mo.svg +++ b/src/icons/flags/mo.svg @@ -2,7 +2,7 @@ - + diff --git a/src/icons/flags/mp.svg b/src/icons/flags/mp.svg index 6696fdb83980..ff59ebf87b12 100644 --- a/src/icons/flags/mp.svg +++ b/src/icons/flags/mp.svg @@ -7,7 +7,7 @@ - + @@ -52,27 +52,27 @@ - + - - - + + + - + - + - - + + - + diff --git a/src/icons/flags/mr.svg b/src/icons/flags/mr.svg index 3f0a62645d34..7558234cbff8 100644 --- a/src/icons/flags/mr.svg +++ b/src/icons/flags/mr.svg @@ -1,6 +1,6 @@ - + diff --git a/src/icons/flags/ms.svg b/src/icons/flags/ms.svg index 58641240cc0d..faf07b07fd2e 100644 --- a/src/icons/flags/ms.svg +++ b/src/icons/flags/ms.svg @@ -1,16 +1,16 @@ - - - + + + - + - + diff --git a/src/icons/flags/mt.svg b/src/icons/flags/mt.svg index 676e801c5c93..c597266c3692 100644 --- a/src/icons/flags/mt.svg +++ b/src/icons/flags/mt.svg @@ -1,49 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + diff --git a/src/icons/flags/mw.svg b/src/icons/flags/mw.svg index 113aae543a66..d83ddb217876 100644 --- a/src/icons/flags/mw.svg +++ b/src/icons/flags/mw.svg @@ -2,9 +2,9 @@ - - - + + + diff --git a/src/icons/flags/mx.svg b/src/icons/flags/mx.svg index bb305b8d1125..f98a89e17335 100644 --- a/src/icons/flags/mx.svg +++ b/src/icons/flags/mx.svg @@ -39,87 +39,87 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - - - - - - + + + + + + + @@ -127,88 +127,88 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - - + + + - - + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -216,167 +216,167 @@ - - - - + + + + - + - - + + - - + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - + + + - - + + - + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - - - + + + - - - - - - - + + + + + + + - - - + + + - + - - - - - + + + + + - - + + - - + + - - + + - - - + + + diff --git a/src/icons/flags/my.svg b/src/icons/flags/my.svg index 264f48aef6c5..89576f69eae8 100644 --- a/src/icons/flags/my.svg +++ b/src/icons/flags/my.svg @@ -1,6 +1,6 @@ - + @@ -15,8 +15,8 @@ - - + + diff --git a/src/icons/flags/mz.svg b/src/icons/flags/mz.svg index eb020058bc76..2ee6ec14b477 100644 --- a/src/icons/flags/mz.svg +++ b/src/icons/flags/mz.svg @@ -7,15 +7,15 @@ - + - + - + - + diff --git a/src/icons/flags/na.svg b/src/icons/flags/na.svg index 799702e8cf74..35b9f783e155 100644 --- a/src/icons/flags/na.svg +++ b/src/icons/flags/na.svg @@ -6,11 +6,11 @@ - + - - + + diff --git a/src/icons/flags/nc.svg b/src/icons/flags/nc.svg index 96795408cb50..068f0c69aac4 100644 --- a/src/icons/flags/nc.svg +++ b/src/icons/flags/nc.svg @@ -4,10 +4,10 @@ - - - - - - + + + + + + diff --git a/src/icons/flags/nf.svg b/src/icons/flags/nf.svg index ecdb4a3bd1c5..c8b30938d778 100644 --- a/src/icons/flags/nf.svg +++ b/src/icons/flags/nf.svg @@ -2,8 +2,8 @@ - - + + diff --git a/src/icons/flags/ni.svg b/src/icons/flags/ni.svg index e16e77ae4fee..6dcdc9a806e0 100644 --- a/src/icons/flags/ni.svg +++ b/src/icons/flags/ni.svg @@ -38,13 +38,13 @@ - - - + + + - + @@ -59,62 +59,62 @@ - - - + + + - + - - + + - - - + + + - + - + - - - + + + - + - - - - + + + + - + - + - + - + @@ -125,5 +125,5 @@ - + diff --git a/src/icons/flags/nl.svg b/src/icons/flags/nl.svg index 4faaf498e1b7..e90f5b03511f 100644 --- a/src/icons/flags/nl.svg +++ b/src/icons/flags/nl.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/np.svg b/src/icons/flags/np.svg index fead9402c86d..8d71d106bbbb 100644 --- a/src/icons/flags/np.svg +++ b/src/icons/flags/np.svg @@ -4,10 +4,10 @@ - + - + diff --git a/src/icons/flags/nr.svg b/src/icons/flags/nr.svg index e71ddcd8db34..ff394c411211 100644 --- a/src/icons/flags/nr.svg +++ b/src/icons/flags/nr.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/nz.svg b/src/icons/flags/nz.svg index a0028fb2f67f..935d8a749d94 100644 --- a/src/icons/flags/nz.svg +++ b/src/icons/flags/nz.svg @@ -8,24 +8,24 @@ - + - - + + - - - + + + - - - + + + - - + + diff --git a/src/icons/flags/om.svg b/src/icons/flags/om.svg index 1c7621799659..c003f86e467a 100644 --- a/src/icons/flags/om.svg +++ b/src/icons/flags/om.svg @@ -12,14 +12,14 @@ - + - + @@ -34,10 +34,10 @@ - + - - + + @@ -52,10 +52,10 @@ - + - - + + @@ -84,7 +84,7 @@ - + @@ -95,7 +95,7 @@ - + diff --git a/src/icons/flags/pc.svg b/src/icons/flags/pc.svg new file mode 100644 index 000000000000..882197da676d --- /dev/null +++ b/src/icons/flags/pc.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/flags/pf.svg b/src/icons/flags/pf.svg index 16374f3629e7..e06b236e82bc 100644 --- a/src/icons/flags/pf.svg +++ b/src/icons/flags/pf.svg @@ -8,12 +8,12 @@ - + - + - + diff --git a/src/icons/flags/pg.svg b/src/icons/flags/pg.svg index 1080add5bf87..237cb6eeedd7 100644 --- a/src/icons/flags/pg.svg +++ b/src/icons/flags/pg.svg @@ -1,7 +1,7 @@ - - + + diff --git a/src/icons/flags/pk.svg b/src/icons/flags/pk.svg index fa02f6a8fca7..491e58ab1624 100644 --- a/src/icons/flags/pk.svg +++ b/src/icons/flags/pk.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/pm.svg b/src/icons/flags/pm.svg index 401139f7aaf8..19a9330a31b6 100644 --- a/src/icons/flags/pm.svg +++ b/src/icons/flags/pm.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/pn.svg b/src/icons/flags/pn.svg index 9788c9cc150b..07958aca12fa 100644 --- a/src/icons/flags/pn.svg +++ b/src/icons/flags/pn.svg @@ -46,8 +46,8 @@ - - - + + + diff --git a/src/icons/flags/pr.svg b/src/icons/flags/pr.svg index 3cb403b5caa8..ec51831dcd80 100644 --- a/src/icons/flags/pr.svg +++ b/src/icons/flags/pr.svg @@ -4,10 +4,10 @@ - + - - + + diff --git a/src/icons/flags/ps.svg b/src/icons/flags/ps.svg index 82031486a850..b33824a5dd74 100644 --- a/src/icons/flags/ps.svg +++ b/src/icons/flags/ps.svg @@ -4,12 +4,12 @@ - + - + - + diff --git a/src/icons/flags/pt.svg b/src/icons/flags/pt.svg index 2f36b7ee7026..445cf7f53695 100644 --- a/src/icons/flags/pt.svg +++ b/src/icons/flags/pt.svg @@ -2,38 +2,38 @@ - - + + - - + + - - - + + + - + - - - + + + - + - - - + + + - - - - + + + + - + - - + + @@ -42,7 +42,7 @@ - + diff --git a/src/icons/flags/pw.svg b/src/icons/flags/pw.svg index 089cbceea294..9f89c5f1483c 100644 --- a/src/icons/flags/pw.svg +++ b/src/icons/flags/pw.svg @@ -6,6 +6,6 @@ - + diff --git a/src/icons/flags/py.svg b/src/icons/flags/py.svg index bfbf01f1f946..38e2051eb284 100644 --- a/src/icons/flags/py.svg +++ b/src/icons/flags/py.svg @@ -2,24 +2,24 @@ - + - + - + - + @@ -146,12 +146,12 @@ - - + + - + - + diff --git a/src/icons/flags/qa.svg b/src/icons/flags/qa.svg index bd493c381c83..901f3fa761a3 100644 --- a/src/icons/flags/qa.svg +++ b/src/icons/flags/qa.svg @@ -1,4 +1,4 @@ - + diff --git a/src/icons/flags/re.svg b/src/icons/flags/re.svg index 3225dddf25f5..64e788e011b6 100644 --- a/src/icons/flags/re.svg +++ b/src/icons/flags/re.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/rs.svg b/src/icons/flags/rs.svg index 120293ab04c2..2f971025b874 100644 --- a/src/icons/flags/rs.svg +++ b/src/icons/flags/rs.svg @@ -4,146 +4,146 @@ - + - + - + - - + + - + - + - + - + - - - - + + + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - - + + + - + - + - - + + - + - - + + - + - + - + - - + + - + - - - + + + @@ -154,23 +154,23 @@ - + - + - + - + - + - + @@ -180,21 +180,21 @@ - + - + - + - - + + - - + + - - + + @@ -205,88 +205,88 @@ - - + + - + - + - - - + + + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - - - + + + - - + + - + - + - + diff --git a/src/icons/flags/ru.svg b/src/icons/flags/ru.svg index f4d27efc9830..cf243011ae99 100644 --- a/src/icons/flags/ru.svg +++ b/src/icons/flags/ru.svg @@ -1,7 +1,5 @@ - - - - - + + + diff --git a/src/icons/flags/rw.svg b/src/icons/flags/rw.svg index 6cc669ed2d98..06e26ae44e4e 100644 --- a/src/icons/flags/rw.svg +++ b/src/icons/flags/rw.svg @@ -2,7 +2,7 @@ - + diff --git a/src/icons/flags/sa.svg b/src/icons/flags/sa.svg index 660396a7044a..c0a148663b6c 100644 --- a/src/icons/flags/sa.svg +++ b/src/icons/flags/sa.svg @@ -4,22 +4,22 @@ - + - - - - + + + + - - - - - - - - + + + + + + + + diff --git a/src/icons/flags/sb.svg b/src/icons/flags/sb.svg index a011360d5f74..6066f94cd117 100644 --- a/src/icons/flags/sb.svg +++ b/src/icons/flags/sb.svg @@ -5,9 +5,9 @@ - - - + + + diff --git a/src/icons/flags/sd.svg b/src/icons/flags/sd.svg index b8e4b973575d..12818b4110db 100644 --- a/src/icons/flags/sd.svg +++ b/src/icons/flags/sd.svg @@ -5,9 +5,9 @@ - + - + diff --git a/src/icons/flags/se.svg b/src/icons/flags/se.svg index 0e41780ef1c8..8ba745acaf22 100644 --- a/src/icons/flags/se.svg +++ b/src/icons/flags/se.svg @@ -1,4 +1,4 @@ - + diff --git a/src/icons/flags/ac.svg b/src/icons/flags/sh-ac.svg similarity index 61% rename from src/icons/flags/ac.svg rename to src/icons/flags/sh-ac.svg index b1ae9ac523ee..22b365832eed 100644 --- a/src/icons/flags/ac.svg +++ b/src/icons/flags/sh-ac.svg @@ -1,90 +1,90 @@ - + - + - + - + - + - + - - - - + + + + - - - + + + - + - + - - + + - + - - - + + + - + - + - - + + - - - + + + - + - + - - + + - + - - - - - - - + + + + + + + - + - + @@ -100,68 +100,68 @@ - + - + - + - + - + - - + + - - + + - + - - + + - - + + - + - - - - - + + + + + - + - - + + - + - + - - + + - - + + - + @@ -171,51 +171,51 @@ - + - + - + - - + + - + - + - + - + - - + + - - - + + + - - + + - + - - - - + + + + - - - + + + @@ -223,10 +223,10 @@ - + - - + + @@ -251,10 +251,10 @@ - + - + @@ -271,7 +271,7 @@ - + @@ -337,198 +337,198 @@ - + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - + - + - - + + - + - - - + + + - + - - - + + + - + - + - + - + - - - - + + + + - - + + - - + + - - + + - + - - + + - - - + + + - + - + - - + + @@ -538,134 +538,134 @@ - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - + - - + + - + - - - + + + - + - - + + - + - + - + - + - - - - + + + + - - + + - - - + + + - - + + - + - - + + - - - + + + - + - + - - + + @@ -675,8 +675,8 @@ - - + + diff --git a/src/icons/flags/sh-hl.svg b/src/icons/flags/sh-hl.svg new file mode 100644 index 000000000000..b92e703f2768 --- /dev/null +++ b/src/icons/flags/sh-hl.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/flags/ta.svg b/src/icons/flags/sh-ta.svg similarity index 81% rename from src/icons/flags/ta.svg rename to src/icons/flags/sh-ta.svg index b68ad23c6f2c..a103aac05fc6 100644 --- a/src/icons/flags/ta.svg +++ b/src/icons/flags/sh-ta.svg @@ -1,38 +1,38 @@ - - + + - - + + - + - + - + - - + + - - - - + + + + - + - - + + @@ -40,10 +40,10 @@ - - + + - + @@ -51,22 +51,22 @@ - - + + - + - - - + + + - - + + - + - + diff --git a/src/icons/flags/sh.svg b/src/icons/flags/sh.svg index 353915d3e90c..7aba0aec8a07 100644 --- a/src/icons/flags/sh.svg +++ b/src/icons/flags/sh.svg @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/src/icons/flags/si.svg b/src/icons/flags/si.svg index f2aea01689e8..66a390dcd216 100644 --- a/src/icons/flags/si.svg +++ b/src/icons/flags/si.svg @@ -4,15 +4,15 @@ - + - + - - - - + + + + diff --git a/src/icons/flags/sk.svg b/src/icons/flags/sk.svg index a1953fa67fc2..81476940eb2a 100644 --- a/src/icons/flags/sk.svg +++ b/src/icons/flags/sk.svg @@ -2,8 +2,8 @@ - - + + - + diff --git a/src/icons/flags/sm.svg b/src/icons/flags/sm.svg index 0892990b25ec..00e9286c4454 100644 --- a/src/icons/flags/sm.svg +++ b/src/icons/flags/sm.svg @@ -5,10 +5,10 @@ - - - - + + + + @@ -23,19 +23,19 @@ - - + + - - + + - - - - + + + + @@ -50,21 +50,21 @@ - - + + - + - + - + diff --git a/src/icons/flags/so.svg b/src/icons/flags/so.svg index ae582f198d2a..a581ac63cfaf 100644 --- a/src/icons/flags/so.svg +++ b/src/icons/flags/so.svg @@ -4,8 +4,8 @@ - + - + diff --git a/src/icons/flags/ss.svg b/src/icons/flags/ss.svg index 73804d80d56b..b257aa0b3e50 100644 --- a/src/icons/flags/ss.svg +++ b/src/icons/flags/ss.svg @@ -1,7 +1,7 @@ - + diff --git a/src/icons/flags/st.svg b/src/icons/flags/st.svg index f2e75c141814..1294bcb70e87 100644 --- a/src/icons/flags/st.svg +++ b/src/icons/flags/st.svg @@ -2,9 +2,9 @@ - + - + diff --git a/src/icons/flags/sv.svg b/src/icons/flags/sv.svg index 3a63913d0010..c811e912f041 100644 --- a/src/icons/flags/sv.svg +++ b/src/icons/flags/sv.svg @@ -1,30 +1,30 @@ - + - + - - - - - + + + + + - + - + - + - + @@ -33,14 +33,14 @@ - + - + - + @@ -48,23 +48,23 @@ - - - + + + - - - - + + + + - + - - - - + + + + @@ -74,11 +74,11 @@ - + - - + + @@ -96,10 +96,10 @@ - - - - + + + + @@ -477,7 +477,7 @@ - + @@ -533,21 +533,21 @@ - + - - - - + + + + - - + + - + @@ -562,33 +562,33 @@ - + - - + + - + - - - - - - + + + + + + - + - + - - - - - + + + + + diff --git a/src/icons/flags/sx.svg b/src/icons/flags/sx.svg index 84844e0f2ea7..18f7a1397b0e 100644 --- a/src/icons/flags/sx.svg +++ b/src/icons/flags/sx.svg @@ -5,36 +5,36 @@ - - - - - - + + + + + + - - + + - + - - + + - + - + @@ -44,7 +44,7 @@ - + diff --git a/src/icons/flags/sy.svg b/src/icons/flags/sy.svg index 29636ae06f4e..522555052504 100644 --- a/src/icons/flags/sy.svg +++ b/src/icons/flags/sy.svg @@ -1,5 +1,5 @@ - + diff --git a/src/icons/flags/sz.svg b/src/icons/flags/sz.svg index 5eef691409f0..294a2cc1a884 100644 --- a/src/icons/flags/sz.svg +++ b/src/icons/flags/sz.svg @@ -2,7 +2,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -22,13 +22,13 @@ - + - + - + - + diff --git a/src/icons/flags/tc.svg b/src/icons/flags/tc.svg index 89d29bbf85a5..63f13c359bfe 100644 --- a/src/icons/flags/tc.svg +++ b/src/icons/flags/tc.svg @@ -1,14 +1,14 @@ - + - - + + - + @@ -27,7 +27,7 @@ - + @@ -35,10 +35,10 @@ - + - - + + diff --git a/src/icons/flags/tf.svg b/src/icons/flags/tf.svg index 88323d2cd925..fba233563fea 100644 --- a/src/icons/flags/tf.svg +++ b/src/icons/flags/tf.svg @@ -6,7 +6,7 @@ - + diff --git a/src/icons/flags/tg.svg b/src/icons/flags/tg.svg index e20f40d8dbdd..c63a6d1a9483 100644 --- a/src/icons/flags/tg.svg +++ b/src/icons/flags/tg.svg @@ -8,7 +8,7 @@ - + diff --git a/src/icons/flags/tj.svg b/src/icons/flags/tj.svg index d2ba73338b90..9fba246cde0c 100644 --- a/src/icons/flags/tj.svg +++ b/src/icons/flags/tj.svg @@ -10,10 +10,10 @@ - + - + diff --git a/src/icons/flags/tk.svg b/src/icons/flags/tk.svg index 65bab1372f93..05d3e86ce637 100644 --- a/src/icons/flags/tk.svg +++ b/src/icons/flags/tk.svg @@ -1,5 +1,5 @@ - + diff --git a/src/icons/flags/tl.svg b/src/icons/flags/tl.svg index bcfc1612d7f1..3d0701a2c8c8 100644 --- a/src/icons/flags/tl.svg +++ b/src/icons/flags/tl.svg @@ -6,8 +6,8 @@ - - + + diff --git a/src/icons/flags/tm.svg b/src/icons/flags/tm.svg index 07c1a2f6cbbb..8b656cc2b8b2 100644 --- a/src/icons/flags/tm.svg +++ b/src/icons/flags/tm.svg @@ -34,7 +34,7 @@ - + @@ -76,7 +76,7 @@ - + @@ -98,7 +98,7 @@ - + @@ -200,5 +200,5 @@ - + diff --git a/src/icons/flags/tn.svg b/src/icons/flags/tn.svg index 6a1989b4f411..5735c1984de3 100644 --- a/src/icons/flags/tn.svg +++ b/src/icons/flags/tn.svg @@ -1,4 +1,4 @@ - + diff --git a/src/icons/flags/tr.svg b/src/icons/flags/tr.svg index a92804f88290..b96da21f0e98 100644 --- a/src/icons/flags/tr.svg +++ b/src/icons/flags/tr.svg @@ -1,7 +1,7 @@ - + diff --git a/src/icons/flags/tt.svg b/src/icons/flags/tt.svg index 14adbe041ec6..bc24938cf8ea 100644 --- a/src/icons/flags/tt.svg +++ b/src/icons/flags/tt.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/tz.svg b/src/icons/flags/tz.svg index 751c167206d8..a2cfbca42aa2 100644 --- a/src/icons/flags/tz.svg +++ b/src/icons/flags/tz.svg @@ -6,8 +6,8 @@ - - - + + + diff --git a/src/icons/flags/ug.svg b/src/icons/flags/ug.svg index 78252a42d182..737eb2ce1a70 100644 --- a/src/icons/flags/ug.svg +++ b/src/icons/flags/ug.svg @@ -4,26 +4,26 @@ - + - + - + - - - - + + + + - + - - + + - - + + diff --git a/src/icons/flags/um.svg b/src/icons/flags/um.svg index e04159498b53..9e9eddaa4a71 100644 --- a/src/icons/flags/um.svg +++ b/src/icons/flags/um.svg @@ -5,5 +5,5 @@ - + diff --git a/src/icons/flags/un.svg b/src/icons/flags/un.svg index e4753370314b..e57793bc79a3 100644 --- a/src/icons/flags/un.svg +++ b/src/icons/flags/un.svg @@ -1,16 +1,16 @@ - - + + - - - - + + + + - - + + diff --git a/src/icons/flags/us.svg b/src/icons/flags/us.svg index 615946d4b597..9cfd0c927f97 100644 --- a/src/icons/flags/us.svg +++ b/src/icons/flags/us.svg @@ -5,5 +5,5 @@ - + diff --git a/src/icons/flags/uy.svg b/src/icons/flags/uy.svg index 4a54b857ac7c..62c36f8e5e68 100644 --- a/src/icons/flags/uy.svg +++ b/src/icons/flags/uy.svg @@ -1,7 +1,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/src/icons/flags/uz.svg b/src/icons/flags/uz.svg index aaf9382a4b80..0ccca1b1b4aa 100644 --- a/src/icons/flags/uz.svg +++ b/src/icons/flags/uz.svg @@ -5,7 +5,7 @@ - + diff --git a/src/icons/flags/va.svg b/src/icons/flags/va.svg index 25e6a9756cf1..87e0fbbdcce5 100644 --- a/src/icons/flags/va.svg +++ b/src/icons/flags/va.svg @@ -2,23 +2,23 @@ - + - - + + - - - - + + + + - + @@ -52,7 +52,7 @@ - + @@ -174,13 +174,13 @@ - + - + diff --git a/src/icons/flags/vc.svg b/src/icons/flags/vc.svg index 450f6f0a2612..f26c2d8da992 100644 --- a/src/icons/flags/vc.svg +++ b/src/icons/flags/vc.svg @@ -3,6 +3,6 @@ - + diff --git a/src/icons/flags/vg.svg b/src/icons/flags/vg.svg index 4d2c3976e97a..0ee90fb28c3c 100644 --- a/src/icons/flags/vg.svg +++ b/src/icons/flags/vg.svg @@ -11,15 +11,15 @@ - - - + + + - + @@ -34,10 +34,10 @@ - - + + - + @@ -54,6 +54,6 @@ - + diff --git a/src/icons/flags/vi.svg b/src/icons/flags/vi.svg index 3a64338e8fe0..4270257799af 100644 --- a/src/icons/flags/vi.svg +++ b/src/icons/flags/vi.svg @@ -8,11 +8,11 @@ - - + + - - + + @@ -21,8 +21,8 @@ - + - - + + diff --git a/src/icons/flags/vn.svg b/src/icons/flags/vn.svg index 24bedc503f8c..7e4bac8f4acf 100644 --- a/src/icons/flags/vn.svg +++ b/src/icons/flags/vn.svg @@ -4,7 +4,7 @@ - + diff --git a/src/icons/flags/vu.svg b/src/icons/flags/vu.svg index efcff89543b1..91e1236a0a9a 100644 --- a/src/icons/flags/vu.svg +++ b/src/icons/flags/vu.svg @@ -10,11 +10,11 @@ - + - + diff --git a/src/icons/flags/wf.svg b/src/icons/flags/wf.svg index 57feb3a59dbe..054c57df9972 100644 --- a/src/icons/flags/wf.svg +++ b/src/icons/flags/wf.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/xk.svg b/src/icons/flags/xk.svg index de6ef4da2855..551e7a414549 100644 --- a/src/icons/flags/xk.svg +++ b/src/icons/flags/xk.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/ye.svg b/src/icons/flags/ye.svg index 61f0ed610004..1c9e6d6392f8 100644 --- a/src/icons/flags/ye.svg +++ b/src/icons/flags/ye.svg @@ -2,6 +2,6 @@ - + diff --git a/src/icons/flags/yt.svg b/src/icons/flags/yt.svg index 5ea2f648cb92..e7776b307879 100644 --- a/src/icons/flags/yt.svg +++ b/src/icons/flags/yt.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/icons/flags/za.svg b/src/icons/flags/za.svg index aa54beb87dab..d563adb90c0c 100644 --- a/src/icons/flags/za.svg +++ b/src/icons/flags/za.svg @@ -4,14 +4,14 @@ - + - + - - + + - + diff --git a/src/icons/flags/zm.svg b/src/icons/flags/zm.svg index b8fdd63cb7de..13239f5e23f7 100644 --- a/src/icons/flags/zm.svg +++ b/src/icons/flags/zm.svg @@ -4,17 +4,17 @@ - + - + - - + + diff --git a/src/icons/flags/zw.svg b/src/icons/flags/zw.svg index 5c1974693f94..6399ab4ab3ee 100644 --- a/src/icons/flags/zw.svg +++ b/src/icons/flags/zw.svg @@ -8,14 +8,14 @@ - + - - + + - + diff --git a/src/icons/icons.qrc b/src/icons/icons.qrc index 7d23cc8ca4c8..5e22aadc6aee 100644 --- a/src/icons/icons.qrc +++ b/src/icons/icons.qrc @@ -11,8 +11,8 @@ dialog-warning.svg directory.svg disconnected.svg - downloading.svg download.svg + downloading.svg edit-clear.svg edit-copy.svg edit-find.svg @@ -24,7 +24,6 @@ filter-inactive.svg filter-stalled.svg firewalled.svg - flags/ac.svg flags/ad.svg flags/ae.svg flags/af.svg @@ -212,6 +211,7 @@ flags/nz.svg flags/om.svg flags/pa.svg + flags/pc.svg flags/pe.svg flags/pf.svg flags/pg.svg @@ -237,6 +237,9 @@ flags/sd.svg flags/se.svg flags/sg.svg + flags/sh-ac.svg + flags/sh-hl.svg + flags/sh-ta.svg flags/sh.svg flags/si.svg flags/sj.svg @@ -252,7 +255,6 @@ flags/sx.svg flags/sy.svg flags/sz.svg - flags/ta.svg flags/tc.svg flags/td.svg flags/tf.svg @@ -314,6 +316,8 @@ network-connect.svg network-server.svg object-locked.svg + pause-session.svg + paused.svg peers-add.svg peers-remove.svg peers.svg @@ -322,20 +326,21 @@ preferences-bittorrent.svg preferences-desktop.svg preferences-webui.svg - qbittorrent_file.ico - qbittorrent.ico qbittorrent-tray-dark.svg qbittorrent-tray-light.svg qbittorrent-tray.svg - qbittorrent-tray.svg + qbittorrent.ico + qbittorrent_file.ico queued.svg ratio.svg reannounce.svg + rss_read_article.png + rss_unread_article.png security-high.svg security-low.svg set-location.svg - slow_off.svg slow.svg + slow_off.svg speedometer.svg splash.png stalledDL.svg @@ -351,14 +356,15 @@ torrent-start.svg torrent-stop.svg tracker-error.svg + tracker-warning.svg trackerless.svg trackers.svg - tracker-warning.svg upload.svg view-categories.svg view-preview.svg view-refresh.svg view-statistics.svg wallet-open.svg + qbittorrent-tray.svg diff --git a/src/icons/pause-session.svg b/src/icons/pause-session.svg new file mode 100644 index 000000000000..6a6f574f0779 --- /dev/null +++ b/src/icons/pause-session.svg @@ -0,0 +1 @@ + diff --git a/src/icons/paused.svg b/src/icons/paused.svg new file mode 100644 index 000000000000..06140f8835d7 --- /dev/null +++ b/src/icons/paused.svg @@ -0,0 +1 @@ + diff --git a/src/icons/rss_read_article.png b/src/icons/rss_read_article.png new file mode 100644 index 000000000000..ae6588c03249 Binary files /dev/null and b/src/icons/rss_read_article.png differ diff --git a/src/icons/rss_unread_article.png b/src/icons/rss_unread_article.png new file mode 100644 index 000000000000..a9291d2e9f61 Binary files /dev/null and b/src/icons/rss_unread_article.png differ diff --git a/src/icons/slow.svg b/src/icons/slow.svg index f721bd639949..68aa27b325ab 100644 --- a/src/icons/slow.svg +++ b/src/icons/slow.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/icons/slow_off.svg b/src/icons/slow_off.svg index ce913cd61fdd..fe6ca9b1ff0a 100644 --- a/src/icons/slow_off.svg +++ b/src/icons/slow_off.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/icons/speedometer.svg b/src/icons/speedometer.svg index 4b56c1658631..628a2dbb7d69 100644 --- a/src/icons/speedometer.svg +++ b/src/icons/speedometer.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/icons/stopped.svg b/src/icons/stopped.svg index 06140f8835d7..c113984d117c 100644 --- a/src/icons/stopped.svg +++ b/src/icons/stopped.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/icons/torrent-stop.svg b/src/icons/torrent-stop.svg index 6a6f574f0779..a5ebe582bb3e 100644 --- a/src/icons/torrent-stop.svg +++ b/src/icons/torrent-stop.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/lang/lang.qrc b/src/lang/lang.qrc index 62908ac87622..aa66ee3c0783 100644 --- a/src/lang/lang.qrc +++ b/src/lang/lang.qrc @@ -1,7 +1,7 @@ - qbittorrent_az@latin.qm qbittorrent_ar.qm + qbittorrent_az@latin.qm qbittorrent_be.qm qbittorrent_bg.qm qbittorrent_ca.qm diff --git a/src/lang/qbittorrent_ar.ts b/src/lang/qbittorrent_ar.ts index 2978bb91338d..136789a74ee5 100644 --- a/src/lang/qbittorrent_ar.ts +++ b/src/lang/qbittorrent_ar.ts @@ -14,77 +14,77 @@ حَول - + Authors المؤلفون - + Current maintainer مسؤول التطوير الحالي - + Greece اليونان - - + + Nationality: الجنسية: - - + + E-mail: البريد الإلكتروني: - - + + Name: الاسم: - + Original author الكاتب الأصلي - + France فرنسا - + Special Thanks شكر خاص - + Translators المترجمون - + License الرخصة - + Software Used البرمجيات المستخدمة - + qBittorrent was built with the following libraries: كيوبت‎تورنت مبني على المكتبات البرمجية التالية: - + Copy to clipboard - + أنسخ إلى الحافظة @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - حقوق النشر %1 2006-2023 مشروع كيوبت‎تورنت + Copyright %1 2006-2024 The qBittorrent project + حقوق النشر %1 2006-2024 مشروع كيوبت‎تورنت @@ -166,14 +166,13 @@ حفظ في - + Never show again لا تعرض مرة أخرى - Torrent settings - إعدادات التورنت + إعدادات التورنت @@ -191,12 +190,12 @@ بدء التورنت - + Torrent information معلومات التورنت - + Skip hash check تخطي التحقق من البيانات @@ -205,6 +204,11 @@ Use another path for incomplete torrent استخدم مسارًا آخر للتورنت غير المكتمل + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ شرط التوقف: - - + + None بدون - - + + Metadata received استلمت البيانات الوصفية - - + + Torrents that have metadata initially will be added as stopped. + ستتم إضافة التورينت التي تحتوي على بيانات وصفية في البداية على أنها متوقفة. + + + + Files checked فُحصت الملفات - + Add to top of queue أضفه إلى قمة الصف - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog في حالة الاختيار, ملف torrent. لن يتم حذفه بغض النظر عن إعدادات التنزيل. - + Content layout: تخطيط المحتوى: - + Original الأصلي - + Create subfolder إنشاء مجلد فرعي - + Don't create subfolder لا تقم بإنشاء مجلد فرعي - + Info hash v1: معلومات التحقق من البيانات (الهاش) الإصدار 1: - + Size: الحجم: - + Comment: التعليق: - + Date: التاريخ: @@ -324,245 +333,182 @@ تذكّر آخر مسار حفظ تم استخدامه - + Do not delete .torrent file لا تقم بحذف ملف بامتداد torrent. - + Download in sequential order تنزيل بترتيب تسلسلي - + Download first and last pieces first تنزيل أول وأخر قطعة أولًا - + Info hash v2: معلومات التحقق من البيانات (الهاش) الإصدار 2: - + Select All تحديد الكل - + Select None لا تحدد شيء - + Save as .torrent file... أحفظ كملف تورنت... - + I/O Error خطأ إدخال/إخراج - Invalid torrent - ملف تورنت خاطئ - - - + Not Available This comment is unavailable غير متوفر - + Not Available This date is unavailable غير متوفر - + Not available غير متوفر - Invalid magnet link - رابط مغناطيسي غير صالح - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - فشل في تحميل التورنت: %1 -خطأ: %2 - - - This magnet link was not recognized - لا يمكن التعرف على هذا الرابط المغناطيسي - - - + Magnet link رابط مغناطيسي - + Retrieving metadata... يجلب البيانات الوصفية... - - + + Choose save path اختر مسار الحفظ - Torrent is already present - التورنت موجود مسبقا بالفعل - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - التورنت'%1' موجود بالفعل في قائمة النقل. تم دمج المتتبعات لأنه تورنت خاص. - - - Torrent is already queued for processing. - التورنت موجود بالفعل في صف المعالجة. - - - + No stop condition is set. لم يتم وضع شرط للتوقف - + Torrent will stop after metadata is received. سيتوقف التورنت بعد استقبال البيانات الوصفية - - Torrents that have metadata initially aren't affected. - التورنت الذي يحتوي على بيانات وصفية ابتدائية لن يتأثر - - - + Torrent will stop after files are initially checked. سيتوقف التورنت بعد الملفات التي تم فحصحها - + This will also download metadata if it wasn't there initially. سيؤدي هذا أيضًا إلى تنزيل البيانات الوصفية إذا لم تكن موجودة في البداية. - - + + N/A لا يوجد - Magnet link is already queued for processing. - الرابط الممغنط موجود بالفعل في صف المعالجة. - - - + %1 (Free space on disk: %2) %1 (المساحة الخالية من القرص: %2) - + Not available This size is unavailable. غير متوفر - + Torrent file (*%1) ملف تورنت (*%1) - + Save as torrent file أحفظ كملف تورنت - + Couldn't export torrent metadata file '%1'. Reason: %2. تعذر تصدير ملف بيانات التعريف للتورنت '%1'. السبب: %2. - + Cannot create v2 torrent until its data is fully downloaded. لا يمكن إنشاء إصدار 2 للتورنت حتى يتم تنزيل بياناته بالكامل. - Cannot download '%1': %2 - لا يمكن تحميل '%1': %2 - - - + Filter files... تصفية الملفات... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - التورنت '%1' موجود بالفعل في قائمة النقل. لا يمكن دمج المتتبعات لأنها تورنت خاص. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - التورنت '%1' موجود بالفعل في قائمة النقل. هل تريد دمج المتتبعات من مصدر الجديد؟ - - - + Parsing metadata... يحلّل البيانات الوصفية... - + Metadata retrieval complete اكتمل جلب البيانات الوصفية - - Failed to load from URL: %1. -Error: %2 - فشل التحميل من موقع : %1. -خطأ: %2 - - - Download Error - خطأ في التنزيل - AddTorrentManager Downloading torrent... Source: "%1" - + تحميل التورنت... المصدر: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + فشل أضافة التورنت. المصدر: "%1". السبب: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + تم الكشف عن محاولة اضافة تورينت مكرر. المصدر: %1. التورينت الموجود: %2. النتيجة: %3 - + Merging of trackers is disabled - + تم تعطيل دمج التتبع - + Trackers cannot be merged because it is a private torrent - + لا يمكن دمج التتبع بسبب ان التورينت خاص - + Trackers are merged from new source - + تم دمج التتبع من مصدر جديد @@ -648,72 +594,77 @@ Error: %2 تخطي التحقق من البيانات (الهاش) - - - Choose save path - اختر مسار الحفظ + + Torrent share limits + حدود مشاركة التورنت - - - - - - - Default - الوضع الإفتراضي + + + Choose save path + اختر مسار الحفظ + + + - Yes - نعم + Default + الوضع الإفتراضي + Yes + نعم + + + + + No لا - + Manual يدوي - + Automatic تلقائي - + Original الأصلي - + Create subfolder إنشاء مجلد فرعي - + Don't create subfolder لا تقم بإنشاء مجلد فرعي - + None بدون - + Metadata received تم استلام البيانات الوصفية - + Files checked تم فحص الملف @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB م.بايت - + Recheck torrents on completion إعادة تأكيد البيانات بعد اكتمال التنزيل - - + + ms milliseconds ملي ثانية - + Setting الخيار - + Value Value set for this setting القيمة - + (disabled) (مُعطّل) - + (auto) (آلي) - + + min minutes دقيقة - + All addresses جميع العناوين - + qBittorrent Section قسم كيوبت‎تورنت - - + + Open documentation فتح التعليمات - + All IPv4 addresses جميع عناوين IPv4 - + All IPv6 addresses جميع عناوين IPv6 - + libtorrent Section قسم libtorrent - + Fastresume files ملفات Fastresume - + SQLite database (experimental) قاعدة بيانات SQLite (تجريبية) - + Resume data storage type (requires restart) استئناف نوع تخزين البيانات (يتطلب إعادة التشغيل) - + Normal عادي - + Below normal أقل من المعتاد - + Medium متوسط - + Low منخفض - + Very low منخفض جدًا - - Process memory priority (Windows >= 8 only) - أولوية ذاكرة العملية (ويندوز 8 أو أعلى فقط) - - - + Physical memory (RAM) usage limit حد استخدام الذاكرة الفعلية (RAM). - + Asynchronous I/O threads مواضيع الإدخال/الإخراج غير متزامنة - + Hashing threads تجزئة المواضيع - + File pool size حجم تجمع الملفات - + Outstanding memory when checking torrents ذاكرة مميزة عند فحص التورنتات - + Disk cache ذاكرة التخزين المؤقت على القرص - - - - + + + + s seconds ث - + Disk cache expiry interval مدة بقاء الذاكرة المؤقتة للقرص - + Disk queue size حجم صف القرص - - + + Enable OS cache مكّن النظام من خاصية الـcache - + Coalesce reads & writes اندماج القراءة والكتابة - + Use piece extent affinity استخدم مدى تقارب القطعة - + Send upload piece suggestions إرسال اقتراحات للقطع المُراد رفعها - - - - + + + + + 0 (disabled) 0 (معطَّل) - + Save resume data interval [0: disabled] How often the fastresume file is saved. حفظ الفاصل الزمني للاستئناف [0: معطل] - + Outgoing ports (Min) [0: disabled] المنافذ الصادرة (الحد الأدنى) [0: معطلة] - + Outgoing ports (Max) [0: disabled] المنافذ الصادرة (الحد الأقصى) [0: معطلة] - + 0 (permanent lease) 0 (إيجار دائم) - + UPnP lease duration [0: permanent lease] مدة تأجير UPnP [0: عقد إيجار دائم] - + Stop tracker timeout [0: disabled] إيقاف مهلة التتبع [0: معطل] - + Notification timeout [0: infinite, -1: system default] مهلة الإشعار [0: لا نهائي، -1: النظام الافتراضي] - + Maximum outstanding requests to a single peer الحد الأقصى للطلبات للقرين الواحد - - - - - + + + + + KiB ك.بايت - + (infinite) لا نهائي - + (system default) (الوضع الافتراضي للنظام) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux هذا الخيار أقل فعالية على لينكس - + + Process memory priority + أولوية ذاكرة العملية + + + Bdecode depth limit حد عمق Bdecode - + Bdecode token limit حد رمز Bdecode - + Default الوضع الإفتراضي - + Memory mapped files ملفات الذاكرة المعينة - + POSIX-compliant متوافق مع POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) نوع إدخال القرص Disk IO (يتطلب إعادة التشغيل) - - + + Disable OS cache تعطيل ذاكرة التخزين المؤقت لنظام التشغيل - + Disk IO read mode وضع قراءة إدخال القرص Disk IO - + Write-through الكتابة من خلال - + Disk IO write mode وضع الكتابة إدخال القرص Disk IO - + Send buffer watermark إرسال علامة مائية المخزن المؤقت - + Send buffer low watermark إرسال علامة مائية منخفضة المخزن المؤقت - + Send buffer watermark factor إرسال عامل العلامة المائية المخزن المؤقت - + Outgoing connections per second الاتصالات الصادرة في الثانية - - + + 0 (system default) 0 (افتراضي للنظام) - + Socket send buffer size [0: system default] حجم المخزن المؤقت لإرسال المقبس [0: النظام الافتراضي] - + Socket receive buffer size [0: system default] يتلقى المقبس حجم المخزن المؤقت [0: النظام الافتراضي] - + Socket backlog size حجم تراكم مأخذ التوصيل - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit الحد الأقصى لحجم ملف torrent. - + Type of service (ToS) for connections to peers نوع الخدمة (ToS) للاتصالات مع الأقران - + Prefer TCP أفضل TCP - + Peer proportional (throttles TCP) القرين المتناسب (سرّع TCP) - + Support internationalized domain name (IDN) دعم اسم نطاق الإنترنت الدولي (IDN) - + Allow multiple connections from the same IP address السماح باتصالات متعددة من نفس عنوان الآي بي - + Validate HTTPS tracker certificates تحقق من صحة شهادات متتبع HTTPS - + Server-side request forgery (SSRF) mitigation التخفيف من تزوير الطلب من جانب الخادم (SSRF) - + Disallow connection to peers on privileged ports عدم السماح بالاتصال بالقرناء على المنافذ ذات الامتيازات - + + It appends the text to the window title to help distinguish qBittorent instances + يقوم بإلحاق النص بعنوان النافذة للمساعدة في التمييز بين مثيلات qBittorent + + + + Customize application instance name + تخصيص اسم مثيل التطبيق + + + It controls the internal state update interval which in turn will affect UI updates فهو يتحكم في الفاصل الزمني لتحديث الحالة الداخلية والذي سيؤثر بدوره على تحديثات واجهة المستخدم - + Refresh interval الفاصل الزمني للتحديث - + Resolve peer host names اظهار اسم الجهاز للقرين - + IP address reported to trackers (requires restart) تم الإبلاغ عن عنوان IP للمتتبعين (يتطلب إعادة التشغيل) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed إعادة الاتصال بجميع المتتبعات عند تغيير IP أو المنفذ - + Enable icons in menus تفعيل الرموز في القوائم - + Enable port forwarding for embedded tracker تفعيل إعادة توجيه المنفذ لتتبع المضمن - - (Auto detect if empty) + + Enable quarantine for downloaded files + تمكين العزل للملفات التي تم تنزيلها + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + تمكين Mark-of-the-Web (MOTW) للملفات التي تم تنزيلها + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (الكشف التلقائي إذا كان فارغًا) + + + Python executable path (may require restart) + مسار بايثون القابل للتنفيذ (قد يتطلب إعادة التشغيل) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + ث + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + تأكيد إزالة المتتبع (التراكر) من جميع التورينتات + + + Peer turnover disconnect percentage النسبة المئوية لفصل دوران الأقران - + Peer turnover threshold percentage النسبة المئوية لبداية دوران الأقران - + Peer turnover disconnect interval الفترة الزمنية لفصل دوران الأقران - + Resets to default if empty - + يعيد التعيين إلى الوضع الافتراضي إذا كان فارغًا - + DHT bootstrap nodes - + عقد التمهيد DHT - + I2P inbound quantity I2P الكمية الواردة - + I2P outbound quantity الكمية الصادرة I2P - + I2P inbound length طول I2P الوارد - + I2P outbound length طول I2P الصادر - + Display notifications عرض الإشعارات - + Display notifications for added torrents عرض الإشعارات للتورنت المضافة. - + Download tracker's favicon تنزيل ايقونة التراكر - + Save path history length طول سجل مسار الحفظ - + Enable speed graphs تفعيل الرسم البياني لسرعة النقل - + Fixed slots فتحات ثابتة - + Upload rate based معدل الرفع على أساس - + Upload slots behavior سلوك فتحات الرفع - + Round-robin القرين الآلي الذي لا يبذر - + Fastest upload أسرع رفع - + Anti-leech مكافحة المُستهلكين - + Upload choking algorithm رفع خوارزمية الاختناق - + Confirm torrent recheck تأكيد إعادة التحقق من التورنت - + Confirm removal of all tags تأكيد إزالة جميع العلامات - + Always announce to all trackers in a tier أعلن دائمًا لجميع المتتبعات في المستوى - + Always announce to all tiers أعلن دائما لجميع المستويات - + Any interface i.e. Any network interface أي واجهة - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm خوارزمية الوضع المختلط %1-TCP - + Resolve peer countries اظهار أعلام الدول للقرناء - + Network interface واجهة الشبكة - + Optional IP address to bind to عنوان آي بي اختياري للربط به - + Max concurrent HTTP announces يعلن أقصى HTTP متزامن - + Enable embedded tracker تمكين المتتبع الداخلي - + Embedded tracker port منفذ المتتبع الداخلي - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - تم تشغيل كيوبت‎تورنت %1 + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 يعمل في الوضع المحمول. مجلد ملف التعريف المكتشف تلقائيًا في: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. اكتشاف علامة سطر أوامر متكررة: "%1". يشير الوضع المحمول إلى استئناف سريع نسبي. - + Using config directory: %1 استخدام دليل التكوين: %1 - + Torrent name: %1 اسم التورنت: %1 - + Torrent size: %1 حجم التورنت: %1 - + Save path: %1 مسار الحفظ: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds تم تنزيل التورنت في %1. - + + Thank you for using qBittorrent. شكرا لاستخدامك كيوبت‎تورنت. - + Torrent: %1, sending mail notification التورنت: %1، يرسل إشعار البريد الإلكتروني - + Add torrent failed - + فشل إضافة تورنت - + Couldn't add torrent '%1', reason: %2. - + تعذّر إضافة التورنت '%1'، السبب: %2. + + + + The WebUI administrator username is: %1 + اسم المستخدم لمسؤول واجهة الويب هو: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + لم يتم تعيين كلمة مرور لمسؤول واجهة الويب. تم تعيين كلمة مرور مؤقتة لهذه الجلسة: %1 + + + + You should set your own password in program preferences. + يجب عليك تعيين كلمة مرور خاصة بك في إعدادات البرنامج. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + واجهة الويب للمستخدم معطلة! لتفعيل واجهة الويب للمستخدم، قم بتحرير ملف الإعدادات يدويًا. - + Running external program. Torrent: "%1". Command: `%2` تشغيل برنامج خارجي تورنت: "%1". الأمر: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` فشل في تشغيل برنامج خارجي. تورنت: "%1". الأمر: `%2` - + Torrent "%1" has finished downloading انتهى تنزيل التورنت "%1". - + WebUI will be started shortly after internal preparations. Please wait... سيتم بدء تشغيل WebUI بعد وقت قصير من الاستعدادات الداخلية. انتظر من فضلك... - - + + Loading torrents... جارِ تحميل التورنت... - + E&xit &خروج - + I/O Error i.e: Input/Output Error خطأ إدخال/إخراج - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 السبب: %2 - Error - خطأ - - - Failed to add torrent: %1 - فشل في إضافة التورنت: %1 - - - + Torrent added تمت إضافة تورنت - + '%1' was added. e.g: xxx.avi was added. تم إضافة '%1' - + Download completed انتهى التحميل - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - انتهى تنزيل '%1'. - - - URL download error - خطأ في تحميل العنوان + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + تم بدء %1 من qbittorrent. معرف العملية: %2 - Couldn't download file at URL '%1', reason: %2. - تعذّر تنزيل الملف على الرابط '%1'، والسبب: %2. + + This is a test email. + - Torrent file association - ارتباط ملفات التورنت + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent ليس البرنامج الإفتراضي لفتح ملفات التورنت او الروابط المغناطيسية. -هل تريد جعل qBittorrent البرنامج الإفتراضي لهم؟ + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + انتهى تنزيل '%1'. - + Information معلومات - + To fix the error, you may need to edit the config file manually. - + لإصلاح الخطأ، قد تحتاج إلى تعديل ملف الإعدادات يدويًا. - + To control qBittorrent, access the WebUI at: %1 للتحكم في كيوبت‎تورنت، افتح واجهة الوِب الرسومية على: %1 - - The Web UI administrator username is: %1 - اسم المستخدم المسؤول في واجهة الوِب الرسومية هو: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - لم يتم تغيير كلمة مرور مسؤول واجهة الوِب الرسومية عن كلمة المرور الافتراضية: %1 - - - - This is a security risk, please change your password in program preferences. - هذه مخاطرة أمنية ، يرجى تغيير كلمة المرور الخاصة بك في تفضيلات البرنامج. - - - Application failed to start. - فشل التطبيق في البدء - - - + Exit خروج - + Recursive download confirmation - تأكيد متكرر للتنزيل + تأكيد متكرر للتنزيل - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - يحتوي ملف التورنت '%1' على ملفات .torrent، هل تريد متابعة تنزيلاتها؟ + يحتوي ملف التورنت '%1' على ملفات .torrent، هل تريد متابعة تنزيلاتها؟ - + Never - + أبدًا - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - تنزيل متكرر لملف .torren. داخل التورنت. تورنت المصدر: "%1". الملف: "%2" + تنزيل متكرر لملف .torren. داخل التورنت. تورنت المصدر: "%1". الملف: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" فشل في تعيين حد استخدام الذاكرة الفعلية (RAM). رمز الخطأ: %1. رسالة الخطأ: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" فشل في تعيين الحد الأقصى لاستخدام الذاكرة الفعلية (RAM). الحجم المطلوب: %1. الحد الأقصى للنظام: %2. رمز الخطأ: %3. رسالة الخطأ: "%4" - + qBittorrent termination initiated بدأ إنهاء qBittorrent - + qBittorrent is shutting down... كيوبت‎تورنت قيد الإغلاق ... - + Saving torrent progress... حفظ تقدم التورنت... - + qBittorrent is now ready to exit qBittorrent جاهز الآن للخروج @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. تعذر إنشاء الوِجهة '%1'. @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 فشل في الولوج إلى واجهة برمجة تطبيقات الويب. السبب: الآي بي محجوب ، الآي بي: %1 ، اسم المستخدم: %2 - + Your IP address has been banned after too many failed authentication attempts. تم حجب عنوان الآي بي الخاص بك بعد الكثير من محاولات المصادقة الفاشلة. - + WebAPI login success. IP: %1 نجاح في الولوج إلى واجهة برمجة تطبيقات الويب: الآي بي: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 فشل في الولوج إلى واجهة برمجة تطبيقات الويب. السبب: بيانات تفويض غير صالحة ، عدد المحاولات: %1 ، الآي بي: %2 ، اسم المستخدم: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? أولوية: - + Must Not Contain: يجب ألا تحتوي: - + Episode Filter: مُصفّي الحلقات: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ت&صدير... - + Matches articles based on episode filter. مطابقة المقالات بناءً على مُصفّي الحلقات. - + Example: مثال: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match ستطابق 2 و 5 و 8 خلال 15 و 30 وما بعدها من حلقات الموسم الأول - + Episode filter rules: قواعد تصفية الحلقات: - + Season number is a mandatory non-zero value رقم الموسم يجب ألا يكون قيمة صفرية - + Filter must end with semicolon عبارة التصفية يجب أن تنتهي بـفاصلة منقوطة (;) - + Three range types for episodes are supported: يتم دعم ثلاثة أنواع من النطاقات للحلقات: - + Single number: <b>1x25;</b> matches episode 25 of season one العدد المُفرد: <b>1x25;</b> يطابق الحلقة 25 من الموسم الأول - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one المدى الطبيعي: <b>1x25-40;</b> يطابق الحلقات من 25 إلى 40 من الموسم الأول - + Episode number is a mandatory positive value رقم الحلقة يجب أن يكون قيمة موجبة - + Rules القواعد - + Rules (legacy) القواعد (الموروثة) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons المدى اللانهائي: <b>1x25-;</b> يطابق الحلقات من 25 من الموسم الأول إلى نهايته وحتى آخر حلقة من الموسم الأخير - + Last Match: %1 days ago آخر تطابق: %1 يوم/أيام مضت - + Last Match: Unknown آخر مطابقة: غير معروفة - + New rule name اسم قاعدة جديد - + Please type the name of the new download rule. يرجى كتابة اسم قاعدة التنزيل الجديدة. - - + + Rule name conflict تعارض في اسم القاعدة - - + + A rule with this name already exists, please choose another name. تعارض في اسم القاعدة اختر اسم اخر. - + Are you sure you want to remove the download rule named '%1'? هل أنت متأكد من رغبتك في إزالة قاعدة التنزيل المسمّاة "%1"؟ - + Are you sure you want to remove the selected download rules? هل أنت متأكد من رغبتك في إزالة قواعد التنزيل المُختارة؟ - + Rule deletion confirmation تأكيد حذف القاعدة - + Invalid action إجراء غير صالح - + The list is empty, there is nothing to export. القائمة فارغة، لا يوجد شيء لاستخراجه. - + Export RSS rules استخراج قواعد تغذية RSS - + I/O Error خطأ في الإدخال/الإخراج - + Failed to create the destination file. Reason: %1 فشل في إنشاء الملف الهدف. السبب: %1 - + Import RSS rules استيراد قواعد تغذية RSS - + Failed to import the selected rules file. Reason: %1 فشل في استيراد ملف القواعد المُختار. السبب: %1 - + Add new rule... اضافة قاعدة جديدة... - + Delete rule حذف القاعدة - + Rename rule... تغيير تسمية القاعدة... - + Delete selected rules حذف القواعد المختارة - + Clear downloaded episodes... مسح الحلقات المُنزّلة... - + Rule renaming تغيير تسمية القاعدة - + Please type the new rule name اكتب اسم القاعدة الجديدة - + Clear downloaded episodes مسح الحلقات المُنزّلة - + Are you sure you want to clear the list of downloaded episodes for the selected rule? هل أنت متأكد من رغبتك في مسح قائمة الحلقات التي تم تنزيلها للقاعدة المُختارة؟ - + Regex mode: use Perl-compatible regular expressions وضع Regex: استخدم التعبيرات العادية المتوافقة مع Perl - - + + Position %1: %2 مكان %1: %2 - + Wildcard mode: you can use وضع البدل: يمكنك استخدام - - + + Import error خطأ في الاستيراد - + Failed to read the file. %1 فشل في قراءة الملف. %1 - + ? to match any single character ؟ لتتناسب مع أي حرف واحد - + * to match zero or more of any characters * لتناسب صفر أو أكثر من أي حرف - + Whitespaces count as AND operators (all words, any order) تعتبر المسافات البيضاء عوامل تشغيل AND (كل الكلمات ، أي ترتيب) - + | is used as OR operator | يستخدم كعامل OR - + If word order is important use * instead of whitespace. إذا كان ترتيب الكلمات مهمًا ، استخدم * بدلاً من المسافات البيضاء. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) تعبير بجملة %1 فارغة (مثل %2) - + will match all articles. سيطابق جميع المقالات. - + will exclude all articles. سيستبعد جميع المقالات. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" لا يمكن إنشاء مجلد استئناف التورنت: "%1" - + Cannot parse resume data: invalid format لا يمكن تحليل بيانات الاستئناف: التنسيق غير صالح - - + + Cannot parse torrent info: %1 لا يمكن تحليل معلومات التورنت: %1 - + Cannot parse torrent info: invalid format لا يمكن تحليل معلومات التورنت: التنسيق غير صالح - + + Mismatching info-hash detected in resume data + تم اكتشاف تجزئة معلومات غير متطابقة في بيانات الاستئناف. + + + Couldn't save torrent metadata to '%1'. Error: %2. تعذر حفظ بيانات التعريف للتورنت في '%1'. خطأ: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. تعذر حفظ بيانات الاستئناف للتورنت في '%1'. خطأ: %2. - + Couldn't load torrents queue: %1 تعذر تحميل صف التورنت: %1 - + Cannot parse resume data: %1 لا يمكن تحليل بيانات الاستئناف: %1 - + Resume data is invalid: neither metadata nor info-hash was found بيانات الاستئناف غير صالحة: لم يتم العثور على البيانات الوصفية ولا تجزئة المعلومات - + Couldn't save data to '%1'. Error: %2 تعذر حفظ البيانات في '%1'. خطأ: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. غير موجود. - + Couldn't load resume data of torrent '%1'. Error: %2 تعذر تحميل بيانات الاستئناف للتورنت '%1'. خطأ: %2 - - + + Database is corrupted. قاعدة البيانات تالفة. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. تعذر تمكين وضع تسجيل دفتر اليومية (WAL) لتسجيل الدخول. الخطأ: %1. - + Couldn't obtain query result. تعذر الحصول على نتيجة الاستعلام. - + WAL mode is probably unsupported due to filesystem limitations. ربما يكون وضع WAL غير مدعوم بسبب قيود نظام الملفات. - + Couldn't begin transaction. Error: %1 تعذر بدء المعاملة. الخطأ: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. تعذر حفظ بيانات التعريف للتورنت. خطأ: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 تعذر تخزين بيانات الاستئناف للتورنت '%1'. خطأ: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 تعذر حذف بيانات الاستئناف للتورنت '%1'. خطأ: %2 - + Couldn't store torrents queue positions. Error: %1 تعذر تخزين موضع صف التورنتات. خطأ: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 دعم جدول التجزئة الموزع (DHT): %1 - - - - - - - - - + + + + + + + + + ON يعمل - - - - - - - - - + + + + + + + + + OFF متوقف - - + + Local Peer Discovery support: %1 دعم اكتشاف الأقران المحليين: %1 - + Restart is required to toggle Peer Exchange (PeX) support يلزم إعادة التشغيل لتبديل دعم Peer Exchange (PeX). - + Failed to resume torrent. Torrent: "%1". Reason: "%2" فشل في استئناف التورنت. تورنت: "%1". السبب: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" فشل استئناف التورنت: تم اكتشاف معرف تورنت غير متناسق. تورنت: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" تم اكتشاف بيانات غير متناسقة: الفئة مفقودة من ملف التضبيط. سيتم استرداد الفئة ولكن سيتم إعادة ضبط إعداداتها على الوضع الافتراضي. تورنت: "%1". الفئة: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" تم اكتشاف بيانات غير متناسقة: فئة غير صالحة. تورنت: "%1". الفئة: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" تم اكتشاف عدم تطابق بين مسارات الحفظ للفئة المستردة ومسار الحفظ الحالي للتورنت. تم الآن تحويل التورنت إلى الوضع اليدوي. تورنت: "%1". الفئة: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" تم اكتشاف بيانات غير متناسقة: العلامة مفقودة من ملف التضبيط. سيتم استرداد العلامة. تورنت: "%1". العلامة: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" تم اكتشاف بيانات غير متناسقة: وسم غير صالح. تورنت: "%1". العلامة: "%2" - + System wake-up event detected. Re-announcing to all the trackers... تم اكتشاف حدث تنبيه النظام .جارِ إعادة إعلان إلى كافة المتتبعين... - + Peer ID: "%1" معرّف النظير: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 دعم تبادل الأقران (PeX): %1 - - + + Anonymous mode: %1 الوضع المجهول: %1 - - + + Encryption support: %1 دعم التشفير: %1 - - + + FORCED مُجبر - + Could not find GUID of network interface. Interface: "%1" تعذر العثور على GUID لواجهة الشبكة. الواجهة: "%1" - + Trying to listen on the following list of IP addresses: "%1" محاولة الاستماع إلى قائمة عناوين IP التالية: "%1" - + Torrent reached the share ratio limit. وصل تورنت إلى الحد الأقصى لنسبة المشاركة. - - - + Torrent: "%1". تورنت: "%1". - - - Removed torrent. - تمت إزالة التورنت. + تمت إزالة التورنت. - - - Removed torrent and deleted its content. - تمت إزالة التورنت وحذف محتواه. + تمت إزالة التورنت وحذف محتواه. - - - Torrent paused. - توقف التورنت مؤقتًا. + توقف التورنت مؤقتًا. - - - + Super seeding enabled. تم تفعيل البذر الفائق. - + Torrent reached the seeding time limit. وصل التورنت إلى حد زمني البذر. - + Torrent reached the inactive seeding time limit. وصل التورنت إلى حد زمني للنشر الغير نشط. - + Failed to load torrent. Reason: "%1" فشل تحميل التورنت. السبب: "%1" - + I2P error. Message: "%1". + خطأ I2P. الرسالة: "%1". + + + + UPnP/NAT-PMP support: ON + دعم UPnP/NAT-PMP: مشغّل + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - جارٍ تنزيل التورنت، برجاء الانتظار... المصدر: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - فشل تحميل التورنت. المصدر: "%1". السبب: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - تم اكتشاف محاولة لإضافة تورنت مكرر. تم تعطيل دمج المتتبعات. تورنت: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - تم اكتشاف محاولة لإضافة تورنت مكرر. لا يمكن دمج المتتبعات لأنها تورنت خاص. تورنت: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - تم اكتشاف محاولة لإضافة تورنت مكرر. يتم دمج المتتبعات من مصدر جديد. تورنت: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - دعم UPnP/NAT-PMP: مشغّل + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - دعم UPnP/NAT-PMP: متوقف + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - فشل تصدير تورنت. تورنت: "%1". الوجهة: "%2". السبب: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - تم إحباط حفظ بيانات الاستئناف. عدد التورنت المعلقة: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + تم تعطيل دمج التتبع - System network status changed to %1 - e.g: System network status changed to ONLINE - حالة شبكة النظام تغيّرت إلى %1 + + Trackers cannot be merged because it is a private torrent + لا يمكن دمج التتبع بسبب ان التورينت خاص + + + + Trackers are merged from new source + تم دمج التتبع من مصدر جديد - ONLINE - متصل + + UPnP/NAT-PMP support: OFF + دعم UPnP/NAT-PMP: متوقف - OFFLINE - غير متصل + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + فشل تصدير تورنت. تورنت: "%1". الوجهة: "%2". السبب: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - تم تغيير تضبيط الشبكة لـ %1 ، يجري تحديث ربط الجلسة + + Aborted saving resume data. Number of outstanding torrents: %1 + تم إحباط حفظ بيانات الاستئناف. عدد التورنت المعلقة: %1 - + The configured network address is invalid. Address: "%1" عنوان الشبكة الذي تم تضبيطه غير صالح. العنوان %1" - - + + Failed to find the configured network address to listen on. Address: "%1" فشل العثور على عنوان الشبكة الذي تم تضبيطه للاستماع إليه. العنوان "%1" - + The configured network interface is invalid. Interface: "%1" واجهة الشبكة التي تم تضبيطها غير صالحة. الواجهة: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" تم رفض عنوان IP غير صالح أثناء تطبيق قائمة عناوين IP المحظورة. عنوان IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" تمت إضافة تتبع إلى تورنت. تورنت: "%1". المتعقب: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" تمت إزالة المتتبع من التورنت. تورنت: "%1". المتعقب: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" تمت إضافة بذور URL إلى التورنت. تورنت: "%1". عنوان URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" تمت إزالة بذور URL من التورنت. تورنت: "%1". عنوان URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - توقف التورنت مؤقتًا. تورنت: "%1" + توقف التورنت مؤقتًا. تورنت: "%1" - + Torrent resumed. Torrent: "%1" استئنف التورنت. تورنت: "%1" - + Torrent download finished. Torrent: "%1" انتهى تحميل التورنت. تورنت: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" تم إلغاء حركة التورنت. تورنت: "%1". المصدر: "%2". الوجهة: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination فشل في إدراج نقل التورنت. تورنت: "%1". المصدر: "%2". الوجهة: "%3". السبب: ينتقل التورنت حاليًا إلى الوجهة - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location فشل في إدراج نقل التورنت. تورنت: "%1". المصدر: "%2" الوجهة: "%3". السبب: كلا المسارين يشيران إلى نفس الموقع - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" تحرك سيل في الصف. تورنت: "%1". المصدر: "%2". الوجهة: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" ابدأ في تحريك التورنت. تورنت: "%1". الوجهة: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" فشل حفظ تضبيط الفئات. الملف: "%1". خطأ: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" فشل في تحليل تضبيط الفئات. الملف: "%1". خطأ: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - تنزيل متكرر لملف .torren. داخل التورنت. تورنت المصدر: "%1". الملف: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - فشل في تحميل ملف torrent. داخل التورنت. تورنت المصدر: "%1". الملف: "%2". خطأ: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 تم تحليل ملف مرشح IP بنجاح. عدد القواعد المطبقة: %1 - + Failed to parse the IP filter file فشل في تحليل ملف مرشح IP - + Restored torrent. Torrent: "%1" استُعيدت التورنت. تورنت: "%1" - + Added new torrent. Torrent: "%1" تمت إضافة تورنت جديد. تورنت: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" خطأ في التورنت. تورنت: "%1". خطأ: "%2" - - Removed torrent. Torrent: "%1" - أُزيلت التورنت. تورنت: "%1" + أُزيلت التورنت. تورنت: "%1" - Removed torrent and deleted its content. Torrent: "%1" - أُزيلت التورنت وحُذفت محتواه. تورنت: "%1" + أُزيلت التورنت وحُذفت محتواه. تورنت: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + يفتقر التورنت إلى إعدادات SSL. التورنت: "%1". الرسالة: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" تنبيه خطأ في الملف. تورنت: "%1". الملف: "%2". السبب: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" فشل تعيين منفذ UPnP/NAT-PMP. الرسالة: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" نجح تعيين منفذ UPnP/NAT-PMP. الرسالة: "%1" - + IP filter this peer was blocked. Reason: IP filter. تصفية الآي بي - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). المنفذ المتصفي (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). المنفذ المميز (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + واجهت جلسة BitTorrent خطأ خطيرًا. السبب: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". خطأ وكيل SOCKS5. العنوان: %1. الرسالة: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 قيود الوضع المختلط - + Failed to load Categories. %1 فشل تحميل الفئات. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" فشل تحميل تضبيط الفئات. الملف: "%1". خطأ: "تنسيق البيانات غير صالح" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - أُزيلت التورنت ولكن فشل في حذف محتواه و/أو ملفه الجزئي. تورنت: "%1". خطأ: "%2" + أُزيلت التورنت ولكن فشل في حذف محتواه و/أو ملفه الجزئي. تورنت: "%1". خطأ: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 مُعطّل - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 مُعطّل - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - فشل البحث عن DNS لبذرة عنوان URL. تورنت: "%1". URL: "%2". خطأ: "%3" + فشل البحث عن DNS لبذرة عنوان URL. تورنت: "%1". URL: "%2". خطأ: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" تم تلقي رسالة خطأ من بذرة URL. تورنت: "%1". URL: "%2". الرسالة: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" تم الاستماع بنجاح على IP. عنوان IP: "%1". المنفذ: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" فشل الاستماع على IP. عنوان IP: "%1". المنفذ: "%2/%3". السبب: "%4" - + Detected external IP. IP: "%1" تم اكتشاف IP خارجي. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" خطأ: قائمة انتظار التنبيهات الداخلية ممتلئة وتم إسقاط التنبيهات، وقد ترى انخفاضًا في الأداء. نوع التنبيه المسقط: "%1". الرسالة: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" تم النقل بالتورنت بنجاح تورنت: "%1". الوجهة: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" فشل في التورنت. تورنت: "%1". المصدر: "%2". الوجهة: "%3". السبب: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - تم إحباط العملية - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - فشل في إنشاء ملف تورنت جديد. السبب: %1. + + Failed to start seeding. + فشل في بدء التوزيع. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - تم إحباط العملية + تم إحباط العملية + + Create new torrent file failed. Reason: %1. - فشل في إنشاء ملف تورنت جديد. السبب: %1. + فشل في إنشاء ملف تورنت جديد. السبب: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 فشل إضافة القرين "%1" إلى التورنت "%2". السبب: %3 - + Peer "%1" is added to torrent "%2" تم إضافة القرين '%1' إلى التورنت '%2' - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. تم اكتشاف بيانات غير متوقعة. تورنت: %1. البيانات: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. لا يمكن الكتابة إلى الملف. السبب: "%1". أصبح التورنت الآن في وضع "الرفع فقط". - + Download first and last piece first: %1, torrent: '%2' تنزيل أول وآخر قطعة أولًا: %1، التورنت: '%2' - + On مُفعل - + Off مُعطل - + + Failed to reload torrent. Torrent: %1. Reason: %2 + فشل إعادة تحميل التورنت. التورنت: %1. السبب: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" فشل إنشاء بيانات الاستئناف. تورنت: "%1". السبب: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" فشل في استعادة التورنت. ربما تم نقل الملفات أو لا يمكن الوصول إلى مساحة التخزين. تورنت: "%1". السبب: "%2" - + Missing metadata البيانات الوصفية مفقودة - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" فشل إعادة تسمية الملف. التورنت: "%1"، الملف: "%2"، السبب: "%3" - + Performance alert: %1. More info: %2 تنبيه الأداء: %1. مزيد من المعلومات: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' يجب أن يتبع المعلمة '%1' بناء الجملة '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' يجب أن يتبع المعلمة '%1' بناء الجملة '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' رقم صحيح متوقع في متغير المحيط '%1'، لكن تم الحصول على '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - يجب أن يتبع المعلمة '%1' بناء الجملة '%1=%2' + يجب أن يتبع المعلمة '%1' بناء الجملة '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' تم توقع %1 في متغير المحيط '%2'، ولكن تم الحصول على '%3' - - + + %1 must specify a valid port (1 to 65535). يجب أن يحدد %1 منفذًا صالحًا (من 1 إلى 65535). - + Usage: الاستخدام: - + [options] [(<filename> | <url>)...] [خيارات][(<filename> | <url>)...] - + Options: خيارات: - + Display program version and exit عرض إصدار البرنامج والخروج - + Display this help message and exit عرض رسالة المساعدة هذه والخروج - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + يجب أن يتبع المعلمة '%1' بناء الجملة '%1=%2' + + + + Confirm the legal notice + تأكيد الإشعار القانوني + + + + port المنفذ - - Change the Web UI port - تغيير منفذ واجهة الوِب الرسومية + + Change the WebUI port + تغيير منفذ واجهة الويب - + Change the torrenting port قم بتغيير منفذ التورنت - + Disable splash screen تعطيل شاشة البداية - + Run in daemon-mode (background) التشغيل في الوضع الخفي (في الخلفية) - + dir Use appropriate short form or abbreviation of "directory" دليل - + Store configuration files in <dir> تخزين ملفات التضبيط في <dir> - - + + name الاسم - + Store configuration files in directories qBittorrent_<name> تخزين ملفات التضبيط في الدلائل qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory اخترق ملفات libtorrent fastresume وعمل مسارات للملفات ذات صلة بدليل الملف الشخصي - + files or URLs الملفات أو الروابط - + Download the torrents passed by the user تنزيل ملفات التورنت التي مر بها المستخدم - + Options when adding new torrents: الخيارات عند إضافة التورنتات الجديدة: - + path المسار - + Torrent save path مسار حفظ التورنت - + + Add torrents as running or stopped + + + Add torrents as started or paused - أضف التورنت كـ تم بدؤه أو متوقف + أضف التورنت كـ تم بدؤه أو متوقف - + Skip hash check تخطي التحقق من البيانات (الهاش) - + Assign torrents to category. If the category doesn't exist, it will be created. تعيين التورنتات إلى فئة. وإذا كانت الفئة غير موجودة، سيتم إنشائها. - + Download files in sequential order تنزيل الملفات بترتيب تسلسلي - + Download first and last pieces first تنزيل أول وآخر قطعة أولًا - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. حدد ما إذا كان سيتم فتح مربع حوار "إضافة تورنت جديد" عند إضافة تورنت. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: يمكن توفير قيم الخيار عبر متغيرات المحيط. بالنسبة للخيار المسمى "parameter-name"، اسم متغير المحيط هو 'QBT_PARAMETER_NAME' (في الحالة العلوية، تم استبدال "-" بـ "_") لتمرير قيم العَلم ، اضبط المتغير على "1" أو "TRUE". فمثلا، لتعطيل شاشة البداية: - + Command line parameters take precedence over environment variables معلمات سطر الأوامر لها الأسبقية على المتغيرات المحيطة - + Help مساعدة @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories الفئات - + All الكل - + Uncategorized غير مصنّف @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - استئناف التورنتات + Start torrents + + Stop torrents + + + + Resume torrents + استئناف التورنتات + + Pause torrents - إيقاف مؤقت التورنتات + إيقاف مؤقت التورنتات @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... تحرير... - + Reset إعادة تعيين + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 فشل تحميل ورقة أنماط السمة المخصصة. %1 - + Failed to load custom theme colors. %1 فشل تحميل ألوان السمات المخصصة. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 فشل تحميل ألوان السمة الافتراضية. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - أيضًا احذف الملفات نهائيًا + أيضًا احذف الملفات نهائيًا - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? هل أنت متأكد أنك تريد إزالة '%1' من قائمة النقل؟ - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? هل أنت متأكد من رغبتك في إزالة ملفات التورنت %1 هذه من قائمة النقل؟ - + Remove إزالة @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also تنزيل من روابط - + Add torrent links إضافة روابط تورنت - + One link per line (HTTP links, Magnet links and info-hashes are supported) رابط واحد لكل سطر (روابط HTTP ، والروابط الممغنطة ومعلومات التجزئة مدعومة) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also تنزيل - + No URL entered لم يتم إدخال روابط - + Please type at least one URL. برجاء إدخال رابط واحد على الأقل. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also خطأ في التحليل: ملف عامل التصفية ليس ملف PeerGuardian P2B صالح. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + تحميل التورنت... من المصدر: "%1" - Trackers cannot be merged because it is a private torrent - + لا يمكن دمج التتبع بسبب ان التورينت خاص - + Torrent is already present - التورنت موجود مسبقا بالفعل + التورنت موجود مسبقا بالفعل + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - التورنت '%1' موجود بالفعل في قائمة النقل. هل تريد دمج المتتبعات من مصدر الجديد؟ + التورنت '%1' موجود بالفعل في قائمة النقل. هل تريد دمج المتتبعات من مصدر الجديد؟ GeoIPDatabase - - + + Unsupported database file size. حجم ملف قاعدة بيانات غير مدعوم. - + Metadata error: '%1' entry not found. خطأ في البيانات الوصفية: لم يُعثر على المُدخلة '%1'. - + Metadata error: '%1' entry has invalid type. خطأ في البيانات الوصفية: المُدخلة '%1' هي نوع غير صالح. - + Unsupported database version: %1.%2 إصدار قاعدة بيانات غير مدعوم: %1.%2 - + Unsupported IP version: %1 إصدار آي بي غير مدعوم: %1 - + Unsupported record size: %1 حجم تسجيل غير مدعوم: %1 - + Database corrupted: no data section found. قاعدة بيانات تالفة: لم يُعثر على أي مقطع بيانات. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 يتجاوز حجم طلب Http الحد ، إغلاق مأخذ التوصيل. الحد: %1، الآي بي: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" طريقة طلب Http غير صالحة، إغلاق المقبس. عنوان IP: %1. الطريقة: "%2" - + Bad Http request, closing socket. IP: %1 طلب Http غير صالح ، إغلاق مأخذ التوصيل. الآي بي: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... استعرض... - + Reset إعادة تعيين - + Select icon حدد الايقونة - + Supported image files ملفات الصور المدعومة + + LegalNotice + + + Legal Notice + تنبيه قانوني + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + كيوبت‎تورنت هو برنامج لتبادل الملفات. عندما تقوم بتشغيل ملف تورنت ، سيتم توفير بياناته للآخرين عن طريق الرفع. أي محتوى تشاركه هو مسؤوليتك وحدك. + + + + No further notices will be issued. + لن يتم إصدار إخطارات أخرى. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + إذا كنت قد قرأت الإشعار القانوني، يمكنك استخدام خيار سطر الأوامر `--confirm-legal-notice` لإخفاء هذه الرسالة. + + + + Press 'Enter' key to continue... + اضغط على مفتاح "Enter" للاستمرار + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. تم حظر %1. السبب: %2. - + %1 was banned 0.0.0.0 was banned تم حظر %1 @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 معلمة سطر أوامر غير معروفة. - - + + %1 must be the single command line parameter. يجب أن تكون %1 معلمة سطر الأوامر الفردية. - - You cannot use %1: qBittorrent is already running for this user. - لا يمكنك استخدام %1: كيوبت‎تورنت يعمل حاليا على هذا المستخدم. - - - + Run application with -h option to read about command line parameters. قم بتشغيل التطبيق بخيار -h لقراءة معلمات سطر الأوامر. - + Bad command line سطر أوامر تالف - + Bad command line: سطر أوامر تالف: - + An unrecoverable error occurred. - + حدث خطأ غير قابل للإصلاح. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - إشعار قانوني - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - كيوبت‎تورنت هو برنامج لتبادل الملفات. عندما تقوم بتشغيل ملف تورنت ، سيتم توفير بياناته للآخرين عن طريق الرفع. أي محتوى تشاركه هو مسؤوليتك وحدك. + لقد واجه برنامج qBittorrent خطأً غير قابل للإصلاح. - - No further notices will be issued. - لن يتم إصدار إخطارات أخرى. - - - - Press %1 key to accept and continue... - اضغط مفتاح "%1" للقبول والمتابعة... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - يعتمد هذا البرنامج على تقنية المشاركة، وعند تشغيل أي تورنت ستكون البيانات متاحة للآخرين ليسقبلوها منك. أي محتوى تشاركه سيكون على مسؤليتك الخاصة. - -لن تظهر المزيد من التنبيهات. + + You cannot use %1: qBittorrent is already running. + لا يمكنك استخدام %1: qBittorrent هو قيد التشغيل بالفعل. - - Legal notice - إشعار قانوني + + Another qBittorrent instance is already running. + هناك نسخة أخرى من qBittorrent تعمل بالفعل. - - Cancel - إلغاء + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + تم العثور على مثيل غير متوقع لـ qBittorrent. جاري الخروج من هذا المثيل. معرف العملية الحالية: %1. - - I Agree - أوافق + + Error when daemonizing. Reason: "%1". Error code: %2. + خطأ عند تشغيل البرنامج في الخلفية. السبب: "%1". رمز الخطأ: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. ت&حرير - + &Tools أ&دوات - + &File &ملف - + &Help م&ساعدة - + On Downloads &Done عند انت&هاء التنزيلات - + &View &عرض - + &Options... &خيارات... - &Resume - ا&ستئناف + ا&ستئناف - + &Remove &إزالة - + Torrent &Creator مُ&نشيء التورنت - - + + Alternative Speed Limits حدود السرعات البديلة - + &Top Toolbar شريط الأدوات ال&علوي - + Display Top Toolbar عرض شريط الأدوات العلوي - + Status &Bar &شريط الحالة - + Filters Sidebar تصفيات الشريط الجانبي - + S&peed in Title Bar ال&سرعة في شريط العنوان - + Show Transfer Speed in Title Bar عرض السرعة في شريط العنوان - + &RSS Reader &قارئ RSS - + Search &Engine مُ&حرك البحث - + L&ock qBittorrent &قفل واجهة البرنامج - + Do&nate! ت&برع! - + + Sh&utdown System + + + + &Do nothing &لا تفعل شيئا - + Close Window إغلاق النافذة - R&esume All - اس&تئناف الكل + اس&تئناف الكل - + Manage Cookies... إدارة الكعكات... - + Manage stored network cookies إدارة كعكات الشبكة المُخزّنة - + Normal Messages رسائل عادية - + Information Messages رسائل معلومات - + Warning Messages رسائل تحذيرية - + Critical Messages رسائل حرجة - + &Log ال&سجل - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... تعيين حدود السرعة العامة... - + Bottom of Queue أسفل الصف - + Move to the bottom of the queue انتقل إلى أسفل الصف - + Top of Queue قمة الصف - + Move to the top of the queue انتقل إلى قمة الصف - + Move Down Queue انتقل أسفل في الصف - + Move down in the queue انتقل في أسفل الصف - + Move Up Queue انتقل أعلى في الصف - + Move up in the queue انتقل في أعلى الصف - + &Exit qBittorrent إ&غلاق البرنامج - + &Suspend System ت&عليق النظام - + &Hibernate System إ&لباث النظام - S&hutdown System - إ&طفاء تشغيل الجهاز + إ&طفاء تشغيل الجهاز - + &Statistics الإ&حصائات - + Check for Updates البحث عن تحديثات - + Check for Program Updates التحقق من وجود تحديثات للتطبيق - + &About &عن - &Pause - إ&لباث + إ&لباث - P&ause All - إل&باث الكل + إل&باث الكل - + &Add Torrent File... إ&ضافة ملف تورنت... - + Open فتح - + E&xit &خروج - + Open URL فتح الرابط - + &Documentation الت&عليمات - + Lock أوصد - - - + + + Show أظهر - + Check for program updates التحقق من وجود تحديثات للتطبيق - + Add Torrent &Link... إضافة &رابط تورنت... - + If you like qBittorrent, please donate! إذا أعجبك كيوبت‎تورنت، رجاءً تبرع! - - + + Execution Log السجل - + Clear the password إزالة كلمة السر - + &Set Password ت&عيين كلمة سر - + Preferences التفضيلات - + &Clear Password &مسح كلمة السر - + Transfers النقل - - + + qBittorrent is minimized to tray كيوبت‎تورنت مُصغّر في جوار الساعة - - - + + + This behavior can be changed in the settings. You won't be reminded again. هذا السلوك يمكن تغييره من الإعدادات. لن يتم تذكيرك مرة أخرى. - + Icons Only أيقونات فقط - + Text Only نص فقط - + Text Alongside Icons النص بجانب الأيقونات - + Text Under Icons النص أسفل الأيقونات - + Follow System Style اتباع شكل النظام - - + + UI lock password كلمة سر قفل الواجهة - - + + Please type the UI lock password: اكتب كلمة سر قفل الواجهة: - + Are you sure you want to clear the password? هل ترغب حقا في إزالة كلمة السر؟ - + Use regular expressions استخدم التعبيرات العادية - - Search - البحث + + + Search Engine + مُحرك البحث - - Transfers (%1) - النقل (%1) + + Search has failed + فشلت عملية البحث - Recursive download confirmation - تأكيد متكرر للتنزيل + + Search has finished + - Never - أبدا + + Search + البحث + + + + Transfers (%1) + النقل (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. تم تحديث كيوبت‎تورنت للتو ويحتاج لإعادة تشغيله لتصبح التغييرات فعّالة. - + qBittorrent is closed to tray تم إغلاق كيوبت‎تورنت إلى جوار الساعة - + Some files are currently transferring. بعض الملفات تنقل حاليا. - + Are you sure you want to quit qBittorrent? هل أنت متأكد من رغبتك في إغلاق كيوبت‎تورنت؟ - + &No &لا - + &Yes &نعم - + &Always Yes نعم &دائما - + Options saved. تم حفظ الخيارات. - %1/s - s is a shorthand for seconds - %1/ث + + [PAUSED] %1 + %1 is the rest of the window title + - - + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Python Runtime مفقود - + qBittorrent Update Available يوجد تحديث متاح - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? كيوبت تورنت بحاجة لبايثون ليتمكن من تشغيل محرك البحث، ولكن على ما يبدو أن بايثون غير مثبّت على جهازك. هل ترغب بتثبيت بايثون الآن؟ - + Python is required to use the search engine but it does not seem to be installed. كيوبت تورنت بحاجة لبايثون ليتمكن من تشغيل محرك البحث، ولكن على ما يبدو أن بايثون غير مثبّت على جهازك. - - + + Old Python Runtime إصدار بايثون قديم - + A new version is available. إصدار جديد متاح. - + Do you want to download %1? هل ترغب بتنزيل %1؟ - + Open changelog... فتح سجل التغييرات ... - + No updates available. You are already using the latest version. لا تحديثات متاحة. أنت تستخدم أحدث إصدار. - + &Check for Updates &فحص وجود تحديثات - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? إصدار بايثون لديك قديم (%1). والإصدار المتطلب يجب أن يكون %2 على الأقل. هل ترغب بتثبيت الإصدار الأحدث الآن؟ - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. إصدار بايثون لديك (%1) قديم. يرجى الترقية إلى أحدث إصدار حتى تعمل محركات البحث. أدنى إصدار ممكن: %2. - + + Paused + مُلبث + + + Checking for Updates... يتفقد وجود تحديثات... - + Already checking for program updates in the background يتحقق من وجود تحديثات للتطبيق في الخلفية - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error خطأ في التنزيل - Python setup could not be downloaded, reason: %1. Please install it manually. - تعذّر تنزيل مُثبّت بايثون، والسبب: %1. + تعذّر تنزيل مُثبّت بايثون، والسبب: %1. يرجى تثبيته يدويا. - - + + Invalid password كلمة سرّ خاطئة - + Filter torrents... تصفية التورنت.. - + Filter by: صنف بواسطة: - + The password must be at least 3 characters long يجب أن تتكون كلمة المرور من 3 أحرف على الأقل - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - يحتوي ملف التورنت '%1' على ملفات .torrent، هل تريد متابعة تنزيلاتها؟ - - - + The password is invalid كلمة السرّ خاطئة - + DL speed: %1 e.g: Download speed: 10 KiB/s سرعة التنزيل: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s سرعة الرفع: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [تنزيل: %1, رفع: %2] كيوبت‎تورنت %3 - - - + Hide إخفاء - + Exiting qBittorrent إغلاق البرنامج - + Open Torrent Files فتح ملف تورنت - + Torrent Files ملفات التورنت @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 خطأ في الإدخال/الإخراج: %1 - + The file size (%1) exceeds the download limit (%2) حجم الملف (%1) يتجاوز حد التنزيل (%2) - + Exceeded max redirections (%1) جاوز الحد الأقصى لعمليات إعادة التوجيه (%1) - + Redirected to magnet URI إعادة توجيهه إلى رابط ممغنط. - + The remote host name was not found (invalid hostname) لم يتم العثور على اسم المُضيف البعيد (اسم المضيف غير صالح) - + The operation was canceled تم إلغاء العملية - + The remote server closed the connection prematurely, before the entire reply was received and processed الخادم أغلق الاتصال تمامًا, قبل انهاء ومعالجة الطلب - + The connection to the remote server timed out انقضت مهلة الاتصال بالخادم البعيد - + SSL/TLS handshake failed فشل اتصال SSL/TLS - + The remote server refused the connection الخادم البعيد رفض الاتصال - + The connection to the proxy server was refused رفض الاتصال بخادم البروكسي - + The proxy server closed the connection prematurely الاتصال مع خادم البروكسي أغلق تمامًا - + The proxy host name was not found لم يتم العثور على اسم مُضيف البروكسي - + The connection to the proxy timed out or the proxy did not reply in time to the request sent انتهت مهلة الاتصال بالبروكسي أو أن البروكسي لم يرد في الوقت المناسب على الطلب المرسل - + The proxy requires authentication in order to honor the request but did not accept any credentials offered يتطلب البروكسي المصادقة من أجل تلبية الطلب ولكنه لم يقبل أي بيانات اعتماد معروضة - + The access to the remote content was denied (401) تم رفض الوصول إلى المحتوى البعيد (401) - + The operation requested on the remote content is not permitted العملية المطلوبة على المحتوى البعيد غير مسموح بها - + The remote content was not found at the server (404) لم يتم العثور على المحتوى البعيد على الخادم (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted يتطلب الخادم البعيد المصادقة لخدمة المحتوى ولكن لم يتم قبول بيانات الاعتماد المقدمة - + The Network Access API cannot honor the request because the protocol is not known يتعذر على API تلبية طلب الوصل إلى الشبكة لأن البروتوكول غير معروف - + The requested operation is invalid for this protocol العملية المطلوبة غير صالحة لهذا البروتوكول - + An unknown network-related error was detected اكتشاف خطأ غير معروف متعلق بالشبكة - + An unknown proxy-related error was detected اكتشاف خطأ غير معروف متعلق بالبروكسي - + An unknown error related to the remote content was detected اكتشاف خطأ غير معروف يتعلق بالمحتوى البعيد - + A breakdown in protocol was detected اكتشاف انهيار في البروتوكول - + Unknown error خطأ غير معروف @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" تجاهل خطأ SSL ، الرابط: "%1"، الأخطاء: "%2" @@ -5706,294 +5932,307 @@ Please install it manually. بت تورنت - + RSS RSS - Web UI - واجهة الوِب الرسومية + واجهة الوِب الرسومية - + Advanced متقدم - + Customize UI Theme... تخصيص سمة واجهة المستخدم... - + Transfer List قائمة النقل - + Confirm when deleting torrents التأكيد عند حذف التورنتات - Shows a confirmation dialog upon pausing/resuming all the torrents - يعرض مربع حوار التأكيد عند الإيقاف المؤقت/استئناف كافة ملفات التورنت + يعرض مربع حوار التأكيد عند الإيقاف المؤقت/استئناف كافة ملفات التورنت - Confirm "Pause/Resume all" actions - قم بتأكيد إجراءات "الإيقاف المؤقت/استئناف الكل". + قم بتأكيد إجراءات "الإيقاف المؤقت/استئناف الكل". - + Use alternating row colors In table elements, every other row will have a grey background. استخدام ألوان متضادة للأسطر - + Hide zero and infinity values إخفاء قيم الصفر واللانهاية - + Always دائما - Paused torrents only - التورنتات المٌقفة مؤقتًا فقط + التورنتات المٌقفة مؤقتًا فقط - + Action on double-click الإجراء عند النقر المزدوج - + Downloading torrents: أثناء تنزيل التورنتات: - - Start / Stop Torrent - تشغيل / إيقاف التورنت + تشغيل / إيقاف التورنت - - + + Open destination folder فتح المجلد الحاوي - - + + No action دون إجراء - + Completed torrents: التورنتات المكتملة: - + Auto hide zero status filters إخفاء مرشحات الحالة الصفرية تلقائيًا - + Desktop سطح الكتب - + Start qBittorrent on Windows start up ابدأ كيوبت‎تورنت عند بدء تشغيل ويندوز - + Show splash screen on start up إظهار شاشة البدء عند بدء البرنامج - + Confirmation on exit when torrents are active تأكيد الإغلاق عند وجود تورنتات نشطة - + Confirmation on auto-exit when downloads finish تأكيد الإغلاق التلقائي عند انتهاء التنزيلات - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB ك.بايت - + Torrent content layout: تخطيط محتوى التورنت: - + Original الأصلي - + Create subfolder إنشاء مجلد فرعي - + Don't create subfolder لا تقم بإنشاء مجلد فرعي - + The torrent will be added to the top of the download queue ستتم إضافة التورنت إلى أعلى صف التنزيل - + Add to top of queue The torrent will be added to the top of the download queue أضفه إلى قمة الصف - + When duplicate torrent is being added عندما يتم إضافة تورنت مكررة - + Merge trackers to existing torrent دمج المتتبعات في التورنت الموجودة - + + Keep unselected files in ".unwanted" folder + + + + Add... إضافة... - + Options.. خيارات... - + Remove إزالة - + Email notification &upon download completion إرسال تنبيه عبر البريد الإلكتروني عند اكتمال التنزيل - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: بروتوكول اتصال القرين: - + Any أي - + I2P (experimental) I2P (تجريبي) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>إذا كان &quot;الوضع المختلط&quot; تم تفعيل تورنتات I2P، كما يُسمح لها بالحصول على أقران من مصادر أخرى غير المتتبع، والاتصال بعناوين IP العادية، دون توفير أي إخفاء للهوية. قد يكون هذا مفيدًا إذا لم يكن المستخدم مهتمًا بإخفاء هوية I2P، ولكنه لا يزال يريد أن يكون قادرًا على الاتصال بأقران I2P. + <html><head/><body><p>إذا كان &quot;الوضع المختلط&quot; تم تفعيل تورنتات I2P، كما يُسمح لها بالحصول على أقران من مصادر أخرى غير المتتبع، والاتصال بعناوين IP العادية، دون توفير أي إخفاء للهوية. قد يكون هذا مفيدًا إذا لم يكن المستخدم مهتمًا بإخفاء هوية I2P، ولكنه لا يزال يريد أن يكون قادرًا على الاتصال بأقران I2P. - + Mixed mode وضع مختلط - + Some options are incompatible with the chosen proxy type! بعض الخيارات غير متوافقة مع نوع الوكيل الذي تم اختياره! - + If checked, hostname lookups are done via the proxy إذا تم تحديده، فسيتم إجراء عمليات البحث عن اسم المضيف (hostname) عبر الوكيل - + Perform hostname lookup via proxy إجراء بحث عن اسم المضيف عبر الوكيل - + Use proxy for BitTorrent purposes استخدم الوكيل لأغراض BitTorrent - + RSS feeds will use proxy سوف تستخدم مواجز RSS الوكيل - + Use proxy for RSS purposes استخدم الوكيل لأغراض RSS - + Search engine, software updates or anything else will use proxy سيستخدم محرك البحث أو تحديثات البرامج أو أي شيء آخر الوكيل - + Use proxy for general purposes استخدم الوكيل للأغراض العامة - + IP Fi&ltering تصفية الآي بي - + Schedule &the use of alternative rate limits جدولة واستخدام المعدل البديل - + From: From start time من: - + To: To end time إلى: - + Find peers on the DHT network ابحث عن القرناء على شبكة DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6002,140 +6241,188 @@ Disable encryption: Only connect to peers without protocol encryption تعطيل التشفير: اتصل بالقرناء فقط بدون تشفير البروتوكول - + Allow encryption السماح بالتشفير - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">لمعلومات أكثر</a>) - + Maximum active checking torrents: الحد الأقصى التحقق النشطة لتورنت: - + &Torrent Queueing &انتظار التورنت - + When total seeding time reaches عندما يصل وقت البذر الكلي - + When inactive seeding time reaches عندما يصل وقت البذر غير النشط - A&utomatically add these trackers to new downloads: - إضافة هذه المتتبعات تلقائيًا إلى التنزيلات الجديدة: + إضافة هذه المتتبعات تلقائيًا إلى التنزيلات الجديدة: - + RSS Reader قارئ RSS - + Enable fetching RSS feeds تفعيل جلب مواجز RSS - + Feeds refresh interval: الفاصل الزمني لتحديث المواجز: - + + Same host request delay: + + + + Maximum number of articles per feed: أقصى عدد من المقالات لكل موجز: - - - + + + min minutes د - + Seeding Limits حدود البذر - Pause torrent - إيقاف مؤقت التورنت + إيقاف مؤقت التورنت - + Remove torrent إزالة التورنت - + Remove torrent and its files إزالة التورنت وملفاته - + Enable super seeding for torrent تفعيل البذر الخارق للتورنت - + When ratio reaches عندما تصل النسبة - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + الرابط: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader منزّل التورنت التلقائي من تغذية RSS - + Enable auto downloading of RSS torrents تفعيل التنزيل التلقائي لتورنتات RSS - + Edit auto downloading rules... تحرير قواعد التنزيل التلقائي... - + RSS Smart Episode Filter RSS مُصفّي الحلقات الذكي - + Download REPACK/PROPER episodes تنزيل REPACK/PROPER الحلقات - + Filters: تصفيات: - + Web User Interface (Remote control) واجهة مستخدم الويب (التحكم عن بُعد) - + IP address: عنوان الآي بي: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6144,42 +6431,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv "::" لأي عنوان IPv6 ، أو "*" لكلا IPv4 و IPv6. - + Ban client after consecutive failures: حظر العميل بعد إخفاقات متتالية: - + Never أبدًا - + ban for: حظر لـ: - + Session timeout: مهلة الجلسة: - + Disabled مُعطّل - Enable cookie Secure flag (requires HTTPS) - تفعيل علامة تأمين ملفات تعريف الارتباط (يتطلب HTTPS) + تفعيل علامة تأمين ملفات تعريف الارتباط (يتطلب HTTPS) - + Server domains: نطاقات الخادم: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6192,442 +6478,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP استخدام HTTPS بدلًا من HTTP - + Bypass authentication for clients on localhost تجاوز المصادقة للعملاء على المضيف المحلي - + Bypass authentication for clients in whitelisted IP subnets تجاوز المصادقة للعملاء في شبكات الآي بي الفرعية المدرجة في القائمة البيضاء - + IP subnet whitelist... القائمة البيضاء للشبكة الفرعية للآي بي ... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. حدد عناوين IP للوكيل العكسي (أو الشبكات الفرعية، على سبيل المثال 0.0.0.0/24) لاستخدام عنوان العميل المُعاد توجيهه (رأس X-Forwarded-For). يستخدم '؛' لتقسيم إدخالات متعددة. - + Upda&te my dynamic domain name تحديث اسم النطاق الديناميكي الخاص بي - + Minimize qBittorrent to notification area تصغير كيوبت‎تورنت إلى جوار الساعة - + + Search + البحث + + + + WebUI + + + + Interface الواجهة - + Language: اللغة: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: مظهر الأيقونة في جوار الساعة: - - + + Normal عادي - + File association ارتباط الملف - + Use qBittorrent for .torrent files استخدام كيوبت‎تورنت لفتح ملفات .torrent - + Use qBittorrent for magnet links استخدام كيوبت‎تورنت لفتح الروابط المغناطيسية - + Check for program updates التحقق من وجود تحديثات للبرنامج - + Power Management إدارة الطاقة - + + &Log Files + + + + Save path: مسار الحفظ: - + Backup the log file after: قم بعمل نسخة احتياطية من ملف السجل بعد: - + Delete backup logs older than: حذف سجلات النسخ الاحتياطي الأقدم من: - + + Show external IP in status bar + + + + When adding a torrent عند إضافة تورنت - + Bring torrent dialog to the front إحضار نافذة التورنت إلى الأمام - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled احذف أيضًا ملفات .torrent التي تم إلغاء إضافتها - + Also when addition is cancelled أيضا عندما يتم إلغاء الإضافة - + Warning! Data loss possible! تحذير! فقدان البيانات ممكن! - + Saving Management إدارة التوفير - + Default Torrent Management Mode: نمط إدارة التورنت الافتراضي: - + Manual يدوي - + Automatic آلي - + When Torrent Category changed: عند تغيير فئة التورنت: - + Relocate torrent نقل التورنت - + Switch torrent to Manual Mode تبديل التورنت إلى الوضع اليدوي - - + + Relocate affected torrents نقل التورنتات المتضررة - - + + Switch affected torrents to Manual Mode تبديل التورنتات المتضررة إلى الوضع اليدوي - + Use Subcategories استخدام فئات فرعية - + Default Save Path: مسار الحفظ الافتراضي: - + Copy .torrent files to: نسخ ملفات torrent. إلى: - + Show &qBittorrent in notification area إظهار كيوبت‎تورنت بجوار الساعة - &Log file - ملف السجل + ملف السجل - + Display &torrent content and some options عرض محتويات التورنت وبعض الخيارات - + De&lete .torrent files afterwards حذف ملفات .torrent بعد ذلك - + Copy .torrent files for finished downloads to: نسخ ملفات .torrent للتنزيلات المنتهية إلى: - + Pre-allocate disk space for all files تخصيص مسبق لمساحة القرص لجميع الملفات - + Use custom UI Theme استخدم سمة واجهة مستخدم مخصصة - + UI Theme file: ملف سمة واجهة المستخدم الرسومية: - + Changing Interface settings requires application restart يتطلب تغيير إعدادات الواجهة إعادة تشغيل التطبيق - + Shows a confirmation dialog upon torrent deletion عرض مربع حوار لتأكيد حذف التورنت - - + + Preview file, otherwise open destination folder معاينة الملف، وإلا افتح مجلد الوجهة - - Show torrent options - عرض خيارات التورنت + عرض خيارات التورنت - + Shows a confirmation dialog when exiting with active torrents عرض مربع حوار لتأكيد الخروج عند وجود تورنتات نشطة - + When minimizing, the main window is closed and must be reopened from the systray icon عند التصغير، يتم إغلاق النافذة الرئيسية ويجب إعادة فتحها من جوار الساعة - + The systray icon will still be visible when closing the main window ستظل أيقونة البرنامج بجوار الساعة عند إغلاق النافذة الرئيسية - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window أغلق كيوبت‎تورنت إلى جوار الساعة - + Monochrome (for dark theme) أحادي اللون (للمظهر الداكن) - + Monochrome (for light theme) أحادي اللون (للمظهر الفاتح) - + Inhibit system sleep when torrents are downloading منع النظام من السُبات عند تنزيل ملفات التورنت - + Inhibit system sleep when torrents are seeding منع النظام من السُبات عندما يتم بذر التورنتات - + Creates an additional log file after the log file reaches the specified file size إنشاء ملف سجل إضافي بعد أن يصل ملف السجل إلى حجم الملف المحدد - + days Delete backup logs older than 10 days أيام - + months Delete backup logs older than 10 months شهور - + years Delete backup logs older than 10 years أعوام - + Log performance warnings سجل تحذيرات الأداء - The torrent will be added to download list in a paused state - ستتم إضافة التورنت إلى قائمة التنزيل في حالة الإيقاف المؤقت + ستتم إضافة التورنت إلى قائمة التنزيل في حالة الإيقاف المؤقت - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state عدم بدء التنزيل بشكل تلقائي - + Whether the .torrent file should be deleted after adding it ما إذا كان يجب حذف ملف .torrent بعد إضافته - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. تخصيص أحجام الملفات الكاملة على القرص قبل بدء التنزيلات لتقليل التجزئة. مفيد فقط لمحركات الأقراص الصلبة. - + Append .!qB extension to incomplete files إضافة امتداد !qB. للملفات غير المنتهية - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it عند تنزيل ملف تورنت ، اعرض إضافة التورنتات من أي ملفات .torrent موجودة بداخله - + Enable recursive download dialog تفعيل مربع حوار التنزيل المتكرر - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually تلقائي: سيتم تحديد خصائص التورنت المختلفة (مثل مسار الحفظ) من خلال الفئة المرتبطة يدوي: يجب تعيين خصائص التورنت المختلفة (مثل مسار الحفظ) يدويًا - + When Default Save/Incomplete Path changed: عند تغيير مسار الحفظ/غير الكامل الافتراضي: - + When Category Save Path changed: عند تغيير مسار حفظ الفئة: - + Use Category paths in Manual Mode استخدم مسارات الفئات في الوضع اليدوي - + Resolve relative Save Path against appropriate Category path instead of Default one حل مسار الحفظ النسبي مقابل مسار الفئة المناسب بدلاً من المسار الافتراضي - + Use icons from system theme استخدم الأيقونات من سمة النظام - + Window state on start up: حالة النافذة عند بدء التشغيل: - + qBittorrent window state on start up qBittorrent حالة النافذة عند بدء التشغيل - + Torrent stop condition: شرط توقف التورنت: - - + + None بدون - - + + Metadata received تم استلام البيانات الوصفية - - + + Files checked تم فحص الملف - + Ask for merging trackers when torrent is being added manually اطلب دمج المتتبعات عند إضافة التورنت يدويًا - + Use another path for incomplete torrents: استخدم مسارًا آخر للتورنتات غير المكتملة: - + Automatically add torrents from: إضافة التورنتات تلقائيًا من: - + Excluded file names أسماء الملفات المستبعدة - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6656,841 +6995,914 @@ readme.txt: تصفية اسم الملف الدقيق. الملف التمهيدي [0-9].txt: قم بتصفية "readme1.txt" و"readme2.txt" ولكن ليس "readme10.txt". - + Receiver المتلقي - + To: To receiver إلى: - + SMTP server: خادم SMTP: - + Sender مُرسل - + From: From sender من: - + This server requires a secure connection (SSL) يتطلب هذا الخادم اتصالًا آمنًا (SSL) - - + + Authentication المصادقة - - - - + + + + Username: اسم المستخدم: - - - - + + + + Password: كلمة المرور: - + Run external program تشغيل برنامج خارجي - Run on torrent added - التشغيل على التورنت مضافة + التشغيل على التورنت مضافة - Run on torrent finished - تشغيل على التورنت انتهى + تشغيل على التورنت انتهى - + Show console window عرض نافذة وحدة التحكم - + TCP and μTP TCP و μTP - + Listening Port منفذ الاستماع - + Port used for incoming connections: المنفذ المستخدم للاتصالات الواردة: - + Set to 0 to let your system pick an unused port قم بالتعيين إلى 0 للسماح للنظام الخاص بك باختيار منفذ غير مستخدم - + Random عشوائي - + Use UPnP / NAT-PMP port forwarding from my router استخدام UPnP / NAT-PMP لفتح المنافذ تلقائيا - + Connections Limits حدود الاتصالات - + Maximum number of connections per torrent: أقصى عدد من الاتصالات لكل تورنت: - + Global maximum number of connections: أقصى عدد من الاتصالات العامة: - + Maximum number of upload slots per torrent: أقصى عدد من فتحات الرفع لكل تورنت: - + Global maximum number of upload slots: أقصى عدد من فتحات الرفع العامة: - + Proxy Server خادم البروكسي - + Type: النوع: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: المضيف: - - - + + + Port: المنفذ: - + Otherwise, the proxy server is only used for tracker connections خلاف ذلك، خادم البروكسي سيستخدم على اتصالات المتتبعات فقط - + Use proxy for peer connections استخدام البروكسي على اتصالات القرناء - + A&uthentication المصادقة - + Info: The password is saved unencrypted معلومة: كلمة السر يتم حفظها بشكل غير مشفّر - + Filter path (.dat, .p2p, .p2b): مسار الفلتر (.dat, .p2p, .p2b): - + Reload the filter تحديث الفلاتر - + Manually banned IP addresses... عناوين الآي بي المحجوبة يدويًا ... - + Apply to trackers التطبيق على المتتبعات - + Global Rate Limits حدود المعدل العام - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s ك.بايت/ث - - + + Upload: الرفع: - - + + Download: التنزيل: - + Alternative Rate Limits حدود المعدل البديل - + Start time وقت البدء - + End time وقت النهاية - + When: عندما: - + Every day كل يوم - + Weekdays نهاية اليوم - + Weekends نهاية الأسبوع - + Rate Limits Settings إعدادات حدود المعدل - + Apply rate limit to peers on LAN تطبيق حد المعدل على القرناء الموجودين على الشبكة المحلية - + Apply rate limit to transport overhead تطبيق حد المعدل على النقل الزائد - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol تطبيق حد المعدل على بروتوكول µTP - + Privacy الخصوصية - + Enable DHT (decentralized network) to find more peers تفعيل DHT (الشبكة اللامركزية) للعثور على المزيد من القرناء - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) استبدال القرناء بعملاء بت تورنت متوافقين (µTorrent، Vuze، ...) - + Enable Peer Exchange (PeX) to find more peers تفعيل تبادل القرناء (PeX) للعثور على المزيد من الأقران - + Look for peers on your local network إيجاد القرناء على شبكتك المحلية - + Enable Local Peer Discovery to find more peers تفعيل اكتشاف القرناء المحليين للعثور على المزيد من الأقران - + Encryption mode: نمط التشفير: - + Require encryption طلب التشفير - + Disable encryption تعطيل التشفير - + Enable when using a proxy or a VPN connection تفعيل عند استخدام اتصال بروكسي أو VPN - + Enable anonymous mode تفعيل الوضع المجهول - + Maximum active downloads: أقصى عدد للتنزيلات النشطة: - + Maximum active uploads: أقصى عدد للمرفوعات النشطة: - + Maximum active torrents: أقصى عدد للتورنتات النشطة: - + Do not count slow torrents in these limits عدم حساب التورنتات البطيئة في هذه الحدود - + Upload rate threshold: حد معدل الرفع: - + Download rate threshold: حد معدل التنزيل: - - - + + + + sec seconds ث - + Torrent inactivity timer: مؤقت عدم نشاط التورنت: - + then ثم - + Use UPnP / NAT-PMP to forward the port from my router استخدام UPnP / NAT-PMP لفتح المنافذ تلقائيًا - + Certificate: الشهادة: - + Key: المفتاح: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>معلومات عن الشهادات</a> - + Change current password تغيير كلمة المرور الحالية - Use alternative Web UI - استخدم واجهة وِب رسومية بديلة + استخدم واجهة وِب رسومية بديلة - + Files location: مكان الملفات: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security الأمان - + Enable clickjacking protection تفعيل الحماية من الاختراق - + Enable Cross-Site Request Forgery (CSRF) protection تفعيل الحماية عبر الموقع لطلب التزوير (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation تفعيل التحقق من صحة رأس المضيف - + Add custom HTTP headers أضف رؤوس HTTP مخصصة - + Header: value pairs, one per line الرأس: أهمية مزدوجة، واحد لكل سطر - + Enable reverse proxy support تفعيل دعم البروكسي العكسي - + Trusted proxies list: قائمة البروكسي الموثوق بهم: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: الخدمة: - + Register تسجيل - + Domain name: اسم النطاق: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! من خلال تمكين هذه الخيارات ، يمكنك أن <strong>تفقد</strong> ملفات .torrent الخاصة بك بشكل نهائي! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog إذا قمت بتفعيل الخيار الثاني ("أيضًا عند إلغاء الإضافة") ، ملف torrent. <strong>سيتم حذفه</strong> حتى لو ضغطت على " <strong>إلغاء</strong> "في مربع حوار "إضافة تورنت" - + Select qBittorrent UI Theme file حدد ملف سمة واجهة مستخدم رسومية كيوبت‎تورنت - + Choose Alternative UI files location اختر موقع ملفات واجهة المستخدم البديلة - + Supported parameters (case sensitive): المعلمات المدعومة (حساس لحالة الأحرف): - + Minimized مصغر - + Hidden مخفي - + Disabled due to failed to detect system tray presence مُعطل بسبب الفشل في اكتشاف وجود علبة النظام (system tray) - + No stop condition is set. لم يتم وضع شرط للتوقف - + Torrent will stop after metadata is received. سيتوقف التورنت بعد استقبال البيانات الوصفية - - Torrents that have metadata initially aren't affected. - التورنت الذي يحتوي على بيانات وصفية ابتدائية لن يتأثر - - - + Torrent will stop after files are initially checked. سيتوقف التورنت بعد الملفات التي تم فحصحها - + This will also download metadata if it wasn't there initially. سيؤدي هذا أيضًا إلى تنزيل البيانات الوصفية إذا لم تكن موجودة في البداية. - + %N: Torrent name %N: اسم التورنت - + %L: Category %L: الفئة - + %F: Content path (same as root path for multifile torrent) %F: مسار المحتوى (نفس مسار الجذر لملفات التورنت المتعددة) - + %R: Root path (first torrent subdirectory path) %R: مسار الجذر (مسار الدليل الفرعي الأول للتورنت) - + %D: Save path %D: مسار الحفظ - + %C: Number of files %C: عدد الملفات - + %Z: Torrent size (bytes) %Z: حجم التونت (بالبايتات) - + %T: Current tracker %T: المتتبع الحالي - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") نصيحة: غلف المعلمات بعلامات اقتباس لتجنب قطع النص عند مسافة بيضاء (على سبيل المثال، "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (لا شيء) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds سيتم اعتبار التورنت بطيئًا إذا ظلت معدلات التنزيل والتحميل أقل من هذه القيم لثواني "مؤقت عدم نشاط التورنت" - + Certificate الشهادة - + Select certificate حدد الشهادة - + Private key المفتاح الخاص - + Select private key حدد المفتاح الخاص - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor حدد المجلد المراد مراقبته - + Adding entry failed فشل إضافة الإدخال - - Location Error - خطأ في المكان + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - لا يمكن ترك موقع ملفات واجهة الوِب الرسومية البديلة فارغًا. + + Location Error + خطأ في المكان - - + + Choose export directory اختر مكان التصدير - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well عندما يتم تفعيل هذه الخيارات، سيقوم كيوبت‎تورنت <strong>بحذف</strong> ملفات torrent. بعد إضافتها بنجاح (الخيار الأول) أو عدم إضافتها (الخيار الثاني) إلى قائمة انتظار التنزيل الخاصة به. سيتم تطبيق هذا<strong>ليس فقط</strong> إلى الملفات التي تم فتحها عبر إجراء قائمة "إضافة تورنت" ولكن لتلك التي تم فتحها عبر <strong>اقتران نوع الملف</strong> كذلك - + qBittorrent UI Theme file (*.qbtheme config.json) ملف سمة واجهة رسومية كيوبت‎تورنت (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: وسوم (مفصولة بفاصلة) - + %I: Info hash v1 (or '-' if unavailable) %I: معلومات التحقق من البيانات (الهاش) الإصدار 1 (أو '-' إذا لم تكن متوفرة) - + %J: Info hash v2 (or '-' if unavailable) %J: معلومات التحقق من البيانات (الهاش) الإصدار 2 (أو '-' إذا لم تكن متوفرة) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: معرف التورنت (إما تجزئة معلومات sha-1 للإصدار 1 للتورنت أو تجزئة معلومات sha-256 المقطوعة للإصدار 2 / التورنت المختلط) - - - + + + Choose a save directory اختر مكان الحفظ - + + Torrents that have metadata initially will be added as stopped. + ستتم إضافة التورينت التي تحتوي على بيانات وصفية في البداية على أنها متوقفة. + + + Choose an IP filter file اختر ملف تصفية آي بي - + All supported filters جميع التصفيات المدعومة - + + The alternative WebUI files location cannot be blank. + + + + Parsing error خطأ تحليل - + Failed to parse the provided IP filter فشل تحليل عامل تصفية آي بي المقدم - + Successfully refreshed تم التحديث بنجاح - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number تم تحليل عامل تصفية الآي بي المقدم بنجاح: تم تطبيق %1 قواعد. - + Preferences التفضيلات - + Time Error خطأ في الوقت - + The start time and the end time can't be the same. لا يمكن أن يكون وقت البدء مطابق لوقت الانتهاء. - - + + Length Error خطأ في الطول - - - The Web UI username must be at least 3 characters long. - اسم المستخدم في واجهة الوِب الرسومية يجب ان يحتوي على 3 احرف على الأقل. - - - - The Web UI password must be at least 6 characters long. - كلمة السر في واجهة الوِب الرسومية يجب أن تحتوي على 6 أحرف على الأقل. - PeerInfo - + Unknown غير معروف - + Interested (local) and choked (peer) مهتم (محلي) ومختنق (قرين) - + Interested (local) and unchoked (peer) مهتم (محلي) وغير مختنق (قرين) - + Interested (peer) and choked (local) مهتم (قرين) وغير مختنق (محلي) - + Interested (peer) and unchoked (local) مهتم (قرين) وغير مختنق (محلي) - + Not interested (local) and unchoked (peer) غير مهتم (محلي) وغير مختنق (قرين) - + Not interested (peer) and unchoked (local) غير مهتم (قرين) وغير مختنق (محلي) - + Optimistic unchoke متفائل غير مختنق - + Peer snubbed تجاهل القرين - + Incoming connection الاتصالات الواردة - + Peer from DHT قرين من DHT - + Peer from PEX قرين من PEX - + Peer from LSD قرين من LSD - + Encrypted traffic حركة مرور مشفرة - + Encrypted handshake مصافحة مشفرة + + + Peer is using NAT hole punching + + PeerListWidget @@ -7646,7 +8058,7 @@ readme.txt: تصفية اسم الملف الدقيق. تم حظر القرين "%1" يدويًا - + N/A لا يوجد @@ -7669,7 +8081,7 @@ readme.txt: تصفية اسم الملف الدقيق. قائمة القرناء المراد إضافتهم (عنوان آي بي واحد لكل سطر): - + Format: IPv4:port / [IPv6]:port التنسيق: IPv4: المنفذ / [IPv6]: المنفذ @@ -7710,27 +8122,27 @@ readme.txt: تصفية اسم الملف الدقيق. PiecesBar - + Files in this piece: الملفات في هذا الجزء: - + File in this piece: الملف في هذه القطعة: - + File in these pieces: الملف في هذه القطع: - + Wait until metadata become available to see detailed information انتظر حتى تصبح البيانات الوصفية متاحة لرؤية المعلومات التفصيلية - + Hold Shift key for detailed information اضغط مع الاستمرار على مفتاح Shift للحصول على معلومات مفصلة @@ -7743,58 +8155,58 @@ readme.txt: تصفية اسم الملف الدقيق. ملحقات البحث - + Installed search plugins: ملحقات البحث المثبتة: - + Name الاسم - + Version الإصدار - + Url الرابط - - + + Enabled مُفعّل - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. تحذير: تأكد من الامتثال لقوانين حقوق الطبع والنشر في بلدك عند تنزيل التورنت من أي من محركات البحث هذه. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> يمكنك الحصول على المكونات الإضافية الجديدة لمحرك البحث هنا: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one تثبيت واحد جديد - + Check for updates تحقق من وجود تحديثات - + Close أغلق - + Uninstall إلغاء التثبيت @@ -7914,17 +8326,17 @@ Those plugins were disabled. مصدر الملحقة - + Search plugin source: مصدر ملحق البحث: - + Local file ملف محلي - + Web link رابط موقع @@ -7965,47 +8377,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: الملفات التالية من التورنت "%1" تدعم المعاينة ، يرجى تحديد واحد منهم: - + Preview الاستعراض - + Name الاسم - + Size الحجم - + Progress التقدّم - + Preview impossible لايمكن الاستعراض - + Sorry, we can't preview this file: "%1". عذرًا ، لا يمكننا معاينة هذا الملف: "%1". - + Resize columns تغيير حجم الأعمدة - + Resize all non-hidden columns to the size of their contents قم بتغيير حجم جميع الأعمدة غير المخفية إلى حجم محتوياتها @@ -8018,27 +8430,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist المسار غير موجود - + Path does not point to a directory المسار لا يشير إلى الدليل - + Path does not point to a file المسار لا يشير إلى ملف - + Don't have read permission to path ليس لديك إذن القراءة للمسار - + Don't have write permission to path ليس لديك إذن الكتابة إلى المسار @@ -8079,12 +8491,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: تم تنزيل: - + Availability: التوافر: @@ -8099,53 +8511,53 @@ Those plugins were disabled. النقل - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) فترة النشاط - + ETA: الوقت المتبقي: - + Uploaded: تم رفع: - + Seeds: البذور: - + Download Speed: سرعة التنزيل: - + Upload Speed: سرعة الرفع: - + Peers: القرناء: - + Download Limit: حد التنزيل: - + Upload Limit: حد الرفع: - + Wasted: تم تضييع: @@ -8155,193 +8567,249 @@ Those plugins were disabled. الاتصالات: - + Information المعلومات - + Info Hash v1: معلومات التحقق من البيانات (الهاش) الإصدار 1: - + Info Hash v2: معلومات التحقق من البيانات (الهاش) الإصدار 2: - + Comment: التعليق: - + Select All اختيار الكل - + Select None اختيار لا شئ - + Share Ratio: نسبة المشاركة: - + Reannounce In: إعادة الإعلان خلال: - + Last Seen Complete: آخر إكمال شوهِد في: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: إجمالي الحجم: - + Pieces: القطع: - + Created By: أنشئ باستخدام: - + Added On: تاريخ الإضافة: - + Completed On: تاريخ الاكتمال: - + Created On: تاريخ الإنشاء: - + + Private: + + + + Save Path: مسار الحفظ: - + Never أبدًا - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (لديك %3) - - + + %1 (%2 this session) %1 (%2 هذه الجلسة) - - + + + N/A غير متاح - + + Yes + نعم + + + + No + لا + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (بذرت لـ %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 كحد أقصى) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (من إجمالي %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (بمعدّل %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - رابط للقرين عبر الويب + رابط للقرين عبر الويب - Remove Web seed - ازالة رابط القرين عبر الويب + ازالة رابط القرين عبر الويب - Copy Web seed URL - نسخ رابط القرين عبر الويب + نسخ رابط القرين عبر الويب - Edit Web seed URL - تعديل رابط القرين عبر الويب + تعديل رابط القرين عبر الويب - + Filter files... تصفية الملفات... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled تم تعطيل الرسوم البيانية للسرعة - + You can enable it in Advanced Options يمكنك تفعيله في الخيارات المتقدمة - New URL seed New HTTP source - URL بذر جديد + URL بذر جديد - New URL seed: - URL بذر جديد: + URL بذر جديد: - - This URL seed is already in the list. - URL البذر هذا موجود بالفعل في القائمة. + URL البذر هذا موجود بالفعل في القائمة. - + Web seed editing تعديل القرين عبر الويب - + Web seed URL: رابط القرين عبر الويب: @@ -8360,22 +8828,22 @@ Those plugins were disabled. تعذر حفظ بيانات التنزيل التلقائي لـ RSS في %1. خطأ: %2 - + Invalid data format تنسيق البيانات غير صالح - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... تم قبول مقالة RSS '%1' بواسطة القاعدة '%2'. جارِ محاولة إضافة تورنت... - + Failed to read RSS AutoDownloader rules. %1 فشل في قراءة قواعد RSS AutoDownloader %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 تعذر تحميل قواعد التنزيل التلقائي لـ RSS. السبب: %1 @@ -8383,22 +8851,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 فشل تحميل موجز RSS في '%1'. السبب: %2 - + RSS feed at '%1' updated. Added %2 new articles. تم تحديث موجز RSS في '%1'. تمت إضافة %2 مقالة جديدة. - + Failed to parse RSS feed at '%1'. Reason: %2 فشل تحليل موجز RSS في '%1'. السبب: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. تم تحميل موجز RSS في '%1' بنجاح. البدء في تحليلها. @@ -8434,12 +8902,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. موجز RSS غير صالح. - + %1 (line: %2, column: %3, offset: %4). %1 (السطر: %2, عمود: %3, الإزاحة: %4). @@ -8447,99 +8915,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" تعذر حفظ تضبيط جلسة RSS. الملف: "%1". خطأ: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" تعذر حفظ بيانات جلسة RSS. الملف: "%1". خطأ: "%2" - - + + RSS feed with given URL already exists: %1. موجز RSS بالرابط المحدد موجود بالفعل: %1. - + Feed doesn't exist: %1. الموجز غير موجود: %1. - + Cannot move root folder. لا يمكن نقل المجلد الجذر. - - + + Item doesn't exist: %1. العنصر غير موجود: %1. - + Couldn't move folder into itself. تعذر نقل المجلد إلى نفسه. - + Cannot delete root folder. لا يمكن حذف المجلد الجذر. - + Failed to read RSS session data. %1 فشل في قراءة بيانات جلسة RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" فشل في تحليل بيانات جلسة RSS. الملف: "%1". خطأ: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." فشل تحميل بيانات جلسة RSS. الملف: "%1". خطأ: "تنسيق البيانات غير صالح." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. تعذر تحميل موجز RSS. موجز: "%1". السبب: عنوان URL مطلوب. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. تعذر تحميل موجز RSS. موجز: "%1". السبب: UID غير صالح. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. تم العثور على موجز RSS مكرر .UID المعرف الفريد : "%1". خطأ: يبدو أن التضبيط تالف. - + Couldn't load RSS item. Item: "%1". Invalid data format. تعذر تحميل عنصر RSS. البند 1". تنسيق البيانات غير صالح. - + Corrupted RSS list, not loading it. قائمة RSS تالفة، ولا يتم تحميلها. - + Incorrect RSS Item path: %1. مسار عنصر RSS غير صحيح: %1. - + RSS item with given path already exists: %1. عنصر RSS بالمسار المحدد موجود بالفعل: %1. - + Parent folder doesn't exist: %1. المجلد الأصلي غير موجود: %1. @@ -8563,8 +9031,8 @@ Those plugins were disabled. - - + + Mark items read ميّزة العناصر كمقروءة @@ -8589,132 +9057,132 @@ Those plugins were disabled. التورنتات: (انقر مزدوجًا للتنزيل) - - + + Delete حذف - + Rename... إعادة التسمية... - + Rename إعادة التسمية - - + + Update تحديث - + New subscription... اشتراك جديد... - - + + Update all feeds تحديث جميع المواجز - + Download torrent تنزيل التورنت - + Open news URL افتح URL الأخبار - + Copy feed URL نسخ رابط الموجز - + New folder... مجلد جديد... - + Edit feed URL... تحرير رابط الموجز... - + Edit feed URL تحرير رابط الموجز - + Please choose a folder name يرجى اختيار اسم المجلد - + Folder name: اسم المجلد: - + New folder مجلد جديد - - + + Please type a RSS feed URL يرجى كتابة رابط موجز RSS - - + + Feed URL: رابط الموجز: - + Deletion confirmation تأكيد الحذف - + Are you sure you want to delete the selected RSS feeds? هل أنت متأكد من رغبتك في حذف موجز RSS المحددة؟ - + Please choose a new name for this RSS feed يرجى اختيار اسمًا جديدًا لهذا موجز RSS - + New feed name: اسم الموجز الجديد: - + Rename failed فشل إعادة التسمية - + Date: التاريخ: - + Feed: - + Author: المؤلف: @@ -8722,38 +9190,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - يجب تثبيت بيثون (Python) لاستخدام محرك البحث. + يجب تثبيت "بيثون" لاستخدام محرك البحث. - + Unable to create more than %1 concurrent searches. تعذر إنشاء أكثر من %1 عملية بحث متزامنة. - - + + Offset is out of range الإزاحة خارج النطاق - + All plugins are already up to date. جميع الملحقات محدّثة. - + Updating %1 plugins تحديث %1 ملحقات - + Updating plugin %1 تحديث ملحق %1 - + Failed to check for plugin updates: %1 فشل البحث عن تحديثات الملحقات: %1 @@ -8828,132 +9296,146 @@ Those plugins were disabled. الحجم: - + Name i.e: file name الاسم - + Size i.e: file size الحجم - + Seeders i.e: Number of full sources الباذرون - + Leechers i.e: Number of partial sources المحمِّلون - Search engine - محرّك البحث + محرّك البحث - + Filter search results... تصفية نتائج البحث... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results النتائج (يظهر %1 من إجمالي %2): - + Torrent names only أسماء التورنتات فقط - + Everywhere في كل مكان - + Use regular expressions استخدام التعبيرات العادية - + Open download window افتح نافذة التنزيل - + Download تنزيل - + Open description page افتح صفحة الوصف - + Copy نسخ - + Name الاسم - + Download link رابط التنزيل - + Description page URL URL صفحة الوصف - + Searching... يبحث... - + Search has finished انتهى البحث - + Search aborted تم إلغاء البحث - + An error occurred during search... حدث خطأ أثناء البحث... - + Search returned no results البحث لم يسفر عن أي نتائج - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility وضوح العامود - + Resize columns تغيير حجم الأعمدة - + Resize all non-hidden columns to the size of their contents قم بتغيير حجم جميع الأعمدة غير المخفية إلى حجم محتوياتها @@ -8961,104 +9443,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. تنسيق ملحق محرك البحث غير معروف. - + Plugin already at version %1, which is greater than %2 الملحق موجود بالفعل في الإصدار %1، وهو أكبر من %2 - + A more recent version of this plugin is already installed. تم بالفعل تثبيت إصدار أحدث من هذا الملحق. - + Plugin %1 is not supported. الملحقة %1 غير مدعومة. - - + + Plugin is not supported. المُلحقة غير مدعومة. - + Plugin %1 has been successfully updated. تم تحديث المُلحقة %1 بنجاح. - + All categories كل الفئات - + Movies أفلام - + TV shows برامج تلفزيونية - + Music موسيقى - + Games ألعاب - + Anime رسوم متحركة - + Software برمجيات - + Pictures صور - + Books كتب - + Update server is temporarily unavailable. %1 خادوم التحديث غير متاح مؤقتا. %1 - - + + Failed to download the plugin file. %1 فشل في تنزيل ملف المُلحقة. %1 - + Plugin "%1" is outdated, updating to version %2 الملحق "%1" قديم ، ويتم التحديث إلى الإصدار %2 - + Incorrect update info received for %1 out of %2 plugins. تلقي معلومات تحديث غير صحيحة لـ %1 من %2 ملحق. - + Search plugin '%1' contains invalid version string ('%2') يحتوي ملحق البحث '%1' على سلسلة إصدار غير صالح ('%2') @@ -9068,114 +9550,153 @@ Those plugins were disabled. - - - - Search البحث - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. لا توجد أي مُلحقات بحث مثبتة. انقر فوق زر "مُلحقات البحث..." في الجزء السفلي الأيسر من النافذة لتثبيت البعض. - + Search plugins... مُلحقات البحث... - + A phrase to search for. عبارة للبحث عنها. - + Spaces in a search term may be protected by double quotes. يمكن حماية المسافات في مصطلح البحث بعلامات اقتباس مزدوجة. - + Example: Search phrase example المثال: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>"السلام عليكم"</b>: يبحث عن<b>السلام عليكم</b> - + All plugins جميع الملحقات - + Only enabled المُفعلة فقط - + + + Invalid data format. + تنسيق البيانات غير صالح. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>السلام عليكم</b>: يبحث عن<b>السلام</b>و<b>عليكم</b> - + + Refresh + + + + Close tab إغلاق علامة التبويب - + Close all tabs أغلق كل علامات التبويب - + Select... اختر... - - - + + Search Engine مُحرك البحث - + + Please install Python to use the Search Engine. برجاء تثبيت Python لاستخدام محرك البحث. - + Empty search pattern نمط البحث فارغ - + Please type a search pattern first الرجاء كتابة نمط البحث اولا - + + Stop أوقف - Search has finished - اكتمل البحث + اكتمل البحث - Search has failed - فشلت عملية البحث + فشلت عملية البحث + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9183,22 +9704,22 @@ Click the "Search plugins..." button at the bottom right of the window Detected unclean program exit. Using fallback file to restore settings: %1 - تم الكشف عن خروج برنامج غير نظيف. استخدام الملف الاحتياطي لاستعادة الإعدادات: %1 + تم اكتشاف خروج غير سليم للبرنامج. استخدام الملف الاحتياطي لاستعادة الإعدادات: %1 An access error occurred while trying to write the configuration file. - حدث خطأ في الوصول أثناء محاولة كتابة ملف التكوين. + حدث خطأ في الوصول أثناء محاولة كتابة ملف الإعدادات. A format error occurred while trying to write the configuration file. - حدث خطأ في التنسيق أثناء محاولة كتابة ملف التضبيط. + حدث خطأ في التنسيق أثناء محاولة كتابة ملف الإعدادات. An unknown error occurred while trying to write the configuration file. - حدث خطأ غير معروف أثناء محاولة كتابة ملف التضبيط. + حدث خطأ غير معروف أثناء محاولة كتابة ملف الإعدادات. @@ -9288,34 +9809,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: الرفع: - - - + + + - - - + + + KiB/s ك.ب/ث - - + + Download: التنزيل: - + Alternative speed limits حدود السرعة البديلة @@ -9507,32 +10028,32 @@ Click the "Search plugins..." button at the bottom right of the window متوسط الوقت في الصف: - + Connected peers: القرناء المتصلون: - + All-time share ratio: إجمالي نسبة المشاركة كل الوقت: - + All-time download: إجمالي التنزيل كل الوقت: - + Session waste: هدر الجلسة: - + All-time upload: إجمالي الرفع كل الوقت: - + Total buffer size: إجمالي حجم التخزين المؤقت: @@ -9547,12 +10068,12 @@ Click the "Search plugins..." button at the bottom right of the window وظائف الإدخال/الإخراج في الصف: - + Write cache overload: مخبأة الكتابة الزائدة: - + Read cache overload: مخبأة القراءة الزائدة: @@ -9571,51 +10092,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: حالة الاتصال: - - + + No direct connections. This may indicate network configuration problems. لا اتصالات مباشرة. قد يشير هذا إلى وجود مشاكل في إعداد الشبكة. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodes - + qBittorrent needs to be restarted! يحتاج كيوبت‎تورنت لإعادة تشغيله! - - - + + + Connection Status: حالة الاتصال: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. غير متصل. قد تعود المشكلة إلى فشل البرنامج في الاستماع إلى المنفذ المختار للاتصالات القادمة. - + Online متصل - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits انقر للتبديل إلى حدود السرعات البديلة - + Click to switch to regular speed limits انقر للتبديل إلى حدود السرعات العادية @@ -9644,14 +10181,22 @@ Click the "Search plugins..." button at the bottom right of the window المكتمل (0) - Resumed (0) - المُستأنف (0) + المُستأنف (0) - Paused (0) - المُلبث (0) + المُلبث (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9713,10 +10258,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) المُكتمل (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - المُلبث (%1) + المُلبث (%1) @@ -9724,14 +10288,12 @@ Click the "Search plugins..." button at the bottom right of the window نقل (%1) - Resume torrents - استئناف التورنتات + استئناف التورنتات - Pause torrents - إلباث التورنتات + إلباث التورنتات @@ -9739,9 +10301,8 @@ Click the "Search plugins..." button at the bottom right of the window إزالة التورنت - Resumed (%1) - المُستأنف (%1) + المُستأنف (%1) @@ -9782,17 +10343,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags الوسوم - + All الكل - + Untagged غير موسوم @@ -9800,52 +10361,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... إضافة وسم... - + Remove tag إزالة الوسم - + Remove unused tags إزالة الوسوم غير المستخدمة - Resume torrents - استئناف التورنتات + استئناف التورنتات - Pause torrents - إلباث التورنتات + إلباث التورنتات - + Remove torrents إزالة التورنت - New Tag - وسم جديد + وسم جديد + + + + Start torrents + + + + + Stop torrents + - + Tag: الوسم: - + + Add tag + + + + Invalid tag name اسم وسم غير سليم - + Tag name '%1' is invalid اسم الوسم '%1' غير صالح @@ -9875,7 +10448,7 @@ Click the "Search plugins..." button at the bottom right of the window Save path for incomplete torrents: - حفظ المسار للتورنتات غير المكتملة: + حفظ مسار التورنتات غير المكتملة: @@ -9925,7 +10498,7 @@ Click the "Search plugins..." button at the bottom right of the window Invalid category name - اسم الفئة غير صالحة + اسم الفئة غير صالح @@ -9985,32 +10558,32 @@ Please choose a different name and try again. TorrentContentModel - + Name الاسم - + Progress التقدّم - + Download Priority أولوية التنزيل - + Remaining إعادة التسمية - + Availability التوافر - + Total Size الحجم الكلي @@ -10055,102 +10628,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error خطأ في إعادة التسمية - + Renaming إعادة التسمية - + New name: الاسم الجديد: - + Column visibility وضوح الصفوف - + Resize columns تغيير حجم الأعمدة - + Resize all non-hidden columns to the size of their contents قم بتغيير حجم جميع الأعمدة غير المخفية إلى حجم محتوياتها - + Open فتح - + Open containing folder افتح محتوى الملف - + Rename... إعادة التسمية... - + Priority الأولوية - - + + Do not download لا تنزّل - + Normal عادي - + High مرتفع - + Maximum الحد الأقصى - + By shown file order حسب ترتيب الملف الموضح - + Normal priority الأولوية العادية - + High priority ذا أهيمة عليا - + Maximum priority الأولوية القصوى - + Priority by shown file order الأولوية حسب ترتيب الملف المعروض + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10175,13 +10766,13 @@ Please choose a different name and try again. - + Select file اختر ملفا - + Select folder اختر مجلدا @@ -10206,58 +10797,10 @@ Please choose a different name and try again. حجم القطعة: - + Auto تلقائي - - 16 KiB - 16 ك.ب - - - 32 KiB - 32 ك.ب - - - 64 KiB - 64 ك.ب - - - 128 KiB - 128 ك.ب - - - 256 KiB - 256 ك.ب - - - 512 KiB - 512 ك.ب - - - 1 MiB - 1 م.ب - - - 2 MiB - 2 م.ب - - - 4 MiB - 4 م.ب - - - 8 MiB - 8 م.ب - - - 16 MiB - 16 م.ب - - - 32 MiB - 32 م.ب - Calculate number of pieces: @@ -10304,92 +10847,83 @@ Please choose a different name and try again. الحقول - + You can separate tracker tiers / groups with an empty line. يمكنك فصل طبقات/مجموعات المتتبعات بسطر فارغ. - + Web seed URLs: روابط وِب البذر: - + Tracker URLs: روابط المتتبعات: - + Comments: التعليقات: - + Source: المصدر: - + Progress: التقدم: - + Create Torrent إنشاء التورنت - - + + Torrent creation failed فشل إنشاء التورنت - + Reason: Path to file/folder is not readable. السبب: مسار الملف أو المجلد غير قابل للقراءة. - + Select where to save the new torrent حدد مكان حفظ التورنت الجديد - + Torrent Files (*.torrent) ملفات التورنت (torrent.*) - - Reason: %1 - السبب: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - السبب: التورنت الذي تم إنشائه غير صالح. لن يُضاف إلى قائمة التنزيل. + فشل إضافة تورنت - + Torrent creator مُنشئ التورنت - + Torrent created: التورنت المُنشئ: @@ -10397,32 +10931,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 فشل تحميل تضبيط المجلدات المراقبة. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" فشل تحليل تضبيط المجلدات المراقبة من %1. خطأ: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." فشل تحميل تكوين المجلدات المراقبة من %1. خطأ: "تنسيق البيانات غير صالح." - + Couldn't store Watched Folders configuration to %1. Error: %2 تعذر تخزين تضبيط "المجلدات المراقبة" إلى %1. خطأ: %2 - + Watched folder Path cannot be empty. لا يمكن أن يكون مسار المجلد المراقب فارغًا. - + Watched folder Path cannot be relative. لا يمكن أن يكون مسار المجلد المراقب نسبيًا. @@ -10430,27 +10964,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 ملف المغناطيس كبير جدًا. الملف: %1 - + Failed to open magnet file: %1 فشل فتح ملف المغناطيس: %1 - + Rejecting failed torrent file: %1 رفض ملف التورنت الفاشل: %1 - + Watching folder: "%1" مراقبة مجلد: "%1" @@ -10458,14 +10992,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - فشل في تخصيص الذاكرة عند قراءة الملف. الملف: "%1". خطأ: "%2" + فشل في تخصيص الذاكرة عند قراءة الملف. الملف: "%1". خطأ: "%2" - Invalid metadata - بيانات وصفية خاطئة + بيانات وصفية خاطئة @@ -10496,279 +11028,374 @@ Please choose a different name and try again. استخدم مسارًا آخر للتورنت غير المكتمل - + Category: الفئة: - + + Torrent Share Limits + + + Torrent speed limits - حدود سرعة التورنت + حدود سرعة التورنت - + Download: التنزيل: - - + + - - + + Torrent Speed Limits + + + + + KiB/s ك.بايت/ث - + These will not exceed the global limits هذه لن تتجاوز الحدود العامة - + Upload: الرفع: - Torrent share limits - حدود مشاركة التورنت + حدود مشاركة التورنت - Use global share limit - استخدام حد المشاركة العامة + استخدام حد المشاركة العامة - Set no share limit - تعيين بدون حد مشاركة + تعيين بدون حد مشاركة - Set share limit to - تعيين حد المشاركة إلى + تعيين حد المشاركة إلى - ratio - النسبة + النسبة - total minutes - إجمالي الدقائق + إجمالي الدقائق - inactive minutes - دقائق غير نشطة + دقائق غير نشطة - + Disable DHT for this torrent تعطيل DHT لهذا التورنت - + Download in sequential order تنزيل بترتيب تسلسلي - + Disable PeX for this torrent تعطيل PeX لهذا التورنت - + Download first and last pieces first تنزيل أول وآخر قطعة أولًا - + Disable LSD for this torrent تعطيل LSD لهذا التورنت - + Currently used categories الفئات المستخدمة حاليا - - + + Choose save path اختر مسار الحفظ - + Not applicable to private torrents لا ينطبق على التورنتات الخاصة - No share limit method selected - لم يتم تحديد طريقة حد المشاركة + لم يتم تحديد طريقة حد المشاركة - Please select a limit method first - الرجاء تحديد طريقة الحد أولا + الرجاء تحديد طريقة الحد أولا - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - وسوم تورنت + + + + + Default + إهمال - - New Tag - وسم جديد + + + + Unlimited + - - Tag: - الوسم: + + + + Set to + - - Invalid tag name - اسم وسم غير سليم + + Seeding time: + - - Tag name '%1' is invalid. - وسم '%1' غير صالح. + + + + + + + min + minutes + د - - Tag exists - الوسم موجود + + Inactive seeding time: + - - Tag name already exists. - اسم الوسم موجود بالفعل. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - خطأ: ملف التورنت '%1' غير صالح. + + Stop torrent + - - Priority must be an integer - يجب أن تكون الأولوية عددًا صحيحًا + + Remove torrent + إزالة التورنت - - Priority is not valid - الأولوية غير صالحة + + Remove torrent and its content + - - Torrent's metadata has not yet downloaded - البيانات الوصفية للتورنت لم تنزل بعد + + Enable super seeding for torrent + تفعيل البذر الخارق للتورنت - - File IDs must be integers + + Ratio: + + + + + TorrentTagsDialog + + + Torrent Tags + وسوم تورنت + + + New Tag + وسم جديد + + + + Add tag + + + + + Tag: + الوسم: + + + + Invalid tag name + اسم وسم غير سليم + + + + Tag name '%1' is invalid. + وسم '%1' غير صالح. + + + + Tag exists + الوسم موجود + + + + Tag name already exists. + اسم الوسم موجود بالفعل. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + خطأ: ملف التورنت '%1' غير صالح. + + + + Priority must be an integer + يجب أن تكون الأولوية عددًا صحيحًا + + + + Priority is not valid + الأولوية غير صالحة + + + + Torrent's metadata has not yet downloaded + البيانات الوصفية للتورنت لم تنزل بعد + + + + File IDs must be integers يجب أن تكون معرفات الملفات أعدادًا صحيحة - + File ID is not valid معرف الملف غير صالح - - - - + + + + Torrent queueing must be enabled يجب تفعيل قائمة اصطفاف التورنت - - + + Save path cannot be empty مسار الحفظ لا يمكن أن يكون فارغا - - + + Cannot create target directory لا يمكن إنشاء الدليل الهدف - - + + Category cannot be empty لا يمكن أن يكون الفئة فارغة - + Unable to create category تعذّر إنشاء الفئة - + Unable to edit category تعذّر تعديل الفئة - + Unable to export torrent file. Error: %1 غير قادر على تصدير ملف تورنت. الخطأ: %1 - + Cannot make save path تعذّر إنشاء مسار الحفظ - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid معلمة "sort" غير صالح - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" ليس فهرس ملف صالح. - + Index %1 is out of bounds. الفهرس %1 خارج الحدود. - - + + Cannot write to directory تعذّر الكتابة إلى المجلد - + WebUI Set location: moving "%1", from "%2" to "%3" تعيين وجهة واجهة الوِب الرسومية: ينقل "%1" من "%2" إلى "%3" - + Incorrect torrent name اسم تورنت غير صحيح - - + + Incorrect category name اسم الفئة غير صحيحة @@ -10798,257 +11425,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - يعمل + يعمل - + Disabled - مُعطّل + مُعطّل - + Disabled for this torrent - معطل لهذا التورنت + معطل لهذا التورنت - + This torrent is private - هذا التورنت خاص + هذا التورنت خاص - + N/A - + لا يوجد - + Updating... - يُحدث... + يُحدّث... - + Not working - لا يعمل + لا يعمل - + Tracker error - + Unreachable - + Not contacted yet - لم يتصل بعد + لم يتصل بعد - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - مستوى + + BT Protocol + - - Protocol + + Next Announce - - Status - الحالة + + Min Announce + + + + + Tier + مستوى - Peers - القرناء + Status + الحالة - Seeds - البذور + Peers + القرناء - Leeches - المُحمّلِين + Seeds + البذور - Times Downloaded - مرات التنزيل + Leeches + المُحمّلِين - Message - الرسالة + Times Downloaded + مرات التنزيل - Next announce - - - - - Min announce - - - - - v%1 - + Message + الرسالة TrackerListWidget - Working - يعمل - - - Disabled - مُعطّل - - - Disabled for this torrent - معطل لهذا التورنت - - - + This torrent is private هذا التورنت خاص - Updating... - يُحدث... - - - Not working - لا يعمل - - - Not contacted yet - لم يتصل بعد - - - N/A - لا يوجد - - - + Tracker editing تعديل المتتبع - + Tracker URL: رابط المتتبع: - - + + Tracker editing failed فشل تعديل المتتبع - + The tracker URL entered is invalid. رابط المتتبع الذي أدخلته غير صالح. - + The tracker URL already exists. رابط المتتبع موجود بالفعل. - + Edit tracker URL... تعديل رابط المتتبع... - + Remove tracker إزالة المتتبع - + Copy tracker URL نسخ رابط المتتبع - + Force reannounce to selected trackers إجبار إعادة الإعلان للمتتبعات المحددة - + Force reannounce to all trackers إجبار إعادة الإعلان لجميع المتتبعات - Tier - مستوى - - - URL - الرابط - - - Status - الحالة - - - Seeds - البذور - - - Times Downloaded - مرات التنزيل - - - + Resize columns تغيير حجم الأعمدة - + Resize all non-hidden columns to the size of their contents قم بتغيير حجم جميع الأعمدة غير المخفية إلى حجم محتوياتها - Peers - القرناء - - - + Add trackers... إضافة متتبعات... - Leeches - المُحمّلِين - - - Message - الرسالة - - - + Column visibility وضوح العامود @@ -11066,37 +11627,37 @@ Please choose a different name and try again. قائمة المتتبعات المراد إضافتها (واحد لكل سطر): - + µTorrent compatible list URL: رابط قائمة يوتورنت المتوافقة: - + Download trackers list تحميل قائمة المتتبعات - + Add إضافة - + Trackers list URL error خطأ في عنوان URL لقائمة المتتبعات - + The trackers list URL cannot be empty لا يمكن أن يكون عنوان URL لقائمة المتتبعات فارغًا - + Download trackers list error تنزيل خطأ قائمة المتتبعات - + Error occurred when downloading the trackers list. Reason: "%1" حدث خطأ أثناء تنزيل قائمة المتتبعات. السبب: "%1" @@ -11104,87 +11665,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - الكل (0) - - - Trackerless (0) - بدون متتبعات (0) - - - Error (0) - خطأ (0) - - - Warning (0) - تحذير (0) - - - Trackerless - بدون متتبعات - - - Error (%1) - خطأ (%1) - - - + Warning (%1) تحذير (%1) - + Trackerless (%1) بدون متتبعات (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - إزالة المتتبع + إزالة المتتبع + + + + Start torrents + + + + + Stop torrents + - Resume torrents - استئناف التورنتات + استئناف التورنتات - Pause torrents - إلباث التورنتات + إلباث التورنتات - + Remove torrents إزالة التورنت - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter الكل (%1) @@ -11193,7 +11737,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument "الوضع": وسيطة غير صالحة @@ -11286,9 +11830,8 @@ Please choose a different name and try again. يتحقق من بيانات الاستئناف - Paused - مُلبث + مُلبث @@ -11313,220 +11856,262 @@ Please choose a different name and try again. خطأ - + Name i.e: torrent name الاسم - + Size i.e: torrent size الحجم - + Progress % Done التقدّم - Status Torrent status (e.g. downloading, seeding, paused) - الحالة + الحالة - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + الحالة + + + Seeds i.e. full sources (often untranslated) البذور - + Peers i.e. partial sources (often untranslated) القرناء - + Down Speed i.e: Download speed سرعة التنزيل - + Up Speed i.e: Upload speed سرعة الرفع - + Ratio Share ratio النسبة - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left الوقت المتبقي - + Category الفئة - + Tags الوسوم - + Added On Torrent was added to transfer list on 01/01/2010 08:00 أُضيف في - + Completed On Torrent was completed on 01/01/2010 08:00 أكتمل في - + Tracker المتتبع - + Down Limit i.e: Download limit حدّ التنزيل - + Up Limit i.e: Upload limit حدّ الرفع - + Downloaded Amount of data downloaded (e.g. in MB) تم تنزيله - + Uploaded Amount of data uploaded (e.g. in MB) رُفعت - + Session Download Amount of data downloaded since program open (e.g. in MB) تنزيل الجلسة - + Session Upload Amount of data uploaded since program open (e.g. in MB) رفع الجلسة - + Remaining Amount of data left to download (e.g. in MB) المتبقي - + + Time Active + Time (duration) the torrent is active (not stopped) + فترة النشاط + + + + Yes + نعم + + + + No + لا + + Time Active Time (duration) the torrent is active (not paused) - فترة النشاط + فترة النشاط - + Save Path Torrent save path حفظ المسار - + Incomplete Save Path Torrent incomplete save path مسار الحفظ غير مكتمل - + Completed Amount of data completed (e.g. in MB) تم تنزيل - + Ratio Limit Upload share ratio limit حد نسبة المشاركة - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole آخر إكمال شوهِد في - + Last Activity Time passed since a chunk was downloaded/uploaded آخر نشاط - + Total Size i.e. Size including unwanted data الحجم الكلي - + Availability The number of distributed copies of the torrent التوافر - + Info Hash v1 i.e: torrent info hash v1 تجزئة المعلومات v1 - + Info Hash v2 i.e: torrent info hash v2 تجزئة المعلومات v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A لا يوجد - + %1 ago e.g.: 1h 20m ago قبل %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (بذرت لـ %2) @@ -11535,334 +12120,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility وضوح الصفوف - + Recheck confirmation اعادة التأكد - + Are you sure you want to recheck the selected torrent(s)? هل أنت متأكد من رغبتك في اعادة التأكد من الملفات المختارة؟ - + Rename تغيير التسمية - + New name: الاسم الجديد: - + Choose save path اختر مسار الحفظ - Confirm pause - تأكيد الإيقاف المؤقت + تأكيد الإيقاف المؤقت - Would you like to pause all torrents? - هل ترغب في إيقاف جميع ملفات التورنت مؤقتًا؟ + هل ترغب في إيقاف جميع ملفات التورنت مؤقتًا؟ - Confirm resume - تأكيد الاستئناف + تأكيد الاستئناف - Would you like to resume all torrents? - هل ترغب في استئناف جميع ملفات التورنت؟ + هل ترغب في استئناف جميع ملفات التورنت؟ - + Unable to preview غير قادر على المعاينة - + The selected torrent "%1" does not contain previewable files لا يحتوي التورنت المحدد "%1" على ملفات قابلة للمعاينة - + Resize columns تغيير حجم الأعمدة - + Resize all non-hidden columns to the size of their contents قم بتغيير حجم جميع الأعمدة غير المخفية إلى حجم محتوياتها - + Enable automatic torrent management تفعيل الإدارة التلقائية للتورنت - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. هل أنت متأكد من أنك تريد تفعيل الإدارة التلقائية للتورنت المحدد؟ قد يتم نقلهم. - Add Tags - إضافة وسوم + إضافة وسوم - + Choose folder to save exported .torrent files اختر مجلدًا لحفظ ملفات torrent. المصدرة - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" فشل تصدير ملف .torrent. تورنت: "%1". حفظ المسار: "%2". السبب: "%3" - + A file with the same name already exists يوجد ملف بنفس الاسم بالفعل - + Export .torrent file error خطأ في تصدير ملف torrent. - + Remove All Tags إزالة جميع الوسوم - + Remove all tags from selected torrents? إزالة جميع الوسوم من التورنتات المُختارة؟ - + Comma-separated tags: وسوم مفصولة بفواصل: - + Invalid tag وسم غير صالح - + Tag name: '%1' is invalid اسم الوسم: '%1' غير صالح - &Resume Resume/start the torrent - ا&ستئناف + ا&ستئناف - &Pause Pause the torrent - إ&لباث + إ&لباث - Force Resu&me Force Resume/start the torrent - فرض الا&ستئناف + فرض الا&ستئناف - + Pre&view file... م&عاينة الملف... - + Torrent &options... &خيارات التورنت... - + Open destination &folder فتح وج&هة المجلد - + Move &up i.e. move up in the queue &حرّك لأعلى - + Move &down i.e. Move down in the queue حرّك لأس&فل - + Move to &top i.e. Move to top of the queue حرّك لأقمة - + Move to &bottom i.e. Move to bottom of the queue انتق&ل لأسفل - + Set loc&ation... تحديد المك&ان... - + Force rec&heck فرض إعا&دة التحقق - + Force r&eannounce فر&ض الإعلان - + &Magnet link &رابط المغناطيس - + Torrent &ID مع&رف التورنت - + + &Comment + + + + &Name ا&سم - + Info &hash v1 ت&جزئة المعلومات v1 - + Info h&ash v2 ت&جزئة المعلومات v2 - + Re&name... &غيّر الاسم - + Edit trac&kers... تحر&ير التتبع... - + E&xport .torrent... &تصدير .torrent... - + Categor&y ال&فئة - + &New... New category... جدي&د... - + &Reset Reset category إعادة ت&عيين - + Ta&gs الوس&وم - + &Add... Add / assign multiple tags... إ&ضافة... - + &Remove All Remove all tags إزالة الك&ل - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &صف - + &Copy ن&سخ - + Exported torrent is not necessarily the same as the imported التورنت المُصدَّر ليس بالضرورة نفس المستورد - + Download in sequential order تنزيل بترتيب تسلسلي - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. حدثت أخطاء عند تصدير ملفات .torrent. تحقق من سجل التنفيذ للحصول على التفاصيل. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &إزالة - + Download first and last pieces first تنزيل أول وآخر قطعة أولًا - + Automatic Torrent Management إدارة ذاتية للتورنت - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category الوضع التلقائي يعني أن العديد من خصائص التورنت (مثل مسار الحفظ) سيتم تحديده عن طريق الفئة المرتبطة بها - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - لا يمكن فرض إعادة الإعلان إذا كان التورنت متوقفًا مؤقتًا/في الصف/خطأ/جارٍ التحقق + لا يمكن فرض إعادة الإعلان إذا كان التورنت متوقفًا مؤقتًا/في الصف/خطأ/جارٍ التحقق - + Super seeding mode نمط البذر الخارق @@ -11907,28 +12516,28 @@ Please choose a different name and try again. معرف الأيقونة - + UI Theme Configuration. تضبيط سمة واجهة المستخدم - + The UI Theme changes could not be fully applied. The details can be found in the Log. لا يمكن تطبيق تغييرات سمة واجهة المستخدم بشكل كامل. يمكن العثور على التفاصيل في السجل. - + Couldn't save UI Theme configuration. Reason: %1 تعذر حفظ تضبيط سمة واجهة المستخدم. السبب: %1 - - + + Couldn't remove icon file. File: %1. لا يمكن إزالة ملف الأيقونة. الملف: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. لا يمكن نسخ ملف الأيقونة. المصدر: %1. الوجهة: %2. @@ -11936,7 +12545,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" فشل تحميل سمة الواجهة الرسومية من الملف: "%1" @@ -11967,34 +12581,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" فشل ترحيل التفضيلات: واجهة الوِب الرسومية https ، الملف: "%1"، الخطأ: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" التفضيلات التي تم ترحيلها: واجهة الوِب الرسومية https ، البيانات المصدرة إلى ملف: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". تم العثور على قيمة غير صالحة في ملف التكوين ، وإعادتها إلى الوضع الافتراضي. المفتاح: "%1". قيمة غير صالحة: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - تم العثور على بايثون، بالاسم التنفيذي: '%1'، والإصدار: '%2' - - - Python not detected - لم يُعثر على بايثون - Found Python executable. Name: "%1". Version: "%2" @@ -12029,27 +12636,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" خطأ في فتح الملف. الملف: "%1". خطأ: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 حجم الملف يتجاوز الحد. الملف: "%1". حجم الملف: %2. حد الحجم: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" خطأ في قراءة الملف. الملف: "%1". خطأ: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 عدم تطابق حجم القراءة . الملف: "%1". المتوقع: %2. الفعلي: %3 @@ -12113,72 +12720,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. تم تحديد اسم كعكات الجلسة غير المقبول: '%1'. يتم استخدام واحد افتراضي. - + Unacceptable file type, only regular file is allowed. نوع ملف غير مقبول، الملفات الاعتيادية فقط هي المسموح بها. - + Symlinks inside alternative UI folder are forbidden. الروابط الرمزية الموجودة داخل مجلد واجهة المستخدم البديلة ممنوعة. - - Using built-in Web UI. - استخدام واجهة الوِب الرسومية المدمجة. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - استخدام واجهة وِب رسومية مخصصة. الوجهة: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - نجح تحميل ترجمة واجهة الوِب الرسومية للإعدادات المحلية المحددة (%1). + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - تعذر تحميل ترجمة واجهة الوِب الرسومية للإعدادات المحلية المحددة (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" فاصل ':' مفقودة في رأس HTTP المخصص لواجهة الوِب الرسومية: "%1" - + Web server error. %1 خطأ في خادم الويب. %1 - + Web server error. Unknown error. خطأ في خادم الويب. خطأ غير معروف. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' واجهة الوِب الرسومية: رأس الأصل وعدم تطابق أصل الهدف! آي بي المصدر: '%1'. رأس الأصل: '%2'. أصل الهدف: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' واجهة الوِب الرسومية: رأس المُحيل وعدم تطابق أصل الهدف! آي بي المصدر: '%1'. رأس المُحيل: '%2'. أصل الهدف: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' واجهة الوِب الرسومية: رأس مضيف غير صالح، عدم تطابق المنفذ. طلب الآي بي المصدر: '%1'. منفذ الخادم: '%2'. رأس المضيف المتلقى: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' واجهة الوِب الرسومية: رأس مضيف غير صالح. طلب آي بي المصدر: '%1'. رأس المضيف المتلقى: '%2' @@ -12186,143 +12793,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - واجهة الوِب الرسومية: تم ​​إعداد HTTPS بنجاح + + Credentials are not set + + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - واجهة الوِب الرسومية: فشل إعداد HTTPS ، تم الرجوع إلى HTTP + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - واجهة الوِب الرسومية: يتم الآن الاستماع على الآي بي: %1 ، المنفذ: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - واجهة الوِب الرسومية: غير قادر على الارتباط بالآي بي : %1، المنفذ: %2. السبب: %3 + + Unknown error + خطأ غير معروف misc - + B bytes ب - + KiB kibibytes (1024 bytes) ك.ب - + MiB mebibytes (1024 kibibytes) م.ب - + GiB gibibytes (1024 mibibytes) ج.ب - + TiB tebibytes (1024 gibibytes) ت.ب - + PiB pebibytes (1024 tebibytes) ب.ب - + EiB exbibytes (1024 pebibytes) إ.ب - + /s per second - + %1s e.g: 10 seconds - %1د {1s?} + - + %1m e.g: 10 minutes - %1د + %1د - + %1h %2m e.g: 3 hours 5 minutes - %1س %2د + %1س %2د - + %1d %2h e.g: 2 days 10 hours - %1ي %2س + %1ي %2س - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1س %2د - - - %1d %2h - e.g: 2days 10hours - %1ي %2س - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) غير معروف - + qBittorrent will shutdown the computer now because all downloads are complete. سيتم إطفاء تشغيل الحاسوب الآن لأن جميع التنزيلات اكتملت. - + < 1m < 1 minute < د - - %1m - e.g: 10minutes - %1د - diff --git a/src/lang/qbittorrent_az@latin.ts b/src/lang/qbittorrent_az@latin.ts index d63405870730..ef5f119995b2 100644 --- a/src/lang/qbittorrent_az@latin.ts +++ b/src/lang/qbittorrent_az@latin.ts @@ -7,105 +7,110 @@ qBittorrent haqqında - + About Haqqında - + Authors Müəlliflər - + Current maintainer Cari tərtibatçı - + Greece Yunanıstan - - + + Nationality: Milliyət: - - + + E-mail: E-poçt: - - + + Name: Adı: - + Original author Orijinal müəllifi - + France Fransa - + Special Thanks Xüsusi təşəkkürlər - + Translators Tərcüməçilər - + License Lisenziya - + Software Used İstifadə olunan proqram təminatı - + qBittorrent was built with the following libraries: qBittorrent aşağıdakı kitabxanalar ilə hazılandı: - + + Copy to clipboard + Mübadilə yaddaşına kopyalayın + + + An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. Qt toolkit və libtorrent-rasterbar əsaslı, C++ ilə programlanmış inkişaf etmiş BitTorrent clienti. - - Copyright %1 2006-2023 The qBittorrent project - Müəllif Hüquqları: %1 2006-2023 qBittorrent layihəsi + + Copyright %1 2006-2024 The qBittorrent project + Müəllif Hüquqları: %1 2006-2024 qBittorrent layihəsi - + Home Page: Əsas Səhifə: - + Forum: Forum: - + Bug Tracker: Xəta İzləyicisi: - + The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License DB-IP tərəfindən pulsuz verilən İP to Country Lite məlumat bazası iştirakçıların ölkələrinin öyrənilməsi üçün istifadə olunur. Məlumat bazası Creative Commons Attribution 4.0 Beynəlxalq Lisenziyası altında lisenziyalanıb. @@ -159,7 +164,7 @@ Saxlama yeri - + Never show again Bir daha göstərmə @@ -184,12 +189,12 @@ Torrenti başlat - + Torrent information Torrent məlumatı - + Skip hash check Heş yoxlamasını ötürmək @@ -221,73 +226,78 @@ Stop condition: - Dayandma vəziyyəti: + Dayanma vəziyyəti: - - + + None Heç nə - - + + Metadata received Meta məlumatları alındı - - + + Torrents that have metadata initially will be added as stopped. + Öncədən meta məlumatlara malik olan torrentlər dayandırılmış kimi əılavə ediləcək. + + + + Files checked Fayllar yoxlanıldı - + Add to top of queue Növbənin ən üst sırasına əlavə et - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Əgər bu xana işarələnərsə, seçimlər pəncərəsindəki "Yükləmə" səhifəsinin ayarlarına baxmayaraq .torrent faylı silinməyəcək - + Content layout: Məzmun maketi: - + Original Orijinal - + Create subfolder Alt qovluq yarat - + Don't create subfolder Alt qovluq yaratmamaq - + Info hash v1: məlumat heş'i v1 - + Size: Ölçü: - + Comment: Şərh: - + Date: Tarix: @@ -317,234 +327,182 @@ Son istifadə olunan saxlama yolunu xatırla - + Do not delete .torrent file .torrent faylını silməmək - + Download in sequential order Ardıcıl şəkildə yüklə - + Download first and last pieces first İlk öncə birinci və sonuncu parçaları yükləmək - + Info hash v2: Məlumat heş'i v2: - + Select All Hamısını seçin - + Select None Heç birini seçməyin - + Save as .torrent file... .torrent faylı kimi saxla... - + I/O Error Giriş/Çıxış Xətası - - - Invalid torrent - Keçərsiz torrent - - - + Not Available This comment is unavailable Mövcud Deyil - + Not Available This date is unavailable Mövcud Deyil - + Not available Mövcud Deyil - - Invalid magnet link - Keçərsiz magnet linki - - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Torrent'i yükləmə uğursuz: %1. -Xəta: %2 - - - - This magnet link was not recognized - Bu magnet linki tanınmadı - - - + Magnet link Magnet linki - + Retrieving metadata... Meta məlumatlar alınır... - - + + Choose save path Saxlama yolunu seçin - - - - - - - Torrent is already present - Torrent artıq mövcuddur - - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' artıq köçürülmə siyahısındadır. İzləyicilər birləşdirilmədi, çünki, bu məxfi torrent'dir. - - - - Torrent is already queued for processing. - Torrent artıq işlənmək üçün növbədədir. - - - + No stop condition is set. Dayanma vəziyyəti təyin edilməyib. - + Torrent will stop after metadata is received. Meta məlumatları alındıqdan sonra torrent dayanacaq. - - Torrents that have metadata initially aren't affected. - İlkin meta məlumatları olan torrentlər dəyişilməz qalır. - - - + Torrent will stop after files are initially checked. Faylların ilkin yoxlanışından sonra torrrent daynacaq. - + This will also download metadata if it wasn't there initially. Əgər başlanğıcda meta məlumatlar olmasa onlar da yüklənəcək. - - - - + + N/A Əlçatmaz - - Magnet link is already queued for processing. - Maqnit keçid artıq işlənmək üçün nöbədədir. - - - + %1 (Free space on disk: %2) %1 (Diskin boş sahəsi: %2) - + Not available This size is unavailable. Mövcud deyil - + Torrent file (*%1) Torrent fayl (*%1) - + Save as torrent file Torrent faylı kimi saxlamaq - + Couldn't export torrent metadata file '%1'. Reason: %2. '%1' meta verilənləri faylı ixrac edilə bilmədi. Səbəb: %2. - + Cannot create v2 torrent until its data is fully downloaded. Tam verilənləri endirilməyənədək v2 torrent yaradıla bilməz. - - Cannot download '%1': %2 - '%1' yüklənə bilmədi: %2 - - - + Filter files... Faylları süzgəclə... - - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' artıq köçürülmə siyahısındadır. İzləyicilər birləşdirilə bilməz, çünki, bu məxfi torrentdir. - - - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' artıq köçürülmə siyahısındadır. Mənbədən izləyiciləri birləçdirmək istəyirsiniz? - - - + Parsing metadata... Meta məlumatlarının analizi... - + Metadata retrieval complete Meta məlumatlarının alınması başa çatdı + + + AddTorrentManager + + + Downloading torrent... Source: "%1" + Torrent endirilir... Mənbə: "%1" + + + + Failed to add torrent. Source: "%1". Reason: "%2" + Torrent əlavə edilə bilmədi. Mənbə: "%1", Səbəb: "%2" + - - Failed to load from URL: %1. -Error: %2 - URL'dan yükləmək baş tutmadı: %1 -Xəta: %2 + + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 + Torrentin dublikatının əlavə edilməsinə cəhd aşkarlandı. Mənbə: %1. Mövcud torrent: %2. Nəticə: %3 - - Download Error - Yükləmə Xətası + + Merging of trackers is disabled + İzləyicilərin birləşdirilməsi söndürülüb + + + + Trackers cannot be merged because it is a private torrent + izləyicilər birləşdirilə bilməz, çünki bu fərdi torrentdir + + + + Trackers are merged from new source + Yeni torrentdən izləyicilər birləşdirildi @@ -617,7 +575,7 @@ Xəta: %2 Stop condition: - Dayandma vəziyyəti: + Dayanma vəziyyəti: @@ -630,72 +588,77 @@ Xəta: %2 Heş yoxlamasını ötürün - - - Choose save path - Saxlama yolunu seçin + + Torrent share limits + Torrent paylaşım limitləri - - - - - - - Default - İlkin vəziyyəti + + + Choose save path + Saxlama yolunu seçin + + + - Yes - Bəli + Default + İlkin vəziyyəti + Yes + Bəli + + + + + No Xeyr - + Manual Əl ilə - + Automatic Özü-özünə - + Original Orijinal - + Create subfolder Alt qovluq yaradın - + Don't create subfolder Alt qovluq yaradılmasın - + None Heç nə - + Metadata received Meta məlumatları alındı - + Files checked Fayllar yoxlanıldı @@ -703,597 +666,642 @@ Xəta: %2 AdvancedSettings - - - - + + + + MiB MB - + Recheck torrents on completion Yüklənmə tamamlandıqdan sonra torrentləri yoxlamaq - - + + ms milliseconds msan - + Setting Ayarlar - + Value Value set for this setting Dəyər - + (disabled) (söndürülüb) - + (auto) (avtomatik) - + min minutes dəq - + All addresses Bütün ünvanlar - + qBittorrent Section qBittorrent Bölməsi - - + + Open documentation Sənədləri açmaq - + All IPv4 addresses Bütün İPv4 ünvanları - + All IPv6 addresses Bütün İPv6 ünvanları - + libtorrent Section libtorrent bölməsi - + Fastresume files Tez bərpa olunan fayllar - + SQLite database (experimental) SQLite verilənlər bazası (təcrübi) - + Resume data storage type (requires restart) Verilənləri saxlama növünü davam etdirin (yenidən başlatmaq tələb olunur) - + Normal Normal - + Below normal Normadan aşağı - + Medium Orta - + Low Aşağı - + Very low Çox aşağı - - Process memory priority (Windows >= 8 only) - Əməliyyat yaddaşı üstünlüyü (yalnız Windows >= 8) - - - + Physical memory (RAM) usage limit Fiziki yaddaş (RAM) istifadəsi limiti - + Asynchronous I/O threads Zamanla bir birinə uzlaşmayan Giriş/Çıxış axınları - + Hashing threads Ünvanlanan axınlar - + File pool size Dinamik yaddaş ehtiyatı faylının ölçüsü - + Outstanding memory when checking torrents Torrentləri yoxlayarkən icrası gözlənilən yaddaş - + Disk cache Disk keşi - - - - + + + + s seconds san - + Disk cache expiry interval Disk keşinin sona çatma müddəti - + Disk queue size Disk növbəsi ölçüsü - - + + Enable OS cache ƏS keşini aktiv etmək - + Coalesce reads & writes Oxuma, yazma əməliyyatlarını birləşdirmək - + Use piece extent affinity Hissələrin yaxınlıq dərəcəsindən istifadə etmək - + Send upload piece suggestions Göndərmə parçası təkliflərini göndərmək - - - - + + + + 0 (disabled) 0 (söndürülüb) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Davametmə məlumatlarının saxlanılması aralığı (0: söndürülüb) - + Outgoing ports (Min) [0: disabled] Çıxış portları (Ən az)[0: söndürülüb] - + Outgoing ports (Max) [0: disabled] Çıxış portları (Ən çox) [0: söndürülüb] - + 0 (permanent lease) 0 (daimi icarə) - + UPnP lease duration [0: permanent lease] UPnP icarə müddəti [0: daimi icarə] - + Stop tracker timeout [0: disabled] İzləyici vaxtını dayandır [0: söndürülb] - + Notification timeout [0: infinite, -1: system default] Bildirişin bitmə vaxtı [0: sonsuz, -1: sistemdəki standart] - + Maximum outstanding requests to a single peer Hər iştirakçıya düşən ən çox icra olunmamış sorğu - - - - - + + + + + KiB KB - + (infinite) (sonsuz) - + (system default) (sistemdəki standart) - + This option is less effective on Linux Bu seçim Linuxda az effektlidir - + + Process memory priority + Proses yaddaşının üstünlüyü + + + Bdecode depth limit Bdecode dərinliyi həddi - + Bdecode token limit Bdecode tokenləri həddi - + Default Standart - + Memory mapped files Yaddaş ilə əlaqəli fayllar - + POSIX-compliant POSİX ilə uyğun - + Disk IO type (requires restart) Disk giriş/çıxış növü (yenidən başladılmalıdır) - - + + Disable OS cache ƏS keşini söndür - + Disk IO read mode Diskin giriş/çıxışının oxu rejimi - + Write-through Başdan sona yazma - + Disk IO write mode Diskin giriş/çıxışının yazı rejimi - + Send buffer watermark Buferin su nişanını göndərmək - + Send buffer low watermark Buferin zəif su nişanını göndərin - + Send buffer watermark factor Bufer su nişanı əmsalını göndərmək - + Outgoing connections per second Hər saniyədə sərf olunan bağlantı - - + + 0 (system default) 0 (sistemdəki standart) - + Socket send buffer size [0: system default] Soket göndərmə bufer ölçüsü [0: sistemdəki standart] - + Socket receive buffer size [0: system default] Soket qəbul etmə bufer ölçüsü [0: sistemdəki standart] - + Socket backlog size Soket yığma ölçüsü - + .torrent file size limit .torrent faylı ölçüsünün həddi - + Type of service (ToS) for connections to peers Iştirakçılarla bağlantı üçün xidmət növü (ToS) - + Prefer TCP TCP tərcihi - + Peer proportional (throttles TCP) İştirakçılarla mütənasib (TCP'ni məhdudlaşdırır) - + Support internationalized domain name (IDN) Beynəlxalq domen adı (İDN) dəstəkləmək - + Allow multiple connections from the same IP address Eyni İP ünvanından çoxsaylı bağlantılara icazə vermək - + Validate HTTPS tracker certificates HTTPS izləyici sertifikatlarını təsdiq etmək - + Server-side request forgery (SSRF) mitigation Server tərəfindən saxta sorğulardan (SSRF) qorunma - + Disallow connection to peers on privileged ports İmtiyazlı portlarda iştirakçılara qoşulmanı qadağan etmək - + + It appends the text to the window title to help distinguish qBittorent instances + O, qBittorent nümunələrini fərqləndirmək üçün pəncərə başlığına mətn əlavə edir. + + + + Customize application instance name + Tətbiq nümunəsi adının dəyişdirilməsi + + + It controls the internal state update interval which in turn will affect UI updates Bu yenilənmə tezliyinin daxili vəziyətini idarə edir, bu da öz növəsində İİ yenilənmələrinə təsir edəcək - + Refresh interval Yenilənmə aralığı - + Resolve peer host names İştirakçıların host adlarını müəyyən etmək - + IP address reported to trackers (requires restart) İP ünvanı izləyicilərə bildirildi (yenidən başladılmalıdır) - + Reannounce to all trackers when IP or port changed İP və ya port dəyişdirildiyi zaman təkrar bildirmək - + Enable icons in menus Menyudakı nişanları aktiv edin - + Enable port forwarding for embedded tracker Daxildə olan izləyicilər üçün port yönləndirməsini aktiv et. - + + Enable quarantine for downloaded files + Endirilmiş fayllar üçün qarantini aktiv edin + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Endirilmiş fayllar üçün veb markasını (Mark-of-the-Web - MOTW) aktiv edin + + + + (Auto detect if empty) + (Boş olmasının avtomatik aşkarlanması) + + + + Python executable path (may require restart) + Python icra faylı yolu (yenidən başlatmaq tələb oluna bilər) + + + + Confirm removal of tracker from all torrents + Bütün torrentlərdən izləyicilərin kənarlaşdırılmasını təsdiq etmək + + + Peer turnover disconnect percentage İştirakçı axınının kəsilməsi faizi - + Peer turnover threshold percentage İştirakçı axını həddinin faizi - + Peer turnover disconnect interval İştirakçı axınının kəsilmə müddəti - + + Resets to default if empty + Boş olduqda ilkin vəziyyətinə qaytarmaq + + + + DHT bootstrap nodes + DHT özüyükləmə qovşaqları + + + I2P inbound quantity I2P daxilolma miqdarı - + I2P outbound quantity I2P çıxma miqdarı - + I2P inbound length I2P daxilolma uzunluğu - + I2P outbound length I2P çıxma uzunluğu - + Display notifications Bildirişləri göstərmək - + Display notifications for added torrents Əlavə edilmiş torrentlər üçün bildirişləri göstərmək - + Download tracker's favicon İzləyici nişanlarını yükləmək - + Save path history length Saxlama yolunun tarixçəsinin uzunluğu - + Enable speed graphs Sürət qrafikini aktiv etmək - + Fixed slots Sabitləşdirilmiş yuvalar - + Upload rate based Yükləmə sürəti əsasında - + Upload slots behavior Göndərmə yuvalarının davranışı - + Round-robin Dairəvi - + Fastest upload Ən sürətli yükləmə - + Anti-leech Sui-istifadəni əngəlləmək - + Upload choking algorithm Göndərmənin məhdudlaşdırılması alqoritmi - + Confirm torrent recheck Torrentin yenidən yoxlanılmasını təsdiqləmək - + Confirm removal of all tags Bütün yarlıqların silinməsini təsdiq etmək - + Always announce to all trackers in a tier Bir səviyyədəki bütün iştirakçılara həmişə bildirmək - + Always announce to all tiers Bütün səviyyələrə həmişə bildirmək - + Any interface i.e. Any network interface İstənilən interfeys - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Qarışıq %1-TCP rejimi alqoritmi - + Resolve peer countries İştirakçıların ölkələrini müəyyən etmək - + Network interface Şəbəkə interfeysi - + Optional IP address to bind to Qoşulmaq üçün ixtiyari İP ünvanı - + Max concurrent HTTP announces Ən çox paralel HTTP elanıları - + Enable embedded tracker Yerləşdirilmiş izləyicini aktiv etmək - + Embedded tracker port Yerləşdirilmiş izləyici portu @@ -1301,96 +1309,120 @@ Xəta: %2 Application - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 başlaıldı - - - + Running in portable mode. Auto detected profile folder at: %1 Portativ rejimdə işləyir. Burada avtomatik profil qovluğu aşkar edildi: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Lazımsız əmr sətri bayrağı aşkarlandı: "%1". Portativ rejim işin nisbətən daha tez bərpa olunması anlamına gəlir. - + Using config directory: %1 Bu ayarlar qovluğu istifadə olunur: %1 - + Torrent name: %1 Torrentin adı: %1 - + Torrent size: %1 Torrentin ölçüsü: %1 - + Save path: %1 Saxlama yolu: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent %1 qovluğuna yükləndi. - + Thank you for using qBittorrent. qBittorrent istifadə etdiyiniz üçün sizə təşəkkür edirik. - + Torrent: %1, sending mail notification Torrent: %1, poçt bildirişi göndərmək - + + Add torrent failed + Torrent əlavə edilməsi baş tutmadı + + + + Couldn't add torrent '%1', reason: %2. + "%1" torrentini əlavə etmək mümkün olmadı, səbəb: %2 + + + + The WebUI administrator username is: %1 + Veb istfadəçi interfeysi inzibatçısının istifadəçi adı: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Veb istifadəçi interfeysi inzibatçı şifrəsi təyin edilməyib. Bu sesiya üçün müvəqqəti şifrə təqdim olunur: %1 + + + + You should set your own password in program preferences. + Öz şifrənizi proramın ayarlarında təyin etməlisiniz. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. + Veb istifadəçi interfeysi söndürülüb. Onu aktiv etmək üçün tənzimləmə faylınında dəyişiklik edin. + + + Running external program. Torrent: "%1". Command: `%2` Xarici proqram işə düşür. Torrent: "%1". Əmr: "%2" - + Failed to run external program. Torrent: "%1". Command: `%2` Xarici proqramı başlatmaq mümkün olmadı. Torrent: "%1". Əmr: "%2" - + Torrent "%1" has finished downloading "%1" torrenti yükləməni başa çatdırdı - + WebUI will be started shortly after internal preparations. Please wait... Veb İİ daxili hazırlıqdan sonra qısa zamanda başladılacaqdır. Lütfən gözləyin... - - + + Loading torrents... Torrentlər yüklənir... - + E&xit Çı&xış - + I/O Error i.e: Input/Output Error Giriş/Çıxış xətası - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1399,121 +1431,100 @@ Xəta: %2 Səbəb: %2 - - Error - Xəta - - - - Failed to add torrent: %1 - Torrent əlavə edilə bilmədi: %1 - - - + Torrent added Torrent əlavə edildi - + '%1' was added. e.g: xxx.avi was added. "%1" əlavə edildi. - + Download completed Endirmə tamamlandı - + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 başladıldı. Proses İD-si: %2 + + + '%1' has finished downloading. e.g: xxx.avi has finished downloading. "%1" endirməni tamamladı. - - URL download error - URL endirmə xətası - - - - Couldn't download file at URL '%1', reason: %2. - "%1" URL ünvanından yüklənə bilmədi, səbəb: %2 - - - - Torrent file association - Torrent faylı bağlantıları - - - - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent torrent fayllarını və Maqnit keçidlərini açmaq üçün əsas tətbiq deyil. -qBittorrenti bunlar üçün əsas tətbiq etmək istəyirsiniz? - - - + Information Məlumat - + + To fix the error, you may need to edit the config file manually. + Xətanı aradan qaldırmaq üçün tənzimləmə faylında dəyişiklik etməniz lazımdır. + + + To control qBittorrent, access the WebUI at: %1 qBittorrent'i idarə etmək üçün, bu ünvandan Veb istifadəçi interfeysinə daxil olun: %1 - - The Web UI administrator username is: %1 - Web UI admin istifadəçi adı: %1 + + Exit + Çıxış - - The Web UI administrator password has not been changed from the default: %1 - Web UI admin şifrəsi standart ilkin variantda olduğu kimidir: %1 + + Recursive download confirmation + Rekursiv endirmənin təsdiqi - - This is a security risk, please change your password in program preferences. - Bu təhlükəsizliyin pozulması riskidir, lütfən, proqram ayarlarından şifrənizi dəyişməniz xahiş olunur.. + + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? + "%1" torrenti torrent fayllarından ibarətdir, endirilməsinə davam etmək istəyirsinizmi? - - Application failed to start. - Tətbiq başladıla bilmədi. + + Never + Heç vaxt - - Exit - Çıxış + + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" + Torrentdən .torrent faylnın rekursiv endirilməsi. Torrentin mənbəyi: "%1". Fayl: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Fiziki yaddaş (RAM) limitini təyin etmək mümkün olmadı. Xəta kodu: %1. Xəta bildirişi: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Fiziki yaddaşın (RAM) ciddi limitini təyin etmək mümkün olmadı. Tələb olunan ölçü: %1. Sistemin ciddi limiti: %2. Xəta kodu: %3. Xəta ismarıcı: "%4" - + qBittorrent termination initiated qBittorrent-in bağlanması başladıldı - + qBittorrent is shutting down... qBittorrent söndürülür... - + Saving torrent progress... Torrentin vəziyyəti saxlanılır... - + qBittorrent is now ready to exit qBittorrent indi çıxışa hazırdır @@ -1521,7 +1532,7 @@ qBittorrenti bunlar üçün əsas tətbiq etmək istəyirsiniz? AsyncFileStorage - + Could not create directory '%1'. "%1" qovluğu yaradıla bilmədi. @@ -1529,22 +1540,22 @@ qBittorrenti bunlar üçün əsas tətbiq etmək istəyirsiniz? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI'yə giriş xətası. Səbəb: IP qadağan edilmişdir, IP: %1, istifadəçi adı: %2 - + Your IP address has been banned after too many failed authentication attempts. İP ünvanınız çoxlu giriş cəhdlərindən sonra qadağan edilmişdir. - + WebAPI login success. IP: %1 WebAPI'yə uğurlu giriş: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI'yə giriş xətası. Səbəb: yararsız istifadəçi məlumatları, cəhdlərin sayı: %1, İP: %2, istifadəçi adı: %3 @@ -1650,263 +1661,263 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin İx&rac... - + Matches articles based on episode filter. Bölüm süzgəcinə əsaslanan oxşar məqalələr - + Example: Nümunə: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match sezonun 2, 5, 8 - 15, 30 və sonrakı epizodları ilə eyniləşəcək - + Episode filter rules: Bölüm filtri qaydaları: - + Season number is a mandatory non-zero value Sezonun nömrəsi mütləq sıfırdan fərqli dəyər olmalıdır - + Filter must end with semicolon Filtr nöqtəli vergül ilə bitməlidir - + Three range types for episodes are supported: Bölümlər üçün, üç aralıq növü dəstəklənir: - + Single number: <b>1x25;</b> matches episode 25 of season one Tək nömrə: <b>1x25;</b> birinci sezonun 25-ci bölümü deməkdir - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normal aralıq: <b>1x25-40;</b> birinci sezonun 25-ci ilə 40-cı arasındakı bölümləri göstərir - + Episode number is a mandatory positive value Bölümün nömrəsi, mütləq müsbət dəyər olmalıdır - + Rules Qaydalar - + Rules (legacy) Qaydalar (köhnəlmiş) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Sonsuz aralıq: <b>1x25-;</b> birinci sezonun 25-ci ilə ondan yuxarı bölümləri və sonrakı sezonun bütün bölümlərini göstərir - + Last Match: %1 days ago Sonuncu oxşar: %1 gün əvvəl - + Last Match: Unknown Sonuncu oxşar: Naməlum - + New rule name Yeni qaydanın adı - + Please type the name of the new download rule. Lütfən, yeni endirmə qaydasının adını yazın. - - + + Rule name conflict Qaydanın adında ziddiyyət - - + + A rule with this name already exists, please choose another name. Bu adla qayda adı artıq mövcuddur, lütfən başqa ad seçin. - + Are you sure you want to remove the download rule named '%1'? Siz, "%1" adlı qaydanı silmək istədiyinizə əminsiniz? - + Are you sure you want to remove the selected download rules? Siz, seçilmiş endirmə qaydalarını silmək istədiyinizə əminsiniz? - + Rule deletion confirmation Qaydanın silinməsinin təsdiq edilməsi - + Invalid action Yalnız əməl - + The list is empty, there is nothing to export. Siyahı boşdur, ixrac edilməcək heç nə yoxdur. - + Export RSS rules RSS qaydalarının ixracı - + I/O Error Giriş/Çıxış xətası - + Failed to create the destination file. Reason: %1 Təyinat faylı yaradıla bilmədi. Səbəb: %1 - + Import RSS rules RSS qaydalarının idxalı - + Failed to import the selected rules file. Reason: %1 Seçilmiş qaydalar faylı idxalı edilə bilmədi. Səbəbi: %1 - + Add new rule... Yeni qayda əlavə edin... - + Delete rule Qaydanı silmək - + Rename rule... Qaydanın adını dəyişin... - + Delete selected rules Seçilmiş qaydaları silmək - + Clear downloaded episodes... Endirilmiş bölümləri silin... - + Rule renaming Qaydanın adının dəyişdirilməsi - + Please type the new rule name Lütfən, qayda adı yazın - + Clear downloaded episodes Endirilmiş bölümləri silmək - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Seçilmiş qayda üçün endirilmiş bölümlərin siyahısını silmək istədiyinizə əminsiniz? - + Regex mode: use Perl-compatible regular expressions Regex rejimi: Perl üslubunda müntəzəm ifadələrdən istifadə edin - - + + Position %1: %2 Mövqe: %1: %2 - + Wildcard mode: you can use Əvəzedici işarə rejimi: istifadə edə bilərsiniz - - + + Import error İdxaletmə xətası - + Failed to read the file. %1 Faylı oxumaq mümkün olmadı. %1 - + ? to match any single character «?» istənilən tək simvola uyğundur - + * to match zero or more of any characters «*» sıfıra və ya bir çox istənilən simvollara uyğundur - + Whitespaces count as AND operators (all words, any order) Boşluqlar VƏ əməlləri kimi hesab edilir (bütün sözlər, istənilən sıra) - + | is used as OR operator «|», VƏ YA əməli kimi istifadə olunur - + If word order is important use * instead of whitespace. Əgər sözlərin sıralanmasının istifadəsi vacibdirsə boşluq əvəzinə «*» istifadə edin. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) %1 şərti ilə boş ifadə (məs., %2) - + will match all articles. bütün məqalələrlə oxşar olacaq - + will exclude all articles. bütün məqalələri istisna olunacaq @@ -1948,53 +1959,58 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Torrenti davam etdirmək üçün qovluq yaradıla bilmir: "%1" - + Cannot parse resume data: invalid format Davam etmək üçün verilənlər təmin edilmədi: torrent formatı səhvdir - - + + Cannot parse torrent info: %1 Torrent məlumatı təmin edilə bilmədi: %1 - + Cannot parse torrent info: invalid format Torrent təhlil edilə bilmədi: format səhvdir - + + Mismatching info-hash detected in resume data + Bərpaetmə verilənlərində heş daxili uyğunsuzluq aşkarlandı + + + Couldn't save torrent metadata to '%1'. Error: %2. Torrent meta verilənləri "%1"-də/da saxılanıla bilmədi. Xəta: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Torrentin bərpası üçün verilənlər '%1'-də/da saxlanıla bilmədi. Xəta: %2. - + Couldn't load torrents queue: %1 Torrent növbəsini yükləmək mümkün olmadı: %1 - + Cannot parse resume data: %1 Davam etmək üçün verilənlər təmin edilmədi: %1 - + Resume data is invalid: neither metadata nor info-hash was found Davam etdirmək üçün verilənlər səhvdir: nə meta verilənləri nə də heş-məlumat tapılmadı - + Couldn't save data to '%1'. Error: %2 Verilənləri "%1"-də/da saxlamaq mümkün olmadı. Xəta: %2 @@ -2002,38 +2018,38 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin BitTorrent::DBResumeDataStorage - + Not found. Tapılmadı - + Couldn't load resume data of torrent '%1'. Error: %2 "%1" torentinin bərpa üçün məlumatlarını göndərmək mümkün olmadı. Xəta: %2 - - + + Database is corrupted. Verilənlər bazası zədələnib. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Öncədən Yazma Gündəliyi (ing. - WAL) jurnallama rejimi. Xəta: %1 - + Couldn't obtain query result. Sorğu nəticələrini əldə etmək mümkün olmadı. - + WAL mode is probably unsupported due to filesystem limitations. Öncədən Yazma Gündəliyi rejimi, ehtimal ki, fayl sistemindəki məhdudiyyət səbəbindən dəstəklənmir. - + Couldn't begin transaction. Error: %1 Köçürməni başlatmaq mümkün olmadı. Xəta: %1 @@ -2041,22 +2057,22 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Torrent meta verilənləri saxlanıla bilmədi. Xəta: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 "%1" torrenti üçün bərpa məlumatlarını saxlamaq mümkün olmadı. Xəta: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 "%1" torentinin bərpa üçün məlumatlarını silmək mümkün olmadı. Xəta: %2 - + Couldn't store torrents queue positions. Error: %1 Torrentin növbədəki yerini saxlamaq mümkün olmadı. Xəta: %1 @@ -2064,514 +2080,479 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Bölüşdürülən heş cədvəli (DHT) cədvəli: %1 - - - - - - - - - + + + + + + + + + ON AÇIQ - - - - - - - - - + + + + + + + + + OFF BAĞLI - - + + Local Peer Discovery support: %1 Yerli iştirakçəların aşkarlanması: %1 - + Restart is required to toggle Peer Exchange (PeX) support İştirakçı mübadiləsi (PeX) dəstəklənməsini aktiv etmək üçün yenidən başlatmaq tələb olunur - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrenti davam etdirmək mümkün olmadı: "%1". Səbəb: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Torrenti davam etdirmək mümkün olmadı: ziddiyyətli torrent İD aşkarlandı. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Zİddiyyətli məluymat aşkarlandı: tənzimləmə faylında kateqoriya çatışmır. Kateqoriya bərpa olunacaq, lakin onun ayarları ilkin vəziyyətə sıfırlanacaq. Torrent: "%1". Kateqoriya: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Ziddiyyətli məlumat aşkarlandı: kateqoriya səhvdir. Torrent: "%1". Kateqoriya: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Bərpa olunmuş kateqoriyanın saxlanma yolları və hazırkı torrentin saxlama yolu araında uyğunsuzluq aşkarlandı. Torrent indi əl ilə ayarlama rejiminə dəyişdirildi. Torrent: "%1". Kateqorya: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Tutarsız verilənlər aşkarlandı: tənzimləmə faylında etiketlər çatımır. Etiket bərpa olunacaqdır. Torrent: "%1". Etiket: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Tutarsız verilənlər aşkarlandı: etiket səhvdir. Torrent: "%1". Etiket: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Sistemin oyanması hadisəsi aşkar edildi. Bütün izləyicilərə yenidən bildirilir... - + Peer ID: "%1" İştirakçı İD-si: "%1" - + HTTP User-Agent: "%1" HTTP İstifadəçi Tanıtımı: "%1" - + Peer Exchange (PeX) support: %1 İştirakçı mübadiləsi (PeX) dəstəkkənməsi: %1 - - + + Anonymous mode: %1 Anonim rejim: %1 - - + + Encryption support: %1 Şifrələmə dəstəyi: %1 - - + + FORCED MƏCBURİ - + Could not find GUID of network interface. Interface: "%1" Şəbəkə interfeysinə aid GUİD tapılmadı: İnterfeys: "%1" - + Trying to listen on the following list of IP addresses: "%1" Aşağıdakı İP ünvanları siyahısını dinləməyə cəhd edilir: "%1" - + Torrent reached the share ratio limit. Torrent paylaşım nisbəti həddinə çatdı. - - - + + + Torrent: "%1". Torrent: "%1". - - - + + + Removed torrent. Torrent silinib. - - - + + + Removed torrent and deleted its content. Torrent və onun tərkibləri silinib. - - - + + + Torrent paused. Torrent fasilədədir. - - - + + + Super seeding enabled. Super göndərmə aktiv edildi. - + Torrent reached the seeding time limit. Torrent göndərmə vaxtı limitinə çatdı. - + Torrent reached the inactive seeding time limit. Torrent qeyri-aktiv göndərmə vaxtı həddinə çatdı. - - + Failed to load torrent. Reason: "%1" Torrent yüklənə bimədi. Səbəb: "%1" - - Downloading torrent, please wait... Source: "%1" - Torrent endirilir, lütfən gözləyin... Mənbə: "%1" - - - - Failed to load torrent. Source: "%1". Reason: "%2" - Torrent yüklənə bimədi. Mənbə: "%1". Səbəb: "%2" - - - - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Təkrar torrentin əlavə olunmasına bir cəhd aşkarlandı. İzləyicilərin birləşdirilməsi söndürülüb. Torrent: %1 - - - - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Təkrarlanan torrentin əlavə olunması cəhdi aşkarlandı. İzləyicilər birləşdirilə bilməz, çünki bu gizli torrentdir. Torrent: %1 + + I2P error. Message: "%1". + I2P xətası. Bildiriş: "%1". - - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Təkrarlanan torrentin əlavə olunması cəhdi aşkarlandı. İzləyicilər yeni mənbədən birləşdirildi. Torrent: %1 - - - + UPnP/NAT-PMP support: ON UPnP/NAT-PMP dəstəkləməsi: AÇIQ - + UPnP/NAT-PMP support: OFF UPnP / NAT-PMP dəstəklənməsi: BAĞLI - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" Torrent ixrac edilmədi. Torrent: "%1". Təyinat: "%2". Səbəb: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 Davam etdirmə məlumatları ləğv edildi. İcra olunmamış torrentlərin sayı: %1 - - System network status changed to %1 - e.g: System network status changed to ONLINE - Sistemin şəbəkə statusu %1 kimi dəyişdirildi - - - - ONLINE - ŞƏBƏKƏDƏ - - - - OFFLINE - ŞƏBƏKƏDƏN KƏNAR - - - - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 şəbəkə ayarları dəyişdirildi, sesiya bağlamaları təzələnir - - - + The configured network address is invalid. Address: "%1" Ayarlanmış şəbəkə ünvanı səhvdir. Ünvan: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Dinləmək üçün ayarlanmış şəbəkə ünvanını tapmaq mümkün olmadı. Ünvan: "%1" - + The configured network interface is invalid. Interface: "%1" Ayarlanmış şəbəkə ünvanı interfeysi səhvdir. İnterfeys: "%1" - + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Qadağan olunmuş İP ünvanları siyahısını tətbiq edərkən səhv İP ünvanları rədd edildi. İP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Torrentə izləyici əlavə olundu. Torrent: "%1". İzləyici: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" İzləyici torrentdən çıxarıldı. Torrent: "%1". İzləyici: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Torrent URL göndərişi əlavə olundu. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" URL göndərişi torrentdən çıxarıldı. Torrent: "%1". URL: "%2" - + Torrent paused. Torrent: "%1" Torrent fasilədədir. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent davam etdirildi: Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrent endirilməsi başa çatdı. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrentin köçürülməsi ləğv edildi. Torrent: "%1". Mənbə: "%2". Təyinat: "%3" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Torrentin köçürülməsini növbələmək mümkün olmadı. Torrent: "%1". Mənbə; "%2". Təyinat: "%3". Səbəb: torrent hal-hazırda təyinat yerinə köçürülür - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Torrentin köçürülməsini növbələmək mümkün olmadı. Torrent: "%1". Mənbə; "%2". Təyinat: "%3". Səbəb: hər iki yol eyni məkanı göstərir - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrentin köçürülməsi növbəyə qoyuıdu. Torrent: "%1". Mənbə: "%2". Təyinat: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Torrent köçürülməsini başladın. Torrent: "%1". Təyinat: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Kateqoriyalar tənzimləmələrini saxlamaq mümkün olmadı. Fayl: "%1". Xəta: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Kateoriya tənzimləmələrini təhlil etmək mümkün olmadı. Fayl: "%1". Xəta: "%2" - - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrentdən .torrent faylnın rekursiv endirilməsi. Torrentin mənbəyi: "%1". Fayl: "%2" - - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Torrent daxilində .torrent yükləmək alınmadı. Torrentin mənbəyi: "%1". Fayl: "%2". Xəta: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 İP filter faylı təhlili uğurlu oldu. Tətbiq olunmuş qaydaların sayı: %1 - + Failed to parse the IP filter file İP filter faylının təhlili uğursuz oldu - + Restored torrent. Torrent: "%1" Bərpa olunmuş torrent. Torrent; "%1" - + Added new torrent. Torrent: "%1" Əlavə olunmuş yeni torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Xətalı torrent. Torrent: "%1". Xəta: "%2" - - + + Removed torrent. Torrent: "%1" Ləğv edilmiş torrent. Torrent; "%1" - + Removed torrent and deleted its content. Torrent: "%1" Ləğv edilmiş və tərkibləri silinmiş torrent. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentdə SSL parametrləri çatışmır. Torrent: "%1". İsmarıc: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Fayldakı xəta bildirişi. Torrent: "%1". Fayl: "%2". Səbəb: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP: Portun palanması uğursuz oldu. Bildiriş: %1 - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP: Portun palanması uğurlu oldu. Bildiriş: %1 - + IP filter this peer was blocked. Reason: IP filter. İP filtr - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtrlənmiş port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). imtiyazlı port (%1) - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent sesiyası bir sıra xətalarla qarşılaşdı. Səbəb: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 proksi xətası. Ünvan: %1. İsmarıc: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 qarışıq rejimi məhdudiyyətləri - + Failed to load Categories. %1 Kateqoriyaları yükləmək mümkün olmadı. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Kateqoriya tənzimləmələrini yükləmək mümkün olmadı. Fayl: "%1". Xəta: "Səhv verilən formatı" - + Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" Ləğv edilmiş, lakin tərkiblərinin silinməsi mümkün olmayan və/və ya yarımçıq torrent faylı. Torrent: "%1". Xəta: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 söndürülüb - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 söndürülüb - + URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" İştirakçı ünvanının DNS-də axtarışı uğursuz oldu. Torrent: "%1". URL: "%2". Xəta: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" İştirakçının ünvanından xəta haqqında bildiriş alındı. Torrent: "%1". URL: "%2". Bildiriş: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" İP uöurla dinlənilir. İP: "%1". port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" İP-nin dinlənilməsi uğursuz oldu. İP: "%1". port: "%2/%3". Səbəb: "%4" - + Detected external IP. IP: "%1" Kənar İP aşkarlandı. İP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Xəta: Daxili xəbərdarlıq sırası doludur və xəbərdarlıq bildirişlər kənarlaşdırıldı, sistemin işinin zəiflədiyini görə bilərsiniz. Kənarlaşdırılan xəbərdarlıq növləri: %1. Bildiriş: %2 - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent uğurla köçürüldü. Torrent: "%1". Təyinat: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Torrentin köçürülməsi uğursuz oldu. Torrent: "%1". Mənbə: "%2". Təyinat: "%3". Səbəb: "%4" - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + Paylamanı başlatmaq uğursuz oldu. + + + + BitTorrent::TorrentCreator - + Operation aborted Əməliyyat ləğv edildi - - + + Create new torrent file failed. Reason: %1. Yeni torrent faylın yaradılması baş tutmadı. Səbəb: %1. @@ -2579,62 +2560,67 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 "%1" iştirakçının "%2" teorrentinə əlavə edilməsi alınmadı. Səbəb: %3 - + Peer "%1" is added to torrent "%2" "%1" iştirakçısı "%2" torrentinə əlavə edildi - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Gözlənilməyən verilən aşkarlandı. Torrent: %1. Verilən: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Fayla yazıla bilmir. Səbəb: "%1" Torrent indi "yalnız göndərmək" rejimindədir. - + Download first and last piece first: %1, torrent: '%2' Öncə ilk və son hissəni endirmək: %1, torrent: "%2" - + On Açıq - + Off Bağlı - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Torrenti yenidən başlatmaq mümkün olmadı. Torrent: %1. Səbəb: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Torrenti davam etdirmək üçün məlumatlar yaradıla bilmədi: "%1". Səbəb: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Torrent bərpa oluna bilmədi. Güman ki, fayl köçürülüb və ya yaddaşa giriş əlçatmazdır. Torrent: "%1". Səbəb: "%2" - + Missing metadata Meta verilənləri çatışmır - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Faylın adı dəyişdirilmədi. Torrent: "%1", fayl: "%2", səbəb: "%3" - + Performance alert: %1. More info: %2 Performans xəbərdarlığı: %1. Daha çox məlumat: %2 @@ -2642,12 +2628,12 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin BitTorrent::Tracker - + Embedded Tracker: Now listening on IP: %1, port: %2 Daxildəki izləyici: İndi bu İP-də dinlənilir: %1, port: %2 - + Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 Daxili izləyici: Bu İP ilə əlaqə qurula bilmədi: %1, port: %2, Səbəb: %3 @@ -2655,184 +2641,189 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' "%1" parametri '%1=%2' sintaksisin ilə uzlaşmalıdır - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' "%1" parametri '%1=%2' sintaksisin ilə uzlaşmalıdır - + Expected integer number in environment variable '%1', but got '%2' Dəyişən mühitdə "%1" gözlənilən tam ədəddir, lakin "%2" alındı - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' "%1" parametri '%1=%2' sintaksisin ilə uzlaşmalıdır - + Expected %1 in environment variable '%2', but got '%3' "%2" dəyişən mühitində "%1" gözlənilir, lakin "%3" alındı - - + + %1 must specify a valid port (1 to 65535). "%1" düzgün port təyin etməlidir (1 ilə 65535 arası) - + Usage: İstifadəsi: - + [options] [(<filename> | <url>)...] [seçimlər] [(<filename> | <url>)...] - + Options: Seçimlər: - + Display program version and exit Proqramın versiyasını göstərmək və çıxmaq - + Display this help message and exit Bu kömək bildirişini göstərmək və çıxmaq - - + + Confirm the legal notice + Rəsmi bildirişin təsdiq edilməsi + + + + port port - - Change the Web UI port - Veb İİ portunu dəyişmək + + Change the WebUI port + Veb istifadəçi interfeysi portunu dəyişin - + Change the torrenting port Torrent portunu dəyiş - + Disable splash screen Salamlama ekranını söndürmək - + Run in daemon-mode (background) Xidmət rejimində işə salmaq (arxa fon) - + dir Use appropriate short form or abbreviation of "directory" qovluq - + Store configuration files in <dir> Tənzimləmə fayllarını <dir> daxilində saxlamaq - - + + name ad - + Store configuration files in directories qBittorrent_<name> Tənzimləmə fayllarını qBittorrent_<name> qovluqlarında saxlamaq - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Davam etdirməni cəld başlatmaq üçün libtorrent fayllarını sındırmaq və fayl yollarını profil qovluğuna nisbətən yaratmaq - + files or URLs fayllar və ya URL'lar - + Download the torrents passed by the user İstifadəçi tərəfindən təyin edilən torrentləri endirmək - + Options when adding new torrents: Yeni torrent əlavə edilmə seçimləri: - + path yol - + Torrent save path Torrent saxlama yolu - + Add torrents as started or paused Torrentləri başladılan və ya fasilədə olan kimi əlavə etmək - + Skip hash check Heş yoxlamasını ötürün - + Assign torrents to category. If the category doesn't exist, it will be created. Torrentləri qovluğa təyin etmək. Əgər belə qovluq yoxdursa o yaradılacaq. - + Download files in sequential order Faylları növbə ardıcıllığı ilə endirmək - + Download first and last pieces first Öncə İlk və son hissələri endirmək - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Torrent əlavə edilərkən "Yeni torrent əlavə edin" dialoqunun aşılıb aşımayacağını qeyd etmək - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Seçim dəyərləri mühit dəyişənləri tərəfindən təchiz edilə bilər. "Parametr adı" adlı seçim üçün mühit dəyişəni adı 'QBT_PARAMETER_NAME'-dir (böyük hərfdə «-», «_» ilə əvəz edilmişdir). İşarələmə göstəricisi vermək üçün dəyişəni "1" və "TRUE" təyin edin. Misal üçün, salamlama ekranını söndürmək üçün: - + Command line parameters take precedence over environment variables Əmr sətri parametrləri mühit dəyişənləri üzərində üstünlük əldə edir - + Help Kömək @@ -2840,17 +2831,17 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin CategoryFilterModel - + Categories Kateqoriyalar - + All Bütün - + Uncategorized Kateqoriyasız @@ -2858,42 +2849,42 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin CategoryFilterWidget - + Add category... Kateqoriya əlavə edin... - + Add subcategory... Alt kateqoriya əlavə edin... - + Edit category... Kateqoriyaya düzəliş edin... - + Remove category Kateqoriyanı silmək - + Remove unused categories İstifadə olunmayan kateqoriyanı silmək - + Resume torrents Torrentləri davam etdirmək - + Pause torrents Torrentlərə fasilə - + Remove torrents Torrentləri silin @@ -2901,12 +2892,12 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin ColorWidget - + Edit... Düzəliş et... - + Reset Sıfırlamaq @@ -2950,12 +2941,12 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin CustomThemeSource - + Failed to load custom theme style sheet. %1 Fərdi mövzu cədvəlini yükləməkl mümkün olmadı. %1 - + Failed to load custom theme colors. %1 Fərdi mövzu rənglərini yükləmək mümkün olmadı. %1 @@ -3094,7 +3085,7 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin FileLogger - + An error occurred while trying to open the log file. Logging to file is disabled. Jurnal faylının aşılması zanmanı xəta baş verdi. Jurnalı fayla yazmaq söndürüb @@ -3190,6 +3181,29 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin Təhlil xətası: Filtr faylı, düzgün PeerGuardian P2B faylı deyil. + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + Torrent endirilir... Mənbə: "%1" + + + + Trackers cannot be merged because it is a private torrent + izləyicilər birləşdirilə bilməz, çünki bu fərdi torrentdir + + + + Torrent is already present + Torrent artıq mövcuddur + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + Torrent '%1' artıq köçürülmə siyahısındadır. Mənbədən izləyiciləri birləçdirmək istəyirsiniz? + + GeoIPDatabase @@ -3283,26 +3297,54 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin IconWidget - + Browse... Baxmaq... - + Reset Sıfırlamaq - + Select icon Nişan seç - + Supported image files Dəstəklənən şəkil faylları + + LegalNotice + + + Legal Notice + Rəsmi bildiriş + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent fayl paylaşımı proqramıdır. Torrenti başlatdığınız zaman, onun veriləri başqalarına paylaşım yolu ilə təqdim olunacaqdır. Paylaşdığınız bütün istənilən tərkiblər üçün, siz tam məsuliyyət daşıyırsınız. + + + + No further notices will be issued. + Bundan sonra bildirişlər göstərilməyəcəkdir. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Rəsmi bildirişi oxudunuzsa bu ismarıcı gizlətmək üçün `-confirm-legal-notice` əmrindən istifadə edə bilərsiniz. + + + + Press 'Enter' key to continue... + Davam etmək üçün "Enter" düyməsinə vurun... + + LogPeerModel @@ -3321,78 +3363,62 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1, naməlum əmr sətiri parametridir. - - + + %1 must be the single command line parameter. %1, tək əmr sətri parametri olmalıdır. - - You cannot use %1: qBittorrent is already running for this user. - Siz %1 istifadə edə bilməzsiniz: qBittorrent artıq bu istifadəçi tərəfindən başladılıb. - - - + Run application with -h option to read about command line parameters. Əmr sətri parametrləri haqqında oxumaq üçün tətbiqi -h seçimi ilə başladın. - + Bad command line Xətalı əmr sətri - + Bad command line: Xətalı əmr sətri: - - Legal Notice - Rəsmi bildiriş - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent fayl paylaşımı proqramıdır. Torrenti başlatdığınız zaman, onun veriləri başqalarına paylaşım yolu ilə təqdim olunacaqdır. Paylaşdığınız bütün istənilən tərkiblər üçün, siz tam məsuliyyət daşıyırsınız. - - - - No further notices will be issued. - Bundan sonra bildirişlər göstərilməyəcəkdir. + + An unrecoverable error occurred. + Sazlana bilməyən xəta baş verdi. - - Press %1 key to accept and continue... - Qəbul etmək və davam etmək üçün %1 düyməsini vurun... + + + qBittorrent has encountered an unrecoverable error. + qBittorrent sazlana bilməyən bir xəta ilə qarşılaşdı. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent fayl paylaşımı proqramıdır. Torrenti başlatdığınız zaman, onun veriləri başqalarına paylaşım yolu ilə təqdim olunacaqdır. Paylaşdığınız bütün istənilən tərkiblər üçün, siz tam məsuliyyət daşıyırsınız. + + You cannot use %1: qBittorrent is already running. + Siz %1 istifadə edə bilməzsiniz: qBittorrent artıq işləkdir. - - Legal notice - Rəsmi bildiriş + + Another qBittorrent instance is already running. + Başqa bir qBittorrent nümunəsi artıq işləkdir. - - Cancel - İmtina + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Gözlənilməz qBittorent nüsxəsi tapıldı. Bu nüsxədən çıxılır. Cari proses İD-si: %1. - - I Agree - Qəbul edirəm + + Error when daemonizing. Reason: "%1". Error code: %2. + Demonizasiya zamanı xəta. Səbəb: "%1". Xəta kodu: %2 @@ -3681,12 +3707,12 @@ No further notices will be issued. - + Show Göstərmək - + Check for program updates Proqram yenilənmələrini yoxlamaq @@ -3701,327 +3727,306 @@ No further notices will be issued. qBittorrent'i bəyənirsinizsə ianə edin! - - + + Execution Log İcra jurnalı - + Clear the password Şifrəni silmək - + &Set Password Şifrə &təyin etmək - + Preferences Tərcihlər - + &Clear Password Şifrəni silmə&k - + Transfers Köçürmələr - - + + qBittorrent is minimized to tray qBittorent treyə yığıldı - - - + + + This behavior can be changed in the settings. You won't be reminded again. Bu davranış ayarlarda dəyişdirilə bilər. Sizə bir daha xatırladılmayacaq. - + Icons Only Yalnız Nişanlar - + Text Only Yalnlız Mətn - + Text Alongside Icons Nişanlar yanında mətn - + Text Under Icons Nişanlar altında mətn - + Follow System Style Sistem üslubuna uyğun - - + + UI lock password İİ-nin kilid şifrəsi - - + + Please type the UI lock password: Lütfən, İİ-nin kilid şifrəsini yazın - + Are you sure you want to clear the password? Şifrəni silmək istədiyinizə əminsiniz? - + Use regular expressions Müntəzəm ifadədən istifadə etmək - + Search Axtarış - + Transfers (%1) Köçürmələr (%1) - - Recursive download confirmation - Rekursiv endirmənin təsdiqi - - - - Never - Heç vaxt - - - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent indicə yeniləndi və dəyişikliklərin qüvvəyə minməsi üçün yenidən başladılmalıdır. - + qBittorrent is closed to tray qBittorrent treyə yığıldı - + Some files are currently transferring. Hazırda bəzi fayllar ötürülür - + Are you sure you want to quit qBittorrent? qBittorent'dən çıxmaq istədiyinizə əminsiniz? - + &No &Xeyr - + &Yes &Bəli - + &Always Yes &Həmişə bəli - + Options saved. Parametrlər saxlanıldı. - - %1/s - s is a shorthand for seconds - %1/san + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 - - + + Missing Python Runtime Python icraçısı çatışmır - + qBittorrent Update Available qBittorrent yenilənməsi mövcuddur - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python axtarş vasitəsindən istifadə etməyi tələb edir, lakin, belə görünür ki, bu vasitə quraşdırılmayıb. Bunu indi quraşdırmaq istəyirsiniz? - + Python is required to use the search engine but it does not seem to be installed. Python axtarış vasitəsi istifadə etməyi tələb edir, lakin belə görünür ki, o quraşdırılmayıb. - - + + Old Python Runtime Köhnə Python iş mühiti - + A new version is available. Yeni versiya mövcuddur. - + Do you want to download %1? %1 yükləmək istəyirsiniz? - + Open changelog... Dəyişikliklər jurnalını açın... - + No updates available. You are already using the latest version. Yenilənmələr yoxdur. Siz artıq sonuncu versiyadan istifadə edirsiniz. - + &Check for Updates Yenilənmələri yo&xlamaq - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Sizin Python versiyanız (%1) köhnədir. Minimum tələb olunan versiya: %2. Yeni versiyanı quraşdırmaq istəyirsiniz? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Sizin Python versiyanız (%1) köhnədir. Lütfən axtarış vasitələrinin işləməsi üçün son versiyaya yeniləyin. Minimum tələb olunan versiya: %2. - + Checking for Updates... Yenilənmələr yoxlanılır... - + Already checking for program updates in the background Proqramın yenilənmələri, artıq arxa planda yoxlanılır - + Download error Endirilmə xətası - + Python setup could not be downloaded, reason: %1. Please install it manually. Python quraşdırmasını yükləmək mümkün olmadı: %1 Lütfən, əl ilə qyraşdırın. - - + + Invalid password Səhv şifrə - + Filter torrents... Torrentləri süzgəclə... - + Filter by: Buna görə süzgəclə: - + The password must be at least 3 characters long Şifrə ən az 3 işarədən ibarət olmalıdır - - - + + + RSS (%1) RSS (%1) - - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - "%1" torrenti torrent fayllarından ibarətdir, endirilməsinə davam etmək istəyirsinizmi? - - - + The password is invalid Şifrə səhvdir - + DL speed: %1 e.g: Download speed: 10 KiB/s EN sürəti: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s GN sürəti: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [E: %1, G: %2] qBittorrent %3 - - - + Hide Gizlətmək - + Exiting qBittorrent qBittorrentü'dən çıxılır - + Open Torrent Files Torrent faylları açmaq - + Torrent Files Torrent faylları @@ -4082,133 +4087,133 @@ Lütfən, əl ilə qyraşdırın. Net::DownloadHandlerImpl - - + + I/O Error: %1 Giriş/Çıxış xətası: %1 - + The file size (%1) exceeds the download limit (%2) Fayl ölçüsü (%1), endirmə limitini (%2) aşır - + Exceeded max redirections (%1) Maksimum yönləndirmə həddini aşdı (% 1) - + Redirected to magnet URI Maqnit URI-yə yönləndirildi - + The remote host name was not found (invalid hostname) Uzaq host adı tapılmadı (səhv host adı) - + The operation was canceled Əməliyyat ləğv edildi - + The remote server closed the connection prematurely, before the entire reply was received and processed Bütün cavablar alınmadan və işlənmədən uzaq server bağlantını vaxtından əvvəl kəsdi - + The connection to the remote server timed out Uzaq serverə bağlantının gözləmə vaxtı sona çatdı - + SSL/TLS handshake failed SSl/TLS bağlantısı alınmadı - + The remote server refused the connection Uzaq server bağlantıdan imtina etdi - + The connection to the proxy server was refused Proksi serverə bağlantı rədd edildi - + The proxy server closed the connection prematurely Proksi server bağlantını vaxtından əvvəl kəsdi - + The proxy host name was not found Proksi host adı tapılmadı - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Proksi serverə bağlantının vaxtı sona çatdı və ya proksi göndərilən tələbə vaxtında cavab vermədi - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy, bu tələbi yerinə yetirmək üçün doğrulama tələb edir, lakin təqdim olunan hər hansı bir istifadəçi adı və şifrəni qəbul etməyib - + The access to the remote content was denied (401) Uzaq serverdəki tərkiblərə giriş qadağan edildi (401) - + The operation requested on the remote content is not permitted Uzaq serverdəki tərkiblər üzərində tətləb olunan əməliyyata icazə verilmədi - + The remote content was not found at the server (404) Uzaq tərkiblər serverdə tapılmadı (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Uzaq server tərkiblər üzərində işləmək üçün kimlik doğrulaması tələb edir, lakin, verilən istifadəçi adı və şifrəni qəbul etmir. - + The Network Access API cannot honor the request because the protocol is not known Şəbəkəyə Giriş APİ-si, protokol naməlum olduğu üçün tələbi yerinə yetirə bilmir - + The requested operation is invalid for this protocol Bu protokol üçün tələb olunan əməliyyat səhvdir - + An unknown network-related error was detected Şəbəkə ilə əlaqəli naməlum bir xəta aşkar edildi - + An unknown proxy-related error was detected Proksi ilə əlaqəli naməlum bir xəta aşkarlandı - + An unknown error related to the remote content was detected Uzaq tərkiblərlə əlaqəli naməlum xəta aşkarlandı - + A breakdown in protocol was detected Protokolda nasazlıq aşkar edildi - + Unknown error Naməlum xəta @@ -5603,274 +5608,284 @@ Lütfən, əl ilə qyraşdırın. Əlavə - + Customize UI Theme... Fərdi İİ mövzusu... - + Transfer List Köçürmə siyahısı - + Confirm when deleting torrents Torrentlərin silinməsinin təsdiq edilməsi - + Shows a confirmation dialog upon pausing/resuming all the torrents Bütün torrentlərin dayandırılması/davam etdirilməsi üzərində təsdiqlənmə dialoqunu göstərir - + Confirm "Pause/Resume all" actions "Hamısını Dayandırın/Davam etdirin" əməlləri - + Use alternating row colors In table elements, every other row will have a grey background. Alternativ sıra rənglərindən istifadə edin - + Hide zero and infinity values Sıfır və sonsuzluq göstəricilərini gizlətmək - + Always Həmişə - + Paused torrents only Yalnız fasilədəki torrentlər - + Action on double-click İki dəfə klik əməli - + Downloading torrents: Torrentlər yüklənir: - - + + Start / Stop Torrent Torrenti Başlatmaq / Dayandırmaq - - + + Open destination folder Təyinat qovluğunu açmaq - - + + No action Əməl yoxdur - + Completed torrents: Tamamlanmış torrentlər - + Auto hide zero status filters Sıfır süzgəc nəticələrini avtomatik gizlətmək - + Desktop İş Masası - + Start qBittorrent on Windows start up ƏS işə düşdükdə qBittorrent'i başlatmaq - + Show splash screen on start up Başlanğıcda qarşılama ekranını göstərmək - + Confirmation on exit when torrents are active Aktiv torrenlər olduqda çıxarkən təsdiq etmək - + Confirmation on auto-exit when downloads finish Endirmələr sona çatdıqda avtomtik çıxışı təsdiq etmək - + + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> + <html><body><p>qBitttorenti, .torrent faylları və/vəya Magnet keçidləri<br/>üçün standart proqram kimi, <span style=" font-weight:600;">Standart proqramlar</span> dialoquna <span style=" font-weight:600;">İdarəetmə paneli bölməsindən</span> daxil olaraq təyin edə bilərsiniz.</p></body><head/></html> + + + KiB KB - + Torrent content layout: Torrent məzmunu maketi: - + Original Orijinal - + Create subfolder Alt qovluq yaratmaq - + Don't create subfolder Alt qovluq yaratmamaq - + The torrent will be added to the top of the download queue Torrent, fasilə vəziyyətində yükləmə siyahısına əlavə ediləcək - + Add to top of queue The torrent will be added to the top of the download queue Növbənin ən üst sırasına əlavə et - + When duplicate torrent is being added Torrentin təkrar nüsxəsi əlavə olunduqda - + Merge trackers to existing torrent İzləyiciləri mövcud torrentdə birləşdirin - + + Keep unselected files in ".unwanted" folder + Seçilməmiş faylları "baxılmamışlar" qovluğunda saxlamaq + + + Add... Əlavə edin... - + Options.. Seçimlər... - + Remove Silin - + Email notification &upon download completion Endirilmə başa çatdıqdan so&nra e-poçt bildirişi - + Peer connection protocol: İştirakçı bağlantı protokolu - + Any Hər hansı - + I2P (experimental) I2P (təcrübə üçün) - + <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> <html><head/><body><p>Əgər &quot;qarışıq rejim&quot; aktiv edilərsə I2P torrentlərə izləyicidən başqa digər mənbələrdən iştirakçılar əldə etməyə və heç bir anonimləşdirmə təmin etməyən adi IP-lərə qoşulmağa icazə verilir. Bu, istifadəçiyə I2P-nin anonimləşdirilmə maraqlı deyilsə, lakin yenə də I2P iştirakçılarına qoşulmaq istədiyi halda faydalı ola bilər.</p></body></html> - + Mixed mode Qarışıq rejim - + Some options are incompatible with the chosen proxy type! Bəzi parametrlıər seçilmiş proksi növü ilə uyğun gəlmir! - + If checked, hostname lookups are done via the proxy Əgər işarələnərsə, host adı axtarışı proksi ilə icra olunur. - + Perform hostname lookup via proxy Proksi vasitəsilə host adı axtarışını icra etmək - + Use proxy for BitTorrent purposes Proksini BitTorrent məqsədləri üçün istifadə et - + RSS feeds will use proxy RSS xəbər lentləri proksi istifadə edəcək - + Use proxy for RSS purposes RSS məqsədləri üçün proksi istifadə et - + Search engine, software updates or anything else will use proxy Axtarış mühərriki, proqram təminatı yenilənmələri və başqaları proksi istifdə edəcək - + Use proxy for general purposes Əsas məqsədlər üçün proksi istifadə et - + IP Fi&ltering İP fi&ltirləmə - + Schedule &the use of alternative rate limits Alternativ sürət limitinin istifadəsini planlaşdırmaq - + From: From start time Bu vaxtdan: - + To: To end time Bu vaxta: - + Find peers on the DHT network DHT şəbəkəsindəki iştirakçıları tapmaq - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5879,140 +5894,145 @@ Disable encryption: Only connect to peers without protocol encryption Şifrələməni söndürmək: İştirakşılara yalnız şifrələmə protokolu olmadan qoşulmaq - + Allow encryption Şifrələməyə icazə vermək - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Daha ətraflı</a>) - + Maximum active checking torrents: Maksimum aktiv torrent yoxlamaları: - + &Torrent Queueing &Torrent növbələnməsi - + When total seeding time reaches Ümumi göndərmə həddinə çatdıqda - + When inactive seeding time reaches Qeyri-aktiv göndərmə həddinə çatdıqda - + A&utomatically add these trackers to new downloads: Bu izləyiciləri a&vtomatik yükləmələrə əlavə edin: - + RSS Reader RSS Oxuyucu - + Enable fetching RSS feeds RSS lentlərinin alınmasını aktiv etmək - + Feeds refresh interval: Lentlərin yenilənmə intervalı: - + + Same host request delay: + Eyni host tələbi gecikməsi: + + + Maximum number of articles per feed: Hər iştirakçıya ən çox məqalə sayı: - - - + + + min minutes dəq - + Seeding Limits Paylaşım limitləri - + Pause torrent Torrentə fasilə - + Remove torrent Torrenti silmək - + Remove torrent and its files Torrenti ə fayllarını silmək - + Enable super seeding for torrent Torrent üçün super göndərişi aktivləşdirmək - + When ratio reaches Göstəricini aşdıqda - + RSS Torrent Auto Downloader RSS torrent avto yükləyici - + Enable auto downloading of RSS torrents RSS torrentlərinin avtomatik yüklənməsini aktiv etmək - + Edit auto downloading rules... Avtomatik yükləmə qaydalarına düzəliş... - + RSS Smart Episode Filter RSS Ağıllı Bölmə Filtri - + Download REPACK/PROPER episodes REPACK/PROPER bölümlərini endirmək - + Filters: Filtrlər: - + Web User Interface (Remote control) Veb İstifadəçi İnterfeysi (Uzaqdan idarəetmə) - + IP address: İP ünvanları: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6020,42 +6040,42 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv İPv4 və ya İPv6 ünvanı göstərin. Siz hər hansı İPv4 ünvanı üçün "0.0.0.0", hər hansı İPv6 ünvanı üçün "::", və ya İPv4 və İPv6-lərin hər ikisi üçün "*" göstərə bilərsiniz. - + Ban client after consecutive failures: Belə ardıcıl xətalardan sonra müştərini bloklamaq: - + Never Heç vaxt - + ban for: bundan sonra bloklamaq: - + Session timeout: Sessiya bitmə vaxtı: - + Disabled Söndürülüb - + Enable cookie Secure flag (requires HTTPS) Kukilərin təhlükəsizliyini aktiv etmək (HTTPS tələb olunur) - + Server domains: Server domenləri: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6068,37 +6088,37 @@ serveri tərəfindən istifadə olunan domen adını göstərməlisiniz. Çoxsaylı elementləri bölmək üçün ';' istifadə edin. '*' ümumi nişanından istifadə edə bilərsiniz - + &Use HTTPS instead of HTTP HTTP əvəzinə HTTPS &istifadə edin - + Bypass authentication for clients on localhost Locahosst-da müştəri üçün kimlik doğrulamasını ötürmək - + Bypass authentication for clients in whitelisted IP subnets İP alt şəbəkələri ağ siyahısında müştəri üçün kimlik doğrulamasını ötürmək - + IP subnet whitelist... İP al şəbəkəsi ağ siyahısı... - + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Yönləndirilmiş müştəri ünvanından (X-Forwarded-For header) istifadə etmək üçün əks proxy IP-lərini (və ya alt şəbəkələri, məs., 0.0.0.0/24) göstərin. Birdən çox girişi bölmək üçün ';' işarəsindən istifadə edin. - + Upda&te my dynamic domain name Dinamik domen adını &yeniləmək - + Minimize qBittorrent to notification area qBittorrent-i bildiriş çubuğuna endirmək @@ -6113,180 +6133,180 @@ serveri tərəfindən istifadə olunan domen adını göstərməlisiniz. Dil: - + Tray icon style: Trey nişanı tərzi: - - + + Normal Normal - + File association Fayl əlaqələri - + Use qBittorrent for .torrent files Torrent faylları üçün qBittorrent-i istifadə etmək - + Use qBittorrent for magnet links Maqnit keçidlər üçün qBittorrent-i istifadə etmək - + Check for program updates Proqramın yeni versiyasını yoxlamaq - + Power Management Enerjiyə Nəzarət - + Save path: Saxlama yolu: - + Backup the log file after: Bundan sonra jurnal faylını yedəkləmək: - + Delete backup logs older than: Bundan köhnə jurnal fayllarını silmək: - + When adding a torrent Torrent əlavə edildikdə: - + Bring torrent dialog to the front Torrent dialoqunu ön plana çıxarmaq - + Also delete .torrent files whose addition was cancelled Həmçinin əlavə edilməsi ləğv olunan .torrent fayllarını silmək - + Also when addition is cancelled Həmçinin əlavə edilməsi ləğv edildikdə - + Warning! Data loss possible! Xəbərdarlıq! Verilənlərin itirilə bilər! - + Saving Management Yaddaşa yazılmanın idarə edilməsi - + Default Torrent Management Mode: Standart Torrent İdarəetmə Rejimi: - + Manual Əl ilə - + Automatic Avtomatik - + When Torrent Category changed: Torrent Kateqoriyaları dəyişdirildikdə: - + Relocate torrent Torrentin yerini dəyişmək - + Switch torrent to Manual Mode Torrenti əl ilə idarə rrejiminə keçirmək - - + + Relocate affected torrents Təsirə məruz qalan torrentlərin yerini dəyişmək - - + + Switch affected torrents to Manual Mode Təsirə məruz qalan torrentləri əl ilə idarə rejiminə keçirmək - + Use Subcategories Alt kateqoriyaları istifadə etmək - + Default Save Path: Standart saxlama yolu: - + Copy .torrent files to: Torrent fayllarını buraya kopyalamaq: - + Show &qBittorrent in notification area &qBittorrenti bu bildiriş sahəsində göstərmək: - + &Log file Jurna&l faylı - + Display &torrent content and some options &Torrent tərkibini və bəzi seçimləri göstərmək - + De&lete .torrent files afterwards Əlavə edildikdən sonra torrent fayllarını si&lmək - + Copy .torrent files for finished downloads to: Bitmiş yükləmələr üçün .torrent fayllarını buraya kopyalamq: - + Pre-allocate disk space for all files Bütün fayllar üçün əvvəlcədən yer ayırmaq - + Use custom UI Theme Başqa İstifadəçi interfeysi mövzusu istifadə etmək - + UI Theme file: İİ mövzusu faylı: @@ -6296,214 +6316,214 @@ serveri tərəfindən istifadə olunan domen adını göstərməlisiniz. İnterfeys ayarlarının dəyişdirilməsi tətbiqi yenidən başlatmağı tələb edir - + Shows a confirmation dialog upon torrent deletion Torrentin silinməsinin təsdiq edilməsi dialoqunu göstərir - - + + Preview file, otherwise open destination folder Fayla öncədən baxış, əksa halda təyinat qovluğunu açmaq - - + + Show torrent options Torrent parametrlərini göstərmək - + Shows a confirmation dialog when exiting with active torrents Aktiv torrentlər olduqda tətbiqdən çıxarkən, çıxışı təsdiq etmək - + When minimizing, the main window is closed and must be reopened from the systray icon Yığıldıqda əsas pəncərə bağlanır və onu sistem treyindən yenidən açmaq olar - + The systray icon will still be visible when closing the main window Əsas pəncərə bağlandıqda treydəki nişanı hələ də görünəcəkdir - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window qBittorrent-i bildiriş çubuğuna endirmək - + Monochrome (for dark theme) Monoxrom (qara mövzu üçün) - + Monochrome (for light theme) Monoxrom (işıqlı mövzu üçün) - + Inhibit system sleep when torrents are downloading Torrentlər endirilən zaman komputerin yuxu rejiminə keçməsini əngəlləmək - + Inhibit system sleep when torrents are seeding Torrentlər paylaşılarkən komputerin yuxu rejiminə keçməsini əngəlləmək - + Creates an additional log file after the log file reaches the specified file size Jurnal faylı göstərilmiş ölçüyə çatdıqda sonra əlavə jurnal faylı yaradılır - + days Delete backup logs older than 10 days günlər - + months Delete backup logs older than 10 months aylar - + years Delete backup logs older than 10 years illər - + Log performance warnings Performans xəbərdarlıqlarını qeydə alamaq - + The torrent will be added to download list in a paused state Torrent, fasilə vəziyyətində yükləmə siyahısına əlavə ediləcək - + Do not start the download automatically The torrent will be added to download list in a paused state Endirməni avtomatik başlatmamaq - + Whether the .torrent file should be deleted after adding it Əlavə edildikdən sonra .torrent faylın silinib silinməməsi - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Daha çox hissələrə bölünmənin qarşısını almaq üçün diskdə tam fayl ölçüsündə yer ayrılır. Yalnız HDD-lər (Sərt Disklər) üçün yararlıdır. - + Append .!qB extension to incomplete files Tamamlanmamış fayllara .!qB uzantısı əlavə etmək - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Torrent endirilən zaman onun daxilindəki .torrent fayllarını endirməyi təklif etmək - + Enable recursive download dialog Təkrarlanan yükləmə dialoqunu aktiv etmək - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Avtomatik: Müxtəlif torrent xüsusiyyətləri (məs., saxlama yolu) əlaqəli kateqoriyalar tərəfindən təyin ediləcəkdir. Əl ilə: Müxtəlif torrent xüsusiyyətləri (məs., saxlama yolu) əl ilə daxil edilməlidir - + When Default Save/Incomplete Path changed: Standart saxlam/tamamlanmamış yolu dəyişdirildiyi zaman: - + When Category Save Path changed: Saxlama Yolu Kateqoriyası dəyişdirildiyində: - + Use Category paths in Manual Mode Kateqoriya yollarını Əl ilə Rejimində istifadə edin - + Resolve relative Save Path against appropriate Category path instead of Default one Nisbi saxlama yolunu, standarta yola görə deyil, uyğun kateqriya yoluna görə təyin edin - + Use icons from system theme Sistem mövzusundakı nişandan istifadə etmək. - + Window state on start up: Sistem açıldıqda pəncərnin vəziyyəti: - + qBittorrent window state on start up Sistemin açılışında qBittorrent pəncərəsinin vəziyyəti - + Torrent stop condition: Torrentin dayanma vəziyyəti: - - + + None Heç nə - - + + Metadata received Meta məlumatları alındı - - + + Files checked Fayllar yoxlanıldı - + Ask for merging trackers when torrent is being added manually Torrent əl ilə əlavə olunduqda izləyicilərin birləşdirilməsini soruşmaq - + Use another path for incomplete torrents: Tamamlanmamış torrentlər üçün başqa yoldan istifadə edin: - + Automatically add torrents from: Torrenti buradan avtomatik əlavə etmək: - + Excluded file names Fayl adları istisna edilir - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6533,763 +6553,769 @@ readme.txt: dəqiq fayl adını seçir. readme[0-9].txt: "readme1ştxt", "readme2ştxt"-ni seçir, lakin "readme10.txt"-ni seçmir. - + Receiver Qəbuledici - + To: To receiver Buraya: - + SMTP server: SMTP server: - + Sender Göndərən - + From: From sender Buradan: - + This server requires a secure connection (SSL) Bu server təhlükəsiz bağlantı (SSL) tələb edir - - + + Authentication Kimlik doğrulaması - - - - + + + + Username: İstifadəçi adı: - - - - + + + + Password: Şifrə: - + Run external program Xarici proqramı başladın - + Run on torrent added Torrent əlavə edildikdə başlatmaq - + Run on torrent finished Torrent tamamlandlqda başlatmaq - + Show console window Konsol pəncərəsini göstərmək - + TCP and μTP TCP və μTP - + Listening Port Dinlənilən port - + Port used for incoming connections: Daxil olan bağlantılar üçün istifadə olunan port - + Set to 0 to let your system pick an unused port Dəyəri 0 təyin edin ki, sistem istifadə olunmayan portu seçsin - + Random Təsadüfi - + Use UPnP / NAT-PMP port forwarding from my router UPnP / NAT-PMP portlarının yönləndirməsi üçün routerimdən istifadə etmək - + Connections Limits Bağlantı limiti - + Maximum number of connections per torrent: Hər torrent üçün ən çox bağlantı limiti: - + Global maximum number of connections: Ən çox ümumi bağlantı sayı: - + Maximum number of upload slots per torrent: Hər torrent üçün ən çox göndərmə yuvası sayı: - + Global maximum number of upload slots: Ən çox ümumi göndərmə yuvaları sayı: - + Proxy Server Proksi server: - + Type: Növ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Əks halda proksi server yalnız izləyici bağlantıları üçün istifadə olunur - + Use proxy for peer connections Proksi serveri, iştirakçı bağlantıları üçün istifadə etmək - + A&uthentication Kimlik doğr&ulaması - + Info: The password is saved unencrypted Məlumat: Parol, şifrələnməmiş şəkildə saxlanıldı - + Filter path (.dat, .p2p, .p2b): Filtr yolu (.dat, .p2p, .p2b): - + Reload the filter Filtri təkrarlamaq - + Manually banned IP addresses... İstifadəçinin qadağan etdiyi İP ünvanları... - + Apply to trackers İzləyicilərə tətbiq etmək - + Global Rate Limits Ümumi sürət limitləri - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KB/san - - + + Upload: Göndərmə: - - + + Download: Yükləmə: - + Alternative Rate Limits Alternativ sürət limitləri - + Start time Başlama vaxtı - + End time Bitmə tarixi - + When: Nə zaman: - + Every day Hər gün - + Weekdays Həftəiçi: - + Weekends Həstə sonları: - + Rate Limits Settings Sürət limitləri ayarları - + Apply rate limit to peers on LAN Sürət limitini LAN şəbəkəsindəki hər iştirakçıya tətbiq etmək - + Apply rate limit to transport overhead Sürət limitini trafik mübadiləsinə tətbiq etmək - + Apply rate limit to µTP protocol Sürət limitini µTP protokoluna tətbiq etmək - + Privacy Məxfi - + Enable DHT (decentralized network) to find more peers Daha çox iştirakçılar tapmaq üçün DHT (mərkəzləşməmiş şəbəkə) aktiv etmək - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) İştirakçıları uyğun qBittorrent müştəriləri ilə əvəzləmək (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Daha çox iştirakçılar tapmaq üçün İştirakçı mübadiləsini (PeX) aktiv etmək - + Look for peers on your local network Yerli şəbəkədəki iştirakçıları axtarmaq - + Enable Local Peer Discovery to find more peers Daha çox iştirakçılar tapmaq üçün Yerli İştirakçı Axtarışını aktiv etmək - + Encryption mode: Şifrələmə rejimi: - + Require encryption Şifrələmə tələbi - + Disable encryption Şifrələməni söndürmək: - + Enable when using a proxy or a VPN connection Proksi və ya VPN bağlantıları istifadə oluduqda - + Enable anonymous mode Anonim rejimi aktiv etmək - + Maximum active downloads: Ən çox aktiv yükləmələr: - + Maximum active uploads: Ən çox aktiv göndərmələr: - + Maximum active torrents: Ən çox aktiv torrentlər: - + Do not count slow torrents in these limits Bu limitlərdə yavaş torrentləri saymamaq - + Upload rate threshold: Göndərmə sürəti həddi: - + Download rate threshold: Yükləmə sürəti həddi: - - - + + + + sec seconds san - + Torrent inactivity timer: Torrent boşdayanma zamanlayıcısı: - + then sonra - + Use UPnP / NAT-PMP to forward the port from my router UPnP / NAT-PMP portlarının yönləndirməsi üçün routerimdən istifadə etmək - + Certificate: Sertifikat: - + Key: Açar: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>sertifikatlar haqqında məlumat</a> - + Change current password Hazırkı şifrəni dəyişmək - + Use alternative Web UI Alternativ Web İstifadəçi İnterfeysindən istifadə etmək - + Files location: Fayl yerləşməsi: - + Security Təhlükəsizlik - + Enable clickjacking protection Klikdən sui-istifadənin qarşısının alınmasını aktiv etnək - + Enable Cross-Site Request Forgery (CSRF) protection Saytlar arası sorğuların saxtalaşdırılmasından (CSRF) mühafizəni aktiv etmək - + Enable Host header validation Host başlığı doğrulamasını aktiv etmək - + Add custom HTTP headers Başqa HTTP başlıqları əlavə etmək - + Header: value pairs, one per line Başlıq: hər sətir başına bir dəyər cütü - + Enable reverse proxy support Əks proksi dəstəklənməsini açın - + Trusted proxies list: Etibarlı proksilər siyahısı: - + Service: Xidmət: - + Register Qeydiyyat - + Domain name: Domen adı: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Bu seçimi aktiv etmək torrent fayllarınızı <strong>birdəfəlik itirmək</strong> ilə nəticələnə bilər! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog İkinci seçimi aktiv etdikdə (&ldquo;Həmçinin əlavə edilmə ləğv edildikdə&rdquo;) torrent faylları hətta &ldquo;Torrent əlavə etmək&rdquo; dialoqunda &ldquo;<strong>İmtina</strong>&rdquo; vurduqda belə <strong>silinəcəkdir</strong> - + Select qBittorrent UI Theme file qBittorrent İstifadəçi İnterfeysi mövzusu faylını seçmək - + Choose Alternative UI files location Alternativ İİ faylları yerini seçmək - + Supported parameters (case sensitive): Dəstəklnən parametrlər (böyük-kiçik hərflərə həssas) - + Minimized Yığılmış - + Hidden Gizli - + Disabled due to failed to detect system tray presence Sistem çəkməcəsinin mövcudluğunu aşkar edə bilmədiyinə görə söndürüldü - + No stop condition is set. Dayanma vəziyyəti təyin edilməyib. - + Torrent will stop after metadata is received. Meta məlumatları alındıqdan sonra torrent dayanacaq. - - Torrents that have metadata initially aren't affected. - İlkin meta məlumatları olan torrentlər dəyişilməz qalır. - - - + Torrent will stop after files are initially checked. Faylların ilkin yoxlanışından sonra torrrent daynacaq. - + This will also download metadata if it wasn't there initially. Əgər başlanğıcda meta məlumatlar olmasa onlar da yüklənəcək. - + %N: Torrent name %N: Torrentin adı - + %L: Category %L: Kateqoriyası - + %F: Content path (same as root path for multifile torrent) %F: Məzmun yolu (çoxsaylı torrentlər üçün kök (root) yolu kimi) - + %R: Root path (first torrent subdirectory path) %R: Kök (root) yolu (ilk torrent alt qovluqları yolu) - + %D: Save path %D: Saxlama yolu - + %C: Number of files %C: Faylların sayı - + %Z: Torrent size (bytes) %Z: Torrentin ölçüsü (bayt) - + %T: Current tracker %T: Cari izləyici - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Növ: Mətni, ara boşluğunda kəsilmələrndən qorumaq üçün parametrləri dırnaq işarəsinə alın (məs., "%N") - + (None) (Heç nə) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Bir torrent endirmə və göndərmə sürəti, "Torrent boşdayanma zamanlayıcısı"nın saniyələrlə dəyərindən az olarsa, o, yavaş torrent hesab olunacaq - + Certificate Sertifikat - + Select certificate Sertifakatı seçin - + Private key Məxfi açar - + Select private key Məxfi açarı seçin - + + WebUI configuration failed. Reason: %1 + Veb İİ tənzimləməsini dəyişmək mümkün olmadı. Səbəb: %1 + + + Select folder to monitor İzləmək üçün qovluğu seçin - + Adding entry failed Girişin əlavə edilməsi alınmadı - - Location Error - Yerləşmə xətası + + The WebUI username must be at least 3 characters long. + Veb İİ istifadəçi adı ən az 3 işarədən ibarət olmalıdır. - - The alternative Web UI files location cannot be blank. - Alternativ Web İİ faylları yeri boş ola bilməz + + The WebUI password must be at least 6 characters long. + Veb İİ şifrəsi ən az 6 işarədən ibarət olmalıdır. + + + + Location Error + Yerləşmə xətası - - + + Choose export directory İxrac qovluğunu seçmək - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Bu seçim aktiv olduqda qBittorrent, yükləmə növbəsinə uğurla əlavə olunduqdan (ilk seçim) və ya olunmadıqdan (ikinci seçim) sonra, .torrent fayllarını <strong>siləcək</strong>. Bu sadəcə &ldquo;Torrent əlavə etmək&rdquo; menyusu vasitəsi ilə açılmış fayllara <strong>deyil</strong>, həmçinin, <strong>fayl növü əlaqələri</strong> vasitəsi ilə açılanlara da tətbiq ediləcəkdir - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent İİ mövzusu faylı (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiketlər (vergüllə ayrılmış) - + %I: Info hash v1 (or '-' if unavailable) %I: Məlumat heş'i v1 (və ya əgər əlçatmazdırsa '-') - + %J: Info hash v2 (or '-' if unavailable) %J: məlumat heş'i v2 (və ya əgər əlçatmazdırsa '-') - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent İD-si (ya məlumat heş'i sha-1 v1 üçün və ya v2/hibrid torrenti üçün qısaldılmış sha-256 məlumat heş' i) - - - + + + Choose a save directory Saxlama qovluğunu seçmək - + + Torrents that have metadata initially will be added as stopped. + Əvvəlcədən meta məlumatlara malik olan torrentlər dayandırılmış kimi əılavə ediləcək. + + + Choose an IP filter file İP filtri faylını seçmək - + All supported filters Bütün dəstəklənən filtrlər - + + The alternative WebUI files location cannot be blank. + Alternativ Veb İİ faylları üçün boş ola bilməz. + + + Parsing error Təhlil xətası - + Failed to parse the provided IP filter Təqdim olunan İP filtrinin təhlil baş tutmadı - + Successfully refreshed Uğurla təzələndi - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Təqdim olunan İP filtri uğurla təhlil olundu: %1 qayda tətbiq olundu. - + Preferences Tərcihlər - + Time Error Vaxt xətası - + The start time and the end time can't be the same. Başlama və bitmə vaxtı eyni ola bilməz. - - + + Length Error Ölçü xətası - - - The Web UI username must be at least 3 characters long. - Web İİ adı ən az 3 işarədən ibarət olmalıdır. - - - - The Web UI password must be at least 6 characters long. - Web İİ şifrəsi ən azı 6 işarədən ibarət olmalıdır - PeerInfo @@ -7372,163 +7398,163 @@ readme[0-9].txt: "readme1ştxt", "readme2ştxt"-ni seçir, l PeerListWidget - + Country/Region Ölkə/Bölgə - + IP/Address İP/Ünvanlar - + Port Port - + Flags Bayraqlar - + Connection Bağlantı - + Client i.e.: Client application Müştəri - + Peer ID Client i.e.: Client resolved from Peer ID İştirakçının İD müştərisi - + Progress i.e: % downloaded İrəliləyiş - + Down Speed i.e: Download speed Endirmə sürəti - + Up Speed i.e: Upload speed Göndərmə sürəti - + Downloaded i.e: total data downloaded Endirildi - + Uploaded i.e: total data uploaded Göndərildi - + Relevance i.e: How relevant this peer is to us. How many pieces it has that we don't. Uyğunluq - + Files i.e. files that are being downloaded right now Fayllar - + Column visibility Sütunun görünməsi - + Resize columns Sütunların ölçüsünü dəyişin - + Resize all non-hidden columns to the size of their contents Bütün gizli olmayan sütunların ölçüsünü tərkiblərinin ölçüsünə görə dəyişmək - + Add peers... İştirakçı əlavə edin... - - + + Adding peers İştirakçılar əlavə edilir - + Some peers cannot be added. Check the Log for details. Bəzi iştirakçılar əlavə edilə bilməz. Təfsilatı üçün Jurnal faylına baxın. - + Peers are added to this torrent. İştirakçılar bi torrentə əlavə edildilər. - - + + Ban peer permanently İştirakçını birdəfəlik əngəlləmək - + Cannot add peers to a private torrent Məxfi torrentə iştirakçı əlavə edilə bilməz - + Cannot add peers when the torrent is checking Torrent yoxlanılan zaman iştirakçı əlavə edilə bilməz - + Cannot add peers when the torrent is queued Torrent növbədə olduqda iştirakçı əlavə edilə bilməz - + No peer was selected İştirakçı seçilməyib - + Are you sure you want to permanently ban the selected peers? Siz seçilmiş iştirakçını birdəfəlik əngəlləmək istədiyinizə əminsiniz? - + Peer "%1" is manually banned İştirakçı "%1" həmişəlik əngəlləndi - + N/A Ə/D - + Copy IP:port İP portunu kopyalamaq @@ -7587,27 +7613,27 @@ readme[0-9].txt: "readme1ştxt", "readme2ştxt"-ni seçir, l PiecesBar - + Files in this piece: Bu hissədəki fayllar: - + File in this piece: Bu hissədəki fayl: - + File in these pieces: Bu hissələrdəki fayl: - + Wait until metadata become available to see detailed information Ətraflı məlumatı görmək üçün meta verilənlərinin daxil olmasını gözləyin - + Hold Shift key for detailed information Ətraflı məlumat üçün Shift düyməsini basıb saxlayın @@ -7809,35 +7835,60 @@ Bu qoşmalar söndürülüb. PowerManagement - + qBittorrent is active qBittorrent aktivdir - PreviewSelectDialog + PowerManagementInhibitor - - The following files from torrent "%1" support previewing, please select one of them: + + Power management found suitable D-Bus interface. Interface: %1 + Elektrik qidalanması idarəetmə vasitəsi uyğun D-Bus interfeysi tapdı. İnterfeys: %1 + + + + Power management error. Did not found suitable D-Bus interface. + Elektrik qidalanması idarəetməsi xətası. Uyğun D-Bus interfeysi tapılmadı. + + + + + + Power management error. Action: %1. Error: %2 + Elektrik qidalanması idarəetməsi xətası. Əməl: %1. Xəta: %2 + + + + Power management unexpected error. State: %1. Error: %2 + Elektrik qidalanması idarəetməsində gözlənilməz xəta baş verdi. Vəziyyət: %1. Xəta: %2 + + + + PreviewSelectDialog + + + The following files from torrent "%1" support previewing, please select one of them: Aşağıdakı "%1" torrentindəki fayllar öncədən baxışı dəstəkləyir, onlardan birini seçin: - + Preview Öncədən baxış - + Name Adı - + Size Ölçüsü - + Progress İrəliləyiş @@ -7870,27 +7921,27 @@ Bu qoşmalar söndürülüb. Private::FileLineEdit - + Path does not exist Yol mövcud deyil - + Path does not point to a directory Yol qovluğu göstərmir - + Path does not point to a file Yol fayla aparmır - + Don't have read permission to path Yol üçün oxumaq icazəsi yoxdur - + Don't have write permission to path Yol üçün yazmaq icazəsi yoxdur @@ -8087,50 +8138,50 @@ Bu qoşmalar söndürülüb. Saxlama yolu: - + Never Heç zaman - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (%3 var) - - + + %1 (%2 this session) %1 (%2 bu sesiyada) - - + + N/A Əlçatmaz - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (%2 üçün göndərilmə) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 ən çox) - + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 ümumi) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 orta.) @@ -8201,33 +8252,33 @@ Bu qoşmalar söndürülüb. RSS::AutoDownloader - - + + Invalid data format. Səhv tarix formatı - + Couldn't save RSS AutoDownloader data in %1. Error: %2 RSS avtomatik yükləmə tarixini %1 daxilində saxlamaq mümkün olmadı:. Xəta: %2 - + Invalid data format Səhv tarix formatı - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... "%1" RSS məqaləsi "%2" qaydası tərəfindən qəbul edildi. Torrent əlavə edilməyə cəhd edilir... - + Failed to read RSS AutoDownloader rules. %1 RSS avtomatik yükləmə qaydalarını oxumaq mümkün olmadı. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 RSS avtomatik yükləmə qaydaları yüklənə bilmədi. Səbəb: %1 @@ -8235,22 +8286,22 @@ Bu qoşmalar söndürülüb. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 RSS lentini "%1"-də/da yükləmək baş tutmadı. Səbəb: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS lenti "%1"-də/da yeniləndi. %2 yeni məqalə əlavə edildi. - + Failed to parse RSS feed at '%1'. Reason: %2 RSS lentini "%1"-də/da analiz etmək baş alınmadı. Səbəb: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS lenti "%1"-də/da uğurla yükləndi. Təhlili başlayır. @@ -8258,27 +8309,27 @@ Bu qoşmalar söndürülüb. RSS::Private::FeedSerializer - + Failed to read RSS session data. %1 RSS sesiya verilənlərini oxumaq mümknü olmadı. %1 - + Failed to save RSS feed in '%1', Reason: %2 RSS xəbərlərini "%1"-də saxlamaq mümkün olmadı. Səbəb: %2 - + Couldn't parse RSS Session data. Error: %1 RSS sessiyası verilənlərini təhlil etmək mümkün olmadı. XƏta: %1 - + Couldn't load RSS Session data. Invalid data format. RSS Sesiyası verilənləri yüklənə bilmədi. Səhv verilən formatı. - + Couldn't load RSS article '%1#%2'. Invalid data format. '%1#%2' RSS məqaləsi yüklənə bilmədi. Xəta verilən formatı. @@ -8299,99 +8350,99 @@ Bu qoşmalar söndürülüb. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" RSS sessiyası tənzimləməsi saxlanıla bilmədi. Fayl: "%1". Xəta:"%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" RSS sessiyası verilənləri saxlanıla bilmədi. Fayl: "%1". Xəta: "%2" - - + + RSS feed with given URL already exists: %1. Verilmiş URL ilə RSS lenti artıq mövcuddur: %1 - + Feed doesn't exist: %1. Xəbər lenti mövcud deyil: %1 - + Cannot move root folder. Kök (root) qovluğu köçürülə bilmir. - - + + Item doesn't exist: %1. Element tapılmadı: %1. - + Couldn't move folder into itself. Qovluğu öz daxilinə köçürmək mümkün deyil - + Cannot delete root folder. Kök qovluğu silinə bilmir. - + Failed to read RSS session data. %1 RSS sesiya verilənlərini oxumaq mümkün olmadı. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" RSS sesiya verilənlərini həll etmək mümkün olmadı. Fayl: "%1". Xəta: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." RSS sesiya verilənlərini yükləmək mümkün olmadı. Fayl: "%1". Xəta: "Səhv verilənlər formatı." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. RSS xəbər lenti yüklənə bilmədi. Xəbər lenti: "%1". Səbəb: URL tələb olunur. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. RSS xəbər lentini yükləmək alınmadı. Xəbər lenti: "%1". Səbəb: UİD səhvdir. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. RSS xəbər lentinin təkrarı aşkarlandı. UİD: "%1". Xəta: Belə görünür ki, tənzimləmə pozulub. - + Couldn't load RSS item. Item: "%1". Invalid data format. RSS elemntlərini yüləmək mümkün olmadı. Element: "%1". Verilənlər formatı səhvdir. - + Corrupted RSS list, not loading it. RSS siyahısı pozulub, o, yüklənmir. - + Incorrect RSS Item path: %1. Düzgün olmayan RSS elementi yolu: %1 - + RSS item with given path already exists: %1. Verilmiş yol ilə RSS elementi artıq mövcuddur: %1 - + Parent folder doesn't exist: %1. Ana qovluq yoxdur; %1. @@ -8504,64 +8555,69 @@ Bu qoşmalar söndürülüb. Xəbər lenti ünvanına düzəliş et - + Please choose a folder name Qovluğu ad verin - + Folder name: Qovluğun adı: - + New folder Yeni qovluq - - + + Please type a RSS feed URL RSS lenti URL-nu yazın - - + + Feed URL: Lent URL-u: - + Deletion confirmation Silinmənin təsdiqlənməsi - + Are you sure you want to delete the selected RSS feeds? Seçilmiş RSS lentlərini silmək istədiyinizə əminsiniz? - + Please choose a new name for this RSS feed RSS lenti üçün yeni ad seçin - + New feed name: Yeni lent adı: - + Rename failed Adı dəyişdirilə bilmədi - + Date: Tarix: - + + Feed: + Lent: + + + Author: Müəllif: @@ -8675,132 +8731,132 @@ Bu qoşmalar söndürülüb. Ölçüsü: - + Name i.e: file name Adı - + Size i.e: file size Ölçüsü - + Seeders i.e: Number of full sources Göndəricilər - + Leechers i.e: Number of partial sources İstismar edənlər - + Search engine Axtarış vasitəsi - + Filter search results... Axtarış nəticələrini filtrləmək... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Nəticələr (<i>%2</i>dən/dan <i>%1</i> göstərmək): - + Torrent names only Torrent adı yalnız - + Everywhere Hər yerdə - + Use regular expressions Müntəzəm ifadələri istiadə etmək - + Open download window Endirmə pəncrəsini açın - + Download Endirmək - + Open description page Tanıtma səhifəsini açmaq - + Copy Kopyalamaq - + Name Adı - + Download link Endirmə keçidi - + Description page URL Tanıtma səhifəsi URL-u - + Searching... Axtarılır... - + Search has finished Axtarış sona çatdı - + Search aborted Axtarış ləğv edildi - + An error occurred during search... Axtarış zamanı xəta baş verdi... - + Search returned no results Axtarış nəticə vermədi - + Column visibility Sütunun görünməsi - + Resize columns Sütunların ölçüsünü dəyişin - + Resize all non-hidden columns to the size of their contents Bütün gizli olmayan sütunların ölçüsünü tərkiblərinin ölçüsünə görə dəyişmək @@ -8808,104 +8864,104 @@ Bu qoşmalar söndürülüb. SearchPluginManager - + Unknown search engine plugin file format. Naməlum axtarış vasitəsi qoşması fayl formatı. - + Plugin already at version %1, which is greater than %2 Qoşma artıq %2 versiyasından böyük olan %1 versiyasındadır - + A more recent version of this plugin is already installed. Bu qoşmanın artıq ən son versiyası quraşdırılıb. - + Plugin %1 is not supported. %1 qoşması dəstəklənmir. - - + + Plugin is not supported. Qoşma dəstəklənmir. - + Plugin %1 has been successfully updated. %1 qoşması uğurla yeniləndi. - + All categories Bütün kateqoriyalar - + Movies Filmlər - + TV shows TV verilişləri - + Music Musiqi - + Games Oyun - + Anime Cizgi filmləri - + Software Proqram təminatı - + Pictures Şəkillər - + Books Kitablar - + Update server is temporarily unavailable. %1 Yeniləmə serveri müvəqqəti işləmir. %1 - - + + Failed to download the plugin file. %1 Qoşma faylının endrilməsi alınmadı. %1 - + Plugin "%1" is outdated, updating to version %2 "%1" qoşmasının bersiyası köhnədir, %2 versiyasına yenilənir - + Incorrect update info received for %1 out of %2 plugins. %2 qoşmalarından %1 yenilənməsi haqqında səhv məlumatı alındı. - + Search plugin '%1' contains invalid version string ('%2') '%1' axtarış qoşması versiyası ('%2') səhv sətirlərdən ibarətdir @@ -8915,10 +8971,10 @@ Bu qoşmalar söndürülüb. - - - - + + + + Search Axtarış @@ -8988,39 +9044,39 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı Seçin... - - - + + + Search Engine Axtarış sistemi - + Please install Python to use the Search Engine. Axtarış sistemini istifadə etmək üçün Python quraşdırın. - + Empty search pattern Boş axtarış nümunəsi - + Please type a search pattern first Öncə axtarış nümunəsini daxil edin - + Stop Dayandırmaq - + Search has finished Axtarış sona çatdı - + Search has failed Axtarış alınmadı @@ -9170,52 +9226,52 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı SpeedPlotView - + Total Upload Ümumi göndərilən - + Total Download Ümumi endirilən - + Payload Upload Göndərilən trafik - + Payload Download Endirilən trafik - + Overhead Upload Göndərilən əlavə trafik - + Overhead Download Endirilən əlavə trafik - + DHT Upload DHT göndərmə - + DHT Download DHT yükləmə - + Tracker Upload İzləyicinin göndərdiyi - + Tracker Download İzləyicinin endirdiyi @@ -9424,13 +9480,13 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı - + No direct connections. This may indicate network configuration problems. Birbaşa bağlantılar yoxdur. Bu şəbəkə bağlantısı probleminə işarədir. - + DHT: %1 nodes DHT: %1 qovşaqlar @@ -9440,29 +9496,29 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı qBittorrenti yenidən başlatmaq lazımdır! - - - + + + Connection Status: Bağlantının vəziyyəti: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Şəbəkədən kənar: Bu, adətən o deməkdir ki, qBittorrent-in daxil olan bağlantılar üçün seçilmiş portları dinləməsi baş tutmadı - + Online Şəbəkədə - + Click to switch to alternative speed limits Alternativ sürət limitlərinə keçmək üçün vurun - + Click to switch to regular speed limits Müntəzəm sürət limitlərinə keçmək üçün vurun @@ -9629,17 +9685,17 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı TagFilterModel - + Tags Etiketlər - + All Hamısı - + Untagged Etiketlənməyən @@ -9647,62 +9703,62 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı TagFilterWidget - + Add tag... Etiket əlavə etmək - + Remove tag Etiketi silmək - + Remove unused tags İstifadəsiz etiketləri silmək - + Resume torrents Torrentləri davam etdirmək - + Pause torrents Torrentlərə fasilə - + Remove torrents Torrentləri silin - + New Tag Yeni etiket - + Tag: Etiket: - + Invalid tag name Səhv etiket adı - + Tag name '%1' is invalid '%1' etiket adı səhvdir - + Tag exists Etiket mövcuddur - + Tag name already exists. Etiket adı artıq mövcuddur. @@ -9832,32 +9888,32 @@ Başqa ad verin və yenidən cəhd edin. TorrentContentModel - + Name Ad - + Progress Gedişat - + Download Priority Endirmə üstünlüyü - + Remaining Qalır - + Availability Mövcuddur - + Total Size Ümumi ölçü @@ -9907,97 +9963,115 @@ Başqa ad verin və yenidən cəhd edin. Ad dəyişmədə xəta - + Renaming Adı dəyişdirilir - + New name: Yeni ad: - + Column visibility Sütunun görünməsi - + Resize columns Sütunların ölçüsünü dəyişin - + Resize all non-hidden columns to the size of their contents Bütün gizli olmayan sütunların ölçüsünü tərkiblərinin ölçüsünə görə dəyişmək - + Open Açın - + Open containing folder Bu tərkibli qovluğu aç - + Rename... Adını dəyişin.. - + Priority Üstünlük - - + + Do not download Endirməyin - + Normal Normal - + High Yüksək - + Maximum Ən çox - + By shown file order Göstərilən fayl sırasına görə - + Normal priority Adi üstünlük - + High priority Yüksək üstünlük - + Maximum priority Ən yüksək üstünlük - + Priority by shown file order Göstərilən fayl sırasına görə üstünlük + + TorrentCreatorController + + + Too many active tasks + Həddindən çox aktiv tapşırıqlar + + + + Torrent creation is still unfinished. + Torrent yaradılması hələ başa çatmayıb. + + + + Torrent creation failed. + Torrent yaradılması uğursuz oldu + + TorrentCreatorDialog @@ -10022,13 +10096,13 @@ Başqa ad verin və yenidən cəhd edin. - + Select file Faylı seçmək - + Select folder Qovluğu seçmək @@ -10053,189 +10127,133 @@ Başqa ad verin və yenidən cəhd edin. Hissənin ölçüsü: - + Auto Avtomatik - - 16 KiB - 16 KB - - - - 32 KiB - 32 KB - - - - 64 KiB - 64 KB - - - - 128 KiB - 128 KB - - - - 256 KiB - 256 KB - - - - 512 KiB - 512 KB - - - - 1 MiB - 1 MB - - - - 2 MiB - 2 MB - - - - 4 MiB - 4 MB - - - - 8 MiB - 8 MB - - - - 16 MiB - 16 MB - - - - 32 MiB - 32 MB - - - + Calculate number of pieces: Hissələrin sayını hesablamaq: - + Private torrent (Won't distribute on DHT network) Məxfi torrent (DHT şəbəkəsində paylaşılmayacaq) - + Start seeding immediately Paylaşımı dərhal başlatmaq - + Ignore share ratio limits for this torrent Bu torrent üçün paylaşım nisbəti limitini inkar etmək - + Optimize alignment Faylların nizamalanmasını optimallaşdırmaq - + Align to piece boundary for files larger than: Bundan böyük fayl hissələrini bu ölçüyə görə nizamlamaq: - + Disabled Söndürülüb - + KiB KB - + Fields Sahələr - + You can separate tracker tiers / groups with an empty line. İzləyici səviyyələrini/qruplarını boş bir sətirlə ayırmaq olar. - + Web seed URLs: Veb göndərişi URL-ları: - + Tracker URLs: İzləyici URL-ları: - + Comments: Şərhlər: - + Source: Mənbə: - + Progress: Gedişat: - + Create Torrent Torrent yaratmaq - - - + + Torrent creation failed Torrent yaratmaq alınmadı - + Reason: Path to file/folder is not readable. Səbəbi: Fayla/qovluğa yol oxuna bilən deyil. - + Select where to save the new torrent Yeni torrenti harada saxlayacağınızı seçin - + Torrent Files (*.torrent) Torrent faylları (*.torrent) - - Reason: %1 - Səbəbi: %1 + + Add torrent to transfer list failed. + Köçürmə siyahısına torrent əlavə etmək baş tutmadı. + + + + Reason: "%1" + Səbəb: "%1" - - Reason: Created torrent is invalid. It won't be added to download list. - Səbəbəi: Torrentin yaradılması alınmadı. O endirmə siyahısına əlavə edilə bilməz. + + Add torrent failed + Torrent əlavə edilməsi baş tutmadı - + Torrent creator Torrent yaradıcı - + Torrent created: Yaradılan torrent: @@ -10243,32 +10261,32 @@ Başqa ad verin və yenidən cəhd edin. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Baxılmış qovluqların tənzimləməsini yükləmək mümkün olmadı. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" %1-dən baxılmış qovluqların tənzimləməsini həll etmək mümkün olmadı. Xəta: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." %1-dən baxılmış qovluqların tənzimləməsini yükləmək mükün olmadı. Xəta: "Səhv verilənlər formatı". - + Couldn't store Watched Folders configuration to %1. Error: %2 İzlənilən qovluq tənzilmləməsi %1-ə/a yazıla bilmədi. Xəta: %2 - + Watched folder Path cannot be empty. İzlənilən qovluq yolu boş ola bilməz. - + Watched folder Path cannot be relative. İzlənilən qovluq yolu nisbi ola bilməz. @@ -10276,22 +10294,27 @@ Başqa ad verin və yenidən cəhd edin. TorrentFilesWatcher::Worker - + + Invalid Magnet URI. URI: %1. Reason: %2 + Xətalı Magnet keçidi. Keçid ünvanı: %1. Səbəb: %2 + + + Magnet file too big. File: %1 Maqnit fayl çox böyükdür. Fayl: %1 - + Failed to open magnet file: %1 Maqnit faylı açıla bilmədi: %1 - + Rejecting failed torrent file: %1 Uğursuz torrent faylından imtina edilir: %1 - + Watching folder: "%1" İzlənilən qovluq: "%1" @@ -10445,21 +10468,69 @@ Başqa ad verin və yenidən cəhd edin. Saxlama yolunu seçin - + Not applicable to private torrents Şəxsi torrentlərə tətbiq olunmur - + No share limit method selected Paylaşma limiti üsulu seçilməyib - + Please select a limit method first Öncə paylaşma limitini seçin + + TorrentShareLimitsWidget + + + + + Default + Standart + + + + + + Unlimited + Limitsiz + + + + + + Set to + Təyin edin + + + + Seeding time: + Paylama vaxtı: + + + + + + + min + minutes + dəq + + + + Inactive seeding time: + Qeyri-aktiv paylama vaxtı: + + + + Ratio: + Nisbət: + + TorrentTagsDialog @@ -10468,7 +10539,7 @@ Başqa ad verin və yenidən cəhd edin. Torrent etiketləri - + New Tag Yeni etiket @@ -10501,115 +10572,115 @@ Başqa ad verin və yenidən cəhd edin. TorrentsController - + Error: '%1' is not a valid torrent file. Xəta: '%1' torrent faylı düzgün deyil. - + Priority must be an integer Üstünlük tam ədəd olmalıdır - + Priority is not valid Üstünlük etibarsızdır - + Torrent's metadata has not yet downloaded Torrent meta verilənləri hələlik yüklənməyib - + File IDs must be integers Fayl İD-ləri uyğunlaşdırılmalıdır - + File ID is not valid Fayl İD-ləri etibarlı deyil - - - - + + + + Torrent queueing must be enabled Torrent növbələnməsi aktiv edilməlidir - - + + Save path cannot be empty Saxlama yolu boş ola bilməz - - + + Cannot create target directory Hədəf kataloqu yaradıla bilmir - - + + Category cannot be empty Kateqoriya boş ola bilməz - + Unable to create category Kateqoriya yaratmaq mümkün olmadı - + Unable to edit category Kateqoriyaya düzəliş etmək mümkün olmadı - + Unable to export torrent file. Error: %1 Torrent faylın ixracı mümkün deyil. Xəta: %1 - + Cannot make save path Saxlama yolu yaradıla bilmədi - + 'sort' parameter is invalid 'çeşid' parametri səhvdir - + "%1" is not a valid file index. "%1" düzgün indeks faylı deyil. - + Index %1 is out of bounds. %1 indeksi hüdülardan kənardadır. - - + + Cannot write to directory Qovluğa yazmaq mümkün olmadı - + WebUI Set location: moving "%1", from "%2" to "%3" Veb İİ, yerdəyişmə: "%1" "%2"-dən/dan "%3"-ə\a - + Incorrect torrent name Səhv torrent adı - - + + Incorrect category name Səhv kateqoriya adı @@ -10638,160 +10709,198 @@ Başqa ad verin və yenidən cəhd edin. - TrackerListWidget + TrackerListModel - - + Working İşləyir - + Disabled Söndürülüb - + Disabled for this torrent Bu torrent söndürülüb - - + This torrent is private Bu torrent məxfidir - + + N/A + Əlçatmaz + + + Updating... Yenilənir... - + Not working İşləmir - + + Tracker error + İzləyici xətası + + + + Unreachable + Əlçatmaz + + + Not contacted yet Hələ qoşulmayıb - - - - - N/A - M/D + + Invalid status! + Xətalı vəziyyət! + + + + URL/Announce endpoint + Keçid ünvanını/son nöqtəni elan edin + + + + Tier + Səviyyə + + + + Protocol + Protokol + + + + Status + Vəziyyəti + + + + Peers + İştirakçılar + + + + Seeds + Göndəricilər + + + + Leeches + Sui-istifadə edənlər + + + + Times Downloaded + Endirilmə sayı + + + + Message + İsmarıc + + + + Next announce + Növbəti anons + + + + Min announce + Ən az anons + + + + v%1 + v%1 + + + + TrackerListWidget + + + This torrent is private + Bu torrent məxfidir - + Tracker editing İzləyicilərə düzəliş edilir - + Tracker URL: İzləyici URL-u: - - + + Tracker editing failed İzləyicilərə düzəliş alınmadı - + The tracker URL entered is invalid. Daxil edilən izləyici URL-u səhvdir - + The tracker URL already exists. İzləyici URL-u artıq mövcuddur. - + Edit tracker URL... İzləyici URL-na düzəliş edin... - + Remove tracker İzləyicini silmək - + Copy tracker URL İzləyici URL-nu kopyalamaq - + Force reannounce to selected trackers Seçilmiş izləyicilərə məcburi təkrar anons etmək - + Force reannounce to all trackers Bütün izləyicilərə məcburi təkrar anons etmək - - Tier - Səviyyə - - - - URL - URL - - - - Status - Vəziyyət - - - - Seeds - Göndəricilər - - - - Times Downloaded - Endirilmə sayı - - - + Resize columns Sütunların ölçüsünü dəyişin - + Resize all non-hidden columns to the size of their contents Bütün gizli olmayan sütunların ölçüsünü tərkiblərinin ölçüsünə görə dəyişmək - - Peers - İştirakçılar - - - + Add trackers... İzləyicilər əlavə edin... - - Leeches - Sui-istifadə edənlər - - - - Message - İsmarıc - - - + Column visibility Sütunun görünməsi @@ -10799,47 +10908,47 @@ Başqa ad verin və yenidən cəhd edin. TrackersAdditionDialog - + Add trackers İzləyicilər əlavə edin - + List of trackers to add (one per line): Əlavə ediləcək izləyicilərin siyahısı (hər sətirə bir) - + µTorrent compatible list URL: µTorrent ilə uyğun siyahı URL-u: - + Download trackers list İzləyici siyahısını endirin - + Add Əlavə edin - + Trackers list URL error İzləyici siyahısı ünvanı səhvdir - + The trackers list URL cannot be empty İzləyici siyahısı ünvanı boş ola bilməz - + Download trackers list error İzləyici siyahısını endirilməsində xəta - + Error occurred when downloading the trackers list. Reason: "%1" İzləyici siyahısı endirilən zaman xəta baş verdi. Səbəb: "%1" @@ -10847,67 +10956,62 @@ Başqa ad verin və yenidən cəhd edin. TrackersFilterWidget - - All (0) - this is for the tracker filter - Bütün (0) - - - - Trackerless (0) - İzləyicilərsiz (0) + + Warning (%1) + Xəbərdarlıq (%1) - Error (0) - Xəta (0) - - - - Warning (0) - Xəbərdarlıq (0) - - - - - Trackerless - İzləyicilərsiz + Trackerless (%1) + İzləyicilərsiz (%1) - - - Error (%1) - Xəta (%1) + + Tracker error (%1) + İzləyici xətası (%1) - - - Warning (%1) - Xəbərdarlıq (%1) + + Other error (%1) + Başqa xəta (%1) - - Trackerless (%1) - İzləyicilərsiz (%1) + + Remove tracker + İzləyicini silmək - + Resume torrents Torrentləri davam etdirmək - + Pause torrents Torrentlərə fasilə - + Remove torrents Torrentləri silin - - + + Removal confirmation + Silinmənin təsdiqi + + + + Are you sure you want to remove tracker "%1" from all torrents? + "%1" izləyicisini bütün torrentlərdən silmək istədiyinizə əminisiniz? + + + + Don't ask me again. + Bir daha soruşmamaq. + + + All (%1) this is for the tracker filter Hamısı (%1) @@ -11036,214 +11140,220 @@ Başqa ad verin və yenidən cəhd edin. Xətalı - + Name i.e: torrent name Ad - + Size i.e: torrent size Ölçü - + Progress % Done Gedişat - + Status Torrent status (e.g. downloading, seeding, paused) Vəziyyət - + Seeds i.e. full sources (often untranslated) Göndəricilər - + Peers i.e. partial sources (often untranslated) İştirakçılar - + Down Speed i.e: Download speed Endirmə sürəti - + Up Speed i.e: Upload speed Göndərmə sürəti - + Ratio Share ratio Reytinq - + ETA i.e: Estimated Time of Arrival / Time left Qalan Vaxt - + Category Kateqoriya - + Tags Etiketlər - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Əlavə edilib - + Completed On Torrent was completed on 01/01/2010 08:00 Tamamlanıb - + Tracker İzləyici - + Down Limit i.e: Download limit Endirmə limiti - + Up Limit i.e: Upload limit Göndərmə limiti - + Downloaded Amount of data downloaded (e.g. in MB) Endirildi - + Uploaded Amount of data uploaded (e.g. in MB) Göndərildi - + Session Download Amount of data downloaded since program open (e.g. in MB) Sesiyada yüklənən - + Session Upload Amount of data uploaded since program open (e.g. in MB) Sesiyada göndərilən - + Remaining Amount of data left to download (e.g. in MB) Qalır - + Time Active Time (duration) the torrent is active (not paused) Aktivlik müddəti - + Save Path Torrent save path Yolu saxla - + Incomplete Save Path Torrent incomplete save path Tamamlanmayanların saxlama yolu - + Completed Amount of data completed (e.g. in MB) Başa çatdı - + Ratio Limit Upload share ratio limit Nisbət həddi - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Son görünən tamamlanmış - + Last Activity Time passed since a chunk was downloaded/uploaded Sonuncu aktiv - + Total Size i.e. Size including unwanted data Ümumi ölçü - + Availability The number of distributed copies of the torrent Mövcud - + Info Hash v1 i.e: torrent info hash v1 Məlumat heş-i v1 - + Info Hash v2 i.e: torrent info hash v2 Məlumat heş-i v2 - - + + Reannounce In + Indicates the time until next trackers reannounce + Növbəti anons vaxtı + + + + N/A Ə/D - + %1 ago e.g.: 1h 20m ago %1 əvvəl - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (%2 üçün göndərildi) @@ -11252,334 +11362,339 @@ Başqa ad verin və yenidən cəhd edin. TransferListWidget - + Column visibility Sütunun görünməsi - + Recheck confirmation Yenidən yoxlamanı təsdiq etmək - + Are you sure you want to recheck the selected torrent(s)? Seçilmiş torrent(lər)i yenidən yoxlamaq istədiyinizə əminsiniz? - + Rename Adını dəyişmək - + New name: Yeni ad: - + Choose save path Saxlama yolunu seçmək - + Confirm pause Fasiləni təsdiq et - + Would you like to pause all torrents? Bütün torrenlərə fasilə verilsin? - + Confirm resume Davam etdirməni təsdiqlə - + Would you like to resume all torrents? Bütün torrentlər davam etdirilsin? - + Unable to preview Öncədən baxış alınmadı - + The selected torrent "%1" does not contain previewable files "%1" seçilmiş torrent öncədən baxıla bilən fayllardan ibarət deyil - + Resize columns Sütunların ölçüsünü dəyişin - + Resize all non-hidden columns to the size of their contents Bütün gizli olmayan sütunların ölçüsünü tərkiblərinin ölçüsünə görə dəyişmək - + Enable automatic torrent management Avtomatik Torrent İdarəetməsini aktiv edin - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Seçilmiş torrent(lər) üçün avtomatik torrent idarəetməsini aktiv etmək istədiyinizə əminsiniz? Torrentlər başqa yerə köçürülə bilər. - + Add Tags Etiketlər əlavə etmək - + Choose folder to save exported .torrent files İxrac edilmiş .torrent fayllarının saxlanılması üçün qovluq seçin - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" ştorrent faylın ixracı baş tutmadı. Torrent: "%1". Saxlama yolu: "%2". Səbəb: "%3" - + A file with the same name already exists Eyni adlı fayl artıq mövcuddur - + Export .torrent file error .torrent faylın ixracı xətası - + Remove All Tags Bütün etiketləri silmək - + Remove all tags from selected torrents? Seçilmiş torrentlərdən bütün etiketlər silinsin? - + Comma-separated tags: Vergüllə ayrılan etiketlər: - + Invalid tag Yalnış etiket - + Tag name: '%1' is invalid Etiket adı: "%1" səhvdir - + &Resume Resume/start the torrent Davam etdi&rin - + &Pause Pause the torrent &Fasilə - + Force Resu&me Force Resume/start the torrent &Məcburi davam etdirin - + Pre&view file... &Fayla öncədən baxış... - + Torrent &options... T&orrent seçimləri... - + Open destination &folder Təyinat &qovluğunu açın - + Move &up i.e. move up in the queue Y&uxarı köçürün - + Move &down i.e. Move down in the queue &Aşağı köçürün - + Move to &top i.e. Move to top of the queue Ən üs&tə köçürün - + Move to &bottom i.e. Move to bottom of the queue Ən aşağı&ya köçürün - + Set loc&ation... Y&er təyin edin... - + Force rec&heck Məcburi tə&krar yoxlayın - + Force r&eannounce Məcburi təkrar anons &edin - + &Magnet link &Maqnit keçid - + Torrent &ID Torrent &İD-si - + + &Comment + &Şərh + + + &Name A&d - + Info &hash v1 Məlumat &heşi v1 - + Info h&ash v2 Məlum&at heşi v2 - + Re&name... Adı&nı dəyişin... - + Edit trac&kers... İz&ləyicilərə düzəliş... - + E&xport .torrent... .torrent faylı i&xrac edin... - + Categor&y Kateqori&ya - + &New... New category... Ye&ni... - + &Reset Reset category Sıfı&rlayın - + Ta&gs Etike&tlər - + &Add... Add / assign multiple tags... Əl&avə edin... - + &Remove All Remove all tags &Hamısını silin - + &Queue &Növbə - + &Copy &Kopyalayın - + Exported torrent is not necessarily the same as the imported İxrac edilən torrent idxal edilən torrent kimi vacib deyil - + Download in sequential order Ardıcıl şəkildə yükləmək - + Errors occurred when exporting .torrent files. Check execution log for details. Torrent faylı ixrac olunarkən xətalar baş verdi. Ətraflı məlumat üçün icra olunma jurnalına baxın. - + &Remove Remove the torrent &Silin - + Download first and last pieces first Öncə İlk və son hissələri endirmək - + Automatic Torrent Management Avtomatik Torrent İdarəetməsi - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Avtomatik rejim o deməkdir ki, müxtəlif torrent xüsusiyyətləri (məs., saxlama yolu) uyğun kateqoriyalara görə müəyyən ediləcəkdir - + Can not force reannounce if torrent is Paused/Queued/Errored/Checking Fasilədə/Növbədə/Xətalı/Yoxlamada olduqda torrent təkrar məcburi anons edilə bilməz - + Super seeding mode Super göndərmə rejimi @@ -11624,28 +11739,28 @@ Başqa ad verin və yenidən cəhd edin. Nişan İD-si - + UI Theme Configuration. İİ mövzusu tənzimləməsi. - + The UI Theme changes could not be fully applied. The details can be found in the Log. İİ mövzusu dəyişikliklərini tam olaraq tətbiq etmək mümkün olmadı. Ətraflı məlumat üçün Jurnala bax. - + Couldn't save UI Theme configuration. Reason: %1 İİ mövzusu tənzimləməsini saxlamaq mümkün olmadı. Səbəb: %1 - - + + Couldn't remove icon file. File: %1. Nişan faylını silmək mümkün olmadı. Fayl: %1 - + Couldn't copy icon file. Source: %1. Destination: %2. Nişan faylını kopyalamaq mümkün olmadı. Mənbə: %1. Hədəf: %2 @@ -11705,35 +11820,60 @@ Başqa ad verin və yenidən cəhd edin. Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python aşkarlandı, əmrin adı: "%1", versiya: "%2" + + Found Python executable. Name: "%1". Version: "%2" + Python icra faylı tapıldı. Adı:"%1". Versiya: "%2" - Python not detected - Python aşkar edilmədi + Failed to find Python executable. Path: "%1". + Python icra faylını tapmaq mümkün olmadı. Yol: "%1". + + + + Failed to find `python3` executable in PATH environment variable. PATH: "%1" + PATH mühit dəyişənində `python3` icra faylını tapmaq mümkün olmadı. PATH: "%1" + + + + Failed to find `python` executable in PATH environment variable. PATH: "%1" + `python` icra faylını PATH mühit dəyişənində tapmaq mümkün olmadı. PATH: "%1" + + + + Failed to find `python` executable in Windows Registry. + `python` icra faylını Windows registrində tapmaq mümkün olmadı. + + + + Failed to find Python executable + Python icra faylını tapmaq mükün olmadı Utils::IO - + File open error. File: "%1". Error: "%2" Faylın açılması xətası. Fayl: "%1". Xəta: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Fayl ölçüsü limiti aşır. Fayl: "%1". Faylın ölçüsü: %2. Ölçünün limiti: %3 - + + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 + Faylın ölçüsü verilənlər ölçüsünün limitini aşır. Fayl: "%1". Faylın ölçüsü: "%2" Massiv limiti: "%3" + + + File read error. File: "%1". Error: "%2" Faylın oxunması xətası. Fayl: "%1". Xəta: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Ölçü uyğunsuzluğunu oxuyun. Fayl: "%1". Gözlənilən: %2. Aktual: %3 @@ -11764,32 +11904,32 @@ Başqa ad verin və yenidən cəhd edin. WatchedFoldersModel - + Watched Folder İzlənilən qovluq - + Watched folder path cannot be empty. İzlənilən qovluq yolu boş ola bilməz - + Watched folder path cannot be relative. İzlənilən qovluq yolu nisbi ola bilməz. - + Folder '%1' is already in watch list. '%1' qovluğu artıq baxılan siyahısındadır. - + Folder '%1' doesn't exist. Qovluq '%1' mövcud deyil. - + Folder '%1' isn't readable. Qovluq '%1' oxunabilən deyil/ @@ -11797,72 +11937,72 @@ Başqa ad verin və yenidən cəhd edin. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Sessiya kuki faylına verilmiş bu ad qəbuledilməzdir: "%1". Standart bir ad istifadə edildi. - + Unacceptable file type, only regular file is allowed. Qəbuledilməz fayl növü, yalnız müntəzəm fayllar qəbul edilir. - + Symlinks inside alternative UI folder are forbidden. Alternativ İstifadəçi İnterfeysi daxilində simvolik bağlantılar qadağandır. - - Using built-in Web UI. - Daxilə quraşdırılan Veb İİ istifadə olunur + + Using built-in WebUI. + Daxili Veb İİ istifadə edilir. - - Using custom Web UI. Location: "%1". - İstifadəçi Veb İİ istifadə olunur. Yeri: "%1" + + Using custom WebUI. Location: "%1". + Xüsusi Veb İİ-nin istifadəsi. Yeri: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. Seçilmiş məkan (%1) üçün Veb İİ tərcüməsi uğurla yükləndi. - - Couldn't load Web UI translation for selected locale (%1). - Seçilmiş məkan (%1) üçün Veb İİ tərcüməsi yüklənə bilmədi. + + Couldn't load WebUI translation for selected locale (%1). + Seçilmiş məkan (%1) üçün Veb İİ tərcüməsini yükləmək mümkün olmadı. - + Missing ':' separator in WebUI custom HTTP header: "%1" Veb İİ fərdi HTTP başlığında ":" ayırıcısı çatışmır: "%1" - + Web server error. %1 Veb server xətası. %1 - + Web server error. Unknown error. Veb server xətası. Naməlum xəta. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Veb İİ: Mənbə başlığı və Hədəf Mənbəyi uyğun gəlmir! İP mənbəyi: "%1". Orojonal başlıq: "%2". Hədəf mənbəyi: "%3" - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Veb İİ: İstinad başllğı və Hədəf mənşəyi uyğun gəlmir! İP mənbəyi: "%1". İstinad başlığı: "%2". Hədəf mənşəyi: "%3" - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Veb İİ: Səhv host başlığı və port uyğun gəlmir. Tələb olunan İP mənbəyi: "%1". Server portu: "%2". Alınan host başlığı: "%3" - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Veb İİ səhv host başlığı. Tələb olunan İP mənbəyi: "%1". Alınan host başlığı: "%2" @@ -11870,116 +12010,128 @@ Başqa ad verin və yenidən cəhd edin. WebUI - - Web UI: HTTPS setup successful - Veb İİ: Uğurlu HTTPS quraşdırılması! + + Credentials are not set + İstifaəçi hesabı məlumatları göstərilməyib - - Web UI: HTTPS setup failed, fallback to HTTP - Veb İİ: HTTPS quraşdırılması alınmadı, HTTP-yə qayıtmaq + + WebUI: HTTPS setup successful + Veb İİ: HTTPS quraşdırıldı - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP + Veb İİ: HTTPS quraşdırmaq baş tutmadı, HTTP-yə qaytarmaq + + + + WebUI: Now listening on IP: %1, port: %2 Veb İİ: İndi dinlənilən İP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Veb İİ: İP qoşula bilmədi: %1, port:n%2. Səbəbi: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Bağlantı alınmayan İP: %1, port: %2. Səbəb: %3 misc - + B bytes B - + KiB kibibytes (1024 bytes) KB - + MiB mebibytes (1024 kibibytes) MB - + GiB gibibytes (1024 mibibytes) QB - + TiB tebibytes (1024 gibibytes) TB - + PiB pebibytes (1024 tebibytes) PB - + EiB exbibytes (1024 pebibytes) EB - + /s per second /san - + + %1s + e.g: 10 seconds + %1s + + + + %1m + e.g: 10 minutes + %1dəq + + + %1h %2m - e.g: 3hours 5minutes + e.g: 3 hours 5 minutes %1s %2 d - + %1d %2h - e.g: 2days 10hours + e.g: 2 days 10 hours %1g %2s - + %1y %2d - e.g: 2years 10days - %1il %2g + e.g: 2 years 10 days + %1y %2d - + + Unknown Unknown (size) Naməlum - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent, komputeri indi söndürəcəkdir, çünki bütün torrentlərin endirilməsi başa çatdı. - + < 1m < 1 minute < 1dəq - - - %1m - e.g: 10minutes - %1dəq - \ No newline at end of file diff --git a/src/lang/qbittorrent_be.ts b/src/lang/qbittorrent_be.ts index 8c93bbaf736c..ec0deb1841fb 100644 --- a/src/lang/qbittorrent_be.ts +++ b/src/lang/qbittorrent_be.ts @@ -14,77 +14,77 @@ Аб праграме - + Authors Аўтары - + Current maintainer Суправаджэнне коду - + Greece Грэцыя - - + + Nationality: - Грамадзянства: + Краіна: - - + + E-mail: Эл. пошта: - - + + Name: Імя: - + Original author - Арыгінальны аўтар + Зыходны аўтар - + France Францыя - + Special Thanks Падзяка - + Translators Перакладчыкі - + License Ліцэнзія - + Software Used Выкарыстанае ПЗ - + qBittorrent was built with the following libraries: - qBittorrent быў сабраны з гэтымі бібліятэкамі: + qBittorrent сабраны з выкарыстаннем наступных бібліятэк: - + Copy to clipboard - + Скапіяваць у буфер абмену @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Аўтарскае права %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Аўтарскае права %1 2006-2024 The qBittorrent project @@ -123,13 +123,13 @@ The old path is invalid: '%1'. - Стары шлях некарэктны: '%1'. + Стары шлях памылковы: '%1'. The new path is invalid: '%1'. - Новы шлях некарэктны: '%1'. + Новы шлях памылковы: '%1'. @@ -166,14 +166,13 @@ Захаваць у - + Never show again Больш ніколі не паказваць - Torrent settings - Налады торэнта + Налады торэнта @@ -191,19 +190,24 @@ Запусціць торэнт - + Torrent information Інфармацыя пра торэнт - + Skip hash check Прапусціць праверку хэшу Use another path for incomplete torrent - Выкарыстоўвайце іншы шлях для няпоўнага торэнта + Выкарыстоўваць іншы шлях для незавершанага торэнта + + + + Torrent options + @@ -213,7 +217,7 @@ Click [...] button to add/remove tags. - Націсніце [...] кнопку, каб дадаць/выдаліць тэгі. + Націсніце кнопку [...], каб дадаць/выдаліць тэгі. @@ -228,73 +232,78 @@ Stop condition: - Умова для прыпынку: + Умова спынення: - - + + None - Нічога + Няма - - + + Metadata received - Метададзеныя атрыманы + Метаданыя атрыманы + + + + Torrents that have metadata initially will be added as stopped. + Торэнты, якія адпачатку ўтрымліваюць метаданыя, будуць дададзеныя як спыненыя. - - + + Files checked Файлы правераны - + Add to top of queue Дадаць у пачатак чаргі - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - Калі сцяжок усталяваны, файл .torrent не будзе выдалены незалежна ад налад на старонцы "Спампоўка" дыялогавага акна Параметры + Калі сцяжок стаіць, файл .torrent не будзе выдаляцца незалежна ад налад на старонцы «Спампоўванні» дыялогавага акна Параметры - + Content layout: - Макет кантэнту: + Структура змесціва: - + Original - Арыгінал + Зыходная - + Create subfolder Стварыць падпапку - + Don't create subfolder Не ствараць падпапку - + Info hash v1: Хэш v1: - + Size: Памер: - + Comment: Каментарый: - + Date: Дата: @@ -324,245 +333,182 @@ Запомніць апошні шлях захавання - + Do not delete .torrent file - Не выдаляць торэнт-файл + Не выдаляць файл .torrent - + Download in sequential order Спампоўваць паслядоўна - + Download first and last pieces first Спачатку пампаваць першую і апошнюю часткі - + Info hash v2: Хэш v2: - + Select All - Выбраць Усё + Выбраць усе - + Select None Зняць усё - + Save as .torrent file... Захаваць як файл .torrent... - + I/O Error Памылка ўводу/вываду - Invalid torrent - Памылковы торэнт - - - + Not Available This comment is unavailable Недаступны - + Not Available This date is unavailable Недаступна - + Not available Недаступна - Invalid magnet link - Памылковая magnet-спасылка - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Не атрымалася загрузіць торэнт:%1 -Памылка: %2 - - - This magnet link was not recognized - Magnet-спасылка не пазнана - - - + Magnet link Magnet-спасылка - + Retrieving metadata... Атрыманне метаданых... - - + + Choose save path Выберыце шлях захавання - Torrent is already present - Торэнт ужо існуе - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Торэнт '%1' ужо прысутнічае ў спісе. Трэкеры не былі аб'яднаны, бо гэты торэнт прыватны. - - - Torrent is already queued for processing. - Торэнт ужо ў чарзе на апрацоўку. - - - + No stop condition is set. - Умова прыпынку не зададзена. + Умова спынення не зададзена. - + Torrent will stop after metadata is received. - Торэнт спыніцца пасля атрымання метададзеных. - - - - Torrents that have metadata initially aren't affected. - Торэнты, якія першапачаткова маюць метададзеныя, не закранаюцца. + Торэнт спыніцца пасля атрымання метаданых. - + Torrent will stop after files are initially checked. Торэнт спыніцца пасля першапачатковай праверкі файлаў. - + This will also download metadata if it wasn't there initially. - Гэта таксама спампуе метададзеныя, калі іх не было першапачаткова. + Гэта таксама спампуе метаданыя, калі іх не было першапачаткова. - - + + N/A Н/Д - Magnet link is already queued for processing. - Magnet-спасылка ўжо ў чарзе на апрацоўку. - - - + %1 (Free space on disk: %2) %1 (на дыску вольна: %2) - + Not available This size is unavailable. Недаступна - + Torrent file (*%1) Торэнт-файл (*%1) - + Save as torrent file Захаваць як файл торэнт - + Couldn't export torrent metadata file '%1'. Reason: %2. - Не выйшла перанесці торэнт '%1' з прычыны: %2 + Не ўдалося экспартаваць метаданыя торэнта '%1' з прычыны: %2 - + Cannot create v2 torrent until its data is fully downloaded. - Немагчыма стварыць торэнт v2, пакуль яго дадзеныя не будуць цалкам загружаны. + Немагчыма стварыць торэнт v2, пакуль яго даныя не будуць спампаваны цалкам. - Cannot download '%1': %2 - Не атрымалася спампаваць «%1»: %2 - - - + Filter files... - Фільтраваць файлы... - - - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Торэнт '%1' ужо ў спісе перадачы. Трэкеры нельга аб'яднаць, таму што гэта прыватны торэнт. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торэнт '%1' ужо ў спісе перадачы. Вы хочаце аб'яднаць трэкеры з новай крыніцы? + Фільтр файлаў... - + Parsing metadata... Аналіз метаданых... - + Metadata retrieval complete Атрыманне метаданых скончана - - Failed to load from URL: %1. -Error: %2 - Не ўдалося загрузіць з URL: %1. -Памылка: %2 - - - Download Error - Памылка спампоўвання - AddTorrentManager Downloading torrent... Source: "%1" - + Спампоўванне торэнта... Крыніца: «%1» Failed to add torrent. Source: "%1". Reason: "%2" - + Не ўдалося дадаць торэнт. Крыніца: "%1". Прычына: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Выяўлена спроба паўторнага дадавання наяўнага торэнта. Крыніца: %1. Наяўны торэнт: %2. Вынік: %3 - + Merging of trackers is disabled - + Аб'яднанне трэкераў адключана - + Trackers cannot be merged because it is a private torrent - + Немагчыма дадаць трэкеры, бо гэта прыватны торэнт - + Trackers are merged from new source - + Трэкеры з новай крыніцы дададзены @@ -590,12 +536,12 @@ Error: %2 Note: the current defaults are displayed for reference. - Нататка: бягучыя значэнні па змаўчанні адлюстроўваюцца для даведкі. + Заўвага: бягучыя значэнні па змаўчанні паказваюцца для даведкі. Use another path for incomplete torrents: - Выкарыстоўвайце іншы шлях для няпоўных торэнтаў: + Выкарыстоўваць іншы шлях для незавершаных торэнтаў: @@ -610,7 +556,7 @@ Error: %2 Click [...] button to add/remove tags. - Націсніце [...] кнопку, каб дадаць/выдаліць тэгі. + Націсніце кнопку [...], каб дадаць/выдаліць тэгі. @@ -635,7 +581,7 @@ Error: %2 Stop condition: - Умова для прыпынку: + Умова спынення: @@ -645,75 +591,80 @@ Error: %2 Skip hash check - Прапусціць праверку хэша + Прапусціць праверку хэшу - - - Choose save path - Пазначце шлях захавання + + Torrent share limits + Абмежаванні раздачы торэнта - - - - - - - Default - Па змаўчанні + + + Choose save path + Выберыце шлях захавання + + + - Yes - Так + Default + Па змаўчанні + Yes + Так + + + + + No Не - + Manual Ручны - + Automatic Аўтаматычны - + Original Арыгінал - + Create subfolder Стварыць падпапку - + Don't create subfolder Не ствараць падпапку - + None - Нічога + Няма - + Metadata received - Метададзеныя атрыманы + Метаданыя атрыманы - + Files checked Файлы правераны @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB МБ - + Recheck torrents on completion Пераправераць торэнты пасля спампоўвання - - + + ms milliseconds мс - + Setting Параметр - + Value Value set for this setting Значэнне - + (disabled) (адключана) - + (auto) (аўта) - + + min minutes - хв +  хв - + All addresses Усе адрасы - + qBittorrent Section Раздзел qBittorrent - - + + Open documentation Адкрыць дакументацыю - + All IPv4 addresses Усе адрасы IPv4 - + All IPv6 addresses Усе адрасы IPv6 - + libtorrent Section Раздзел libtorrent - + Fastresume files Хуткае аднаўленне файлаў - + SQLite database (experimental) - База дадзеных SQLite (эксперыментальная) + База даных SQLite (эксперыментальная) - + Resume data storage type (requires restart) - Працягнуць тып захавання дадзеных (патрабуецца перазапуск) + Тып захавання даных узнаўлення (патрабуецца перазапуск) - + Normal Звычайны - + Below normal Ніжэй звычайнага - + Medium Сярэдні - + Low Нізкі - + Very low Вельмі нізкі - - Process memory priority (Windows >= 8 only) - Прыярытэт памяці (Windows 8 ці вышэй) - - - + Physical memory (RAM) usage limit - Ліміт выкарыстання фізічнай памяці (RAM). + Абмежаванне выкарыстання фізічнай памяці (RAM) - + Asynchronous I/O threads Патокі асінхроннага ўводу/вываду - + Hashing threads Патокі хэшавання - + File pool size Памер пула файлаў - + Outstanding memory when checking torrents Дадатковая памяць пры праверцы торэнтаў - + Disk cache Кэш дыска - - - - + + + + s seconds с - + Disk cache expiry interval Інтэрвал ачысткі дыскавага кэшу - + Disk queue size - Памер чаргі діску + Памер чаргі дыска - - + + Enable OS cache - Уключыць кэш OS + Уключыць кэш АС - + Coalesce reads & writes Узбуйненне чытання і запісу - + Use piece extent affinity - Use piece extent affinity + Групаваць змежныя часткі - + Send upload piece suggestions Адпраўляць прапановы частак раздачы - - - - + + + + + 0 (disabled) 0 (адключана) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - Інтэрвал захавання дадзеных аднаўлення [0: адключана] + Інтэрвал захавання даных узнаўлення [0: адключана] - + Outgoing ports (Min) [0: disabled] Выходныя парты (мін) [0: адключана] - + Outgoing ports (Max) [0: disabled] Выходныя парты (макс) [0: адключана] - + 0 (permanent lease) 0 (пастаянная арэнда) - + UPnP lease duration [0: permanent lease] Працягласць арэнды UPnP [0: пастаянная арэнда] - + Stop tracker timeout [0: disabled] - Таймаўт прыпынку трэкера [0: адключана] + Час чакання спынення трэкера [0: адключана] - + Notification timeout [0: infinite, -1: system default] - Перапынак ў паведамленнях [0: бясконца, -1: сістэмнае значэнне] + Час чакання паведамлення [0: бясконца, -1: сістэмнае значэнне] - + Maximum outstanding requests to a single peer Максімальная колькасць невыкананых запытаў да аднаго піра - - - - - + + + + + KiB КБ - + (infinite) (бясконца) - + (system default) (сістэмнае значэнне) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - Гэты варыянт меней эфектыўны ў Linux. + Гэты параметр менш эфектыўны ў Linux. - + + Process memory priority + Прыярытэт памяці працэсу + + + Bdecode depth limit - + Абмежаванне глыбіні Bdecode - + Bdecode token limit - + Абмежаванне токена Bdecode - + Default Па змаўчанні - + Memory mapped files - Memory mapped files + Файлы размешчаныя у памяці - + POSIX-compliant POSIX-сумяшчальны - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - Тып дыскавага ўводу-вываду (патрабуецца перазагрузка) + Тып дыскавага ўводу-вываду (патрабуецца перазапуск) - - + + Disable OS cache Адключыць кэш АС - + Disk IO read mode Рэжым чытання дыскавага ўводу-вываду - + Write-through Скразны запіс - + Disk IO write mode Рэжым запісу дыскавага ўводу-вываду - + Send buffer watermark Адправіць вадзяны знак буфера - + Send buffer low watermark Адправіць нізкі вадзяны знак буфера - + Send buffer watermark factor Адправіць фактар вадзянога знака буфера - + Outgoing connections per second Выходныя злучэнні ў секунду - - + + 0 (system default) 0 (сістэмнае значэнне) - + Socket send buffer size [0: system default] Памер буфера адпраўлення сокета [0: сістэмнае значэнне] - + Socket receive buffer size [0: system default] Памер буфера прыёму сокета [0: сістэмнае значэнне] - + Socket backlog size - Socket backlog size + Памер чаргі сокета + + + + Save statistics interval [0: disabled] + How often the statistics file is saved. + - + .torrent file size limit Абмежаванне памеру файла .torrent - + Type of service (ToS) for connections to peers - Type of service (ToS) for connections to peers + Тып абслугоўвання (ToS) для злучэння з пірамі - + Prefer TCP Перавага за TCP - + Peer proportional (throttles TCP) Прапарцыянальна пірам (рэгулюе TCP) - + Support internationalized domain name (IDN) - Support internationalized domain name (IDN) + Падтрымліваць інтэрнацыянальныя імёны даменаў (IDN) - + Allow multiple connections from the same IP address Дазволіць некалькі злучэнняў з аднаго IP-адраса - + Validate HTTPS tracker certificates - Validate HTTPS tracker certificates + Правяраць сертыфікаты трэкераў HTTPS - + Server-side request forgery (SSRF) mitigation - Server-side request forgery (SSRF) mitigation + Папярэджваць серверную падробку запыту (SSRF) - + Disallow connection to peers on privileged ports - Disallow connection to peers on privileged ports + Забараніць злучэнне з пірамі на прывілеяваных партах + + + + It appends the text to the window title to help distinguish qBittorent instances + Дадае тэкст да загалоўка акна з мэтай адрознення экзэмпляраў qBittorent + + + + Customize application instance name + Дапоўніць назву гэтага экзэмпляра праграмы - + It controls the internal state update interval which in turn will affect UI updates - It controls the internal state update interval which in turn will affect UI updates + Кіруе інтэрвалам абнаўлення ўнутранага стану, які ўплывае на абнаўленне інтэрфейсу - + Refresh interval - Refresh interval + Інтэрвал абнаўлення - + Resolve peer host names - Вызначыць назву хоста піра + Вызначаць імя хоста піра - + IP address reported to trackers (requires restart) - Паведамляць трэкерам гэты IP адрас (патрэбны перазапуск) + Паведамляць трэкерам гэты IP-адрас (патрабуецца перазапуск) + + + + Port reported to trackers (requires restart) [0: listening port] + - + Reannounce to all trackers when IP or port changed - Reannounce to all trackers when IP or port changed + Пераанансаваць на ўсе трэкеры пры змене IP або порта - + Enable icons in menus - Enable icons in menus + Уключыць значкі ў меню - + Enable port forwarding for embedded tracker - Enable port forwarding for embedded tracker + Уключыць пракід партоў для ўбудаванага трэкера - - (Auto detect if empty) + + Enable quarantine for downloaded files + Уключыць каранцін для спампаваных файлаў + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Ставіць вэб-пазнаку (MOTW) на спампаваныя файлы + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Аўтавызначэнне, калі пуста) + + + Python executable path (may require restart) + Шлях да выконвальнага файла Python (можа спатрэбіцца перазапуск) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + с + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Пацвярджаць выдаленне трэкера з усіх торэнтаў + + + Peer turnover disconnect percentage - Peer turnover disconnect percentage + Працэнт адключэння для абароту піраў - + Peer turnover threshold percentage - Peer turnover threshold percentage + Працэнт абмежавання для абароту піраў - + Peer turnover disconnect interval - Peer turnover disconnect interval + Інтэрвал адключэння для абароту піраў - + Resets to default if empty - + Скінуць на значэнне па змаўчанні, калі пуста - + DHT bootstrap nodes - + Вузлы самазагрузкі DHT - + I2P inbound quantity - + Колькасць уваходных паведамленняў I2P - + I2P outbound quantity - + Колькасць выходных паведамленняў I2P - + I2P inbound length - + Даўжыня ўваходных паведамленняў I2P - + I2P outbound length - + Даўжыня выходных паведамленняў I2P - + Display notifications Паказваць апавяшчэнні - + Display notifications for added torrents - Паказваць апавяшчэнні для даданых торэнтаў + Паказваць апавяшчэнні для дададзеных торэнтаў - + Download tracker's favicon Загружаць значкі трэкераў - + Save path history length Гісторыя шляхоў захавання (колькасць) - + Enable speed graphs Уключыць графікі хуткасці - + Fixed slots Фіксаваныя слоты - + Upload rate based На аснове хуткасці раздачы - + Upload slots behavior Паводзіны слотаў раздачы - + Round-robin Кругавы - + Fastest upload Хутчэйшая раздача - + Anti-leech Анты-ліч - + Upload choking algorithm Алгарытм прыглушэння раздачы - + Confirm torrent recheck Пацвярджаць пераправерку торэнта - + Confirm removal of all tags Пацвярджаць выдаленне ўсіх тэгаў - + Always announce to all trackers in a tier Заўсёды анансаваць на ўсе трэкеры ва ўзроўні - + Always announce to all tiers Заўсёды анансаваць на ўсе ўзроўні - + Any interface i.e. Any network interface Любы інтэрфейс - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Алгарытм змешанага %1-TCP рэжыму - + Resolve peer countries Вызначаць краіну піра - + Network interface Сеткавы інтэрфэйс - + Optional IP address to bind to - Optional IP address to bind to + Неабавязковы IP-адрас для прывязкі - + Max concurrent HTTP announces - Max concurrent HTTP announces + Максімум адначасовых анонсаў HTTP - + Enable embedded tracker Задзейнічаць убудаваны трэкер - + Embedded tracker port Порт убудаванага трэкеру - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 запушчаны + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 - Running in portable mode. Auto detected profile folder at: %1 + Выконваецца ў партатыўным рэжыме. Аўтаматычна вызначаная папка профілю: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - Redundant command line flag detected: "%1". Portable mode implies relative fastresume. + - + Using config directory: %1 - Using config directory: %1 + Выкарыстоўваецца каталог налад: %1 - + Torrent name: %1 Імя торэнта: %1 - + Torrent size: %1 Памер торэнта: %1 - + Save path: %1 Шлях захавання: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Торэнт быў спампаваны за %1. - + + Thank you for using qBittorrent. Дзякуй за выкарыстанне qBittorrent. - + Torrent: %1, sending mail notification Торэнт: %1, адпраўка апавяшчэння на пошту - + Add torrent failed - + Не ўдалося дадаць торэнт - + Couldn't add torrent '%1', reason: %2. - + Не ўдалося дадаць торэнт «%1» з прычыны: %2. + + + + The WebUI administrator username is: %1 + Імя адміністратара вэб-інтэрфейсу: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Пароль адміністратара вэб-інтэрфейсу не быў зададзены. Для гэтага сеанса дадзены часовы пароль: %1 + + + + You should set your own password in program preferences. + Вам варта задаць уласны пароль у наладах праграмы. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Вэб-інтэрфейс адключаны! Каб уключыць вэб-інтэрфейс, адрэдагуйце файл канфігурацыі ўручную. - + Running external program. Torrent: "%1". Command: `%2` - Running external program. Torrent: "%1". Command: `%2` + Запуск знешняй праграмы. Торэнт: «%1». Каманда: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - Failed to run external program. Torrent: "%1". Command: `%2` + Не ўдалося запусціць знешнюю праграму. Торэнт: «%1». Каманда: `%2` - + Torrent "%1" has finished downloading - Torrent "%1" has finished downloading + Спампоўванне торэнта '%1' завершана - + WebUI will be started shortly after internal preparations. Please wait... - WebUI will be started shortly after internal preparations. Please wait... + Вэб-інтэрфейс хутка запусціцца пасля ўнутраннай падрыхтоўкі, Пачакайце... - - + + Loading torrents... - Loading torrents... + Загрузка торэнтаў... - + E&xit В&ыйсці - + I/O Error i.e: Input/Output Error Памылка ўводу/вываду - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,172 +1526,143 @@ Error: %2 Прычына: %2 - Error - Памылка - - - Failed to add torrent: %1 - Не атрымалася дадаць торэнт: %1 - - - + Torrent added Торэнт дададзены - + '%1' was added. e.g: xxx.avi was added. '%1' дададзены. - + Download completed - Download completed + Спампоўванне завершана - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Спампоўванне '%1' скончана. - - - URL download error - Памылка пры спампаванні па URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 запушчаны. Ідэнтыфікатар працэсу: %2 - Couldn't download file at URL '%1', reason: %2. - Не атрымалася спампаваць файл па адрасе '%1' з прычыны: %2. + + This is a test email. + - Torrent file association - Cуаднясенне torrent-файлаў + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Спампоўванне '%1' завершана. - + Information Інфармацыя - + To fix the error, you may need to edit the config file manually. - + Каб выправіць памылку, можа спатрэбіцца адрэдагаваць файл канфігурацыі ўручную. - + To control qBittorrent, access the WebUI at: %1 Увайдзіце ў вэб-інтэрфейс для кіравання qBittorrent: %1 - - The Web UI administrator username is: %1 - Імя адміністратара вэб-інтэрфейса: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - The Web UI administrator password has not been changed from the default: %1 - - - - This is a security risk, please change your password in program preferences. - This is a security risk, please change your password in program preferences. - - - Application failed to start. - Збой запуску праграмы. - - - + Exit Выйсці - + Recursive download confirmation - Пацвярджэнне рэкурсіўнага спампоўвання + Пацвярджэнне рэкурсіўнага спампоўвання - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? + Торэнт «%1» змяшчае файлы .torrent, хочаце працягнуць спампоўванне з іх? - + Never - Ніколі + Ніколі - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" + Рэкурсіўнае спампоўванне файла .torrent з торэнта. Зыходны торэнт: «%1». Файл: «%2» - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" + Не ўдалося задаць абмежаванне на выкарыстанне фізічнай памяці (RAM). Код памылкі: %1. Тэкст памылкі: «%2» - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Не ўдалося задаць жорсткае абмежаванне на выкарыстанне фізічнай памяці (RAM). Запытаны памер: %1. Жорсткае абмежаванне сістэмы: %2. Код памылкі: %3. Тэкст памылкі: «%4» - + qBittorrent termination initiated - qBittorrent termination initiated + Пачалося завяршэнне працы qBittorrent - + qBittorrent is shutting down... - qBittorrent is shutting down... + Завяршэнне працы qBittorrent... - + Saving torrent progress... Захаванне стану торэнта... - + qBittorrent is now ready to exit - qBittorrent is now ready to exit + Цяпер qBittorrent гатовы да выхаду AsyncFileStorage - + Could not create directory '%1'. - Немагчыма стварыць каталог '%1'. + Немагчыма стварыць каталог «%1». AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 + Не ўдалося ўвайсці ў WebAPI. Прычына: IP быў забаронены, IP: %1, імя карыстальніка: %2 - + Your IP address has been banned after too many failed authentication attempts. Ваш IP-адрас быў заблакаваны пасля занадта шматлікіх няўдалых спробаў аўтэнтыфікацыі. - + WebAPI login success. IP: %1 - WebAPI login success. IP: %1 + Паспяховы ўваход у WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 - WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 + Памылка ўваходу WebAPI. Прычына: памылковыя ўліковыя даныя, спроб: %1, IP: %2, імя карыстальніка: %3 @@ -1630,7 +1670,7 @@ Do you want to make qBittorrent the default application for these? RSS Downloader - Спампоўшчык RSS + Спампоўванне з RSS @@ -1645,65 +1685,65 @@ Do you want to make qBittorrent the default application for these? Use Smart Episode Filter - Выкарыстоўваць разумны фільтр выпускаў + Выкарыстоўваць разумны фільтр эпізодаў Must Contain: - Мусіць змяшчаць: + Павінен змяшчаць: Auto downloading of RSS torrents is currently disabled. You can enable it in application settings. - Auto downloading of RSS torrents is currently disabled. You can enable it in application settings. + Аўтаспампоўванне торэнтаў з RSS у бягучы момант адключана. Вы можаце ўключыць яго ў наладах праграмы. Rename selected rule. You can also use the F2 hotkey to rename. - + Перайменаванне выбранага правіла. Вы таксама можаце выкарыстоўваць клавішу F2. Priority: - + Прыярытэт: - + Must Not Contain: - Мусіць не змяшчаць: + Не павінен змяшчаць: - + Episode Filter: - Фільтр выпускаў: + Фільтр эпізодаў: Smart Episode Filter will check the episode number to prevent downloading of duplicates. Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also support - as a separator) - Разумны фільтр выпускаў праверыць нумары, каб не дапусціць спампоўвання паўтораў. -Падтрымлівае фарматы: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Таксама падтрымліваецца «-», як раздзяляльнікам кампанентаў даты) + Разумны фільтр праверыць нумары эпізодаў, каб прадухіліць спампоўванне паўтораў. +Падтрымліваюцца фарматы: S01E01, 1x1, 2017.12.31 і 31.12.2017 (таксама, як раздзяляльнік у датах, падтрымліваецца злучок - ) Torrent parameters - + Параметры торэнта Ignore Subsequent Matches for (0 to Disable) ... X days - Ігнараваць наступныя супадзенні цягам (0 - адключана) + Ігнараваць наступныя супадзенні (0 - адключана) Disabled - Адключаны + Адключана days - дзён + дні/дзён @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Экспарт... - + Matches articles based on episode filter. - Распазнае артыкулы паводле фільтру выпускаў. + Распазнае артыкулы паводле фільтру эпізодаў. - + Example: Прыклад: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - распазнае 2, 5, з 8 па 15, 30 і далейшыя выпускі першага сезону + адпавядае 2, 5, эпізодам з 8 па 15, 30 і наступным эпізодам з першага сезона - + Episode filter rules: - Правілы фільтру выпускаў: + Правілы фільтравання эпізодаў: - + Season number is a mandatory non-zero value - Нумар сезону ёсць абавязковым ненулявым значэннем + Нумар сезона абавязкова павінен быць ненулявым значэннем - + Filter must end with semicolon - Фільтр мусіць канчацца кропкай з коскай + Фільтр павінен заканчвацца кропкай з коскай - + Three range types for episodes are supported: - Падтрымліваюцца тры тыпы дыяпазонаў выпускаў: + Для эпізодаў падтрымліваецца тры тыпы дыяпазонаў: - + Single number: <b>1x25;</b> matches episode 25 of season one - Адзіны нумар: <b>1x25;</b> распазнае 25-ы выпуск першага сезону + Адзіночны нумар: <b>1x25;</b> адпавядае 25-му эпізоду з першага сезона - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - Звычайны дыяпазон: <b>1x25-40;</b> распазнае выпускі з 25-га па 40-ы першага сезону + Звычайны дыяпазон: <b>1x25-40;</b> адпавядае эпізодам першага сезона з 25-га па 40-ы - + Episode number is a mandatory positive value - Нумар выпуска з'яўляецца абавязковым ненулявым значэннем + Нумар эпізоду абавязкова павінен мець дадатнае значэнне - + Rules Правілы - + Rules (legacy) Правілы (састарэлыя) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - Бясконцы дыяпазон: <b>1x25-;</b> адпавядае выпускам першага сезона з 25-га вышэй, і ўсе выпускі наступных сезонаў + Бясконцы дыяпазон: <b>1x25-;</b> адпавядае эпізодам першага сезона з 25-га далей, а таксама ўсім эпізодам з наступных сезонаў - + Last Match: %1 days ago - Апошні вынік: %1 дзён таму + Апошняе супадзенне: %1 дзён таму - + Last Match: Unknown - Апошні вынік: невядома + Апошняе супадзенне: невядома - + New rule name Новая назва правіла - + Please type the name of the new download rule. Дайце назву новаму правілу спампоўвання. - - + + Rule name conflict Супярэчнасць назваў правілаў - - + + A rule with this name already exists, please choose another name. Правіла з такой назвай ужо існуе, дайце іншую назву. - + Are you sure you want to remove the download rule named '%1'? - Сапраўды жадаеце выдаліць правіла спампоўвання '%1'? + Сапраўды выдаліць правіла спампоўвання з назвай «%1»? - + Are you sure you want to remove the selected download rules? - Сапраўды жадаеце выдаліць вылучаныя правілы спампоўвання? + Сапраўды выдаліць выбраныя правілы спампоўвання? - + Rule deletion confirmation Пацвярджэнне выдалення правіла - + Invalid action - Недапушчальнае дзеянне + Памылковае дзеянне - + The list is empty, there is nothing to export. Спіс пусты, няма чаго экспартаваць. - + Export RSS rules - Экспартаваць правіла RSS + Экспартаваць правілы RSS - + I/O Error Памылка ўводу/вываду - + Failed to create the destination file. Reason: %1 - Не атрымалася стварыць файл прызначэння. Прычына: %1 + Не ўдалося стварыць файл прызначэння. Прычына: %1 - + Import RSS rules Імпартаваць правілы RSS - + Failed to import the selected rules file. Reason: %1 - Не атрымалася імпартаваць выбраны файл правілаў. Прычына: %1 + Не ўдалося імпартаваць выбраны файл правіл. Прычына: %1 - + Add new rule... Дадаць новае правіла... - + Delete rule Выдаліць правіла - + Rename rule... Перайменаваць правіла... - + Delete selected rules Выдаліць вылучаныя правілы - + Clear downloaded episodes... - Ачысціць спампаваныя выпускі... + Ачысціць спампаваныя эпізоды... - + Rule renaming Перайменаванне правіла - + Please type the new rule name Дайце назву новаму правілу - + Clear downloaded episodes - Ачысціць спампаваныя выпускі + Ачысціць спампаваныя эпізоды - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - Упэўнены, што хочаце ачысціць спіс спампаваных выпускаў для выбранага правіла? + Сапраўды ачысціць спіс спампаваных эпізодаў для выбранага правіла? - + Regex mode: use Perl-compatible regular expressions - Regex mode: use Perl-compatible regular expressions + Рэжым Regex: выкарыстоўваце рэгулярныя выразы як у Perl - - + + Position %1: %2 - Position %1: %2 + Пазіцыя %1: %2 - + Wildcard mode: you can use - Wildcard mode: you can use + - - + + Import error - + Памылка імпарту - + Failed to read the file. %1 - + Не ўдалося прачытаць файл. %1 - + ? to match any single character - ? to match any single character + ? адпавядае аднаму любому сімвалу - + * to match zero or more of any characters - * to match zero or more of any characters + * адпавядае нулю або некалькім любым сімвалам - + Whitespaces count as AND operators (all words, any order) - Whitespaces count as AND operators (all words, any order) + Прабелы лічацца аператарам «І» (усе словы, любы парадак) - + | is used as OR operator - | выкарыстоўваецца як аператар АЛЬБО + | выкарыстоўваецца як аператар АБО - + If word order is important use * instead of whitespace. - Калі важны парадак слоў, выкарыстоўвайце * замест прабелаў. + Калі парадак слоў важны, выкарыстоўвайце зорачку * замест прабелаў. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - An expression with an empty %1 clause (e.g. %2) + Выраз з пустым аператарам %1 (прыклад %2) - + will match all articles. будзе адпавядаць усім артыкулам. - + will exclude all articles. выключыць усе артыкулы. @@ -2013,7 +2053,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also The entered IP address is invalid. - Уведзены недапушчальны IP адрас. + Уведзены памылковы IP-адрас. @@ -2024,692 +2064,743 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Не атрымалася стварыць папку аднаўлення торэнта: «%1» - + Cannot parse resume data: invalid format - Cannot parse resume data: invalid format + Немагчыма прааналізаваць даныя ўзнаўлення: памылковы фармат - - + + Cannot parse torrent info: %1 - Cannot parse torrent info: %1 + Не ўдаецца прааналізаваць звесткі пра торэнт: : %1 - + Cannot parse torrent info: invalid format - Cannot parse torrent info: invalid format + Не ўдаецца праналізаваць звесткі аб торэнце: памылковы фармат + + + + Mismatching info-hash detected in resume data + У даных узнаўлення выяўлены неадпаведны хэш - + Couldn't save torrent metadata to '%1'. Error: %2. - Couldn't save torrent metadata to '%1'. Error: %2. + Не ўдалося захаваць метаданыя торэнта ў «%1». Памылка: %2 - + Couldn't save torrent resume data to '%1'. Error: %2. - Couldn't save torrent resume data to '%1'. Error: %2. + Не ўдалося захаваць даныя ўзнаўлення торэнта ў «%1». Памылка: %2 - + Couldn't load torrents queue: %1 - Couldn't load torrents queue: %1 + Не ўдалося загрузіць чаргу торэнтаў: %1 - + Cannot parse resume data: %1 - Cannot parse resume data: %1 + Немагчыма прааналізаваць даныя ўзнаўлення: %1 - + Resume data is invalid: neither metadata nor info-hash was found - Resume data is invalid: neither metadata nor info-hash was found + Памылковыя даныя ўзнаўлення: метаданыя або інфа-хэш не знойдзены - + Couldn't save data to '%1'. Error: %2 - Couldn't save data to '%1'. Error: %2 + Не ўдалося захаваць даныя ў «%1». Памылка: %2 BitTorrent::DBResumeDataStorage - + Not found. - Not found. + Не знойдзена. - + Couldn't load resume data of torrent '%1'. Error: %2 - Couldn't load resume data of torrent '%1'. Error: %2 + Не ўдалося загрузіць даныя ўзнаўлення торэнта «%1». Памылка: %2 - - + + Database is corrupted. - Database is corrupted. + База даных пашкоджана. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Не ўдалося ўключыць рэжым папераджальнай журналізацыі. Памылка: %1. - + Couldn't obtain query result. - + Не ўдалося атрымаць вынік запыту. - + WAL mode is probably unsupported due to filesystem limitations. - + Рэжым папераджальнай журналізацыі, імаверна, не падтрымліваецца праз абмежаванні файлавай сістэмы. - + Couldn't begin transaction. Error: %1 - + Не ўдалося пачаць транзакцыю. Памылка: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - Couldn't save torrent metadata. Error: %1. + Не ўдалося захаваць метаданыя торэнта. Памылка: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - Couldn't store resume data for torrent '%1'. Error: %2 + Не ўдалося захаваць даныя ўзнаўлення торэнта «%1». Памылка: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - Couldn't delete resume data of torrent '%1'. Error: %2 + Не ўдалося выдаліць даныя ўзнаўлення торэнта «%1». Памылка: %2 - + Couldn't store torrents queue positions. Error: %1 - Couldn't store torrents queue positions. Error: %1 + Не ўдалося захаваць чарговасць торэнтаў. Памылка: %1 BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - Distributed Hash Table (DHT) support: %1 - - - - - - - - - - - + Падтрымка DHT: %1 + + + + + + + + + + + ON УКЛ - - - - - - - - - + + + + + + + + + OFF ВЫКЛ - - + + Local Peer Discovery support: %1 - Local Peer Discovery support: %1 + Падтрымка выяўлення лакальных піраў: %1 - + Restart is required to toggle Peer Exchange (PeX) support - Restart is required to toggle Peer Exchange (PeX) support + Змяненне стану PeX (абмен пірамі) патрабуе перазапуску - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - Failed to resume torrent. Torrent: "%1". Reason: "%2" + Не ўдалося ўзнавіць торэнт. Торэнт: «%1». Прычына: «%2» - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" + Не ўдалося ўзнавіць торэнт: выяўлены няўзгоднены ідэнтыфікатар. Прычына: «%1» - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" + - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" + Выяўленыя няўзгодненыя даныя: памылковая катэгорыя. Торэнт: «%1». Катэгорыя: «%2» - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" + - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" + - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" + Выяўленыя няўзгодненыя даныя: памылковы тэг. Торэнт: «%1». Катэгорыя: «%2» - + System wake-up event detected. Re-announcing to all the trackers... - + Выяўлена падзея абуджэння сістэмы. Выконваецца паўторны анонс для ўсіх трэкераў... - + Peer ID: "%1" - Peer ID: "%1" + Ідэнтыфікатар піра: "%1" - + HTTP User-Agent: "%1" - HTTP User-Agent: "%1" + HTTP User-Agent: «%1» - + Peer Exchange (PeX) support: %1 - Peer Exchange (PeX) support: %1 + Падтрымка PeX (абмен пірамі): %1 - - + + Anonymous mode: %1 - Anonymous mode: %1 + Ананімны рэжым: %1 - - + + Encryption support: %1 - Encryption support: %1 + Падтрымка шыфравання: %1 - - + + FORCED ПРЫМУСОВА - + Could not find GUID of network interface. Interface: "%1" - Could not find GUID of network interface. Interface: "%1" + Не ўдалося знайсці GUID сеткавага інтэрфейсу. Інтэрфейс: «%1» - + Trying to listen on the following list of IP addresses: "%1" - Trying to listen on the following list of IP addresses: "%1" + Спроба праслухоўвання наступнага спіса IP-адрасоў: «%1» - + Torrent reached the share ratio limit. - Torrent reached the share ratio limit. + Торэнт дасягнуў абмежавання рэйтынгу раздачы. - - - + Torrent: "%1". - Torrent: "%1". + Торэнт: «%1». - - - Removed torrent. - Removed torrent. + Выдалены торэнт. - - - Removed torrent and deleted its content. - Removed torrent and deleted its content. + Торэнт і яго змесціва выдалены. - - - Torrent paused. - Torrent paused. + Торэнт спынены. - - - + Super seeding enabled. - Super seeding enabled. + Суперраздача ўключана. - + Torrent reached the seeding time limit. - Torrent reached the seeding time limit. + Торэнт дасягнуў абмежавання часу раздачы. - + Torrent reached the inactive seeding time limit. - + Торэнт дасягнуў абмежавання часу бяздзейнасці раздачы. - + Failed to load torrent. Reason: "%1" - Failed to load torrent. Reason: "%1" + Не ўдалося загрузіць торэнт. Прычына «%1» - + I2P error. Message: "%1". + Памылка I2P. Паведамленне: «%1». + + + + UPnP/NAT-PMP support: ON + Падтрымка UPnP/ AT-PMP: Укл + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Downloading torrent, please wait... Source: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Failed to load torrent. Source: "%1". Reason: "%2" + + Session shutdown timed out. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP support: ON + + Removing torrent. + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP support: OFF + + Removing torrent and deleting its content. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Torrent stopped. + - - Aborted saving resume data. Number of outstanding torrents: %1 - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + - System network status changed to %1 - e.g: System network status changed to ONLINE - Стан сеткі сістэмы змяніўся на %1 + + Merging of trackers is disabled + Аб'яднанне трэкераў адключана + + + + Trackers cannot be merged because it is a private torrent + Немагчыма дадаць трэкеры, бо гэта прыватны торэнт - ONLINE - У СЕТЦЫ + + Trackers are merged from new source + Трэкеры з новай крыніцы дададзены + + + + UPnP/NAT-PMP support: OFF + Падтрымка UPnP/ AT-PMP: Адкл - OFFLINE - ПА-ЗА СЕТКАЙ + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Не ўдалося экспартаваць торэнт «%1». Месца прызначэння: «%2». Прычына: «%3» - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Налады сеткі %1 змяніліся, абнаўленне прывязкі сеансу + + Aborted saving resume data. Number of outstanding torrents: %1 + Запіс даных узнаўлення перарваны. Колькасць неапрацаваных торэнтаў: %1 - + The configured network address is invalid. Address: "%1" - The configured network address is invalid. Address: "%1" + Наладжаны сеткавы адрас памылковы. Адрас: «%1» - - + + Failed to find the configured network address to listen on. Address: "%1" - Failed to find the configured network address to listen on. Address: "%1" + Не ўдалося знайсці наладжаны сеткавы адрас для праслухоўвання. Адрас: «%1» - + The configured network interface is invalid. Interface: "%1" - The configured network interface is invalid. Interface: "%1" + Наладжаны сеткавы інтэрфейс памылковы. Інтэрфейс: «%1» + + + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + - + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + Адхілены памылковы IP-адрас падчас ужывання спіса забароненых IP-адрасоў. IP: «%1» - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - Added tracker to torrent. Torrent: "%1". Tracker: "%2" + Трэкер дададзены ў торэнт. Торэнт: «%1». Трэкер: «%2» - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - Removed tracker from torrent. Torrent: "%1". Tracker: "%2" + Трэкер выдалены з торэнта. Торэнт: «%1». Трэкер: «%2» - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - Added URL seed to torrent. Torrent: "%1". URL: "%2" + Дададзены адрас сіда ў торэнт. Торэнт: «%1». Адрас: «%2» - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - Removed URL seed from torrent. Torrent: "%1". URL: "%2" + Выдалены адрас сіда з торэнта. Торэнт: «%1». Адрас: «%2» + + + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + - Torrent paused. Torrent: "%1" - Torrent paused. Torrent: "%1" + Торэнт спынены. Торэнт: «%1» - + Torrent resumed. Torrent: "%1" - Torrent resumed. Torrent: "%1" + Торэнт узноўлены. Торэнт: «%1» - + Torrent download finished. Torrent: "%1" - Torrent download finished. Torrent: "%1" + Спампоўванне торэнта завершана. Торэнт: «%1» - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" + Перамяшчэнне торэнта скасавана. Торэнт: «%1». Крыніца: «%2». Месца прызначэння: «%3» + + + + Torrent stopped. Torrent: "%1" + - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination + Не ўдалося паставіць перамяшчэнне торэнта ў чаргу. Торэнт: «%1». Крыніца: «%2». Месца прызначэння: «%3». Прычына: торэнт зараз перамяшчаецца ў месца прызначэння - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location + Не ўдалося паставіць перамяшчэнне торэнта ў чаргу. Торэнт: «%1». Крыніца: «%2». Месца прызначэння: «%3». Прычына: абодва шляхі ўказваюць на адно размяшчэнне - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" + Перамяшчэнне торэнта пастаўлена ў чаргу. Торэнт: «%1». Крыніца: «%2». Месца прызначэння: «%3» - + Start moving torrent. Torrent: "%1". Destination: "%2" - Start moving torrent. Torrent: "%1". Destination: "%2" + Пачалося перамяшчэнне торэнта. Торэнт: «%1». Месца прызначэння: «%2» - + Failed to save Categories configuration. File: "%1". Error: "%2" - Failed to save Categories configuration. File: "%1". Error: "%2" + Не ўдалося захаваць канфігурацыю катэгорый. Файл: «%1». Памылка: «%2» - + Failed to parse Categories configuration. File: "%1". Error: "%2" - Failed to parse Categories configuration. File: "%1". Error: "%2" - - - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" + Не ўдалося прааналізаваць канфігурацыю катэгорый. Файл: «%1». Памылка: «%2» - + Successfully parsed the IP filter file. Number of rules applied: %1 - Successfully parsed the IP filter file. Number of rules applied: %1 + - + Failed to parse the IP filter file - Failed to parse the IP filter file + Не ўдалося прааналізаваць файл IP-фільтра - + Restored torrent. Torrent: "%1" - Restored torrent. Torrent: "%1" + Торэнт адноўлены. Торэнт: «%1» - + Added new torrent. Torrent: "%1" - Added new torrent. Torrent: "%1" + Дададзены новы торэнт. Торэнт: «%1» - + Torrent errored. Torrent: "%1". Error: "%2" - Torrent errored. Torrent: "%1". Error: "%2" + Памылка торэнта .Торэнт: «%1». Памылка: «%2» - - Removed torrent. Torrent: "%1" - Removed torrent. Torrent: "%1" + Торэнт выдалены. Торэнт: «%1» - Removed torrent and deleted its content. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" + Торэнт і яго змесціва выдалены. Торэнт: «%1» - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + У торэнце прапушчаныя параметры SSL. Торэнт: «%1». Паведамленне: «%2» + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - File error alert. Torrent: "%1". File: "%2". Reason: "%3" + Папярэджанне пра памылку файла. Торэнт: «%1». Файл: «%2». Прычына: «%3» - + UPnP/NAT-PMP port mapping failed. Message: "%1" - UPnP/NAT-PMP port mapping failed. Message: "%1" + Не ўдалося перанакіраваць парты UPnP/NAT-PMP. Паведамленне: «%1» - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - UPnP/NAT-PMP port mapping succeeded. Message: "%1" + Перанакіраванне партоў UPnP/NAT-PMP выканана. Паведамленне: «%1» - + IP filter this peer was blocked. Reason: IP filter. IP-фільтр - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + адфільтраваны порт (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). + прывілеяваны порт (%1) + + + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + BitTorrent session encountered a serious error. Reason: "%1" - + У сеансе BitTorrent выявілася сур'ёзная памылка. Прычына: «%1» - + SOCKS5 proxy error. Address: %1. Message: "%2". - + Памылка проксі SOCKS5. Адрас: %1. Паведамленне: «%2». - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - %1 абмежаванні ў змешаным рэжыме + %1 абмежаванні ў змяшаным рэжыме - + Failed to load Categories. %1 - + Не ўдалося загрузіць катэгорыі. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Не ўдалося загрузіць канфігурацыю катэгорый. Файл: «%1». Памылка: «Памылковы фармат даных» - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" + Торэнт выдалены, але не ўдалося выдаліць яго змесціва і/або часткова спампаваныя файлы. Торэнт: «%1». Памылка: «%2» - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 адключаны - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 адключаны - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" + Пошук адраса сіда ў DNS не ўдаўся. Торэнт: «%1». Адрас: «%2». Памылка: «%3» - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" + Атрымана паведамленне пра памылку ад адраса сіда. Торэнт: «%1». Адрас: «%2». Паведамленне: «%3» - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - Successfully listening on IP. IP: "%1". Port: "%2/%3" + Паспяховае праслухоўванне IP. IP: «%1». Порт: «%2/%3» - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" + Не ўдалося праслухаць IP. IP: «%1». Порт: «%2/%3». Прычына: «%4» - + Detected external IP. IP: "%1" - Detected external IP. IP: "%1" + Выяўлены знешні IP. IP: «%1» - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" + - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - Moved torrent successfully. Torrent: "%1". Destination: "%2" + Торэнт паспяхова перамяшчэнны. Торэнт: «%1». Месца прызначэння: «%2» - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + Не ўдалося перамясціць торэнт; «%1». Крыніца: «%2». Месца прызначэння: «%3». Прычына: «%4» - BitTorrent::TorrentCreator - - - Operation aborted - Operation aborted - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Create new torrent file failed. Reason: %1. + + Failed to start seeding. + Не ўдалося запусціць раздачу. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operation aborted + Аперацыя перапынена + + Create new torrent file failed. Reason: %1. - Create new torrent file failed. Reason: %1. + Не ўдалося стварыць новы торэнт. Прычына: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - Failed to add peer "%1" to torrent "%2". Reason: %3 + Не ўдалося дадаць пір «%1» у торэнт «%2». Прычына: %3 - + Peer "%1" is added to torrent "%2" - Peer "%1" is added to torrent "%2" + Пір «%1» дададзены ў торэнт «%2» - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. + Выяўлены нечаканыя даныя. Торэнт: %1. Даныя: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. + Не ўдалося запісаць у файл. Прычына: «%1». Торэнт цяпер у рэжыме «толькі аддача». - + Download first and last piece first: %1, torrent: '%2' Спачатку пампаваць першую і апошнюю часткі: %1, торэнт: '%2' - + On Укл. - + Off Выкл. - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Збой паўторнай загрузкі торэнта. Торэнт: %1. Прычына: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - Generate resume data failed. Torrent: "%1". Reason: "%2" + Не ўдалося стварыць даныя ўзнаўлення. Торэнт: «%1». Прычына: «%2» - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" + Не ўдалося аднавіць торэнт. Магчыма, файлы перамешчаны або сховішча недаступна. Торэнт: «%1». Прычына: «%2» - + Missing metadata - Missing metadata + Адсутнічаюць метаданыя - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - File rename failed. Torrent: "%1", file: "%2", reason: "%3" + Не ўдалося перайменаваць файл. Торэнт: «%1», файл: «%2», прычына: «%3» - + Performance alert: %1. More info: %2 - Performance alert: %1. More info: %2 + Папярэджанне аб прадукцыйнасці: %1. Больш інфармацыі: %2 @@ -2717,195 +2808,209 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Embedded Tracker: Now listening on IP: %1, port: %2 - Embedded Tracker: Now listening on IP: %1, port: %2 + Убудаваны трэкер: зараз праслухоўваецца IP: %1, порт: %2 Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 - Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 + Убудаваны трэкер: немагчыма прывязаць IP: %1, порт: %2. Прычына: %3 CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Параметр '%1' павінен прытрымлівацца сінтаксісу '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Параметр '%1' павінен прытрымлівацца сінтаксісу '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Чакаўся цэлы лік у пераменнай асяроддзя − '%1', але атрымана '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Параметр '%1' павінен прытрымлівацца сінтаксісу '%1=%2' + Параметр '%1' павінен прытрымлівацца сінтаксісу '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Чакалася '%1' у пераменнай асяроддзя '%2', але атрымана '%3' - - + + %1 must specify a valid port (1 to 65535). %1 неабходна ўказаць сапраўдны порт (з 1 да 65535). - + Usage: Выкарыстанне: - + [options] [(<filename> | <url>)...] - [options] [(<filename> | <url>)...] + [параметры] [(<filename> | <url>)...] - + Options: Параметры: - + Display program version and exit Паказваць версію праграмы і выхад - + Display this help message and exit Паказваць гэтую даведку і выхад - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Параметр '%1' павінен прытрымлівацца сінтаксісу '%1=%2' + + + + Confirm the legal notice + Пацвердзіце афіцыйнае апавяшчэнне + + + + port порт - - Change the Web UI port - Змяніць порт вэб-інтэфейсу + + Change the WebUI port + Змяніць порт вэб-інтэрфейсу - + Change the torrenting port - Change the torrenting port + Змяніць порт торэнта - + Disable splash screen Адключыць застаўку - + Run in daemon-mode (background) Працаваць у рэжыме дэмана (у фоне) - + dir Use appropriate short form or abbreviation of "directory" папка - + Store configuration files in <dir> Захоўваць файлы канфігурацыі ў <dir> - - + + name назва - + Store configuration files in directories qBittorrent_<name> Захоўваць файлы канфігурацыі ў папках qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - Hack into libtorrent fastresume files and make file paths relative to the profile directory + - + files or URLs файлы або спасылкі - + Download the torrents passed by the user Спампоўваць торэнты, прынятыя карыстальнікам - + Options when adding new torrents: Параметры пры дадаванні новых торэнтаў: - + path шлях - + Torrent save path Шлях захавання торэнтаў - + + Add torrents as running or stopped + + + Add torrents as started or paused - Дадаваць торэнты як запушчаныя або прыпыненыя + Дадаваць торэнты як запушчаныя або спыненыя - + Skip hash check - Прапусціць праверку хэша + Прапусціць праверку хэшу - + Assign torrents to category. If the category doesn't exist, it will be created. Прызначаць торэнтам катэгорыі. Калі катэгорыя не існуе, яна будзе створана. - + Download files in sequential order Спампоўваць файлы ў паслядоўнасці - + Download first and last pieces first Спачатку пампаваць першую і апошнюю часткі - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Пазначце, ці адкрываецца дыялогавае акно «Дадаць новы торэнт» пры дадаванні торэнта. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: + - + Command line parameters take precedence over environment variables Параметры каманднага радка маюць прыярытэт над пераменнымі асяроддзя - + Help Даведка @@ -2913,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Катэгорыі - + All Усе - + Uncategorized Без катэгорыі @@ -2957,32 +3062,45 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Узнавіць торэнты + Start torrents + + Stop torrents + + + + Resume torrents + Узнавіць торэнты + + Pause torrents - Спыніць торэнты + Спыніць торэнты Remove torrents - Remove torrents + Выдаліць торэнты ColorWidget - + Edit... - + Рэдагаваць... - + Reset Скінуць + + + System + + CookiesDialog @@ -3023,22 +3141,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Не ўдалося загрузіць табліцу стыляў уласнай тэмы. %1 - + Failed to load custom theme colors. %1 - + Не ўдалося загрузіць уласныя колеры тэмы. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Не ўдалося загрузіць колеры тэмы па змаўчанні. %1 @@ -3046,7 +3164,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Remove torrent(s) - Remove torrent(s) + Выдаліць торэнт(ы) @@ -3055,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Also permanently delete the files + Таксама незваротна выдаліць файлы - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - Are you sure you want to remove '%1' from the transfer list? + Сапраўды выдаліць са спіса «%1»? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - Are you sure you want to remove these %1 torrents from the transfer list? + Сапраўды выдаліць са спіса %1 торэнты(аў)? - + Remove Выдаліць @@ -3084,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Спампаваць па спасылках - + Add torrent links Дадаць спасылкі на торэнты - + One link per line (HTTP links, Magnet links and info-hashes are supported) Адна на радок (HTTP-спасылкі, Magnet-спасылкі і хэш-сумы) @@ -3099,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Спампаваць - + No URL entered Няма URL адраса - + Please type at least one URL. Увядзіце хаця б адзін адрас URL. @@ -3169,7 +3291,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also An error occurred while trying to open the log file. Logging to file is disabled. - An error occurred while trying to open the log file. Logging to file is disabled. + Адбылася памылка пры спробе адкрыць файл журнала. Запіс у журнал адключаны. @@ -3211,45 +3333,45 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also I/O Error: Could not open IP filter file in read mode. - I/O Error: Could not open IP filter file in read mode. + Памылка ўводу/вываду: Не ўдалося адкрыць файл IP-фільтра ў рэжыме чытання. IP filter line %1 is malformed. - IP filter line %1 is malformed. + Радок IP-фільтра %1 мае няправільны фармат. IP filter line %1 is malformed. Start IP of the range is malformed. - IP filter line %1 is malformed. Start IP of the range is malformed. + Радок IP-фільтра %1 мае няправільны фармат. Няправільны фармат пачатковага IP у дыяпазоне адрасоў. IP filter line %1 is malformed. End IP of the range is malformed. - IP filter line %1 is malformed. End IP of the range is malformed. + Радок IP-фільтра %1 мае няправільны фармат. Няправільны фармат канцавога IP у дыяпазоне адрасоў. IP filter line %1 is malformed. One IP is IPv4 and the other is IPv6! - IP filter line %1 is malformed. One IP is IPv4 and the other is IPv6! + Радок IP-фільтра %1 мае няправільны фармат. Адзін IP-адрас у фармаце IPv4, а другі — у IPv6. IP filter exception thrown for line %1. Exception is: %2 - IP filter exception thrown for line %1. Exception is: %2 + %1 extra IP filter parsing errors occurred. 513 extra IP filter parsing errors occurred. - %1 extra IP filter parsing errors occurred. + @@ -3263,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Памылка разбору: Файл фільтра не з'яўляецца правільным файлам PeerGuardian P2B. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Спампоўванне торэнта... Крыніца: «%1» - Trackers cannot be merged because it is a private torrent - + Немагчыма дадаць трэкеры, бо гэта прыватны торэнт - + Torrent is already present - Торэнт ужо існуе + Торэнт ужо існуе + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торэнт '%1' ужо ў спісе перадачы. Вы хочаце аб'яднаць трэкеры з новай крыніцы? + Торэнт «%1» ужо ёсць у спісе. Хочаце дадаць трэкеры з новай крыніцы? GeoIPDatabase - - + + Unsupported database file size. Такі памер файла базы даных не падтрымліваецца. - + Metadata error: '%1' entry not found. Памылка метаданых: запіс '%1' не знойдзены. - + Metadata error: '%1' entry has invalid type. - Памылка метаданых: запіс '%1' мае няправільны тып. + Памылка метаданых: запіс '%1' мае памылковы тып. - + Unsupported database version: %1.%2 Версія базы даных не падтрымліваецца: %1.%2 - + Unsupported IP version: %1 Версія IP не падтрымліваецца: %1 - + Unsupported record size: %1 Памер запісу не падтрымліваецца: %1 - + Database corrupted: no data section found. База даных пашкоджана: не знойдзена раздзела даных. @@ -3328,19 +3477,19 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 + Памер HTTP-запыту перавышае абмежаванне, сокет закрываецца. Абмежаванне: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Хібны метад запыту Http, закрыццё сокета. IP: %1. Метад: «%2» - + Bad Http request, closing socket. IP: %1 - Bad Http request, closing socket. IP: %1 + @@ -3373,135 +3522,134 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also The entered subnet is invalid. - Уведзеная падсетка недапушчальна. + Уведзеная падсетка памылковая. IconWidget - + Browse... Агляд... - + Reset Скінуць - + Select icon - + Выбраць значок - + Supported image files - + Файлы відарысаў, якія падтрымліваюцца + + + + LegalNotice + + + Legal Notice + Афіцыйная перасцярога + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent - гэта праграма для абмену файламі. Пры запуску торэнта, даныя з яго пачынаюць раздавацца і становяцца даступны іншым карыстальнікам. Вы несяце персанальную адказнасць за ўсё змесціва, якім дзеліцеся. + + + + No further notices will be issued. + Ніякіх дадатковых перасцярог паказвацца не будзе. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Калі вы прачыталі афіцыйную перасцярогу, можаце выкарыстоўваць параметр каманднага радка `--confirm-legal-notice`, каб адключыць гэтае паведамленне. + + + + Press 'Enter' key to continue... + Каб працягнуць, націсніце «Enter»… LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - %1 was blocked. Reason: %2. + %1 заблакіраваны. Прычына: %2. - + %1 was banned 0.0.0.0 was banned - %1 was banned + %1 заблакаваны Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 - невядомы параметр .каманднага радка. - - + + %1 must be the single command line parameter. %1 павінна быць адзіным параметрам каманднага радка. - - You cannot use %1: qBittorrent is already running for this user. - Нельга выкарыстаць %1: qBittorrent ужо выконваецца для гэтага карыстальніка. - - - + Run application with -h option to read about command line parameters. Запусціце праграму з параметрам -h, каб атрымаць даведку па параметрах каманднага радка. - + Bad command line Праблемны камандны радок - + Bad command line: Праблемны камандны радок: - + An unrecoverable error occurred. - + Узнікла невырашальная памылка. - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent сутыкнуўся з невырашальнай памылкай. - - Legal Notice - Афіцыйная перасцярога + + You cannot use %1: qBittorrent is already running. + Немагчыма выкарыстаць %1: qBittorrent ужо запушчаны. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + Another qBittorrent instance is already running. + Іншы экзэмпляр qBittorrent ужо запушчаны. - - No further notices will be issued. - No further notices will be issued. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Знойдзены нечаканы экзэмпляр qBittorrent. Гэты экзэмпляр будзе закрыты. Ідэнтыфікатар бягучага працэсу: %1. - - Press %1 key to accept and continue... - Націсніце %1 каб пагадзіцца і працягнуць... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent - праграма для абмену файламі. Пасля запуску торэнта яго змесціва стане даступным іншым удзельнікам для раздачы. Любым змесцівам вы дзеліцеся пад вашу асабістую адказнасць. - -Ніякіх дадатковых перасцярог паказвацца не будзе. - - - - Legal notice - Афіцыйная перасцярога - - - - Cancel - Скасаваць - - - - I Agree - Я згодны(ая) + + Error when daemonizing. Reason: "%1". Error code: %2. + Памылка ў час дэманізацыі. Прычына: «%1». Код памылкі: %2. @@ -3509,624 +3657,708 @@ No further notices will be issued. &Edit - &Кіраванне + &Рэдагаваць - + &Tools &Інструменты - + &File &Файл - + &Help &Даведка - + On Downloads &Done Па сканчэнні &спампоўванняў - + &View &Выгляд - + &Options... &Параметры... - &Resume - &Узнавіць + &Узнавіць - + &Remove - &Remove + &Выдаліць - + Torrent &Creator Стварыць &торэнт - - + + Alternative Speed Limits Альтэрнатыўныя абмежаванні хуткасці - + &Top Toolbar Верхняя &панэль - + Display Top Toolbar Паказаць верхнюю панэль - + Status &Bar Панэль &стану - + Filters Sidebar - Filters Sidebar + Бакавая панэль - + S&peed in Title Bar Х&уткасць у загалоўку - + Show Transfer Speed in Title Bar Паказваць хуткасць перадачы ў загалоўку акна - + &RSS Reader - Чытанне &RSS + Менеджар &RSS - + Search &Engine &Пошук - + L&ock qBittorrent З&аблакіраваць qBittorrent - + Do&nate! Ах&вяраваць! - + + Sh&utdown System + + + + &Do nothing - &Do nothing + &Нічога не рабіць - + Close Window Закрыць акно - R&esume All - У&знавіць усё + У&знавіць усё - + Manage Cookies... Кіраванне cookie... - + Manage stored network cookies Кіраванне захаванымі файламі cookie - + Normal Messages Звычайныя паведамленні - + Information Messages Інфармацыйныя паведамленні - + Warning Messages Папярэджанні - + Critical Messages Крытычныя паведамленні - + &Log &Журнал - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - Set Global Speed Limits... + Наладзіць хуткасць... - + Bottom of Queue - Унізе чаргі + У канец чаргі - + Move to the bottom of the queue Перамясціць у канец чаргі - + Top of Queue - Верх чаргі + У пачатак чаргі - + Move to the top of the queue - Move to the top of the queue + Перамясціць у пачатак чаргі - + Move Down Queue - Move Down Queue + Панізіць у чарзе - + Move down in the queue - Move down in the queue + Перамясціць у чарзе ніжэй - + Move Up Queue - Move Up Queue + Падняць у чарзе - + Move up in the queue - Падняць у чарзе + Перамясціць у чарзе вышэй - + &Exit qBittorrent &Выйсці з qBittorrent - + &Suspend System &Прыпыніць камп'ютар - + &Hibernate System - &Усыпіць камп'ютар + Перайсці ў &гібернацыю - S&hutdown System - А&дключыць камп'ютар + Вы&ключыць камп'ютар - + &Statistics &Статыстыка - + Check for Updates Праверыць абнаўленні - + Check for Program Updates Праверыць абнаўленні праграмы - + &About &Пра qBittorrent - &Pause - &Спыніць + &Спыніць - P&ause All - С&пыніць усе + С&пыніць усе - + &Add Torrent File... &Дадаць торэнт-файл... - + Open Адкрыць - + E&xit В&ыйсці - + Open URL Адкрыць URL - + &Documentation &Дакументацыя - + Lock Заблакіраваць - - - + + + Show Паказаць - + Check for program updates Праверыць абнаўленні праграмы - + Add Torrent &Link... Дадаць &спасылку на торэнт... - + If you like qBittorrent, please donate! Калі вам падабаецца qBittorrent, калі ласка, зрабіце ахвяраванне! - - + + Execution Log Журнал выканання - + Clear the password Прыбраць пароль - + &Set Password &Задаць пароль - + Preferences Налады - + &Clear Password &Прыбраць пароль - + Transfers Перадачы - - + + qBittorrent is minimized to tray qBittorrent згорнуты ў вобласць апавяшчэнняў - - - + + + This behavior can be changed in the settings. You won't be reminded again. - This behavior can be changed in the settings. You won't be reminded again. + - + Icons Only Толькі значкі - + Text Only Толькі тэкст - + Text Alongside Icons - Тэкст поруч са значкамі + Тэкст побач са значкамі - + Text Under Icons Тэкст пад значкамі - + Follow System Style Паводле сістэмнага стылю - - + + UI lock password Пароль блакіроўкі інтэрфейсу - - + + Please type the UI lock password: Увядзіце пароль, каб заблакіраваць інтэрфейс: - + Are you sure you want to clear the password? - Сапраўды жадаеце прыбраць пароль? + Сапраўды хочаце ачысціць пароль? - + Use regular expressions Выкарыстоўваць рэгулярныя выразы - - Search - Пошук + + + Search Engine + Пошукавая сістэма - - Transfers (%1) - Перадачы (%1) + + Search has failed + Памылка пошуку - Recursive download confirmation - Пацвярджэнне рэкурсіўнага спампоўвання + + Search has finished + Пошук завершаны - Never - Ніколі + + Search + Пошук + + + + Transfers (%1) + Перадачы (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent абнавіўся і патрабуе перазапуску для актывацыі новых функцый. - + qBittorrent is closed to tray qBittorrent закрыты ў вобласць апавяшчэнняў - + Some files are currently transferring. Некаторыя файлы зараз перадаюцца. - + Are you sure you want to quit qBittorrent? Сапраўды хочаце выйсці з qBittorrent? - + &No &Не - + &Yes &Так - + &Always Yes &Заўсёды Так - + Options saved. - Options saved. + Параметры захаваны. + + + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [С: %1, З: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - %1/s - s is a shorthand for seconds - %1/с + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime - Missing Python Runtime + Адсутнічае асяроддзе выканання Python - + qBittorrent Update Available - Ёсць абнаўленне для qBittorrent + Даступна абнаўленне qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - Для выкарыстання пошукавіка патрабуецца Python, але выглядае, што ён не ўсталяваны. -Жадаеце ўсталяваць? + Для выкарыстання пошукавай сістэмы патрабуецца Python, але падобна, што ён не ўсталяваны. +Хочаце ўсталяваць? - + Python is required to use the search engine but it does not seem to be installed. - Для выкарыстання пошукавіка патрабуецца Python, але выглядае, што ён не ўсталяваны. + Для выкарыстання пошукавай сістэмы патрабуецца Python, але падобна, што ён не ўсталяваны. - - + + Old Python Runtime - Old Python Runtime + Старое асяроддзе выканання Python - + A new version is available. Даступна новая версія. - + Do you want to download %1? Хочаце спампаваць %1? - + Open changelog... - Адкрыць спіс зменаў... + Адкрыць спіс змен... - + No updates available. You are already using the latest version. Няма абнаўленняў. Вы ўжо карыстаецеся апошняй версіяй. - + &Check for Updates &Праверыць абнаўленні - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - Your Python version (%1) is outdated. Minimum requirement: %2. -Do you want to install a newer version now? + Ваша версія Python (%1) састарэла. Патрабуецца мінімум: %2. +Хочаце ўсталяваць навейшую версію? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. -Minimum requirement: %2. + У вас састарэлая версія Python (%1). Абнавіце яго да апошняй версіі, каб пошукавая сістэма працавала. Патрабуецца прынамсі %2 + + + + Paused + Прыпынены - + Checking for Updates... Праверка абнаўленняў... - + Already checking for program updates in the background У фоне ўжо ідзе праверка абнаўленняў праграмы - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Памылка спампоўвання - Python setup could not be downloaded, reason: %1. Please install it manually. - Усталёўнік Python не можа быць спампаваны з прычыны: %1. -Усталюйце яго ўласнаручна. + Не ўдалося спампаваць праграму ўсталявання Python, прычына: %1. +Усталюйце яго ўручную. - - + + Invalid password Памылковы пароль - + Filter torrents... - + Фільтраваць торэнты... - + Filter by: - + Фільтры - + The password must be at least 3 characters long - The password must be at least 3 characters long + Пароль павінен змяшчаць не менш за 3 сімвалы. - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - - + The password is invalid Уведзены пароль памылковы - + DL speed: %1 e.g: Download speed: 10 KiB/s Спамп. %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Разд: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [С: %1, Р: %2] qBittorrent %3 - - - + Hide Схаваць - + Exiting qBittorrent Сканчэнне працы qBittorrent - + Open Torrent Files Адкрыць Torrent-файлы - + Torrent Files Torrent-файлы @@ -4151,17 +4383,17 @@ Please install it manually. Dynamic DNS error: Invalid username/password. - Памылка дынамічнага DNS: Нядзейснае імя карыстальніка ці пароль. + Памылка дынамічнага DNS: Памылковае імя карыстальніка або пароль. Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Памылка дынамічнага DNS: qBittorrent занесены ў чорны спіс, адпраўце справаздачу пра памылку на https://bugs.qbittorrent.org. Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Памылка дынамічнага DNS: служба вярнула %1. Паведамце пра памылку на https://bugs.qbittorrent.org. @@ -4171,7 +4403,7 @@ Please install it manually. Dynamic DNS error: supplied domain name is invalid. - Памылка дынамічнага DNS: дадзеная назва дамену несапраўдная. + Памылка дынамічнага DNS: дадзеная назва дамену памылковая. @@ -4187,133 +4419,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - I/O Error: %1 + Памылка ўводу/вываду: %1 - + The file size (%1) exceeds the download limit (%2) - The file size (%1) exceeds the download limit (%2) + Памер файла (%1) перавышае абмежаванне спампоўвання (%2) - + Exceeded max redirections (%1) - Exceeded max redirections (%1) + - + Redirected to magnet URI - Redirected to magnet URI + Перанакіравана да magnet-спасылкі - + The remote host name was not found (invalid hostname) Адлеглы хост не знойдзены (памылковая назва хоста) - + The operation was canceled Аперацыя скасавана - + The remote server closed the connection prematurely, before the entire reply was received and processed - Адлеглы сервер закрыў злучэнне перад тым, як увесь адказ быў атрыманы і апрацаваны + Аддаленны сервер закрыў злучэнне перад тым, як увесь адказ быў атрыманы і апрацаваны - + The connection to the remote server timed out Тэрмін чакання злучэння з адлеглым серверам скончыўся - + SSL/TLS handshake failed Рукапацісканне SSL/TLS не выйшла - + The remote server refused the connection Адлеглы сервер адмовіў у злучэнні - + The connection to the proxy server was refused У злучэнні з проксі-серверам адмоўлена - + The proxy server closed the connection prematurely Проксі-сервер заўчасна закрыў злучэнне - + The proxy host name was not found Назва проксі-сервера не знойдзена - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Тэрмін чакання злучэння з проксі-серверам скончыўся, ці ён своечасова не адказаў на запыт - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Проксі-сервер патрабуе аўтэнтыфікацыю, але не прыняў пазначаныя ўліковыя звесткі - + The access to the remote content was denied (401) Доступ да адлеглага змесціва забаронены (401) - + The operation requested on the remote content is not permitted Дзеянне, якое запытвала адлеглае змесціва, забаронена - + The remote content was not found at the server (404) Адлеглага змесціва не знойдзена на гэтым серверы (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Адлеглы сервер патрабуе аўтэнтыфікацыі для доступа да змесціва, але прадастаўленныя ўліковыя звесткі не прыняў - + The Network Access API cannot honor the request because the protocol is not known Невядомы пратакол, API сеткавага доступу не можа выканаць запыт - + The requested operation is invalid for this protocol - Запатрабаванае дзеянне не падтрымліваецца гэтым пратаколам + Запатрабаванае дзеянне памылковае для гэтага пратакола - + An unknown network-related error was detected Узнікла невядомая сеткавая памылка - + An unknown proxy-related error was detected Узнікла невядомая памылка проксі-сервера - + An unknown error related to the remote content was detected Узнікла невядомая памылка адлеглага змесціва - + A breakdown in protocol was detected Паўстала памылка ў пратаколе - + Unknown error Невядомая памылка @@ -4321,9 +4553,14 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" - Ignoring SSL error, URL: "%1", errors: "%2" + Ігнаруецца памылка SSL, адрас: «%1», памылкі: «%2» @@ -4331,7 +4568,7 @@ Please install it manually. Venezuela, Bolivarian Republic of - Венесуэла, Баліварыянская Рэспубліка + Венесуэла @@ -4348,13 +4585,13 @@ Please install it manually. IP geolocation database loaded. Type: %1. Build time: %2. - IP geolocation database loaded. Type: %1. Build time: %2. + База даных геалакацыі IP загружана. Тып: %1. Час зборкі: %2. Couldn't load IP geolocation database. Reason: %1 - Couldn't load IP geolocation database. Reason: %1 + Не ўдалося загрузіць базу даных геалакацыі IP. Прычына: %1 @@ -4479,7 +4716,7 @@ Please install it manually. Brunei Darussalam - Бруней-Даруссалам + Бруней-Дарусалам @@ -4529,7 +4766,7 @@ Please install it manually. Congo, The Democratic Republic of the - Конга, Дэмакратычная Рэспубліка + Дэмакратычная Рэспубліка Конга @@ -4584,7 +4821,7 @@ Please install it manually. Cape Verde - Каба-Вэрдэ + Каба-Вердэ @@ -4594,7 +4831,7 @@ Please install it manually. Christmas Island - Востраў Ражства + Востраў Каляд @@ -4604,7 +4841,7 @@ Please install it manually. Czech Republic - Чэшская Рэспубліка + Чэхія @@ -4684,17 +4921,17 @@ Please install it manually. Falkland Islands (Malvinas) - Фалкленскія выспы (Мальдзівы) + Фалклендскія астравы (Мальдывы) Micronesia, Federated States of - Мікранезія, Фэдэратыўныя Штаты + Мікранезія Faroe Islands - Фарэрскія выспы + Фарэрскія астравы @@ -4709,7 +4946,7 @@ Please install it manually. United Kingdom - Злучанае Каралеўства + Вялікабрытанія @@ -4769,7 +5006,7 @@ Please install it manually. South Georgia and the South Sandwich Islands - Паўднёвая Джорджыя і Паўднёвыя Сандвічавы выспы + Паўднёвая Георгія і Паўднёвыя Сандвічавы астравы @@ -4784,7 +5021,7 @@ Please install it manually. Guinea-Bissau - Гвінея-Бісаў + Гвінея-Бісау @@ -4799,7 +5036,7 @@ Please install it manually. Heard Island and McDonald Islands - Выспа Херд і выспы Макдональд + Востраў Херд і астравы Макдональд @@ -4854,7 +5091,7 @@ Please install it manually. Iran, Islamic Republic of - Іран, Ісламская Рэспубліка + Іран @@ -4904,7 +5141,7 @@ Please install it manually. Comoros - Каморскія выспы + Каморскія астравы @@ -4919,7 +5156,7 @@ Please install it manually. Korea, Republic of - Карэя, Рэспубліка + Паўднёвая Карэя @@ -4929,7 +5166,7 @@ Please install it manually. Cayman Islands - Кайманавы выспы + Кайманавы астравы @@ -4939,7 +5176,7 @@ Please install it manually. Lao People's Democratic Republic - Лаоская Народна-Дэмакратычная Рэспубліка + Лаос @@ -4949,7 +5186,7 @@ Please install it manually. Saint Lucia - Сэнт-Люсія + Сент-Люсія @@ -4959,7 +5196,7 @@ Please install it manually. Sri Lanka - Шры Ланка + Шры-Ланка @@ -4999,7 +5236,7 @@ Please install it manually. Moldova, Republic of - Малдова, Рэспубліка + Малдова @@ -5009,7 +5246,7 @@ Please install it manually. Marshall Islands - Маршалавы выспы + Маршалавы астравы @@ -5029,7 +5266,7 @@ Please install it manually. Northern Mariana Islands - Паўночныя Марыянскія выспы + Паўночныя Марыянскія астравы @@ -5099,7 +5336,7 @@ Please install it manually. Norfolk Island - Выспа Норфалк + Востраў Норфалк @@ -5199,7 +5436,7 @@ Please install it manually. Palau - Палаў + Палау @@ -5214,7 +5451,7 @@ Please install it manually. Reunion - Уз'яднанне + Рэюньён @@ -5224,7 +5461,7 @@ Please install it manually. Russian Federation - Расійская Федэрацыя + Расія @@ -5239,12 +5476,12 @@ Please install it manually. Solomon Islands - Саламонавы выспы + Саламонавы астравы Seychelles - Сейшэльскія выспы + Сейшэльскія астравы @@ -5269,7 +5506,7 @@ Please install it manually. Svalbard and Jan Mayen - Шпіцбэрген і Ян-Майен + Шпіцберген і Ян-Маен @@ -5304,7 +5541,7 @@ Please install it manually. Sao Tome and Principe - Сан-Томе і Прынсэп + Сан-Тамэ і Прынсіпі @@ -5314,7 +5551,7 @@ Please install it manually. Syrian Arab Republic - Сірыйская Арабская Рэспубліка + Сірыя @@ -5339,7 +5576,7 @@ Please install it manually. Togo - Таго + Тога @@ -5354,7 +5591,7 @@ Please install it manually. Tokelau - Такелаў + Такелау @@ -5379,22 +5616,22 @@ Please install it manually. Couldn't download IP geolocation database file. Reason: %1 - Couldn't download IP geolocation database file. Reason: %1 + Не ўдалося загрузіць файл базы даных геалакаці IP. Прычына: %1 Could not decompress IP geolocation database file. - Could not decompress IP geolocation database file. + Не ўдалося распакаваць файл базы даных геалакацыі IP. Couldn't save downloaded IP geolocation database file. Reason: %1 - Couldn't save downloaded IP geolocation database file. Reason: %1 + Не ўдалося загрузіць спампаваны файл базы даных геалакаці IP. Прычына: %1 Successfully updated IP geolocation database. - Successfully updated IP geolocation database. + База даных геалакацыі IP паспяхова абноўлена. @@ -5409,7 +5646,7 @@ Please install it manually. Bonaire, Sint Eustatius and Saba - Банайрэ, Сінт-Эстаціус і Саба + Банайрэ, Сінт-Эстатыус і Саба @@ -5424,7 +5661,7 @@ Please install it manually. Saint Martin (French part) - Святога Марціна, выспа (французская частка) + Сен Мартэн (Французская частка) @@ -5439,7 +5676,7 @@ Please install it manually. Pitcairn - Піткэрн, выспы + Піткэрн @@ -5449,7 +5686,7 @@ Please install it manually. Saint Helena, Ascension and Tristan da Cunha - Выспы Святой Алены, Ушэсця і Трыстан-да-Кунья + Святая Алена, востраў Узнясення і Трыстан-да-Кунья @@ -5459,7 +5696,7 @@ Please install it manually. Sint Maarten (Dutch part) - Святога Марціна, выспа (нідэрландская частка) + Сінт-Мартэн (Нідэрландская частка) @@ -5484,7 +5721,7 @@ Please install it manually. Tanzania, United Republic of - Танзанія, Аб'яднаная Рэспубліка + Танзанія @@ -5499,7 +5736,7 @@ Please install it manually. United States Minor Outlying Islands - Знешнія малыя выспы ЗША + Знешнія малыя астравы ЗША @@ -5519,22 +5756,22 @@ Please install it manually. Holy See (Vatican City State) - Святы Пасад (Дзяржава-горад Ватыкан) + Святы Прастол (Ватыкан) Saint Vincent and the Grenadines - Сэнт-Вінсэнт і Грэнадыны + Сент-Вінсент і Грэнадзіны Virgin Islands, British - Віргінскія выспы, Брытанскія + Брытанскія Віргінскія Астравы Virgin Islands, U.S. - Віргінскія выспы, ЗША + Віргінскія Астравы Злучаных Штатаў @@ -5589,17 +5826,17 @@ Please install it manually. Aland Islands - Аландскія выспы + Аландскія астравы Guernsey - Выспа Гернсі + Гернсі Isle of Man - Выспа Мэн + Востраў Мэн @@ -5617,47 +5854,47 @@ Please install it manually. Connection failed, unrecognized reply: %1 - Connection failed, unrecognized reply: %1 + Збой злучэння, нявызначаны адказ: %1 Authentication failed, msg: %1 - Authentication failed, msg: %1 + Збой аўтэнтыфікацыі, msg: %1 <mail from> was rejected by server, msg: %1 - <mail from> was rejected by server, msg: %1 + <mail from> адхілена серверам, паведамленне: %1 <Rcpt to> was rejected by server, msg: %1 - <Rcpt to> was rejected by server, msg: %1 + <Rcpt to> адхілена серверам, паведамленне: %1 <data> was rejected by server, msg: %1 - <data> was rejected by server, msg: %1 + <data>адхілена серверам, паведамленне: %1 Message was rejected by the server, error: %1 - Message was rejected by the server, error: %1 + Паведамленне адхілена серверам, памылка: %1 Both EHLO and HELO failed, msg: %1 - Both EHLO and HELO failed, msg: %1 + The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 - The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 + Email Notification Error: %1 - Email Notification Error: %1 + Памылка паведамлення на email: %1 @@ -5693,436 +5930,497 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Вэб-інтэрфейс + Вэб-інтэрфейс - + Advanced Пашыраныя - + Customize UI Theme... - + Наладзіць тэму... - + Transfer List Спіс торэнтаў - + Confirm when deleting torrents Пацвярджаць выдаленне торэнтаў - Shows a confirmation dialog upon pausing/resuming all the torrents - Shows a confirmation dialog upon pausing/resuming all the torrents + Паказвае дыялог пацвярджэння, перш чым спыніць/узнавіць усе торэнты - Confirm "Pause/Resume all" actions - Confirm "Pause/Resume all" actions + Пацвярджаць дзеянні «Спыніць/Узнавіць усе» - + Use alternating row colors In table elements, every other row will have a grey background. Выкарыстоўваць чаргаванне колеру радкоў - + Hide zero and infinity values Хаваць нулявыя і бясконцыя значэнні - + Always Заўсёды - Paused torrents only - Толькі для спыненых + Толькі для спыненых - + Action on double-click - Дзеянне пры двайным націску + Дзеянне для падвойнага націскання - + Downloading torrents: - Торэнты якія спампоўваюцца: + Торэнты, якія спампоўваюцца: - - Start / Stop Torrent - Запусціць / спыніць торэнт + Запусціць / спыніць торэнт - - + + Open destination folder - Адкрыць каталог прызначэння + Адкрыць папку прызначэння - - + + No action Няма дзеяння - + Completed torrents: Завершаныя торэнты: - + Auto hide zero status filters - + Аўтаматычна хаваць фільтры стану з нулявым значэннем - + Desktop Працоўны стол - + Start qBittorrent on Windows start up Запускаць qBittorrent разам з Windows - + Show splash screen on start up - Паказаць застаўку пры запуску + Паказваць застаўку падчас запуску - + Confirmation on exit when torrents are active Пацвярджаць выхад пры наяўнасці актыўных торэнтаў - + Confirmation on auto-exit when downloads finish - Пацвярджаць аўтавыхад па сканчэнні спампоўванняў + Пацвярджаць аўтавыхад пры завяршэнні спампоўванняў - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Каб задаць qBittorrent у якасці праграмы па змаўчанні для файлаў .torrent і/або Magnet-спасылак<br/>можна выкарыстоўваць акно <span style=" font-weight:600;">Праграмы па змаўчанні</span> ў <span style=" font-weight:600;">Панэлі кіравання</span>.</p></body></html> - + KiB КБ - + Torrent content layout: - Змесціва торэнта: + Структура змесціва торэнта: - + Original - Арыгінал + Зыходная - + Create subfolder Стварыць падпапку - + Don't create subfolder Не ствараць падпапку - + The torrent will be added to the top of the download queue - + Торэнт будзе дададзены ў пачатак чаргі спампоўвання - + Add to top of queue The torrent will be added to the top of the download queue Дадаць у пачатак чаргі - + When duplicate torrent is being added - + Пры паўторным дадаванні торэнта - + Merge trackers to existing torrent - + Дадаваць новыя трэкеры ў наяўны торэнт + + + + Keep unselected files in ".unwanted" folder + Захоўваць нявыбраныя файлы ў папцы «.unwanted» - + Add... Дадаць... - + Options.. - Options.. + Параметры.. - + Remove Выдаліць - + Email notification &upon download completion Апавяшчэнне па электроннай пошце пасля &завяршэння спампоўвання - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: - Peer connection protocol: + Пратакол злучэння для піраў: - + Any - Any + Любы - + I2P (experimental) - + I2P (эксперыментальны) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + <html><head/><body><p>Калі ўключаны «змяшаны рэжым», торэнты I2P могуць атрымліваць піры і з іншых крыніц, акрамя трэкера, і падлучацца да звычайных IP-адрасоў, без забеспячэння ананімнасці. Можа быць карысным, калі карыстальнік не зацікаўлены ў ананімнасці, але хоча мець магчымасць злучацца з пірамі I2P.</p></body></html> - + Mixed mode - + Змяшаны рэжым - + Some options are incompatible with the chosen proxy type! - + Некаторыя параметры несумяшчальныя з выбраным тыпам проксі! - + If checked, hostname lookups are done via the proxy - + Калі пазначана, пошук назвы хоста выконваецца праз проксі - + Perform hostname lookup via proxy - + Выконваць пошук назвы хоста праз проксі - + Use proxy for BitTorrent purposes - + Выкарыстоўваць проксі для працы BitTorrent - + RSS feeds will use proxy - + RSS-каналы будуць выкарыстоўваць проксі - + Use proxy for RSS purposes - + Выкарыстоўваць проксі для мэт RSS - + Search engine, software updates or anything else will use proxy - + Пошукавік, модуль абнаўлення і іншыя кампаненты будуць выкарыстоўваць проксі - + Use proxy for general purposes - + Выкарыстоўваць проксі для агульных задач - + IP Fi&ltering &Фільтрацыя па IP - + Schedule &the use of alternative rate limits &Запланаваць выкарыстанне альтэрнатыўных абмежаванняў хуткасці - + From: From start time З: - + To: To end time Да: - + Find peers on the DHT network Шукаць піры праз сетку DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - Allow encryption: Connect to peers regardless of setting -Require encryption: Only connect to peers with protocol encryption -Disable encryption: Only connect to peers without protocol encryption + Дазволіць шыфраванне: злучацца з вузламі незалежна ад іх налад +Патрабаваць шыфраванне: злучацца толькі з вузламі, якія выкарыстоўваюць шыфраванне пратаколу +Адключыць шыфраванне: злучацца толькі з вузламі, якія НЕ выкарыстоўваюць шыфраванне пратаколу - + Allow encryption Дазволіць шыфраванне - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Больш інфармацыі</a>) - + Maximum active checking torrents: - Maximum active checking torrents: + Максімальная колькасць торэнтаў, якія правяраюцца: - + &Torrent Queueing &Чарговасць торэнтаў - + When total seeding time reaches - + Калі агульны час раздачы дасягне - + When inactive seeding time reaches - + Калі неактыўны час раздачы дасягне - A&utomatically add these trackers to new downloads: - Аўта&матычна дадаваць гэтыя трэкеры да новых спампованняў: + Аўта&матычна дадаваць гэтыя трэкеры ў новыя спампоўванні: - + RSS Reader - RSS-менеджар + Менеджар RSS - + Enable fetching RSS feeds Уключыць атрыманне RSS-каналаў - + Feeds refresh interval: Інтэрвал абнаўлення каналаў: - + + Same host request delay: + Затрымка паўторнага запыту хоста: + + + Maximum number of articles per feed: Максімальная колькасць артыкулаў на канал: - - - + + + min minutes - хв +  хв - + Seeding Limits Абмежаванне раздачы - Pause torrent - Спыніць торэнт + Спыніць торэнт - + Remove torrent Выдаліць торэнт - + Remove torrent and its files Выдаліць торэнт і яго файлы - + Enable super seeding for torrent Уключыць для торэнта рэжым суперраздачы - + When ratio reaches Калі рэйтынг раздачы дасягне паказчыка - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Адрас: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Аўтаспампоўванне торэнтаў з RSS - + Enable auto downloading of RSS torrents Уключыць аўтаспампоўванне торэнтаў з RSS - + Edit auto downloading rules... Рэдагаваць правілы аўтаспампоўвання... - + RSS Smart Episode Filter - RSS Smart Episode Filter + Разумны фільтр эпізодаў з RSS - + Download REPACK/PROPER episodes - Download REPACK/PROPER episodes + Спампоўваць эпізоды REPACK/PROPER - + Filters: Фільтры: - + Web User Interface (Remote control) Вэб-інтэрфейс (Аддаленае кіраванне) - + IP address: IP-адрас: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6131,490 +6429,543 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv «::» для любога IPv6-адраса або «*» для абодвух IPv4 і IPv6. - + Ban client after consecutive failures: Блакіраваць кліента пасля чарады збояў: - + Never Ніколі - + ban for: заблакіраваць на: - + Session timeout: Прыпыніць сувязь на: - + Disabled Адключана - Enable cookie Secure flag (requires HTTPS) - Ужываць для cookie пазнаку Secure (патрабуецца HTTPS) + Ужываць для cookie пазнаку Secure (патрабуецца HTTPS) - + Server domains: Дамены сервера: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. Use ';' to split multiple entries. Can use wildcard '*'. - Whitelist for filtering HTTP Host header values. -In order to defend against DNS rebinding attack, -you should put in domain names used by WebUI server. + Белы спіс фільтра загалоўкаў HTTP-хоста. +Каб прадухіліць атакі DNS, вы павінны задаць +даменныя імёны для сервера вэб-інтэрфейсу. -Use ';' to split multiple entries. Can use wildcard '*'. +Выкарыстоўвайце «;», каб раздзяліць некалькі +запісаў, даступны шаблоны накшталт «*». - + &Use HTTPS instead of HTTP &Выкарыстоўваць HTTPS замест HTTP - + Bypass authentication for clients on localhost Не выкарыстоўваць аўтэнтыфікацыю кліентаў для localhost - + Bypass authentication for clients in whitelisted IP subnets Не выкарыстоўваць аўтэнтыфікацыю кліентаў для дазволеных падсетак - + IP subnet whitelist... Дазволеныя падсеткі... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + - + Upda&te my dynamic domain name А&бнаўляць мой дынамічны DNS - + Minimize qBittorrent to notification area - Згарнуць qBittorrent у вобласць апавяшчэнняў + Згортваць qBittorrent у вобласць апавяшчэнняў + + + + Search + Пошук + + + + WebUI + - + Interface Інтэрфейс - + Language: Мова: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Стыль значка ў трэі: - - + + Normal Звычайны - + File association Суаднясенні файлаў - + Use qBittorrent for .torrent files Выкарыстоўваць qBittorrent для торэнт-файлаў - + Use qBittorrent for magnet links Выкарыстоўваць qBittorrent для магнет-спасылак - + Check for program updates Праверыць абнаўленні праграмы - + Power Management Кіраванне сілкаваннем - + + &Log Files + + + + Save path: Шлях захавання: - + Backup the log file after: Ствараць рэзервоваю копію пасля: - + Delete backup logs older than: Выдаляць рэзервовыя копіі старэйшыя за: - + + Show external IP in status bar + + + + When adding a torrent Пры дадаванні торэнта - + Bring torrent dialog to the front Паказваць акно дадавання торэнта па-над іншымі вокнамі - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - Таксама выдаляць .torrent файлы дадаванне якіх было скасавана + Таксама выдаляюцца файлы .torrent дадаванне якіх было скасавана - + Also when addition is cancelled - Таксама калі дадаванне скасавана + У тым ліку, калі дадаванне скасоўваецца - + Warning! Data loss possible! Увага! Магчыма страта даных! - + Saving Management Кіраванне захаваннем - + Default Torrent Management Mode: Рэжым кіравання торэнтам па змаўчанні: - + Manual Ручны - + Automatic Аўтаматычны - + When Torrent Category changed: Пры змене катэгорыі торэнта: - + Relocate torrent Перамясціць торэнт - + Switch torrent to Manual Mode Пераключыць торэнт у Ручны рэжым - - + + Relocate affected torrents Перамясціць закранутыя торэнты - - + + Switch affected torrents to Manual Mode Пераключыць закранутыя торэнты ў Ручны рэжым - + Use Subcategories Выкарыстоўваць падкатэгорыі - + Default Save Path: Шлях захавання па змаўчанні: - + Copy .torrent files to: Капіяваць .torrent файлы ў: - + Show &qBittorrent in notification area Паказваць &qBittorrent у вобласці апавяшчэнняў - &Log file - &Файл журналу + &Файл журнала - + Display &torrent content and some options Паказваць змесціва &торэнта і некаторыя параметры - + De&lete .torrent files afterwards - Выда&ляць .torrent файлы пазней + Выда&ляць файлы .torrent адразу пасля дадавання - + Copy .torrent files for finished downloads to: - Капіяваць .torrent файлы скончаных спампоўванняў ў: + Капіяваць файлы .torrent завершаных спампоўванняў у: - + Pre-allocate disk space for all files Папярэдне рэзерваваць месца для ўсіх файлаў - + Use custom UI Theme - Use custom UI Theme + Выкарыстоўваць уласную тэму інтэрфейсу - + UI Theme file: - UI Theme file: + Файл тэмы: - + Changing Interface settings requires application restart - Changing Interface settings requires application restart + Змяненне налад інтэрфейсу патрабуе перазапуску праграмы - + Shows a confirmation dialog upon torrent deletion - Shows a confirmation dialog upon torrent deletion + Паказвае дыялог пацвярджэння, перш чым выдаліць торэнт - - + + Preview file, otherwise open destination folder - Preview file, otherwise open destination folder + Прагляд файла, інакш адкрыць папку прызначэння - - Show torrent options - Show torrent options + Паказаць параметры торэнта - + Shows a confirmation dialog when exiting with active torrents - Shows a confirmation dialog when exiting with active torrents + Пры наяўнасці актыўных торэнтаў, паказвае дыялог пацвярджэння, перш чым выйсці - + When minimizing, the main window is closed and must be reopened from the systray icon - When minimizing, the main window is closed and must be reopened from the systray icon + Пры згортванні, галоўнае акно праграмы закрываецца і можа быць зноў адкрыта праз значок у вобласці апавяшчэнняў - + The systray icon will still be visible when closing the main window - The systray icon will still be visible when closing the main window + Калі галоўнае акно закрываецца, значок у вобласці апавяшчэнняў будзе заставацца бачным - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Закрываць qBittorrent у вобласць апавяшчэнняў - + Monochrome (for dark theme) Манахромны (для цёмнай тэмы) - + Monochrome (for light theme) Манахромны (для светлай тэмы) - + Inhibit system sleep when torrents are downloading Забараніць рэжым сну падчас спампоўвання торэнтаў - + Inhibit system sleep when torrents are seeding Забараніць рэжым сну падчас раздачы торэнтаў - + Creates an additional log file after the log file reaches the specified file size - Creates an additional log file after the log file reaches the specified file size + - + days Delete backup logs older than 10 days дні/дзён - + months Delete backup logs older than 10 months месяц/месяцы - + years Delete backup logs older than 10 years год/гады - + Log performance warnings - Log performance warnings + - The torrent will be added to download list in a paused state - The torrent will be added to download list in a paused state + Торэнт будзе дададзены ў спіс спампоўвання ў спыненым стане - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Не пачынаць спампоўванне аўтаматычна - + Whether the .torrent file should be deleted after adding it - Whether the .torrent file should be deleted after adding it + Ці патрэбна выдаляць файлы .torrent адразу ж пасля іх дадавання - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. + - + Append .!qB extension to incomplete files Дадаваць пашырэнне .!qB да незавершаных файлаў - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - When a torrent is downloaded, offer to add torrents from any .torrent files found inside it + - + Enable recursive download dialog Уключыць акно рэкурсіўнага спампоўвання - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Аўтаматычны: пэўныя ўласцівасці торэнта (напр. шлях захавання) вызначаюцца ў залежнасці ад катэгорыі Ручны: пэўныя ўласцівасці торэнта (напр. шлях захавання) вызначаюцца ўручную - + When Default Save/Incomplete Path changed: - When Default Save/Incomplete Path changed: + Калі змяніўся шлях па змаўчанні для захавання/незавершаных: - + When Category Save Path changed: Пры змене шляху захавання для катэгорыі: - + Use Category paths in Manual Mode - Use Category paths in Manual Mode + Выкарыстоўваць шляхі катэгорый у ручным рэжыме - + Resolve relative Save Path against appropriate Category path instead of Default one - Resolve relative Save Path against appropriate Category path instead of Default one + - + Use icons from system theme - Use icons from system theme + Выкарыстоўваць значкі з сістэмнай тэмы - + Window state on start up: - + Стан акна пры запуску: - + qBittorrent window state on start up - + Стан акна qBittorrent пры запуску - + Torrent stop condition: - Torrent stop condition: + Умова спынення торэнта: - - + + None Нічога - - + + Metadata received - Метададзеныя атрыманы + Метаданыя атрыманы - - + + Files checked Файлы правераны - + Ask for merging trackers when torrent is being added manually - + Спытаць мяне, ці аб'ядноўваць трэкеры, калі торэнт дадаецца ўручную - + Use another path for incomplete torrents: - Выкарыстоўвайце іншы шлях для няпоўных торэнтаў: + Выкарыстоўваць іншы шлях для незавершаных торэнтаў: - + Automatically add torrents from: Аўтаматычна дадаваць торэнты з: - + Excluded file names - Excluded file names + Выключаць файлы з назвай - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6628,855 +6979,916 @@ Examples readme.txt: filter exact file name. ?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - Blacklist filtered file names from being downloaded from torrent(s). -Files matching any of the filters in this list will have their priority automatically set to "Do not download". - -Use newlines to separate multiple entries. Can use wildcards as outlined below. -*: matches zero or more of any characters. -?: matches any single character. -[...]: sets of characters can be represented in square brackets. - -Examples -*.exe: filter '.exe' file extension. -readme.txt: filter exact file name. -?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. -readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. + - + Receiver - Receiver + Атрымальнік - + To: To receiver Да: - + SMTP server: SMTP-сервер: - + Sender - Sender + Адпраўшчык - + From: From sender З: - + This server requires a secure connection (SSL) Гэты сервер патрабуе бяспечнага злучэння (SSL) - - + + Authentication Аўтэнтыфікацыя - - - - + + + + Username: Імя карыстальніка: - - - - + + + + Password: Пароль: - + Run external program - Run external program + Запуск знешняй праграмы - Run on torrent added - Run on torrent added + Запускаць пры дадаванні торэнта - Run on torrent finished - Run on torrent finished + Запускаць пры завяршэнні торэнта - + Show console window - Show console window + Паказваць акно кансолі - + TCP and μTP TCP і μTP - + Listening Port Порт які праслухоўваецца - + Port used for incoming connections: Порт для ўваходных злучэнняў: - + Set to 0 to let your system pick an unused port - Set to 0 to let your system pick an unused port + Задайце значэнне 0, каб сістэма сама выбірала незаняты порт - + Random Выпадковы - + Use UPnP / NAT-PMP port forwarding from my router - Выкарыстоўваць UPnP / NAT-PMP майго маршрутызатара + Выкарыстоўваць UPnP / NAT-PMP пракід партоў майго маршрутызатара - + Connections Limits Абмежаванні злучэнняў - + Maximum number of connections per torrent: Максімальная колькасць злучэнняў на торэнт: - + Global maximum number of connections: Максімальная колькасць злучэнняў: - + Maximum number of upload slots per torrent: - Максімальная колькасць слотаў аддачы на торэнт: + Максімальная колькасць слотаў раздачы на торэнт: - + Global maximum number of upload slots: Максімальная колькасць слотаў раздач: - + Proxy Server Проксі-сервер - + Type: Тып: - + SOCKS4 SOCKS4 - + SOCKS5 - Сервер SOCKS5 + SOCKS5 - + HTTP HTTP - - + + Host: Хост: - - - + + + Port: Порт: - + Otherwise, the proxy server is only used for tracker connections У адваротным выпадку проксі-сервер выкарыстоўваецца толькі для злучэнняў з трэкерамі - + Use proxy for peer connections Выкарыстоўваць проксі для злучэння з пірамі - + A&uthentication &Аўтэнтыфікацыя - + Info: The password is saved unencrypted Інфармацыя: пароль будзе захаваны ў незашыфраваным выглядзе - + Filter path (.dat, .p2p, .p2b): Шлях да фільтраў (.dat, .p2p, .p2b): - + Reload the filter Перазагрузіць фільтр - + Manually banned IP addresses... Адрасы IP, забароненыя ўручную… - + Apply to trackers - Дастасаваць да трэкераў + Ужываць да трэкераў - + Global Rate Limits - Глабальныя абмежаванні хуткасці + Агульныя абмежаванні хуткасці - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s КБ/с - - + + Upload: - Аддача: + Раздача: - - + + Download: Спампоўванне: - + Alternative Rate Limits - Іншыя абмежаванні хуткасці + Альтэрнатыўныя абмежаванні хуткасці - + Start time - Start time + Час запуску - + End time - End time + Час заканчэння - + When: Калі: - + Every day Кожны дзень - + Weekdays Будні - + Weekends Выхадныя - + Rate Limits Settings Налады абмежавання хуткасці - + Apply rate limit to peers on LAN - Дастасаваць абмежаванне хуткасці да лакальных піраў LAN + Ужываць абмежаванне хуткасці да лакальных піраў LAN - + Apply rate limit to transport overhead - Дастасаваць абмежаванне хуткасці да службовага трафіку + Ужываць абмежаванне хуткасці да службовага трафіку + + + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + - + Apply rate limit to µTP protocol - Дастасаваць абмежаванне хуткасці да пратаколу µTP + Ужываць абмежаванне хуткасці да пратаколу µTP - + Privacy Канфідэнцыйнасць - + Enable DHT (decentralized network) to find more peers Уключыць DHT (дэцэнтралізаваную сетку), каб знайсці больш піраў - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Абмен пірамі з сумяшчальны кліентамі Bittorrent (µTorrent, Vuze, …) - + Enable Peer Exchange (PeX) to find more peers Уключыць абмен пірамі (PeX), каб знайсці больш піраў - + Look for peers on your local network Шукаць піры ў лакальнай сетцы - + Enable Local Peer Discovery to find more peers Уключыць выяўленне лакальных піраў, каб знайсці больш піраў - + Encryption mode: Рэжым шыфравання: - + Require encryption Патрабаваць шыфраванне - + Disable encryption Адключыць шыфраванне - + Enable when using a proxy or a VPN connection Уключыць, калі выкарыстоўваюцца злучэнні проксі альбо VPN - + Enable anonymous mode Уключыць ананімны рэжым - + Maximum active downloads: Максімальная колькасць актыўных спампоўванняў: - + Maximum active uploads: Максімальная колькасць актыўных раздач: - + Maximum active torrents: Максімальная колькасць актыўных торэнтаў: - + Do not count slow torrents in these limits - Не ўлічваць колькасць павольных торэнтаў ў гэтых абмежаваннях + Не ўлічваць колькасць павольных торэнтаў у гэтых абмежаваннях - + Upload rate threshold: Абмежаванне хуткасці раздачы: - + Download rate threshold: Абмежаванне хуткасці спампоўвання: - - - + + + + sec seconds с - + Torrent inactivity timer: Таймер неактыўнасці торэнта: - + then затым - + Use UPnP / NAT-PMP to forward the port from my router Выкарыстоўваць UPnP / NAT-PMP для перанакіравання порта ад майго маршрутызатара - + Certificate: Сертыфікат: - + Key: Ключ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Інфармацыя аб сертыфікатах</a> - + Change current password - Зьмяніць бягучы пароль + Змяніць бягучы пароль - Use alternative Web UI - Выкарыставаць альтэрнатыўны вэб-інтэрфейс + Выкарыстоўваць альтэрнатыўны вэб-інтэрфейс - + Files location: Размяшчэнне файла: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Бяспека - + Enable clickjacking protection - Enable clickjacking protection + Уключыць абарону ад клікджэкінга - + Enable Cross-Site Request Forgery (CSRF) protection Уключыць абарону ад падробкі міжсайтавых запытаў (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Уключыць праверку Host загалоўкаў - + Add custom HTTP headers Дадаць ўласныя загалоўкі HTTP - + Header: value pairs, one per line - Загаловак: пары значэньняў, па адной на радок + Загаловак: пары значэнняў, па адной на радок - + Enable reverse proxy support Уключыць падтрымку reverse proxy - + Trusted proxies list: Спіс давераных проксі: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Сэрвіс: - + Register Рэгістрацыя - + Domain name: Даменнае імя: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Пасля ўключэння гэтага параметру вы можаце <strong>незваротна страціць</strong> свае torrent-файлы! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog + Калі ўключыць другі параметр (&ldquo;У тым ліку, калі дадаванне скасоўваецца&rdquo;) файл .torrent <strong>будзе выдалены,</strong> нават, калі націснуць &ldquo;<strong>Скасаваць</strong>&rdquo; у дыялогавым акне &ldquo;Дадаць торэнт&rdquo; - + Select qBittorrent UI Theme file - Select qBittorrent UI Theme file + Выберыце файл тэмы qBittorrent - + Choose Alternative UI files location - Choose Alternative UI files location + Выбраць альтэрнатыўнае размяшчэнне для файлаў інтэрфейсу - + Supported parameters (case sensitive): Параметры якія падтрымліваюцца (з улікам рэгістру): - + Minimized - + Згорнута - + Hidden - + Схавана - + Disabled due to failed to detect system tray presence - Disabled due to failed to detect system tray presence + Адключана, бо не ўдалося выявіць наяўнасць вобласці апавяшчэнняў - + No stop condition is set. - Умова прыпынку не зададзена. + Умова спынення не зададзена. - + Torrent will stop after metadata is received. - Торэнт спыніцца пасля атрымання метададзеных. - - - - Torrents that have metadata initially aren't affected. - Торэнты, якія першапачаткова маюць метададзеныя, не закранаюцца. + Торэнт спыніцца пасля атрымання метаданых. - + Torrent will stop after files are initially checked. Торэнт спыніцца пасля першапачатковай праверкі файлаў. - + This will also download metadata if it wasn't there initially. - Гэта таксама спампуе метададзеныя, калі іх не было першапачаткова. + Гэта таксама спампуе метаданыя, калі іх не было першапачаткова. - + %N: Torrent name %N: Назва торэнта - + %L: Category %L: Катэгорыя - + %F: Content path (same as root path for multifile torrent) %F: Шлях прызначэння (тое ж, што і каранёвы шлях для шматфайлавага торэнта) - + %R: Root path (first torrent subdirectory path) %R: Каранёвы шлях (галоўны шлях для падкаталога торэнта) - + %D: Save path %D: Шлях захавання - + %C: Number of files %C: Колькасць файлаў - + %Z: Torrent size (bytes) %Z: Памер торэнта (байты) - + %T: Current tracker %T: Бягучы трэкер - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - Падказка: уключыце параметр у двукоссі каб пазбегнуць абразання на прабелах (напр. "%N") + Падказка: вазьміце параметр у двукоссі, каб пазбегнуць абразання на прабелах (напр. "%N") + + + + Test email + - + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Няма) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds + Торэнт будзе лічыцца павольным, калі яго хуткасць спампоўвання або раздачы застаецца меншай за пазначанае значэнне на «Час бяздзейнасці торэнта» - + Certificate - Certificate + Сертыфікат - + Select certificate - Select certificate + Выберыце сертыфікат - + Private key - Private key + Закрыты ключ - + Select private key - Select private key + Выберыце закрыты ключ + + + + WebUI configuration failed. Reason: %1 + Не ўдалася канфігурацыя вэб-інтэрфейсу. Прычына: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + - + + System + System color scheme + + + + Select folder to monitor Выбраць папку для наглядання - + Adding entry failed Няўдалае дадаванне запісу - - Location Error - Location Error + + The WebUI username must be at least 3 characters long. + Імя карыстальніка вэб-інтэрфейсу павінна змяшчаць не менш за 3 сімвалы. + + + + The WebUI password must be at least 6 characters long. + Пароль вэб-інтэрфейсу павінен змяшчаць не менш за 6 сімвалаў. - - The alternative Web UI files location cannot be blank. - Размяшчэньне файлаў альтэрнатыўнага вэб-інтэрфейсу не можа быць пустым. + + Location Error + Памылка размяшчэння - - + + Choose export directory Выберыце каталог для экспарту - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well + Калі гэты параметр уключаны, qBittorrent будзе <strong>выдаляць</strong> файлы .torrent пасля іх паспяховага (першы параметр) або не (другі параметр) дадавання ў чаргу спампоўвання. Ужываецца <strong>не толькі</strong> да файлаў, якія адкрываюцца праз меню «Дадаць торэнт», але і да адкрытых праз <strong>суаднесеныя тыпы файлаў</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) - qBittorrent UI Theme file (*.qbtheme config.json) + Файл тэмы qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) - %G: Tags (separated by comma) + %G: Тэгі (раздзеленыя коскай) - + %I: Info hash v1 (or '-' if unavailable) - %I: Info hash v1 (or '-' if unavailable) + %I: Хэш v1 (або '-' калі недаступна) - + %J: Info hash v2 (or '-' if unavailable) - %J: Info hash v2 (or '-' if unavailable) + %J: Хэш v2 (або '-' калі недаступна) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) + %K: Ідэнтыфікатар торэнта (хэш sha-1 для торэнта v1 або ўсечаны хэш sha-256 для торэнта v2/гібрыда) - - - + + + Choose a save directory Выберыце каталог для захавання - + + Torrents that have metadata initially will be added as stopped. + Торэнты, якія адпачатку ўтрымліваюць метаданыя, будуць дададзеныя як спыненыя. + + + Choose an IP filter file Выберыце файл IP фільтраў - + All supported filters Усе фільтры, якія падтрымліваюцца - + + The alternative WebUI files location cannot be blank. + Размяшчэнне файлаў альтэрнатыўнага вэб-інтэрфейсу не можа быць пустым. + + + Parsing error Памылка аналізу - + Failed to parse the provided IP filter Не атрымалася прааналізаваць дадзены IP-фільтр - + Successfully refreshed Паспяхова абноўлена - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - IP-фільтр паспяхова прачытаны: дастасавана %1 правілаў. + IP-фільтр паспяхова прачытаны: ужыта %1 правілаў. - + Preferences Налады - + Time Error Памылка часу - + The start time and the end time can't be the same. Час пачатку і завяршэння не можа быць аднолькавым. - - + + Length Error Памылка памеру - - - The Web UI username must be at least 3 characters long. - Імя карыстальніка вэб-інтэрфейсу павінна быць не меншым за 3 знакі. - - - - The Web UI password must be at least 6 characters long. - Пароль вэб-інтэрфейсу павінен быць не менш за 6 знакаў. - PeerInfo - + Unknown Невядомы - + Interested (local) and choked (peer) - Interested (local) and choked (peer) + Зацікаўлены (лакальны) і заглухлы (пір) - + Interested (local) and unchoked (peer) - Interested (local) and unchoked (peer) + Зацікаўлены (лакальны) і ажыўшы (пір) - + Interested (peer) and choked (local) - Interested (peer) and choked (local) + Зацікаўлены (пір) і заглухлы (лакальны) - + Interested (peer) and unchoked (local) - Interested (peer) and unchoked (local) + Зацікаўлены (пір) і ажыўшы (лакальны) - + Not interested (local) and unchoked (peer) - Not interested (local) and unchoked (peer) + Незацікаўлены (лакальны) і ажыўшы (пір) - + Not interested (peer) and unchoked (local) - Not interested (peer) and unchoked (local) + Незацікаўлены (пір) і ажыўшы (лакальны) - + Optimistic unchoke - Optimistic unchoke + Аптымістычнае ажыўленне - + Peer snubbed - Peer snubbed + Грэблівы пір - + Incoming connection - Incoming connection + Уваходнае злучэнне - + Peer from DHT - Peer from DHT + Пір з DHT - + Peer from PEX - Peer from PEX + Пір з PEX - + Peer from LSD - Peer from LSD + Пір з LSD - + Encrypted traffic - Encrypted traffic + Шыфраваны трафік - + Encrypted handshake - Encrypted handshake + Шыфраванае рукапацісканне + + + + Peer is using NAT hole punching + @@ -7489,7 +7901,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Адрас @@ -7516,7 +7928,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer ID Client i.e.: Client resolved from Peer ID - Peer ID Client + ID кліента @@ -7563,12 +7975,12 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Column visibility - Адлюстраванне калонак + Бачнасць калонак Resize columns - Змяніць памер калонак + Дапасаваць памер калонак @@ -7578,13 +7990,13 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Add peers... - Дадаць піраў + Дадаць піры... Adding peers - Adding peers + Дадаванне піраў @@ -7594,7 +8006,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peers are added to this torrent. - Peers are added to this torrent. + Піры дададзены да торэнта. @@ -7605,35 +8017,35 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Cannot add peers to a private torrent - Cannot add peers to a private torrent + Немагчыма дадаць піры да прыватнага торэнта Cannot add peers when the torrent is checking - Cannot add peers when the torrent is checking + Нельга дадаваць піроў, пакуль торэнт правяраецца Cannot add peers when the torrent is queued - Cannot add peers when the torrent is queued + Нельга дадаваць піры, пакуль торэнт у чарзе No peer was selected - No peer was selected + Пір не выбраны Are you sure you want to permanently ban the selected peers? - Are you sure you want to permanently ban the selected peers? + Сапраўды хочаце назаўсёды заблакіраваць выбраныя піры? Peer "%1" is manually banned - Peer "%1" is manually banned + Пір «%1» заблакіраваны ўручную - + N/A Н/Д @@ -7656,7 +8068,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Спіс піраў на дадаванне (адзін IP на радок ): - + Format: IPv4:port / [IPv6]:port Фармат: IPv4:port / [IPv6]:port @@ -7668,17 +8080,17 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Please type at least one peer. - Упішыце прынамсі аднаго піра. + Увядзіце прынамсі адзін пір. Invalid peer - Хібны пір + Памылковы пір The peer '%1' is invalid. - Пір '%1' нядзейсны. + Пір «%1» памылковы. @@ -7697,27 +8109,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Файлы ў гэтай частцы: - + File in this piece: - File in this piece: + Файл у гэтай частцы: - + File in these pieces: - File in these pieces: + Файл у гэтых частках: - + Wait until metadata become available to see detailed information Пачакайце даступнасці метаданых, каб убачыць інфармацыю - + Hold Shift key for detailed information Утрымлівайце Shift для больш падрабязнай інфармацыі @@ -7730,58 +8142,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Пошукавыя плагіны - + Installed search plugins: Усталяваныя пошукавыя плагіны: - + Name Назва - + Version Версія - + Url Спасылка - - + + Enabled Уключаны - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Увага! Пераканайцеся, што ў вашай краіне спампоўванне торэнтаў праз гэтыя пошукавыя сістэмы не парушае законаў аб аўтарскім праве. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Тут можна знайсці новыя пошукавыя плагіны: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one - Усталяваць новую + Усталяваць новы - + Check for updates Праверыць абнаўленні - + Close Закрыць - + Uninstall Выдаліць @@ -7901,17 +8313,17 @@ Those plugins were disabled. Крыніца плагіна - + Search plugin source: Крыніца пошукавага плагіна: - + Local file Лакальны файл - + Web link Web-спасылка @@ -7929,70 +8341,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + Кіраванне сілкаваннем знайшло падыходны інтэрфейс D-Bus. Інтэрфейс: %1 Power management error. Did not found suitable D-Bus interface. - + Памылка кіравання сілкаваннем. Не знойдзены падыодны інтэрфейс D-Bus. Power management error. Action: %1. Error: %2 - + Памылка кіравання энергаспажываннем. Дзеянне: %1. Памылка: %2 Power management unexpected error. State: %1. Error: %2 - + Нечаканая памылка кіравання энергаспажываннем. Стан: %1. Памылка: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - The following files from torrent "%1" support previewing, please select one of them: + Наступныя файлы з торэнта «%1» падтрымліваюць перадпрагляд, пазначце адзін з іх: - + Preview Перадпрагляд - + Name Назва - + Size Памер - + Progress Ход выканання - + Preview impossible Перадпрагляд немагчымы - + Sorry, we can't preview this file: "%1". - Sorry, we can't preview this file: "%1". + Папярэдні прагляд гэтага файла немагчымы: «%1». - + Resize columns - Змяніць памер калонак + Дапасаваць памер калонак - + Resize all non-hidden columns to the size of their contents Змяніць памер усіх несхаваных калонак да памеру іх змесціва @@ -8005,29 +8417,29 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - Path does not exist + Шлях не існуе - + Path does not point to a directory - Path does not point to a directory + Шлях не паказвае на каталог - + Path does not point to a file - Path does not point to a file + Шлях не паказвае на файл - + Don't have read permission to path - Don't have read permission to path + Няма правоў на чытанне ў гэтым размяшчэнні - + Don't have write permission to path - Don't have write permission to path + Няма правоў на запіс у гэтым размяшчэнні @@ -8066,12 +8478,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Спампавана: - + Availability: Даступна: @@ -8086,53 +8498,53 @@ Those plugins were disabled. Перадача - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Час актыўнасці: - + ETA: Часу засталося: - + Uploaded: Раздадзена: - + Seeds: Сіды: - + Download Speed: Хуткасць спампоўвання: - + Upload Speed: Хуткасць раздачы: - + Peers: Піры: - + Download Limit: Абмежаванне спампоўвання: - + Upload Limit: Абмежаванне раздачы: - + Wasted: Згублена: @@ -8142,193 +8554,249 @@ Those plugins were disabled. Злучэнні: - + Information Інфармацыя - + Info Hash v1: - Info Hash v1: + Хэш v1: - + Info Hash v2: - Info Hash v2: + Хэш v2: - + Comment: Каментарый: - + Select All Вылучыць усё - + Select None Зняць усё - + Share Ratio: - Суадносіны раздачы: + Рэйтынг раздачы: - + Reannounce In: - Пераабвяшчэнне праз: + Паўторны анонс праз: - + Last Seen Complete: Апошняя поўная прысутнасць: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: - Поўны памер: + Агульны памер: - + Pieces: Часткі: - + Created By: Створаны ў: - + Added On: Дададзены: - + Completed On: Завершаны: - + Created On: Створаны: - + + Private: + + + + Save Path: Шлях захавання: - + Never Ніколі - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - %1 x %2 (з іх ёсць %3) + %1 x %2 (ёсць %3) - - + + %1 (%2 this session) %1 (%2 гэтая сесія) - - + + + N/A Н/Д - + + Yes + Так + + + + No + Не + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (раздаецца %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (макс. %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (усяго %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (сяр. %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Новы вэб-сід + Новы вэб-сід - Remove Web seed - Выдаліць вэб-сід + Выдаліць вэб-сід - Copy Web seed URL - Капіяваць адрас вэб-сіда + Капіяваць адрас вэб-сіда - Edit Web seed URL - Змяніць адрас вэб-сіда + Змяніць адрас вэб-сіда - + Filter files... Фільтр файлаў... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - Speed graphs are disabled + Вывад графіка хуткасці адключаны - + You can enable it in Advanced Options - You can enable it in Advanced Options + Можна ўключыць яго праз Пашыраныя параметры - New URL seed New HTTP source - Новы URL раздачы + Новы URL раздачы - New URL seed: - URL новага сіда: + URL новага сіда: - - This URL seed is already in the list. - URL гэтага сіда ўжо ў спісе. + URL гэтага сіда ўжо ў спісе. - + Web seed editing Рэдагаванне вэб-раздачы - + Web seed URL: Адрас вэб-раздачы: @@ -8344,50 +8812,50 @@ Those plugins were disabled. Couldn't save RSS AutoDownloader data in %1. Error: %2 - Не магу захаваць дадзеныя Аўтазагрузчыка RSS з %1. Памылка: %2 + Не ўдалося захаваць у %1 даныя Аўтаспампоўвання з RSS. Памылка: %2 - + Invalid data format - Памылковы фармат дадзеных + Памылковы фармат даных - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + RSS-артыкул «%1» прынятын правілам «%2». Спроба дадаць торэнт... - + Failed to read RSS AutoDownloader rules. %1 - + Не ўдалося прачытаць правілы Аўтаспампоўвання з RSS. Прычына: %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 - Не магу загрузіць дадзеныя Аўтазагрузчыка RSS. Прычына: %1 + Не ўдалося загрузіць правілы Аўтаспампоўвання з RSS. Прычына: %1 RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - Failed to download RSS feed at '%1'. Reason: %2 + Не ўдалося спампаваць RSS-канал з «%1». Прычына: %2 - + RSS feed at '%1' updated. Added %2 new articles. - RSS feed at '%1' updated. Added %2 new articles. + RSS-канал з «%1» абноўлены. Новыя артыкулы: %2. - + Failed to parse RSS feed at '%1'. Reason: %2 - Failed to parse RSS feed at '%1'. Reason: %2 + Не ўдалося прааналізаваць RSS-канал з «%1». Прычына: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. - RSS feed at '%1' is successfully downloaded. Starting to parse it. + RSS-канал з «%1» паспяхова загружаны. Запушчаны яе аналіз. @@ -8395,138 +8863,138 @@ Those plugins were disabled. Failed to read RSS session data. %1 - + Не ўдалося прачытаць даныя RSS-сеанса. %1 Failed to save RSS feed in '%1', Reason: %2 - Failed to save RSS feed in '%1', Reason: %2 + Не ўдалося захаваць RSS-канал у «%1». Прычына: %2 Couldn't parse RSS Session data. Error: %1 - Couldn't parse RSS Session data. Error: %1 + Не ўдалося прааналізаваць даныя сеанса RSS. Памылка: %1 Couldn't load RSS Session data. Invalid data format. - Couldn't load RSS Session data. Invalid data format. + Не ўдалося загрузіць даныя сеанса RSS. Памылковы фармат даных. Couldn't load RSS article '%1#%2'. Invalid data format. - Couldn't load RSS article '%1#%2'. Invalid data format. + Не ўдалося загрузіць артыкул RSS «%1#%2». Памылковы фармат даных. RSS::Private::Parser - + Invalid RSS feed. Памылковы RSS-канал. - + %1 (line: %2, column: %3, offset: %4). - %1 (лінія: %2, слупок: %3, зрух: %4). + %1 (радок: %2, слупок: %3, зрух: %4). RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - Couldn't save RSS session configuration. File: "%1". Error: "%2" + Не ўдалося захаваць канфігурацыю сеанса RSS. Файл: «%1». Памылка: «%2» - + Couldn't save RSS session data. File: "%1". Error: "%2" - Couldn't save RSS session data. File: "%1". Error: "%2" + Не ўдалося захаваць даныя сеанса RSS. Файл: «%1». Памылка: «%2» - - + + RSS feed with given URL already exists: %1. RSS канал з зададзеным URL ужо існуе: %1. - + Feed doesn't exist: %1. - + Канал не існуе: %1. - + Cannot move root folder. Немагчыма перамясціць каранёвую папку. - - + + Item doesn't exist: %1. Элемент не існуе: %1. - + Couldn't move folder into itself. - Couldn't move folder into itself. + Немагчыма перамясціць папку саму ў сябе. - + Cannot delete root folder. Немагчыма выдаліць каранёвую папку. - + Failed to read RSS session data. %1 - + Не ўдалося прачытаць даныя RSS-сеанса. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Не ўдалося прааналізаваць даныя сеанса RSS. Файл: «%1». Памылка: «%2» - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Не ўдалося загрузіць даныя сеанса RSS. Файл: «%1». Памылка: «памылковы фармат даных» - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - Couldn't load RSS feed. Feed: "%1". Reason: URL is required. + Не ўдалося загрузіць RSS-канал. Канал: «%1». Прычына: патрабуецца URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. + Не ўдалося загрузіць RSS-канал. Канал: «%1». Прычына: памылковы UID. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. + Выяўлены дублікат RSS-канала. UID: «%1». Памылка: здаецца, канфігурацыя пашкоджаная. - + Couldn't load RSS item. Item: "%1". Invalid data format. - Couldn't load RSS item. Item: "%1". Invalid data format. + Не ўдалося загрузіць RSS-элемент. Элемент: «%1». Памылковы фармат даных. - + Corrupted RSS list, not loading it. - Corrupted RSS list, not loading it. + Пашкоджаны спіс RSS, ён не будзе загружаны. - + Incorrect RSS Item path: %1. Няправільны шлях RSS элемента: %1. - + RSS item with given path already exists: %1. RSS элемент з такім шляхам ужо існуе: %1. - + Parent folder doesn't exist: %1. Бацькоўская папка не існуе: %1. @@ -8541,7 +9009,7 @@ Those plugins were disabled. Fetching of RSS feeds is disabled now! You can enable it in application settings. - Загрузка RSS зараз адключана! Вы можаце ўключыць гэта ў наладах праграмы. + Атрыманне RSS-каналаў адключана! Вы можаце ўключыць яго ў наладах праграмы. @@ -8550,158 +9018,158 @@ Those plugins were disabled. - - + + Mark items read Пазначыць элементы як прачытаныя Refresh RSS streams - Абнавіць RSS патокі + Абнавіць RSS-патокі Update all - Абнавіць усё + Абнавіць усе RSS Downloader... - Спампоўшчык RSS... + Спампоўванне з RSS... Torrents: (double-click to download) - Торэнты: (двайны націск для спампоўвання) + Торэнты: (падвойнае націсканне, каб спампаваць) - - + + Delete Выдаліць - + Rename... Перайменаваць... - + Rename Перайменаваць - - + + Update Абнавіць - + New subscription... Новая падпіска... - - + + Update all feeds Абнавіць усе каналы - + Download torrent Спампаваць торэнт - + Open news URL Адкрыць спасылку навін - + Copy feed URL Капіяваць спасылку канала - + New folder... Новая папка... - + Edit feed URL... - + Змяніць URL канала... - + Edit feed URL - + Змяніць URL канала - + Please choose a folder name Выберыце назву папкі - + Folder name: - Імя папкі: + Назва папкі: - + New folder Новая папка - - + + Please type a RSS feed URL - Увядзіце адрас RSS канала + Увядзіце адрас RSS-канала - - + + Feed URL: Адрас канала: - + Deletion confirmation Пацвярджэнне выдалення - + Are you sure you want to delete the selected RSS feeds? - Сапраўды жадаеце выдаліць вылучаныя RSS каналы? + Сапраўды выдаліць выбраныя RSS-каналы? - + Please choose a new name for this RSS feed - Выберыце новую назву для гэтага RSS канала + Выберыце новую назву для гэтага RSS-канала - + New feed name: Новае імя канала: - + Rename failed Памылка перайменавання - + Date: Дата: - + Feed: - + Канал: - + Author: Аўтар: @@ -8709,38 +9177,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - Python must be installed to use the Search Engine. + Для выкарыстання пошукавай сістэмы патрабуецца Python. - + Unable to create more than %1 concurrent searches. - Unable to create more than %1 concurrent searches. + Немагчыма адначасова стварыць больш за %1 пошукавых запытаў. - - + + Offset is out of range - Offset is out of range + Зрух па-за межамі дыяпазону - + All plugins are already up to date. - All plugins are already up to date. + Усе вашы плагіны ўжо абноўлены. - + Updating %1 plugins - Updating %1 plugins + Абнаўленне %1 плагінаў - + Updating plugin %1 - Updating plugin %1 + Абнаўленне плагіна %1 - + Failed to check for plugin updates: %1 Не атрымалася праверыць абнаўленні плагіна: %1 @@ -8760,37 +9228,37 @@ Those plugins were disabled. <html><head/><body><p>Some search engines search in torrent description and in torrent file names too. Whether such results will be shown in the list below is controlled by this mode.</p><p><span style=" font-weight:600;">Everywhere </span>disables filtering and shows everything returned by the search engines.</p><p><span style=" font-weight:600;">Torrent names only</span> shows only torrents whose names match the search query.</p></body></html> - <html><head/><body><p>Some search engines search in torrent description and in torrent file names too. Whether such results will be shown in the list below is controlled by this mode.</p><p><span style=" font-weight:600;">Everywhere </span>disables filtering and shows everything returned by the search engines.</p><p><span style=" font-weight:600;">Torrent names only</span> shows only torrents whose names match the search query.</p></body></html> + Set minimum and maximum allowed number of seeders - Set minimum and maximum allowed number of seeders + Задаць мінімальную і максімальную колькасць сідаў Minimum number of seeds - Minimum number of seeds + Мінімальная колькасць сідаў Maximum number of seeds - Maximum number of seeds + Максімальная колькасць сідаў Set minimum and maximum allowed size of a torrent - Set minimum and maximum allowed size of a torrent + Задаць мінімальны і максімальны памер торэнта Minimum torrent size - Minimum torrent size + Мінімальны памер торэнта Maximum torrent size - Maximum torrent size + Максімальны памер торэнта @@ -8815,132 +9283,146 @@ Those plugins were disabled. Памер: - + Name i.e: file name Назва - + Size i.e: file size Памер - + Seeders i.e: Number of full sources Сіды - + Leechers i.e: Number of partial sources Спампоўваюць - Search engine - Пошукавая сістэма + Пошукавая сістэма - + Filter search results... - Filter search results... + Фільтраваць вынікі пошуку... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Вынікі (паказваюцца <i>%1</i> з <i>%2</i>): - + Torrent names only Толькі назвы торэнтаў - + Everywhere Усюды - + Use regular expressions Выкарыстоўваць рэгулярныя выразы - + Open download window - Open download window + Адкрыць акно спампоўвання - + Download Спампаваць - + Open description page - Адкрыць старонку з апісаньнем + Адкрыць старонку з апісаннем - + Copy Капіяваць - + Name - Назва + Назву - + Download link - Download link + Спасылку спампоўвання - + Description page URL - Description page URL + URL старонкі з апісаннем - + Searching... Ідзе пошук... - + Search has finished - Пошук скончаны + Пошук завершаны - + Search aborted Пошук перарваны - + An error occurred during search... Падчас пошуку ўзнікла памылка... - + Search returned no results Пошук не даў вынікаў - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility - Адлюстраванне слупкоў + Бачнасць калонак - + Resize columns - Змяніць памер калонак + Дапасаваць памер калонак - + Resize all non-hidden columns to the size of their contents Змяніць памер усіх несхаваных калонак да памеру іх змесціва @@ -8948,106 +9430,106 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Невядомы фармат файла пошукавга плагіна. - + Plugin already at version %1, which is greater than %2 - Plugin already at version %1, which is greater than %2 + Версія плагіна %1 ўжо вышэй за версію %2 - + A more recent version of this plugin is already installed. - Навейшая версія плагіна ўжо ўсталявана. + Ужо ўсталявана больш новая версія плагіна. - + Plugin %1 is not supported. - Plugin %1 is not supported. + Плагін %1 не падтрымліваецца. - - + + Plugin is not supported. Плагін не падтрымліваецца. - + Plugin %1 has been successfully updated. - Plugin %1 has been successfully updated. + Плагін %1 паспяхова абноўлены. - + All categories Усе катэгорыі - + Movies Фільмы - + TV shows Тэлеперадачы - + Music Музыка - + Games Гульні - + Anime Анімэ - + Software - Праграмы + Праграмнае забеспячэнне - + Pictures Выявы - + Books Кнігі - + Update server is temporarily unavailable. %1 Сервер абнаўленняў часова недаступны. %1 - - + + Failed to download the plugin file. %1 Памылка загрузкі файла плагіна. %1 - + Plugin "%1" is outdated, updating to version %2 - Plugin "%1" is outdated, updating to version %2 + Плагін «%1» састарэў, абнаўленне да версіі %2 - + Incorrect update info received for %1 out of %2 plugins. - Incorrect update info received for %1 out of %2 plugins. + - + Search plugin '%1' contains invalid version string ('%2') - Пошукавы плагін «%1» змяшчае недапушчальны радок версіі («%2») + Пошукавы плагін «%1» змяшчае памылковы радок версіі («%2») @@ -9055,114 +9537,153 @@ Those plugins were disabled. - - - - Search Пошук - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - Адсутнічаюць усталяваныя пошукавыя плагіны -Націсніце "Пошукавыя плагіны..." у ніжняй правай частцы акна для ўсталявання. + Пошукавыя плагіны не ўсталяваны. +Націсніце «Пошукавыя плагіны...» у ніжняй правай частцы акна, каб ўсталяваць. - + Search plugins... Пошукавыя плагіны... - + A phrase to search for. Фраза для пошуку. - + Spaces in a search term may be protected by double quotes. Прабелы ў пошукавым запыце могуць быць абаронены двукоссямі. - + Example: Search phrase example Узор: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: пошук для <b>foo bar</b> - + All plugins Усе плагіны - + Only enabled Толькі ўключаныя - + + + Invalid data format. + Памылковы фармат даных. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: пошук для <b>foo</b> і <b>bar</b> - + + Refresh + + + + Close tab - Close tab + Закрыць укладку - + Close all tabs - Close all tabs + Закрыць усе ўкладкі - + Select... Выберыце… - - - + + Search Engine - Пошукавік + Пошукавая сістэма - + + Please install Python to use the Search Engine. - Каб скарыстацца пошукавікам, усталюйце Python. + Каб выкарыстоўваць пошукавую сістэму, усталюйце Python. - + Empty search pattern Ачысціць шаблон пошуку - + Please type a search pattern first Спачатку ўвядзіце шаблон пошуку - + + Stop Стоп - Search has finished - Пошук скончаны + Пошук завершаны - Search has failed - Памылка пошуку + Памылка пошуку + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9170,7 +9691,7 @@ Click the "Search plugins..." button at the bottom right of the window Detected unclean program exit. Using fallback file to restore settings: %1 - Detected unclean program exit. Using fallback file to restore settings: %1 + Выяўлены некарэктны выхад з праграмы. Выкарыстанне рэзервовага файла для аднаўлення налад: %1 @@ -9185,7 +9706,7 @@ Click the "Search plugins..." button at the bottom right of the window An unknown error occurred while trying to write the configuration file. - An unknown error occurred while trying to write the configuration file. + Адбылася невядомая памылка пры спробе запісаць файл канфігурацыі. @@ -9213,7 +9734,7 @@ Click the "Search plugins..." button at the bottom right of the window The computer is going to shutdown. - Камп'ютар завершыць працу. + Камп’ютар будзе выключаны. @@ -9243,17 +9764,17 @@ Click the "Search plugins..." button at the bottom right of the window The computer is going to enter hibernation mode. - Камп'ютар будзе ўсыплёны. + Камп'ютар будзе пераведзены ў рэжым гібернацыі. &Hibernate Now - &Усыпіць цяпер + Перавесці ў &гібернацыю Hibernate confirmation - Пацвярджэнне ўсыплення + Пацвярджэнне пераходу ў рэжым гібернацыі @@ -9266,43 +9787,43 @@ Click the "Search plugins..." button at the bottom right of the window Global Speed Limits - Global Speed Limits + Агульныя абмежаванні хуткасці Speed limits - Speed limits + Абмежаванні хуткасці - + Upload: - Аддача: + Раздача: - - - + + + - - - + + + KiB/s КБ/с - - + + Download: Спампоўванне: - + Alternative speed limits Альтэрнатыўныя абмежаванні хуткасці @@ -9312,12 +9833,12 @@ Click the "Search plugins..." button at the bottom right of the window Total Upload - Усяго раздадзена + Раздадзена агулам Total Download - Усяго спампавана + Спампавана агулам @@ -9390,17 +9911,17 @@ Click the "Search plugins..." button at the bottom right of the window Select Graphs - Выбраць графікі + Выбар графікаў Total Upload - Усяго раздадзена + Раздадзена агулам 3 Hours - 3 Hours + 3 гадзіны @@ -9415,7 +9936,7 @@ Click the "Search plugins..." button at the bottom right of the window Total Download - Усяго спампавана + Спампавана агулам @@ -9494,34 +10015,34 @@ Click the "Search plugins..." button at the bottom right of the window Сярэдні час прастою ў чарзе: - + Connected peers: Падлучаныя піры: - + All-time share ratio: - All-time share ratio: + Агульны рэйтынг раздачы: - + All-time download: - Сцягнута за ўвесь час: + Спампавана за ўвесь час: - + Session waste: - Session waste: + Згублена за севнс: - + All-time upload: - Зацягнута за ўвесь час: + Раздадзена за ўвесь час: - + Total buffer size: - Агульны памер чаргі: + Агульны памер буфера: @@ -9534,12 +10055,12 @@ Click the "Search plugins..." button at the bottom right of the window Аперацый уводу/вываду ў чарзе: - + Write cache overload: Перагрузка кэшу запісу: - + Read cache overload: Перагрузка кэшу чытання: @@ -9552,57 +10073,73 @@ Click the "Search plugins..." button at the bottom right of the window %1 ms 18 milliseconds - %1 мс + %1 мс StatusBar - + Connection status: Стан злучэння: - - + + No direct connections. This may indicate network configuration problems. Няма прамых злучэнняў. Гэта можа сведчыць аб праблемах канфігурацыі сеткі. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 вузлоў - + qBittorrent needs to be restarted! qBittorrent неабходна перазапусціць! - - - + + + Connection Status: Стан злучэння: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Адлучаны ад сеткі. Звычайна гэта значыць, што qBittorrent не змог праслухаць порт на ўваходныя злучэнні. - + Online У сетцы - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Націсніце для пераключэння на альтэрнатыўныя абмежаванні хуткасці - + Click to switch to regular speed limits Націсніце для пераключэння на звычайныя абмежаванні хуткасці @@ -9631,14 +10168,22 @@ Click the "Search plugins..." button at the bottom right of the window Завершаныя (0) - Resumed (0) - Узноўленыя (0) + Узноўленыя (0) - Paused (0) - Спыненыя (0) + Спыненыя (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9668,12 +10213,12 @@ Click the "Search plugins..." button at the bottom right of the window Checking (0) - Checking (0) + Правяраецца (0) Moving (0) - Moving (0) + Перамяшчаецца (0) @@ -9700,35 +10245,51 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Завершаныя (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Спыненыя (%1) + Спыненыя (%1) Moving (%1) - Moving (%1) + Перамяшчаецца (%1) - Resume torrents - Узнавіць торэнты + Узнавіць торэнты - Pause torrents - Спыніць торэнты + Спыніць торэнты Remove torrents - Remove torrents + Выдаліць торэнты - Resumed (%1) - Узноўленыя (%1) + Узноўленыя (%1) @@ -9769,17 +10330,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Тэгі - + All Усе - + Untagged Без тэгаў @@ -9787,54 +10348,66 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Дадаць тэг... - + Remove tag Выдаліць тэг - + Remove unused tags Выдаліць пустыя тэгі - Resume torrents - Узнавіць торэнты + Узнавіць торэнты - Pause torrents - Спыніць торэнты + Спыніць торэнты - + Remove torrents - Remove torrents + Выдаліць торэнты - New Tag - Новы тэг + Новы тэг + + + + Start torrents + - + + Stop torrents + + + + Tag: Тэг: - + + Add tag + + + + Invalid tag name - Няправільная назва тэга + Памылковая назва тэга - + Tag name '%1' is invalid - Недапушчальная назва тэга '%1' + Памылковая назва тэга «%1» @@ -9862,12 +10435,12 @@ Click the "Search plugins..." button at the bottom right of the window Save path for incomplete torrents: - Save path for incomplete torrents: + Шлях захавання для незавершаных торэнтаў: Use another path for incomplete torrents: - Выкарыстоўвайце іншы шлях для няпоўных торэнтаў: + Выкарыстоўваць іншы шлях для незавершаных торэнтаў: @@ -9897,12 +10470,12 @@ Click the "Search plugins..." button at the bottom right of the window Choose save path - Пазначце шлях захавання + Выберыце шлях захавання Choose download path - Choose download path + Выберыце шлях захавання @@ -9912,7 +10485,7 @@ Click the "Search plugins..." button at the bottom right of the window Invalid category name - Недапушчальная назва катэгорыі + Памылковая назва катэгорыі @@ -9966,38 +10539,38 @@ Please choose a different name and try again. Mixed Mixed (priorities) - Змешаны + Змяшаны TorrentContentModel - + Name Назва - + Progress Ход выканання - + Download Priority Прыярытэт спампоўвання - + Remaining Засталося - + Availability Даступнасць - + Total Size Агульны памер @@ -10008,7 +10581,7 @@ Please choose a different name and try again. Mixed Mixed (priorities - Змешаны + Змяшаны @@ -10042,108 +10615,126 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Памылка перайменавання - + Renaming Перайменаванне - + New name: Новая назва: - + Column visibility - Адлюстраванне слупкоў + Бачнасць калонак - + Resize columns - Змяніць памер калонак + Дапасаваць памер калонак - + Resize all non-hidden columns to the size of their contents Змяніць памер усіх несхаваных калонак да памеру іх змесціва - + Open Адкрыць - + Open containing folder - Open containing folder + Адкрыць папку з файлам - + Rename... Перайменаваць... - + Priority Прыярытэт - - + + Do not download Не спампоўваць - + Normal Звычайны - + High Высокі - + Maximum Максімальны - + By shown file order Па паказаным парадку файлаў - + Normal priority Нармальны прыярытэт - + High priority Высокі прыярытэт - + Maximum priority Максімальны прыярытэт - + Priority by shown file order Прыярытэт па паказаным парадку файлаў + + TorrentCreatorController + + + Too many active tasks + Занадта шмат актыўных заданняў + + + + Torrent creation is still unfinished. + Стварэнне торэнта яшчэ не завершана. + + + + Torrent creation failed. + Не ўдалося стварыць торэнт. + + TorrentCreatorDialog Torrent Creator - Стваральнік торэнта + Стварэнне торэнта @@ -10162,13 +10753,13 @@ Please choose a different name and try again. - + Select file Выбраць файл - + Select folder Выбраць папку @@ -10185,7 +10776,7 @@ Please choose a different name and try again. Hybrid - Hybrid + @@ -10193,58 +10784,10 @@ Please choose a different name and try again. Памер часткі: - + Auto Аўта - - 16 KiB - 16 КБ - - - 32 KiB - 32 КБ - - - 64 KiB - 64 КБ - - - 128 KiB - 128 КБ - - - 256 KiB - 256 КБ - - - 512 KiB - 512 КБ - - - 1 MiB - 1 МБ - - - 2 MiB - 2 МБ - - - 4 MiB - 4 МБ - - - 8 MiB - 8 МБ - - - 16 MiB - 16 МБ - - - 32 MiB - 32 МБ - Calculate number of pieces: @@ -10258,12 +10801,12 @@ Please choose a different name and try again. Start seeding immediately - Пачаць адразу раздачу + Адразу пачаць раздаваць Ignore share ratio limits for this torrent - Ігнараваць ліміт абмежавання рэйтынгу для гэтага торэнта + Ігнараваць абмежаванне рэйтынгу для гэтага торэнта @@ -10273,12 +10816,12 @@ Please choose a different name and try again. Align to piece boundary for files larger than: - Выраўноўваць межы частак, калі файлы больш за: + Выраўноўваць межы частак, калі файлы большыя за: Disabled - Адключаны + Адключана @@ -10291,92 +10834,83 @@ Please choose a different name and try again. Палі - + You can separate tracker tiers / groups with an empty line. Выкарыстоўвайце пустыя радкі для падзелу груп трэкераў. - + Web seed URLs: Адрасы вэб-сідаў: - + Tracker URLs: Адрасы трэкераў: - + Comments: Каментарыі: - + Source: Крыніца: - + Progress: Ход выканання: - + Create Torrent Стварыць торэнт - - + + Torrent creation failed Памылка стварэння торэнта - + Reason: Path to file/folder is not readable. Прычына: Шлях да файла/папкі немагчыма прачытаць. - + Select where to save the new torrent Выберыце новае месца для захавання торэнта - + Torrent Files (*.torrent) Торэнт-файлы (*.torrent) - - Reason: %1 - Прычына: %1 - - - + Add torrent to transfer list failed. - + Не ўдалося дадаць торэнт у спіс. - + Reason: "%1" - + Прычына: «%1» - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Прычына: Створаны торэнт памылковы. Ён не будзе дададзены ў спіс спампоўвання. + Не ўдалося дадаць торэнт - + Torrent creator - Стваральнік торэнта + Стварэнне торэнта - + Torrent created: Торэнт створаны: @@ -10384,75 +10918,73 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Не ўдалося загрузіць канфігурацыю папак, за якімі трэба сачыць. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Не ўдалося прааналізаваць канфігурацыю папак, за якімі трэба сачыць з %1. Памылка: %2 - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Не ўдалося загрузіць з %1 канфігурацыю папак, за якімі трэба сачыць. Памылка: «Памылковы фармат даных». - + Couldn't store Watched Folders configuration to %1. Error: %2 - Couldn't store Watched Folders configuration to %1. Error: %2 + Не ўдалося захаваць у %1 канфігурацыю папак, за якімі трэба сачыць. Памылка: %2 - + Watched folder Path cannot be empty. - Watched folder Path cannot be empty. + Шлях папкі, за якой трэба сачыць, не можа быць пустым. - + Watched folder Path cannot be relative. - Watched folder Path cannot be relative. + Шлях папкі, за якой трэба сачыць, не можа быць адносным. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Памылковая magnet-спасылка. Спасылка: %1. Прычына: %2. - + Magnet file too big. File: %1 - + Magnet-файл занадта вялікі. Файл: %1 - + Failed to open magnet file: %1 - Failed to open magnet file: %1 + Не ўдалося адкрыць magnet-файл: %1 - + Rejecting failed torrent file: %1 - Rejecting failed torrent file: %1 + - + Watching folder: "%1" - Watching folder: "%1" + Назіранне за папкай: «%1» TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Не ўдалося размеркаваць памяць падчас чытання файла. Файл: «%1». Памылка: «%2» - Invalid metadata - Памылковыя метаданыя + Памылковыя метаданыя @@ -10460,7 +10992,7 @@ Please choose a different name and try again. Torrent Options - Torrent Options + Параметры торэнта @@ -10480,130 +11012,206 @@ Please choose a different name and try again. Use another path for incomplete torrent - Выкарыстоўвайце іншы шлях для няпоўнага торэнта + Выкарыстоўваць іншы шлях для незавершанага торэнта - + Category: Катэгорыя: - + + Torrent Share Limits + + + Torrent speed limits - Torrent speed limits + Абмежаванні хуткасці торэнта - + Download: Спампоўванне: - - + + - - + + Torrent Speed Limits + + + + + KiB/s КБ/с - + These will not exceed the global limits - These will not exceed the global limits + Гэтыя абмежаванні не перавысяць агульныя - + Upload: - Аддача: + Раздача: - Torrent share limits - Torrent share limits + Абмежаванні раздачы торэнта - Use global share limit - Выкарыстоўваць глабальнае абмежаванне раздачы + Выкарыстоўваць агульнае абмежаванне раздачы - Set no share limit - Прыбраць абмежаванне раздачы + Прыбраць абмежаванне раздачы - Set share limit to - Задаць абмежаванне раздачы + Задаць абмежаванне раздачы - ratio - рэйтынг + рэйтынг - total minutes - + хвілін агулам - inactive minutes - + хвілін неактыўных - + Disable DHT for this torrent - Disable DHT for this torrent + Адключыць для гэтага торэнта DHT - + Download in sequential order Спампоўваць паслядоўна - + Disable PeX for this torrent - Disable PeX for this torrent + Адключыць для гэтага торэнта PeX - + Download first and last pieces first Спачатку пампаваць першую і апошнюю часткі - + Disable LSD for this torrent - Disable LSD for this torrent + Адключыць для гэтага торэнта LSD - + Currently used categories - Currently used categories + Бягучыя выкарыстаныя катэгорыі - - + + Choose save path - Пазначце шлях захавання + Выберыце шлях захавання - + Not applicable to private torrents - Not applicable to private torrents + Немагчыма ўжыць да прыватных торэнтаў - No share limit method selected - Не абраны спосаб абмежавання раздачы + Не абраны спосаб абмежавання раздачы - Please select a limit method first - Выберыце спачатку спосаб абмежавання + Выберыце спачатку спосаб абмежавання + + + + TorrentShareLimitsWidget + + + + + + Default + Па змаўчанні + + + + + + Unlimited + Неабмежавана + + + + + + Set to + Задаць на + + + + Seeding time: + Час раздачы: + + + + + + + + + min + minutes +  хв + + + + Inactive seeding time: + Час неактыўнай раздачы: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Выдаліць торэнт + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Уключыць для торэнта рэжым суперраздачы + + + + Ratio: + Рэйтынг: @@ -10611,35 +11219,39 @@ Please choose a different name and try again. Torrent Tags - + Тэгі торэнта - New Tag - Новы тэг + Новы тэг + Add tag + + + + Tag: Тэг: - + Invalid tag name - Няправільная назва тэга + Памылковая назва тэга - + Tag name '%1' is invalid. - + Недапушчальная назва тэга «%1». - + Tag exists Тэг існуе - + Tag name already exists. Назва тэга ўжо існуе. @@ -10647,115 +11259,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - Error: '%1' is not a valid torrent file. + Памылка: «%1» гэта памылковы торэнт-файл. - + Priority must be an integer - Priority must be an integer + Прыярытэт павінен быць цэлым лікам - + Priority is not valid - Priority is not valid + Недапушчальны прыярытэт - + Torrent's metadata has not yet downloaded - Torrent's metadata has not yet downloaded + Метаданыя торэнта яшчэ не спампаваны - + File IDs must be integers - File IDs must be integers + Ідэнтыфікатары файлаў павінны быць цэлымі лікамі - + File ID is not valid - File ID is not valid + Няправільны ідэнтыфікатар файла - - - - + + + + Torrent queueing must be enabled - Torrent queueing must be enabled + - - + + Save path cannot be empty Шлях захавання не можа быць пустым - - + + Cannot create target directory - Cannot create target directory + Немагчыма стварыць каталог прызначэння - - + + Category cannot be empty Катэгорыя не можа быць пустой - + Unable to create category Не атрымалася стварыць катэгорыю - + Unable to edit category Не атрымалася змяніць катэгорыю - + Unable to export torrent file. Error: %1 - Unable to export torrent file. Error: %1 + Немагчыма экспартаваць torrent-файл. Памылка: %1 - + Cannot make save path Не атрымалася стварыць шлях захавання - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - 'sort' parameter is invalid + Параметр «sort» памылковы + + + + "%1" is not an existing URL + - + "%1" is not a valid file index. - "%1" is not a valid file index. + «%1» — няправільны індэкс файла. - + Index %1 is out of bounds. - Index %1 is out of bounds. + - - + + Cannot write to directory Запіс у каталог немагчымы - + WebUI Set location: moving "%1", from "%2" to "%3" Вэб-інтэрфейс, перамяшчэнне: «%1» перамяшчаецца з «%2» у «%3» - + Incorrect torrent name - Incorrect torrent name + Няправільная назва торэнта - - + + Incorrect category name Няправільная назва катэгорыі @@ -10765,7 +11392,7 @@ Please choose a different name and try again. Edit trackers - Edit trackers + Рэдагаваць трэкеры @@ -10775,270 +11402,228 @@ Please choose a different name and try again. - All trackers within the same group will belong to the same tier. - The group on top will be tier 0, the next group tier 1 and so on. - Below will show the common subset of trackers of the selected torrents. - One tracker URL per line. + Адзін адрас трэкера на радок. -- You can split the trackers into groups by inserting blank lines. -- All trackers within the same group will belong to the same tier. -- The group on top will be tier 0, the next group tier 1 and so on. -- Below will show the common subset of trackers of the selected torrents. +- Пустымі радкамі можна раздзяляць трэкеры на групы. +- Усе трэкеры з адной групы належаць да аднаго ўзроўню. +- Група зверху належыць да ўзроўню 0, наступная група - да ўзроўню 1 і гэтак далей.. +- Ніжэй будзе паказана агульнае падмноства трэкераў для выбраных торэнтаў. TrackerListModel - - + Working - Працуе + Працуе - + Disabled - + Адключана - + Disabled for this torrent - Disabled for this torrent + Адключана для гэтага торэнта - + This torrent is private - Гэты торэнт прыватны + Гэты торэнт прыватны - + N/A - Н/Д + Н/Д - + Updating... - Абнаўленне... + Абнаўленне... - + Not working - Не працуе + Не працуе - + Tracker error - + Памылка трэкера - + Unreachable - + Недаступны - + Not contacted yet - Пакуль не звязаўся + Пакуль не звязаўся - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Узровень + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Памылковы стан! + + + URL/Announce endpoint + Атрымальнік спасылкі/анонса + Tier + Узровень + + Protocol - + Пратакол - + Status - Стан + Стан - + Peers - Піры + Піры - + Seeds - Сіды + Сіды - + Leeches - Leeches + Лічы - + Times Downloaded - Усяго спампавана + Усяго спампавана - + Message - Паведамленне + Паведамленне - Next announce - + Наступны анонс - Min announce - + Мінімум анонса - v%1 - + v%1 TrackerListWidget - Working - Працуе - - - Disabled - Адключаны - - - Disabled for this torrent - Disabled for this torrent - - - + This torrent is private Гэты торэнт прыватны - Updating... - Абнаўленне... - - - Not working - Не працуе - - - Not contacted yet - Пакуль не звязаўся - - - N/A - Н/Д - - - + Tracker editing Рэдагаванне трэкера - + Tracker URL: Адрас трэкера: - - + + Tracker editing failed Рэдагаванне трэкера не ўдалося - + The tracker URL entered is invalid. - Уведзены адрас трэкера недапушчальны. + Уведзены адрас трэкера памылковы. - + The tracker URL already exists. Такі адрас трэкера ўжо існуе. - + Edit tracker URL... Рэдагаваць адрас трэкера... - + Remove tracker Выдаліць трэкер - + Copy tracker URL Капіяваць адрас трэкера - + Force reannounce to selected trackers Пераанансаваць на выбраныя трэкеры - + Force reannounce to all trackers Пераанансаваць на ўсе трэкеры - Tier - Узровень - - - URL - Адрас - - - Status - Стан - - - Seeds - Сіды - - - Times Downloaded - Усяго спампавана - - - + Resize columns - Змяніць памер калонак + Дапасаваць памер калонак - + Resize all non-hidden columns to the size of their contents Змяніць памер усіх несхаваных калонак да памеру іх змесціва - Peers - Піры - - - + Add trackers... - Add trackers... - - - Leeches - Leeches - - - Message - Паведамленне + Дадаць трэкеры... - + Column visibility - Адлюстраванне слупкоў + Бачнасць калонак @@ -11046,133 +11631,116 @@ Please choose a different name and try again. Add trackers - Add trackers + Дадаць трэкеры List of trackers to add (one per line): - Спіс трэкераў для дадання (па аднаму на радок): + Спіс трэкераў для дадавання (па аднаму на радок): - + µTorrent compatible list URL: - Адрас сумяшчальнага з µTorrent спісу: + Адрас сумяшчальнага з µTorrent спіса: - + Download trackers list - Download trackers list + Спампаваць спіс трэкераў - + Add Дадаць - + Trackers list URL error - Trackers list URL error + Памылка URL-адраса спіса трэкераў - + The trackers list URL cannot be empty - The trackers list URL cannot be empty + URL-адрас спіса трэкераў не можа быць пустым - + Download trackers list error - Download trackers list error + Памылка спампоўвання спіса трэкераў - + Error occurred when downloading the trackers list. Reason: "%1" - Error occurred when downloading the trackers list. Reason: "%1" + Падчас спампоўвання спіса трэкераў адбылася памылка. Прычына «%1» TrackersFilterWidget - All (0) - this is for the tracker filter - Усе (0) + + Warning (%1) + З папярэджаннямі (%1) - Trackerless (0) - Без трэкера (0) + + Trackerless (%1) + Без трэкера (%1) - Error (0) - З памылкамі (0) - - - Warning (0) - З папярэджаннямі (0) - - - Trackerless - Trackerless - - - Error (%1) - З памылкамі (%1) + + Tracker error (%1) + Памылка трэкера (%1) - Warning (%1) - З папярэджаннямі (%1) + Other error (%1) + Іншая памылка (%1) - - Trackerless (%1) - Без трэкера (%1) + + Remove tracker + Выдаліць трэкер - - Tracker error (%1) + + Start torrents - - Other error (%1) + + Stop torrents - - Remove tracker - Выдаліць трэкер - - - Resume torrents - Узнавіць торэнты + Узнавіць торэнты - Pause torrents - Спыніць торэнты + Спыніць торэнты - + Remove torrents - Remove torrents + Выдаліць торэнты - + Removal confirmation - + Пацвярджэнне выдалення - + Are you sure you want to remove tracker "%1" from all torrents? - + Сапраўды выдаліць трэкер «%1» з усіх торэнтаў? - + Don't ask me again. - + Больш не пытаць. - + All (%1) this is for the tracker filter Усе (%1) @@ -11181,9 +11749,9 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument - 'mode': invalid argument + «mode»: памылковы аргумент @@ -11232,7 +11800,7 @@ Please choose a different name and try again. [F] Downloading metadata Used when forced to load a magnet link. You probably shouldn't translate the F. - [F] Downloading metadata + [П] Спампоўванне метаданых @@ -11274,9 +11842,8 @@ Please choose a different name and try again. Праверка даных узнаўлення - Paused - Спынены + Прыпынены @@ -11301,220 +11868,262 @@ Please choose a different name and try again. З памылкамі - + Name i.e: torrent name Назва - + Size i.e: torrent size Памер - + Progress % Done Ход выканання - Status Torrent status (e.g. downloading, seeding, paused) - Стан + Стан - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Стан + + + Seeds i.e. full sources (often untranslated) Сіды - + Peers i.e. partial sources (often untranslated) Піры - + Down Speed i.e: Download speed Спампоўванне - + Up Speed i.e: Upload speed - Запампоўванне + Раздача - + Ratio Share ratio Рэйтынг - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Час - + Category Катэгорыя - + Tags Тэгі - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Дададзены - + Completed On Torrent was completed on 01/01/2010 08:00 Завершаны - + Tracker Трэкер - + Down Limit i.e: Download limit Абмеж. спампоўвання - + Up Limit i.e: Upload limit Абмеж. раздачы - + Downloaded Amount of data downloaded (e.g. in MB) Спампавана - + Uploaded Amount of data uploaded (e.g. in MB) Раздадзена - + Session Download Amount of data downloaded since program open (e.g. in MB) Спампавана за сеанс - + Session Upload Amount of data uploaded since program open (e.g. in MB) Раздадзена за сеанс - + Remaining Amount of data left to download (e.g. in MB) Засталося - + + Time Active + Time (duration) the torrent is active (not stopped) + Час актыўнасці + + + + Yes + Так + + + + No + Не + + Time Active Time (duration) the torrent is active (not paused) - Час актыўнасці + Час актыўнасці - + Save Path Torrent save path - + Шлях захавання - + Incomplete Save Path Torrent incomplete save path - + Шлях захавання для незавершаных - + Completed Amount of data completed (e.g. in MB) Завершана - + Ratio Limit Upload share ratio limit Абмеж. рэйтынгу - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Апошняя поўная прысутнасць - + Last Activity Time passed since a chunk was downloaded/uploaded Актыўнасць - + Total Size i.e. Size including unwanted data Агульны памер - + Availability The number of distributed copies of the torrent Даступнасць - + Info Hash v1 i.e: torrent info hash v1 - Info Hash v2: {1?} + Хэш v1 - + Info Hash v2 i.e: torrent info hash v2 - Info Hash v2: {2?} + Хэш v2 - + Reannounce In Indicates the time until next trackers reannounce + Паўторны анонс праз + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Н/Д - + %1 ago e.g.: 1h 20m ago %1 таму - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (раздаецца %2) @@ -11523,334 +12132,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility - Адлюстраванне калонак + Бачнасць калонак - + Recheck confirmation Пацвярджэнне пераправеркі - + Are you sure you want to recheck the selected torrent(s)? - Сапраўды жадаеце пераправерыць вылучаныя торэнты? + Сапраўды хочаце пераправерыць выбраныя торэнты? - + Rename Перайменаваць - + New name: Новая назва: - + Choose save path - Пазначце шлях захавання + Выберыце шлях захавання - Confirm pause - + Пацвердзіць спыненне - Would you like to pause all torrents? - + Сапраўды спыніць усе торэнты? - Confirm resume - + Пацвердзіць узнаўленне - Would you like to resume all torrents? - + Сапраўды ўзнавіць усе торэнты? - + Unable to preview - + Немагчыма праглядзець - + The selected torrent "%1" does not contain previewable files - + Выбраны торэнт «%1» не змяшчае файлаў, якія можна праглядаць - + Resize columns - Змяніць памер калонак + Дапасаваць памер калонак - + Resize all non-hidden columns to the size of their contents Змяніць памер усіх несхаваных калонак да памеру іх змесціва - + Enable automatic torrent management - + Уключыць аўтаматычнае кіраванне торэнтамі - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - + Сапраўды хочаце ўключыць аўтаматычнае кіраванне для выбраных торэнтаў? Яны могуць перамясціцца. - Add Tags - Дадаць тэгі + Дадаць тэгі - + Choose folder to save exported .torrent files - + Выберыце папку, каб захаваць экспартаваныя файлы .torrent - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + Не ўдалося экспартаваць файл .torrent. торэнт: «%1». Шлях захавання: «%2». Прычына: «%3» - + A file with the same name already exists - + Файл з такім імем ужо існуе - + Export .torrent file error - + Памылка экспартавання файла .torrent - + Remove All Tags Выдаліць усе тэгі - + Remove all tags from selected torrents? Выдаліць усе тэгі для выбраных торэнтаў? - + Comma-separated tags: Тэгі, падзеленыя коскай: - + Invalid tag - Недапушчальны тэг + Памылковы тэг - + Tag name: '%1' is invalid - Імя тэга: %1' недапушчальна + Назва тэга: «%1» памылкова - &Resume Resume/start the torrent - &Узнавіць + &Узнавіць - &Pause Pause the torrent - &Спыніць + &Спыніць - Force Resu&me Force Resume/start the torrent - + Узнавіць &прымусова - + Pre&view file... - + П&ерадпрагляд файла... - + Torrent &options... - + &Параметры торэнта... - + Open destination &folder - + Адкрыць папку &прызначэння - + Move &up i.e. move up in the queue - + Перамясціць &вышэй - + Move &down i.e. Move down in the queue - + Перамясціць &ніжэй - + Move to &top i.e. Move to top of the queue - + У самы в&ерх - + Move to &bottom i.e. Move to bottom of the queue - + У самы н&із - + Set loc&ation... - + Задаць раз&мяшчэнне... - + Force rec&heck - + Пера&праверыць прымусова - + Force r&eannounce - + Пера&анансаваць прымусова - + &Magnet link - + Magnet-&спасылка - + Torrent &ID - + ID &торэнта - + + &Comment + &Каментарый + + + &Name - + &Назва - + Info &hash v1 - + &Хэш v1 - + Info h&ash v2 - + Х&эш v2 - + Re&name... - + Пера&йменаваць... - + Edit trac&kers... - + Рэдагаваць трэ&керы... - + E&xport .torrent... - + Э&кспартаваць .torrent - + Categor&y - + Катэгор&ыя - + &New... New category... - + &Новая... - + &Reset Reset category - + &Скінуць - + Ta&gs - + Тэ&гі - + &Add... Add / assign multiple tags... - + &Дадаць... - + &Remove All Remove all tags + &Выдаліць усе + + + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + &Queue - + &Чарга - + &Copy - + &Капіяваць - + Exported torrent is not necessarily the same as the imported - + Экспартаваны торэнт не павінен абавязкова супадаць з імпартаваным - + Download in sequential order Спампоўваць паслядоўна - - Errors occurred when exporting .torrent files. Check execution log for details. + + Add tags + + + Errors occurred when exporting .torrent files. Check execution log for details. + Адбылася памылка пры экспартаванні файлаў .torrent. Праверце журнал выканання праграмы, каб паглядзець звесткі. + + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - &Remove + &Выдаліць - + Download first and last pieces first Спачатку пампаваць першую і апошнюю часткі - + Automatic Torrent Management Аўтаматычнае кіраванне - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - Аўтаматычны рэжым азначае, што розныя уласцівасці торэнта (напр. шлях захавання) будзе вызначацца адпаведнай катэгорыяй + Аўтаматычны рэжым азначае, што пэўныя ўласцівасці торэнта (напр. шлях захавання) вызначаюцца ў залежнасці ад катэгорыі - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - + Нельга прымусова пераанансаваць, калі торэнт спынены, у чарзе або правяраецца - + Super seeding mode Рэжым суперраздачы @@ -11860,86 +12493,91 @@ Please choose a different name and try again. UI Theme Configuration - + Канфігурацыя тэмы інтэрфейсу Colors - + Колеры Color ID - + Ідэнтыфікатар колеру Light Mode - + Светлы рэжым Dark Mode - + Цёмны рэжым Icons - + Значкі Icon ID - + ID значка - + UI Theme Configuration. - + Канфігурацыя тэмы інтэрфейсу. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Не ўдалося цалкам ужыць змены тэмы абалонкі. Падрабязнасці можна знайсці ў журнале. - + Couldn't save UI Theme configuration. Reason: %1 - + Не ўдалося захаваць канфігурацыю тэмы. Прычына: %1 - - + + Couldn't remove icon file. File: %1. - + Не ўдалося выдаліць файл значка. Файл: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Не ўдалося скапіяваць файл значка. Крыніца: %1. Месца прызначэння: %2. UIThemeManager - - Failed to load UI theme from file: "%1" + + Set app style failed. Unknown style: "%1" + + + Failed to load UI theme from file: "%1" + Не ўдалося загрузіць тэму з файла: «%1» + UIThemeSource Couldn't parse UI Theme configuration file. Reason: %1 - + Не ўдалося прааналізаваць файл канфігурацыі тэмы. Прычына: %1 UI Theme configuration file has invalid format. Reason: %1 - + Файл канфігурацыі тэмы мае памылковы фармат. Прычына: %1 @@ -11949,93 +12587,90 @@ Please choose a different name and try again. Invalid color for ID "%1" is provided by theme - + Тэмай дадзены памыковы колер для ідэнтыфікатара «%1» Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - Не ўдалося перанесці налады: WebUI https, file: "%1", error: "%2" + Не ўдалося перанесці налады: WebUI https, файл: «%1», памылка: «%2» - + Migrated preferences: WebUI https, exported data to file: "%1" Перанесеныя налады: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". - Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". + У файле канфігурацыі знойдзена недапушчальнае значэнне, вяртаецца значэнне па змаўчанні. Ключ: «%1». Недапушчальнае значэнне: «%2». Utils::ForeignApps - - Python not detected - Python не знойдзены - Found Python executable. Name: "%1". Version: "%2" - + Знойдзены выконвальны файл Python. Назва: «%1». Версія: «%2» Failed to find Python executable. Path: "%1". - + Не ўдалося знайсці выконвальны файл Python. Шлях: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Не ўдалося знайсці выконвальны файл «python3» у пераменнай асяроддзя PATH. PATH: «%1» Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Не ўдалося знайсці выконвальны файл «python» у пераменнай асяроддзя PATH. PATH: «%1» Failed to find `python` executable in Windows Registry. - + Не ўдалося знайсці ў рэестры Windows запіс пра выконвальны файл «python». Failed to find Python executable - + Не ўдалося знайсці выконвальны файл Python. Utils::IO - + File open error. File: "%1". Error: "%2" - + Памылка адкрыцця файла. Файл: «%1». Памылка: «%2» - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + Памер файла перавышае абмежаванне. Файл: «%1».. Памер файла: %2. Памер абмежавання: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Памер файла перавышае абмежаванне памеру даных. Файл: «%1». Памер файла: %2. Абмежаванне масіва: %3 - + File read error. File: "%1". Error: "%2" - + Памылка чытання файла. Файл: «%1». Памылка: «%2» - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - + Неадпаведнасць прачытанага памеру. Файл: «%1». Чаканы памер: %2. Фактычны памер: %3 @@ -12043,22 +12678,22 @@ Please choose a different name and try again. Watched Folder Options - + Параметры папкі, за якой трэба сачыць <html><head/><body><p>Will watch the folder and all its subfolders. In Manual torrent management mode it will also add subfolder name to the selected Save path.</p></body></html> - + <html><head/><body><p>Будуць назірацца папка і ўсе яе падпапкі. У ручным рэжыме кіравання торэнтамі, да выбранага шляху захавання будзе таксама дадавацца назва падпапкі.</p></body></html> Recursive mode - + Рэкурсіўны рэжым Torrent parameters - + Параметры торэнта @@ -12066,17 +12701,17 @@ Please choose a different name and try again. Watched Folder - Каталогі, за якімі сачыць + Папка, за якой трэба сачыць Watched folder path cannot be empty. - + Шлях да папкі, за якой трэба сачыць, не можа быць пустым. Watched folder path cannot be relative. - + Шлях да папкі, за якой трэба сачыць, не можа быць адносным. @@ -12091,222 +12726,215 @@ Please choose a different name and try again. Folder '%1' isn't readable. - Папка «%1» недаступная для чытання. + Папка «%1» недаступна для чытання. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Пазначана непрымальная назва сеансавага файла кукі: '%1'. Ужытая назва па змаўчанні. - + Unacceptable file type, only regular file is allowed. - + Непрымальны тып файла, дазволены толькі звычайны файл. - + Symlinks inside alternative UI folder are forbidden. - + Сімвальныя спасылкі ўнутры каталога альтэрнатыўнага інтэрфейсу забароненыя. - - Using built-in Web UI. - + + Using built-in WebUI. + Выкарыстоўваецца ўбудаваны вэб-інтэрфейс. - - Using custom Web UI. Location: "%1". - + + Using custom WebUI. Location: "%1". + Выкарыстоўваецца уласны вэб-інтэрфейс. Месцазнаходжанне: «%1». - - Web UI translation for selected locale (%1) has been successfully loaded. - + + WebUI translation for selected locale (%1) has been successfully loaded. + Пераклад вэб-інтэрфейса для выбранай мовы (%1) паспяхова загружаны. - - Couldn't load Web UI translation for selected locale (%1). - + + Couldn't load WebUI translation for selected locale (%1). + Не ўдалося загрузіць пераклад вэб-інтэрфейсу для выбранай мовы (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Прапушчаны раздзяляльнік «:» ва ўласным загалоўку HTTP вэб-інтэрфейса: «%1» - + Web server error. %1 - + Памылка вэб-сервера. %1 - + Web server error. Unknown error. - + Памылка вэб-сервера. Невядомая памылка. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + Вэб-інтэрфейс: Зыходны і мэтавы загалоўкі не супадаюць! IP крыніцы: «%1». Зыходны загаловак: «%2». Мэтавая крыніца: «%3» - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + Вэб-інтэрфейс: Спасылачны і мэтавы загалоўкі не супадаюць! IP крыніцы: «%1». Загаловак спасылкі: «%2». Мэтавая крыніца: «%3» - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + Вэб-інтэрфейс: памылковы загаловак хоста, несупадзенне порта. Запыт IP крыніцы: «%1». Порт сервера: «%2». Атрыманы загаловак хоста: «%3» - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' - + Вэб-інтэрфейс: памылковы загаловак хоста. Запыт IP крыніцы: «%1». Атрыманы загаловак хоста: «%2» WebUI - - Web UI: HTTPS setup successful - Вэб-інтэрфейс: наладка HTTPS паспяхова + + Credentials are not set + Уліковыя даныя не зададзены - - Web UI: HTTPS setup failed, fallback to HTTP - Вэб-інтэрфейс: памылка наладкі HTTPS, пераход да HTTP + + WebUI: HTTPS setup successful + WebUI: наладка HTTPS паспяхова выканана - - Web UI: Now listening on IP: %1, port: %2 - Вэб-інтэрфейс: цяпер праслухоўвае IP:%1, порт:%2 + + WebUI: HTTPS setup failed, fallback to HTTP + Вэб-інтэрфейс: збой наладкі HTTPS, вяртанне да HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Вэб-інтэрфейс: немагчыма прывязаць IP: %1, порт: %2. Прычына: %3 + + WebUI: Now listening on IP: %1, port: %2 + Вэб-інтэрфейс: Зараз праслухоўваецца IP: %1, порт: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Немагчыма прывязацца да IP: %1, порт: %2. Прычына: %3 + + + + fs + + + Unknown error + Невядомая памылка misc - + B bytes Б - + KiB kibibytes (1024 bytes) КБ - + MiB mebibytes (1024 kibibytes) МБ - + GiB gibibytes (1024 mibibytes) ГБ - + TiB tebibytes (1024 gibibytes) ТБ - + PiB pebibytes (1024 tebibytes) ПБ - + EiB exbibytes (1024 pebibytes) ЭБ - + /s per second - + %1s e.g: 10 seconds - %1 хв {1s?} + %1 с - + %1m e.g: 10 minutes - %1 хв + %1  хв - + %1h %2m e.g: 3 hours 5 minutes - %1 гадз %2 хв + %1 гадз %2 хв - + %1d %2h e.g: 2 days 10 hours - %1 дз. %2 гадз + %1 дз %2 гадз - + %1y %2d e.g: 2 years 10 days - %1 г. %2 дз. - - - %1h %2m - e.g: 3hours 5minutes - %1 гадз %2 хв + %1 г. %2 дз - %1d %2h - e.g: 2days 10hours - %1 дз. %2 гадз - - - %1y %2d - e.g: 2years 10days - %1 г. %2 дз. - - - - + + Unknown Unknown (size) Невядомы - + qBittorrent will shutdown the computer now because all downloads are complete. - Зараз qBittorrent адключыць камп'ютар, бо ўсе спампоўванні завершаны. + Зараз qBittorrent выключыць камп'ютар, бо ўсе спампоўванні завершаны. - + < 1m < 1 minute - < 1 хв - - - %1m - e.g: 10minutes - %1 хв + < 1 хв diff --git a/src/lang/qbittorrent_bg.ts b/src/lang/qbittorrent_bg.ts index a6992b2d4ab5..633f8b3e22de 100644 --- a/src/lang/qbittorrent_bg.ts +++ b/src/lang/qbittorrent_bg.ts @@ -14,75 +14,75 @@ За - + Authors Автори - + Current maintainer Настоящ разработчик - + Greece Гърция - - + + Nationality: Държава: - - + + E-mail: E-mail: - - + + Name: Име: - + Original author Автор на оригиналната версия - + France Франция - + Special Thanks Специални благодарности - + Translators Преводачи - + License Лиценз - + Software Used Използван софтуер - + qBittorrent was built with the following libraries: За qBittorrent са ползвани следните библиотеки: - + Copy to clipboard @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Авторско право %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Авторско право %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Съхрани на - + Never show again Не показвай никога повече - Torrent settings - Настройки на торента + Настройки на торента @@ -191,12 +190,12 @@ Стартирай торента - + Torrent information Торент информация - + Skip hash check Прескочи проверката на парчетата @@ -205,6 +204,11 @@ Use another path for incomplete torrent Използвай друг път за незавършен торент + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Условие за спиране: - - + + None Няма - - + + Metadata received Метаданни получени - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked Файлове проверени - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Когато е поставена отметка, .torrent файлът няма да бъде изтрит независимо от настройките на страницата „Изтегляне“ на диалоговия прозорец Опции - + Content layout: Оформление на съдържанието: - + Original Оригинал - + Create subfolder Създай подпапка - + Don't create subfolder Не създавай подпапка - + Info hash v1: Инфо хеш в1: - + Size: Размер: - + Comment: Коментар: - + Date: Дата: @@ -324,213 +333,150 @@ Запомни последното място за съхранение - + Do not delete .torrent file Без изтриване на .torrent файла - + Download in sequential order Сваляне в последователен ред - + Download first and last pieces first Първо изтеглете първата и последната част - + Info hash v2: Инфо хеш v2: - + Select All Избери всички - + Select None Не избирай - + Save as .torrent file... Запиши като .torrent файл... - + I/O Error Грешка на Вход/Изход - Invalid torrent - Невалиден торент - - - + Not Available This comment is unavailable Не е налично - + Not Available This date is unavailable Не е налично - + Not available Не е наличен - Invalid magnet link - Невалидна магнитна връзка - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Неуспешно зареждане на торент: %1. -Грешка: %2 - - - This magnet link was not recognized - Тази магнитна връзка не се разпознава - - - + Magnet link Магнитна връзка - + Retrieving metadata... Извличане на метаданни... - - + + Choose save path Избери път за съхранение - Torrent is already present - Торентът вече съществува - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Торент "%1" вече е в списъка за трансфер. Тракерите не са обединени, тъй като това е частен торент. - - - Torrent is already queued for processing. - Торентът вече е на опашка за обработка. - - - + No stop condition is set. Не е зададено условие за спиране. - + Torrent will stop after metadata is received. Торента ще спре след като метаданни са получени. - - Torrents that have metadata initially aren't affected. - Торенти, които имат метаданни първоначално не са засегнати. - - - + Torrent will stop after files are initially checked. Торента ще спре след като файловете са първоначално проверени. - + This will also download metadata if it wasn't there initially. Това също ще свали метаданни, ако ги е нямало първоначално. - - + + N/A Не е налично - Magnet link is already queued for processing. - Магнитната връзка вече е добавена за обработка. - - - + %1 (Free space on disk: %2) %1 (Свободно място на диска: %2) - + Not available This size is unavailable. Недостъпен - + Torrent file (*%1) Торент файл (*%1) - + Save as torrent file Запиши като торент файл - + Couldn't export torrent metadata file '%1'. Reason: %2. Не може да се експортират метаданни от файл '%1'. Причина: %2. - + Cannot create v2 torrent until its data is fully downloaded. Не може да се създаде v2 торент, докато данните не бъдат напълно свалени. - Cannot download '%1': %2 - Не може да се свали '%1': %2 - - - + Filter files... Филтрирай файлове... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Торент '%1' вече е в списъка за трансфер. Тракерите не могат да бъдат обединени, защото това е частен торент. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торент '%1' вече е в списъка за трансфер. Искате ли да обедините тракери от нов източник? - - - + Parsing metadata... Проверка на метаданните... - + Metadata retrieval complete Извличането на метаданни завърши - - Failed to load from URL: %1. -Error: %2 - Неуспешно зареждане от URL:%1. -Грешка:%2 - - - Download Error - Грешка при сваляне - AddTorrentManager @@ -545,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -648,72 +594,77 @@ Error: %2 Пропусни хеш проверка - - - Choose save path - Избери път за съхранение + + Torrent share limits + Ограничения за споделяне на торент - - - - - - - Default - По подразбиране + + + Choose save path + Избери път за съхранение + + + - Yes - Да + Default + По подразбиране + Yes + Да + + + + + No Не - + Manual Ръчно - + Automatic Автоматично - + Original Оригинал - + Create subfolder Създай подпапка - + Don't create subfolder Не създавай подпапка - + None Няма - + Metadata received Метаданни получени - + Files checked Файлове проверени @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB МБ - + Recheck torrents on completion Провери торентите при завършване - - + + ms milliseconds мс - + Setting Настройка - + Value Value set for this setting Стойност - + (disabled) (изключено) - + (auto) (автоматично) - + + min minutes min - + All addresses Всички адреси - + qBittorrent Section qBittorrent Раздел - - + + Open documentation Отваряне на докумнтация - + All IPv4 addresses Всички IPv4 адреси - + All IPv6 addresses Всички IPv6 адреси - + libtorrent Section libtorrent Раздел - + Fastresume files Бързо възобновяване на файлове - + SQLite database (experimental) SQLite база данни (експериментално) - + Resume data storage type (requires restart) Възобновяване на типа съхранение на данни (изисква рестартиране) - + Normal Нормален - + Below normal Под нормален - + Medium Среден - + Low Нисък - + Very low Много нисък - - Process memory priority (Windows >= 8 only) - Приоритет за управление на паметта (Само за Windows 8 и по-нов) - - - + Physical memory (RAM) usage limit Ограничение на потреблението на физическата памет (RAM) - + Asynchronous I/O threads Асинхронни Входно/Изходни нишки - + Hashing threads Хеширане на нишки - + File pool size Размер на файловия пул - + Outstanding memory when checking torrents Оставаща памет при проверка на торентите - + Disk cache Дисков кеш - - - - + + + + s seconds с - + Disk cache expiry interval Продължителност на дисковия кеш - + Disk queue size Размер на опашката на диска - - + + Enable OS cache Включи кеширане от ОС - + Coalesce reads & writes Обединяване на записванията и прочитанията - + Use piece extent affinity Използвай афинитет на размерите на парчета - + Send upload piece suggestions Изпращане на съвети за частите на качване - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer Максимален брой неизпълнени заявки към един участник - - - - - + + + + + KiB  KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Тази опция е по-малко ефективна на Линукс - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default По подразбиране - + Memory mapped files Отбелязани в паметта файлове - + POSIX-compliant POSIX-съобразен - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Диск ВИ тип (изисква рестарт) - - + + Disable OS cache Забрани кеш на ОС - + Disk IO read mode Режим на четене на ВИ на диск - + Write-through Писане чрез - + Disk IO write mode Режим на писане на ВИ на диск - + Send buffer watermark Изпращане на буферен воден знак - + Send buffer low watermark Изпращане на нисък буферен воден знак - + Send buffer watermark factor Изпращане на фактор на буферния воден знак - + Outgoing connections per second Изходящи връзки в секунда - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Размер на задържане на сокет - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers Тип услуга (ToS) за връзки с пиъри - + Prefer TCP Предпочитане на TCP - + Peer proportional (throttles TCP) Пиър пропорционален (дроселиран TCP) - + Support internationalized domain name (IDN) Поддържа интернационализирано домейн име (IDN) - + Allow multiple connections from the same IP address Позволяване на множество връзки от един и същи IP адрес - + Validate HTTPS tracker certificates Проверявай сертификати на HTTPS тракер - + Server-side request forgery (SSRF) mitigation Подправяне на заявка от страна на сървъра (SSRF) смекчаване - + Disallow connection to peers on privileged ports Не разрешавай връзка към пиъри на привилегировани портове - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates Контролира интервала на обновяване на вътрешното състояние, което от своя страна засяга опреснявания на ПИ - + Refresh interval Интервал на опресняване - + Resolve peer host names Намиране името на хоста на участниците - + IP address reported to trackers (requires restart) IP адреси, докладвани на тракерите (изисква рестарт) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Повторно обявяване на всички тракери при промяна на IP или порт - + Enable icons in menus Разрешаване на икони в менюта - + Enable port forwarding for embedded tracker Разреши пренасочване на портове за вграден тракер - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + сек + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage Процент на прекъсване на оборота на участници - + Peer turnover threshold percentage Процент на праг на оборота на участници - + Peer turnover disconnect interval Интервал на прекъсване на партньорския оборот - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Екранни уведомления - + Display notifications for added torrents Екранни уведомления за добавени торенти. - + Download tracker's favicon Сваляне на логото на тракера - + Save path history length Брой запазени последно използвани местоположения. - + Enable speed graphs Разреши графика на скоростта - + Fixed slots Фиксиран брой слотове - + Upload rate based Скорост на качване въз основа на - + Upload slots behavior Поведение на слотовете за качване - + Round-robin Кръгла система - + Fastest upload Най-бързо качване - + Anti-leech Анти-лийч - + Upload choking algorithm Задушаващ алгоритъм за качване - + Confirm torrent recheck Потвърждаване на проверка на торент - + Confirm removal of all tags Потвърдете изтриването на всички тагове - + Always announce to all trackers in a tier Винаги анонсирай до всички тракери в реда - + Always announce to all tiers Винаги анонсирай до всички тракер-редове - + Any interface i.e. Any network interface Произволен интерфейс - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP алгоритъм смесен режим - + Resolve peer countries Намиране държавата на участниците - + Network interface Мрежов интерфейс - + Optional IP address to bind to Опционален IP адрес за свързване - + Max concurrent HTTP announces Макс. едновременни HTTP анонси - + Enable embedded tracker Включи вградения тракер - + Embedded tracker port Вграден порт на тракер - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 стартиран + + + Invalid directory path + + + + + Directory does not exist + - + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Работи в преносим режим. Автоматично открита папка с профил на адрес: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Открит е флаг за излишен команден ред: "%1". Преносимият режим предполага относително бързо възобновяване. - + Using config directory: %1 Използване на конфигурационна папка: %1 - + Torrent name: %1 Име но торент: %1 - + Torrent size: %1 Размер на торент: %1 - + Save path: %1 Местоположение за запис: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Торента бе свален в %1. - + + Thank you for using qBittorrent. Благодарим Ви за ползването на qBittorrent. - + Torrent: %1, sending mail notification Торент: %1, изпращане на уведомление по имейл. - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` Изпълнение на външна програма. Торент "%1". Команда: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Торент "%1" завърши свалянето - + WebUI will be started shortly after internal preparations. Please wait... УебПИ ще бъде стартиран малко след вътрешни подготовки. Моля, изчакайте... - - + + Loading torrents... Зареждане на торенти... - + E&xit И&зход - + I/O Error i.e: Input/Output Error В/И грешка - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Причина: %2 - Error - Грешка - - - Failed to add torrent: %1 - Неуспешно добавяне на торент: %1 - - - + Torrent added Торент добавен - + '%1' was added. e.g: xxx.avi was added. '%1' бе добавен. - + Download completed Сваляне приключено - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' завърши свалянето. - - - URL download error - Грешка при URL сваляне + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - Не можа да се свали файл при URL '%1', причина: %2. + + This is a test email. + - Torrent file association - Асоциация на торент файл + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent не е приложението по подразбиране за отваряне на торент файлове или магнитни връзки. -Искате ли да направите qBittorrent приложението по подразбиране за тези? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' завърши свалянето. - + Information Информация - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 За да контролирате qBittorrent, достъпете УебПИ при: %1 - - The Web UI administrator username is: %1 - Потребителското име на администратор на Web UI е: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Администраторската парола на Web UI не е променена от стойността по подразбиране: %1 - - - - This is a security risk, please change your password in program preferences. - Това е риск за сигурността, моля, променете паролата си в предпочитанията на програмата. - - - Application failed to start. - Приложението не успя да стартира. - - - + Exit Изход - + Recursive download confirmation - Допълнително потвърждение за сваляне + Допълнително потвърждение за сваляне - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торентът '%'1 съдържа .torrent файлове, искате ли да продължите с техните сваляния? + Торентът '%'1 съдържа .torrent файлове, искате ли да продължите с техните сваляния? - + Never - Никога + Никога - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Рекурсивно сваляне на .torrent файл в торента. Торент-източник: "%1". Файл: "%2" + Рекурсивно сваляне на .torrent файл в торента. Торент-източник: "%1". Файл: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Неуспешно задаване на ограничение на потреблението на физическата памет (RAM). Код на грешка: %1. Съобщение на грешка: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated Прекратяване на qBittorrent започнато - + qBittorrent is shutting down... qBittorrent се изключва... - + Saving torrent progress... Прогрес на записване на торент... - + qBittorrent is now ready to exit qBittorrent сега е готов за изход @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Не може да се създаде папка '%1'. @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Грешка при влизане в уеб API. Причина: IP е забранен, IP: %1, потребителско име: %2 - + Your IP address has been banned after too many failed authentication attempts. Вашият IP адрес е забранен след твърде много неуспешни опити за удостоверяване. - + WebAPI login success. IP: %1 Успешно влизане в уеб API. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Грешка при влизане в WebAPI. Причина: невалидни идентификационни данни, брой опити: %1, IP: %2, потребителско име: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? - + Must Not Contain: Трябва Да Не Съдържа: - + Episode Filter: Филтър за Епизод: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Експортиране... - + Matches articles based on episode filter. Намерени статии, базирани на епизодичен филтър. - + Example: Пример: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match ще търси резултати 2, 5, 8 през 15, 30 и повече епизода на първи сезон - + Episode filter rules: Правила на епизодния филтър: - + Season number is a mandatory non-zero value Номерът на сезона трябва да бъде със стойност, различна от нула - + Filter must end with semicolon Филтърът трябва да завършва с точка и запетая - + Three range types for episodes are supported: Три типа диапазони за епизоди се поддържат: - + Single number: <b>1x25;</b> matches episode 25 of season one Едно число: <b>1x25;</b> съответства на епизод 25 на първи сезон - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Нормален диапазон: <b>1x25-40;</b> съответства на епизоди 25 до 40 на първи сезон - + Episode number is a mandatory positive value Номерът на е епизода е задължително да е с позитивна стойност - + Rules Правила - + Rules (legacy) Правила (наследени) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Безкраен диапазон: <b>1x25-;</b> съответства на епизодите от 25 до края на първи сезон и всички епизоди следващите сезони - + Last Match: %1 days ago Последно Съвпадение: преди %1 дни - + Last Match: Unknown Последно Съвпадение: Неизвестно - + New rule name Име на ново правила - + Please type the name of the new download rule. Моля, въведете името на новото правило за сваляне. - - + + Rule name conflict Конфликт в имената на правилата - - + + A rule with this name already exists, please choose another name. Правило с това име вече съществува, моля изберете друго име. - + Are you sure you want to remove the download rule named '%1'? Сигурни ли сте че искате да изтриете правилото с име '%1'? - + Are you sure you want to remove the selected download rules? Сигурни ли сте че искате да изтриете избраните правила? - + Rule deletion confirmation Потвърждение за изтриване на правилото - + Invalid action Невалидно действие - + The list is empty, there is nothing to export. Списъкът е празен, няма какво да експортирате. - + Export RSS rules Експорт на RSS правила - + I/O Error В/И Грешка - + Failed to create the destination file. Reason: %1 Неуспешно създаване на файл. Причина: %1 - + Import RSS rules Импорт на RSS правила - + Failed to import the selected rules file. Reason: %1 Неуспешно импортиране на избрания файл с правила. Причина: %1 - + Add new rule... Добави ново правило... - + Delete rule Изтрий правилото - + Rename rule... Преименувай правилото... - + Delete selected rules Изтрий избраните правила - + Clear downloaded episodes... Изчистване на изтеглените епизоди... - + Rule renaming Преименуване на правилото - + Please type the new rule name Моля напишете името на новото правило - + Clear downloaded episodes Изчистване на изтеглените епизоди - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Наистина ли искате да изчистите списъка с изтеглени епизоди за избраното правило? - + Regex mode: use Perl-compatible regular expressions Режим регулярни изрази: използвайте Perl-съвместими регулярни изрази - - + + Position %1: %2 Позиция %1: %2 - + Wildcard mode: you can use Режим на заместващи символи: можете да изпозвате - - + + Import error - + Failed to read the file. %1 - + ? to match any single character ? за съвпадане на един, какъвто и да е символ - + * to match zero or more of any characters * за съвпадане на нула или повече каквито и да са символи - + Whitespaces count as AND operators (all words, any order) Приеми празно пространствените символи като И оператори (всички думи, в независимо какъв ред) - + | is used as OR operator | се използва за ИЛИ оператор - + If word order is important use * instead of whitespace. Ако поредността на думите е важна, използвайте * вместо пауза. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Израз с празна %1 клауза (пр.: %2) - + will match all articles. ще съответства на всички артикули. - + will exclude all articles. ще изключи всички артикули. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Не може да се създаде папка за възобновяване на торент: "%1" - + Cannot parse resume data: invalid format Не може да се анализират данни за продължение: невалиден формат - - + + Cannot parse torrent info: %1 Не може да се анализират данни за торент: %1 - + Cannot parse torrent info: invalid format Не може да се анализират данни за торент: невалиден формат - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Метаданните на торент не можаха да бъдат запазени '%1'. Грешка: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Не можа да се запишат данните за възобновяване на торента на '%1'. Грешка: %2. - + Couldn't load torrents queue: %1 Не можа да се зареди торент опашка: %1 - + Cannot parse resume data: %1 Не могат да се предадат данни за продължение: %1 - + Resume data is invalid: neither metadata nor info-hash was found Данни за продължение са невалидни: нито метаданни, нито инфо-хеш бяха намерени - + Couldn't save data to '%1'. Error: %2 Данните не можаха да бъдат запазени в '%1'. Грешка: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Не намерено. - + Couldn't load resume data of torrent '%1'. Error: %2 Данните за възобновяване на торент не можаха да се заредят '%1'. Грешка: %2 - - + + Database is corrupted. Базата данни е повредена. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Метаданните на торент не можаха да бъдат запазени. Грешка: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Данните за възобновяване не можаха да се съхранят за торент '%1'. Грешка: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Данните за възобновяване на торент не можаха да бъдат изтрити '%1'. Грешка: %2 - + Couldn't store torrents queue positions. Error: %1 Не можаха да се съхранят позициите на опашката на торенти. Грешка: %1 @@ -2140,574 +2185,616 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Поддръжка на разпределена хеш таблица (DHT): %1 - - - - - - - - - + + + + + + + + + ON ВКЛ - - - - - - - - - + + + + + + + + + OFF ИЗКЛ - - + + Local Peer Discovery support: %1 Поддръжка на откриване на местни участници: %1 - + Restart is required to toggle Peer Exchange (PeX) support Изисква се рестартиране за превключване на поддръжка на размяна на участници (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Неуспешно продължение на торент. Торент: "%1". Причина: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Неуспешно продължение на торент: непостоянен торент ИД е засечен. Торент: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Засечени непостоянни данни: категория липсва от конфигурационният файл. Категория ще бъде възстановена, но нейните настройки ще бъдат върнати към по-подразбиране. Торент: "%1". Категория: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Засечени непостоянни данни: невалидна категория. Торент: "%1". Категория: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Засечено несъответствие между пътищата на запазване на възстановената категория и текущият път на запазване на торента. Торента сега е превключен в ръчен режим. Торент: "%1". Категория: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Засечени непостоянни данни: категория липсва от конфигурационният файл. Категория ще бъде възстановена Торент: "%1". Категория: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Засечени непостоянни данни: невалидна категория. Торент: "%1". Категория: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" ID на участника: "%1" - + HTTP User-Agent: "%1" HTTP потребителски-агент: "%1" - + Peer Exchange (PeX) support: %1 Поддръжка на размяна на участници (PeX): %1 - - + + Anonymous mode: %1 Анонимен режим: %1 - - + + Encryption support: %1 Поддръжка на шифроване: %1 - - + + FORCED ПРИНУДЕНО - + Could not find GUID of network interface. Interface: "%1" Не можа да се намери GUID на мрежов интерфейс. Интерфейс: "%1" - + Trying to listen on the following list of IP addresses: "%1" Опит за прослушване на следният списък на ИП адреси: "%1" - + Torrent reached the share ratio limit. Торент достигна ограничението на съотношение за споделяне. - - - + Torrent: "%1". Торент: "%1". - - - Removed torrent. - Премахнат торент. + Премахнат торент. - - - Removed torrent and deleted its content. - Премахнат торент и изтрито неговото съдържание. + Премахнат торент и изтрито неговото съдържание. - - - Torrent paused. - Торент в пауза. + Торент в пауза. - - - + Super seeding enabled. Супер засяване разрешено. - + Torrent reached the seeding time limit. Торент достигна ограничението на време за засяване. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" Неуспешно зареждане на торент. Причина: "%1" - + I2P error. Message: "%1". - Downloading torrent, please wait... Source: "%1" - Сваляне на торент, моля изчакайте... Източник: "%1" + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP поддръжка: ВКЛ - Failed to load torrent. Source: "%1". Reason: "%2" - Неуспешно зареждане на торент. Източник: "%1". Причина: "%2" + + Saving resume data completed. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP поддръжка: ВКЛ + + BitTorrent session successfully finished. + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP поддръжка: ИЗКЛ + + Session shutdown timed out. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Неуспешно изнасяне на торент. Торент: "%1". Местонахождение: "%2". Причина: "%3" + + Removing torrent. + - - Aborted saving resume data. Number of outstanding torrents: %1 - Прекратено запазване на данните за продължение. Брой неизпълнени торенти: %1 + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + - System network status changed to %1 - e.g: System network status changed to ONLINE - Състоянието на мрежата на системата се промени на %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + - ONLINE - НА ЛИНИЯ + + Merging of trackers is disabled + - OFFLINE - ИЗВЪН ЛИНИЯ + + Trackers cannot be merged because it is a private torrent + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Мрежовата конфигурация на %1 е била променена, опресняване на сесийното обвързване + + Trackers are merged from new source + - + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP поддръжка: ИЗКЛ + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Неуспешно изнасяне на торент. Торент: "%1". Местонахождение: "%2". Причина: "%3" + + + + Aborted saving resume data. Number of outstanding torrents: %1 + Прекратено запазване на данните за продължение. Брой неизпълнени торенти: %1 + + + The configured network address is invalid. Address: "%1" Конфигурираният мрежов адрес е невалиден. Адрес: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Неуспешно намиране на конфигурираният мрежов адрес за прослушване. Адрес: "%1" - + The configured network interface is invalid. Interface: "%1" Конфигурираният мрежов интерфейс е невалиден. Интерфейс: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Отхвърлен невалиден ИП адрес при прилагане на списъкът на забранени ИП адреси. ИП: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Добавен тракер към торент. Торент: "%1". Тракер: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Премахнат тракер от торент. Торент: "%1". Тракер: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Добавено URL семе към торент. Торент: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Премахнато URL семе от торент. Торент: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Торент в пауза. Торент: "%1" + Торент в пауза. Торент: "%1" - + Torrent resumed. Torrent: "%1" Торент продължен. Торент: "%1" - + Torrent download finished. Torrent: "%1" Сваляне на торент приключено. Торент: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Преместване на торент прекратено. Торент: "%1". Източник: "%2". Местонахождение: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Неуспешно нареден на опашка за преместване торент. Торент: "%1". Източник "%2". Местонахождение: "%3". Причина: торента понастоящем се премества към местонахождението - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Неуспешно нареден на опашка за преместване торент. Торент: "%1". Източник "%2". Местонахождение: "%3". Причина: двете пътища сочат към същото местоположение - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Нареден на опашка за преместване торент. Торент: "%1". Източник "%2". Местонахождение: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Започнато преместване на торент. Торент: "%1". Местонахождение: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Не можа да се запази Категории конфигурация. Файл: "%1". Грешка: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Не можа да се анализира Категории конфигурация. Файл: "%1". Грешка: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Рекурсивно сваляне на .torrent файл в торента. Торент-източник: "%1". Файл: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Неуспешно зареждане на .torrent файл в торента. Торент-източник: "%1". Файл: "%2". Грешка: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Успешно анализиран файлът за ИП филтър. Брой на приложени правила: %1 - + Failed to parse the IP filter file Неуспешно анализиране на файлът за ИП филтър - + Restored torrent. Torrent: "%1" Възстановен торент. Торент: "%1" - + Added new torrent. Torrent: "%1" Добавен нов торент. Торент: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Грешка в торент. Торент: "%1". Грешка: "%2" - - Removed torrent. Torrent: "%1" - Премахнат торент. Торент: "%1" + Премахнат торент. Торент: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Премахнат торент и изтрито неговото съдържание. Торент: "%1" + Премахнат торент и изтрито неговото съдържание. Торент: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Сигнал за грешка на файл. Торент: "%1". Файл: "%2". Причина: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP пренасочване на портовете неуспешно. Съобщение: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP пренасочването на портовете успешно. Съобщение: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP филтър - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 ограничения за смесен режим - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 е забранен - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 е забранен - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Търсенето на URL засяване неуспешно. Торент: "%1". URL: "%2". Грешка: "%3" + Търсенето на URL засяване неуспешно. Торент: "%1". URL: "%2". Грешка: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Получено съобщение за грешка от URL засяващ. Торент: "%1". URL: "%2". Съобщение: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Успешно прослушване на ИП. ИП: "%1". Порт: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Неуспешно прослушване на ИП. ИП: "%1". Порт: "%2/%3". Причина: "%4" - + Detected external IP. IP: "%1" Засечен външен ИП. ИП: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Грешка: Вътрешната опашка за тревоги е пълна и тревогите са отпаднали, можете да видите понижена производителност. Отпаднали типове на тревога: "%1". Съобщение: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Преместване на торент успешно. Торент: "%1". Местонахождение: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Неуспешно преместване на торент. Торент: "%1". Източник: "%2". Местонахождение: "%3". Причина: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Операция прекратена - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Неуспешно създаване на нов торент файл. Причина: %1 + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Операция прекратена + Операция прекратена + + Create new torrent file failed. Reason: %1. - Неуспешно създаване на нов торент файл. Причина: %1 + Неуспешно създаване на нов торент файл. Причина: %1 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Неуспешно добавяне на участник "%1" към торент "%2". Причина: %3 - + Peer "%1" is added to torrent "%2" Участник "%1" е добавен на торент "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Не можа да се запише към файл. Причина: "%1". Торента сега е в "само качване" режим. - + Download first and last piece first: %1, torrent: '%2' Изтеглете първо първото и последното парче: %1, торент: '%2' - + On Включено - + Off Изключено - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Генериране на данни за продължение неуспешно. Торент: "%1". Причина: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Неуспешно продължаване на торент. Файлове вероятно са преместени или съхранение не е достъпно. Торент: "%1". Причина: "%2". - + Missing metadata Липсващи метаданни - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Неуспешно преименуване на файл. Торент: "%1", файл: "%2", причина: "%3" - + Performance alert: %1. More info: %2 Сигнал за производителност: %1. Повече инфо: %2 @@ -2728,184 +2815,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Параметър '%1' трябва да следва синтаксиса '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Параметър '%1' трябва да следва синтаксиса '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Очаква се цяло число в променливата от средата '%1', но се получи '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Параметър '%1' трябва да следва синтаксиса '%1=%2' + Параметър '%1' трябва да следва синтаксиса '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Очаква се %1 променливата от средата '%2', но се получи '%3' - - + + %1 must specify a valid port (1 to 65535). %1 трябва да задава валиден порт (1 до 65535) - + Usage: Ползване: - + [options] [(<filename> | <url>)...] [опции] [(<filename> | <url>)...] - + Options: Настройки: - + Display program version and exit Показване на версията на програмата и изход - + Display this help message and exit Показване на това помощно съобщение и изход - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Параметър '%1' трябва да следва синтаксиса '%1=%2' + + + + Confirm the legal notice + + + + + port порт - - Change the Web UI port - Променяне на порта на Уеб ПИ + + Change the WebUI port + - + Change the torrenting port Смени портът на торентиране - + Disable splash screen Деактивиране на начален екран - + Run in daemon-mode (background) Стартиране в режим на услуга (фонов процес) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Съхранение на конфигурационните файлове в <dir> - - + + name име - + Store configuration files in directories qBittorrent_<name> Съхранение на конфигурационните файлове в директории qBittorent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Намеса във файловете за бързо подновяване на ЛибТорент и редактиране директориите като относителни към директорията на профила - + files or URLs файлове или URL-и - + Download the torrents passed by the user Сваля торентите дадени от потребителя. - + Options when adding new torrents: Опции, когато се добавят нови торенти: - + path път - + Torrent save path Път на запис на торент - + + Add torrents as running or stopped + + + Add torrents as started or paused - Добавяне на торентите стартирани или в пауза. + Добавяне на торентите стартирани или в пауза. - + Skip hash check Пропусни хеш проверка - + Assign torrents to category. If the category doesn't exist, it will be created. Свързване на торенти към категория. Ако категорията не съществува ще бъде създадена. - + Download files in sequential order Сваляне в последователен ред - + Download first and last pieces first Сваляне първо на първото и последното парче - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Определяне дали диалога 'Добавяне на Нов Торент' се отваря, когато се добави торент. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Стойности могат да бъдат въведени и като променливи на средата. За опция с име 'parameter-name' променливата на средата би била 'QBT_PARAMETER_NAME' (всичко с главни букви и '_' вместо '-'). За отбелязване на флагове задайте променливата като '1' или 'TRUE'. Например за скриване на началния екран при стартиране: - + Command line parameters take precedence over environment variables Параметрите от командния ред са приоритетни пред променливите от средата - + Help Помощ @@ -2913,17 +3014,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Категории - + All Всички - + Uncategorized Некатегоризирани @@ -2957,13 +3058,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Продължаване на торентите + Start torrents + + Stop torrents + + + + Resume torrents + Продължаване на торентите + + Pause torrents - Пауза на торентите + Пауза на торентите @@ -2974,15 +3083,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset Нулиране + + + System + + CookiesDialog @@ -3023,12 +3137,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3036,7 +3150,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3055,23 +3169,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Също изтрий за постоянно файловете + Също изтрий за постоянно файловете - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Сигурни ли сте, че искате да изтриете '%1' от списъка за трансфер? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Сигурни ли сте, че искате да изтриете тези %1 торенти от списъка за трансфер? - + Remove Премахни @@ -3084,12 +3202,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Сваляне от URL - + Add torrent links Добави торент връзки - + One link per line (HTTP links, Magnet links and info-hashes are supported) По една връзка на ред (поддържат се HTTP връзки, магнитни връзки и инфо-хешове) @@ -3099,12 +3217,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Изтегли - + No URL entered Няма въведен URL - + Please type at least one URL. Моля, въведете поне един URL @@ -3264,63 +3382,86 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - Торентът вече съществува + Торентът вече съществува + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торент '%1' вече е в списъка за трансфер. Искате ли да обедините тракери от нов източник? + Торент '%1' вече е в списъка за трансфер. Искате ли да обедините тракери от нов източник? GeoIPDatabase - - + + Unsupported database file size. Неподдържан размер за файл на базата данни. - + Metadata error: '%1' entry not found. Грешка в метаинформацията: '%1' елемент не е намерен. - + Metadata error: '%1' entry has invalid type. Грешка в метаинформацията: '%1' елемент има невалиден тип. - + Unsupported database version: %1.%2 Неподдържана версия на базата данни: %1.%2 - + Unsupported IP version: %1 Неподдържана IP версия: %1 - + Unsupported record size: %1 Неподдържан размер на запис: %1 - + Database corrupted: no data section found. Базата данни е развалена: няма намерена информационна секция. @@ -3328,17 +3469,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http размера на заявка надхвърля ограничение, затваряне на гнездо. Ограничение: %1, ИП: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Лоша Http заявка, затваряне на гнездо. ИП: %1 @@ -3379,36 +3520,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Преглед... - + Reset Нулиране - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + Юридическа бележка + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent е програма за обмяна на файлове. Когато стартирате торент, данните му ще са достъпни за останалите посредством споделяне. Носите персонална отговорност за всяка информация, която споделяте. + + + + No further notices will be issued. + Последващи предупреждения няма да бъдат правени. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 бе блокиран. Причина: %2. - + %1 was banned 0.0.0.0 was banned %1 бе баннат @@ -3417,91 +3586,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 е непознат параметър на командния ред. - - + + %1 must be the single command line parameter. %1 трябва да бъде единствен параметър на командния ред. - - You cannot use %1: qBittorrent is already running for this user. - Не можете да използвате %1: qBittorrent вече работи за този потребител. - - - + Run application with -h option to read about command line parameters. Стартирайте програмата с параметър -h, за да получите информация за параметрите на командния ред. - + Bad command line Некоректен команден ред - + Bad command line: Некоректен команден ред: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Юридическа бележка - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent е програма за обмяна на файлове. Когато стартирате торент, данните му ще са достъпни за останалите посредством споделяне. Носите персонална отговорност за всяка информация, която споделяте. - - - - No further notices will be issued. - Последващи предупреждения няма да бъдат правени. - - - - Press %1 key to accept and continue... - Натиснете клавиш %1, че приемате и за продължение... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent е програма за обмяна на файлове. Когато стартирате торент, данните му ще са достъпни за останалите посредством споделяне. Носите персонална отговорност за всяка информация, която споделяте. - -Последващи предупреждения няма да бъдат правени. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Юридическа бележка + + Another qBittorrent instance is already running. + - - Cancel - Отказване + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Съгласен съм + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3512,621 +3652,706 @@ No further notices will be issued. &Редактирай - + &Tools &Инструменти - + &File &Файл - + &Help &Помощ - + On Downloads &Done При &Приключване на Свалянията: - + &View &Оглед - + &Options... &Опции... - &Resume - &Пауза + &Пауза - + &Remove &Премахни - + Torrent &Creator Торент &Създател - - + + Alternative Speed Limits Алтернативни Лимити за Скорост - + &Top Toolbar &Горна Лента с Инструменти - + Display Top Toolbar Показване на Горна Лента с Инструменти - + Status &Bar Статус &Лента - + Filters Sidebar Странична лента на филтри - + S&peed in Title Bar С&корост в Заглавната Лента - + Show Transfer Speed in Title Bar Показване на Скорост на Трансфер в Заглавната Лента - + &RSS Reader &RSS Четец - + Search &Engine Програма за &Търсене - + L&ock qBittorrent З&аключи qBittorrent - + Do&nate! Да&ри! - + + Sh&utdown System + + + + &Do nothing &Не прави нищо - + Close Window Затвори прозореца - R&esume All - П&ауза Всички + П&ауза Всички - + Manage Cookies... Управление на Бисквитките... - + Manage stored network cookies Управление на запазените мрежови бисквитки - + Normal Messages Нормални Съобщения - + Information Messages Информационни Съобщения - + Warning Messages Предупредителни Съобщения - + Critical Messages Критични Съобщения - + &Log &Журнал - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Задаване на глобални ограничения на скоростта... - + Bottom of Queue Най-отдолу в опашката - + Move to the bottom of the queue Премести в дъното на опашката - + Top of Queue Най-горната част на опашката - + Move to the top of the queue Преместети в началото на опашката - + Move Down Queue Премести надолу - + Move down in the queue Премести надолу в опашката - + Move Up Queue Премести нагоре - + Move up in the queue Преместване нагоре в опашката - + &Exit qBittorrent &Изход от qBittorrent - + &Suspend System &Приспиване на Системата - + &Hibernate System &Хибернация на Системата - S&hutdown System - И&зклюване на Системата + И&зклюване на Системата - + &Statistics &Статистики - + Check for Updates Проверка за Обновления - + Check for Program Updates Проверка за Обновяване на Програмата - + &About &Относно - &Pause - &Пауза + &Пауза - P&ause All - П&ауза Всички + П&ауза Всички - + &Add Torrent File... &Добавяне Торент Файл... - + Open Отваряне - + E&xit И&зход - + Open URL Отваряне URL - + &Documentation &Документация - + Lock Заключване - - - + + + Show Покажи - + Check for program updates Проверка за обновления на програмата - + Add Torrent &Link... Добавяне &Линк на Торент - + If you like qBittorrent, please donate! Ако ви харесва qBittorrent, моля дарете! - - + + Execution Log Изпълнение на Запис - + Clear the password Изчистване на паролата - + &Set Password &Задаване на Парола - + Preferences Предпочитания - + &Clear Password &Изчистване на Парола - + Transfers Трансфери - - + + qBittorrent is minimized to tray qBittorrent е минимизиран в трея - - - + + + This behavior can be changed in the settings. You won't be reminded again. Това поведение може да се промени в настройките. Няма да ви се напомня отново. - + Icons Only Само Икони - + Text Only Само Текст - + Text Alongside Icons Текст Успоредно с Икони - + Text Under Icons Текст Под Икони - + Follow System Style Следване на Стила на Системата - - + + UI lock password Парола за потребителски интерфейс - - + + Please type the UI lock password: Моля въведете парола за заключване на потребителския интерфейс: - + Are you sure you want to clear the password? Наистина ли искате да изчистите паролата? - + Use regular expressions Ползване на регулярни изрази - - Search - Търси + + + Search Engine + Търсачка - - Transfers (%1) - Трансфери (%1) + + Search has failed + Търсенето бе неуспешно - Recursive download confirmation - Допълнително потвърждение за сваляне + + Search has finished + Търсенето завърши - Never - Никога + + Search + Търси + + + + Transfers (%1) + Трансфери (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent току-що бе обновен и има нужда от рестарт, за да влязат в сила промените. - + qBittorrent is closed to tray qBittorrent е затворен в трея - + Some files are currently transferring. Няколко файлове в момента се прехвърлят. - + Are you sure you want to quit qBittorrent? Сигурни ли сте, че искате на излезете от qBittorent? - + &No &Не - + &Yes &Да - + &Always Yes &Винаги Да - + Options saved. Опциите са запазени. - %1/s - s is a shorthand for seconds - %1/с + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Липсва Python Runtime - + qBittorrent Update Available Обновление на qBittorrent е Налично - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python е необходим за употребата на търсачката, но изглежда не е инсталиран. Искате ли да го инсталирате сега? - + Python is required to use the search engine but it does not seem to be installed. Python е необходим за употребата на търсачката, но изглежда не е инсталиран. - - + + Old Python Runtime Остарял Python Runtime - + A new version is available. Налична е нова версия. - + Do you want to download %1? Искате ли да изтеглите %1? - + Open changelog... Отваряне списък с промените... - + No updates available. You are already using the latest version. Няма обновления. Вече използвате последната версия. - + &Check for Updates &Проверка за Обновление - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Вашата Python версия (%1) е остаряла. Минимално изискване: %2. Искате ли да инсталирате по-нова версия сега? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Вашата Python версия (%1) е остаряла. Моля надстройте до най-нова версия за да работят търсачките. Минимално изискване: %2. - + + Paused + В Пауза + + + Checking for Updates... Проверяване за Обновление... - + Already checking for program updates in the background Проверката за обновления на програмата вече е извършена - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Грешка при сваляне - Python setup could not be downloaded, reason: %1. Please install it manually. - Инсталаторът на Python не може да се свали, причина: %1. + Инсталаторът на Python не може да се свали, причина: %1. Моля инсталирайте го ръчно. - - + + Invalid password Невалидна парола - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long Паролата трябва да бъде поне 3 символи дълга - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торентът '%'1 съдържа .torrent файлове, искате ли да продължите с техните сваляния? - - - + The password is invalid Невалидна парола - + DL speed: %1 e.g: Download speed: 10 KiB/s СВ скорост: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s КЧ скорост: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [С: %1, К: %2] qBittorrent %3 - - - + Hide Скрий - + Exiting qBittorrent Напускам qBittorrent - + Open Torrent Files Отвори Торент Файлове - + Torrent Files Торент Файлове @@ -4187,133 +4412,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 В/И грешка: %1 - + The file size (%1) exceeds the download limit (%2) Файловият размер (%1) надхвърля ограничението за изтегляне (%2) - + Exceeded max redirections (%1) Превишени максимални пренасочвания (%1) - + Redirected to magnet URI Пренасочено към магнитен URI - + The remote host name was not found (invalid hostname) Името на отдалечения хост не бе намерено (невалидно име на хост) - + The operation was canceled Операцията бе прекъсната - + The remote server closed the connection prematurely, before the entire reply was received and processed Отдалечения сървър затвори връзката преждевременно, преди пълният отговор да е получен и обработен - + The connection to the remote server timed out Времето за връзка към отдалечения сървър изтече - + SSL/TLS handshake failed Неуспешно SSL/TLS уговаряне - + The remote server refused the connection Отдалеченият сървър отхвърли връзката - + The connection to the proxy server was refused Връзката с прокси сървъра бе отхвърлена - + The proxy server closed the connection prematurely Прокси сървърът затвори връзката преждевременно - + The proxy host name was not found Името на прокси хоста не бе намерено - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Времето за връзка с проксито изтече или проксито не отговори своевременно на изпратеното запитване - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Проксито изисква удостоверяване, за да уважи запитването, но не прие никакви предложени акредитации - + The access to the remote content was denied (401) Достъпът до отдалеченото съдържание бе отказан (401) - + The operation requested on the remote content is not permitted Изискваната операция върху отдалеченото съдържание не е позволена - + The remote content was not found at the server (404) Отдалеченото съдържание не бе намерено на сървъра (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Отдалеченият сървър изисква удостоверяване, за да предостави съдържанието, но дадените акредитации не бяха приети - + The Network Access API cannot honor the request because the protocol is not known API-то за мрежов достъп не може да уважи запитването, защото протокола е непознат - + The requested operation is invalid for this protocol Изискваната операция е невалидна за този протокол - + An unknown network-related error was detected Установена е неизвестна грешка свързана с мрежата - + An unknown proxy-related error was detected Непозната свързана с проксито грешка бе установена - + An unknown error related to the remote content was detected Непозната свързана със отдалеченото съдържание грешка бе установена - + A breakdown in protocol was detected Повреда в протокола бе установена - + Unknown error Непозната грешка @@ -4321,7 +4546,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Пренебрегване SSL грешка, URL: "%1", грешки: "%2" @@ -5693,294 +5923,295 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Уеб ПИ + Уеб ПИ - + Advanced Разширени - + Customize UI Theme... - + Transfer List Трансферен Списък - + Confirm when deleting torrents Потвърждаване при изтриването на торенти - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Ползвай различно оцветени редове - + Hide zero and infinity values Скриване на нулата и безкрайните стойности - + Always Винаги - Paused torrents only - Само торентите в пауза + Само торентите в пауза - + Action on double-click Действие при двойно щракване - + Downloading torrents: Сваляне на торенти: - - Start / Stop Torrent - Пускане / Спиране Торент + Пускане / Спиране Торент - - + + Open destination folder Отваряне на съдържащата директория - - + + No action Без действие - + Completed torrents: Завършени торенти: - + Auto hide zero status filters - + Desktop Десктоп - + Start qBittorrent on Windows start up Стартирай qBittorrent със стартирането на Windows - + Show splash screen on start up Покажи начален екран при стартиране - + Confirmation on exit when torrents are active Потвърждаване при изход, когато има активни торенти. - + Confirmation on auto-exit when downloads finish Потвърждение при авто-изход, когато свалящите се приключат - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KB - + Torrent content layout: Оформление на съдържанието на торента: - + Original Оригинал - + Create subfolder Създай подпапка - + Don't create subfolder Не създавай подпапка - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Добавяне... - + Options.. Опции... - + Remove Премахни - + Email notification &upon download completion Уведомяване с имейл &при завършване на свалянето - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Протокол за връзка с участника: - + Any Всякакви - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering IP Фи&лтриране - + Schedule &the use of alternative rate limits График на &използването на алтернативни пределни скорости - + From: From start time От: - + To: To end time До: - + Find peers on the DHT network Намиране на пиъри в DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5989,140 +6220,188 @@ Disable encryption: Only connect to peers without protocol encryption Забрани шифроване: Свързвай се само с участници без шифроване на протокола - + Allow encryption Позволи криптиране - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Повече информация</a>) - + Maximum active checking torrents: Максимум активни проверки на торент: - + &Torrent Queueing &Нареждане на Oпашка на Торенти - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - Автоматично добавяне на тези тракери към нови сваляния: + Автоматично добавяне на тези тракери към нови сваляния: - + RSS Reader RSS Четец - + Enable fetching RSS feeds Включване получаването от RSS канали. - + Feeds refresh interval: Интервал за опресняване на каналите: - + + Same host request delay: + + + + Maximum number of articles per feed: Максимален брой на статии за канал: - - - + + + min minutes мин - + Seeding Limits Лимит за качване - - Pause torrent - Пауза на торент + Pause torrent + Пауза на торент + + + + Remove torrent + Премахни торент + + + + Remove torrent and its files + Премахване на торент и неговите файлове + + + + Enable super seeding for torrent + Разреши супер сийд за торент + + + + When ratio reaches + Когато съотношението достигне + + + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + - - Remove torrent - Премахни торент + + Search UI + - - Remove torrent and its files - Премахване на торент и неговите файлове + + Store opened tabs + - - Enable super seeding for torrent - Разреши супер сийд за торент + + Also store search results + - - When ratio reaches - Когато съотношението достигне + + History length + - + RSS Torrent Auto Downloader RSS Торентов Авто Сваляч - + Enable auto downloading of RSS torrents Включване на автоматичното сваляне на RSS торенти - + Edit auto downloading rules... Редактиране на правилата за автоматично сваляне... - + RSS Smart Episode Filter RSS Разумен Филтър на Епизоди - + Download REPACK/PROPER episodes Изтегли REPACK/PROPER епизоди - + Filters: Филтри: - + Web User Interface (Remote control) Потребителски Уеб Интерфейс (Отдалечен контрол) - + IP address: IP адрес: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6131,42 +6410,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv "::" за всеки IPv6 адрес, или "*" за двата IPv4 или IPv6. - + Ban client after consecutive failures: Банни клиент след последователни провали: - + Never Никога - + ban for: забрана за: - + Session timeout: Изтекла сесия: - + Disabled Забранено - Enable cookie Secure flag (requires HTTPS) - Разреши флаг за сигурност на бисквитка (изисква HTTPS) + Разреши флаг за сигурност на бисквитка (изисква HTTPS) - + Server domains: Сървърни домейни: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6175,442 +6453,495 @@ Use ';' to split multiple entries. Can use wildcard '*'.Списък с разрешени за филтриране стойности на HTTP хост хедъри. За защита срещу атака "ДНС повторно свързване" въведете тук домейните използвани от Уеб ПИ сървъра. Използвайте ';' за разделител. Може да се използва и заместител '*'. - + &Use HTTPS instead of HTTP &Използване на HTTPS вместо HTTP - + Bypass authentication for clients on localhost Заобиколи удостоверяването на клиенти от localhost - + Bypass authentication for clients in whitelisted IP subnets Заобиколи удостоверяването на клиенти от позволените IP подмрежи - + IP subnet whitelist... Позволени IP подмрежи... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Посочете ИП-та на обратно прокси (или подмрежи, напр. 0.0.0.0/24), за да използвате препратени клиент адреси (X-Препратени-За заглавка). Използвайте ';' да разделите множество вписвания. - + Upda&te my dynamic domain name Обнови моето динамично име на домейн - + Minimize qBittorrent to notification area Минимизиране на qBittorrent в зоната за уведомяване - + + Search + + + + + WebUI + + + + Interface Интерфейс - + Language: Език: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Стил на иконата в лентата: - - + + Normal Нормален - + File association Файлови асоциации - + Use qBittorrent for .torrent files Използване на qBittorrent за торент файлове - + Use qBittorrent for magnet links Използване на qBittorrent за магнитни връзки - + Check for program updates Проверка за обновления на програмата - + Power Management Управление на Енергията - + + &Log Files + + + + Save path: Местоположение за запис: - + Backup the log file after: Резервно копие на лог файла след: - + Delete backup logs older than: Изтриване на резервните копия на лог файловете по-стари от: - + + Show external IP in status bar + + + + When adding a torrent При добавяне на торент - + Bring torrent dialog to the front Изнасяне на диалога за добавяне на торент най-отпред - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Също изтриване на .torrent файловете, чието добавяне е било отказано - + Also when addition is cancelled Също, когато добавянето е отказано - + Warning! Data loss possible! Предупреждение! Загуба на информация е възможна! - + Saving Management Управление на Съхранението - + Default Torrent Management Mode: Торентов Режим на Управление по подразбиране: - + Manual Ръчно - + Automatic Автоматично - + When Torrent Category changed: Когато Категорията на Торента се промени: - + Relocate torrent Преместване на торента - + Switch torrent to Manual Mode Превключване на торента към Ръчен Режим - - + + Relocate affected torrents Преместване на засегнатите торенти - - + + Switch affected torrents to Manual Mode Превключване на засегнатите торенти в Ръчен Режим - + Use Subcategories Използване на Под-категории - + Default Save Path: Местоположение за Запис по подразбиране: - + Copy .torrent files to: Копирай .торент файловете в: - + Show &qBittorrent in notification area Показване на &qBittorrent в зоната за уведомяване - &Log file - &Лог файл + &Лог файл - + Display &torrent content and some options Показване съдържание на &торента и някои опции - + De&lete .torrent files afterwards Из&триване на .torrent файловете след това - + Copy .torrent files for finished downloads to: Копирай .torrent файловете от приключилите изтегляния в: - + Pre-allocate disk space for all files Преразпредели дисково пространство за всички файлове - + Use custom UI Theme Ползвай персонализирана ПИ тема - + UI Theme file: ПИ тема файл: - + Changing Interface settings requires application restart Смяната на интерфейсни настройки изисква рестартиране на приложение - + Shows a confirmation dialog upon torrent deletion Показва диалог за потвърждение при изтриването на торента - - + + Preview file, otherwise open destination folder Прегледай файл, иначе отвори папката на местонахождение - - Show torrent options - Покажи торент опции + Покажи торент опции - + Shows a confirmation dialog when exiting with active torrents Показва диалог за потвърждение, когато се излиза с активни торенти - + When minimizing, the main window is closed and must be reopened from the systray icon Когато се минимизира, главният прозорец е затворен и трябва да бъде отворен наново от систрей иконата - + The systray icon will still be visible when closing the main window Систрей иконата все още ще бъде видима, когато се затвори главният прозорец - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Затваряне на qBittorrent в зоната за уведомяване - + Monochrome (for dark theme) Едноцветно (Тъмна тема) - + Monochrome (for light theme) Едноцветно (Светла тема) - + Inhibit system sleep when torrents are downloading Попречи на системата да заспи, когато има изтеглящи се торенти - + Inhibit system sleep when torrents are seeding Попречи на системата да заспи, когато има споделящи се торенти - + Creates an additional log file after the log file reaches the specified file size Създава допълнителен лог файл, след като лог файлът достигне посочения файлов размер - + days Delete backup logs older than 10 days дни - + months Delete backup logs older than 10 months месеци - + years Delete backup logs older than 10 years години - + Log performance warnings Вписвай предупреждения за производителност - The torrent will be added to download list in a paused state - Торентът ще бъде добавен към списъка за изтегляне в състояние на пауза + Торентът ще бъде добавен към списъка за изтегляне в състояние на пауза - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Не стартирай свалянето автоматично - + Whether the .torrent file should be deleted after adding it Дали .torrent файлът трябва да бъде изтрит след добавянето му - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Задели пълните файлови размери на диск преди започване на изтегляния, да се минимизира фрагментацията. Полезно е само за HDD-та. - + Append .!qB extension to incomplete files Добави .!qB разширение към незавършени файлове - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it След като торент е изтеглен, предложи да се добавят торенти от всякакви .torrent файлове намерени вътре - + Enable recursive download dialog Разреши диалог за рекурсивно изтегляне - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Автоматичен: Разни торентни свойства (напр. пътя на запазване) ще бъде решен от асоциираната категория Ръчен: Разни торентни свойства (напр. пътя на запазване) трябва да бъдат възложени ръчно - + When Default Save/Incomplete Path changed: Когато местоположението за запис по-подразбиране/непълен път се промени: - + When Category Save Path changed: Когато пътя за запазване на категория се промени: - + Use Category paths in Manual Mode Използвай Категория пътища в ръчен режим - + Resolve relative Save Path against appropriate Category path instead of Default one Решавай относителен път на запазване срещу подходящ път на категория вместо такъв по подразбиране - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: Условие за спиране на торент: - - + + None Няма - - + + Metadata received Метаданни получени - - + + Files checked Файлове проверени - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: Използвай друг път за незавършени торенти: - + Automatically add torrents from: Автоматично добави торенти от: - + Excluded file names Изключи файлови имена - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6639,841 +6970,914 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not прочетиме[0-9].txt: 'прочетиме1.txt', 'прочетиме2.txt' но не 'прочетиме10.txt'. - + Receiver Приемник - + To: To receiver До: - + SMTP server: SMTP сървър: - + Sender Изпращач - + From: From sender От: - + This server requires a secure connection (SSL) Този сървър изисква защитена връзка (SSL) - - + + Authentication Удостоверяване - - - - + + + + Username: Име на потребителя: - - - - + + + + Password: Парола: - + Run external program Изпълни външна програма - Run on torrent added - Изпълни на добавен торент + Изпълни на добавен торент - Run on torrent finished - Изпълни на приключен торент + Изпълни на приключен торент - + Show console window Покажи конзолен прозорец - + TCP and μTP TCP и μTP - + Listening Port Порт за слушане - + Port used for incoming connections: Порт ползван за входящи връзки: - + Set to 0 to let your system pick an unused port Задайте на 0, за да позволите на вашата система да избере неизползван порт - + Random Приблизително - + Use UPnP / NAT-PMP port forwarding from my router Използване на UPnP / NAT-PMP порт за препращане от моя рутер - + Connections Limits Ограничения на Връзките - + Maximum number of connections per torrent: Максимален брой връзки на торент: - + Global maximum number of connections: Общ максимален брой на връзки: - + Maximum number of upload slots per torrent: Максимален брой слотове за качване на торент: - + Global maximum number of upload slots: Глобален максимален брой слотове за качване: - + Proxy Server Прокси Сървър - + Type: Тип: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Хост: - - - + + + Port: Порт: - + Otherwise, the proxy server is only used for tracker connections В противен случай, прокси сървъра се използва само за връзки с тракера - + Use proxy for peer connections Използвайте прокси за свързване между участниците - + A&uthentication У&достоверяване - + Info: The password is saved unencrypted Информация: Паролата е запазена некриптирана - + Filter path (.dat, .p2p, .p2b): Филтър път (.dat, .p2p, .p2b): - + Reload the filter Зареди повторно филтъра - + Manually banned IP addresses... Ръчно блокирани IP адреси... - + Apply to trackers Прилагане към тракери - + Global Rate Limits Общи Пределни Скорости - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s КиБ/с - - + + Upload: Качване: - - + + Download: Сваляне: - + Alternative Rate Limits Алтернативни Пределни Скорости - + Start time Начален час - + End time Крайно час - + When: Когато: - + Every day Всеки ден - + Weekdays Дни през седмицата - + Weekends Почивни дни - + Rate Limits Settings Настройки на Пределни Скорости - + Apply rate limit to peers on LAN Прилагане на пределна скорост за участници от локалната мрежа - + Apply rate limit to transport overhead Прилагане на пределна скорост за пренатоварено пренасяне - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Прилагане на пределна скорост за µTP протокола - + Privacy Дискретност - + Enable DHT (decentralized network) to find more peers Активиране на DHT (децентрализирана мрежа) за намиране на повече участници - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Обмени участници със съвместими Bittorrent клиенти (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Активиране на Обмяна на Участници (PeX) за намиране на повече участници - + Look for peers on your local network Търси участници в твоята локална мрежа - + Enable Local Peer Discovery to find more peers Включи Откриване на Локални Участници за намиране на повече връзки - + Encryption mode: Режим на кодиране: - + Require encryption Изискване на кодиране - + Disable encryption Изключване на кодиране - + Enable when using a proxy or a VPN connection Активиране при използване на прокси или VPN връзка - + Enable anonymous mode Включи анонимен режим - + Maximum active downloads: Максимум активни сваляния: - + Maximum active uploads: Максимум активни качвания: - + Maximum active torrents: Максимум активни торенти: - + Do not count slow torrents in these limits Не изчислявай бавни торенти в тези лимити - + Upload rate threshold: Праг на скоростта на качване: - + Download rate threshold: Праг на скоростта на изтегляне: - - - + + + + sec seconds сек - + Torrent inactivity timer: Таймер за неактивност на торент: - + then тогава - + Use UPnP / NAT-PMP to forward the port from my router Изпозване на UPnP / NAT-PMP за препращане порта от моя рутер - + Certificate: Сертификат: - + Key: Ключ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Информация за сертификати</a> - + Change current password Промени текущата парола - Use alternative Web UI - Ползвай алтернативен Уеб ПИ + Ползвай алтернативен Уеб ПИ - + Files location: Местоположение на файловете: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Сигурност - + Enable clickjacking protection Разрежи защита от прихващане на щракване - + Enable Cross-Site Request Forgery (CSRF) protection Разреши Фалшифициране на заявки между сайтове (CSRF) защита - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Разреши потвърждаване на заглавната част на хоста - + Add custom HTTP headers Добави разширени HTTP заглавни части - + Header: value pairs, one per line Заглавна част: стойностни чифтове, един на ред - + Enable reverse proxy support Разреши поддръжка на обратно прокси - + Trusted proxies list: Списък на доверени прокси: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Услуга: - + Register Регистър - + Domain name: Домейн име: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Чрез активиране на тези опции, можете <strong>безвъзвратно да загубите</strong> вашите .torrent файлове! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Ако активирате втората опция (&ldquo;Също, когато добавянето е отказна&rdquo;) .torrent файлът <strong>ще бъде изтрит</strong> дори ако натиснете &ldquo;<strong>Отказ</strong>&rdquo; в диалога &ldquo;Добавяне торент&rdquo; - + Select qBittorrent UI Theme file Избиране на qBittorrent ПИ тема-файл - + Choose Alternative UI files location Избиране на алтернативно местоположение за ПИ файлове - + Supported parameters (case sensitive): Поддържани параметри (чувствителност към регистъра) - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence Забранен поради неуспех при засичане на присъствие на системен трей - + No stop condition is set. Не е зададено условие за спиране. - + Torrent will stop after metadata is received. Торента ще спре след като метаданни са получени. - - Torrents that have metadata initially aren't affected. - Торенти, които имат метаданни първоначално не са засегнати. - - - + Torrent will stop after files are initially checked. Торента ще спре след като файловете са първоначално проверени. - + This will also download metadata if it wasn't there initially. Това също ще свали метаданни, ако ги е нямало първоначално. - + %N: Torrent name %N: Име на торент - + %L: Category %L: Категория - + %F: Content path (same as root path for multifile torrent) %F: Местоположение на съдържанието (същото като местоположението на основната директория за торент с множество файлове) - + %R: Root path (first torrent subdirectory path) %R: Местоположение на основната директория (местоположението на първата поддиректория за торент) - + %D: Save path %D: Местоположение за запис - + %C: Number of files %C: Брой на файловете - + %Z: Torrent size (bytes) %Z: Размер на торента (байтове) - + %T: Current tracker %T: Сегашен тракер - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Подсказка: Обградете параметър с кавички за предотвратяваме орязването на текста при пауза (пр., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Без) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Торент ще бъде считан за бавен, ако скоростите му за изтегляне и качване стоят под тези стойности за "Таймер за неактивност на торент" секунди - + Certificate Сертификат - + Select certificate Избиране на сертификат - + Private key Частен ключ - + Select private key Избиране на частен ключ - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Избиране на директория за наблюдение - + Adding entry failed Добавянето на запис е неуспешно - - Location Error - Грешка в местоположението + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - Алтернативното местоположение за Уеб ПИ файлове не може да бъде празно. + + Location Error + Грешка в местоположението - - + + Choose export directory Избиране на директория за експорт - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Когато тези опции са активирани, qBittorent ще <strong>изтрие</strong> .torrent файловете след като са били успешно (първата опция) или не (втората опция) добавени към тяхната опашка за сваляне. Това ще бъде приложено <strong>не само</strong> върху файловете отворени чрез &ldquo;Добави торент&rdquo; действието в менюто, но и също така върху тези отворени чрез <strong>асоцииране по файлов тип</strong>. - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent ПИ файл тема (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Тагове (разделени чрез запетая) - + %I: Info hash v1 (or '-' if unavailable) %I: Инфо хеш в1 (или '-', ако недостъпен) - + %J: Info hash v2 (or '-' if unavailable) %J: Инфо хеш в2 (или '-', ако недостъпен) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Торент ИД (или sha-1 инфо хеш за в1 торент или пресечен sha-256 инфо хеш за в2/хибриден торент) - - - + + + Choose a save directory Избиране на директория за запис - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Избиране файл на IP филтър - + All supported filters Всички подържани филтри - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Грешка при обработване - + Failed to parse the provided IP filter Неуспешно обработване на дадения IP филтър - + Successfully refreshed Успешно обновен - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Успешно обработване на дадения IP филтър: %1 правила бяха приложени. - + Preferences Предпочитания - + Time Error Времева грешка - + The start time and the end time can't be the same. Времето на стартиране и приключване не може да бъде едно и също. - - + + Length Error Дължинна Грешка - - - The Web UI username must be at least 3 characters long. - Потребителското име на Web UI трябва да е поне от 3 символа. - - - - The Web UI password must be at least 6 characters long. - Паролата на Web UI трябва да е поне от 6 символа. - PeerInfo - + Unknown Неизвестен - + Interested (local) and choked (peer) Заинтересуван (местен) и запушен (участник) - + Interested (local) and unchoked (peer) Заинтересуван (местен) и незапушен (участник) - + Interested (peer) and choked (local) Заинтересуван (участник) и запушен (местен) - + Interested (peer) and unchoked (local) Заинтересуван (участник) и незапушен (местен) - + Not interested (local) and unchoked (peer) Незаинтересуван (местен) и незапушен (участник) - + Not interested (peer) and unchoked (local) Незаинтересуван (участник) и незапушен (местен) - + Optimistic unchoke Оптимистично отпушване - + Peer snubbed Сгушен участник - + Incoming connection Входяща връзка - + Peer from DHT Участник от DHT - + Peer from PEX Участник от PEX - + Peer from LSD Участник от LSD - + Encrypted traffic Шифрован трафик - + Encrypted handshake Шифровано уговаряне + + + Peer is using NAT hole punching + + PeerListWidget @@ -7629,7 +8033,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Участник "%1" е ръчно блокиран - + N/A Няма @@ -7652,7 +8056,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Списък на участниците за добавяне (едно ИП на ред): - + Format: IPv4:port / [IPv6]:port Формат: IPv4:порт / [IPv6]:порт @@ -7693,27 +8097,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Файлове в това парче: - + File in this piece: Файл в това парче: - + File in these pieces: Файл в тези парчета: - + Wait until metadata become available to see detailed information Изчакайте, докато мета информацията стане налична, за да видите подробна информация - + Hold Shift key for detailed information Задържете клавиша Shift за подробна информация @@ -7726,58 +8130,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Търсене на добавки - + Installed search plugins: Инсталирани добавки за търсене: - + Name Име - + Version Версия - + Url Url - - + + Enabled Разрешено - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Предупреждение: Не забравяйте да спазвате законите за авторското право на вашата страна, когато изтегляте торенти от някоя от тези търсачки. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Инсталиране само на нови - + Check for updates Провери за обновяване - + Close Затвари - + Uninstall Деинсталирай @@ -7897,17 +8301,17 @@ Those plugins were disabled. Източник на приставката - + Search plugin source: Източник на приставка за търсене: - + Local file Локален файл - + Web link Уеб линк @@ -7948,47 +8352,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Следните файлове от торент "%1" поддържат визуализация, моля изберете един от тях: - + Preview Преглед - + Name Име - + Size Размер - + Progress Напредък - + Preview impossible Прегледът е невъзможен - + Sorry, we can't preview this file: "%1". Съжаляваме, не можем да прегледаме този файл: "%1". - + Resize columns Преоразмери колони - + Resize all non-hidden columns to the size of their contents Преоразмери всички нескрити колони до размерът на техните съдържания @@ -8001,27 +8405,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Път не съществува - + Path does not point to a directory Път не сочи към директория - + Path does not point to a file Път не сочи към файл - + Don't have read permission to path Няма права за четене към път - + Don't have write permission to path Няма права за писане към път @@ -8062,12 +8466,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Свалени: - + Availability: Наличност: @@ -8082,53 +8486,53 @@ Those plugins were disabled. Трансфер - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Време на активност: - + ETA: Оставащо време: - + Uploaded: Качени: - + Seeds: Споделящи: - + Download Speed: Скорост на Сваляне: - + Upload Speed: Скорост на Качване: - + Peers: Участници: - + Download Limit: Ограничение на Сваляне: - + Upload Limit: Ограничение на Качване: - + Wasted: Изгубени: @@ -8138,193 +8542,249 @@ Those plugins were disabled. Връзки: - + Information Информация - + Info Hash v1: Инфо хеш v1: - + Info Hash v2: Инфо хеш v2: - + Comment: Коментар: - + Select All Избери всички - + Select None Не избирай - + Share Ratio: Съотношение на Споделяне: - + Reannounce In: Повторно анонсиране В: - + Last Seen Complete: Последно Видян Приключен: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Общ Размер: - + Pieces: Части: - + Created By: Създаден От: - + Added On: Добавен На: - + Completed On: Завършен На: - + Created On: Създаден На: - + + Private: + + + + Save Path: Местоположение за Запис: - + Never Никога - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (средно %3) - - + + %1 (%2 this session) %1 (%2 тази сесия) - - + + + N/A Няма - + + Yes + Да + + + + No + Не + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (споделян за %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 макс.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 общо) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 средно) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Ново Web споделяне + Ново Web споделяне - Remove Web seed - Изтриване на Web споделяне + Изтриване на Web споделяне - Copy Web seed URL - Копиране URL на Web споделяне + Копиране URL на Web споделяне - Edit Web seed URL - Редактиране URL на Web споделяне + Редактиране URL на Web споделяне - + Filter files... Филтриране на файловете... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Графиките на скоростта са изключени - + You can enable it in Advanced Options Можете да го разрешите в Разширени опции - New URL seed New HTTP source - Ново URL споделяне + Ново URL споделяне - New URL seed: - Ново URL споделяне: + Ново URL споделяне: - - This URL seed is already in the list. - Това URL споделяне е вече в списъка. + Това URL споделяне е вече в списъка. - + Web seed editing Редактиране на Web споделяне - + Web seed URL: URL на Web споделяне: @@ -8343,22 +8803,22 @@ Those plugins were disabled. Запазване данни на RSS АвтоСваляч в %1 неуспешно. Грешка: %2 - + Invalid data format Невалиден формат на данни - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Зареждане данни на RSS АвтоСваляч неуспешно. Причина: %1 @@ -8366,22 +8826,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Не мога да сваля RSS поток от %1. Причина: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS потока '%1' е успешно обновен. Добавени са %2 нови статии. - + Failed to parse RSS feed at '%1'. Reason: %2 Не мога да прочета RSS поток от %1. Причина: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS потока '%1' е успешно свален. Започване на прочитането му. @@ -8417,12 +8877,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Невалиден RSS канал. - + %1 (line: %2, column: %3, offset: %4). %1 (ред: %2, колона: %3, отместване: %4). @@ -8430,99 +8890,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Не можа да се запази конфигурация на RSS сесия. Файл: "%1". Грешка: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Не можаха да се запазят данни на RSS сесия. Файл: "%1". Грешка: "%2" - - + + RSS feed with given URL already exists: %1. RSS канала със зададения URL вече съществува: %1 - + Feed doesn't exist: %1. - + Cannot move root folder. Не може да се премести коренната директория. - - + + Item doesn't exist: %1. Елементът не съществува: %1 - + Couldn't move folder into itself. - + Cannot delete root folder. Не може да се изтрие коренната директория. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Не можа да се зареди RSS поток. Поток: "%1". Причина: URL се изисква. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Не можа да се зареди RSS поток. Поток: "%1". Причина: UID е невалиден. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Дублиран RSS поток намерен. UID: "%1". Грешка: Конфигурацията изглежда е повредена. - + Couldn't load RSS item. Item: "%1". Invalid data format. Не можа да се зареди RSS предмет. Предмет: "%1". Невалиден формат на данните. - + Corrupted RSS list, not loading it. Повреден RSS списък, не се зарежда. - + Incorrect RSS Item path: %1. Неправилен път на RSS артикул: %1. - + RSS item with given path already exists: %1. RSS артикул със зададения път вече съществува: %1. - + Parent folder doesn't exist: %1. Родителската папка не съществува: %1. @@ -8546,8 +9006,8 @@ Those plugins were disabled. - - + + Mark items read Отбелязване на елементите като прочетени @@ -8572,132 +9032,132 @@ Those plugins were disabled. Торенти: (двойно кликване за сваляне) - - + + Delete Изтриване - + Rename... Преименуване... - + Rename Преименуване - - + + Update Обновяване - + New subscription... Нов абонамент... - - + + Update all feeds Обновяване на всички канали - + Download torrent Сваляне на торент - + Open news URL Отваряне на URL за новини - + Copy feed URL Копиране URL на канал - + New folder... Нова папка... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Моля изберете име на папка - + Folder name: Име на папка: - + New folder Нова папка - - + + Please type a RSS feed URL Моля въведете URL на RSS канал - - + + Feed URL: URL на канал: - + Deletion confirmation Потвърждение за изтриване - + Are you sure you want to delete the selected RSS feeds? Сигурни ли сте, че искате да изтриете избраните RSS канали? - + Please choose a new name for this RSS feed Моля изберете ново име за този RSS канал - + New feed name: Име на нов канал: - + Rename failed Преименуването неуспешно - + Date: Дата: - + Feed: - + Author: Автор: @@ -8705,38 +9165,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Python трябва да е инсталиран за да ползвате Търсачката. - + Unable to create more than %1 concurrent searches. Не може да се създаде повече от %1 едновременни търсения. - - + + Offset is out of range Отстъпа е извън обхват - + All plugins are already up to date. Всички ваши добавки са вече обновени. - + Updating %1 plugins Обновяване на %1 добавки - + Updating plugin %1 Обновяване на добавка %1 - + Failed to check for plugin updates: %1 Неуспешна проверка за обновявания на добавка: %1 @@ -8811,132 +9271,146 @@ Those plugins were disabled. Размер: - + Name i.e: file name Име - + Size i.e: file size Размер - + Seeders i.e: Number of full sources Споделящи - + Leechers i.e: Number of partial sources Вземащи - Search engine - Търсачка + Търсачка - + Filter search results... Филтрирай резултати на търсене... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Резултати (показва <i>%1</i> от <i>%2</i>): - + Torrent names only Само имена на торентите - + Everywhere Навсякъде - + Use regular expressions Ползване на регулярни изрази - + Open download window Отвори прозорец сваляне - + Download Свали - + Open description page Отиди в страницата с описанието - + Copy Копирай - + Name Име - + Download link Връзка за сваляне - + Description page URL URL на страница с описание - + Searching... Търсене... - + Search has finished Търсенето завърши - + Search aborted Търсенето е прекъснато - + An error occurred during search... Грешка възникна при търсене... - + Search returned no results Търсенето не даде резултати - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Видимост на колона - + Resize columns Преоразмери колони - + Resize all non-hidden columns to the size of their contents Преоразмери всички нескрити колони до размерът на техните съдържания @@ -8944,104 +9418,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Непознат формат на файла за добавката за търсене. - + Plugin already at version %1, which is greater than %2 Добавката вече е на версия %1, която е по-голяма от %2 - + A more recent version of this plugin is already installed. По-нова версия на тази добавка е вече инсталирана. - + Plugin %1 is not supported. Добавката %1 не се поддържа. - - + + Plugin is not supported. Добавката не се поддържа. - + Plugin %1 has been successfully updated. %1 добавка на търсачката беше успешно обновена. - + All categories Всички категории - + Movies Филми - + TV shows TV предавания - + Music Музика - + Games Игри - + Anime Аниме - + Software Софтуер - + Pictures Картини - + Books Книги - + Update server is temporarily unavailable. %1 Сървърът за обновления е временно недостъпен. %1 - - + + Failed to download the plugin file. %1 Неуспешно сваляне на файла на добавката. %1 - + Plugin "%1" is outdated, updating to version %2 Добавката "%1" е остаряла, обновяване до версия %2 - + Incorrect update info received for %1 out of %2 plugins. Неправилна информация за обновление е получена за %1 от %2 добавки. - + Search plugin '%1' contains invalid version string ('%2') Добавката за търсене '%1' съдържа невалидна версия ('%2') @@ -9051,114 +9525,153 @@ Those plugins were disabled. - - - - Search Търсене - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Няма никакви инсталирани добавки за търсене. Кликнете бутона "Търсене на добавки..." в долния десен ъгъл на прозореца, за да инсталирате някоя. - + Search plugins... Търсене на добавки... - + A phrase to search for. Фраза за търсене. - + Spaces in a search term may be protected by double quotes. Паузите в фразата за търсене могат да бъдат предпазени с двойни кавички. - + Example: Search phrase example Пример: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: търси за - + All plugins Всички добавки - + Only enabled Само активиран - + + + Invalid data format. + Невалиден формат на данни. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: търси за <b>foo</b> и <b>bar</b> - + + Refresh + + + + Close tab Затваряне на раздел - + Close all tabs Затваряне на всички раздели - + Select... Избор... - - - + + Search Engine Търсачка - + + Please install Python to use the Search Engine. Моля инсталирайте Python, за да ползвате Търсачката. - + Empty search pattern Празен шаблон за търсене - + Please type a search pattern first Моля въведете първо шаблон за търсене - + + Stop Спиране - - Search has finished - Търсенето завърши + Search has finished + Търсенето завърши + + + Search has failed + Търсенето бе неуспешно + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - Търсенето бе неуспешно + + Failed to save search history. File: "%1". Error: "%2" + @@ -9271,34 +9784,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Качване: - - - + + + - - - + + + KiB/s КиБ/с - - + + Download: Сваляне: - + Alternative speed limits Други ограничения за скорост @@ -9490,32 +10003,32 @@ Click the "Search plugins..." button at the bottom right of the window Осреднено време на опашка: - + Connected peers: Свързани пиъри: - + All-time share ratio: Съотношение за споделяне за всичкото време: - + All-time download: Общо свалено: - + Session waste: Загуба на сесия: - + All-time upload: Общо качено: - + Total buffer size: Общ размер на буфера: @@ -9530,12 +10043,12 @@ Click the "Search plugins..." button at the bottom right of the window Наредени на опашка В/И задачи: - + Write cache overload: Запиши кеша при претоварване: - + Read cache overload: Прочети кеша при претоварване: @@ -9554,51 +10067,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Състояние на връзката: - - + + No direct connections. This may indicate network configuration problems. Няма директни връзки. Това може да е от проблеми в мрежовата настройка. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 възли - + qBittorrent needs to be restarted! qBittorrent се нуждае от рестарт - - - + + + Connection Status: Състояние на връзката: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Извън мрежа. Това обикновено означава, че qBittorrent не е успял да прослуша избрания порт за входни връзки. - + Online Онлайн - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Натисни за смяна към други ограничения за скорост - + Click to switch to regular speed limits Натисни за смяна към стандартни ограничения за скорост @@ -9627,14 +10156,22 @@ Click the "Search plugins..." button at the bottom right of the window Приключени (0) - Resumed (0) - Продължени (0) + Продължени (0) - Paused (0) - В пауза (0) + В пауза (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9696,10 +10233,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Приключени (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - В Пауза (%1) + В Пауза (%1) @@ -9707,14 +10263,12 @@ Click the "Search plugins..." button at the bottom right of the window Преместване (%1) - Resume torrents - Продължи торентите + Продължи торентите - Pause torrents - Пауза на торентите + Пауза на торентите @@ -9722,9 +10276,8 @@ Click the "Search plugins..." button at the bottom right of the window Премахни торенти - Resumed (%1) - Продължени (%1) + Продължени (%1) @@ -9765,17 +10318,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Етикети - + All Всички - + Untagged Без етикет @@ -9783,52 +10336,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Добави етикет... - + Remove tag Изтриване на етикет - + Remove unused tags Изтриване на неизползвани етикети - Resume torrents - Продължаване на торенти + Продължаване на торенти - Pause torrents - Пауза на торентите + Пауза на торентите - + Remove torrents Премахни торенти - New Tag - Нов Етикет + Нов Етикет + + + + Start torrents + + + + + Stop torrents + - + Tag: Етикет: - + + Add tag + + + + Invalid tag name Невалидно име на етикет - + Tag name '%1' is invalid Името на етикета '%1' е невалидно @@ -9968,32 +10533,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Име - + Progress Изпълнение - + Download Priority Приоритет на Сваляне - + Remaining Остават - + Availability Наличност - + Total Size Общ размер @@ -10038,102 +10603,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Грешка при преименуване - + Renaming Преименуване - + New name: Ново име: - + Column visibility Видимост на колона - + Resize columns Преоразмери колони - + Resize all non-hidden columns to the size of their contents Преоразмери всички нескрити колони до размерът на техните съдържания - + Open Отваряне - + Open containing folder Отваряне на съдържаща папка - + Rename... Преименувай... - + Priority Предимство - - + + Do not download Не сваляй - + Normal Нормален - + High Висок - + Maximum Максимален - + By shown file order По реда на показания файл - + Normal priority Нормален приоритет - + High priority Висок приоритет - + Maximum priority Максимален приоритет - + Priority by shown file order Приоритет според реда на показания файл + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10158,13 +10741,13 @@ Please choose a different name and try again. - + Select file Избери файл - + Select folder Избери папка @@ -10189,58 +10772,10 @@ Please choose a different name and try again. Размер на частта: - + Auto Автоматично - - 16 KiB - 16 КиБ - - - 32 KiB - 32 КиБ - - - 64 KiB - 64 КиБ - - - 128 KiB - 128 КиБ - - - 256 KiB - 256 КиБ - - - 512 KiB - 512 КиБ - - - 1 MiB - 1 МиБ - - - 2 MiB - 2 МиБ - - - 4 MiB - 4 МиБ - - - 8 MiB - 8 МиБ - - - 16 MiB - 16 МиБ - - - 32 MiB - 32 МиБ - Calculate number of pieces: @@ -10287,92 +10822,83 @@ Please choose a different name and try again. Полета - + You can separate tracker tiers / groups with an empty line. Можете да разделите тракер комплекти / групи с празен ред. - + Web seed URLs: Уеб сийд: - + Tracker URLs: Адрес на тракера: - + Comments: Коментари: - + Source: Източник: - + Progress: Напредък: - + Create Torrent Създай торент - - + + Torrent creation failed Създаването на торента се провали - + Reason: Path to file/folder is not readable. Причина: Пътят до файл/папка не може да се чете. - + Select where to save the new torrent Изберете къде да запазите новия торент - + Torrent Files (*.torrent) Торент файлове (*.torrent) - - Reason: %1 - Причина: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - Причина: Създаденият торент е невалиден. Няма да бъде добавен към списъка за сваляне. - - - + Torrent creator Създаване на нов торент - + Torrent created: Торентът е създаден: @@ -10380,32 +10906,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 Не можа да се съхрани Наблюдавани папки конфигурация към %1. Грешка: %2 - + Watched folder Path cannot be empty. Пътя на наблюдаваната папка не може да бъде празен. - + Watched folder Path cannot be relative. Пътя на наблюдаваната папка не може да бъде относителен. @@ -10413,27 +10939,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 Неуспешно отваряне на магнитен файл: %1 - + Rejecting failed torrent file: %1 Отхвърляне на неуспешен торент файл: %1 - + Watching folder: "%1" Наблюдаване на папка: "%1" @@ -10441,14 +10967,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Невалидни метаданни + Невалидни метаданни @@ -10479,127 +10999,195 @@ Please choose a different name and try again. Използвай друг път за незавършен торент - + Category: Категория: - + + Torrent Share Limits + + + Torrent speed limits - Ограничения за скорост на торент + Ограничения за скорост на торент - + Download: Сваляне: - - + + - - + + Torrent Speed Limits + + + + + KiB/s КиБ/с - + These will not exceed the global limits Тези няма да надхвърлят глобалните ограничения - + Upload: Качване: - Torrent share limits - Ограничения за споделяне на торент + Ограничения за споделяне на торент - Use global share limit - Използвай глобално ограничение за споделяне + Използвай глобално ограничение за споделяне - Set no share limit - Задаване без ограничение на споделяне + Задаване без ограничение на споделяне - Set share limit to - Задаване на ограничение за споделяне на + Задаване на ограничение за споделяне на - ratio - съотношение - - - - total minutes - - - - - inactive minutes - + съотношение - + Disable DHT for this torrent Забраняване DHT за този торент - + Download in sequential order Сваляне в последователен ред - + Disable PeX for this torrent Забраняване PeX за този торент - + Download first and last pieces first Сваляне на първите и последните парчета първо - + Disable LSD for this torrent Забраняване LSD за този торент - + Currently used categories Текущо използвани категории - - + + Choose save path Избери път на запазване - + Not applicable to private torrents Не приложимо за частни торенти - No share limit method selected - Няма избран метод на ограничение на споделяне + Няма избран метод на ограничение на споделяне - Please select a limit method first - Моля първо изберете метод на ограничение първо + Моля първо изберете метод на ограничение първо + + + + TorrentShareLimitsWidget + + + + + + Default + По подразбиране + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + мин + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Премахни торент + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Разреши супер сийд за торент + + + + Ratio: + @@ -10610,32 +11198,36 @@ Please choose a different name and try again. - New Tag - Нов Етикет + Нов Етикет + Add tag + + + + Tag: Етикет: - + Invalid tag name Невалидно име на етикет - + Tag name '%1' is invalid. - + Tag exists Етикетът вече съществува - + Tag name already exists. Името на етикета вече съществува. @@ -10643,115 +11235,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. Грешка: '%1' не е валиден торент файл. - + Priority must be an integer Приоритет трябва да е цяло число - + Priority is not valid Приоритет не е валиден - + Torrent's metadata has not yet downloaded Метаданни на торент все още не са свалени - + File IDs must be integers Файлови ИД-та трябва да са цели числа - + File ID is not valid Файлов ИД не е валиден - - - - + + + + Torrent queueing must be enabled Торентово нареждане на опашка трябва да бъде разрешено - - + + Save path cannot be empty Пътя на запазване не може да бъде празен - - + + Cannot create target directory Не може да се създаде целева директория - - + + Category cannot be empty Категория не може да бъде празна - + Unable to create category Не можа да се създаде категория - + Unable to edit category Не можа са се редактира категория - + Unable to export torrent file. Error: %1 Не може да се изнесе торент файл. Грешка: "%1". - + Cannot make save path Не може да се направи път на запазване - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'сортиране' параметър е невалиден - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" не е валиден файлов индекс. - + Index %1 is out of bounds. Индекс %1 е извън граници. - - + + Cannot write to directory Не може да се запише в директория - + WebUI Set location: moving "%1", from "%2" to "%3" УебПИ Задаване на местоположение: преместване "%1", от "%2" в "%3" - + Incorrect torrent name Неправилно име на торент - - + + Incorrect category name Неправилно име на категория @@ -10782,257 +11389,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - Работи + Работи - + Disabled - + Забранено - + Disabled for this torrent - Забранено за този торент + Забранено за този торент - + This torrent is private - Този торент е частен + Този торент е частен - + N/A - + Няма - + Updating... - Обновяване... + Обновяване... - + Not working - Не работи + Не работи - + Tracker error - + Unreachable - + Not contacted yet - Още не е свързан - - - - Invalid status! - + Още не е свързан - - URL/Announce endpoint + + Invalid state! - Tier - Ред - - - - Protocol + URL/Announce Endpoint - Status - - - - - Peers - Участници - - - - Seeds - Споделящи - - - - Leeches - Лийчове - - - - Times Downloaded - Пъти свалено - - - - Message - Съобщение - - - - Next announce + BT Protocol - Min announce + Next Announce - - v%1 + + Min Announce - - - TrackerListWidget - Working - Работи + + Tier + Ред - Disabled - Забранено + + Status + Състояние - Disabled for this torrent - Забранено за този торент + + Peers + Участници - - This torrent is private - Този торент е частен + + Seeds + Споделящи - Updating... - Обновяване... + + Leeches + Лийчове - Not working - Не работи + + Times Downloaded + Пъти свалено - Not contacted yet - Още не е свързан + + Message + Съобщение + + + TrackerListWidget - N/A - Няма + + This torrent is private + Този торент е частен - + Tracker editing Редактиране на тракера - + Tracker URL: URL адрес на тракера: - - + + Tracker editing failed Редактирането на тракера е неуспешно - + The tracker URL entered is invalid. Въведеният URL адрес на тракер е невалиден. - + The tracker URL already exists. URL адреса на тракера вече съществува. - + Edit tracker URL... Редактирай URL на тракера... - + Remove tracker Премахни тракер - + Copy tracker URL Копиране на URL на тракер - + Force reannounce to selected trackers Принудително повторно анонсиране към избраните тракери - + Force reannounce to all trackers Принудително анонсиране към всички тракери - Tier - Ред - - - URL - URL - - - Status - Състояние - - - Seeds - Споделящи - - - Times Downloaded - Пъти свалено - - - + Resize columns Преоразмери колони - + Resize all non-hidden columns to the size of their contents Преоразмери всички нескрити колони до размерът на техните съдържания - Peers - Участници - - - + Add trackers... Добави тракери... - Leeches - Лийчове - - - Message - Съобщение - - - + Column visibility Видимост на колона @@ -11050,37 +11591,37 @@ Please choose a different name and try again. Списък тракери за добавяне (по един на ред): - + µTorrent compatible list URL: µTorrent съвместим списък URL: - + Download trackers list Свали списък тракери - + Add Добави - + Trackers list URL error Грешка в списък URL на тракери - + The trackers list URL cannot be empty Списъкът URL на тракери не може да бъде празен - + Download trackers list error Грешка в сваляне списък тракери - + Error occurred when downloading the trackers list. Reason: "%1" Грешка възникна при сваляне на списъкът тракери. Причина: "%1" @@ -11088,87 +11629,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Всички (0) - - - Trackerless (0) - Без тракери (0) - - - Error (0) - Грешки (0) - - - Warning (0) - Предупреждения (0) - - - Trackerless - Без тракери - - - Error (%1) - Грешка (%1) - - - + Warning (%1) Внимание (%1) - + Trackerless (%1) Без тракери (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - Премахни тракер + Премахни тракер + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Продължи торентите + Продължи торентите - Pause torrents - Пауза на торентите + Пауза на торентите - + Remove torrents Премахни торенти - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Всички (%1) @@ -11177,7 +11701,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'режим': невалиден аргумент @@ -11270,9 +11794,8 @@ Please choose a different name and try again. Проверка на данните за продължаване - Paused - В Пауза + В Пауза @@ -11297,220 +11820,262 @@ Please choose a different name and try again. С грешки - + Name i.e: torrent name Име - + Size i.e: torrent size Размер - + Progress % Done Напредък - Status Torrent status (e.g. downloading, seeding, paused) - Статус + Статус - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + + + + Seeds i.e. full sources (often untranslated) Споделящи - + Peers i.e. partial sources (often untranslated) Участници - + Down Speed i.e: Download speed Скорост теглене - + Up Speed i.e: Upload speed Скорост качване - + Ratio Share ratio Съотношение - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Оставащо време - + Category Категория - + Tags Етикети - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Добавен на - + Completed On Torrent was completed on 01/01/2010 08:00 Завършен на - + Tracker Тракер - + Down Limit i.e: Download limit Ограничение теглене - + Up Limit i.e: Upload limit Ограничение качване - + Downloaded Amount of data downloaded (e.g. in MB) Свалени - + Uploaded Amount of data uploaded (e.g. in MB) Качени - + Session Download Amount of data downloaded since program open (e.g. in MB) Сваляне в сесията - + Session Upload Amount of data uploaded since program open (e.g. in MB) Качване в сесията - + Remaining Amount of data left to download (e.g. in MB) Оставащо - + + Time Active + Time (duration) the torrent is active (not stopped) + Време активен + + + + Yes + Да + + + + No + Не + + Time Active Time (duration) the torrent is active (not paused) - Време активен + Време активен - + Save Path Torrent save path Път на запазване - + Incomplete Save Path Torrent incomplete save path Непълен път на запазване - + Completed Amount of data completed (e.g. in MB) Приключено - + Ratio Limit Upload share ratio limit Ограничение на коефицента - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Последно видян приключен - + Last Activity Time passed since a chunk was downloaded/uploaded Последна активност - + Total Size i.e. Size including unwanted data Общ размер - + Availability The number of distributed copies of the torrent Наличност - + Info Hash v1 i.e: torrent info hash v1 Инфо хеш в1 - + Info Hash v2 i.e: torrent info hash v2 Инфо хеш в2: - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Няма - + %1 ago e.g.: 1h 20m ago преди %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (споделян за %2) @@ -11519,334 +12084,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Видимост на колона - + Recheck confirmation Потвърждение за повторна проверка - + Are you sure you want to recheck the selected torrent(s)? Сигурни ли сте, че искате повторно да проверите избрания торент(и)? - + Rename Преименувай - + New name: Ново име: - + Choose save path Избери път за съхранение - Confirm pause - Потвърди пауза + Потвърди пауза - Would you like to pause all torrents? - Бихте ли искали да поставите на пауза всички торенти? + Бихте ли искали да поставите на пауза всички торенти? - Confirm resume - Потвърди продължение + Потвърди продължение - Would you like to resume all torrents? - Бихте ли искали да продължите всички торенти? + Бихте ли искали да продължите всички торенти? - + Unable to preview Не може да се визуализира - + The selected torrent "%1" does not contain previewable files Избраният торент "%1" не съдържа файлове за визуализация - + Resize columns Преоразмери колони - + Resize all non-hidden columns to the size of their contents Преоразмери всички нескрити колони до размерът на техните съдържания - + Enable automatic torrent management Разреши автоматично управление на торент - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Сигурни ли сте, че искате да разрешите автоматично управление на торент за избраният/те торент(и)? Те могат да бъдат преместени. - Add Tags - Добави Етикети + Добави Етикети - + Choose folder to save exported .torrent files Изберете папка за запазване на изнесени .torrent файлове - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Изнасяне на .torrent файл неуспешно. Торент "%1". Път на запазване: "%2". Причина: "%3" - + A file with the same name already exists Файл със същото име вече съществува - + Export .torrent file error Грешка при изнасяне на .torrent файл - + Remove All Tags Изтрий Всички Етикети - + Remove all tags from selected torrents? Изтриване на всички етикети от избраните торенти? - + Comma-separated tags: Етикети разделени чрез запетаи: - + Invalid tag Невалиден етикет - + Tag name: '%1' is invalid Името на етикета '%1' е невалидно - &Resume Resume/start the torrent - &Продължи + &Продължи - &Pause Pause the torrent - &Пауза + &Пауза - Force Resu&me Force Resume/start the torrent - Насилствено продъл&жи + Насилствено продъл&жи - + Pre&view file... Пре&гледай файл... - + Torrent &options... Торент &опции... - + Open destination &folder Отвори &папка на местонахождение - + Move &up i.e. move up in the queue Премести &нагоре - + Move &down i.e. Move down in the queue Премести &надолу - + Move to &top i.e. Move to top of the queue Премести на &върха - + Move to &bottom i.e. Move to bottom of the queue Премести на &дъното - + Set loc&ation... Задаване на мес&тоположение... - + Force rec&heck Принудително пре&провери - + Force r&eannounce Принудително р&еанонсирай - + &Magnet link &Магнитна връзка - + Torrent &ID Торент &ИД - + + &Comment + + + + &Name &Име - + Info &hash v1 Инфо &хеш в1 - + Info h&ash v2 Инфо &хеш в2 - + Re&name... Пре&именувай... - + Edit trac&kers... Редактирай тра&кери... - + E&xport .torrent... И&знеси .torrent... - + Categor&y Категори&я - + &New... New category... &Нов... - + &Reset Reset category &Нулирай - + Ta&gs Та&гове - + &Add... Add / assign multiple tags... &Добави... - + &Remove All Remove all tags &Премахни всички - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Опашка - + &Copy &Копирай - + Exported torrent is not necessarily the same as the imported Изнесен торент е необезателно същият като внесения торент - + Download in sequential order Сваляне по азбучен ред - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Грешки възникнаха при изнасяне на .torrent файлове. Проверете дневника на изпълняване за подробности. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Премахни - + Download first and last pieces first Сваляне първо на първото и последното парче - + Automatic Torrent Management Автоматичен Торентов Режим на Управаление - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Автоматичен режим значи, че различни свойства на торент (н. пр. път на запазване) ще бъдат решени от асоциираната категория - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Не може да се принуди реанонсиране, ако торента е в пауза/опашка/грешка/проверка + Не може да се принуди реанонсиране, ако торента е в пауза/опашка/грешка/проверка - + Super seeding mode Режим на супер-даване @@ -11891,28 +12480,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11920,7 +12509,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Неуспешно зареждане на UI тема от файл: "%1" @@ -11951,34 +12545,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Мигриране на предпочитанията се провали: УебПИ http-та, файл: "%1", грешка: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Мигрирани предпочитания: УебПИ http-та, изнесени данни във файл: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Невалидна стойност намерена в конфигурационен файл, връщане към по подразбиране. Ключ: "%1". Невалидна стойност: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Открит е Python, име на изпълним файл: '%1', версия: %2 - - - Python not detected - Python не е открит - Found Python executable. Name: "%1". Version: "%2" @@ -12013,27 +12600,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12097,72 +12684,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Неприемлив тип файл, разрешен е само обикновен файл. - + Symlinks inside alternative UI folder are forbidden. Символните връзки в алтернативната папка на потребителския интерфейс са забранени. - - Using built-in Web UI. - Използване на вграден Web UI. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Използване на потребителски Web UI. Местоположение: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Web UI преводът за избрана езикова променлива (%1) е успешно зареден. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Не можа да се зареди web UI превод за избрана езикова променлива (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" Липсва разделител ":" в WebUI потребителски HTTP заглавка: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Заглавната част на източника и целевия източник не съответстват. IP източник: '%1'. Заглавна част на източник: '%2'. Целеви източник: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Заглавната част на рефера и целевия източник не съвпадат! IP на източник: '%1'. Заглавна част на рефера: '%2. Целеви източник: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Невалидна заглавна част на хоста, несъвпадение на порт! Заявка на IP на източник: '%1'. Сървър порт: '%2. Получена заглавна част на хост: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Невалидна заглавна част на хост. Заявка на IP на източник: '%1'. Получена заглавна част на хост: '%2' @@ -12170,143 +12757,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Уеб ПИ: установяването на HTTPS е успешно + + Credentials are not set + + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - Уеб ПИ: установяването на HTTPS се провали, прибягване към HTTP + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Уеб ПИ: Очаква връзка на IP: %1, порт: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Уеб ПИ: Не може да се закачи на IP: %1, порт: %2. Причина: %3 + + Unknown error + Непозната грешка misc - + B bytes Б - + KiB kibibytes (1024 bytes) КБ - + MiB mebibytes (1024 kibibytes) МБ - + GiB gibibytes (1024 mibibytes) ГБ - + TiB tebibytes (1024 gibibytes) ТБ - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second - + %1s e.g: 10 seconds - %1мин {1s?} + - + %1m e.g: 10 minutes - %1мин + %1мин - + %1h %2m e.g: 3 hours 5 minutes - %1ч%2мин + %1ч%2мин - + %1d %2h e.g: 2 days 10 hours - %1д%2ч + %1д%2ч - + %1y %2d e.g: 2 years 10 days - %1г %2д - - - %1h %2m - e.g: 3hours 5minutes - %1ч%2мин - - - %1d %2h - e.g: 2days 10hours - %1д%2ч - - - %1y %2d - e.g: 2years 10days - %1г %2д + %1y %2d - - + + Unknown Unknown (size) Неизвестен - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent ще угаси компютъра, защото всички сваляния са завършени. - + < 1m < 1 minute < 1мин - - %1m - e.g: 10minutes - %1мин - diff --git a/src/lang/qbittorrent_ca.ts b/src/lang/qbittorrent_ca.ts index b02f9bbf607b..0798cba82249 100644 --- a/src/lang/qbittorrent_ca.ts +++ b/src/lang/qbittorrent_ca.ts @@ -14,77 +14,77 @@ Quant a - + Authors Autors - + Current maintainer Mantenidor actual - + Greece Grècia - - + + Nationality: Nacionalitat: - - + + E-mail: Correu electrònic: - - + + Name: Nom: - + Original author Autor original - + France França - + Special Thanks Agraïments especials - + Translators Traductors - + License Llicència - + Software Used Programari usat - + qBittorrent was built with the following libraries: El qBittorrent s'ha construït amb les biblioteques següents: - + Copy to clipboard - + Copia-ho al porta-retalls @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 El projecte qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 El projecte qBittorrent @@ -166,14 +166,13 @@ Desa a - + Never show again No ho tornis a mostrar. - Torrent settings - Configuració del torrent + Configuració del torrent @@ -191,12 +190,12 @@ Inicia el torrent - + Torrent information Informació del torrent - + Skip hash check Omet la comprovació del resum @@ -205,6 +204,11 @@ Use another path for incomplete torrent Usa un altre camí per al torrent incomplet + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Condició d'aturada: - - + + None Cap - - + + Metadata received Metadades rebudes - - + + Torrents that have metadata initially will be added as stopped. + Els torrents que tinguin metadades inicialment s'afegiran com a aturats. + + + + Files checked Fitxers comprovats - + Add to top of queue Afegeix al capdamunt de la cua - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Quan està marcat, el fitxer .torrent no se suprimirà independentment de la configuració de la pàgina Descarrega del diàleg Opcions. - + Content layout: Disposició del contingut: - + Original Original - + Create subfolder Crea una subcarpeta - + Don't create subfolder No creïs una subcarpeta - + Info hash v1: Informació de la funció resum v1: - + Size: Mida: - + Comment: Comentari: - + Date: Data: @@ -324,245 +333,182 @@ Recorda l'últim camí on desar-ho usat - + Do not delete .torrent file No suprimeixis el fitxer .torrent - + Download in sequential order Baixa en ordre seqüencial - + Download first and last pieces first Baixa primer els trossos del principi i del final - + Info hash v2: Informació de la funció resum v2: - + Select All Selecciona-ho tot - + Select None No seleccionis res - + Save as .torrent file... Desa com a fitxer .torrent... - + I/O Error Error d'entrada / sortida - Invalid torrent - Torrent no vàlid - - - + Not Available This comment is unavailable No disponible - + Not Available This date is unavailable No disponible - + Not available No disponible - Invalid magnet link - Enllaç magnètic no vàlid - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - No ha estat possible carregar el torrent: %1 -Error: %2 - - - This magnet link was not recognized - Aquest enllaç magnètic no s'ha reconegut - - - + Magnet link Enllaç magnètic - + Retrieving metadata... Rebent les metadades... - - + + Choose save path Trieu el camí on desar-ho - Torrent is already present - El torrent ja hi és - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - El torrent "%1" ja és a la llista de transferècia. Els rastrejadors no s'han fusionat perquè és un torrent privat. - - - Torrent is already queued for processing. - El torrent ja és a la cua per processar. - - - + No stop condition is set. No s'ha establert cap condició d'aturada. - + Torrent will stop after metadata is received. El torrent s'aturarà després de rebre les metadades. - - Torrents that have metadata initially aren't affected. - Els torrents que tinguin metadades inicialment no n'estan afectats. - - - + Torrent will stop after files are initially checked. El torrent s'aturarà després de la comprovació inicial dels fitxers. - + This will also download metadata if it wasn't there initially. Això també baixarà metadades si no n'hi havia inicialment. - - + + N/A N / D - Magnet link is already queued for processing. - L'enllaç magnètic ja és a la cua per processar - - - + %1 (Free space on disk: %2) %1 (Espai lliure al disc: %2) - + Not available This size is unavailable. No disponible - + Torrent file (*%1) Fitxer torrent (*%1) - + Save as torrent file Desa com a fitxer torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. No s'ha pogut exportar el fitxer de metadades del torrent %1. Raó: %2. - + Cannot create v2 torrent until its data is fully downloaded. No es pot crear el torrent v2 fins que les seves dades estiguin totalment baixades. - Cannot download '%1': %2 - No es pot baixar %1: %2 - - - + Filter files... Filtra els fitxers... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - El torrent "%1" ja és a la llista de transferència. Els rastrejadors no es poden fusionar perquè és un torrent privat. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - El torrent "%1" ja és a la llista de transferència. Voleu fuisionar els rastrejadors des d'una font nova? - - - + Parsing metadata... Analitzant les metadades... - + Metadata retrieval complete S'ha completat la recuperació de metadades - - Failed to load from URL: %1. -Error: %2 - Ha fallat la càrrega des de l'URL: %1. -Error: %2 - - - Download Error - Error de baixada - AddTorrentManager Downloading torrent... Source: "%1" - + Es baixa el torrent... Font: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + No s'ha pogut afegir el torrent. Font: "%1". Raó: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + S'ha detectat un intent d'afegir un torrent duplicat. Font: %1. Torrent existent: %2. Resultat: %3 - + Merging of trackers is disabled - + La fusió de rastrejadors està desactivada. - + Trackers cannot be merged because it is a private torrent - + Els rastrejadors no es poden fusionar perquè és un torrent privat. - + Trackers are merged from new source - + Els rastrejadors es fusionen des de la font nova. @@ -648,72 +594,77 @@ Error: %2 Omet la comprovació del resum - - - Choose save path - Trieu un camí per desar + + Torrent share limits + Límits de compartició del torrent - - - - - - - Default - Per defecte + + + Choose save path + Trieu un camí per desar + + + - Yes - + Default + Per defecte + Yes + + + + + + No No - + Manual Manual - + Automatic Automàtic - + Original Original - + Create subfolder Crea una subcarpeta - + Don't create subfolder No creïs una subcarpeta - + None Cap - + Metadata received Metadades rebudes - + Files checked Fitxers comprovats @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Torna a comprovar els torrents completats - - + + ms milliseconds ms - + Setting Configuració - + Value Value set for this setting Valor - + (disabled) (inhabilitat) - + (auto) (automàtic) - + + min minutes min - + All addresses Totes les adreces - + qBittorrent Section Secció de qBittorrent - - + + Open documentation Obre la documentació - + All IPv4 addresses Totes les adreces d'IPv4 - + All IPv6 addresses Totes les adreces d'IPv6 - + libtorrent Section Secció de libtorrent - + Fastresume files Fitxers de represa ràpida - + SQLite database (experimental) Base de dades SQLite (experimental) - + Resume data storage type (requires restart) Tipus d'emmagatzematge de dades de represa (requereix reiniciar) - + Normal Normal - + Below normal Inferior a normal - + Medium Mitjà - + Low Baix - + Very low Molt baix - - Process memory priority (Windows >= 8 only) - Prioritat de la memòria de processament (Windows >= 8 només) - - - + Physical memory (RAM) usage limit Límit d'ús de la memòria física (RAM). - + Asynchronous I/O threads Fils d'E/S asincrònics - + Hashing threads Fils de resum - + File pool size Mida de l'agrupació de fitxers - + Outstanding memory when checking torrents Memòria excepcional en comprovar torrents - + Disk cache Cau del disc - - - - + + + + s seconds s - + Disk cache expiry interval Interval de caducitat de la memòria cau del disc - + Disk queue size Mida de la cua del disc - - + + Enable OS cache Habilita la memòria cau del sistema operatiu - + Coalesce reads & writes Fusiona les lectures i escriptures - + Use piece extent affinity Usa l'afinitat d'extensió de tros. - + Send upload piece suggestions Envia suggeriments de càrrega de trossos - - - - + + + + + 0 (disabled) 0 (desactivat) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Guardar l'interval de dades de continuació [0: desactivat] - + Outgoing ports (Min) [0: disabled] Ports de surtida (Min) [0: desactivat] - + Outgoing ports (Max) [0: disabled] Ports de sortida (Max) [0: desactivat] - + 0 (permanent lease) 0 (cessió permanent) - + UPnP lease duration [0: permanent lease] Duració de la cessió UPnP [0: cessió permanent] - + Stop tracker timeout [0: disabled] Aturar el comptador de tracker [0: desactivat] - + Notification timeout [0: infinite, -1: system default] Compte de notificació [0: infinit, -1: per defecte de sistema] - + Maximum outstanding requests to a single peer Màxim de sol·licituds pendents per a un sol client - - - - - + + + + + KiB KiB - + (infinite) (infinit) - + (system default) (per defecte de sistema) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Aquesta opció és menys efectiva a Linux. - + + Process memory priority + Prioritat de memòria del procés + + + Bdecode depth limit Bdecode: límit de profunditat - + Bdecode token limit Bdecode: límit de testimonis - + Default Per defecte - + Memory mapped files Fitxers assignats a la memòria - + POSIX-compliant Compatible amb POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipus d'E / S del disc (requereix reinici) - - + + Disable OS cache Inhabilita la cau del SO - + Disk IO read mode Mode de lectura d'E/S del disc - + Write-through Escriu a través - + Disk IO write mode Mode d'escriptura d'E/S del disc - + Send buffer watermark Envia la marca d'aigua de la memòria intermèdia - + Send buffer low watermark Envia la marca d'aigua feble de la memòria intermèdia - + Send buffer watermark factor Envia el factor la marca d'aigua de la memòria intermèdia - + Outgoing connections per second Connexions sortints per segon - - + + 0 (system default) 0 (per defecte de sistema) - + Socket send buffer size [0: system default] Mida del buffer de socket d'enviament [0: per defecte de sistema] - + Socket receive buffer size [0: system default] Mida del buffer del socket de recepció [0: per defecte de sistema] - + Socket backlog size Mida del registre històric del sòcol - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Límit de mida del fitxer .torrent - + Type of service (ToS) for connections to peers Tipus de servei (ToS) per a connexions amb clients - + Prefer TCP Prefereix TCP - + Peer proportional (throttles TCP) Proporcional als clients (acceleració de TCP) - + Support internationalized domain name (IDN) Admet el nom de domini internacionalitzat (IDN) - + Allow multiple connections from the same IP address Permet connexions múltiples des de la mateixa adreça IP - + Validate HTTPS tracker certificates Valida els certificats del rastrejador d'HTTPS - + Server-side request forgery (SSRF) mitigation Mitigació de falsificació de sol·licituds del costat del servidor (SSRF) - + Disallow connection to peers on privileged ports No permetis la connexió a clients en ports privilegiats - + + It appends the text to the window title to help distinguish qBittorent instances + Afegeix el text al títol de la finestra per ajudar a distingir les instàncies del qBittorent. + + + + Customize application instance name + Personalitza el nom de la instància de l'aplicació + + + It controls the internal state update interval which in turn will affect UI updates Controla l'interval d'actualització de l'estat intern que, al seu torn, afectarà les actualitzacions de la interfície d'usuari. - + Refresh interval Interval d'actualització - + Resolve peer host names Resol els noms d'amfitrió dels clients - + IP address reported to trackers (requires restart) Adreça IP informada als rastrejadors (requereix reinici) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Torna a anunciar-ho a tots els rastrejadors quan es canviï d’IP o de port. - + Enable icons in menus Habilita icones als menús - + Enable port forwarding for embedded tracker Habilita el reenviament de port per al rastrejador integrat. - - (Auto detect if empty) + + Enable quarantine for downloaded files + Activa la quarantena per als fitxers baixats. + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Habilita Mark-of-the-Web (MOTW) per als fitxers baixats. + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Detecció automàtica si està buit) + + + Python executable path (may require restart) + Camí executable de Python (pot caldre reiniciar) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + s + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirmeu l'eliminació del rastrejador de tots els torrents. + + + Peer turnover disconnect percentage Percentatge de desconnexió de la rotació de clients - + Peer turnover threshold percentage Percentatge del límit de la rotació de clients - + Peer turnover disconnect interval Interval de desconnexió de la rotació de clients - + Resets to default if empty - + Restableix els valors predeterminats si està buit. - + DHT bootstrap nodes - + Nodes d'arrencada de DHT - + I2P inbound quantity Quantitat d'entrada I2P - + I2P outbound quantity Quantitat de sortida I2P - + I2P inbound length Longitud d'entrada I2P - + I2P outbound length Longitud de sortida I2P - + Display notifications Mostra notificacions - + Display notifications for added torrents Mostra notificacions per als torrents afegits - + Download tracker's favicon Baixa la icona de web del rastrejador - + Save path history length Llargada de l'historial de camins on desar-ho - + Enable speed graphs Habilita els gràfics de velocitat - + Fixed slots Ranures fixes - + Upload rate based Segons la velocitat de pujada - + Upload slots behavior Comportament de les ranures de pujada - + Round-robin Algoritme Round-robin - + Fastest upload La pujada més ràpida - + Anti-leech Antisangoneres - + Upload choking algorithm Algorisme d'ofec de pujada - + Confirm torrent recheck Confirma la verificació del torrent - + Confirm removal of all tags Confirmació de supressió de totes les etiquetes - + Always announce to all trackers in a tier Anuncia sempre a tots els rastrejadors en un nivell - + Always announce to all tiers Anuncia sempre a tots els nivells - + Any interface i.e. Any network interface Qualsevol interfície - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algorisme de mode mixt %1-TCP - + Resolve peer countries Resol els països dels clients. - + Network interface Interfície de xarxa - + Optional IP address to bind to Adreça IP opcional per vincular-s'hi - + Max concurrent HTTP announces Màxim d'anuncis d'HTTP concurrents - + Enable embedded tracker Habilita el rastrejador integrat - + Embedded tracker port Port d'integració del rastrejador - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 iniciat + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 S'executa en mode portàtil. Carpeta de perfil detectada automàticament a %1. - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. S'ha detectat una bandera de línia d'ordres redundant: "%1". El mode portàtil implica una represa ràpida relativa. - + Using config directory: %1 S'usa el directori de configuració %1 - + Torrent name: %1 Nom del torrent: %1 - + Torrent size: %1 Mida del torrent: %1 - + Save path: %1 Camí on desar-ho: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds El torrent s'ha baixat: %1. - + + Thank you for using qBittorrent. Gràcies per utilitzar el qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, enviant notificació per e-mail - + Add torrent failed - + S'ha produït un error en afegir el torrent. - + Couldn't add torrent '%1', reason: %2. - + No s'ha pogut afegir el torrent %1. Raó: %2. + + + + The WebUI administrator username is: %1 + El nom d'usuari d'administrador de la interfície web és %1. - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + La contrasenya de l'administrador de la interfície web no s'ha establert. Es proporciona una contrasenya temporal per a aquesta sessió: %1 + + + + You should set your own password in program preferences. + Hauríeu d'establir la vostra contrasenya a les preferències del programa. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + La interfície web està desactivada! Per habilitar-la, editeu el fitxer de configuració manualment. - + Running external program. Torrent: "%1". Command: `%2` Execució de programa extern. Torrent: "%1". Ordre: %2 - + Failed to run external program. Torrent: "%1". Command: `%2` Ha fallat executar el programa extern. Torrent: "%1". Ordre: %2 - + Torrent "%1" has finished downloading El torrent "%1" s'ha acabat de baixar. - + WebUI will be started shortly after internal preparations. Please wait... La Interfície d'usuari web s'iniciarà poc després dels preparatius interns. Si us plau, espereu... - - + + Loading torrents... Es carreguen els torrents... - + E&xit S&urt - + I/O Error i.e: Input/Output Error Error d'entrada / sortida - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Raó: %2 - Error - Error - - - Failed to add torrent: %1 - No ha estat possible afegir el torrent: %1 - - - + Torrent added Torrent afegit - + '%1' was added. e.g: xxx.avi was added. S'ha afegit "%1". - + Download completed Baixada completa - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - «%1» s'ha acabat de baixar. - - - URL download error - Error de baixada d'URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + El qBittorrent %1 s'ha iniciat. ID de procés: %2 - Couldn't download file at URL '%1', reason: %2. - No s'ha pogut baixar el fitxer de l'URL «%1», raó: %2. + + This is a test email. + - Torrent file association - Associació de fitxers torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - El qBittorrent no és l'aplicació predeterminada per obrir fitxers torrent o enllaços magnètics. -Voleu que el qBittorrent en sigui l'aplicació predeterminada? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + «%1» s'ha acabat de baixar. - + Information Informació - + To fix the error, you may need to edit the config file manually. - + Per corregir l'error, és possible que hàgiu d'editar el fitxer de configuració manualment. - + To control qBittorrent, access the WebUI at: %1 Per a controlar el qBittorrent, accediu a la interfície web a: %1 - - The Web UI administrator username is: %1 - El nom d'usuari de l'administrador de la interfície web és %1 - - - - The Web UI administrator password has not been changed from the default: %1 - La contrasenya de l'administrador de la interfície d'usuari web no s'ha canviat del valor predeterminat: %1 - - - - This is a security risk, please change your password in program preferences. - Aquest és un risc de seguretat. Canvieu la contrasenya a les preferències del programa. - - - Application failed to start. - Ha fallat iniciar l'aplicació. - - - + Exit Surt - + Recursive download confirmation - Confirmació de baixades recursives + Confirmació de baixades recursives - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - El torrent "%1" conté fitxers .torrent. En voleu continuar les baixades? + El torrent "%1" conté fitxers .torrent. En voleu continuar les baixades? - + Never - Mai + Mai - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Baixada recursiva del fitxer .torrent dins del torrent. Torrent font: "%1". Fitxer: "%2" + Baixada recursiva del fitxer .torrent dins del torrent. Torrent font: "%1". Fitxer: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" No s'ha pogut establir el límit d'ús de la memòria física (RAM). Codi d'error: %1. Missatge d'error: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" No s'ha pogut establir el límit dur d'ús de la memòria física (RAM). Mida sol·licitada: %1. Límit dur del sistema: %2. Codi d'error: %3. Missatge d'error: %4 - + qBittorrent termination initiated Terminació iniciada del qBittorrent - + qBittorrent is shutting down... El qBittorrent es tanca... - + Saving torrent progress... Desant el progrés del torrent... - + qBittorrent is now ready to exit El qBittorrent ja està a punt per sortir. @@ -1597,7 +1637,7 @@ Voleu que el qBittorrent en sigui l'aplicació predeterminada? AsyncFileStorage - + Could not create directory '%1'. No s'ha pogut crear el directori "%1". @@ -1605,22 +1645,22 @@ Voleu que el qBittorrent en sigui l'aplicació predeterminada? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 L'inici de sessió a l'API web ha fallat. Raó: la IP s'ha prohibit, IP: %1, nom d'usuari: %2 - + Your IP address has been banned after too many failed authentication attempts. La vostra adreça IP ha estat bandejada després de massa intents d'autenticació fallits - + WebAPI login success. IP: %1 S'ha iniciat la sessió correctament a l'API web. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 L'inici de sessió a l'API web ha fallat. Raó: credencials no vàlides. Nombre d'intents: %1, IP: %2, nom d'usuari: %3 @@ -1668,12 +1708,12 @@ Voleu que el qBittorrent en sigui l'aplicació predeterminada?Prioritat: - + Must Not Contain: No ha de contenir: - + Episode Filter: Filtra l'episodi: @@ -1726,263 +1766,263 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb &Exportació... - + Matches articles based on episode filter. Articles coincidents amb el filtre d'episodis. - + Example: Exemple: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match emparellarà 2, 5 i 8 a través del 15 i 30 i els episodis següents de la primera temporada - + Episode filter rules: Regles del filtre d'episodis: - + Season number is a mandatory non-zero value El número de temporada ha de ser un valor diferent de zero. - + Filter must end with semicolon El filtre ha d'acabar en punt i coma. - + Three range types for episodes are supported: S'admeten tres tipus d'intervals per als episodis: - + Single number: <b>1x25;</b> matches episode 25 of season one Un únic número: <b>1x25;<b> coincideix amb l'episodi 25 de la temporada u. - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Interval normal: <b>1x25-40;<b> coincideix amb l'episodi 25 al 40 de la primera temporada. - + Episode number is a mandatory positive value El número d'episodi ha de ser un valor positiu. - + Rules Regles - + Rules (legacy) Regles (llegat) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Interval infinit: <b>1x25-;</b> coincideix amb 25 episodis i més enllà de la primera temporada, i tots els episodis de les darreres temporades. - + Last Match: %1 days ago Darrera coincidència: fa %1 dies - + Last Match: Unknown Darrera coincidència: desconeguda - + New rule name Nom de la nova regla - + Please type the name of the new download rule. Escriviu el nom de la nova regla de baixada. - - + + Rule name conflict Conflicte amb el nom de la regla - - + + A rule with this name already exists, please choose another name. Ja existeix una regla amb aquest nom. Trieu-ne un altre. - + Are you sure you want to remove the download rule named '%1'? Segur que voleu suprimir la regla de baixada anomenada «%1»? - + Are you sure you want to remove the selected download rules? Segur que voleu suprimir les regles de baixada seleccionades? - + Rule deletion confirmation Confirmació de supressió de la regla - + Invalid action Acció no vàlida - + The list is empty, there is nothing to export. La llista està buida, no hi ha res per exportar. - + Export RSS rules Exporta regles d'RSS - + I/O Error Error d'entrada / sortida - + Failed to create the destination file. Reason: %1 Ha fallat crear el fitxer de destinació. Raó: %1. - + Import RSS rules Importa regles d'RSS - + Failed to import the selected rules file. Reason: %1 Ha fallat importar el fitxer de regles seleccionat. Raó: %1. - + Add new rule... Afegeix una regla nova... - + Delete rule Suprimeix la regla - + Rename rule... Canvia el nom de la regla... - + Delete selected rules Suprimeix les regles seleccionades - + Clear downloaded episodes... Neteja els episodis baixats... - + Rule renaming Canvi de nom de la regla - + Please type the new rule name Escriviu el nou nom de la regla - + Clear downloaded episodes Neteja els episodis baixats - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Segur que voleu netejar la llista d'episodis baixats per a la regla seleccionada? - + Regex mode: use Perl-compatible regular expressions Mode d'expressió regular: usa expressions regulars compatibles amb Perl - - + + Position %1: %2 Posició: %1: %2 - + Wildcard mode: you can use Mode de comodí: podeu usar - - + + Import error Error d'importació - + Failed to read the file. %1 No s'ha pogut llegir el fitxer. %1 - + ? to match any single character ? per substituir qualsevol caràcter simple - + * to match zero or more of any characters * per substituir o bé res o bé qualsevol altre nombre de caràcters. - + Whitespaces count as AND operators (all words, any order) Els espais en blanc compten com a operadors I (totes les paraules, en qualsevol ordre) - + | is used as OR operator | s'usa com a operador OR - + If word order is important use * instead of whitespace. Si l'ordre de paraules és important, useu * en comptes de l'espai en blanc. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Una expressió amb una subordinada %1 buida (p. e. %2) - + will match all articles. coincidirà amb tots els articles. - + will exclude all articles. exclourà tots els articles. @@ -2024,53 +2064,58 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" No s'ha pogut crear la carpeta de represa de torrents: «%1» - + Cannot parse resume data: invalid format No es poden analitzar les dades de la represa: format no vàlid. - - + + Cannot parse torrent info: %1 No es pot analitzar la informació del torrent: %1 - + Cannot parse torrent info: invalid format No es pot analitzar la informació del torrent: format no vàlid. - + + Mismatching info-hash detected in resume data + S'ha detectat un resum d'informació que no coincideix amb les dades de represa. + + + Couldn't save torrent metadata to '%1'. Error: %2. No s'han pogut desar les metadades del torrent a '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. No s'han pogut desar les dades del currículum de torrent a '% 1'. Error:% 2. - + Couldn't load torrents queue: %1 No s'ha pogut carregar la cua de torrents: %1 - + Cannot parse resume data: %1 No es poden analitzar les dades de represa: %1 - + Resume data is invalid: neither metadata nor info-hash was found Les dades de la represa no són vàlides: no s'han trobat ni metadades ni resum d'informació. - + Couldn't save data to '%1'. Error: %2 No s'han pogut desar les dades a «%1». Error: %2 @@ -2078,38 +2123,38 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb BitTorrent::DBResumeDataStorage - + Not found. No s'ha trobat. - + Couldn't load resume data of torrent '%1'. Error: %2 No s'han pogut carregar les dades de represa del torrent «%1». Error: %2 - - + + Database is corrupted. La base de dades està malmesa. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. No s'ha pogut activar el mode de registre d'escriptura anticipada (WAL). Error: %1. - + Couldn't obtain query result. No s'ha pogut obtenir el resultat de la consulta. - + WAL mode is probably unsupported due to filesystem limitations. El mode WAL probablement no és compatible a causa de les limitacions del sistema de fitxers. - + Couldn't begin transaction. Error: %1 No s'ha pogut iniciar transació. Error: %1 @@ -2117,22 +2162,22 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. No s'han pogut desar les metadades del torrent. Error:% 1. - + Couldn't store resume data for torrent '%1'. Error: %2 No es poden emmagatzemar les dades de represa del torrent: «%1». Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 No s'han pogut suprimir les dades de represa del torrent «%1». Error: %2 - + Couldn't store torrents queue positions. Error: %1 No s'han pogut emmagatzemar les posicions de cua dels torrents. Error %1 @@ -2140,586 +2185,620 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Compatibilitat amb la taula de resum distribuïda (DHT): %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF NO - - + + Local Peer Discovery support: %1 Compatibilitat local per al descobriment de clients: %1 - + Restart is required to toggle Peer Exchange (PeX) support Cal reiniciar per canviar el suport de l'intercanvi de clients (PeX). - + Failed to resume torrent. Torrent: "%1". Reason: "%2" No s'ha pogut reprendre el torrent. Torrent: "%1". Raó: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" No s'ha pogut reprendre el torrent: s'ha detectat un ID de torrent inconsistent. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Dades incoherents detectades: falta una categoria al fitxer de configuració. Es recuperarà la categoria, però la configuració es restablirà al valor predeterminat. Torrent: "%1". Categoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Dades incoherents detectades: categoria no vàlida. Torrent: "%1". Categoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" S'ha detectat un manca de coincidència entre els camins de desament de la categoria recuperada i el camí on desar-ho actual del torrent. Ara el torrent ha canviat al mode manual. Torrent: "%1". Categoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" S'han detectat dades incoherents: falta l'etiqueta al fitxer de configuració. Es recuperarà l'etiqueta. Torrent: "%1". Etiqueta: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Dades incoherents detectades: etiqueta no vàlida. Torrent: "%1". Etiqueta: "%2" - + System wake-up event detected. Re-announcing to all the trackers... S'ha detectat un esdeveniment d'activació del sistema. Es torna a anunciar a tots els rastrejadors... - + Peer ID: "%1" ID del client: "%1" - + HTTP User-Agent: "%1" Agent d'usuari d'HTTP: "%1" - + Peer Exchange (PeX) support: %1 Suport per a l'intercanvi de clients (PeX): %1 - - + + Anonymous mode: %1 Mode anònim: %1 - - + + Encryption support: %1 Suport d'encriptació: %1 - - + + FORCED FORÇAT - + Could not find GUID of network interface. Interface: "%1" No s'ha pogut trobar el GUID de la interfície de xarxa. Interfície: "%1" - + Trying to listen on the following list of IP addresses: "%1" S'intenta escoltar la llista següent d'adreces IP: "%1" - + Torrent reached the share ratio limit. El torrent ha arribat al límit de la compartició. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - S'ha suprimit el torrent. + S'ha suprimit el torrent. - - - Removed torrent and deleted its content. - S'ha suprimit el torrent i el seu contingut. + S'ha suprimit el torrent i el seu contingut. - - - Torrent paused. - Torrent interromput + Torrent interromput - - - + Super seeding enabled. Supersembra habilitada. - + Torrent reached the seeding time limit. El torrent ha arribat al límit de temps de sembra. - + Torrent reached the inactive seeding time limit. El torrent ha arribat al límit de temps de sembra inactiu. - + Failed to load torrent. Reason: "%1" No s'ha pogut carregar el torrent. Raó: "%1" - + I2P error. Message: "%1". + Error d'I2P. Missatge: %1. + + + + UPnP/NAT-PMP support: ON + Suport d'UPnP/NAT-PMP: ACTIU + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Es baixa el torrent. Espereu... Font: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - No s'ha pogut carregar el torrent. Font: "%1". Raó: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - S'ha detectat un intent d'afegir un torrent duplicat. La combinació de rastrejadors està desactivada. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - S'ha detectat un intent d'afegir un torrent duplicat. Els seguidors no es poden combinar perquè és un torrent privat. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - S'ha detectat un intent d'afegir un torrent duplicat. Els rastrejadors es fusionen des de la font nova. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Suport d'UPnP/NAT-PMP: ACTIU + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Suport d'UPnP/NAT-PMP: DESACTIVAT + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - No s'ha pogut exportar el torrent. Torrent: "%1". Destinació: "%2". Raó: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - S'ha avortat l'emmagatzematge de les dades de represa. Nombre de torrents pendents: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + La fusió de rastrejadors està desactivada. + + + + Trackers cannot be merged because it is a private torrent + Els rastrejadors no es poden fusionar perquè és un torrent privat. - System network status changed to %1 - e.g: System network status changed to ONLINE - Estat de la xarxa del sistema canviat a %1 + + Trackers are merged from new source + Els rastrejadors es fusionen des de la font nova. - ONLINE - EN LÍNIA + + UPnP/NAT-PMP support: OFF + Suport d'UPnP/NAT-PMP: DESACTIVAT - OFFLINE - FORA DE LÍNIA + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + No s'ha pogut exportar el torrent. Torrent: "%1". Destinació: "%2". Raó: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - S'ha canviat la configuració de xarxa de %1, es reinicia la vinculació de la sessió. + + Aborted saving resume data. Number of outstanding torrents: %1 + S'ha avortat l'emmagatzematge de les dades de represa. Nombre de torrents pendents: %1 - + The configured network address is invalid. Address: "%1" L'adreça de xarxa configurada no és vàlida. Adreça: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" No s'ha pogut trobar l'adreça de xarxa configurada per escoltar. Adreça: "%1" - + The configured network interface is invalid. Interface: "%1" La interfície de xarxa configurada no és vàlida. Interfície: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" S'ha rebutjat l'adreça IP no vàlida mentre s'aplicava la llista d'adreces IP prohibides. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" S'ha afegit un rastrejador al torrent. Torrent: "%1". Rastrejador: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" S'ha suprimit el rastrejador del torrent. Torrent: "%1". Rastrejador: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" S'ha afegit una llavor d'URL al torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" S'ha suprimit la llavor d'URL del torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent interromput. Torrent: "%1" + Torrent interromput. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent reprès. Torrent: "%1" - + Torrent download finished. Torrent: "%1" S'ha acabat la baixada del torrent. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" S'ha cancel·lat el moviment del torrent. Torrent: "%1". Font: "%2". Destinació: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination No s'ha pogut posar a la cua el moviment del torrent. Torrent: "%1". Font: "%2". Destinació: "%3". Raó: el torrent es mou actualment a la destinació - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location No s'ha pogut posar a la cua el moviment del torrent. Torrent: "%1". Font: "%2" Destinació: "%3". Raó: tots dos camins apunten al mateix lloc. - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Moviment de torrent a la cua. Torrent: "%1". Font: "%2". Destinació: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Es comença a moure el torrent. Torrent: "%1". Destinació: "% 2" - + Failed to save Categories configuration. File: "%1". Error: "%2" No s'ha pogut desar la configuració de categories. Fitxer: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" No s'ha pogut analitzar la configuració de categories. Fitxer: "%1". Error: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Baixada recursiva del fitxer .torrent dins del torrent. Torrent font: "%1". Fitxer: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - No s'ha pogut carregar el fitxer .torrent dins del torrent. Font del torrent: "%1". Fitxer: "%2". Error: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 S'ha analitzat correctament el fitxer de filtre d'IP. Nombre de regles aplicades: %1 - + Failed to parse the IP filter file No s'ha pogut analitzar el fitxer del filtre d'IP. - + Restored torrent. Torrent: "%1" Torrent restaurat. Torrent: "%1" - + Added new torrent. Torrent: "%1" S'ha afegit un torrent nou. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" S'ha produït un error al torrent. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - S'ha suprimit el torrent. Torrent: "%1" + S'ha suprimit el torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - S'ha suprimit el torrent i el seu contingut. Torrent: "%1" + S'ha suprimit el torrent i el seu contingut. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Al torrent falten paràmetres d'SSL. Torrent: %1. Missatge: %2 - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Alerta d'error del fitxer. Torrent: "%1". Fitxer: "%2". Raó: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Ha fallat l'assignació de ports UPnP/NAT-PMP. Missatge: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" L'assignació de ports UPnP/NAT-PMP s'ha fet correctament. Missatge: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtre IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). port filtrat (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). port privilegiat (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + La sessió de BitTorrent ha trobat un error greu. Raó: %1 + + + SOCKS5 proxy error. Address: %1. Message: "%2". Error d'intermediari SOCKS5. Adreça: %1. Missatge: %2. - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restriccions de mode mixt - + Failed to load Categories. %1 No s'han pogut carregar les categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" No s'ha pogut carregar la configuració de les categories. Fitxer: %1. Error: format de dades no vàlid. - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent eliminat, però error al esborrar el contingut i/o fitxer de part. Torrent: "%1". Error: "%2" + Torrent eliminat, però error al esborrar el contingut i/o fitxer de part. Torrent: "%1". Error: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 està inhabilitat - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 està inhabilitat - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - La cerca de DNS de llavors d'URL ha fallat. Torrent: "%1". URL: "%2". Error: "%3" + La cerca de DNS de llavors d'URL ha fallat. Torrent: "%1". URL: "%2". Error: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" S'ha rebut un missatge d'error de la llavor d'URL. Torrent: "%1". URL: "%2". Missatge: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" S'escolta correctament la IP. IP: "%1". Port: "%2 / %3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" No s'ha pogut escoltar la IP. IP: "%1". Port: "%2 / %3". Raó: "%4" - + Detected external IP. IP: "%1" S'ha detectat una IP externa. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Error: la cua d'alertes interna està plena i les alertes s'han suprimit. És possible que vegeu un rendiment degradat. S'ha suprimit el tipus d'alerta: "%1". Missatge: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" El torrent s'ha mogut correctament. Torrent: "%1". Destinació: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" No s'ha pogut moure el torrent. Torrent: "%1". Font: "%2". Destinació: "%3". Raó: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operació avortada - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - No s'ha pogut crear el fitxer de torrent nou. Raó: %1. + + Failed to start seeding. + No s'ha pogut començar a sembrar. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operació avortada + Operació avortada + + Create new torrent file failed. Reason: %1. - No s'ha pogut crear el fitxer de torrent nou. Raó: %1. + No s'ha pogut crear el fitxer de torrent nou. Raó: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 No s'ha pogut afegir el client «%1» al torrent «%2». Raó: %3 - + Peer "%1" is added to torrent "%2" S'ha afegit el client «%1» al torrent «%2» - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. S'han detectat dades inesperades. Torrent: %1. Dades: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. No s'ha pogut escriure al fitxer. Raó: "%1". El torrent està ara en mode "només per pujar". - + Download first and last piece first: %1, torrent: '%2' Baixa primer els trossos del principi i del final: %1, torrent: «%2» - + On Activat - + Off Desactivat - + + Failed to reload torrent. Torrent: %1. Reason: %2 + No s'ha pogut tornar a carregar el torrent. Torrent: %1. Raó: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Ha fallat generar les dades de represa. Torrent: "%1". Raó: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" No s'ha pogut restaurar el torrent. Probablement els fitxers s'han mogut o l'emmagatzematge no és accessible. Torrent: "%1". Raó: "% 2" - + Missing metadata Falten metadades - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" No s'ha pogut canviar el nom del fitxer. «%1», fitxer: «%2», raó: «%3» - + Performance alert: %1. More info: %2 Alerta de rendiment: %1. Més informació: %2 @@ -2740,184 +2819,198 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' El paràmetre "%1" ha de seguir la sintaxi "%1=%2" - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' El paràmetre "%1" ha de seguir la sintaxi "%1=%2" - + Expected integer number in environment variable '%1', but got '%2' S'esperava un número enter a la variable d'entorn "%1", però s'ha obtingut "%2". - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - El paràmetre "%1" ha de seguir la sintaxi "%1=%2" + El paràmetre "%1" ha de seguir la sintaxi "%1=%2" - + Expected %1 in environment variable '%2', but got '%3' S'esperava %1 a la variable d'entorn "%2", però s'ha obtingut "%3". - - + + %1 must specify a valid port (1 to 65535). %1 ha d'especificar un port vàlid (d'1 a 65535). - + Usage: Utilització: - + [options] [(<filename> | <url>)...] [opcions] [(<filename> | <url>)...] - + Options: Opcions: - + Display program version and exit Mostra la versió del programa i surt. - + Display this help message and exit Mostra aquest missatge d'ajuda i surt. - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + El paràmetre "%1" ha de seguir la sintaxi "%1=%2" + + + + Confirm the legal notice + Confirmeu l'avís legal + + + + port port - - Change the Web UI port - Canvia el port de la interfície web. + + Change the WebUI port + Canvieu el port de la interfície web - + Change the torrenting port Canvia el port del torrent - + Disable splash screen Desactiva finestra de benvinguda - + Run in daemon-mode (background) Executa en mode dimoni (segon terme) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Desa els fitxers de configuració a <dir> - - + + name nom - + Store configuration files in directories qBittorrent_<name> Desa els fitxers de configuració en directoris qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Entreu als fitxers de represa ràpida de libtorrent i feu els camins dels fitxers relatius al directori del perfil. - + files or URLs fitxers o URLs - + Download the torrents passed by the user Baixa els Torrents passats per l'usuari. - + Options when adding new torrents: Opcions en afegir torrents nous: - + path camí - + Torrent save path Camí per desar el torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Afegeix els torrents com a iniciats o interromputs + Afegeix els torrents com a iniciats o interromputs - + Skip hash check Omet la comprovació del resum - + Assign torrents to category. If the category doesn't exist, it will be created. Assignació de torrents a una categoria. Si la categoria no existeix, es crearà. - + Download files in sequential order Baixa fitxers en ordre seqüencial - + Download first and last pieces first Baixa primer els trossos del principi i del final - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Especifica si el diàleg "Afegeix un torrent nou" s'obre quan s'afegeixi un torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Els valors de les opcions es poden proporcionar a través de variables d'entorn. Per a l'opció anomenada "parameter-name", el nom de la variable d'entorn és "QBT_PARAMETER_NAME" (en majúscules, "-" reemplaçat per "_"). Per passar valors d'indicadors, establiu la variable a "1" o "TRUE". Per exemple, per inhabilitar la pantalla de benvinguda: - + Command line parameters take precedence over environment variables Els paràmetres de la línia d'ordres tenen prioritat per davant de les variables d'entorn. - + Help Ajuda @@ -2925,17 +3018,17 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb CategoryFilterModel - + Categories Categories - + All Tots - + Uncategorized Sense categoria @@ -2969,13 +3062,21 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb - Resume torrents - Reprèn els torrents + Start torrents + + Stop torrents + + + + Resume torrents + Reprèn els torrents + + Pause torrents - Interromp els torrents + Interromp els torrents @@ -2986,15 +3087,20 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb ColorWidget - + Edit... Editar... - + Reset Restableix + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb CustomThemeSource - + Failed to load custom theme style sheet. %1 No s'ha pogut carregar el full d'estil del tema personalitzat. %1 - + Failed to load custom theme colors. %1 No s'han pogut carregar els colors del tema personalitzat. %1 @@ -3048,7 +3154,7 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb DefaultThemeSource - + Failed to load default theme colors. %1 No s'han pogut carregar els colors del tema predeterminat. %1 @@ -3067,23 +3173,27 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb + Also remove the content files + + + Also permanently delete the files - També suprimeix permanentment els fitxers + També suprimeix permanentment els fitxers - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Segur que voleu suprimir "%1" de la llista de transferències? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Segur que voleu suprimir aquests %1 torrents de la llista de transferència? - + Remove Suprimeix @@ -3096,12 +3206,12 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb Baixa des d'URLs - + Add torrent links Afegeix enllaços torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Un enllaç per línia (es permeten enllaços d'HTTP, enllaços magnètics i informació de funcions de resum) @@ -3111,12 +3221,12 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb Baixa - + No URL entered No s'ha escrit cap URL. - + Please type at least one URL. Escriviu almenys un URL. @@ -3275,64 +3385,91 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb Error d'anàlisi: el fitxer de filtre no és un fitxer de PeerGuardian P2B vàlid. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Es baixa el torrent... Font: "%1" - Trackers cannot be merged because it is a private torrent - + Els rastrejadors no es poden fusionar perquè és un torrent privat. - + Torrent is already present - El torrent ja hi és + El torrent ja hi és + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - El torrent "%1" ja és a la llista de transferència. Voleu fuisionar els rastrejadors des d'una font nova? + El torrent "%1" ja és a la llista de transferència. Voleu fuisionar els rastrejadors des d'una font nova? GeoIPDatabase - - + + Unsupported database file size. La mida del fitxer de base de dades no és suportada. - + Metadata error: '%1' entry not found. Error de metadades: «%1» entrades no trobades. - + Metadata error: '%1' entry has invalid type. Error de metadades: «%1» entrades tenen una escriptura no vàlida. - + Unsupported database version: %1.%2 Versió de base de dades no suportada: %1.%2 - + Unsupported IP version: %1 Versió IP no suportada: %1 - + Unsupported record size: %1 Mida de registre no suportada: %1 - + Database corrupted: no data section found. Base de dades corrupta: no s'ha trobat secció de dades. @@ -3340,17 +3477,17 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 La mida de la petició d'http excedeix el límit. Es tanca el sòcol. Límit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Mètode de sol·licitud d'Http incorrecte. Es tanca el sòcol. IP: %1. Mètode: %2 - + Bad Http request, closing socket. IP: %1 Petició d'Http errònia, es tanca el sòcol. IP: %1 @@ -3391,36 +3528,64 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb IconWidget - + Browse... Explora... - + Reset Restableix - + Select icon Selecciona icona - + Supported image files Fitxers d'imatge suportats + + LegalNotice + + + Legal Notice + Avís Legal + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + El qBittorrent és un programa de compartició de fitxers. Quan s'obre un torrent, les dades que conté es posaran a disposició d’altres mitjançant la càrrega. Qualsevol contingut que compartiu és únicament responsabilitat vostra. + + + + No further notices will be issued. + No es publicaran més avisos. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Si heu llegit l'avís legal, podeu usar l'opció de línia d'ordres --confirm-legal-notice per suprimir aquest missatge. + + + + Press 'Enter' key to continue... + Premeu la tecla de retorn per continuar... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. S'ha blocat %1. Raó: %2 - + %1 was banned 0.0.0.0 was banned %1 s'ha prohibit. @@ -3429,91 +3594,62 @@ Admet els formats S01E01, 1x1, 2017.12.31 i 31.12.2017 (Els formats de data tamb Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 és un parametre de comanda de línia no conegut. - - + + %1 must be the single command line parameter. %1 ha de ser un sol paràmetre de comanda de línia. - - You cannot use %1: qBittorrent is already running for this user. - No podeu usar %1: el qBittorrent ja s'executa per a aquest usuari. - - - + Run application with -h option to read about command line parameters. Executa l'aplicació amb l'opció -h per a llegir quant als paràmetres de comandes de línia. - + Bad command line Comanda de línia errònia - + Bad command line: Comanda de línia errònia: - + An unrecoverable error occurred. - + S'ha produït un error irrecuperable. - - + + qBittorrent has encountered an unrecoverable error. - + El qBittorrent ha trobat un error irrecuperable. - - Legal Notice - Notes legals - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - El qBittorrent és un programa de compartició de fitxers. Quan s'obre un torrent, les dades que conté es posaran a disposició d’altres mitjançant la càrrega. Qualsevol contingut que compartiu és únicament responsabilitat vostra. - - - - No further notices will be issued. - No es publicaran més avisos. - - - - Press %1 key to accept and continue... - Premeu la tecla %1 per a acceptar i continuar... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - El qBittorrent és un programa de compartició de fitxers. Quan s'obre un torrent, les dades que conté es posaran a disposició d’altres mitjançant la càrrega. Qualsevol contingut que compartiu és únicament responsabilitat vostra. - -No s'emetrà cap més avís. + + You cannot use %1: qBittorrent is already running. + No podeu usar %1: el qBittorrent ja s'executa. - - Legal notice - Notes legals + + Another qBittorrent instance is already running. + Una altra instància del qBittorrent ja s'executa. - - Cancel - Cancel·la + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + S'ha trobat una instància de qBittorrent inesperada. Se surt d'aquesta instància. ID del procés actual: %1. - - I Agree - Hi estic d'acord + + Error when daemonizing. Reason: "%1". Error code: %2. + Error en demonitzar. Raó: %1. Codi d'error: %2. @@ -3524,621 +3660,706 @@ No s'emetrà cap més avís. &Edita - + &Tools &Eines - + &File &Fitxer - + &Help &Ajuda - + On Downloads &Done En acabar les baixa&des... - + &View &Visualitza - + &Options... &Opcions... - &Resume - &Reprèn + &Reprèn - + &Remove Sup&rimeix - + Torrent &Creator &Creador de torrents - - + + Alternative Speed Limits Límits de velocitat alternativa - + &Top Toolbar Barra d'eines &superior - + Display Top Toolbar Mostra barra d'eines superior - + Status &Bar &Barra d'estat - + Filters Sidebar Barra lateral de filtres - + S&peed in Title Bar Mostra v&elocitat a la barra de títol - + Show Transfer Speed in Title Bar Mostra la velocitat de transferència a la barra de títol - + &RSS Reader Lector d'&RSS - + Search &Engine &Motor de cerca - + L&ock qBittorrent B&loca el qBittorrent - + Do&nate! Feu una do&nació! - + + Sh&utdown System + + + + &Do nothing &No facis res - + Close Window Tanca la finestra - R&esume All - R&eprèn-ho tot + R&eprèn-ho tot - + Manage Cookies... Gestió de galetes... - + Manage stored network cookies Gestió de galetes de xarxa emmagatzemades - + Normal Messages Missatges normals - + Information Messages Missatges informatius - + Warning Messages Missatges d'advertència - + Critical Messages Missatges crítics - + &Log &Registre - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Estableix els límits de velocitat globals... - + Bottom of Queue Al capdavall de la cua - + Move to the bottom of the queue Mou al capdavall de la cua - + Top of Queue Al capdamunt de la cua - + Move to the top of the queue Mou al capdamunt de la cua - + Move Down Queue Mou cua avall - + Move down in the queue Mou cua avall - + Move Up Queue Mou cua amunt - + Move up in the queue Mou cua avall - + &Exit qBittorrent &Tanca el qBittorrent - + &Suspend System &Suspèn el sistema - + &Hibernate System &Hiberna el sistema - S&hutdown System - A&paga el sistema + A&paga el sistema - + &Statistics &Estadístiques - + Check for Updates Cerca actualitzacions - + Check for Program Updates Cerca actualitzacions del programa - + &About &Quant a - &Pause - Interrom&p + Interrom&p - P&ause All - Interromp-ho tot + Interromp-ho tot - + &Add Torrent File... &Afegeix un fitxer torrent... - + Open Obre - + E&xit T&anca - + Open URL Obre un URL - + &Documentation &Documentació - + Lock Bloca - - - + + + Show Mostra - + Check for program updates Cerca actualitzacions del programa - + Add Torrent &Link... Afegeix un &enllaç torrent... - + If you like qBittorrent, please donate! Si us agrada el qBittorrent, feu una donació! - - + + Execution Log Registre d'execució - + Clear the password Esborra la contrasenya - + &Set Password &Estableix una contrasenya - + Preferences Preferències - + &Clear Password &Esborra la contrasenya - + Transfers Transferint - - + + qBittorrent is minimized to tray El qBittorrent està minimitzat a la safata. - - - + + + This behavior can be changed in the settings. You won't be reminded again. Aquest comportament es pot canviar a la configuració. No se us tornarà a recordar. - + Icons Only Només icones - + Text Only Només text - + Text Alongside Icons Text al costat de les icones - + Text Under Icons Text sota les icones - + Follow System Style Segueix l'estil del sistema - - + + UI lock password Contrasenya de bloqueig - - + + Please type the UI lock password: Escriviu la contrasenya de bloqueig de la interfície: - + Are you sure you want to clear the password? Esteu segur que voleu esborrar la contrasenya? - + Use regular expressions Usa expressions regulars - - Search - Cerca + + + Search Engine + Motor de cerca - - Transfers (%1) - Transferències (%1) + + Search has failed + La cerca ha fallat - Recursive download confirmation - Confirmació de baixades recursives + + Search has finished + La cerca s'ha acabat. - Never - Mai + + Search + Cerca + + + + Transfers (%1) + Transferències (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. El qBittorrent s'ha actualitzat i s'ha de reiniciar perquè els canvis tinguin efecte. - + qBittorrent is closed to tray El qBittorrent està tancat a la safata. - + Some files are currently transferring. Ara es transfereixen alguns fitxers. - + Are you sure you want to quit qBittorrent? Segur que voleu sortir del qBittorrent? - + &No &No - + &Yes &Sí - + &Always Yes &Sempre sí - + Options saved. Opcions desades - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime - Manca el temps d'execució de Python + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 - + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Manca el temps d'execució de Python + + + qBittorrent Update Available Actualització del qBittorrent disponible - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Es requereix Python per a fer servir el motor de cerca i sembla que no el teniu instal·lat. Voleu instal·lar-lo ara? - + Python is required to use the search engine but it does not seem to be installed. Es requereix Python per a fer servir el motor de cerca i sembla que no el teniu instal·lat. - - + + Old Python Runtime Temps d'execució antic de Python - + A new version is available. Hi ha disponible una nova versió. - + Do you want to download %1? Voleu baixar %1? - + Open changelog... Obre el registre de canvis... - + No updates available. You are already using the latest version. No hi ha actualitzacions disponibles. Esteu fent servir la darrera versió. - + &Check for Updates &Cerca actualitzacions - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? La vostra versió de Python (%1) està obsoleta. Requisit mínim: %2. Voleu instal·lar-ne una versió més nova ara? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. La versió de Python (%1) està obsoleta. Actualitzeu-la a la darrera versió perquè funcionin els motors de cerca. Requisit mínim: %2. - + + Paused + Interromput + + + Checking for Updates... Cercant actualitzacions... - + Already checking for program updates in the background Ja se cerquen actualitzacions en segon terme. - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Error de baixada - Python setup could not be downloaded, reason: %1. Please install it manually. - No ha estat possible baixar l'instal·lador de Python, raó: 51. + No ha estat possible baixar l'instal·lador de Python, raó: 51. Instal·leu-lo manualment. - - + + Invalid password Contrasenya no vàlida - + Filter torrents... Filtrar torrents... - + Filter by: Filtrar per: - + The password must be at least 3 characters long La contrasenya ha de tenir almenys 3 caràcters. - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - El torrent "%1" conté fitxers .torrent. En voleu continuar les baixades? - - - + The password is invalid La contrasenya no és vàlida. - + DL speed: %1 e.g: Download speed: 10 KiB/s Velocitat de baixada: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Velocitat de pujada: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [B: %1, P: %2] qBittorrent %3 - - - + Hide Amaga - + Exiting qBittorrent Se surt del qBittorrent - + Open Torrent Files Obre fitxers torrent - + Torrent Files Fitxers torrent @@ -4199,133 +4420,133 @@ Instal·leu-lo manualment. Net::DownloadHandlerImpl - - + + I/O Error: %1 Error d'entrada / sortida: %1 - + The file size (%1) exceeds the download limit (%2) La mida del fitxer (%1) excedeix el límit de baixada (%2). - + Exceeded max redirections (%1) S'ha excedit el màxim de redireccions (%1) - + Redirected to magnet URI Redirigit a l'URI magnètic - + The remote host name was not found (invalid hostname) El nom d'amfitrió remot no s'ha trobat (nom d'amfitrió no vàlid). - + The operation was canceled S'ha cancel·lat l'operació. - + The remote server closed the connection prematurely, before the entire reply was received and processed El servidor remot ha tancat la connexió abans d'hora, abans de rebre i processar tota la resposta. - + The connection to the remote server timed out S'ha esgotat el temps d'espera de la connexió al servidor remot. - + SSL/TLS handshake failed Ha fallat l'encaixada d'SSL / TLS. - + The remote server refused the connection El servidor remot ha rebutjat la connexió. - + The connection to the proxy server was refused S'ha denegat la connexió amb el servidor intermediari. - + The proxy server closed the connection prematurely El servidor intermediari ha tancat la connexió prematurament. - + The proxy host name was not found No s'ha trobat el nom del servidor intermediari. - + The connection to the proxy timed out or the proxy did not reply in time to the request sent La connexió amb el servidor intermediari s'ha esgotat, o el servidor no ha respost a temps la petició enviada. - + The proxy requires authentication in order to honor the request but did not accept any credentials offered El servidor intermediari requereix autenticació per atendre la petició, però no ha acceptat les credencials ofertes. - + The access to the remote content was denied (401) L'accés al contingut remot s'ha denegat (401). - + The operation requested on the remote content is not permitted L'operació sol·licitada al contingut remot no és permesa. - + The remote content was not found at the server (404) El contingut remot no s'ha trobat al servidor (404). - + The remote server requires authentication to serve the content but the credentials provided were not accepted El servidor remot requereix autenticació per servir el contingut, però les credencials proporcionades no s'han acceptat. - + The Network Access API cannot honor the request because the protocol is not known L'accés a la xarxa de l'API no pot atendre la petició perquè el protocol és desconegut. - + The requested operation is invalid for this protocol L'operació sol·licitada no és vàlida per a aquest protocol. - + An unknown network-related error was detected S'ha detectat un error de xarxa desconegut. - + An unknown proxy-related error was detected S'ha detectat un error desconegut relacionat amb el servidor intermediari. - + An unknown error related to the remote content was detected S'ha detectat un error desconegut relacionat amb el contingut remot. - + A breakdown in protocol was detected S'ha detectat una fallada al protocol. - + Unknown error Error desconegut @@ -4333,7 +4554,12 @@ Instal·leu-lo manualment. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" S'ignora un error SSL, URL: "%1", errors: "%2" @@ -5705,294 +5931,307 @@ Instal·leu-lo manualment. Bittorrent - + RSS RSS - Web UI - Interfície web + Interfície web - + Advanced Avançat - + Customize UI Theme... Personalitzar el tema de IU... - + Transfer List Llista de transferència - + Confirm when deleting torrents Demana confirmació per suprimir torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - Mostra un diàleg de confirmació en interrompre / reprendre tots els torrents. + Mostra un diàleg de confirmació en interrompre / reprendre tots els torrents. - Confirm "Pause/Resume all" actions - Confirmeu les accions "Interromp / Reprèn-ho tot". + Confirmeu les accions "Interromp / Reprèn-ho tot". - + Use alternating row colors In table elements, every other row will have a grey background. Usa colors alterns a les files de la llista - + Hide zero and infinity values Amaga els valors zero i infinit - + Always Sempre - Paused torrents only - Només els torrents interromputs + Només els torrents interromputs - + Action on double-click Acció a fer amb un doble click - + Downloading torrents: Torrents de baixada: - - Start / Stop Torrent - Iniciar / Aturar Torrent + Iniciar / Aturar Torrent - - + + Open destination folder Obre la carpeta de destinació - - + + No action Sense acció - + Completed torrents: Torrents completats: - + Auto hide zero status filters Auto amagar filtres d'estat zero - + Desktop Escriptori - + Start qBittorrent on Windows start up Inicia el qBittorrent durant l'arrencada de Windows - + Show splash screen on start up Mostra la pantalla de benvinguda en iniciar - + Confirmation on exit when torrents are active Confirma el tancament quan hi hagi torrents actius. - + Confirmation on auto-exit when downloads finish Confirma el tancament automàtic quan les baixades acabin. - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Per establir el qBittorrent com a programa predeterminat per a fitxers .torrent i/o enllaços magnètics<br/>podeu fer servir el diàleg de <span style=" font-weight:600;">Programes per defecte </span>del <span style=" font-weight:600;">Centre de control</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Disposició del contingut del torrent: - + Original Original - + Create subfolder Crea una subcarpeta - + Don't create subfolder No creïs una subcarpeta - + The torrent will be added to the top of the download queue El torrent s'afegirà al capdamunt de la cua de baixades. - + Add to top of queue The torrent will be added to the top of the download queue Afegeix al capdamunt de la cua - + When duplicate torrent is being added Quan s'afegeix un torrent duplicat - + Merge trackers to existing torrent Fusiona els rastrejadors amb el torrent existent - + + Keep unselected files in ".unwanted" folder + Conserva els fitxers no seleccionats a la carpeta ".unwanted". + + + Add... Afegeix... - + Options.. Opcions... - + Remove Suprimeix - + Email notification &upon download completion Notificació per corre&u electrònic de l'acabament de les descàrregues - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protocol de connexió de clients: - + Any Qualsevol - + I2P (experimental) I2P (experimental) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>si &quot;mode mixte&quot; està actiu als torrents I2P se'ls permet també obtenir parells d'altres fonts que el tracker, i connectar a IPs normals sense oferir anonimització. Això pot ser útil si l'usuari no està interessat en l'anonimització de I2P, però encara vol conectar a parells I2P.</p></body></html> + <html><head/><body><p>si &quot;mode mixte&quot; està actiu als torrents I2P se'ls permet també obtenir parells d'altres fonts que el tracker, i connectar a IPs normals sense oferir anonimització. Això pot ser útil si l'usuari no està interessat en l'anonimització de I2P, però encara vol conectar a parells I2P.</p></body></html> - + Mixed mode Mode mixte - + Some options are incompatible with the chosen proxy type! Algunes opcions són incompatibles amb el tipus d'intermediari triat! - + If checked, hostname lookups are done via the proxy Si es marca, les cerques de nom d'amfitrió es fan a través de l'intermediari. - + Perform hostname lookup via proxy Realitzar cerca de nom de host via proxy - + Use proxy for BitTorrent purposes Usa l'intermediari per a finalitats de BitTorrent. - + RSS feeds will use proxy Els canals d'RSS usaran l'intermediari. - + Use proxy for RSS purposes Usa l'intermediari per a finalitats d'RSS. - + Search engine, software updates or anything else will use proxy El motor de cerca, les actualitzacions de programari o qualsevol altra cosa usaran l'intermediari. - + Use proxy for general purposes Usa l'intermediari per a finalitats generals. - + IP Fi&ltering Fi&ltratge d'IP - + Schedule &the use of alternative rate limits Programació de l'ús de lími&ts de velocitat alternatius - + From: From start time Des de: - + To: To end time A: - + Find peers on the DHT network Troba clients a la xarxa DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Requereix l'encriptació: connecta només amb clients amb protocol d'e Inhabiliata l'encriptació: només es connecta amb clients sense protocol d'encriptació. - + Allow encryption Permet l'encriptació - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Més informació</a>) - + Maximum active checking torrents: Màxim de torrents de comprovació actius: - + &Torrent Queueing Cua de &torrents - + When total seeding time reaches Quan s'arriba al temps total de sembra - + When inactive seeding time reaches Quan s'arriba al temps de sembra inactiva - A&utomatically add these trackers to new downloads: - Afegeix a&utomàticament aquests rastrejadors a les baixades noves: + Afegeix a&utomàticament aquests rastrejadors a les baixades noves: - + RSS Reader Lector d'RSS - + Enable fetching RSS feeds Habilita l'obtenció de canals d'RSS - + Feeds refresh interval: Interval d'actualització dels canals: - + + Same host request delay: + El mateix retard de sol·licitud d'amfitrió: + + + Maximum number of articles per feed: Nombre màxim d'articles per canal: - - - + + + min minutes min. - + Seeding Limits Límits de sembra - Pause torrent - Interromp el torrent + Interromp el torrent - + Remove torrent Suprimeix el torrent - + Remove torrent and its files Suprimeix el torrent i els fitxers - + Enable super seeding for torrent Habilita la supersembra per al torrent - + When ratio reaches Quan la ràtio assoleixi - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Descarregador automàtic de torrents d'RSS - + Enable auto downloading of RSS torrents Habilita la baixada automàtica de torrents d'RSS - + Edit auto downloading rules... Edita les regles de baixada automàtica... - + RSS Smart Episode Filter Filtre d'episodis intel·ligents d'RSS - + Download REPACK/PROPER episodes Baixa els episodis REPACK / PROPER - + Filters: Filtres: - + Web User Interface (Remote control) Interfície d'usuari web (control remot) - + IP address: Adreça IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Especifiqueu una adreça IPv4 o IPv6. Podeu especificar "0.0.0.0" per "::" per a qualsevol adreça IPv6 o bé "*" per a IPv4 i IPv6. - + Ban client after consecutive failures: Prohibeix el client després de fallades consecutives: - + Never Mai - + ban for: prohibeix per a: - + Session timeout: Temps d'espera de la sessió: - + Disabled Inhabilitat - Enable cookie Secure flag (requires HTTPS) - Habilita la galeta de bandera de seguretat (requereix HTTPS) + Habilita la galeta de bandera de seguretat (requereix HTTPS) - + Server domains: Dominis de servidor: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ d'introduir noms de domini usats pel servidor d'interfície d'usu Useu ";" per separar les entrades. Podeu usar el comodí "*". - + &Use HTTPS instead of HTTP &Usa HTTPS en lloc d'HTTP - + Bypass authentication for clients on localhost Evita l'autenticació per als clients en l'amfitrió local - + Bypass authentication for clients in whitelisted IP subnets Evita l'autenticació per als clients en subxarxes en la llista blanca - + IP subnet whitelist... Llista blanca de subxarxes IP... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Especifiqueu les adreces IP del servidor invers (o subxarxes, per exemple, 0.0.0.0/24) per usar l'adreça de client reenviada (capçalera X-Forwarded-For). Useu ";" per dividir diverses entrades. - + Upda&te my dynamic domain name Actuali&tza el meu nom de domini dinàmic - + Minimize qBittorrent to notification area Minimitza el qBittorrent a l'àrea de notificació. - + + Search + Cerca + + + + WebUI + + + + Interface Interfície - + Language: Llengua: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Estil de la icona al plafó: - - + + Normal Normal - + File association Associació de fitxers - + Use qBittorrent for .torrent files Usa el qBittorrent per a obrir fitxers .torrent - + Use qBittorrent for magnet links Usa el qBittorrent per als enllaços magnètics - + Check for program updates Comprova si hi ha actualitzacions del programa. - + Power Management Gestió de la bateria - + + &Log Files + + + + Save path: Camí on desar-ho: - + Backup the log file after: Fes una còpia del registre després de: - + Delete backup logs older than: Suprimeix registres de còpia de seguretat més antics de... - + + Show external IP in status bar + + + + When adding a torrent En afegir un torrent - + Bring torrent dialog to the front Porta el diàleg del torrent al davant - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Suprimeix també els fitxers .torrent dels quals n'hàgiu cancel·lat l'addició. - + Also when addition is cancelled També quan hagi estat cancel·lada l'addició. - + Warning! Data loss possible! Atenció! Es poden perdre dades! - + Saving Management Gestió de l'acció de desar - + Default Torrent Management Mode: Mode de Gestió dels torrents predeterminat: - + Manual Manual - + Automatic Automàtic - + When Torrent Category changed: En canviar la categoria del torrent: - + Relocate torrent Realltogeu el torrent - + Switch torrent to Manual Mode Canvieu el torrent a Mode Manual - - + + Relocate affected torrents Reallotgeu els torrents afectats. - - + + Switch affected torrents to Manual Mode Canvieu els torrents afectats a Mode Manual. - + Use Subcategories Usa subcategories - + Default Save Path: Camí on desar-ho per defecte: - + Copy .torrent files to: Copia els fitxers torrent a: - + Show &qBittorrent in notification area Mostra el &qBittorrent a l'àrea de notificació. - &Log file - Fit&xer de registre + Fit&xer de registre - + Display &torrent content and some options Mostra el contingut del &torrent i algunes opcions - + De&lete .torrent files afterwards Su&primeix els fitxers .torrent després. - + Copy .torrent files for finished downloads to: Copia els fitxers .torrent de les baixades acabades a: - + Pre-allocate disk space for all files Preassigna espai al disc per a tots els fitxers - + Use custom UI Theme Usa el tema d'IU personalitzat. - + UI Theme file: Fitxer de tema d'IU: - + Changing Interface settings requires application restart Canviar la configuració de la interfície requereix reiniciar l'aplicació. - + Shows a confirmation dialog upon torrent deletion Mostra un diàleg de confirmació en suprimir un torrent - - + + Preview file, otherwise open destination folder Previsualitza el fitxer; si no, obre la carpeta de destinació. - - Show torrent options - Mostra les opcions del torrent + Mostra les opcions del torrent - + Shows a confirmation dialog when exiting with active torrents Mostra un diàleg de confirmació en sortir amb torrents actius - + When minimizing, the main window is closed and must be reopened from the systray icon Quan es minimitza, la finestra principal es tanca i s’ha de tornar a obrir des de la icona de la safata de sistema. - + The systray icon will still be visible when closing the main window La icona de la safata de sistema encara serà visible en tancar la finestra principal. - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Tanca el qBittorrent a l'àrea de notificacions. - + Monochrome (for dark theme) Monocrom (per al tema fosc) - + Monochrome (for light theme) Monocrom (per al tema clar) - + Inhibit system sleep when torrents are downloading Inhibeix la suspensió del sistema quan es baixin torrents. - + Inhibit system sleep when torrents are seeding Inhibeix la suspensió del sistema quan els torrents sembrin. - + Creates an additional log file after the log file reaches the specified file size Crea un fitxer de registre addicional després que el fitxer de registre arribi a la mida de fitxer especificada - + days Delete backup logs older than 10 days dies - + months Delete backup logs older than 10 months mesos - + years Delete backup logs older than 10 years anys - + Log performance warnings Registra els avisos de rendiment - The torrent will be added to download list in a paused state - El torrent s’afegirà a la llista de baixades en estat interromput. + El torrent s’afegirà a la llista de baixades en estat interromput. - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state No iniciïs la baixada automàticament. - + Whether the .torrent file should be deleted after adding it Si el fitxer .torrent s'ha de suprimir després d'afegir-lo. - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Assigna la mida completa del fitxer al disc abans d’iniciar la baixada, per minimitzar-ne la fragmentació. Únicament útil per a discs durs. - + Append .!qB extension to incomplete files Afegeix l'extensió .!qB a fitxers incomplets - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Quan es baixa un torrent, ofereix afegir torrents des de qualsevol fitxer .torrent que es trobi dins. - + Enable recursive download dialog Habilita el diàleg de baixada recursiva - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automàtic: la categoria associada decidirà diverses propietats del torrent (per exemple, el camí on desar-ho) Manual: s'han d'assignar manualment diverses propietats del torrent (per exemple, el camí on desar-ho) - + When Default Save/Incomplete Path changed: Quan s'ha canviat el camí on desar-ho / incomplet per defecte: - + When Category Save Path changed: En canviar la categoria del camí on desar-ho: - + Use Category paths in Manual Mode Usa els camins de la categoria en el mode manual - + Resolve relative Save Path against appropriate Category path instead of Default one Resol el camí on desar-ho relatiu segons el camí de categoria en comptes del predeterminat - + Use icons from system theme Usa les icones del tema del sistema - + Window state on start up: Estat de la finestra a l'inici: - + qBittorrent window state on start up Estat de la finestra del qBittorrent a l'inici - + Torrent stop condition: Condició d'aturada del torrent: - - + + None Cap - - + + Metadata received Metadades rebudes - - + + Files checked Fitxers comprovats - + Ask for merging trackers when torrent is being added manually Demana la fusió de rastrejadors quan s'afegeixi un torrent manualment. - + Use another path for incomplete torrents: Usa un altre camí per als torrents incomplets: - + Automatically add torrents from: Afegeix torrents automàticament des de: - + Excluded file names Noms de fitxers exclosos - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: filtra el nom exacte del fitxer. readme[0-9].txt: filtra "readme1.txt", "readme2.txt" però no "readme10.txt". - + Receiver Receptor - + To: To receiver A: - + SMTP server: Servidor SMTP: - + Sender Remitent - + From: From sender Des de: - + This server requires a secure connection (SSL) El servidor requereix una connexió segura (SSL) - - + + Authentication Autentificació - - - - + + + + Username: Nom d'usuari: - - - - + + + + Password: Contrasenya: - + Run external program Executa un programa extern - Run on torrent added - Executa en afegir un torrent. + Executa en afegir un torrent. - Run on torrent finished - Executa en acabar un torrent. + Executa en acabar un torrent. - + Show console window Mostra la finestra de la consola - + TCP and μTP TCP i μTP - + Listening Port Port d'escolta - + Port used for incoming connections: Port utilitzat per a connexions entrants: - + Set to 0 to let your system pick an unused port Establiu-lo a 0 per deixar que el sistema triï un port no usat. - + Random Aleatori - + Use UPnP / NAT-PMP port forwarding from my router Utilitza UPnP / NAT-PMP reenviament de ports del router - + Connections Limits Límits de connexió - + Maximum number of connections per torrent: Nombre màxim de connexions per torrent: - + Global maximum number of connections: Nombre global màxim de connexions: - + Maximum number of upload slots per torrent: Nombre màxim de ranures de pujada per torrent: - + Global maximum number of upload slots: Nombre global màxim de ranures de pujada: - + Proxy Server Servidor intermediari - + Type: Tipus: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Amfitrió: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Per contra, el servidor intermediari s'utilitzarà només per les connexions tracker - + Use proxy for peer connections Usa un servidor intermediari per a connexions d'igual a igual. - + A&uthentication A&utenticació - + Info: The password is saved unencrypted Informació: la contrasenya es desa sense encriptació. - + Filter path (.dat, .p2p, .p2b): Camí del filtre (.dat, .p2p, .p2b): - + Reload the filter Actualitza el filtre - + Manually banned IP addresses... Adreces IP prohibides manualment... - + Apply to trackers Aplica als rastrejadors - + Global Rate Limits Límits de velocitat globals - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Pujada: - - + + Download: Baixada: - + Alternative Rate Limits Límits de velocitat alternatius - + Start time Hora d'inici - + End time Hora de final - + When: Quan: - + Every day Cada dia - + Weekdays De dilluns a divendres - + Weekends Caps de setmana - + Rate Limits Settings Paràmetres dels límits de velocitat - + Apply rate limit to peers on LAN Aplica el límit de velocitat als clients amb LAN - + Apply rate limit to transport overhead Aplica el límit de velocitat a la sobrecàrrega - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Aplica un límit de velocitat al protocol µTP - + Privacy Privacitat - + Enable DHT (decentralized network) to find more peers Habilita DHT (xarxa descentralitzada) per a trobar més clients - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Intercanvia clients amb gestors compatibles amb Bittorrent (µTorrent, Vuze...) - + Enable Peer Exchange (PeX) to find more peers Habilita l'intercanvi de clients (PeX) per a trobar-ne més. - + Look for peers on your local network Cerca clients a la xarxa local - + Enable Local Peer Discovery to find more peers Habilita el descobriment de clients locals per a trobar-ne més. - + Encryption mode: Mode d'encriptació: - + Require encryption Requereix l'encriptació - + Disable encryption Inhabilita l'encriptació - + Enable when using a proxy or a VPN connection Habilita quan utilitzi un servidor intermediari o una connexió VPN - + Enable anonymous mode Habilita el mode anònim - + Maximum active downloads: Màxim de baixades actives: - + Maximum active uploads: Màxim de pujades actives: - + Maximum active torrents: Màxim de torrent actius: - + Do not count slow torrents in these limits No comptis els torrents lents fora d'aquests límits - + Upload rate threshold: Llindar de la velocitat de pujada: - + Download rate threshold: Llindar de la velocitat de baixada: - - - + + + + sec seconds s - + Torrent inactivity timer: Temporitzador d'inactivitat del torrent: - + then després - + Use UPnP / NAT-PMP to forward the port from my router Utilitza UPnP / NAT-PMP per reenviar el port des de l'encaminador - + Certificate: Certificat: - + Key: Clau: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informació sobre els certificats</a> - + Change current password Canvia la contrasenya actual - Use alternative Web UI - Usa una interfície web alternativa + Usa una interfície web alternativa - + Files location: Ubicació dels fitxers: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Seguretat - + Enable clickjacking protection Habilita la protecció de segrest de clic. - + Enable Cross-Site Request Forgery (CSRF) protection Habilita protecció de la falsificació de peticions de llocs creuats (CSRF). - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Habilita la validació de la capçalera de l'amfitrió - + Add custom HTTP headers Afegeix capçaleres d'HTTP personalitzades - + Header: value pairs, one per line Capçalera: clients de valor, un per línia - + Enable reverse proxy support Habilita la compatibilitat amb el servidor intermediari invers - + Trusted proxies list: Llista d'intermediaris de confiança: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servei: - + Register Registre - + Domain name: Nom de domini: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Si s'habiliten aquestes opcions, podeu <strong>perdre irrevocablement</strong> els vostres fitxers .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Si habiliteu la segona opció (&ldquo;També quan l'addició es cancel·la&rdquo;) el fitxer .torrent <strong>se suprimirà</strong> fins i tot si premeu &ldquo;<strong>Cancel·la</strong>&rdquo; dins el diàleg &ldquo;Afegeix un torrent&rdquo; - + Select qBittorrent UI Theme file Seleccioneu el fitxer de tema de qBittorrent IU - + Choose Alternative UI files location Trieu una ubicació alternativa per als fitxers d'interfície d'usuari - + Supported parameters (case sensitive): Paràmetres admesos (sensible a majúscules): - + Minimized minimitzada - + Hidden amagada - + Disabled due to failed to detect system tray presence S'ha desactivat perquè no s'ha pogut detectar la presència de la safata del sistema. - + No stop condition is set. No s'ha establert cap condició d'aturada. - + Torrent will stop after metadata is received. El torrent s'aturarà després de rebre les metadades. - - Torrents that have metadata initially aren't affected. - Els torrents que tinguin metadades inicialment no n'estan afectats. - - - + Torrent will stop after files are initially checked. El torrent s'aturarà després de la comprovació inicial dels fitxers. - + This will also download metadata if it wasn't there initially. Això també baixarà metadades si no n'hi havia inicialment. - + %N: Torrent name %N: nom del torrent - + %L: Category %L: categoria - + %F: Content path (same as root path for multifile torrent) %F: Camí del contingut (igual que el camí d'arrel per a torrents de fitxers múltiples) - + %R: Root path (first torrent subdirectory path) %R: camí d'arrel (camí del subdirectori del primer torrent) - + %D: Save path %D: camí on desar-ho - + %C: Number of files %C: nombre de fitxers - + %Z: Torrent size (bytes) %Z mida del torrent (bytes) - + %T: Current tracker %T: rastrejador actual - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: emmarqueu el paràmetre amb cometes per evitar que el text es talli a l'espai en blanc (p.e., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Cap) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Es considerarà que un torrent és lent si les taxes de baixada i pujada es mantenen per sota d'aquests valors durant els segons del «Temporitzador d'inactivitat del torrent». - + Certificate Certificat: - + Select certificate Seleccioneu el certificat - + Private key Clau privada - + Select private key Seleccioneu la clau privada - + + WebUI configuration failed. Reason: %1 + La configuració de la interfície web ha fallat. Raó: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Seleccioneu una carpeta per monitorar. - + Adding entry failed No s'ha pogut afegir l'entrada - - Location Error - Error d'ubicació + + The WebUI username must be at least 3 characters long. + El nom d'usuari de la interfície web ha de tenir almenys 3 caràcters. - - The alternative Web UI files location cannot be blank. - La ubicació alternativa dels fitxers de la interfície web no pot estar en blanc. + + The WebUI password must be at least 6 characters long. + La contrasenya de la interfície web ha de tenir almenys 6 caràcters. + + + + Location Error + Error d'ubicació - - + + Choose export directory Trieu un directori d'exportació - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Quan aquestes opcions estan habilitades, el qBittorrent <strong>suprimirà</strong> fitxers .torrent després que s'hagin afegit correctament (la primera opció) o no (la segona) a la seva cua de baixada. Això s'aplicarà <strong>no només</strong> als fitxers oberts oberts a través de l'acció de menú &ldquo;Afegeix un torrent&rdquo; sinó també als oberts a través de l'<strong>associació de tipus de fitxer</strong>. - + qBittorrent UI Theme file (*.qbtheme config.json) Fitxer de tema de la IU de qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiquetes (separades per comes) - + %I: Info hash v1 (or '-' if unavailable) %I: informació de resum v1 (o '-' si no està disponible) - + %J: Info hash v2 (or '-' if unavailable) % J: hash d'informació v2 (o '-' si no està disponible) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Identificador del torrent (resum d'informació sha-1 per al torrent v1 o resum d'informació sha-256 truncat per al torrent v2 / híbrid) - - - + + + Choose a save directory Trieu un directori per desar - + + Torrents that have metadata initially will be added as stopped. + Els torrents que tinguin metadades inicialment s'afegiran com a aturats. + + + Choose an IP filter file Trieu un fitxer de filtre IP - + All supported filters Tots els filtres suportats - + + The alternative WebUI files location cannot be blank. + La ubicació alternativa dels fitxers de la interfície web no pot estar en blanc. + + + Parsing error Error d'anàlisi - + Failed to parse the provided IP filter No s'ha pogut analitzar el filtratge IP - + Successfully refreshed Actualitzat amb èxit - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number S'ha analitzat satisfactòriament el filtre IP proporcionat: s'han aplicat %1 regles. - + Preferences Preferències - + Time Error Error de temps - + The start time and the end time can't be the same. Els temps d'inici i d'acabament no poden ser els mateixos. - - + + Length Error Error de longitud - - - The Web UI username must be at least 3 characters long. - El nom d'usuari de la interfície web ha de tenir almenys 3 caràcters. - - - - The Web UI password must be at least 6 characters long. - La contrasenya de la interfície web ha de tenir almenys 6 caràcters. - PeerInfo - + Unknown Desconegut - + Interested (local) and choked (peer) Interessat (local) i mut (client) - + Interested (local) and unchoked (peer) Interessat (local) i no mut (client) - + Interested (peer) and choked (local) Interessat (client) i mut (local) - + Interested (peer) and unchoked (local) Interessat (client) i no mut (local) - + Not interested (local) and unchoked (peer) No interessat (local) i no mut (client) - + Not interested (peer) and unchoked (local) No interessat (client) i no mut (local) - + Optimistic unchoke No mut optimista - + Peer snubbed Client rebutjat - + Incoming connection Connexió d'entrada - + Peer from DHT Client de DHT - + Peer from PEX Client de PEX - + Peer from LSD Client d'LSD - + Encrypted traffic Trànsit encriptat - + Encrypted handshake Salutació encriptada + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: filtra "readme1.txt", "readme2.txt" però n El client "%1" està prohibit manualment. - + N/A N / D @@ -7668,7 +8080,7 @@ readme[0-9].txt: filtra "readme1.txt", "readme2.txt" però n Llista de clients per afegir (una IP per línia): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme[0-9].txt: filtra "readme1.txt", "readme2.txt" però n PiecesBar - + Files in this piece: Fitxers en aquest tros: - + File in this piece: Fitxer en aquest tros: - + File in these pieces: Fitxer en aquests trossos: - + Wait until metadata become available to see detailed information Espera fins que les metadades estiguin disponibles per veure'n la informació detallada. - + Hold Shift key for detailed information Mantingueu premuda la tecla de majúscules per veure'n la informació detallada @@ -7742,59 +8154,59 @@ readme[0-9].txt: filtra "readme1.txt", "readme2.txt" però n Connectors de cerca - + Installed search plugins: Connectors de cerca instal·lats: - + Name Nom - + Version Versió - + Url URL - - + + Enabled Habilitat - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Avís: assegureu-vos que compliu les lleis de dret de còpia del vostre país quan baixeu torrents des de qualsevol d'aquests motors de cerca. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Podeu obtenir nous connectors de motors de cerca aquí: <a href="https://plugins.qbittorrent.org"> https://plugins.qbittorrent.org</a> - + Install a new one Instal·la'n un de nou - + Check for updates Comprova si hi ha actualitzacions - + Close Tanca - + Uninstall Desinstal·la @@ -7914,17 +8326,17 @@ Aquests connectors s'han inhabilitat. Font del connector - + Search plugin source: Font del connector de cerca: - + Local file Fitxer local - + Web link Enllaç web @@ -7942,70 +8354,70 @@ Aquests connectors s'han inhabilitat. Power management found suitable D-Bus interface. Interface: %1 - + La gestió d'energia ha trobat la interfície D-Bus adequada. Interfície: %1 Power management error. Did not found suitable D-Bus interface. - + Error de gestió d'energia. No s'ha trobat la interfície D-Bus adequada. Power management error. Action: %1. Error: %2 - + Error de gestió d'energia. Acció: %1. Error: %2 Power management unexpected error. State: %1. Error: %2 - + Error inesperat de gestió d'energia. Estat: %1. Error: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Els fitxers següents del torrent «%1» permeten la previsualització. Seleccioneu-ne un: - + Preview Vista prèvia - + Name Nom - + Size Mida - + Progress Progrés - + Preview impossible Vista prèvia impossible - + Sorry, we can't preview this file: "%1". Perdoneu. No es pot mostrar una previsualització d'aquest fitxer: "%1". - + Resize columns Canvia l'amplada de les columnes - + Resize all non-hidden columns to the size of their contents Canvia l'amplada de totes les columnes visibles a la mida del contingut @@ -8018,27 +8430,27 @@ Aquests connectors s'han inhabilitat. Private::FileLineEdit - + Path does not exist El camí no existeix. - + Path does not point to a directory El camí no apunta cap a un directori. - + Path does not point to a file El camí no apunta cap a un fitxer. - + Don't have read permission to path No teniu permís de lectura al camí. - + Don't have write permission to path No teniu permís d'escriptura al camí. @@ -8079,12 +8491,12 @@ Aquests connectors s'han inhabilitat. PropertiesWidget - + Downloaded: Baixat: - + Availability: Disponibilitat: @@ -8099,53 +8511,53 @@ Aquests connectors s'han inhabilitat. Transferència - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Temps actiu: - + ETA: Temps estimat: - + Uploaded: Pujada: - + Seeds: Llavors: - + Download Speed: Velocitat de baixada: - + Upload Speed: Velocitat de pujada: - + Peers: Clients: - + Download Limit: Límit de baixada: - + Upload Limit: Límit de pujada: - + Wasted: Perdut: @@ -8155,193 +8567,249 @@ Aquests connectors s'han inhabilitat. Connexions: - + Information Informació - + Info Hash v1: Informació de la funció resum v1: - + Info Hash v2: Informació de la funció resum v2: - + Comment: Comentari: - + Select All Selecciona-ho tot - + Select None Treure Seleccions - + Share Ratio: Ràtio de compartició: - + Reannounce In: Es tornarà a anunciar en: - + Last Seen Complete: Vist per última vegada complet: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Mida total: - + Pieces: Trossos: - + Created By: Creat per: - + Added On: Afegit el: - + Completed On: Completat el: - + Created On: Creat el: - + + Private: + + + + Save Path: Camí on desar-ho: - + Never Mai - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (té %3) - - + + %1 (%2 this session) %1 (%2 en aquesta sessió) - - + + + N/A N / D - + + Yes + + + + + No + No + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sembrat durant %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 màxim) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 de mitjana) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Llavor web nova + Llavor web nova - Remove Web seed - Suprimeix la llavor web + Suprimeix la llavor web - Copy Web seed URL - Copia l'URL de la llavor web + Copia l'URL de la llavor web - Edit Web seed URL - Edita l'URL de la llavor web + Edita l'URL de la llavor web - + Filter files... Filtra els fitxers... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Els gràfics de velocitat estan desactivats. - + You can enable it in Advanced Options Podeu activar-lo a Opcions avançades. - New URL seed New HTTP source - Llavor d'URL nova + Llavor d'URL nova - New URL seed: - Llavor d'URL nova: + Llavor d'URL nova: - - This URL seed is already in the list. - Aquesta llavor d'URL ja és a la llista. + Aquesta llavor d'URL ja és a la llista. - + Web seed editing Edició de la llavor web - + Web seed URL: URL de la llavor web: @@ -8360,22 +8828,22 @@ Aquests connectors s'han inhabilitat. No s'han pogut desar les dades del Descarregador automàtic d'RSS a %1: Error: %2 - + Invalid data format Format de dades no vàlid - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... L'article d'RSS %1 és acceptat per la regla %2. S'intenta afegir el torrent... - + Failed to read RSS AutoDownloader rules. %1 No s'han pogut llegir les regles de baixada automàtica d'RSS. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 No s'han pogut carregar les regles del Descarregador automàtic d'RSS. Raó: %1 @@ -8383,22 +8851,22 @@ Aquests connectors s'han inhabilitat. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Ha fallat baixar el contingut del canal d'RSS a %1. Raó: %2 - + RSS feed at '%1' updated. Added %2 new articles. S'ha actualitzat el canal d'RSS %1. S'han afegit %2 articles nous. - + Failed to parse RSS feed at '%1'. Reason: %2 Ha fallat analitzar el canal d'RSS a 1%. Raó: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. S'ha baixat correctament el contingut del canal d'RSS a %1. Es comença a analitzar. @@ -8434,12 +8902,12 @@ Aquests connectors s'han inhabilitat. RSS::Private::Parser - + Invalid RSS feed. Canal d'RSS no vàlid. - + %1 (line: %2, column: %3, offset: %4). %1 (línia: %2, columna: %3, desplaçament: %4). @@ -8447,99 +8915,99 @@ Aquests connectors s'han inhabilitat. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" No s'ha pogut desar la configuració de la sessió d'RSS. Fitxer: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" No s'han pogut desar les dades de la sessió d'RSS. Fitxer: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. El canal d'RSS amb l'URL proporcionat ja existeix: %1. - + Feed doesn't exist: %1. Feed no existeix: %1. - + Cannot move root folder. No es pot moure la carpeta d'arrel. - - + + Item doesn't exist: %1. No existeix l'element %1. - + Couldn't move folder into itself. No s'ha pogut moure la carpeta a si mateixa. - + Cannot delete root folder. No es pot suprimir la carpeta d'arrel. - + Failed to read RSS session data. %1 No s'han pogut llegir les dades de la sessió d'RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" No s'han pogut analitzar les dades de la sessió d'RSS. Fitxer: %1. Error: %2 - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." No s'han pogut carregar les dades de la sessió d'RSS. Fitxer: %1. Error: format de dades no vàlid. - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. No s'ha pogut carregar el canal d'RSS. Canal: "%1". Raó: l'URL és obligatori. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. No s'ha pogut carregar el canal d'RSS. Canal: "%1". Raó: l'UID no és vàlid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. S'ha trobat un canal d'RSS duplicat. UID: "%1". Error: la configuració sembla malmesa. - + Couldn't load RSS item. Item: "%1". Invalid data format. No s'ha pogut carregar l'element d'RSS. Element: "%1". Format de dades no vàlid. - + Corrupted RSS list, not loading it. Llista d'RSS danyada. No es carrega. - + Incorrect RSS Item path: %1. Camí a l'element d'RSS incorrecte: %1. - + RSS item with given path already exists: %1. L'element d'RSS amb el camí proporcionat ja existeix: %1. - + Parent folder doesn't exist: %1. No existeix la carpeta mare %1. @@ -8563,8 +9031,8 @@ Aquests connectors s'han inhabilitat. - - + + Mark items read Marca els elements llegits @@ -8589,132 +9057,132 @@ Aquests connectors s'han inhabilitat. Torrents: (doble clic per a baixar-los) - - + + Delete Suprimeix - + Rename... Canvia'n el nom... - + Rename Canvia'n el nom - - + + Update Actualitza - + New subscription... Subscripció nova... - - + + Update all feeds Actualitza tots els canals - + Download torrent Baixa el torrent - + Open news URL Obre l'URL de notícies - + Copy feed URL Copia l'URL del canal - + New folder... Carpeta nova... - + Edit feed URL... Editar URL de feed... - + Edit feed URL Editar URL de feed - + Please choose a folder name Trieu un nom de carpeta. - + Folder name: Nom de la carpeta: - + New folder Carpeta nova - - + + Please type a RSS feed URL Escriviu l'URL d'un canal d'RSS - - + + Feed URL: URL del canal: - + Deletion confirmation Confirmació de supressió - + Are you sure you want to delete the selected RSS feeds? Segur que voleu suprimir els canals d'RSS seleccionats? - + Please choose a new name for this RSS feed Trieu un nou nom per a aquest canal d'RSS - + New feed name: Nom del canal nou: - + Rename failed El canvi de nom ha fallat. - + Date: Data: - + Feed: - + Canal: - + Author: Autor: @@ -8722,38 +9190,38 @@ Aquests connectors s'han inhabilitat. SearchController - + Python must be installed to use the Search Engine. S'ha d'instal·lar Python per usar el motor de cerca. - + Unable to create more than %1 concurrent searches. No es poden crear més de %1 cerques concurrents. - - + + Offset is out of range Desplaçament fora de l'abast - + All plugins are already up to date. Tots els connectors ja estan actualitzats. - + Updating %1 plugins S'actualitzen %1 connectors - + Updating plugin %1 S'actualitza el connector %1 - + Failed to check for plugin updates: %1 Ha fallat comprovar les actualitzacions dels connectors: %1 @@ -8828,132 +9296,146 @@ Aquests connectors s'han inhabilitat. Mida: - + Name i.e: file name Nom - + Size i.e: file size Mida - + Seeders i.e: Number of full sources Sembradors - + Leechers i.e: Number of partial sources Sangoneres - Search engine - Motor de cerca + Motor de cerca - + Filter search results... Filtra els resultats de la cerca... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultats (se'n mostren <i>%1</i> d'un total de <i>%2</i>): - + Torrent names only Només noms de torrents - + Everywhere Arreu - + Use regular expressions Usa expressions regulars - + Open download window Obre la finestra de baixades - + Download Baixa - + Open description page Obre la pàgina de descripció - + Copy Copia - + Name Nom - + Download link Enllaç de baixada - + Description page URL URL de la pàgina de descripció - + Searching... Cercant.. - + Search has finished La cerca s'ha acabat. - + Search aborted Cerca avortada - + An error occurred during search... S'ha produït un error durant la cerca... - + Search returned no results La cerca no ha trobat cap resultat. - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilitat de les columnes - + Resize columns Canvia l'amplada de les columnes - + Resize all non-hidden columns to the size of their contents Canvia l'amplada de totes les columnes visibles a la mida del contingut @@ -8961,104 +9443,104 @@ Aquests connectors s'han inhabilitat. SearchPluginManager - + Unknown search engine plugin file format. El format de fitxer del connector de motor de cerca és desconegut. - + Plugin already at version %1, which is greater than %2 El connector ja té la versió %1, que és més avançada que %2. - + A more recent version of this plugin is already installed. Ja hi ha instal·lada una versió més recent d'aquest connector. - + Plugin %1 is not supported. El connector %1 no s'admet. - - + + Plugin is not supported. El connector no està suportat. - + Plugin %1 has been successfully updated. El connector %1 s'ha actualitzat correctament. - + All categories Totes les categories - + Movies Pel·lícules - + TV shows Programes de TV - + Music Música - + Games Jocs - + Anime Anime - + Software Programari - + Pictures Imatges - + Books Llibres - + Update server is temporarily unavailable. %1 El servidor d'actualitzacions és temporalment fora de servei. %1 - - + + Failed to download the plugin file. %1 No s'ha pogut baixar el fitxer del connector: %1 - + Plugin "%1" is outdated, updating to version %2 El connector "%1" és antic. S'actualitza a la versió %2. - + Incorrect update info received for %1 out of %2 plugins. S'ha rebut informació d'actualització incorrecta per a %1 de %2 connectors. - + Search plugin '%1' contains invalid version string ('%2') El connector de cerca «%1» conté una cadena de versió no vàlida («%2») @@ -9068,114 +9550,153 @@ Aquests connectors s'han inhabilitat. - - - - Search Cerca - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. No hi ha connectors de cerca instal·lats. Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dreta de la finestra per instal·lar-ne. - + Search plugins... Cerca connectors... - + A phrase to search for. Una frase per cercar.. - + Spaces in a search term may be protected by double quotes. Els espais als termes de cerca es poden protegir amb cometes dobles. - + Example: Search phrase example Exemple: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: cerca <b>foo bar</b> - + All plugins Tots els connectors - + Only enabled Només habilitat - + + + Invalid data format. + Format de dades no vàlid. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: cerca <b>foo</b> i <b>bar</b> - + + Refresh + + + + Close tab Tanca la pestanya - + Close all tabs Tanca totes les pestanyes - + Select... Selecció... - - - + + Search Engine Motor de cerca - + + Please install Python to use the Search Engine. Instal·leu Python per fer servir el motor de cerca. - + Empty search pattern Patró de recerca buit - + Please type a search pattern first Escriviu primer un patró de cerca - + + Stop Atura't - Search has finished - La cerca s'ha acabat. + La cerca s'ha acabat. - Search has failed - La cerca ha fallat + La cerca ha fallat + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9288,34 +9809,34 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret - + Upload: Pujada: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Baixada: - + Alternative speed limits Límits de velocitat alternatius @@ -9507,32 +10028,32 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret Mitjana de temps a la cua: - + Connected peers: Clients connectats: - + All-time share ratio: Ràtio de compartició de sempre: - + All-time download: Baixada de sempre: - + Session waste: Sessió malgastada: - + All-time upload: Pujada de sempre: - + Total buffer size: Mida total de la memòria intermèdia: @@ -9547,12 +10068,12 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret Ordres d'entrada / sortida a la cua: - + Write cache overload: Escriure memòria cau sobrecarregada: - + Read cache overload: Llegir memòria cau sobrecarregada: @@ -9571,51 +10092,67 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret StatusBar - + Connection status: Estat de la connexió: - - + + No direct connections. This may indicate network configuration problems. No hi ha connexions directes. Això pot indicar problemes en la configuració de la xarxa. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodes - + qBittorrent needs to be restarted! El qBittorrent s'ha de reiniciar! - - - + + + Connection Status: Estat de la connexió: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Fora de línia. Això normalment significa que el qBittorrent no pot contactar al port seleccionat per a les connexions entrants. - + Online En línea - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Cliqueu per canviar als límits de velocitat alternativa - + Click to switch to regular speed limits Cliqueu per canviar als límits de velocitat normal @@ -9644,14 +10181,22 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret Completats (0) - Resumed (0) - Represos (0) + Represos (0) - Paused (0) - Interromputs (0) + Interromputs (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9713,10 +10258,29 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret Completed (%1) Completats (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Interromputs (%1) + Interromputs (%1) @@ -9724,14 +10288,12 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret Es mou (%1) - Resume torrents - Reprèn els torrents + Reprèn els torrents - Pause torrents - Interromp els torrents + Interromp els torrents @@ -9739,9 +10301,8 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret Suprimeix els torrents - Resumed (%1) - Represos (%1) + Represos (%1) @@ -9782,17 +10343,17 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret TagFilterModel - + Tags Etiquetes - + All Tot - + Untagged Sense etiquetar @@ -9800,52 +10361,64 @@ Cliqueu al botó "Connectors de cerca..." del cantó de baix a la dret TagFilterWidget - + Add tag... Afegeix una etiqueta... - + Remove tag Suprimeix l'etiqueta - + Remove unused tags Suprimeix les etiquetes no usades - Resume torrents - Reprèn els torrents + Reprèn els torrents - Pause torrents - Interromp els torrents + Interromp els torrents - + Remove torrents Suprimeix els torrents - New Tag - Etiqueta nova + Etiqueta nova - + + Start torrents + + + + + Stop torrents + + + + Tag: Etiqueta: - + + Add tag + + + + Invalid tag name Nom d'etiqueta no vàlid - + Tag name '%1' is invalid El nom d'etiqueta "%1" no és vàlid. @@ -9985,32 +10558,32 @@ Trieu-ne un altre i torneu-ho a provar. TorrentContentModel - + Name Nom - + Progress Progrés - + Download Priority Prioritat de baixada - + Remaining Restant - + Availability Disponibilitat - + Total Size Mida total @@ -10055,102 +10628,120 @@ Trieu-ne un altre i torneu-ho a provar. TorrentContentWidget - + Rename error Error de canvi de nom - + Renaming Canvi de nom - + New name: Nom nou: - + Column visibility Visibilitat de les columnes - + Resize columns Canvia l'amplada de les columnes - + Resize all non-hidden columns to the size of their contents Canvia l'amplada de totes les columnes visibles a la mida del contingut. - + Open Obre - + Open containing folder Obre la carpeta que ho conté - + Rename... Canvia'n el nom... - + Priority Prioritat - - + + Do not download No ho baixis - + Normal Normal - + High Alta - + Maximum Màxima - + By shown file order Per l'ordre de fitxer mostrat - + Normal priority Prioritat normal - + High priority Prioritat alta - + Maximum priority Prioritat màxima - + Priority by shown file order Prioritat per ordre de fitxer mostrat + + TorrentCreatorController + + + Too many active tasks + Massa tasques actives + + + + Torrent creation is still unfinished. + La creació del torrent encara està inacabada. + + + + Torrent creation failed. + La creació del torrent ha fallat. + + TorrentCreatorDialog @@ -10175,13 +10766,13 @@ Trieu-ne un altre i torneu-ho a provar. - + Select file Seleccioneu un fitxer - + Select folder Seleccioneu una carpeta @@ -10206,58 +10797,10 @@ Trieu-ne un altre i torneu-ho a provar. Mida del tros: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10304,92 +10847,83 @@ Trieu-ne un altre i torneu-ho a provar. Camps - + You can separate tracker tiers / groups with an empty line. Podeu separar els nivells de rastrejadors o grups amb una línia en blanc. - + Web seed URLs: URLs de llavor web: - + Tracker URLs: URLs de rastrejador: - + Comments: Comentaris: - + Source: Font: - + Progress: Progrés: - + Create Torrent Crea un torrent - - + + Torrent creation failed Ha fallat la creació del torrent. - + Reason: Path to file/folder is not readable. Raó: el camí al fitxer o la carpeta no és llegible. - + Select where to save the new torrent Seleccioneu on desar el torrent nou. - + Torrent Files (*.torrent) Fitxers torrent (*.torrent) - - Reason: %1 - Raó: %1 - - - + Add torrent to transfer list failed. - + S'ha produït un error en afegir torrent a la llista de transferències. - + Reason: "%1" - + Raó: %1 - + Add torrent failed - + S'ha produït un error en afegir el torrent. - Reason: Created torrent is invalid. It won't be added to download list. - Raó: el torrent creat no és vàlid. No s'afegirà a la llista de baixades. - - - + Torrent creator Creador del torrent - + Torrent created: Creació del torrent: @@ -10397,32 +10931,32 @@ Trieu-ne un altre i torneu-ho a provar. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 No s'ha pogut carregar la configuració de les carpetes vigilades. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" No s'ha pogut analitzar la configuració de les carpetes vigilades de %1. Error: %2 - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." No s'ha pogut carregar la configuració de les carpetes vigilades des de %1. Error: format de dades no vàlid. - + Couldn't store Watched Folders configuration to %1. Error: %2 No s'ha pogut desar la configuració de les carpetes vigilades de %1. Error: %2 - + Watched folder Path cannot be empty. El camí de la carpeta vigilada no pot estar buit. - + Watched folder Path cannot be relative. El camí de la carpeta vigilada no pot ser relatiu. @@ -10430,27 +10964,27 @@ Trieu-ne un altre i torneu-ho a provar. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI d'enllaç magnètic no vàlid. URI: %1. Raó: %2 - + Magnet file too big. File: %1 El fitxer magnètic és massa gros. Fitxer: %1 - + Failed to open magnet file: %1 No s'ha pogut obrir el fitxer magnet: % 1 - + Rejecting failed torrent file: %1 Rebutjant el fitxer de torrent fallit: %1 - + Watching folder: "%1" Supervisió de la carpeta: "%1" @@ -10458,14 +10992,12 @@ Trieu-ne un altre i torneu-ho a provar. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - No s'ha pogut assignar memòria en llegir el fitxer. Fitxer: %1. Error: %2 + No s'ha pogut assignar memòria en llegir el fitxer. Fitxer: %1. Error: %2 - Invalid metadata - Metadades no vàlides + Metadades no vàlides @@ -10496,279 +11028,374 @@ Trieu-ne un altre i torneu-ho a provar. Usa un altre camí per al torrent incomplet. - + Category: Categoria: - + + Torrent Share Limits + + + Torrent speed limits - Límits de velocitat del torrent + Límits de velocitat del torrent - + Download: Baixada: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Això no excedirà els límits globals - + Upload: Pujada: - Torrent share limits - Límits de compartició del torrent + Límits de compartició del torrent - Use global share limit - Usa el límit de compartició global + Usa el límit de compartició global - Set no share limit - Sense cap límit de compartició + Sense cap límit de compartició - Set share limit to - Estableix el límit de compartició a + Estableix el límit de compartició a - ratio - ràtio + ràtio - total minutes - minuts totals + minuts totals - inactive minutes - minuts d'inacció + minuts d'inacció - + Disable DHT for this torrent Desactiva DHT per a aquest torrent - + Download in sequential order Baixa en ordre seqüencial - + Disable PeX for this torrent Desactiva PeX per a aquest torrent - + Download first and last pieces first Baixa primer els trossos del principi i del final - + Disable LSD for this torrent Desactiva LSD per a aquest torrent - + Currently used categories Categories usades actualment - - + + Choose save path Trieu el camí on desar-ho - + Not applicable to private torrents No s'aplica als torrents privats - No share limit method selected - No s'ha seleccionat cap mètode de limitació de compartició + No s'ha seleccionat cap mètode de limitació de compartició - Please select a limit method first - Seleccioneu primer un mètode de limitació + Seleccioneu primer un mètode de limitació - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Etiquetes de Torrent + + + + + Default + Per defecte - - New Tag - Etiqueta nova + + + + Unlimited + Sense límit - - Tag: - Etiqueta: + + + + Set to + Establert a - - Invalid tag name - Nom d'etiqueta no vàlid + + Seeding time: + Temps de sembra: - - Tag name '%1' is invalid. - El nom d'etiqueta '%1' és invàlid. + + + + + + + min + minutes + min. - - Tag exists - L'etiqueta ja existeix. + + Inactive seeding time: + Temps de sembra inactiu: - - Tag name already exists. - El nom d'etiqueta ja existeix. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Error: «%1« no és un fitxer torrent vàlid. + + Stop torrent + - - Priority must be an integer - La prioritat ha de ser un nombre enter. + + Remove torrent + Suprimeix el torrent - + + Remove torrent and its content + + + + + Enable super seeding for torrent + Habilita la supersembra per al torrent + + + + Ratio: + Ràtio + + + + TorrentTagsDialog + + + Torrent Tags + Etiquetes de Torrent + + + New Tag + Etiqueta nova + + + + Add tag + + + + + Tag: + Etiqueta: + + + + Invalid tag name + Nom d'etiqueta no vàlid + + + + Tag name '%1' is invalid. + El nom d'etiqueta '%1' és invàlid. + + + + Tag exists + L'etiqueta ja existeix. + + + + Tag name already exists. + El nom d'etiqueta ja existeix. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Error: «%1« no és un fitxer torrent vàlid. + + + + Priority must be an integer + La prioritat ha de ser un nombre enter. + + + Priority is not valid La prioritat no és vàlida. - + Torrent's metadata has not yet downloaded Encara no s'han baixat les metadades del torrent. - + File IDs must be integers Els indicadors del fitxer han de ser nombres enters. - + File ID is not valid L'identificador del fitxer no és vàlid. - - - - + + + + Torrent queueing must be enabled Cal que habiliteu la cua d'operacions dels torrent - - + + Save path cannot be empty El camí on desar-ho no pot estar en blanc. - - + + Cannot create target directory No es pot crear el directori de destinació. - - + + Category cannot be empty La categoria no pot estar en blanc. - + Unable to create category No s'ha pogut crear la categoria - + Unable to edit category No s'ha pogut editar la categoria - + Unable to export torrent file. Error: %1 No es pot exportar el fitxer de torrent. Error: %1 - + Cannot make save path No es pot fer el camí on desar-ho. - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid El paràmetre d'ordenació no és vàlid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. «%1» no és un índex de fitxer vàlid. - + Index %1 is out of bounds. L'índex %1 és fora dels límits. - - + + Cannot write to directory No es pot escriure al directori. - + WebUI Set location: moving "%1", from "%2" to "%3" Ubicació de la interfície d'usuari de xarxa: es mou «%1», de «%2» a «%3» - + Incorrect torrent name Nom de torrent incorrecte - - + + Incorrect category name Nom de categoria incorrecte @@ -10799,257 +11426,215 @@ Trieu-ne un altre i torneu-ho a provar. TrackerListModel - - + Working - Funciona + Operatiu - + Disabled - Inhabilitat + Inhabilitat - + Disabled for this torrent - S'ha desactivat per a aquest torrent + S'ha desactivat per a aquest torrent - + This torrent is private - Aquest torrent és privat. + Aquest torrent és privat. - + N/A - + N / D - + Updating... - Actualitzant... + Actualitzant... - + Not working - No funciona + No funciona - + Tracker error - + Error del rastrejador - + Unreachable - + Inabastable - + Not contacted yet - Encara no s'hi ha contactat. + Encara no s'hi ha contactat. - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Nivell + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Estat no vàlid! + + + URL/Announce endpoint + URL / Anunci del punt final + Tier + Nivell + + Protocol - + Protocol - + Status - Estat + Estat - + Peers - Clients + Clients - + Seeds - Llavors + Llavors - + Leeches - Sangoneres + Sangoneres - + Times Downloaded - Cops descarregat + Cops descarregat - + Message - Missatge + Missatge - Next announce - + Anunci següent - Min announce - + Anunciar mínim - v%1 - + v%1 TrackerListWidget - Working - Funciona - - - Disabled - Inhabilitat - - - Disabled for this torrent - S'ha desactivat per a aquest torrent - - - + This torrent is private Aquest torrent és privat. - Updating... - Actualitzant... - - - Not working - No funciona - - - Not contacted yet - Encara no s'hi ha contactat. - - - N/A - N / D - - - + Tracker editing Edició del rastrejador - + Tracker URL: URL del rastrejador: - - + + Tracker editing failed Ha fallat l'edició del rastrejador. - + The tracker URL entered is invalid. L'URL del rastrejador introduït no és vàlid. - + The tracker URL already exists. L'URL del rastrejador ja existeix. - + Edit tracker URL... Edita l'URL del rastrejador... - + Remove tracker Suprimeix el rastrejador - + Copy tracker URL Copia l'URL del rastrejador - + Force reannounce to selected trackers Força el reanunci als rastrejadors seleccionats - + Force reannounce to all trackers Forca el reanunci a tots els rastrejadors - Tier - Nivell - - - URL - URL - - - Status - Estat - - - Seeds - Llavors - - - Times Downloaded - Cops descarregat - - - + Resize columns Canvia l'amplada de les columnes - + Resize all non-hidden columns to the size of their contents Canvia l'amplada de totes les columnes visibles a la mida del contingut - Peers - Clients - - - + Add trackers... Afegeix rastrejadors... - Leeches - Sangoneres - - - Message - Missatge - - - + Column visibility Visibilitat de les columnes @@ -11067,37 +11652,37 @@ Trieu-ne un altre i torneu-ho a provar. Llista de rastrejadors per afegir (un per línia): - + µTorrent compatible list URL: Llista d'URL de µTorrent compatibles: - + Download trackers list Baixa la llista de rastrejadors - + Add Afegeix - + Trackers list URL error Error d'URL a la llista de rastrejadors - + The trackers list URL cannot be empty L'URL de la llista de rastrejadors no pot estar buit. - + Download trackers list error Error de la llista de rastrejadors de baixada - + Error occurred when downloading the trackers list. Reason: "%1" S'ha produït un error en baixar la llista de rastrejadors. Raó: "%1" @@ -11105,87 +11690,70 @@ Trieu-ne un altre i torneu-ho a provar. TrackersFilterWidget - All (0) - this is for the tracker filter - Tots (0) - - - Trackerless (0) - Sense rastrejadors (0) - - - Error (0) - Errors (0) - - - Warning (0) - Advertències (0) - - - Trackerless - Sense rastrejadors - - - Error (%1) - Errors (%1) - - - + Warning (%1) Advertències (%1) - + Trackerless (%1) Sense rastrejadors (%1) - + Tracker error (%1) - + Error del rastrejador (%1) - + Other error (%1) - + Altres errors (%1) - + Remove tracker - Suprimeix el rastrejador + Suprimeix el rastrejador + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Reprèn els torrents + Reprèn els torrents - Pause torrents - Interromp els torrents + Interromp els torrents - + Remove torrents Suprimeix els torrents - + Removal confirmation - + Confirmació de supressió - + Are you sure you want to remove tracker "%1" from all torrents? - + Segur que voleu suprimir el rastrejador %1 de tots els torrents? - + Don't ask me again. - + No m'ho tornis a preguntar. - + All (%1) this is for the tracker filter Tots (%1) @@ -11194,7 +11762,7 @@ Trieu-ne un altre i torneu-ho a provar. TransferController - + 'mode': invalid argument "mode": argument no vàlid @@ -11287,9 +11855,8 @@ Trieu-ne un altre i torneu-ho a provar. Comprovant les dades de represa - Paused - Interromput + Interromput @@ -11314,220 +11881,262 @@ Trieu-ne un altre i torneu-ho a provar. Amb errors - + Name i.e: torrent name Nom - + Size i.e: torrent size Mida - + Progress % Done Progrés - Status Torrent status (e.g. downloading, seeding, paused) - Estat + Estat - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Estat + + + Seeds i.e. full sources (often untranslated) Llavors - + Peers i.e. partial sources (often untranslated) Clients - + Down Speed i.e: Download speed Velocitat de baixada - + Up Speed i.e: Upload speed Velocitat de pujada - + Ratio Share ratio Ràtio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Temps estimat - + Category Categoria - + Tags Etiquetes - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Afegit el - + Completed On Torrent was completed on 01/01/2010 08:00 Completat el - + Tracker Rastrejador - + Down Limit i.e: Download limit Límit de baixada - + Up Limit i.e: Upload limit Límit de pujada - + Downloaded Amount of data downloaded (e.g. in MB) Baixat - + Uploaded Amount of data uploaded (e.g. in MB) Pujat - + Session Download Amount of data downloaded since program open (e.g. in MB) Baixada de la sessió - + Session Upload Amount of data uploaded since program open (e.g. in MB) Pujada de la sessió - + Remaining Amount of data left to download (e.g. in MB) Restant - + + Time Active + Time (duration) the torrent is active (not stopped) + Temps d'activitat + + + + Yes + + + + + No + No + + Time Active Time (duration) the torrent is active (not paused) - Temps d'activitat + Temps d'activitat - + Save Path Torrent save path Camí on desar-ho - + Incomplete Save Path Torrent incomplete save path Camí on desar-ho incomplet - + Completed Amount of data completed (e.g. in MB) Completat - + Ratio Limit Upload share ratio limit Límit de ràtio - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Vist per última vegada complet - + Last Activity Time passed since a chunk was downloaded/uploaded Darrera activitat - + Total Size i.e. Size including unwanted data Mida total - + Availability The number of distributed copies of the torrent Disponibilitat - + Info Hash v1 i.e: torrent info hash v1 Informació de la funció resum v1 - + Info Hash v2 i.e: torrent info hash v2 Informació de la funció resum v2 - + Reannounce In Indicates the time until next trackers reannounce + Es torna a anunciar d'aquí a + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N / D - + %1 ago e.g.: 1h 20m ago fa %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sembrat durant %2) @@ -11536,334 +12145,358 @@ Trieu-ne un altre i torneu-ho a provar. TransferListWidget - + Column visibility Visibilitat de columnes - + Recheck confirmation Confirmació de la verificació - + Are you sure you want to recheck the selected torrent(s)? Segur que voleu tornar a comprovar els torrents seleccionats? - + Rename Canvia'n el nom - + New name: Nou nom: - + Choose save path Trieu el camí on desar-ho - Confirm pause - Confirmeu la interrupció + Confirmeu la interrupció - Would you like to pause all torrents? - Voleu interrompre tots els torrents? + Voleu interrompre tots els torrents? - Confirm resume - Confirmeu la represa + Confirmeu la represa - Would you like to resume all torrents? - Voleu reprendre tots els torrents? + Voleu reprendre tots els torrents? - + Unable to preview No es pot previsualitzar. - + The selected torrent "%1" does not contain previewable files El torrent seleccionat "%1" no conté fitxers que es puguin previsualitzar. - + Resize columns Canvia l'amplada de les columnes - + Resize all non-hidden columns to the size of their contents Canvia l'amplada de totes les columnes visibles a la mida del contingut - + Enable automatic torrent management Permet la gestió automàtica dels torrents - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Esteu segur que voleu activar la gestió automàtica dels torrents per als torrents seleccionats? Potser es canvien d'ubicació. - Add Tags - Afegeix etiquetes + Afegeix etiquetes - + Choose folder to save exported .torrent files Trieu la carpeta per desar els fitxers .torrent exportats. - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Ha fallat l'exportació del fitxer .torrent. Torrent: "%1". Desa el camí: "%2". Raó: "% 3" - + A file with the same name already exists Ja existeix un fitxer amb el mateix nom. - + Export .torrent file error Error d'exportació del fitxer .torrent - + Remove All Tags Suprimeix totes les etiquetes - + Remove all tags from selected torrents? Voleu suprimir totes les etiquetes dels torrents seleccionats? - + Comma-separated tags: Etiquetes separades per comes: - + Invalid tag Etiqueta no vàlida - + Tag name: '%1' is invalid El nom d'etiqueta "%1" no és vàlid. - &Resume Resume/start the torrent - &Reprèn + &Reprèn - &Pause Pause the torrent - Interrom&p + Interrom&p - Force Resu&me Force Resume/start the torrent - Força'n la re&presa + Força'n la re&presa - + Pre&view file... Pre&visualitza el fitxer... - + Torrent &options... Opci&ons del torrent... - + Open destination &folder Obre la carpe&ta de destinació - + Move &up i.e. move up in the queue Mou am&unt - + Move &down i.e. Move down in the queue Mou a&vall - + Move to &top i.e. Move to top of the queue Mou al &principi - + Move to &bottom i.e. Move to bottom of the queue Mou al capdava&ll - + Set loc&ation... Estableix la ubic&ació... - + Force rec&heck Força'n la ve&rificació - + Force r&eannounce Força'n el r&eanunci - + &Magnet link Enllaç &magnètic - + Torrent &ID &ID del torrent - + + &Comment + &Comentari + + + &Name &Nom - + Info &hash v1 Informació de la &funció resum v1 - + Info h&ash v2 Informació de la funció resu&m v2 - + Re&name... Canvia'n el &nom... - + Edit trac&kers... Edita els rastre&jadors... - + E&xport .torrent... E&xporta el .torrent... - + Categor&y Categor&ia - + &New... New category... &Nou... - + &Reset Reset category &Restableix - + Ta&gs Eti&quetes - + &Add... Add / assign multiple tags... &Afegeix... - + &Remove All Remove all tags Sup&rimeix-les totes - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Posa a la cua - + &Copy &Copia - + Exported torrent is not necessarily the same as the imported El torrent exportat no és necessàriament el mateix que l'importat. - + Download in sequential order Baixa en ordre seqüencial - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. S'han produït errors en exportar fitxers .torrent. Consulteu el registre d'execució per obtenir més informació. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Sup&rimeix - + Download first and last pieces first Baixa primer els trossos del principi i del final - + Automatic Torrent Management Gestió automàtica del torrents - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category El mode automàtic significa que diverses propietats dels torrents (p. ex. el camí on desar-los) es decidiran segons la categoria associada. - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - No es pot forçar el reanunci si el torrent està interromput / a la cua / té error / es comprova. + No es pot forçar el reanunci si el torrent està interromput / a la cua / té error / es comprova. - + Super seeding mode Mode de supersembra @@ -11908,28 +12541,28 @@ Trieu-ne un altre i torneu-ho a provar. ID de icona - + UI Theme Configuration. Configuració del tema d'IU. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Els canvis al tema d'IU no han pogut aplicar-se completament. Els detalls poden trobar-se al Log. - + Couldn't save UI Theme configuration. Reason: %1 No s'ha pogut guardar la configuració del tema d'IU. Motiu: %1 - - + + Couldn't remove icon file. File: %1. No s'ha pogut esborrar el fitxer d'icona. Fitxer: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. No s'ha pogut copiar el fitxer d'icona. Origen %1. Destí: %2. @@ -11937,7 +12570,12 @@ Trieu-ne un altre i torneu-ho a provar. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Ha fallat carregar el tema de la interfície d'usuari des del fitxer: "%1" @@ -11968,89 +12606,82 @@ Trieu-ne un altre i torneu-ho a provar. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Ha fallat migrar les preferències: interfície d'usuari de xarxa https, fitxer: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Preferències migrades: interfície d'usuari de xarxa https, dades exportades al fitxer: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". S'ha trobat un valor no vàlid al fitxer de configuració i es torna al valor predeterminat. Clau: %1. Valor no vàlid: %2. Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python detectat; nom executable: "%1", versió: %2 - - - Python not detected - Python no detectat - Found Python executable. Name: "%1". Version: "%2" - + S'ha trobat l'executable de Python. Nom: %1. Versió: %2 Failed to find Python executable. Path: "%1". - + No s'ha pogut trobar l'executable de Python. Camí: %1. Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + No s'ha pogut trobar l'executable de python3 a la variable d'entorn PATH. CAMÍ: %1 Failed to find `python` executable in PATH environment variable. PATH: "%1" - + No s'ha pogut trobar l'executable de python a la variable d'entorn PATH. CAMÍ: %1 Failed to find `python` executable in Windows Registry. - + No s'ha pogut trobar l'executable de python al registre de Windows. Failed to find Python executable - + No s'ha pogut trobar l'executable de Python. Utils::IO - + File open error. File: "%1". Error: "%2" Error d'obertura del fitxer. Fitxer: %1. Error: %2 - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 La mida del fitxer supera el límit. Fitxer: %1. Mida del fitxer: %2. Límit de la mida: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + La mida del fitxer supera el límit de mida de dades. Fitxer: %1. Mida del fitxer: %2. Límit de matriu: %3 - + File read error. File: "%1". Error: "%2" Error de lectura del fitxer. Fitxer: %1. Error: %2 - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 La mida de la lectura no coincideix. Fitxer: %1. S'esperava: %2. Real: %3 @@ -12114,72 +12745,72 @@ Trieu-ne un altre i torneu-ho a provar. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. S'ha especificat un nom de galeta de sessió inacceptable: %1. S'usa el valor predeterminat. - + Unacceptable file type, only regular file is allowed. El tipus de fitxer no és acceptable, només s'admeten fitxers normals. - + Symlinks inside alternative UI folder are forbidden. No es permeten els enllaços simbòlics a les carpetes d'interfície d'usuari alternativa. - - Using built-in Web UI. - S'usa la interfície d'usuari web incorporada. + + Using built-in WebUI. + S'usa la interfície web integrada. - - Using custom Web UI. Location: "%1". - S'usa la interfície d'usuari web personalitzada. Ubicació: "%1". + + Using custom WebUI. Location: "%1". + S'usa la interfície d'usuari web personalitzada. Ubicació: %1. - - Web UI translation for selected locale (%1) has been successfully loaded. - S'ha carregat correctament la traducció de la interfície web per a la llengua seleccionada (%1). + + WebUI translation for selected locale (%1) has been successfully loaded. + La traducció de la interfície web per a la configuració regional seleccionada (%1) s'ha carregat correctament. - - Couldn't load Web UI translation for selected locale (%1). - No s'ha pogut carregar la traducció de la interfície web per a la llengua seleccionada (%1). + + Couldn't load WebUI translation for selected locale (%1). + No s'ha pogut carregar la traducció de la interfície web per a la configuració regional seleccionada (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Falta el separador ":" de la capçalera HTTP personalitzada de la interfície d'usuari de xarxa: "%1" - + Web server error. %1 Error del servidor web. %1 - + Web server error. Unknown error. Error del servidor web. Error desconegut. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Interfície d'usuari de xarxa: la capçalera d'origen i l'origen de destinació no coincideixen! IP d'origen: «%1». Capçalera d'origen «%2». Origen de destinació: «%3» - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Interfície d'usuari de xarxa: la capçalera de referència i l'origen de destinació no coincideixen! IP d'origen: «%1». Capçalera de referència «%2». Origen de destinació: «%3» - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Interfície d'usuari de xarxa: capçalera d'amfitrió, el port no coincideix. IP origen de la petició: «%1». Port del servidor: «%2». Capçalera d'amfitrió rebuda: «%3» - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Interfície d'usuari de xarxa: capçalera d'amfitrió no vàlida. IP origen de la petició: «%1». Capçalera d'amfitrió rebuda: «%2» @@ -12187,143 +12818,136 @@ Trieu-ne un altre i torneu-ho a provar. WebUI - - Web UI: HTTPS setup successful - Interfície web: configuració d'HTTPS correcta. + + Credentials are not set + Les credencials no estan establertes. + + + + WebUI: HTTPS setup successful + Interfície web: s'ha configurat HTTPS correctament. + + + + WebUI: HTTPS setup failed, fallback to HTTP + Interfície web: la configuració d'HTTPS ha fallat, es torna a HTTP. - - Web UI: HTTPS setup failed, fallback to HTTP - Interfície web: ha fallat la configuració d'HTTPS, es torna a HTTP. + + WebUI: Now listening on IP: %1, port: %2 + Interfície web: ara s'escolta la IP %1, port: %2 - - Web UI: Now listening on IP: %1, port: %2 - Interfície web: ara s'escolta la IP %1, port %2. + + Unable to bind to IP: %1, port: %2. Reason: %3 + No es pot enllaçar amb la IP %1, port: %2. Raó: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Interfície web: no s'ha pogut vincular a la IP %1, port %2. Raó: %3 + + Unknown error + Error desconegut misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Desconegut - + qBittorrent will shutdown the computer now because all downloads are complete. El qBittorrent tancarà l'ordinador ara, perquè s'han completat totes les baixades. - + < 1m < 1 minute <1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_cs.ts b/src/lang/qbittorrent_cs.ts index 9428f192e2f5..3e8c7ba52b74 100644 --- a/src/lang/qbittorrent_cs.ts +++ b/src/lang/qbittorrent_cs.ts @@ -14,77 +14,77 @@ O - + Authors Autoři - + Current maintainer Aktuální správce - + Greece Řecko - - + + Nationality: Národnost: - - + + E-mail: E-mail: - - + + Name: Jméno: - + Original author Původní autor - + France Francie - + Special Thanks Zvláštní poděkování - + Translators Překladatelé - + License Licence - + Software Used Použitý software - + qBittorrent was built with the following libraries: qBittorrent byl vytvořen s následujícími knihovnami: - + Copy to clipboard - + Kopírovat do schránky @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Uložit jako - + Never show again Už nikdy nezobrazovat - Torrent settings - Nastavení torrentu + Nastavení torrentu @@ -191,12 +190,12 @@ Spustit torrent - + Torrent information Info o torrentu - + Skip hash check Přeskočit kontrolu hashe @@ -205,6 +204,11 @@ Use another path for incomplete torrent Použít jinou cestu pro nedokončený torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Podmínka zastavení: - - + + None Žádná - - + + Metadata received Metadata stažena - - + + Torrents that have metadata initially will be added as stopped. + Torrenty s metadaty budou přidány jako zastavené. + + + + Files checked Soubory zkontrolovány - + Add to top of queue Přidat na začátek fronty - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Je-li zaškrtnuto, soubor .torrent nebude smazán bez ohledu na nastavení na stránce "Stáhnout" v dialogovém okně Možnosti - + Content layout: Rozvržení obsahu: - + Original Originál - + Create subfolder Vytvořit podsložku - + Don't create subfolder Nevytvářet podsložku - + Info hash v1: Info hash v1: - + Size: Velikost: - + Comment: Komentář: - + Date: Datum: @@ -324,245 +333,182 @@ Zapamatovat si naposledy použitou cestu - + Do not delete .torrent file Nemazat soubor .torrent - + Download in sequential order Stáhnout v sekvenčním pořadí - + Download first and last pieces first Nejprve si stáhněte první a poslední části - + Info hash v2: Info hash v2: - + Select All Vybrat vše - + Select None Zrušit výběr - + Save as .torrent file... Uložit jako .torrent soubor... - + I/O Error Chyba I/O - Invalid torrent - Neplatný torrent - - - + Not Available This comment is unavailable Není k dispozici - + Not Available This date is unavailable Není k dispozici - + Not available Není k dispozici - Invalid magnet link - Neplatný magnet link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Nepodařilo se načíst torrent: %1. -Error: %2 - - - This magnet link was not recognized - Tento magnet link nebyl rozpoznán - - - + Magnet link Magnet link - + Retrieving metadata... Získávám metadata... - - + + Choose save path Vyberte cestu pro uložení - Torrent is already present - Torrent už je přidán - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' již existuje v seznamu pro stažení. Trackery nebyly sloučeny, protože je torrent soukromý. - - - Torrent is already queued for processing. - Torrent je již zařazen do fronty pro zpracování. - - - + No stop condition is set. Podmínka zastavení není vybrána. - + Torrent will stop after metadata is received. Torrent se zastaví po stažení metadat. - - Torrents that have metadata initially aren't affected. - Torrenty, které obsahovaly metadata, nejsou ovlivněny. - - - + Torrent will stop after files are initially checked. Torrent se zastaví po počáteční kontrole souborů. - + This will also download metadata if it wasn't there initially. Toto stáhne také metadata, pokud nebyla součástí. - - + + N/A N/A - Magnet link is already queued for processing. - Magnet odkaz je již zařazen do fronty pro zpracování. - - - + %1 (Free space on disk: %2) %1 (Volné místo na disku: %2) - + Not available This size is unavailable. Není k dispozici - + Torrent file (*%1) Torrent soubor (*%1) - + Save as torrent file Uložit jako torrent soubor - + Couldn't export torrent metadata file '%1'. Reason: %2. Nebylo možné exportovat soubor '%1' metadat torrentu. Důvod: %2. - + Cannot create v2 torrent until its data is fully downloaded. Nelze vytvořit v2 torrent, než jsou jeho data zcela stažena. - Cannot download '%1': %2 - Nelze stáhnout '%1': %2 - - - + Filter files... Filtrovat soubory... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' již existuje v seznamu pro stažení. Trackery nemohou být sloučeny, protože je torrent soukromý. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' již existuje v seznamu pro stažení. Přejete si sloučit trackery z nového zdroje? - - - + Parsing metadata... Parsování metadat... - + Metadata retrieval complete Načítání metadat dokončeno - - Failed to load from URL: %1. -Error: %2 - Selhalo načtení z URL: %1. -Chyba: %2 - - - Download Error - Chyba stahování - AddTorrentManager Downloading torrent... Source: "%1" - + Stahování torrentu... Zdroj: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Selhalo přidání torrentu. Zdroj: "%1". Důvod: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Rozpoznán pokus o přidání duplicitního torrentu. Zdroj: %1. Stávající torrent: %2. Výsledek: %3 - + Merging of trackers is disabled - + Slučování trackerů je vypnuto - + Trackers cannot be merged because it is a private torrent - + Trackery nemohou být sloučeny, protože jde o soukromý torrent - + Trackers are merged from new source - + Trackery jsou sloučeny z nového zdroje @@ -648,72 +594,77 @@ Chyba: %2 Přeskočit kontrolu hashe - - - Choose save path - Vybrat cestu uložení + + Torrent share limits + Limity sdílení torrentu - - - - - - - Default - Výchozí + + + Choose save path + Vybrat cestu uložení + + + - Yes - Ano + Default + Výchozí + Yes + Ano + + + + + No Ne - + Manual Manuální - + Automatic Automatické - + Original Originál - + Create subfolder Vytvořit podsložku - + Don't create subfolder Nevytvořit podsložku - + None Žádná - + Metadata received Metadata stažena - + Files checked Soubory zkontrolovány @@ -721,734 +672,852 @@ Chyba: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Při dokončení překontrolovat torrenty - - + + ms milliseconds ms - + Setting Nastavení - + Value Value set for this setting Hodnota - + (disabled) (vypnuto) - + (auto) (auto) - + + min minutes min - + All addresses Všechny adresy - + qBittorrent Section Sekce qBittorrentu - - + + Open documentation Otevřít dokumentaci - + All IPv4 addresses Všechny adresy IPv4 - + All IPv6 addresses Všechny adresy IPv6 - + libtorrent Section Sekce libtorrentu - + Fastresume files Soubory rychlého obnovení - + SQLite database (experimental) SQLite databáze (experimental) - + Resume data storage type (requires restart) Typ úložiště dat obnovení (vyžaduje restart) - + Normal Normální - + Below normal Pod normálem - + Medium Střední - + Low Malé - + Very low Velmi malé - - Process memory priority (Windows >= 8 only) - Priorita paměti procesu (pouze Windows >= 8) - - - + Physical memory (RAM) usage limit Limit využití fyzické paměti (RAM) - + Asynchronous I/O threads Asynchronní I/O vlákna - + Hashing threads Hashovací vlákna - + File pool size Velikost souborového zásobníku - + Outstanding memory when checking torrents Mimořádná paměť při kontrole torrentů - + Disk cache Disková cache - - - - + + + + s seconds s - + Disk cache expiry interval Interval vypršení diskové cache - + Disk queue size Velikost diskové fronty - - + + Enable OS cache Zapnout vyrovnávací paměť systému - + Coalesce reads & writes Sloučení čtecích & zapisovacích operací - + Use piece extent affinity Rozšíření o příbuzné části - + Send upload piece suggestions Doporučení pro odeslání částí uploadu - - - - + + + + + 0 (disabled) 0 (vypnuto) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Interval ukládání dat obnovení [0: vypnuto] - + Outgoing ports (Min) [0: disabled] Odchozí porty (Min) [0: vypnuto] - + Outgoing ports (Max) [0: disabled] Odchozí porty (Max) [0: vypnuto] - + 0 (permanent lease) 0 (trvalé propůjčení) - + UPnP lease duration [0: permanent lease] Doba UPnP propůjčení [0: trvalé propůjčení] - + Stop tracker timeout [0: disabled] Stop tracker timeout [0: vypnuto] - + Notification timeout [0: infinite, -1: system default] Timeout upozornění [0: nekonečně, -1: výchozí systému] - + Maximum outstanding requests to a single peer Maximum nezpracovaných požadavků na jeden peer - - - - - + + + + + KiB KiB - + (infinite) (nekonečně) - + (system default) (výchozí systému) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Tato volba je na Linuxu méně efektivní - + + Process memory priority + Priorita paměti procesu + + + Bdecode depth limit Bdecode omezení hloubky - + Bdecode token limit Bdecode omezení tokenu - + Default Výchozí - + Memory mapped files Soubory mapované v paměti - + POSIX-compliant POSIX-vyhovující - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk IO typ (vyžaduje restart) - - + + Disable OS cache Vypnout vyrovnávací paměť systému: - + Disk IO read mode Režim IO čtení disku - + Write-through Write-through - + Disk IO write mode Režim IO zápisu na disk - + Send buffer watermark Send buffer watermark - + Send buffer low watermark Send buffer low watermark - + Send buffer watermark factor Send buffer watermark faktor - + Outgoing connections per second Odchozí spojení za sekundu - - + + 0 (system default) 0 (výchozí systému) - + Socket send buffer size [0: system default] Velikost socket send bufferu [0: výchozí systému] - + Socket receive buffer size [0: system default] Velikost socket receive bufferu [0: výchozí systému] - + Socket backlog size Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit omezení velikosti .torrent souboru - + Type of service (ToS) for connections to peers Typ služby (ToS) pro připojování k peerům - + Prefer TCP Upřednostnit TCP - + Peer proportional (throttles TCP) Peer proportional (omezit TCP) - + Support internationalized domain name (IDN) Podporovat domény obsahující speciální znaky (IDN) - + Allow multiple connections from the same IP address Povolit více spojení ze stejné IP adresy - + Validate HTTPS tracker certificates Ověřovat HTTPS certifikáty trackerů - + Server-side request forgery (SSRF) mitigation Zamezení falšování požadavků na straně serveru (SSRF) - + Disallow connection to peers on privileged ports Nepovolit připojení k peerům na privilegovaných portech - + + It appends the text to the window title to help distinguish qBittorent instances + Přidává text na konec titulku okna pro odlišení od ostatních instancí qBittorrentu + + + + Customize application instance name + Přizpůsobte název instance aplikace + + + It controls the internal state update interval which in turn will affect UI updates Řídí interval aktualizace vnitřního stavu, který zase ovlivní aktualizace uživatelského rozhraní - + Refresh interval Interval obnovení - + Resolve peer host names Zjišťovat síťové názvy peerů - + IP address reported to trackers (requires restart) IP adresa hlášená trackerům (vyžaduje restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Znovu oznámit všem trackerům při změne IP nebo portu - + Enable icons in menus Povolit ikony v menu - + Enable port forwarding for embedded tracker Zapněte přesměrování portu pro vestavěný tracker - - (Auto detect if empty) + + Enable quarantine for downloaded files + Zapnout karanténu pro stažené soubory + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Zapnout Mark-of-the-Web (MOTW) pro stažené soubory + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Automaticky rozpoznat pokud je prázdné) + + + Python executable path (may require restart) + Cesta odkud se spouští Python (může vyžadovat restart) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Potvrďte odebrání trackeru ze všech torrentů + + + Peer turnover disconnect percentage Procento odpojení při peer turnover - + Peer turnover threshold percentage Procento limitu pro peer turnover - + Peer turnover disconnect interval Interval odpojení při peer turnover - + Resets to default if empty - + Resetuje se na výchozí pokud je prázdné - + DHT bootstrap nodes - + DHT bootstrap uzly - + I2P inbound quantity I2P příchozí množství - + I2P outbound quantity I2P odchozí množství - + I2P inbound length I2P příchozí délka - + I2P outbound length I2P odchozí délka - + Display notifications Zobrazit notifikace - + Display notifications for added torrents Zobrazit oznámení o přidaných torrentech - + Download tracker's favicon Stáhnout logo trackeru - + Save path history length Uložit délku historie cesty - + Enable speed graphs Zapnout graf rychlosti - + Fixed slots Pevné sloty - + Upload rate based Dle rychlosti uploadu - + Upload slots behavior Chování upload slotů - + Round-robin Poměrné rozdělení - + Fastest upload Nejrychlejší upload - + Anti-leech Priorita pro začínající a končící leechery - + Upload choking algorithm Škrtící algoritmus pro upload - + Confirm torrent recheck Potvrdit překontrolování torrentu - + Confirm removal of all tags Potvrdit odebrání všech štítků - + Always announce to all trackers in a tier Vždy oznamovat všem trackerům ve třídě - + Always announce to all tiers Vždy oznamovat všem třídám - + Any interface i.e. Any network interface Jakékoli rozhraní - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP mixed mode algoritmus - + Resolve peer countries Zjišťovat zemi původu peerů - + Network interface Síťové rozhraní - + Optional IP address to bind to Volitelná přidružená IP adresa - + Max concurrent HTTP announces Maximum souběžných HTTP oznámení - + Enable embedded tracker Zapnout vestavěný tracker - + Embedded tracker port Port vestavěného trackeru - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 byl spuštěn + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Spuštěno v portable režimu. Automaticky detekovan adresář s profilem: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Detekován nadbytečný parametr příkazového řádku: "%1". Portable režim již zahrnuje relativní fastresume. - + Using config directory: %1 Používá se adresář s konfigurací: %1 - + Torrent name: %1 Název torrentu: %1 - + Torrent size: %1 Velikost torrentu: %1 - + Save path: %1 Cesta pro uložení: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent byl stažen do %1. - + + Thank you for using qBittorrent. Děkujeme, že používáte qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, odeslání emailového oznámení - + Add torrent failed - + Přidání torrentu selhalo - + Couldn't add torrent '%1', reason: %2. - + Nebylo možné přidat torrent '%1', důvod: %2. + + + + The WebUI administrator username is: %1 + Uživatelské jméno správce WebUI je: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Heslo správce WebUI nebylo nastaveno. Dočasné heslo je přiřazeno této relaci: %1 + + + + You should set your own password in program preferences. + Měli byste nastavit své vlastní heslo v nastavení programu. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI je vypnuto! Pro zapnutí WebUI ručně upravte soubor konfigurace. - + Running external program. Torrent: "%1". Command: `%2` Spuštění externího programu. Torrent: "%1". Příkaz: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Spuštění externího programu selhalo. Torrent: "%1". Příkaz: `%2` - + Torrent "%1" has finished downloading Torrent "%1" dokončil stahování - + WebUI will be started shortly after internal preparations. Please wait... WebUI bude spuštěno brzy po vnitřních přípravách. Prosím čekejte... - - + + Loading torrents... Načítání torrentů... - + E&xit &Ukončit - + I/O Error i.e: Input/Output Error Chyba I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Chyba: %2 Důvod: %2 - Error - Chyba - - - Failed to add torrent: %1 - Selhalo přidání torrentu: %1 - - - + Torrent added Torrent přidán - + '%1' was added. e.g: xxx.avi was added. '%1' byl přidán. - + Download completed Stahování dokončeno. - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Stahování '%1' bylo dokončeno. - - - URL download error - Chyba stahování URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 spuštěn. ID procesu: %2 - Couldn't download file at URL '%1', reason: %2. - Nelze stáhnout soubor z URL: '%1', důvod: %2. + + This is a test email. + - Torrent file association - Asociace souboru .torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent není výchozí aplikací pro otevírání souborů .torrent ani Magnet linků. -Chcete qBittorrent nastavit jako výchozí program? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Stahování '%1' bylo dokončeno. - + Information Informace - + To fix the error, you may need to edit the config file manually. - + Pro opravu chyby může být potřeba ručně upravit konfigurační soubor. - + To control qBittorrent, access the WebUI at: %1 Pro ovládání qBittorrentu otevřete webové rozhraní na: %1 - - The Web UI administrator username is: %1 - Uživatelské jméno administrátora Web UI je: '%1'. - - - - The Web UI administrator password has not been changed from the default: %1 - Heslo správce webového rozhraní uživatele je stále výchozí: %1 - - - - This is a security risk, please change your password in program preferences. - Toto je bezpečnostní riziko, prosím změnte heslo v nastavení programu. - - - Application failed to start. - Aplikace selhala při startu. - - - + Exit Ukončit - + Recursive download confirmation - Potvrzení rekurzivního stahování + Potvrzení rekurzivního stahování - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' obsahuje soubory .torrent, chcete je také stáhnout? + Torrent '%1' obsahuje soubory .torrent, chcete je také stáhnout? - + Never - Nikdy + Nikdy - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekurzivní stažení .torrent souboru v rámci torrentu. Zdrojový torrent: "%1". Soubor: "%2" + Rekurzivní stažení .torrent souboru v rámci torrentu. Zdrojový torrent: "%1". Soubor: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Selhalo nastavení omezení fyzické paměti (RAM). Chybový kód: %1. Chybová zpráva: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Selhalo nastavení tvrdého limitu využití fyzické paměti (RAM). Velikost požadavku: %1. Tvrdý systémový limit: %2. Chybový kód: %3. Chybová zpráva: "%4" - + qBittorrent termination initiated zahájeno ukončení qBittorrentu - + qBittorrent is shutting down... qBittorrent se vypíná... - + Saving torrent progress... Průběh ukládání torrentu... - + qBittorrent is now ready to exit qBittorrent je připraven k ukončení @@ -1597,7 +1637,7 @@ Chcete qBittorrent nastavit jako výchozí program? AsyncFileStorage - + Could not create directory '%1'. Nelze vytvořit adresář '%1'. @@ -1605,22 +1645,22 @@ Chcete qBittorrent nastavit jako výchozí program? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI neúspěšné přihlášení. Důvod: IP je zakázána, IP: %1, uživatel: %2 - + Your IP address has been banned after too many failed authentication attempts. Vaše IP adresa byla zablokována, z důvodu mnoha neúspěšných pokusů o autentizaci. - + WebAPI login success. IP: %1 WebAPI úspěšné přihlášení. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI neúspěšné přihlášení. Důvod: neplatné údaje, počet pokusů: %1, IP: %2, uživatel: %3 @@ -1668,12 +1708,12 @@ Chcete qBittorrent nastavit jako výchozí program? Priorita: - + Must Not Contain: Nesmí obsahovat: - + Episode Filter: Filtr epizod: @@ -1726,263 +1766,263 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod &Export... - + Matches articles based on episode filter. Články odpovídající filtru epizod. - + Example: Příklad: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match odpovídá 2, 5, 8 až 15, 30 a dalším epizodám první sezóny - + Episode filter rules: Pravidla filtru epizod: - + Season number is a mandatory non-zero value Číslo sezóny je povinná nenulová hodnota - + Filter must end with semicolon Filtr musí být ukončen středníkem - + Three range types for episodes are supported: Jsou podporovány tři typy rozsahu pro epizody: - + Single number: <b>1x25;</b> matches episode 25 of season one Jedno číslo: <b>1x25;</b> odpovídá epizodě 25 první sezóny - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Rozsah: <b>1x25-40;</b> odpovídá epizodám 25 až 40 první sezóny - + Episode number is a mandatory positive value Číslo epizody je povinná kladná hodnota - + Rules Pravidla - + Rules (legacy) Pravidla (původní) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Neukončený rozsah: <b>1x25-;</b> zahrnuje epizody 25 a výše z první sezóny a všechny epizody pozdějších sérií - + Last Match: %1 days ago Poslední shoda: %1 dny nazpět - + Last Match: Unknown Poslední shoda: Neznámá - + New rule name Nový název pravidla - + Please type the name of the new download rule. Napište název nového pravidla stahování. - - + + Rule name conflict Název pravidla koliduje - - + + A rule with this name already exists, please choose another name. Pravidlo s tímto názvem již existuje, vyberte jiný název, prosím. - + Are you sure you want to remove the download rule named '%1'? Opravdu chcete odstranit pravidlo s názvem '%1'? - + Are you sure you want to remove the selected download rules? Opravdu chcete odstranit označená pravidla? - + Rule deletion confirmation Potvrdit smazání pravidla - + Invalid action Neplatná akce - + The list is empty, there is nothing to export. Seznam je prázdný, nic není k exportu. - + Export RSS rules Export RSS pravidel - + I/O Error Chyba I/O - + Failed to create the destination file. Reason: %1 Nepodařilo se vytvořit cílový soubor. Důvod: % 1 - + Import RSS rules Import RSS pravidel - + Failed to import the selected rules file. Reason: %1 Nepodařilo se importovat vybraný soubor pravidel. Důvod: % 1 - + Add new rule... Přidat nové pravidlo... - + Delete rule Smazat pravidlo - + Rename rule... Přejmenovat pravidlo... - + Delete selected rules Smazat označená pravidla - + Clear downloaded episodes... Odstranit stažené epizody... - + Rule renaming Přejmenování pravidla - + Please type the new rule name Napište název nového pravidla, prosím - + Clear downloaded episodes Odstranit stažené epizody - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Opravdu chcete vymazat seznam stažených epizod pro vybrané pravidlo? - + Regex mode: use Perl-compatible regular expressions Regex mód: použijte regulární výraz komatibilní s Perlem - - + + Position %1: %2 Pozice %1: %2 - + Wildcard mode: you can use Mód zástupných znaků: můžete použít - - + + Import error Chyba importu - + Failed to read the file. %1 Selhalo čtení souboru. %1 - + ? to match any single character ? pro shodu s libovolným jediným znakem - + * to match zero or more of any characters * pro shodu se žádným nebo více jakýmikoliv znaky - + Whitespaces count as AND operators (all words, any order) Mezera slouží jako operátor AND (všechna slova v jakémkoliv pořadí) - + | is used as OR operator | slouží jako operátor OR - + If word order is important use * instead of whitespace. Je-li důležité pořadí slov, použijte * místo mezery. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Výraz s prázdným %1 obsahem (např. %2) - + will match all articles. zahrne všechny položky. - + will exclude all articles. vyloučí všechny položky. @@ -2024,53 +2064,58 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nelze vytvořit složku pro obnovení torrentu: "%1" - + Cannot parse resume data: invalid format Data obnovení nelze analyzovat: neplatný formát - - + + Cannot parse torrent info: %1 Info torrentu nelze analyzovat: %1 - + Cannot parse torrent info: invalid format Info torrentu nelze analyzovat: neplatný formát - + + Mismatching info-hash detected in resume data + V datech obnovení byl rozpoznán nesprávný info-hash + + + Couldn't save torrent metadata to '%1'. Error: %2. Nebylo možné uložit metadata torrentu do '%1'. Chyba: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Nepodařilo se uložit data obnovení torrentu do '%1'. Chyba: %2 - + Couldn't load torrents queue: %1 Nelze načíst frontu torrentů: %1 - + Cannot parse resume data: %1 Data obnovení nelze analyzovat: %1 - + Resume data is invalid: neither metadata nor info-hash was found Data obnovení jsou neplatná: metadata nebo info-hash nebyly nalezeny - + Couldn't save data to '%1'. Error: %2 Nepodařilo se uložit data do '%1'. Chyba: %2 @@ -2078,38 +2123,38 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod BitTorrent::DBResumeDataStorage - + Not found. Nenalezeno. - + Couldn't load resume data of torrent '%1'. Error: %2 Nepodařilo se načíst data obnovení torrentu '%1'. Chyba: %2 - - + + Database is corrupted. Databáze je poškozena. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Nebylo možné zapnout Write-Ahead Logging (WAL) režim žurnálu. Chyba: %1. - + Couldn't obtain query result. Nebylo možné získat výsledek dotazu. - + WAL mode is probably unsupported due to filesystem limitations. WAL režim pravděpodobně není podporován kvůli omezením souborového systému. - + Couldn't begin transaction. Error: %1 Nebylo možné začít transakci. Chyba: %1 @@ -2117,22 +2162,22 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Nepodařilo se uložit metadata torrentu. Chyba: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Nepodařilo se uložit data obnovení torrentu '%1'. Chyba: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Nepodařilo se smazat data obnovení torrentu '%1'. Chyba: %2 - + Couldn't store torrents queue positions. Error: %1 Nelze uložit pozice ve frontě torrentů. Chyba: %1 @@ -2140,586 +2185,620 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Podpora Distribuované hash tabulky (DHT): %1 - - - - - - - - - + + + + + + + + + ON ZAPNUTO - - - - - - - - - + + + + + + + + + OFF VYPNUTO - - + + Local Peer Discovery support: %1 Podpora hledání místních peerů: %1 - + Restart is required to toggle Peer Exchange (PeX) support - Kvůli přepnutí podpory Výměny protějšků (PEX) je nutný restart + Kvůli přepnutí podpory Výměny peerů (PEX) je nutný restart - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Selhalo obnovení torrentu. Torrent: "%1". Důvod: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Selhalo obnovení/spuštění torrentu: Rozpoznáno nekonzistentní ID torrentu. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Rozpoznána nekonzistentní data: chybí kategorie v konfiguračním souboru. Kategorie bude obnovena ale její nastavení budou resetována do výchozího stavu. Torrent: "%1". Kategorie: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Rozpoznána nekonzistentní data: neplatná kategorie. Torrent: "%1". Kategorie: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Rozpoznán nesoulad mezi cílovou cestou uložení obnovované kategorie a současnou cílovou cestou uložení torrentu. Torrent je nyní přepnut do Ručního módu. Torrent: "%1". Kategorie: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Rozpoznána nekonzistentní data: chybí štítek v konfiguračním souboru. Štítek bude obnoven. Torrent: "%1". Štítek: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Rozpoznána nekonzistentní data: neplatný štítek. Torrent: "%1". Štítek: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Rozpoznána událost probuzení systému. Oznamování všem trackerům... - + Peer ID: "%1" - ID Peera: "%1" + ID peera: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Podpora Výměny peerů (PeX): %1 - - + + Anonymous mode: %1 Anonymní režim: %1 - - + + Encryption support: %1 Podpora šifrování: %1 - - + + FORCED VYNUCENO - + Could not find GUID of network interface. Interface: "%1" Nebylo možné najít GUID síťového rozhraní. Rozhraní: "%1" - + Trying to listen on the following list of IP addresses: "%1" Zkouším naslouchat na těchto IP adresách: "%1" - + Torrent reached the share ratio limit. Torrent dosáhl stanoveného ratia. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Odebrán torrent. + Odebrán torrent. - - - Removed torrent and deleted its content. - Odebrán torrent a smazány stažené soubory. + Odebrán torrent a smazány stažené soubory. - - - Torrent paused. - Torrent zastaven. + Torrent pozastaven. - - - + Super seeding enabled. Super seeding zapnut. - + Torrent reached the seeding time limit. Torrent dosáhl maximální doby seedování. - + Torrent reached the inactive seeding time limit. Torrent dosáhl časového omezení doby neaktivního seedování. - + Failed to load torrent. Reason: "%1" Načtení torrentu selhalo. Důvod: "%1" - + I2P error. Message: "%1". + I2P chyba. Zpráva: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP podpora: zapnuto + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Stahování torrentu, prosím čekejte... Zdroj: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Načtení torrentu selhalo. Zdroj: "%1". Důvod: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Rozpoznán pokus o přidání duplicitního torrentu. Sloučení trackerů je vypnuto. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Rozpoznán pokus o přidání duplicitního torrentu. Ke sloučení trackerů nedošlo, protože jde o soukromý torrent. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Rozpoznán pokus o přidání duplicitního torrentu. Trackery jsou sloučeny z nového zdroje. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP podpora: zapnuto + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP podpora: vypnuto + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Export torrentu selhal. Torrent: "%1". Cíl: "%2". Důvod: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Ukládání souborů rychlého obnovení bylo zrušeno. Počet zbývajících torrentů: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Slučování trackerů je vypnuto + + + + Trackers cannot be merged because it is a private torrent + Trackery nemohou být sloučeny, protože jde o soukromý torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Systémový stav sítě změněn na %1 + + Trackers are merged from new source + Trackery jsou sloučeny z nového zdroje - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP podpora: vypnuto - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Export torrentu selhal. Torrent: "%1". Cíl: "%2". Důvod: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Nastavení sítě %1 bylo změněno, obnovuji spojení + + Aborted saving resume data. Number of outstanding torrents: %1 + Ukládání souborů rychlého obnovení bylo zrušeno. Počet zbývajících torrentů: %1 - + The configured network address is invalid. Address: "%1" Nastavená síťová adresa není platná. Adresa: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Nebylo možné najít nastavenou síťovou adresu pro naslouchání. Adresa: "%1" - + The configured network interface is invalid. Interface: "%1" Nastavené síťové rozhraní není platné. Rozhraní: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Zamítnuta neplatná IP adresa při použití seznamu blokovaných IP adres. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Přidán tracker k torrentu. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Odebrán tracker z torrentu. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Přidán URL seeder k torrentu. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Odebrán URL seeder z torrentu. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent zastaven. Torrent: "%1" + Torrent pozastaven. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent obnoven. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Stahování torrentu dokončeno. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Přesun Torrentu zrušen. Torrent: "%1". Zdroj: "%2". Cíl: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Selhalo zařazení torrentu do fronty k přesunu. Torrent: "%1". Zdroj: "%2". Cíl: "%3". Důvod: torrent je právě přesouván do cíle - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Selhalo zařazení torrentu do fronty k přesunu. Torrent: "%1". Zdroj: "%2" Cíl: "%3". Důvod: obě cesty ukazují na stejné umístění - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Přesun torrentu zařazen do fronty. Torrent: "%1". Zdroj: "%2". Cíl: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Zahájení přesunu torrentu. Torrent: "%1". Cíl: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Selhalo uložení nastavení Kategorií. Soubor: "%1". Chyba: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Selhalo čtení nastavení Kategorií. Soubor: "%1". Chyba: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekurzivní stažení .torrent souboru v rámci torrentu. Zdrojový torrent: "%1". Soubor: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Rekurzivní stažení .torrent souboru v rámci torrentu. Zdrojový torrent: "%1". Soubor: "%2". Chyba "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Úspěšně dokončeno načtení souboru IP filtru. Počet použitých pravidel: %1 - + Failed to parse the IP filter file Načítání pravidel IP filtru ze souboru se nezdařilo - + Restored torrent. Torrent: "%1" Obnoven torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Přidán nový torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent skončil chybou. Torrent: "%1". Chyba: "%2" - - Removed torrent. Torrent: "%1" - Odebrán torrent. Torrent: "%1" + Odebrán torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Odebrán torrent a smazána jeho data. Torrent: "%1" + Odebrán torrent a smazána jeho data. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentu chybí parametry SSL. Torrent: "%1". Zpráva: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Chyba souboru. Torrent: "%1". Soubor: "%2". Důvod: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP port mapování selhalo. Zpráva: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP port mapování bylo úspěšné. Zpráva: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filtr - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtrovaný port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). privilegovaný port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + V BitTorrent relaci došlo k vážné chybě. Důvod: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 proxy chyba. Adresa: %1. Zpráva: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 omezení smíšeného módu - + Failed to load Categories. %1 Selhalo načítání kategorií. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Selhalo čtení nastavení kategorií. Soubor: "%1". Chyba: "Neplatný formát dat" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent odstraněn, ale nepodařilo se odstranit jeho obsah a/nebo jeho partfile. Torrent: "%1". Chyba: "%2" + Torrent odstraněn, ale nepodařilo se odstranit jeho obsah a/nebo jeho partfile. Torrent: "%1". Chyba: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 je vypnut - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 je vypnut - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL seed DNS hledání selhalo. Torrent: "%1". URL: "%2". Chyba: "%3" + URL seed DNS hledání selhalo. Torrent: "%1". URL: "%2". Chyba: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Obdržena chybová zpráva od URL seedera. Torrent: "%1". URL: "%2". Zpráva: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Úspěšně naslouchám na IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Selhalo naslouchání na IP. IP: "%1". Port: "%2/%3". Důvod: "%4" - + Detected external IP. IP: "%1" Rozpoznána externí IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Chyba: Interní fronta varování je plná a varování nejsou dále zapisována, můžete pocítit snížení výkonu. Typ vynechaného varování: "%1". Zpráva: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Přesun torrentu byl úspěšný. Torrent: "%1". Cíl: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Přesun torrentu selhal. Torrent: "%1". Zdroj: "%2". Cíl: "%3". Důvod: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operace zrušena - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Vytvoření nového torrent souboru selhalo. Důvod: %1. + + Failed to start seeding. + Selhalo zahájení seedování. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operace zrušena + Operace zrušena + + Create new torrent file failed. Reason: %1. - Vytvoření nového torrent souboru selhalo. Důvod: %1. + Vytvoření nového torrent souboru selhalo. Důvod: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Selhalo přidání peeru "%1" do torrentu "%2". Příčina: %3 - + Peer "%1" is added to torrent "%2" Peer "%1" je přidán k torrentu "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Rozpoznána neočekávaná data. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Nebylo možné zapisovat do souboru. Důvod: "%1". Torrent je nyní v režimu "pouze upload". - + Download first and last piece first: %1, torrent: '%2' Stáhnout první a poslední část první: %1, torrent: '%2' - + On Zapnuto - + Off Vypnuto - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Selhalo opětovné načtení torrentu. Torrent: %1. Důvod: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Generování dat pro obnovení selhalo. Torrent: "%1". Důvod: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Selhala obnova torrentu. Soubory byly pravděpodobně přesunuty a nebo úložiště není dostupné. Torrent: "%1". Důvod: "%2" - + Missing metadata Chybějící metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Přejmenování souboru selhalo. Torrent: "%1", soubor: "%2", příčina: "%3" - + Performance alert: %1. More info: %2 Varování výkonu: %1. Detaily: %2 @@ -2740,184 +2819,198 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametr '%1' musí dodržovat syntaxi '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametr '%1' musí dodržovat syntaxi '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' V proměnné předpokládáno celé číslo '%1', ale obdrženo '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametr '%1' musí dodržovat syntaxi '%1=%2' + Parametr '%1' musí dodržovat syntaxi '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Předpokládáno %1 v proměnné '%2', ale obdrženo '%3' - - + + %1 must specify a valid port (1 to 65535). %1 musí určovat správný port (od 1 do 65535). - + Usage: Používání: - + [options] [(<filename> | <url>)...] [volby] [(<filename> | <url>)...] - + Options: Možnosti: - + Display program version and exit Zobrazit verzi programu a skončit - + Display this help message and exit Zobrazit nápovědu a skončit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametr '%1' musí dodržovat syntaxi '%1=%2' + + + + Confirm the legal notice + Potvrďte právní upozornění + + + + port port - - Change the Web UI port - Změnit port Web UI + + Change the WebUI port + Změnit port WebUI - + Change the torrenting port Změnit port pro torrent - + Disable splash screen Zakáže úvodní obrazovku - + Run in daemon-mode (background) Spustit na pozadí - + dir Use appropriate short form or abbreviation of "directory" adr - + Store configuration files in <dir> Uložit soubory konfigurace do <dir> - - + + name název - + Store configuration files in directories qBittorrent_<name> Uložit soubory konfigurace v adresářích qBittorrent_ <name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Vniknout do souborů libtorrent fastresume a vztáhnout cesty k souborům podle adresáře profilu - + files or URLs soubory nebo URL odkazy - + Download the torrents passed by the user Stáhnout soubory přidané uživatelem - + Options when adding new torrents: Volby při přidávání torrentů: - + path cesta - + Torrent save path Cesta uložení torrentu - + + Add torrents as running or stopped + + + Add torrents as started or paused - Přidat torrenty jako spuštěné nebo zastavené + Přidat torrenty jako spuštěné nebo pozastavené - + Skip hash check Přeskočit kontrolu hashe - + Assign torrents to category. If the category doesn't exist, it will be created. Přiřadit torrenty do kategorie. Když kategorie neexistuje, bude vytvořena. - + Download files in sequential order Stahovat soubory v sekvenčním pořadí - + Download first and last pieces first Stáhnout nejprve první a poslední část - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Určit, zda se otevře dialog "Přidat nový torrent" když je torrent přidáván. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Hodnoty předvoleb mohou být zadány pomocí proměnných. Pro volt nazvanou 'parameter-name', je proměnná prostředí 'QBT_PARAMETER_NAME' (velkými písmeny, znak '-' je nahrazen znakem '_'). Pro předání stavové hodnoty nastavte proměnnou na '1' nebo 'TRUE'. Příklad vypnutí úvodní obrazovky: - + Command line parameters take precedence over environment variables Parametry příkazového řádku mají přednost před parametry proměnných prostředí - + Help Nápověda @@ -2925,17 +3018,17 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod CategoryFilterModel - + Categories Kategorie - + All Vše - + Uncategorized Nezařazeno @@ -2969,13 +3062,21 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod - Resume torrents - Obnovit torrenty + Start torrents + + Stop torrents + + + + Resume torrents + Obnovit torrenty + + Pause torrents - Zastavit torrenty + Pozastavit torrenty @@ -2986,15 +3087,20 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod ColorWidget - + Edit... Upravit... - + Reset Resetovat + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod CustomThemeSource - + Failed to load custom theme style sheet. %1 - Selhalo načtení stylu vlastního motivu. %1 + Selhalo načtení stylu vlastního stylu. %1 - + Failed to load custom theme colors. %1 Selhalo načtení barev vlastního motivu. %1 @@ -3048,7 +3154,7 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod DefaultThemeSource - + Failed to load default theme colors. %1 Selhalo načtení barev výchozího motivu. %1 @@ -3067,23 +3173,27 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod + Also remove the content files + + + Also permanently delete the files - Též trvale smazat soubory + Též trvale smazat soubory - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Opravdu chcete odebrat '%1' ze seznamu přenosů? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Opravdu chcete odebrat tyto %1 torrenty ze seznamu přenosů? - + Remove Odebrat @@ -3096,12 +3206,12 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod Stahovat z URL - + Add torrent links Přidat odkazy torrentů - + One link per line (HTTP links, Magnet links and info-hashes are supported) Jeden odkaz na řádek (jsou podporovány odkazy HTTP, Magnet linky odkazy a info-hashes ) @@ -3111,12 +3221,12 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod Stahování - + No URL entered Nebylo vloženo žádné URL - + Please type at least one URL. Prosím napište alespoň jedno URL. @@ -3275,64 +3385,91 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod Chyba parsování: soubor s filtrem není validní PeerGuardian P2B soubor. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Stahování torrentu... Zdroj: "%1" - Trackers cannot be merged because it is a private torrent - + Trackery nemohou být sloučeny, protože jde o soukromý torrent - + Torrent is already present - Torrent už je přidán + Torrent už je přidán + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' již existuje v seznamu pro stažení. Přejete si sloučit trackery z nového zdroje? + Torrent '%1' již existuje v seznamu pro stažení. Přejete si sloučit trackery z nového zdroje? GeoIPDatabase - - + + Unsupported database file size. Nepodporovaná velikost databázového souboru. - + Metadata error: '%1' entry not found. Chyba metadat: '%1' nenalezeno. - + Metadata error: '%1' entry has invalid type. Chyba metadat: '%1' je neplatný. - + Unsupported database version: %1.%2 Nepodporovaná verze databáze: %1.%2 - + Unsupported IP version: %1 Nepodporovaná verze IP: %1 - + Unsupported record size: %1 Nepodporovaná velikost záznamu: %1 - + Database corrupted: no data section found. Databáze poškozena: data nenalezena. @@ -3340,17 +3477,17 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Požadavek Http překračuje limit velikosti, zavírám socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Špatná metoda HTTP požadavku, zavírání socketu. IP: %1. Metoda: "%2" - + Bad Http request, closing socket. IP: %1 Vadný Http požadavek, zavírám socket. IP: %1 @@ -3391,36 +3528,64 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod IconWidget - + Browse... Procházet... - + Reset Resetovat - + Select icon Vybrat ikonu - + Supported image files Podporované soubory obrázků + + LegalNotice + + + Legal Notice + Právní upozornění + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent je program pro sdílení souborů. Když spustíte torrent, jeho data budou zpřístupněna ostatním k uploadu. Sdílení jakéhokoliv obsahu je Vaše výhradní zodpovědnost. + + + + No further notices will be issued. + Žádná další upozornění nebudou zobrazena. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Pokud jste si přečetli právní upozornění, můžete na příkazové řádce použít přepínač `--confirm-legal-notice` pro skrytí tohoto upozornění. + + + + Press 'Enter' key to continue... + Stiskněte klávesu 'Enter' pro pokračování... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 byl zablokován. Příčina: %2. - + %1 was banned 0.0.0.0 was banned '%1' byl zablokován. @@ -3429,91 +3594,62 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (Formáty dat také pod Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 je neznámý parametr příkazové řádky. - - + + %1 must be the single command line parameter. %1 musí být jediný parametr příkazové řádky. - - You cannot use %1: qBittorrent is already running for this user. - Nemůžete použít %1: qBittorrent pro tohoto uživatele již beží. - - - + Run application with -h option to read about command line parameters. Spusťte aplikaci s parametrem -h pro nápovědu příkazové řádky - + Bad command line Nesprávný příkaz z příkazové řádky - + Bad command line: Nesprávný příkaz z příkazové řádky: - + An unrecoverable error occurred. - + Došlo k chybě, kterou nešlo překonat. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Právní podmínky - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent je program pro sdílení souborů. Když spustíte torrent, jeho data bud zpřístupněna ostatním k uploadu. Sdílení jakéhokoliv obsahu je Vaše výhradní zodpovědnost. - - - - No further notices will be issued. - Žádná další upozornění nebudou zobrazena. - - - - Press %1 key to accept and continue... - Stisknutím klávesy %1 souhlasíte a pokračujete... + V qBittorrentu došlo k chybě, kterou nešlo překonat. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent je program na sdílení souborů. Spustíte-li torrent, jeho data budou zpřístupněna ostatním ke stažení. Veškerý obsah sdílíte na svou vlastní odpovědnost. - -Další upozornění již nebudou zobrazena. + + You cannot use %1: qBittorrent is already running. + Nemůžete použít %1: qBittorrent je již spuštěn. - - Legal notice - Právní podmínky + + Another qBittorrent instance is already running. + Jiná relace qBittorrentu je již spuštěna. - - Cancel - Zrušit + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Nalezena neočekávaná relace qBittorrentu. Současná relace bude ukončena. Aktuální ID procesu: %1. - - I Agree - Souhlasím + + Error when daemonizing. Reason: "%1". Error code: %2. + Chyba při přechodu do režimu na pozadí. Důvod: "%1". Kód chyby: %2. @@ -3524,621 +3660,706 @@ Další upozornění již nebudou zobrazena. Ú&pravy - + &Tools &Nástroje - + &File &Soubor - + &Help Nápo&věda - + On Downloads &Done Při &dokončení stahování - + &View &Zobrazit - + &Options... &Možnosti... - &Resume - &Obnovit + &Obnovit - + &Remove &Odebrat - + Torrent &Creator &Vytvoření torrentu - - + + Alternative Speed Limits Alternativní limity rychlosti - + &Top Toolbar Horní panel nás&trojů - + Display Top Toolbar Zobrazit horní panel nástrojů - + Status &Bar Stavová lišta - + Filters Sidebar Filtry boční panel - + S&peed in Title Bar R&ychlost v záhlaví okna - + Show Transfer Speed in Title Bar Zobrazit aktuální rychlost v záhlaví okna - + &RSS Reader &RSS čtečka - + Search &Engine Vyhl&edávač - + L&ock qBittorrent Zamkn&out qBittorrent - + Do&nate! Darujte! - + + Sh&utdown System + + + + &Do nothing &Nedělat nic - + Close Window Zavřít okno - R&esume All - Obnovit vš&e + Obnovit vš&e - + Manage Cookies... Spravovat cookies... - + Manage stored network cookies Spravovat uložené síťové cookies - + Normal Messages Normální sdělení - + Information Messages Informační sdělení - + Warning Messages Varovná sdělení - + Critical Messages Kritická sdělení - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Nastavit globální limity rychlosti... - + Bottom of Queue Konec fronty - + Move to the bottom of the queue Přesunout na konec fronty - + Top of Queue Začátek fronty - + Move to the top of the queue Přesunout na začátek fronty - + Move Down Queue Přesunout frontu níže - + Move down in the queue Přesunout níže ve frontě - + Move Up Queue Přesunout frontu výše - + Move up in the queue Přesunout výše ve frontě - + &Exit qBittorrent Ukončit qBittorr&ent - + &Suspend System U&spat počítač - + &Hibernate System &Režim spánku - S&hutdown System - &Vypnout počítač + &Vypnout počítač - + &Statistics &Statistika - + Check for Updates Zkontrolovat aktualizace - + Check for Program Updates Zkontrolovat aktualizace programu - + &About O &aplikaci - &Pause - Po&zastavit + Po&zastavit - P&ause All - Zastavit vš&e + Zastavit vš&e - + &Add Torrent File... Přid&at torrent soubor... - + Open Otevřít - + E&xit &Konec - + Open URL Otevřít URL - + &Documentation &Dokumentace - + Lock Zamknout - - - + + + Show Ukázat - + Check for program updates Zkontrolovat aktualizace programu - + Add Torrent &Link... Přidat torrent link... - + If you like qBittorrent, please donate! Pokud se Vám qBittorrent líbí, prosím přispějte! - - + + Execution Log Záznamy programu (Log) - + Clear the password Vymazat heslo - + &Set Password Na&stavit heslo - + Preferences Předvolby - + &Clear Password Vyma&zat heslo - + Transfers Přenosy - - + + qBittorrent is minimized to tray qBittorrent je minimalizován do lišty - - - + + + This behavior can be changed in the settings. You won't be reminded again. Toto chování může být změněno v nastavení. Nebudete znovu upozorněni. - + Icons Only Jen ikony - + Text Only Jen text - + Text Alongside Icons Text vedle ikon - + Text Under Icons Text pod ikonama - + Follow System Style Jako systémový styl - - + + UI lock password Heslo pro zamknutí UI - - + + Please type the UI lock password: Zadejte prosím heslo pro zamknutí UI: - + Are you sure you want to clear the password? Opravdu chcete vymazat heslo? - + Use regular expressions Používejte regulární výrazy - - Search - Hledat + + + Search Engine + Vyhledávač - - Transfers (%1) - Přenosy (%1) + + Search has failed + Hledání selhalo - Recursive download confirmation - Potvrzení rekurzivního stahování + + Search has finished + - Never - Nikdy + + Search + Hledat - + + Transfers (%1) + Přenosy (%1) + + + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent byl právě aktualizován a vyžaduje restart, aby se změny provedly. - + qBittorrent is closed to tray qBittorrent je zavřen do lišty - + Some files are currently transferring. Některé soubory jsou právě přenášeny. - + Are you sure you want to quit qBittorrent? Určitě chcete ukončit qBittorrent? - + &No &Ne - + &Yes &Ano - + &Always Yes Vžd&y - + Options saved. Volby uloženy. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime - Python Runtime není nainstalován + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [S: %1, O: %2] %3 - - qBittorrent Update Available + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Python Runtime není nainstalován + + + + qBittorrent Update Available qBittorrent aktualizace k dispozici - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Pro použití vyhledávačů je vyžadován Python, ten ale není nainstalován. Chcete jej nyní nainstalovat? - + Python is required to use the search engine but it does not seem to be installed. Pro použití vyhledávačů je vyžadován Python, ten ale není nainstalován. - - + + Old Python Runtime Zastaralý Python Runtime - + A new version is available. Je k dispozici nová verze. - + Do you want to download %1? Přejete si stáhnout %1? - + Open changelog... Otevřít seznam změn... - + No updates available. You are already using the latest version. Nejsou žádné aktualizace. Již používáte nejnovější verzi. - + &Check for Updates Zkontrolovat aktualiza&ce - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Vaše verze Pythonu (%1) je zastaralá. Minimální verze je: %2 Chcete teď nainstalovat novější verzi? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Vaše verze Pythonu (%1) je zastaralá. Pro zprovoznění vyhledávačů aktualizujte na nejnovější verzi. Minimální požadavky: %2 - + + Paused + Pozastaveno + + + Checking for Updates... Kontrolování aktualizací... - + Already checking for program updates in the background Kontrola aktualizací programu již probíha na pozadí - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Chyba stahování - Python setup could not be downloaded, reason: %1. Please install it manually. - Instalační soubor Pythonu nelze stáhnout, důvod: %1. + Instalační soubor Pythonu nelze stáhnout, důvod: %1. Nainstalujte jej prosím ručně. - - + + Invalid password Neplatné heslo - + Filter torrents... Filtrovat torrenty... - + Filter by: Filtrovat podle: - + The password must be at least 3 characters long Heslo musí být nejméně 3 znaky dlouhé. - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' obsahuje soubory .torrent, chcete je také stáhnout? - - - + The password is invalid Heslo je neplatné - + DL speed: %1 e.g: Download speed: 10 KiB/s Rychlost stahování: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Rychlost odesílání: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [S: %1, O: %2] qBittorrent %3 - - - + Hide Skrýt - + Exiting qBittorrent Ukončování qBittorrent - + Open Torrent Files Otevřít torrent soubory - + Torrent Files Torrent soubory @@ -4199,133 +4420,133 @@ Nainstalujte jej prosím ručně. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O chyba: %1 - + The file size (%1) exceeds the download limit (%2) Velikost souboru (%1) překračuje limit pro stažení (%2) - + Exceeded max redirections (%1) Překračuje maximum přesměrování (%1) - + Redirected to magnet URI Přesměrováno na magnet URI - + The remote host name was not found (invalid hostname) Název vzdáleného hostitele nebyl nalezen (neplatný název hostitele) - + The operation was canceled Operace byla zrušena - + The remote server closed the connection prematurely, before the entire reply was received and processed Vzdálený server předčasně ukončil připojení, dříve než byla celá odpověď přijata a zpracována - + The connection to the remote server timed out Spojení se vzdáleným serverem vypršelo - + SSL/TLS handshake failed SSL/TLS handshake selhalo - + The remote server refused the connection Vzdálený server odmítl připojení - + The connection to the proxy server was refused Připojení k proxy serveru bylo odmítnuto - + The proxy server closed the connection prematurely Proxy server předčasně ukončil připojení - + The proxy host name was not found Název hostitele proxy serveru nebyl nalezen - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Připojení k proxy serveru vypršelo nebo proxy dostatečně rychle neodpověděl na zaslaný požadavek - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy vyžaduje ověření, ale neakceptoval žádné z nabízených přihlašovacích údajů - + The access to the remote content was denied (401) Přístup ke vzdálenému obsahu byl odepřen (401) - + The operation requested on the remote content is not permitted Požadovaná operace na vzdáleném obsahu není dovolena - + The remote content was not found at the server (404) Vzdálený obsah nebyl na serveru nalezen (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Vzdálený server vyžaduje ověření aby mohl poskytnout obsah, zadané přihlašovací údaje ale nebyly akceptovány - + The Network Access API cannot honor the request because the protocol is not known API pro připojení k síti nemohlo akceptovat požadavek z důvodu neznámého protokolu - + The requested operation is invalid for this protocol Požadovaná operace je pro tento protokol neplatná - + An unknown network-related error was detected Byla detekována neznámá chyba sítě - + An unknown proxy-related error was detected Byla detekována neznámá chyba související s proxy - + An unknown error related to the remote content was detected Detekována neznámá chyba vzdáleného obsahu - + A breakdown in protocol was detected Byla detekována porucha v protokolu - + Unknown error Neznámá chyba @@ -4333,7 +4554,12 @@ Nainstalujte jej prosím ručně. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignoruji SSL chybu, URL: "%1", chyby: "%2" @@ -5705,294 +5931,307 @@ Nainstalujte jej prosím ručně. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Pokročilé - + Customize UI Theme... Přizpůsobit motiv UI... - + Transfer List Seznam přenosů - + Confirm when deleting torrents Potvrdit smazání torrentu - Shows a confirmation dialog upon pausing/resuming all the torrents - Požadovat potvrzení při pozastavení/obnovení všech torrentů + Požadovat potvrzení při pozastavení/obnovení všech torrentů - Confirm "Pause/Resume all" actions - Potvrzovat akce "Pozastavit/Obnovit vše" + Potvrzovat akce "Pozastavit/Obnovit vše" - + Use alternating row colors In table elements, every other row will have a grey background. Použít střídající se barvu řádků - + Hide zero and infinity values Skrýt nulové a nekonečné hodnoty - + Always Vždy - Paused torrents only - Pouze zastavené torrenty + Pouze pozastavené torrenty - + Action on double-click Akce po dvojkliku - + Downloading torrents: Stahování torrentů: - - Start / Stop Torrent - Spustit / Zastavit torrent + Spustit / Zastavit torrent - - + + Open destination folder Otevřít cílový adresář - - + + No action Žádná akce - + Completed torrents: Dokončené torrenty: - + Auto hide zero status filters Automaticky skrýt filtry s nulovým stavem - + Desktop Plocha - + Start qBittorrent on Windows start up Spustit qBittorrent po spuštění Windows - + Show splash screen on start up Zobrazit úvodní obrazovku při startu - + Confirmation on exit when torrents are active Potvrzení při ukončení, jsou-li torrenty aktivní - + Confirmation on auto-exit when downloads finish Potvrzení při automatickém ukončení, jsou-li torrenty dokončeny - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Pro nastavení qBittorrentu jako výchozího programu pro .torrent soubory a/nebo Magnet linky, <br/>můžete použít dialog <span style=" font-weight:600;">Výchozí programy</span> z <span style=" font-weight:600;">Ovládacích panelů</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Rozvržení obsahu torrentu: - + Original Originál - + Create subfolder Vytvořit podsložku - + Don't create subfolder Nevytvářet podsložku - + The torrent will be added to the top of the download queue Torrent bude přidán na začátek fronty stahování - + Add to top of queue The torrent will be added to the top of the download queue Přidat na začátek fronty - + When duplicate torrent is being added Když je přidáván duplicitní torrent - + Merge trackers to existing torrent Sloučit trackery do stávajícího torrentu - + + Keep unselected files in ".unwanted" folder + Zanechat nevybrané soubory ve složce ".unwanted" + + + Add... Přidat... - + Options.. Možnosti.. - + Remove Odebrat - + Email notification &upon download completion Upozornění emailem při dokončení stahování - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protokol připojení k peerům: - + Any Libovolný - + I2P (experimental) I2P (experimentální) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Pokud je zapnut smíšený režim &quot;mixed mode&quot; , I2P torrenty mají dovoleno získávat peery z jiných zdrojů, než je tracker a připojovat se k běžným IP adresám, což NEzajišťuje anonymitu. Toto může být užitečné pokud uživatel nemá zájem o anonymizaci I2P, ale stále chce mít možnost připojení k I2P peerům.</p></body></html> + <html><head/><body><p>Pokud je zapnut smíšený režim &quot;mixed mode&quot; , I2P torrenty mají dovoleno získávat peery z jiných zdrojů, než je tracker a připojovat se k běžným IP adresám, což NEzajišťuje anonymitu. Toto může být užitečné pokud uživatel nemá zájem o anonymizaci I2P, ale stále chce mít možnost připojení k I2P peerům.</p></body></html> - + Mixed mode Smíšený režim - + Some options are incompatible with the chosen proxy type! Některé volby se neslučují s vybraným typem proxy serveru! - + If checked, hostname lookups are done via the proxy Pokud je zaškrtnuto, zjištění názvu hostitele probíhá přes proxy server - + Perform hostname lookup via proxy Zjišťovat název hostitele pomocí proxy - + Use proxy for BitTorrent purposes Použít proxy pro účely BitTorrent - + RSS feeds will use proxy RSS kanály použijí proxy - + Use proxy for RSS purposes Použít proxy pro účely RSS - + Search engine, software updates or anything else will use proxy Vyhledávání, aktualizace software a další, využijí proxy server - + Use proxy for general purposes Použít proxy pro obecné účely - + IP Fi&ltering Filtrování IP - + Schedule &the use of alternative rate limits Plánovat použití alternativních omezení rychlosti - + From: From start time Od: - + To: To end time Do: - + Find peers on the DHT network Hledat peery v síti DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Vyžadovat šifrování: Připojí se pouze k peerům pomocí šifrování proto Zakázat šifrování: Připojí se pouze k peerům bez šifrování protokolu - + Allow encryption Povolit šifrování - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Více informací</a>) - + Maximum active checking torrents: Maximum souběžně kontrolovaných torrentů: - + &Torrent Queueing Řazení torrentů do fronty - + When total seeding time reaches Když celkový čas seedování dosáhne - + When inactive seeding time reaches Když čas neaktivního seedování dosáhne - A&utomatically add these trackers to new downloads: - Automaticky přidat tyto trackery k novým stahováním: + Automaticky přidat tyto trackery k novým stahováním: - + RSS Reader RSS čtečka - + Enable fetching RSS feeds Zapnout načítání RSS feedů - + Feeds refresh interval: Interval obnovení feedů: - + + Same host request delay: + Prodleva požadavku stejného hosta: + + + Maximum number of articles per feed: Maximální počet článků na feed: - - - + + + min minutes min - + Seeding Limits Limity sdílení - Pause torrent - Zastavit torrent + Pozastavit torrent - + Remove torrent Odstranit torrent - + Remove torrent and its files Odstranit torrent a jeho soubory - + Enable super seeding for torrent Zapnout super seeding pro torrent - + When ratio reaches Když je dosaženo ratio - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Automatické RSS stahování torrentů - + Enable auto downloading of RSS torrents Zapnout automatické RSS stahování torrentů - + Edit auto downloading rules... Upravit pravidla automatického stahování... - + RSS Smart Episode Filter RSS inteligentní filtr epizod - + Download REPACK/PROPER episodes Stáhnout REPACK/PROPER epizody - + Filters: Filtry: - + Web User Interface (Remote control) Webové uživatelské rozhraní (vzdálená správa) - + IP address: IP adresa: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Zvolte IPv4 nebo IPv6 adresu. Můžete zadat "0.0.0.0" pro jakoukoliv "::" pro jakoukoliv IPv6 adresu, nebo "*" pro jakékoliv IPv4 nebo IPv6 adresy. - + Ban client after consecutive failures: Zakázat klienta po následných selháních: - + Never Nikdy - + ban for: ban pro: - + Session timeout: Časový limit relace: - + Disabled Zakázáno - Enable cookie Secure flag (requires HTTPS) - Povolit příznak zabezpečení souborů cookie (vyžaduje HTTPS) + Povolit příznak zabezpečení souborů cookie (vyžaduje HTTPS) - + Server domains: Domény serveru: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ best měli vložit doménové názvy použité pro WebUI server. Použijte ';' pro oddělení více položek. Můžete použít masku '*'. - + &Use HTTPS instead of HTTP Použít HTTPS místo HTTP - + Bypass authentication for clients on localhost Přeskočit ověření klientů na místní síti - + Bypass authentication for clients in whitelisted IP subnets Přeskočit ověření klientů na seznamu povolených IP podsítí - + IP subnet whitelist... Seznam povolených IP podsítí... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Uveďte IP adresy (nebo podsítě, např. 0.0.0.0/24) reverzních proxy pro přeposlání adresy klienta (atribut X-Forwarded-For), použijte ';' pro rozdělení více položek. - + Upda&te my dynamic domain name Aktualizovat můj dynamické doménový název (DDNS) - + Minimize qBittorrent to notification area Minimalizovat qBittorrent do oznamovací oblasti - + + Search + Hledat + + + + WebUI + + + + Interface Rozhraní - + Language: Jazyk: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Styl ikony v oznamovací oblasti: - - + + Normal Normální - + File association Asociace souborů - + Use qBittorrent for .torrent files Použít qBittorent pro soubory .torrent - + Use qBittorrent for magnet links Použít qBittorent pro Magnet linky - + Check for program updates Zkontrolovat aktualizace programu - + Power Management Správa napájení - + + &Log Files + + + + Save path: Uložit do: - + Backup the log file after: Zálohovat log soubor po: - + Delete backup logs older than: Smazat log soubor starší než: - + + Show external IP in status bar + + + + When adding a torrent Při přidání torrentu - + Bring torrent dialog to the front Dialog torrentu do popředí - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Smazat i .torrent soubory, jejichž přidání bylo zrušeno - + Also when addition is cancelled Také pokud bylo přidání zrušeno - + Warning! Data loss possible! Varování! Možnost ztráty dat! - + Saving Management Správa ukládání - + Default Torrent Management Mode: Výchozí režim správy torrentu: - + Manual Manuální - + Automatic Automatický - + When Torrent Category changed: Když je kategorie torrentu změněna: - + Relocate torrent Přemístit torrent - + Switch torrent to Manual Mode Přepnout torrent do ručního módu - - + + Relocate affected torrents Přemístit dotčené torrenty - - + + Switch affected torrents to Manual Mode Přepnout dotčené torrenty do ručního módu - + Use Subcategories Použít podkategorie - + Default Save Path: Výchozí cesta pro uložení: - + Copy .torrent files to: Kopírovat .torrent soubory do: - + Show &qBittorrent in notification area Zobrazit qBittorrent v oznamovací oblasti - &Log file - Soubor logů + Soubor logů - + Display &torrent content and some options Zobrazit obsah torrentu a některé volby - + De&lete .torrent files afterwards Později smazat .torrent soubory - + Copy .torrent files for finished downloads to: Kopírovat .torrent soubory dokončených stahování do: - + Pre-allocate disk space for all files Předem vyhradit místo na disku pro všechny soubory - + Use custom UI Theme Použijte vlastní motiv uživatelského rozhraní - + UI Theme file: Soubor motivu uživatelského rozhraní: - + Changing Interface settings requires application restart Změna nastavení rozhraní vyžaduje restart aplikace - + Shows a confirmation dialog upon torrent deletion Zobrazí dialog pro potvrzení po odstranění torrentu - - + + Preview file, otherwise open destination folder Náhled souboru, jinak otevřít cílový adresář - - Show torrent options - Zobraz možnosti torrentu + Zobraz možnosti torrentu - + Shows a confirmation dialog when exiting with active torrents Zobrazí dialogové okno s potvrzením při ukončení s aktivními torrenty - + When minimizing, the main window is closed and must be reopened from the systray icon Při minimalizaci je hlavní okno zavřeno a musí být znovu otevřeno z ikony systray - + The systray icon will still be visible when closing the main window Po zavření hlavního okna bude ikona systray stále viditelná - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Zavřete qBittorrent do oznamovací oblasti - + Monochrome (for dark theme) Monochromatický (Tmavý motiv) - + Monochrome (for light theme) Monochromatický (Světlý motiv) - + Inhibit system sleep when torrents are downloading Zakázat uspání počítače při stahování torrentů - + Inhibit system sleep when torrents are seeding Zakázat uspání počítače při odesílání torrentů - + Creates an additional log file after the log file reaches the specified file size Vytvoří další soubor protokolu poté, co soubor protokolu dosáhne zadané velikosti souboru - + days Delete backup logs older than 10 days dnů - + months Delete backup logs older than 10 months měsíců - + years Delete backup logs older than 10 years roky - + Log performance warnings Zaznamenávání událostí týkajících se výkonu - The torrent will be added to download list in a paused state - Torrent bude přidán do seznamu stahování v zastaveném stavu + Torrent bude přidán do seznamu stahování v pozastaveném stavu - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Nespouštět stahování automaticky - + Whether the .torrent file should be deleted after adding it Má být .torrent soubor po přidání smazán - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Před zahájením stahování vyhradí veškeré potřebné místo na disku, aby se minimalizovala fragmentace. Užitečné pouze pro HDD. - + Append .!qB extension to incomplete files Přidat příponu .!qB k nedokončeným souborům - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Po stažení torrentu nabídněte přidání torrentů ze všech .torrent souborů, které se v něm nacházejí - + Enable recursive download dialog Zapnout dialog rekurzivního downloadu - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automaticky: O různých vlastnostech torrentu (např. cesta uložení) rozhodne příslušná kategorie Ručně: Různé vlastnosti torrentu (např. cesta uložení) musí být přiřazeny ručně - + When Default Save/Incomplete Path changed: Při změně cesty uložení cílové i nekompletní: - + When Category Save Path changed: - Při změně cesty pro uložení Kategorií: + Při změně cesty pro uložení u kategorie: - + Use Category paths in Manual Mode Použít Kategorie cesty v Ručním módu - + Resolve relative Save Path against appropriate Category path instead of Default one Použít relativní cestu pro uložení podle Cesty kategorie namísto Výchozí cesty - + Use icons from system theme Použít ikony systémového motivu - + Window state on start up: Stav okna při startu: - + qBittorrent window state on start up Stav qBittorrent okna při startu - + Torrent stop condition: Podmínka zastavení torrentu: - - + + None Žádná - - + + Metadata received Metadata stažena - - + + Files checked Soubory zkontrolovány - + Ask for merging trackers when torrent is being added manually Zeptat se na sloučení trackerů při manuálním přidávání torrentu - + Use another path for incomplete torrents: Použij jiné umístění pro nedokončené torrenty: - + Automatically add torrents from: Automaticky přidávat .torrent soubory z: - + Excluded file names Vyloučené názvy souborů - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,842 +6994,915 @@ readme.txt: filtruje přesný název souboru. readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale ne 'readme10.txt'. - + Receiver Příjemce - + To: To receiver Do: - + SMTP server: SMTP server: - + Sender Odesílatel - + From: From sender Od: - + This server requires a secure connection (SSL) Tento server vyžaduje zabezpečené připojení (SSL) - - + + Authentication Ověření - - - - + + + + Username: Uživatelské jméno: - - - - + + + + Password: Heslo: - + Run external program Spustit externí program - Run on torrent added - Spustit při přidání torrentu + Spustit při přidání torrentu - Run on torrent finished - Spustit při dokončení torrentu + Spustit při dokončení torrentu - + Show console window Zobrazit okno konzoly - + TCP and μTP TCP a μTP - + Listening Port Naslouchací port - + Port used for incoming connections: Port použitý pro příchozí spojení: - + Set to 0 to let your system pick an unused port Nastav na 0 a systém vybere nevyužitý port - + Random Náhodný - + Use UPnP / NAT-PMP port forwarding from my router Použít přesměrování portů UPnP / NAT-PMP z mého routeru - + Connections Limits Limit spojení - + Maximum number of connections per torrent: Maximální počet spojení na torrent: - + Global maximum number of connections: Celkový maximální počet spojení: - + Maximum number of upload slots per torrent: Maximální počet odesílacích slotů na torrent: - + Global maximum number of upload slots: Celkový maximální počet odesílacích slotů: - + Proxy Server Proxy server - + Type: Typ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections V opačném případě je proxy server použit pouze pro připojení k trackeru - + Use proxy for peer connections Použít proxy pro připojení k peerům - + A&uthentication Ověření - + Info: The password is saved unencrypted Info: Heslo je uloženo nešifrované - + Filter path (.dat, .p2p, .p2b): Cesta k filtru (.dat, .p2p, .p2b): - + Reload the filter Znovunačíst filtr - + Manually banned IP addresses... Seznam ručně zakázaných IP adres... - + Apply to trackers Použít pro trackery - + Global Rate Limits Celkové limity rychlosti - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Odesílání: - - + + Download: Stahování: - + Alternative Rate Limits Alternativní limity rychlosti - + Start time Doba spuštění - + End time Doba ukončení - + When: Kdy: - + Every day Každý den - + Weekdays Pracovní dny - + Weekends Víkendy - + Rate Limits Settings Nastavení poměru sdílení - + Apply rate limit to peers on LAN Omezit poměr sdílení peerům na LAN - + Apply rate limit to transport overhead Použít limity rychlosti pro režijní provoz - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Použít omezení rychlosti pro uTP připojení - + Privacy Soukromí - + Enable DHT (decentralized network) to find more peers Zapnout DHT síť (decentralizovaná síť) k nalezení většího počtu peerů - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Vyměňovat peery s kompatibilními klienty Bittorrent (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Zapnout Peer Exchange (PeX) k nalezení většího počtu peerů - + Look for peers on your local network Hledat peery na lokální síti - + Enable Local Peer Discovery to find more peers Zapnout místní vyhledávání k nalezení většího počtu peerů - + Encryption mode: Režim šifrování: - + Require encryption Vyžadovat šifrování - + Disable encryption Vypnout šifrování - + Enable when using a proxy or a VPN connection Zapnout při použití proxy nebo VPN připojení - + Enable anonymous mode Zapnout anonymní režim - + Maximum active downloads: Max. počet aktivních stahování: - + Maximum active uploads: Max. počet aktivních odesílání: - + Maximum active torrents: Maximální počet aktivních torrentů: - + Do not count slow torrents in these limits Nezapočítávat pomalé torrenty do těchto limitů - + Upload rate threshold: Limit rychlosti odesílání: - + Download rate threshold: Limit rychlosti stahování: - - - + + + + sec seconds sec - + Torrent inactivity timer: Časovač nečinnosti torrentu: - + then potom - + Use UPnP / NAT-PMP to forward the port from my router Použít UPnP / NAT-PMP k přesměrování portu z mého routeru - + Certificate: Certifikát: - + Key: Klíč: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informace o certifikátech</a> - + Change current password Změnit současné heslo - Use alternative Web UI - Použít alternativní Web UI + Použít alternativní Web UI - + Files location: Umístění souborů: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Bezpečnost - + Enable clickjacking protection Zapnout ochranu clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Zapnout ochranu Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Zapnout ověřování hlavičky hostitele - + Add custom HTTP headers Přidat vlastní HTTP hlavičky - + Header: value pairs, one per line Hlavička: páry hodnot, jedna na řádek - + Enable reverse proxy support Zapnout podporu reverzní proxy - + Trusted proxies list: Seznam důvěryhodných proxy: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Služba: - + Register Registrovat - + Domain name: Doména: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Zapnutím těchto voleb můžete <strong>nevratně ztratit</strong> vaše .torrent soubory! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Pokud zapnete druhou volbu (&ldquo;Také, když je přidán zrušeno&rdquo;) .torrent soubor <strong>bude smazán</strong> i když stisknete &ldquo;<strong>Zrušit</strong>&rdquo; v dialogu &ldquo;Přidat torrent&rdquo; - + Select qBittorrent UI Theme file Vyberte soubor motivu uživatelského rozhraní qBittorrent - + Choose Alternative UI files location Vybrat umístění souborů Alternativního UI - + Supported parameters (case sensitive): Podporované parametry (citlivé na velikost znaků): - + Minimized Minimalizované - + Hidden Skryté - + Disabled due to failed to detect system tray presence Deaktivováno, protože se nepodařilo detekovat přítomnost systémové lišty - + No stop condition is set. Podmínka zastavení není zvolena. - + Torrent will stop after metadata is received. Torrent se zastaví po stažení metadat. - - Torrents that have metadata initially aren't affected. - Torrenty, které obsahovaly metadata, nejsou ovlivněny. - - - + Torrent will stop after files are initially checked. Torrent se zastaví po počáteční kontrole souborů. - + This will also download metadata if it wasn't there initially. Toto stáhne také metadata, pokud nebyly součástí. - + %N: Torrent name %N: Název torrentu - + %L: Category %L: Kategorie - + %F: Content path (same as root path for multifile torrent) %F: Umístění obsahu (stejné jako zdrojová cesta u vícesouborového torrentu) - + %R: Root path (first torrent subdirectory path) %R: Zdrojová cesta (první podadresář torrentu) - + %D: Save path %D: Cesta pro uložení - + %C: Number of files %C: Počet souborů - + %Z: Torrent size (bytes) %Z: Velikost torrentu (v bytech) - + %T: Current tracker %T: Současný tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: Ohraničit parametr uvozovkami, aby nedošlo k odstřižení textu za mezerou (např. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (žádný) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent bude uznán pomalým jestliže rychlosti stahování a odesílání zůstanou pod těmito hodnotami "Časovače nečinnosti torrentu" v sekundách - + Certificate Certifikát - + Select certificate Vybrat certifikát - + Private key Privátní klíč - + Select private key Vybrat privátní klíč - + + WebUI configuration failed. Reason: %1 + Nastavení WebUI selhalo. Důvod: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Vyberte sledovaný adresář - + Adding entry failed Přidání položky selhalo - - Location Error - Chyba umístění + + The WebUI username must be at least 3 characters long. + Uživatelské jméno WebUI musí mít délku nejméně 3 znaky. + + + + The WebUI password must be at least 6 characters long. + Heslo WebUI musí mít délku nejméně 6 znaků. - - The alternative Web UI files location cannot be blank. - Umístění souborů Alternativního UI nemůže být prázdné. + + Location Error + Chyba umístění - - + + Choose export directory Vyberte adresář pro export - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Pokud jsou tyto volby zapnuty, qBittorrent <strong>smaže</strong> .torrent soubory poté, co byly úspěšně (první možnost) nebo neúspěšně (druhá možnost) přidány do fronty pro stažení. Toto nastane <strong>nejen</strong> u souborů otevřených pomocí volby menu &ldquo;Přidat torrent&rdquo;, ale také u souborů otevřených pomocí <strong>Asociace souborů</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Soubor Motivu uživatelského rozhraní qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Štítky (oddělené čárkou) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (nebo '-' pokud není dostupný) - + %J: Info hash v2 (or '-' if unavailable) %J: Info hash v2 (nebo '-' pokud není dostupný) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent ID (buď sha-1 info hash pro torrent v1 nebo zkrácený sha-256 info hash pro v2/hybridní torrent) - - - + + + Choose a save directory Vyberte adresář pro ukládání - + + Torrents that have metadata initially will be added as stopped. + Torrenty s metadaty budou přidány jako zastavené. + + + Choose an IP filter file Vyberte soubor s IP filtry - + All supported filters Všechny podporované filtry - + + The alternative WebUI files location cannot be blank. + Alternativní cestu umístění souborů WebUI musíte vyplnit. + + + Parsing error Chyba zpracování - + Failed to parse the provided IP filter Nepovedlo se zpracovat poskytnutý IP filtr - + Successfully refreshed Úspěšně obnoveno - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number IP filter byl úspěšně zpracován: bylo aplikováno %1 pravidel. - + Preferences Předvolby - + Time Error Chyba času - + The start time and the end time can't be the same. Časy zahájení a ukončení nemohou být stejné. - - + + Length Error Chyba délky - - - The Web UI username must be at least 3 characters long. - Uživatelské jméno pro webové rozhraní musí být nejméně 3 znaky dlouhé. - - - - The Web UI password must be at least 6 characters long. - Heslo pro webové rozhraní musí být nejméně 6 znaků dlouhé. - PeerInfo - + Unknown Neznámé - + Interested (local) and choked (peer) - Zájem (místní) a přiškrcený (peer) + Interested (místní) a přiškrcený (peer) - + Interested (local) and unchoked (peer) - Zájem (místní) a nepřiškrcený (peer) + Interested (místní) a nepřiškrcený (peer) - + Interested (peer) and choked (local) - Zájem (peer) a přiškrcený (místní) + Interested (peer) a přiškrcený (místní) - + Interested (peer) and unchoked (local) - Zájem (peer) a nepřiškrcený (místní) + Interested (peer) a nepřiškrcený (místní) - + Not interested (local) and unchoked (peer) - Nezájem (místní) a nepřiškrcený (peer) + Not interested (místní) a nepřiškrcený (peer) - + Not interested (peer) and unchoked (local) - Nezájem (peer) a nepřiškrcený (místní) + Not interested (peer) a nepřiškrcený (místní) - + Optimistic unchoke Optimisticky nepřiškrcený - + Peer snubbed Odmítnutý peer - + Incoming connection Příchozí spojení - + Peer from DHT Peer z DHT - + Peer from PEX Peer z PEX - + Peer from LSD Peer z LSD - + Encrypted traffic Šifrovaný přenos - + Encrypted handshake Šifrovaný handshake - + + + Peer is using NAT hole punching + + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale Peer "%1" je ručně zablokován - + N/A Není k dispozici @@ -7668,7 +8080,7 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale Seznam peerů pro přidání (jedna IP na řádek): - + Format: IPv4:port / [IPv6]:port Formát: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale PiecesBar - + Files in this piece: Soubory v této části: - + File in this piece: Soubory v této části: - + File in these pieces: Soubor v těchto částech - + Wait until metadata become available to see detailed information Vyčkejte než bude možné zobrazit metadata pro detailnější informace - + Hold Shift key for detailed information Držte klávesu Shift pro detailní informace @@ -7742,58 +8154,58 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale Pluginy pro vyhledávání - + Installed search plugins: Nainstalované vyhledávací pluginy: - + Name Název - + Version Verze - + Url URL - - + + Enabled Zapnuto - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Varování: Ujistěte se, že dodržujete zákony Vaší země o ochraně duševního vlastnictví když stahujete torrenty z kteréhokoliv z těchto vyhledávačů. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Nové pluginy pro vyhledávání můžete získat zde: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Nainstalovat nový - + Check for updates Zkontrolovat aktualizace - + Close Zavřít - + Uninstall Odinstalovat @@ -7913,17 +8325,17 @@ Tyto pluginy byly vypnuty. Zdroj pluginu - + Search plugin source: Zdroj vyhledávacího pluginu: - + Local file Místní soubor - + Web link Webový odkaz @@ -7941,70 +8353,70 @@ Tyto pluginy byly vypnuty. Power management found suitable D-Bus interface. Interface: %1 - + Správa napájení nalezla vyhovující rozhraní D-Bus. Rozhraní: %1 Power management error. Did not found suitable D-Bus interface. - + Chyba správy napájení. Nebylo nalezeno vyhovující rozhraní D-Bus. Power management error. Action: %1. Error: %2 - + Chyba správy napájení. Akce: %1. Chyba: %2 Power management unexpected error. State: %1. Error: %2 - + Neočekávaný chyba správy napájení. Stav: %1. Chyba: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Následující soubory torrentu "%1" podporují náhled, vyberte prosím jeden z nich: - + Preview Náhled - + Name Název - + Size Velikost - + Progress Průběh - + Preview impossible Náhled není možný - + Sorry, we can't preview this file: "%1". Je nám líto, nemůžeme zobrazit náhled tohoto souboru: "%1". - + Resize columns Změnit rozměry sloupců - + Resize all non-hidden columns to the size of their contents Změnit rozměry viditelných sloupců podle velikosti jejich obsahu @@ -8017,27 +8429,27 @@ Tyto pluginy byly vypnuty. Private::FileLineEdit - + Path does not exist Cesta neexistuje - + Path does not point to a directory Cesta nevede k adresáři - + Path does not point to a file Cesta nevede k souboru - + Don't have read permission to path Není oprávnění ke čtení pro cestu - + Don't have write permission to path Není oprávnění k zápisu pro cestu @@ -8078,12 +8490,12 @@ Tyto pluginy byly vypnuty. PropertiesWidget - + Downloaded: Staženo: - + Availability: Dostupnost: @@ -8098,53 +8510,53 @@ Tyto pluginy byly vypnuty. Přenos - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktivní po dobu: - + ETA: Odh. čas: - + Uploaded: Odesláno: - + Seeds: Zdroje: - + Download Speed: Rychlost stahování: - + Upload Speed: Rychlost odesílání: - + Peers: Peery: - + Download Limit: Omezení stahování: - + Upload Limit: Omezení odesílání: - + Wasted: Zahozeno: @@ -8154,193 +8566,249 @@ Tyto pluginy byly vypnuty. Připojení: - + Information Informace - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Komentář: - + Select All Vybrat vše - + Select None Zrušit výběr - + Share Ratio: Poměr sdílení: - + Reannounce In: Znovu-oznámit za: - + Last Seen Complete: Poslední komplet zdroj: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Celková velikost: - + Pieces: Části: - + Created By: Vytvořil/a: - + Added On: Přidáno: - + Completed On: Dokončeno: - + Created On: Vytvořeno: - + + Private: + + + + Save Path: Uložit do: - + Never Nikdy - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (má %3) - - + + %1 (%2 this session) %1 (%2 toto sezení) - - + + + N/A N/A - + + Yes + Ano + + + + No + Ne + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sdíleno %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 celkem) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 prům.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nový webový seed + Nový webový seed - Remove Web seed - Odstranit webový seed + Odstranit webový seed - Copy Web seed URL - Kopírovat URL webového zdroje + Kopírovat URL webového zdroje - Edit Web seed URL - Upravit URL webového zdroje + Upravit URL webového zdroje - + Filter files... Filtrovat soubory... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Grafy rychlosti jsou vypnuty - + You can enable it in Advanced Options Můžete to zapnout v Rozšířených nastaveních - New URL seed New HTTP source - Nový URL zdroj + Nový URL zdroj - New URL seed: - Nový URL zdroj: + Nový URL zdroj: - - This URL seed is already in the list. - Tento URL zdroj už v seznamu existuje. + Tento URL zdroj už v seznamu existuje. - + Web seed editing Úpravy webového zdroje - + Web seed URL: URL webového zdroje: @@ -8359,22 +8827,22 @@ Tyto pluginy byly vypnuty. Nelze uložit data AutoDownloaderu RSS v %1. Chyba: %2 - + Invalid data format Neplatný formát dat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS článek '%1' je přijat pravidlem '%2'. Pokus o přidání torrentu... - + Failed to read RSS AutoDownloader rules. %1 Selhalo čtení pravidel RSS AutoDownloaderu. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Nelze načíst pravidla RSS AutoDownloader. Příčina: % 1 @@ -8382,22 +8850,22 @@ Tyto pluginy byly vypnuty. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Selhalo stažení RSS feedu u '%1'. Příčina '%2' - + RSS feed at '%1' updated. Added %2 new articles. RSS feed u '%1' úspěšně aktualizován. Přidány %2 nové články. - + Failed to parse RSS feed at '%1'. Reason: %2 Selhalo zpracování RSS feedu u '%1'. Příčina '%2' - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS feed u '%1' byl úspěšně stažen. Začínám ho zpracovávat. @@ -8433,12 +8901,12 @@ Tyto pluginy byly vypnuty. RSS::Private::Parser - + Invalid RSS feed. Neplatný RSS feed. - + %1 (line: %2, column: %3, offset: %4). %1 (řádek: %2, sloupec: %3, offset: %4). @@ -8446,99 +8914,99 @@ Tyto pluginy byly vypnuty. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Nebylo možné uložit nastavení RSS relace. Soubor: "%1". Chyba: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Nebylo možné uložit data RSS relace. Soubor: "%1". Chyba: "%2" - - + + RSS feed with given URL already exists: %1. RSS feed se zadanou URL už už existuje: %1. - + Feed doesn't exist: %1. Feed neexistuje: %1. - + Cannot move root folder. Nelze přesunout kořenový adresář. - - + + Item doesn't exist: %1. Položka neexistuje: %1. - + Couldn't move folder into itself. Nebylo možné přesunout adresář do sebe. - + Cannot delete root folder. Nelze smazat kořenový adresář. - + Failed to read RSS session data. %1 Selhalo čtení dat RSS relace. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Selhal rozbor dat RSS relace. Soubor: "%1". Chyba: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Selhalo načtení dat RSS relace. Soubor: "%1". Chyba: "Neplatný formát dat." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Nebylo možné načíst RSS kanál. Kanál: "%1". Důvod: URL je požadována. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Nebylo možné načíst RSS kanál. Kanál: "%1". Důvod: UID není platné. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Duplicitní RSS kanál nalezen. UID: "%1". Chyba: Nastavení není v pořádku. - + Couldn't load RSS item. Item: "%1". Invalid data format. Nebylo možné načíst RSS položku. Položka: "%1". Neplatná podoba dat. - + Corrupted RSS list, not loading it. Chybný seznam RSS, ruším jeho načítání. - + Incorrect RSS Item path: %1. Nesprávná cesta položky RSS: %1. - + RSS item with given path already exists: %1. žka RSS se zadanou cestou neexistuje: %1. - + Parent folder doesn't exist: %1. Nadřazený adresář neexistuje: %1. @@ -8562,8 +9030,8 @@ Tyto pluginy byly vypnuty. - - + + Mark items read Označ jako přečtené. @@ -8588,132 +9056,132 @@ Tyto pluginy byly vypnuty. Torrenty: (dvojklik ke stažení) - - + + Delete Smazat - + Rename... Přejmenovat... - + Rename Přejmenovat - - + + Update Aktualizace - + New subscription... Nový odběr... - - + + Update all feeds Aktualizovat všechny feedy - + Download torrent Stáhnout torrent - + Open news URL Otevřít odkaz zpráv - + Copy feed URL Kopírovat odkaz feedů - + New folder... Nová složka... - + Edit feed URL... Upravit adresu feedu... - + Edit feed URL Upravit adresu feedu - + Please choose a folder name Vyberte název složky - + Folder name: Název složky: - + New folder Nová složka - - + + Please type a RSS feed URL Prosím vložte odkaz RSS feedu - - + + Feed URL: Odkaz feedu - + Deletion confirmation Smazat potvrzení - + Are you sure you want to delete the selected RSS feeds? Určitě chcete smazar označené RSS feedy? - + Please choose a new name for this RSS feed Zvolte název pro tento RSS feed, prosím - + New feed name: Nový název feedu: - + Rename failed Přejmenovaní neuspěšné - + Date: Datum: - + Feed: - + Feed: - + Author: Autor @@ -8721,38 +9189,38 @@ Tyto pluginy byly vypnuty. SearchController - + Python must be installed to use the Search Engine. Pro použití vyhledávače musí být nainstalován Python. - + Unable to create more than %1 concurrent searches. Nelze vytvořit více než %1 hledání současně. - - + + Offset is out of range Odchylka je mimo rozsah - + All plugins are already up to date. Všechny pluginy jsou aktuální. - + Updating %1 plugins Aktualizuji %1 pluginů - + Updating plugin %1 Aktualizuji plugin %1 - + Failed to check for plugin updates: %1 Chyba kontroly aktualizací pro tyto pluginy: %1 @@ -8827,132 +9295,146 @@ Tyto pluginy byly vypnuty. Velikost: - + Name i.e: file name Název - + Size i.e: file size Velikost - + Seeders i.e: Number of full sources Seedeři - + Leechers i.e: Number of partial sources Leecheři - Search engine - Vyhledávač + Vyhledávač - + Filter search results... Filtrovat výsledky hledání... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Výsledky (zobrazuje <i>%1</i> z <i>%2</i>): - + Torrent names only Pouze názvy torrentů - + Everywhere Všude - + Use regular expressions Použijte regulární výrazy - + Open download window Otevřít okno stahování - + Download Stáhnout - + Open description page Otevřít stránku s popisem - + Copy Kopírovat - + Name Název - + Download link Download link - + Description page URL URL stránky s popisem - + Searching... Hledání... - + Search has finished Hledání dokončeno - + Search aborted Hledání zrušeno - + An error occurred during search... Během hledání nastala chyba... - + Search returned no results Nebyly nalezeny žádné výsledky - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Viditelnost sloupců - + Resize columns Změnit rozměry sloupců - + Resize all non-hidden columns to the size of their contents Změnit rozměry viditelných sloupců podle velikosti jejich obsahu @@ -8960,104 +9442,104 @@ Tyto pluginy byly vypnuty. SearchPluginManager - + Unknown search engine plugin file format. Neznámý formát souboru pluginu vyhledávače. - + Plugin already at version %1, which is greater than %2 Verze nainstalovaného pluginu %1 je vyšší než %2 - + A more recent version of this plugin is already installed. V systému je již nainstalována novější verze tohoto pluginu. - + Plugin %1 is not supported. Plugin %1 není podporován - - + + Plugin is not supported. Plugin není podporován. - + Plugin %1 has been successfully updated. Plugin %1 byl úspěšně aktualizován - + All categories Všechny kategorie - + Movies Filmy - + TV shows TV seriály - + Music Hudba - + Games Hry - + Anime Anime - + Software Software - + Pictures Obrázky - + Books Knihy - + Update server is temporarily unavailable. %1 Server s aktualizacemi je dočasně nedostupný. %1 - - + + Failed to download the plugin file. %1 Selhalo stažení plugin souboru. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" je zastaralý, aktualizuji na verzi %2 - + Incorrect update info received for %1 out of %2 plugins. Obdrženy nesprávné informace o aktualizaci pro %1 z %2 pluginů. - + Search plugin '%1' contains invalid version string ('%2') Vyhledávací plugin '%1' obsahuje neplatný řetezec verze ('%2') @@ -9067,114 +9549,153 @@ Tyto pluginy byly vypnuty. - - - - Search Hledat - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Žádné vyhledávací pluginy nejsou nainstalovány. Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okně, abyste nějaké nainstalovali. - + Search plugins... Pluginy pro vyhledávání - + A phrase to search for. Fráze k vyhledání - + Spaces in a search term may be protected by double quotes. Mezery v hledaném výrazu moho být chráněny uvozovkami. - + Example: Search phrase example Příklad: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: vyhledat <b>foo bar</b> - + All plugins Všechny pluginy - + Only enabled Pouze zapnuté - + + + Invalid data format. + Neplatný formát dat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: vyhledat <b>foo</b> a <b>bar</b> - + + Refresh + + + + Close tab Zavřít kartu - + Close all tabs Zavřít všechny karty - + Select... Vybrat... - - - + + Search Engine Vyhledávač - + + Please install Python to use the Search Engine. Pro použití vyhledávače nainstalujte Python. - + Empty search pattern Prázdný hledaný řetězec - + Please type a search pattern first Nejdříve napište hledaný řetězec - + + Stop Zastavit - Search has finished - Hledání ukončeno + Hledání ukončeno - Search has failed - Hledání selhalo + Hledání selhalo + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn - + Upload: Odesílání: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Stahování: - + Alternative speed limits Alternativní limity rychlosti @@ -9506,32 +10027,32 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn Průměrná doba ve frontě: - + Connected peers: Připojení peerové: - + All-time share ratio: Celkový poměr sdílení: - + All-time download: Celkově staženo: - + Session waste: Zahozeno od spuštění: - + All-time upload: Celkově odesláno: - + Total buffer size: Celková velikost vyrovnávací paměti: @@ -9546,12 +10067,12 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn I/O úkoly ve frontě: - + Write cache overload: Přeplnění cache pro zápis: - + Read cache overload: Přetížení cache pro čtení: @@ -9570,51 +10091,67 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn StatusBar - + Connection status: Stav připojení: - - + + No direct connections. This may indicate network configuration problems. Žádná přímá spojení. To může značit problémy s nastavením sítě. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 uzlů - + qBittorrent needs to be restarted! Je nutné restartovat qBittorrent! - - - + + + Connection Status: Stav připojení: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. To obvykle znamená, že qBittorrent nedokázal naslouchat na portu nastaveném pro příchozí spojení. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Kliknutí přepne na alternativní limity rychlosti - + Click to switch to regular speed limits Kliknutím přepnete na normální limity rychlosti @@ -9643,14 +10180,22 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn Dokončeno (0) - Resumed (0) - Obnoveno (0) + Obnoveno (0) - Paused (0) - Zastaveno (0) + Pozastaveno (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn Completed (%1) Dokončeno (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Zastaveno (%1) + Pozastaveno (%1) @@ -9723,14 +10287,12 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn Přesouvání (%1) - Resume torrents - Obnovit torrenty + Obnovit torrenty - Pause torrents - Zastavit torrenty + Pozastavit torrenty @@ -9738,9 +10300,8 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn Odstranit torrenty - Resumed (%1) - Obnoveno (%1) + Obnoveno (%1) @@ -9781,17 +10342,17 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn TagFilterModel - + Tags Štítky - + All Vše - + Untagged Neoznačeno @@ -9799,52 +10360,64 @@ Klikněte na tlačítko "Vyhledávácí pluginy..." dole vpravo v okn TagFilterWidget - + Add tag... Přidat štítek... - + Remove tag Odebrat štítek - + Remove unused tags Odebrat nepoužité štítky - Resume torrents - Pokračování torrentů + Pokračování torrentů - Pause torrents - Zastavení torrentů + Pozastavení torrentů - + Remove torrents Odstranit torrenty - New Tag - Nový štítek + Nový štítek + + + + Start torrents + + + + + Stop torrents + - + Tag: Štítek: - + + Add tag + + + + Invalid tag name Neplatný název štítku - + Tag name '%1' is invalid Název štítku "%1" je neplatný @@ -9984,32 +10557,32 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TorrentContentModel - + Name Název - + Progress Průběh - + Download Priority Priorita stahování - + Remaining Zbývající - + Availability Dostupnost - + Total Size Velikost Celková @@ -10054,102 +10627,120 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TorrentContentWidget - + Rename error Chyba přejmenování - + Renaming Přejmenovávám - + New name: Nový název: - + Column visibility Viditelnost sloupce - + Resize columns Změnit rozměry sloupců - + Resize all non-hidden columns to the size of their contents Změnit rozměry viditelných sloupců podle velikosti jejich obsahu - + Open Otevřít - + Open containing folder Otevřít cílový adresář - + Rename... Přejmenovat... - + Priority Priorita - - + + Do not download Nestahovat - + Normal Normální - + High Vysoká - + Maximum Maximální - + By shown file order Podle zobrazeného pořadí souborů - + Normal priority Normální priorita - + High priority Vysoká priorita - + Maximum priority Maximální priorita - + Priority by shown file order Priorita podle zobrazeného pořadí souborů + + TorrentCreatorController + + + Too many active tasks + Příliš mnoho aktivních úloh + + + + Torrent creation is still unfinished. + Vytváření torrentu stále nebylo dokončeno. + + + + Torrent creation failed. + Vytváření torrentu selhalo. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. - + Select file Vyber soubor - + Select folder Vyber adresář @@ -10205,58 +10796,10 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. Velikost části: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. Polia - + You can separate tracker tiers / groups with an empty line. Skupiny nebo třídy trackerů můžete oddělit prázdnou řádkou. - + Web seed URLs: URL odkazy pro webseed: - + Tracker URLs: URL trackeru: - + Comments: Komentáře: - + Source: Zdroj: - + Progress: Průběh: - + Create Torrent Vytvořit Torrent - - + + Torrent creation failed Vytvoření torentu selhalo - + Reason: Path to file/folder is not readable. Důvod: Cesta k adresáři/složce není čitelná. - + Select where to save the new torrent Vyberte adresář pro přidání do torrentu - + Torrent Files (*.torrent) Torrent soubory (*.torrent) - - Reason: %1 - Důvod: %1 - - - + Add torrent to transfer list failed. - + Přidání torrentu do seznamu přenosů selhalo. - + Reason: "%1" - + Důvod: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Důvod: Vytvořený torrent je špatný. Nebude přidán do seznamu stahování. + Přidání torrentu selhalo - + Torrent creator Vytvoření torrentu - + Torrent created: Torrent vytvořen: @@ -10396,32 +10930,32 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Selhalo načtení nastavení Sledovaných Adresářů. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Selhal rozbor nastavení Sledovaných Adresářů z %1. Chyba: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Selhal načtení nastavení Sledovaných Adresářů z %1. Chyba: "Neplatný formát dat." - + Couldn't store Watched Folders configuration to %1. Error: %2 Nebylo možné uložit nastavení Sledovaných Adresářů do %1. Chyba: %2 - + Watched folder Path cannot be empty. Cesta sledovaného adresáře nemůže být prázdná. - + Watched folder Path cannot be relative. Cesta sledovaného adresáře nemůže být relativní. @@ -10429,27 +10963,27 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Neplatná Magnet URI. URI: %1. Důvod: %2 - + Magnet file too big. File: %1 Magnet soubor je příliš velký. Soubor: %1 - + Failed to open magnet file: %1 Selhalo otevření magnet souboru: %1 - + Rejecting failed torrent file: %1 Zamítnutí torrent souboru, který selhal: %1 - + Watching folder: "%1" Sledovaný adresář: "%1" @@ -10457,14 +10991,12 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Selhalo přidělení paměti při čtení souboru. Soubor: "%1". Chyba: "%2" + Selhalo přidělení paměti při čtení souboru. Soubor: "%1". Chyba: "%2" - Invalid metadata - Neplatná metadata + Neplatná metadata @@ -10495,279 +11027,374 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. Použít jinou cestu pro uložení nedokončeného torrentu - + Category: Kategorie: - + + Torrent Share Limits + + + Torrent speed limits - Limity rychlosti torrentu + Limity rychlosti torrentu - + Download: Stahování: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Toto nepřekročí globální limity - + Upload: Odesílání: - Torrent share limits - Limity sdílení torrentu + Limity sdílení torrentu - Use global share limit - Používat globální limit sdílení + Používat globální limit sdílení - Set no share limit - Nastavit sdílení bez limitu + Nastavit sdílení bez limitu - Set share limit to - Nastavit limit sdílení na + Nastavit limit sdílení na - ratio - ratio + ratio - total minutes - minut celkem + minut celkem - inactive minutes - minut neaktivity + minut neaktivity - + Disable DHT for this torrent Zakázat DHT pro tento torrent - + Download in sequential order Stahovat postupně - + Disable PeX for this torrent Zakázat PeX pro tento torrent - + Download first and last pieces first Stáhnout nejdříve první a poslední část - + Disable LSD for this torrent Zakázat LSD pro tento torrent - + Currently used categories Právě používané kategorie - - + + Choose save path Vybrat cestu uložení - + Not applicable to private torrents Nelze použít u soukromých torrentů - No share limit method selected - Nevybrána žádná metoda omezování sdílení + Nevybrána žádná metoda omezování sdílení - Please select a limit method first - Nejdříve, prosím, vyberte způsob omezování sdílení + Nejdříve, prosím, vyberte způsob omezování sdílení - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Štítky torrentu + + + + + Default + Výchozí - - New Tag - Nový štítek + + + + Unlimited + Neomezeně - - Tag: - Štítek: + + + + Set to + Nastavit na - - Invalid tag name - Neplatný název štítku + + Seeding time: + Čas seedování: - - Tag name '%1' is invalid. - Název štítku '%1' je neplatný. + + + + + + + min + minutes + min - - Tag exists - Štítek existuje + + Inactive seeding time: + Čas neaktivního seedování: - - Tag name already exists. - Název štítku již existuje. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Chyba: '%1' není platný torrent soubor. + + Stop torrent + - - Priority must be an integer - Priorita musí být celé číslo + + Remove torrent + Odstranit torrent - - Priority is not valid - Priorita není platná + + Remove torrent and its content + - - Torrent's metadata has not yet downloaded - Metadata torrentu ještě nebyla stažena + + Enable super seeding for torrent + Zapnout super seeding pro torrent - + + Ratio: + Ratio: + + + + TorrentTagsDialog + + + Torrent Tags + Štítky torrentu + + + New Tag + Nový štítek + + + + Add tag + + + + + Tag: + Štítek: + + + + Invalid tag name + Neplatný název štítku + + + + Tag name '%1' is invalid. + Název štítku '%1' je neplatný. + + + + Tag exists + Štítek existuje + + + + Tag name already exists. + Název štítku již existuje. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Chyba: '%1' není platný torrent soubor. + + + + Priority must be an integer + Priorita musí být celé číslo + + + + Priority is not valid + Priorita není platná + + + + Torrent's metadata has not yet downloaded + Metadata torrentu ještě nebyla stažena + + + File IDs must be integers ID souboru musí být celá čísla - + File ID is not valid ID souboru není platné - - - - + + + + Torrent queueing must be enabled Řazení torrentů musí být zapnuto - - + + Save path cannot be empty Cesta pro uložení nesmí být prázdná - - + + Cannot create target directory Nelze vytvořit cílový adresář - - + + Category cannot be empty Kategorie nesmí být prázdná - + Unable to create category Nelze vytvořit kategorii - + Unable to edit category Nelze upravit kategorii - + Unable to export torrent file. Error: %1 Nebylo možné exportovat torrent soubor. Chyba: %1 - + Cannot make save path Nelze vytvořit cestu pro uložení - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid parametr 'sort' je neplatný - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" není platný index souboru. - + Index %1 is out of bounds. Index %1 je mimo rozmezí. - - + + Cannot write to directory Nelze zapisovat do adresáře - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI Nastavit cestu: přesunout "%1", z "%2" do "%3" - + Incorrect torrent name Nesprávný název torrentu - - + + Incorrect category name Nesprávný název kategorie @@ -10798,257 +11425,215 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TrackerListModel - - + Working - Funkční + Funkční - + Disabled - + Zakázáno - + Disabled for this torrent - Zakázáno pro tento torrent + Zakázáno pro tento torrent - + This torrent is private - Tento torrent je soukromý + Tento torrent je soukromý - + N/A - + není k dispozici - + Updating... - Aktualizuji... + Aktualizuji... - + Not working - Nefunkční + Nefunkční - + Tracker error - + Chyba trackeru - + Unreachable - + Nedosažitelné - + Not contacted yet - Dosud nekontaktován + Dosud nekontaktován - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Neplatný stav! + + + URL/Announce endpoint + Koncový bod URL/Announce + Tier + Tier + + Protocol - + Protokol - + Status - Stav + Stav - + Peers - Peery + Peery - + Seeds - + Zdroje - + Leeches - Leeches + Leeches - + Times Downloaded - Počet Stažení + Počet Stažení - + Message - Zpráva + Zpráva - Next announce - + Další oznámení - Min announce - + Min. oznámení - v%1 - + v%1 TrackerListWidget - Working - Funkční - - - Disabled - Vypnuto - - - Disabled for this torrent - Zakázáno pro tento torrent - - - + This torrent is private Tento torrent je soukromý - Updating... - Aktualizuji... - - - Not working - Nefunkční - - - Not contacted yet - Dosud nekontaktován - - - N/A - není k dispozici - - - + Tracker editing Upravit tracker - + Tracker URL: URL trackeru: - - + + Tracker editing failed Úprava trackeru selhala - + The tracker URL entered is invalid. Zadaná URL trackeru není platná. - + The tracker URL already exists. Tato URL trackeru již existuje. - + Edit tracker URL... Upravit URL trackeru - + Remove tracker Odstranit tracker - + Copy tracker URL Kopírovat URL trackeru - + Force reannounce to selected trackers Vynutit oznámení vybraným trackerům - + Force reannounce to all trackers Vynutit oznámení všem trackerům - Tier - Tier - - - URL - URL - - - Status - Stav - - - Seeds - Zdroje - - - Times Downloaded - Počet Stažení - - - + Resize columns Změnit rozměry sloupců - + Resize all non-hidden columns to the size of their contents Změnit rozměry viditelných sloupců podle velikosti jejich obsahu - Peers - Peery - - - + Add trackers... Přidat trackery... - Leeches - Leeches - - - Message - Zpráva - - - + Column visibility Zobrazení sloupců @@ -11066,37 +11651,37 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. Seznam trackerů pro přidání (jeden na řádek): - + µTorrent compatible list URL: Seznam URL kompatibilní s µTorrent: - + Download trackers list Stáhnout seznam trackerů - + Add Přidat - + Trackers list URL error Chyba URL seznamu trackerů - + The trackers list URL cannot be empty Seznam trackerů nemůže být prázdný - + Download trackers list error Chyba stažení seznamu trackerů - + Error occurred when downloading the trackers list. Reason: "%1" Chyba při stažení seznamu trackerů. Důvod: "%1" @@ -11104,87 +11689,70 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TrackersFilterWidget - All (0) - this is for the tracker filter - Vše (0) - - - Trackerless (0) - Bez trackeru (0) - - - Error (0) - Chyby (0) - - - Warning (0) - Varování (0) - - - Trackerless - Bez trackeru - - - Error (%1) - Chyby (%1) - - - + Warning (%1) Varování (%1) - + Trackerless (%1) Bez trackeru (%1) - + Tracker error (%1) - + Chyba trackeru (%1) - + Other error (%1) - + Jiná chyba (%1) - + Remove tracker - Odstranit tracker + Odstranit tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Obnovit torrenty + Obnovit torrenty - Pause torrents - Zastavit torrenty + Pozastavit torrenty - + Remove torrents Odstranit torrenty - + Removal confirmation - + Potvrzení odebrání - + Are you sure you want to remove tracker "%1" from all torrents? - + Jste si jisti, že chcete odebrat tracker "%1" ze všech torrentů? - + Don't ask me again. - + Znovu se neptejte. - + All (%1) this is for the tracker filter Vše (%1) @@ -11193,7 +11761,7 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TransferController - + 'mode': invalid argument 'režim': neplatný argument @@ -11286,9 +11854,8 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. Kontrola dat pro obnovení - Paused - Zastaveno + Pozastaveno @@ -11313,220 +11880,262 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. S chybou - + Name i.e: torrent name Název - + Size i.e: torrent size Velikost - + Progress % Done Průběh - Status Torrent status (e.g. downloading, seeding, paused) - Stav + Stav - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stav + + + Seeds i.e. full sources (often untranslated) Seedy - + Peers i.e. partial sources (often untranslated) Peery - + Down Speed i.e: Download speed Rychlost stahování - + Up Speed i.e: Upload speed Rychlost odesílání - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Odh. čas - + Category Kategorie - + Tags Štítky - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Přidáno - + Completed On Torrent was completed on 01/01/2010 08:00 Dokončeno - + Tracker Tracker - + Down Limit i.e: Download limit Limit stahování - + Up Limit i.e: Upload limit Limit odesílaní - + Downloaded Amount of data downloaded (e.g. in MB) Staženo - + Uploaded Amount of data uploaded (e.g. in MB) Odesláno - + Session Download Amount of data downloaded since program open (e.g. in MB) Staženo od spuštění - + Session Upload Amount of data uploaded since program open (e.g. in MB) Odesláno od spuštění - + Remaining Amount of data left to download (e.g. in MB) Zbývající - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktivní po dobu + + + + Yes + Ano + + + + No + Ne + + Time Active Time (duration) the torrent is active (not paused) - Aktivní po dobu + Aktivní po dobu - + Save Path Torrent save path Cesta uložení - + Incomplete Save Path Torrent incomplete save path Cesta uložení nekompletních - + Completed Amount of data completed (e.g. in MB) Dokončeno - + Ratio Limit Upload share ratio limit Omezení ratia - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Kompletní zdroj naposledy - + Last Activity Time passed since a chunk was downloaded/uploaded Poslední aktivita - + Total Size i.e. Size including unwanted data Celková velikost - + Availability The number of distributed copies of the torrent Dostupnost - + Info Hash v1 i.e: torrent info hash v1 Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Znovu oznámit za + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Není k dispozici - + %1 ago e.g.: 1h 20m ago před %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sdíleno %2) @@ -11535,334 +12144,358 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. TransferListWidget - + Column visibility Zobrazení sloupců - + Recheck confirmation Zkontrolovat potvrzení - + Are you sure you want to recheck the selected torrent(s)? Opravdu chcete znovu zkontrolovat označené torrenty? - + Rename Přejmenovat - + New name: Nový název: - + Choose save path Vybrat cestu uložení - Confirm pause - Potvrdit pozastavení + Potvrdit pozastavení - Would you like to pause all torrents? - Přejete si pozastavit všechny torrenty? + Přejete si pozastavit všechny torrenty? - Confirm resume - Potvrdit obnovení + Potvrdit obnovení - Would you like to resume all torrents? - Přejete si obnovit všechny torrenty? + Přejete si obnovit všechny torrenty? - + Unable to preview Nelze provést náhled souboru - + The selected torrent "%1" does not contain previewable files Vybraný torrent "%1" neobsahuje prohlédnutelné soubory - + Resize columns Změnit rozměry sloupců - + Resize all non-hidden columns to the size of their contents Změnit rozměry viditelných sloupců podle velikosti jejich obsahu - + Enable automatic torrent management Zapnout automatickou správu torrentů - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Jste si jistí že chcete zapnout Automatickou správu pro vybraný torrent(y)? Jejich data mohou být přemístěna. - Add Tags - Přidat Štítek + Přidat Štítek - + Choose folder to save exported .torrent files Vyberte složku pro uložení exportovaných .torrent souborů - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Export .torrent souboru selhal. Torrent: "%1". Cesta pro uložení: "%2". Důvod: "%3" - + A file with the same name already exists Soubor s tímto názvem již existuje - + Export .torrent file error Chyba exportu .torrent souboru - + Remove All Tags Odstranit všechny Štítky - + Remove all tags from selected torrents? Smazat všechny štítky z označených torrentů? - + Comma-separated tags: Čárkou oddelěné štítky: - + Invalid tag Neplatný štítek - + Tag name: '%1' is invalid Název štítku: '%1' je neplatný - &Resume Resume/start the torrent - &Obnovit + &Obnovit - &Pause Pause the torrent - &Pozastavit + &Pozastavit - Force Resu&me Force Resume/start the torrent - Vynutit obno&vení + Vynutit obno&vení - + Pre&view file... Náh&led souboru... - + Torrent &options... &Možnosti torrentu... - + Open destination &folder Otevřít cílovou &složku - + Move &up i.e. move up in the queue Přesunou &nahoru - + Move &down i.e. Move down in the queue Přesunout &dolů - + Move to &top i.e. Move to top of the queue Přesunout na &začátek - + Move to &bottom i.e. Move to bottom of the queue Přesunout na &konec - + Set loc&ation... Nastavit &umístění - + Force rec&heck Vynutit pře&kontrolování - + Force r&eannounce Vynutit &oznámení - + &Magnet link &Magnet odkaz - + Torrent &ID Torrent &ID - + + &Comment + &Komentář + + + &Name &Název - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Přejme&novat... - + Edit trac&kers... Upravit trac&kery... - + E&xport .torrent... E&xportovat .torrent... - + Categor&y Kategorie - + &New... New category... &Nový... - + &Reset Reset category &Reset - + Ta&gs Štítky - + &Add... Add / assign multiple tags... Přidat... - + &Remove All Remove all tags Odstranit vše - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Fronta - + &Copy &Kopírovat - + Exported torrent is not necessarily the same as the imported Exportovaný torrent nemusí být nezbytně stejný jako importovaný - + Download in sequential order Stahovat postupně - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Objevily se chyby při exportu .torrent souborů. Zkontrolujte Záznamy programu - Log pro podrobnosti. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Odebrat - + Download first and last pieces first Stáhnout nejprve první a poslední část - + Automatic Torrent Management Automatická správa torrentu - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatický mód znamená, že různé vlastnosti torrentu (např. cesta pro uložení) se budou řídit podle příslušné kategorie - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Není možné vynutit oznámení trackeru u torrentu, který je zastavený/ve frontě/chybný/kontrolovaný + Není možné vynutit oznámení trackeru u torrentu, který je pozastavený/ve frontě/chybný/kontrolovaný - + Super seeding mode Mód super sdílení @@ -11907,28 +12540,28 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. ID ikony - + UI Theme Configuration. Nastavení motivu UI. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Změny v motivu UI nemohly být plně použity. Podrobnosti můžete najít v Logu. - + Couldn't save UI Theme configuration. Reason: %1 Nebylo možné uložit nastavení motivu UI. Důvod: %1 - - + + Couldn't remove icon file. File: %1. Nebylo možné odebrat soubor ikony. Soubor: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Nebylo možné zkopírovat soubor ikony. Zdroj: %1. Cíl: %2. @@ -11936,7 +12569,12 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Selhalo načtení vzhledu UI ze souboru: "%1" @@ -11967,89 +12605,82 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Migrace předvoleb selhala: WebUI https, soubor: "%1", chyba: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrace předvoleb: WebUI https, data uložena do souboru: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". V konfiguračním souboru zaznamenána chybná hodnota, vrácena výchozí hodnota. Klíč: "%1". Chybná hodnota: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python nalezen, název knihovny: "%1", verze: %2 - - - Python not detected - Python nebyl nalezen - Found Python executable. Name: "%1". Version: "%2" - + Nalezen spustitelný Python. Název: "%1". Verze: "%2" Failed to find Python executable. Path: "%1". - + Selhal pokus o nalezení spustitelného Pythonu. Cesta: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Selhal pokus o nalezení spustitelného `python3` na cestě proměnné prostředí PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Selhal pokus o nalezení spustitelného `python` na cestě proměnné prostředí PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Selhal pokus o nalezení spustitelného `python` v registru Windows. Failed to find Python executable - + Selhal pokus o nalezení spustitelného Pythonu Utils::IO - + File open error. File: "%1". Error: "%2" Chyba otevření souboru. Soubor: "%1". Chyba: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Velikost souboru překračuje limit. Soubor: "%1". Velikost souboru: %2. Velikost limitu: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Velikost souboru překračuje limit velikosti dat. Soubor: "%1". Velikost souboru: %2. Limit sady: %3 - + File read error. File: "%1". Error: "%2" Chyba čtení souboru. Soubor: "%1". Chyba: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Nesoulad velikosti čtení. Soubor: "%1". Očekáváno: %2. Aktuální: %3 @@ -12113,72 +12744,72 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Byla specifikována nepřijatelná cookie relace: '%1'. Je použita výchozí. - + Unacceptable file type, only regular file is allowed. Nepřijatelný typ souboru, pouze správné soubory jsou povoleny. - + Symlinks inside alternative UI folder are forbidden. Symbolické linky jsou v alternativním UI zakázány. - - Using built-in Web UI. - Používá se vestavěné webové rozhraní. + + Using built-in WebUI. + Použití vestavěného WebUI. - - Using custom Web UI. Location: "%1". - Používá se vlastní webové rozhraní. Umístění: "%1". + + Using custom WebUI. Location: "%1". + Použití vlastního WebUI. Umístění: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Překlad vybraného jazyka (%1) pro webové rozhraní byl úspěšně načten. + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI překlad vybraného prostředí locale (%1) byl úspěšně načten. - - Couldn't load Web UI translation for selected locale (%1). - Nelze načíst překlad webového rozhraní ve vybraném jazyce (%1). + + Couldn't load WebUI translation for selected locale (%1). + Nepodařilo se načíst překlad vybraného prostředí locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Chybějící ':' oddělovač ve vlastní HTTP hlavičce WebUI: "%1" - + Web server error. %1 Chyba webového serveru. %1 - + Web server error. Unknown error. Chyba webového serveru. Neznámá chyba. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Zdrojové záhlaví a cílový původ nesouhlasí! Zdrojová IP: '%1'. Původní záhlaví: '%2'. Cílový zdroj: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Záhlaví refereru a cílový původ nesouhlasí! Zdrojová IP: '%1'. Původní záhlaví: '%2'. Cílový zdroj: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Neplatné záhlaví hostitele, nesoulad portů. Požadavek zdroje IP: '%1'. Serverový port: '%2'. Obdrženo záhlaví hostitele: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Neplatné záhlaví hostitele. Požadavek zdroje IP: '%1'. Obdrženo záhlaví hostitele: '%2' @@ -12186,143 +12817,136 @@ Prosím zvolte jiný název kategorie a zkuste to znovu. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS nastaveno úspěšně + + Credentials are not set + Přihlašovací údaje nejsou nastaveny + + + + WebUI: HTTPS setup successful + WebUI: HTTPS nastavení bylo úspěšné + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS nastavení selhalo, přechod na HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: Nastavení HTTPS selhalo, přecházím zpět na HTTP + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Nyní naslouchá na IP: %1, port: %2 - - Web UI: Now listening on IP: %1, port: %2 - Webové rozhraní naslouchá na IP: %1, portu: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Nepodařilo se přidružit k IP: %1, portu: %2. Důvod: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Webové rozhraní: Nelze vázat na IP: % 1, port: % 2. Důvod: % 3 + + Unknown error + Neznámá chyba misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1 s. - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Neznámá - + qBittorrent will shutdown the computer now because all downloads are complete. Jsou staženy všechny torrenty, qBittorrent nyní vypne počítač. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_da.ts b/src/lang/qbittorrent_da.ts index 3c43d5c7ae25..ea08630cc63c 100644 --- a/src/lang/qbittorrent_da.ts +++ b/src/lang/qbittorrent_da.ts @@ -14,75 +14,75 @@ Om - + Authors Forfattere - + Current maintainer Nuværende vedligeholder - + Greece Grækenland - - + + Nationality: Nationalitet: - - + + E-mail: E-mail: - - + + Name: Navn: - + Original author Oprindelig forfatter - + France Frankrig - + Special Thanks Særlig tak til - + Translators Oversættere - + License Licens - + Software Used Anvendt software - + qBittorrent was built with the following libraries: qBittorrent blev bygget med følgende biblioteker: - + Copy to clipboard @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Ophavsret %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Ophavsret %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Gem i - + Never show again Vis aldrig igen - Torrent settings - Torrent-indstillinger + Torrent-indstillinger @@ -191,12 +190,12 @@ Start torrent - + Torrent information Torrent-information - + Skip hash check Spring hashtjek over @@ -205,6 +204,11 @@ Use another path for incomplete torrent Brug anden sti til ukomplet torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Når valgt, vil .torrent-filen ikke blive slettet, uanset indstillingerne i "Overførsel"-sidens valgmuligheders dialogboks - + Content layout: Indholdsopsætning: - + Original Original - + Create subfolder Opret undermappe - + Don't create subfolder Opret ikke undermappe - + Info hash v1: Info-hash v1: - + Size: Størrelse: - + Comment: Kommentar: - + Date: Dato: @@ -324,213 +333,150 @@ Husk sidste anvendte gemmesti - + Do not delete .torrent file Slet ikke .torrent-filen - + Download in sequential order Download i fortløbende rækkefølge - + Download first and last pieces first Download første og sidste stykker først - + Info hash v2: Info-hash v2: - + Select All Vælg Alt - + Select None Vælg Intet - + Save as .torrent file... Gem som .torrent-fil... - + I/O Error I/O-fejl - Invalid torrent - Ugyldig torrent - - - + Not Available This comment is unavailable Ikke tilgængelig - + Not Available This date is unavailable Ikke tilgængelig - + Not available Ikke tilgængelig - Invalid magnet link - Ugyldigt magnet-link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Kunne ikke indlæse torrenten: %1. -Fejl: %2 - - - This magnet link was not recognized - Dette magnet-link blev ikke genkendt - - - + Magnet link Magnet-link - + Retrieving metadata... Modtager metadata... - - + + Choose save path Vælg gemmesti - Torrent is already present - Torrent findes allerede - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrenten '%1' er allerede i overførselslisten. Trackere blev ikke lagt sammen da det er en privat torrent. - - - Torrent is already queued for processing. - Torrenten er allerede sat i kø til behandling. - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A Ugyldig - Magnet link is already queued for processing. - Magnet-linket er allerede sat i kø til behandling. - - - + %1 (Free space on disk: %2) %1 (ledig plads på disk: %2) - + Not available This size is unavailable. Ikke tilgængelig - + Torrent file (*%1) Torrent-fil (*%1) - + Save as torrent file Gem som torrentfil - + Couldn't export torrent metadata file '%1'. Reason: %2. Kunne ikke eksportere torrent-metadata-fil '%1'. Begrundelse: %2. - + Cannot create v2 torrent until its data is fully downloaded. Kan ikke oprette v2-torrent, før dens er fuldt ud hentet. - Cannot download '%1': %2 - Kan ikke downloade '%1': %2 - - - + Filter files... Filtrere filer... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrenten '%1' er allerede i overførselslisten. Trackere blev ikke lagt sammen da det er en privat torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrenten '%1' er allerede i overførselslisten. Vil du lægge trackere sammen fra den nye kilde? - - - + Parsing metadata... Fortolker metadata... - + Metadata retrieval complete Modtagelse af metadata er færdig - - Failed to load from URL: %1. -Error: %2 - Kunne ikke indlæse fra URL: %1. -Fejl: %2 - - - Download Error - Fejl ved download - AddTorrentManager @@ -545,22 +491,22 @@ Fejl: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -648,72 +594,77 @@ Fejl: %2 Spring hashtjek over - - - Choose save path - Vælg gemmesti + + Torrent share limits + - - - - - - - Default - Standard + + + Choose save path + Vælg gemmesti + + + - Yes - Ja + Default + Standard + Yes + Ja + + + + + No Nej - + Manual Manuelt - + Automatic Automatisk - + Original Original - + Create subfolder Opret undermappe - + Don't create subfolder Opret ikke undermappe - + None - + Metadata received - + Files checked @@ -721,734 +672,852 @@ Fejl: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Gentjek torrents når de er færdige - - + + ms milliseconds ms - + Setting Indstilling - + Value Value set for this setting Værdi - + (disabled) (deaktiveret) - + (auto) (automatisk) - + + min minutes min - + All addresses Alle adresser - + qBittorrent Section qBittorrent-sektion - - + + Open documentation Åbn dokumentation - + All IPv4 addresses Alle IPv4-adresser - + All IPv6 addresses Alle IPv6-adresser - + libtorrent Section libtorrent-sektion - + Fastresume files - + SQLite database (experimental) SQLite database (eksperimental) - + Resume data storage type (requires restart) - + Normal Normal - + Below normal Under normal - + Medium Medium - + Low Lav - + Very low Meget lav - - Process memory priority (Windows >= 8 only) - Prioritet for proceshukommelse (kun Windows >= 8) - - - + Physical memory (RAM) usage limit Fysisk hukommelse (RAM) begrænsning - + Asynchronous I/O threads Asynkrone I/O-tråde - + Hashing threads Hashing tråde - + File pool size Filsamlingsstørrelse - + Outstanding memory when checking torrents Udestående hukommelse ved tjek af torrents - + Disk cache Diskmellemlager - - - - + + + + s seconds s - + Disk cache expiry interval Udløbsinterval for diskmellemlager - + Disk queue size Disk kø størrelse - - + + Enable OS cache Aktivér OS-mellemlager - + Coalesce reads & writes Coalesce-læsninger og -skrivninger - + Use piece extent affinity Brug piece extent affinity - + Send upload piece suggestions Send forslag for upload-styk - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Denne funktion er mindre effektiv på Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default Standard - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk IO type (kræver genstart) - - + + Disable OS cache Deaktivere OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark Send vandmærke for buffer - + Send buffer low watermark Send vandmærke for lav buffer - + Send buffer watermark factor Send vandmærkefaktor for buffer - + Outgoing connections per second Udgående forbindelser per sekund - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Størrelse for sokkel baglog - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP Foretræk TCP - + Peer proportional (throttles TCP) Modpartsproportionel (drosler TCP) - + Support internationalized domain name (IDN) Supporter internationaliseret domæne navn (IDN) - + Allow multiple connections from the same IP address Tillad flere forbindelser fra den samme IP-adresse - + Validate HTTPS tracker certificates Valider HTTPS tracker certifikater - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names Oversæt modparters værtsnavne - + IP address reported to trackers (requires restart) IP-adresse der reporteres til tracker (kræver genstart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus Aktiver ikoner i menuerne - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + sek. + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Vis underretninger - + Display notifications for added torrents Vis underretninger for tilføjede torrents - + Download tracker's favicon Download trackerens favicon - + Save path history length Historiklængde for gemmesti - + Enable speed graphs Aktivér hastighedsgrafer - + Fixed slots Fastgjorte pladser - + Upload rate based Baseret på uploadhastighed - + Upload slots behavior Opførsel for uploadpladser - + Round-robin Round-robin - + Fastest upload Hurtigste upload - + Anti-leech Anti-leech - + Upload choking algorithm Upload choking-algoritme - + Confirm torrent recheck Bekræft gentjek af torrent - + Confirm removal of all tags Bekræft fjernelse af alle mærkater - + Always announce to all trackers in a tier Annoncér altid til alle trackere i en tier - + Always announce to all tiers Annoncér altid til alle tiers - + Any interface i.e. Any network interface Vilkårlig grænseflade - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP blandet-tilstand-algoritme - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker Aktivér indlejret tracker - + Embedded tracker port Indlejret tracker-port - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 startet + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Kører i transportabel tilstand. Automatisk registrering af profilmappe: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Overflødigt kommandolinjeflag registreret: "%1". Transportabel tilstand indebærer relativ hurtig genoptagelse. - + Using config directory: %1 Bruger konfigurationsmappe: %1 - + Torrent name: %1 Torrentnavn: %1 - + Torrent size: %1 Torrentstørrelse: %1 - + Save path: %1 Gemmesti: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrenten blev downloadet på %1. - + + Thank you for using qBittorrent. Tak fordi du bruger qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, sender underretning via e-mail - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit A&fslut - + I/O Error i.e: Input/Output Error I/O-fejl - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,133 +1526,110 @@ Fejl: %2 Årsag: %2 - Error - Fejl - - - Failed to add torrent: %1 - Kunne ikke tilføje torrent: %1 - - - + Torrent added Torrent tilføjet - + '%1' was added. e.g: xxx.avi was added. '%1' blev tilføjet. - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' er færdig med at downloade. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - Fejl ved URL-download + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Kunne ikke downloade filen fra URL'en '%1', årsag: %2. + + Test email + - Torrent file association - Filtilknytning for torrent + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' er færdig med at downloade. - + Information Information - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - Webgrænsefladens administratorbrugernavn er: %1 + + Exit + Afslut - - The Web UI administrator password has not been changed from the default: %1 - + + Recursive download confirmation + Bekræftelse for rekursiv download - - This is a security risk, please change your password in program preferences. - - - - Application failed to start. - Programmet kunne ikke starte. - - - - Exit - Afslut - - - - Recursive download confirmation - Bekræftelse for rekursiv download - - - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - Aldrig + Aldrig - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Gemmer torrentforløb... - + qBittorrent is now ready to exit @@ -1591,7 +1637,7 @@ Fejl: %2 AsyncFileStorage - + Could not create directory '%1'. Kunne ikke oprette mappen '%1'. @@ -1599,22 +1645,22 @@ Fejl: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI-login mislykkedes. Årsag: IP er blevet udelukket, IP: %1, brugernavn: %2 - + Your IP address has been banned after too many failed authentication attempts. Din IP-adresse er blevet udelukket efter for mange mislykkede godkendelsesforsøg. - + WebAPI login success. IP: %1 WebAPI-login lykkedes. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI-login mislykkedes. Årsag: ugyldige loginoplysninger, antal forsøg: %1, IP: %2, brugernavn: %3 @@ -1662,12 +1708,12 @@ Fejl: %2 - + Must Not Contain: Skal ikke indeholde: - + Episode Filter: Episodefilter: @@ -1719,263 +1765,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Eksportér... - + Matches articles based on episode filter. Matcher artikler baseret på episodefilter. - + Example: Eksempel: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match matcher episode 2, 5, 8 op til 15, 30 og videre for sæson 1 - + Episode filter rules: Regler for episodefilter: - + Season number is a mandatory non-zero value Sæsonnummer er en obligatorisk ikke-nul-værdi - + Filter must end with semicolon Filter skal slutte med semikolon - + Three range types for episodes are supported: Der understøttes tre områdetyper for episoder: - + Single number: <b>1x25;</b> matches episode 25 of season one Ét nummer: <b>1x25;</b> matcher episode 25 for sæson 1 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normalt område: <b>1x25-40;</b> matcher episode 25 til 40 for sæson 1 - + Episode number is a mandatory positive value Episodenummer er en obligatorisk positiv værdi - + Rules Regler - + Rules (legacy) Regler (udgået) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Uendeligt område: <b>1x25-;</b> matcher episode 25 og op for sæson 1 og alle episoder for senere sæsoner - + Last Match: %1 days ago Sidste match: %1 dage siden - + Last Match: Unknown Sidste match: Ukendt - + New rule name Nyt regelnavn - + Please type the name of the new download rule. Skriv venligst navnet på den nye downloadregel. - - + + Rule name conflict Konflikt for regelnavn - - + + A rule with this name already exists, please choose another name. Der findes allerede en regel med dette navn, vælg venligst et andet navn. - + Are you sure you want to remove the download rule named '%1'? Er du sikker på, at du vil fjerne downloadreglen med navnet '%1'? - + Are you sure you want to remove the selected download rules? Er du sikker på, at du vil fjerne de valgte downloadregler? - + Rule deletion confirmation Bekræftelse for sletning af regel - + Invalid action Ugyldig handling - + The list is empty, there is nothing to export. Listen er tom. Der er intet at eksportere. - + Export RSS rules Eksportér RSS-regler - + I/O Error I/O-fejl - + Failed to create the destination file. Reason: %1 Kunne ikke oprette destinationsfilen. Årsag: %1 - + Import RSS rules Importér RSS-regler - + Failed to import the selected rules file. Reason: %1 Kunne ikke importere den valgte regelfil. Årsag: %1 - + Add new rule... Tilføj ny regel... - + Delete rule Slet regel - + Rename rule... Omdøb regel... - + Delete selected rules Slet valgte regler - + Clear downloaded episodes... Ryd downloadede episoder... - + Rule renaming Omdøbning af regel - + Please type the new rule name Skriv venligst det nye regelnavn - + Clear downloaded episodes Ryd downloadede episoder - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Er du sikker på, at du vil rydde listen over downloadede episoder for den valgte regel? - + Regex mode: use Perl-compatible regular expressions Regulært udtryk-tilstand: brug Perl-kompatible regulære udtryk - - + + Position %1: %2 Placering %1: %2 - + Wildcard mode: you can use Jokertegnstilstand: du kan bruge - - + + Import error - + Failed to read the file. %1 - + ? to match any single character ? for at matche ét tegn - + * to match zero or more of any characters * for at matche nul eller flere tegn - + Whitespaces count as AND operators (all words, any order) Blanktegn tæller som OG-operatører (alle ord, vilkårlig rækkefølge) - + | is used as OR operator | bruges som en ELLER-operatør - + If word order is important use * instead of whitespace. Hvis rækkefølgen på ord er vigtig, så brug * i stedet for blanktegn. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Et udtryk med et tomt %1-klausul (f.eks. %2) - + will match all articles. vil matche alle artikler. - + will exclude all articles. vil ekskludere alle artikler. @@ -2017,53 +2063,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2071,38 +2122,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2110,22 +2161,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2133,484 +2184,520 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON TIL - - - - - - - - - + + + + + + + + + OFF FRA - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED TVUNGET - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. - - UPnP/NAT-PMP support: OFF + + Removing torrent. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Removing torrent and deleting its content. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent stopped. - System network status changed to %1 - e.g: System network status changed to ONLINE - Systemets netværksstatus ændret til %1 + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Netværkskonfiguration af %1 er blevet ændret, genopfrisker sessionsbinding + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2618,62 +2705,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Kunne ikke tilføje modparten "%1" til torrenten "%2". Årsag: %3 - + Peer "%1" is added to torrent "%2" Modparten "%1" blev tilføjet til torrenten "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' Download første og sidste stykker først: %1, torrent: '%2' - + On Tændt - + Off Slukket - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Filomdøbning mislykkedes. Torrent: "%1", fil: "%2", årsag: "%3" - + Performance alert: %1. More info: %2 @@ -2694,184 +2786,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameteren '%1' skal følge syntaksen '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameteren '%1' skal følge syntaksen '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Ventede heltalsnummer i miljøvariablen '%1', men fik '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameteren '%1' skal følge syntaksen '%1=%2' + Parameteren '%1' skal følge syntaksen '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Ventede %1 i miljøvariablen '%2', men fik '%3' - - + + %1 must specify a valid port (1 to 65535). %1 skal angive en gyldig port (1 til 65535). - + Usage: Anvendelse: - + [options] [(<filename> | <url>)...] - + Options: Tilvalg: - + Display program version and exit Vis programversion og afslut - + Display this help message and exit Vis denne hjælpemeddelelse og afslut - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameteren '%1' skal følge syntaksen '%1=%2' + + + + Confirm the legal notice + + + + + port port - - Change the Web UI port - Skift webgrænsefladeporten + + Change the WebUI port + - + Change the torrenting port - + Disable splash screen Deaktivér splash-skærm - + Run in daemon-mode (background) Kør i dæmon-tilstand (i baggrunden) - + dir Use appropriate short form or abbreviation of "directory" mappe - + Store configuration files in <dir> Opbevar konfigurationsfiler i <dir> - - + + name navn - + Store configuration files in directories qBittorrent_<name> Opbevar konfigurationsfiler i mapper ved navn qBittorrent_<navn> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hack ind i libtorrent fastresume-filer og gør filstierne relative til profilmappen - + files or URLs filer eller URL'er - + Download the torrents passed by the user Download torrents som brugeren har givet - + Options when adding new torrents: Tilvalg når der tilføjes nye torrents: - + path sti - + Torrent save path Gemmesti til torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Tilføj torrents som startet eller sat på pause + Tilføj torrents som startet eller sat på pause - + Skip hash check Spring hashtjek over - + Assign torrents to category. If the category doesn't exist, it will be created. Tildel torrents til kategori. Hvis kategorien ikke findes, så oprettes den. - + Download files in sequential order Download filer i fortløbende rækkefølge - + Download first and last pieces first Download første og sidste stykker først - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Angiv om "Tilføj ny torrent"-dialogen åbnes når der tilføjes en torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Tilvalgsværdier kan gives via miljøvariabler. For tilvalg ved navn 'parameterens-navn', er miljøvariablens navn 'QBT_PARAMETERENS_NAVN' (med store bogstaver, '-' erstattes med '_'). Sæt variablen til '1' eller 'TRUE', for at videregive flag-værdier. F.eks. for at deaktivere splash-skærmen: - + Command line parameters take precedence over environment variables Kommandolinjeparametre har forrang over miljøvariabler - + Help Hjælp @@ -2879,17 +2985,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Kategorier - + All Alle - + Uncategorized Ukategoriseret @@ -2923,13 +3029,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Genoptag torrents + Start torrents + + Stop torrents + + + + Resume torrents + Genoptag torrents + + Pause torrents - Sæt torrents på pause + Sæt torrents på pause @@ -2940,15 +3054,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset Nulstil + + + System + + CookiesDialog @@ -2989,12 +3108,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3002,7 +3121,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3021,23 +3140,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove Fjern @@ -3050,12 +3169,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Download fra URL'er - + Add torrent links Tilføj torrent-links - + One link per line (HTTP links, Magnet links and info-hashes are supported) Ét link pr. linje (understøtter HTTP-links, magnet-links og info-hashes) @@ -3065,12 +3184,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Download - + No URL entered Der er ikke indtastet nogen URL - + Please type at least one URL. Skriv venligst mindst én URL. @@ -3230,63 +3349,86 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - Torrent findes allerede + Torrent findes allerede + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrenten '%1' er allerede i overførselslisten. Vil du lægge trackere sammen fra den nye kilde? + Torrenten '%1' er allerede i overførselslisten. Vil du lægge trackere sammen fra den nye kilde? GeoIPDatabase - - + + Unsupported database file size. Databasens filstørrelse understøttes ikke. - + Metadata error: '%1' entry not found. Fejl ved metadata: '%1'-elementet blev ikke fundet. - + Metadata error: '%1' entry has invalid type. Fejl ved metadata: '%1'-elementet har ugyldig type. - + Unsupported database version: %1.%2 Databaseversionen understøttes ikke: %1.%2 - + Unsupported IP version: %1 IP-version understøttes ikke: %1 - + Unsupported record size: %1 Record-størrelse understøttes ikke: %1 - + Database corrupted: no data section found. Databasen er ødelagt: intet dataafsnit blev fundet. @@ -3294,17 +3436,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Dårlig Http-anmodning, lukker sokkel. IP: %1 @@ -3345,36 +3487,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Gennemse... - + Reset Nulstil - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + Juridisk Meddelelse + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent er et fildelingsprogram. Når du kører en torrent, vil dens data blive gjort tilgængelig til andre via upload. Du har alene ansvaret for det indhold du deler. + + + + No further notices will be issued. + Der udstedes ingen yderligere notitser. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned %1 blev udelukket @@ -3383,91 +3553,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 er en ukendt kommandolinjeparameter. - - + + %1 must be the single command line parameter. %1 skal være en enkelt kommandolinjeparameter. - - You cannot use %1: qBittorrent is already running for this user. - Du kan ikke bruge %1: qBittorrent kører allerede for denne bruger. - - - + Run application with -h option to read about command line parameters. Kør programmet med tilvalget -h for at læse om kommandolinjeparametre. - + Bad command line Ugyldig kommandolinje - + Bad command line: Ugyldig kommandolinje: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Juridisk notits - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent er et fildelingsprogram. Når du kører en torrent, vil dens data blive gjort tilgængelig til andre via upload. Du har alene ansvaret for det indhold du deler. - - - - No further notices will be issued. - Der udstedes ingen yderligere notitser. - - - - Press %1 key to accept and continue... - Tryk på %1 for at acceptere og forsætte... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent er et fildelingsprogram. Når du kører en torrent, vil dens data blive gjort tilgængelig til andre via upload. Du har alene ansvaret for det indhold du deler. - -Der udstedes ingen yderlige notitser. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Juridisk notits + + Another qBittorrent instance is already running. + - - Cancel - Annuller + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Jeg accepterer + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3478,615 +3619,704 @@ Der udstedes ingen yderlige notitser. &Rediger - + &Tools &Værktøjer - + &File &Filer - + &Help &Hjælp - + On Downloads &Done Når downloads er &færdige - + &View &Vis - + &Options... &Indstillinger... - &Resume - &Genoptag + &Genoptag - + &Remove - + Torrent &Creator Torrent&opretter - - + + Alternative Speed Limits Alternative grænser for hastighed - + &Top Toolbar &Øverste værktøjslinje - + Display Top Toolbar Vis øverste værktøjslinje - + Status &Bar Status&linje - + Filters Sidebar - + S&peed in Title Bar &Hastighed i titellinjen - + Show Transfer Speed in Title Bar Vis overførselshastighed i titellinjen - + &RSS Reader &RSS-læser - + Search &Engine Søge&motor - + L&ock qBittorrent L&ås qBittorrent - + Do&nate! Do&nér! - + + Sh&utdown System + + + + &Do nothing - + Close Window Luk vindue - R&esume All - G&enoptag alle + G&enoptag alle - + Manage Cookies... Håndter cookies... - + Manage stored network cookies Håndter opbevarede netværkscookies - + Normal Messages Normale meddelelser - + Information Messages Informationsmeddelelser - + Warning Messages Advarselsmeddelelser - + Critical Messages Kritiske meddelelser - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue Nederst i køen - + Move to the bottom of the queue Flyt nederst i køen - + Top of Queue Øverst i køen - + Move to the top of the queue Flyt øverst i køen - + Move Down Queue Flyt ned i køen - + Move down in the queue Flyt ned i køen - + Move Up Queue Flyt op i køen - + Move up in the queue Flyt op i køen - + &Exit qBittorrent &Afslut qBittorrent - + &Suspend System &Suspendér systemet - + &Hibernate System &Dvaletilstand - S&hutdown System - &Luk ned + &Luk ned - + &Statistics &Statistik - + Check for Updates Søg efter opdateringer - + Check for Program Updates Søg efter programopdateringer - + &About &Om - &Pause - Sæt på &pause + Sæt på &pause - P&ause All - Sæt alle på p&ause + Sæt alle på p&ause - + &Add Torrent File... &Tilføj torrent-fil... - + Open Åbn - + E&xit &Afslut - + Open URL Åbn URL - + &Documentation &Dokumentation - + Lock Lås - - - + + + Show Vis - + Check for program updates Søg efter programopdateringer - + Add Torrent &Link... Tilføj torrent-&link... - + If you like qBittorrent, please donate! Hvis du kan lide qBittorrent, så donér venligst! - - + + Execution Log Eksekveringslog - + Clear the password Ryd adgangskoden - + &Set Password &Sæt adgangskode - + Preferences Præferencer - + &Clear Password &Ryd adgangskode - + Transfers Overførsler - - + + qBittorrent is minimized to tray qBittorrent er minimeret til bakke - - - + + + This behavior can be changed in the settings. You won't be reminded again. Opførslen kan ændres i indstillingerne. Du bliver ikke mindet om det igen. - + Icons Only Kun ikoner - + Text Only Kun tekst - + Text Alongside Icons Tekst ved siden af ikoner - + Text Under Icons Tekst under ikoner - + Follow System Style Følg systemets stil - - + + UI lock password Adgangskode til at låse brugerfladen - - + + Please type the UI lock password: Skriv venligst adgangskoden til at låse brugerfladen: - + Are you sure you want to clear the password? Er du sikker på, at du vil rydde adgangskoden? - + Use regular expressions Brug regulære udtryk - - Search - Søg + + + Search Engine + Søgemotor - - Transfers (%1) - Overførsler (%1) + + Search has failed + Søgningen mislykkedes - Recursive download confirmation - Bekræftelse for rekursiv download + + Search has finished + Søgningen er færdig - Never - Aldrig + + Search + Søg + + + + Transfers (%1) + Overførsler (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent er lige blevet opdateret og skal genstartes før ændringerne træder i kraft. - + qBittorrent is closed to tray qBittorrent er lukket til bakke - + Some files are currently transferring. Nogle filer er ved at blive overført. - + Are you sure you want to quit qBittorrent? Er du sikker på, at du vil afslutte qBittorrent? - + &No &Nej - + &Yes &Ja - + &Always Yes &Altid ja - + Options saved. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Manglende Python-runtime - + qBittorrent Update Available Der findes en opdatering til qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python kræves for at bruge søgemotoren, men lader ikke til at være installeret. Vil du installere den nu? - + Python is required to use the search engine but it does not seem to be installed. Python kræves for at bruge søgemotoren, men lader ikke til at være installeret. - - + + Old Python Runtime Gammel Python-runtime - + A new version is available. Der findes en ny version. - + Do you want to download %1? Vil du downloade %1? - + Open changelog... Åbn ændringslog... - + No updates available. You are already using the latest version. Der findes ingen opdateringer. Du bruger allerede den seneste version. - + &Check for Updates &Søg efter opdateringer - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Sat på pause + + + Checking for Updates... Søger efter opdateringer... - + Already checking for program updates in the background Søger allerede efter programopdateringer i baggrunden - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Fejl ved download - Python setup could not be downloaded, reason: %1. Please install it manually. - Python-opsætning kunne ikke downloades, årsag: %1. + Python-opsætning kunne ikke downloades, årsag: %1. Installer den venligst manuelt. - - + + Invalid password Ugyldig adgangskode - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid Adgangskoden er ugyldig - + DL speed: %1 e.g: Download speed: 10 KiB/s Downloadhastighed: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Uploadhastighed: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1/s, U: %2/s] qBittorrent %3 - - - + Hide Skjul - + Exiting qBittorrent Afslutter qBittorrent - + Open Torrent Files Åbn torrent-filer - + Torrent Files Torrent-filer @@ -4147,133 +4377,133 @@ Installer den venligst manuelt. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) Fjernværtsnavnet blev ikke fundet (ugyldigt værtsnavn) - + The operation was canceled Handlingen blev annulleret - + The remote server closed the connection prematurely, before the entire reply was received and processed Fjernserveren lukkede forbindelsen for tidligt, før hele svaret blev modtaget og behandlet - + The connection to the remote server timed out Forbindelsen til fjernserveren fik timeout - + SSL/TLS handshake failed SSL/TLS-håndtryk mislykkedes - + The remote server refused the connection Fjernserveren nægtede forbindelsen - + The connection to the proxy server was refused Forbindelsen til proxyen blev nægtet - + The proxy server closed the connection prematurely Proxyserveren lukkede forbindelsen for tidligt - + The proxy host name was not found Proxyværtsnavnet blev ikke fundet - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Forbindelsen til proxyen fik timeout eller proxyen svarede ikke på den sendte anmodning i tide - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxyen kræver godkendelse for at kunne efterleve anmodningen men accepterede ikke loginoplysninger - + The access to the remote content was denied (401) Adgangen til fjernindholdet blev nægtet (401) - + The operation requested on the remote content is not permitted Den anmodede handling er ikke tilladt på fjernindholdet - + The remote content was not found at the server (404) Fjernindholdet blev ikke fundet på serveren (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Fjernserveren kræve godkendelse for at kunne vise indholdet, men loginoplysningerne blev ikke accepteret - + The Network Access API cannot honor the request because the protocol is not known Netværksadgangs-API'et kan ikke efterleve anmodningen fordi protokollen ikke kendes - + The requested operation is invalid for this protocol Den anmodet handling er ugyldig til protokollen - + An unknown network-related error was detected Der blev registreret en ukendt netværksrelateret fejl - + An unknown proxy-related error was detected Der blev registreret en ukendt proxyrelateret fejl - + An unknown error related to the remote content was detected Der blev registreret en ukendt fejl med relation til fjernindholdet - + A breakdown in protocol was detected Der blev registreret et nedbrud i protokollen - + Unknown error Ukendt fejl @@ -4281,7 +4511,12 @@ Installer den venligst manuelt. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorerer SSL-fejl, URL: "%1", fejl: "%2" @@ -5653,434 +5888,483 @@ Installer den venligst manuelt. BitTorrent - + RSS RSS - Web UI - Webgrænseflade + Webgrænseflade - + Advanced Avanceret - + Customize UI Theme... - + Transfer List Overførselsliste - + Confirm when deleting torrents Bekræft ved sletning af torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Brug alternative farver for rækker - + Hide zero and infinity values Skjul nul og uendelige værdier - + Always Altid - Paused torrents only - Kun torrents som er sat på pause + Kun torrents som er sat på pause - + Action on double-click Handling ved dobbeltklik - + Downloading torrents: Downloader torrents: - - Start / Stop Torrent - Start/stop torrent + Start/stop torrent - - + + Open destination folder Åbn destinationsmappe - - + + No action Ingen handling - + Completed torrents: Færdige torrents: - + Auto hide zero status filters - + Desktop Skrivebord - + Start qBittorrent on Windows start up Start qBittorrent når Windows starter - + Show splash screen on start up Vis splash-skærm ved opstart - + Confirmation on exit when torrents are active Bekræftelse ved afslutning når der er aktive torrents - + Confirmation on auto-exit when downloads finish Bekræftelse ved automatisk afslutning når downloads er færdige - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: - + Original Original - + Create subfolder Opret undermappe - + Don't create subfolder Opret ikke undermappe - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Tilføj... - + Options.. - + Remove Fjern - + Email notification &upon download completion &Underretning via e-mail når download er færdig - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: + + + + + Any - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering IP-fi&ltrering - + Schedule &the use of alternative rate limits Planlæg brugen af &alternative grænser for hastighed - + From: From start time Fra: - + To: To end time Til: - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption Tillad kryptering - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mere information</a>) - + Maximum active checking torrents: - + &Torrent Queueing &Torrent sat i kø - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - Tilføj &automatisk disse trackere til nye downloads: + Tilføj &automatisk disse trackere til nye downloads: - + RSS Reader RSS-læser - + Enable fetching RSS feeds Aktivér hentning af RSS-feeds - + Feeds refresh interval: Interval for genopfriskning af feeds: - + + Same host request delay: + + + + Maximum number of articles per feed: Maksimum antal artikler pr. feed: - - - + + + min minutes min - + Seeding Limits Grænser for seeding - Pause torrent - Sæt torrent på pause + Sæt torrent på pause - + Remove torrent Fjern torrent - + Remove torrent and its files Fjern torrenten og dens filer - + Enable super seeding for torrent Aktivér superseeding for torrent - + When ratio reaches Når deleforhold når - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Automatisk download af RSS-torrent - + Enable auto downloading of RSS torrents Aktivér automatisk download af RSS-torrents - + Edit auto downloading rules... Rediger regler for automatisk download... - + RSS Smart Episode Filter RSS smart episodefilter - + Download REPACK/PROPER episodes Download REPACK/PROPER episoder - + Filters: Filtre: - + Web User Interface (Remote control) Webgrænseflade (fjernstyring) - + IP address: IP-adresse: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6089,42 +6373,37 @@ Angiv en IPv4- eller IPv6-adresse. Du kan angive "0.0.0.0" til enhver "::" til enhver IPv6-adresse eller "*" til både IPv4 og IPv6. - + Ban client after consecutive failures: - + Never Aldrig - + ban for: - + Session timeout: Sessiontimeout: - + Disabled Deaktiveret - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: Serverdomæner: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6137,441 +6416,486 @@ bør du putte domænenavne i som bruges af webgrænsefladens server. Brug ';' til af adskille flere indtastninger. Jokertegnet '*' kan bruges. - + &Use HTTPS instead of HTTP &Brug HTTPS i stedet for HTTP - + Bypass authentication for clients on localhost Tilsidesæt godkendelse for klienter på localhost - + Bypass authentication for clients in whitelisted IP subnets Tilsidesæt godkendelse for klienter i hvidlistede IP-undernet - + IP subnet whitelist... IP-undernet-hvidliste... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Opdater mit &dynamiske domænenavn - + Minimize qBittorrent to notification area Minimer qBittorrent til underretningsområdet - + + Search + Søg + + + + WebUI + + + + Interface Grænseflade - + Language: Sprog: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Stil for bakkeikon: - - + + Normal Normal - + File association Filtilknytning - + Use qBittorrent for .torrent files Brug qBittorrent til .torrent-filer - + Use qBittorrent for magnet links Brug qBittorrent til magnet-links - + Check for program updates Søg efter programopdateringer - + Power Management Strømstyring - + + &Log Files + + + + Save path: Gemmesti: - + Backup the log file after: Sikkerhedskopiér logfilen efter: - + Delete backup logs older than: Slet sikkerhedskopieret logge som er ældre end: - + + Show external IP in status bar + + + + When adding a torrent Når en torrent tilføjes - + Bring torrent dialog to the front Bring torrent-dialogen forrest - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Slet også .torrent-filer som fik deres tilføjelse annulleret - + Also when addition is cancelled Også når tilføjelse annulleres - + Warning! Data loss possible! Advarsel! Data kan gå tabt! - + Saving Management Gemmehåndtering - + Default Torrent Management Mode: Standardtilstand for håndtering af torrent: - + Manual Manuelt - + Automatic Automatisk - + When Torrent Category changed: Når torrentkategori ændres: - + Relocate torrent Flyt torrent til en anden placering - + Switch torrent to Manual Mode Skift torrent til manuel tilstand - - + + Relocate affected torrents Flyt påvirkede torrents til en anden placering - - + + Switch affected torrents to Manual Mode Skift påvirkede torrents til manuel tilstand - + Use Subcategories Brug underkategorier - + Default Save Path: Standardgemmesti: - + Copy .torrent files to: Kopiér .torrent-filer til: - + Show &qBittorrent in notification area Vis &qBittorrent i underretningsområdet - &Log file - &Logfil + &Logfil - + Display &torrent content and some options Vis &torrent-indhold og nogle valgmuligheder - + De&lete .torrent files afterwards &Slet .torrent-filer bagefter - + Copy .torrent files for finished downloads to: Kopiér færdige .torrent downloads til: - + Pre-allocate disk space for all files Præ-allokér alle filer - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder Forhåndsvis fil, ellers åbn distinationsmappe - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Luk qBittorrent til underretningsområdet - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading Forhindr systemet i at gå i dvale når der downloades torrents - + Inhibit system sleep when torrents are seeding Forhindr systemet i at gå i dvale når der seedes torrents - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days dage - + months Delete backup logs older than 10 months måneder - + years Delete backup logs older than 10 years år - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Start ikke download automatisk - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Tilføj .!qB-endelse til slutningen af ufærdige filer - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog Aktivér rekursiv download-dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: Når kategoriens gemmesti ændres: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: Tilføj automatisk torrents fra: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6588,841 +6912,906 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Modtager - + To: To receiver Til: - + SMTP server: SMTP-server: - + Sender Afsender - + From: From sender Fra: - + This server requires a secure connection (SSL) Denne server kræver en sikker forbindelse (SSL) - - + + Authentication Godkendelse - - - - + + + + Username: Brugernavn: - - - - + + + + Password: Adgangskode: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window Vis konsolvindue - + TCP and μTP TCP og μTP - + Listening Port Lyttende port - + Port used for incoming connections: Port der bruges til indgående forbindelser: - + Set to 0 to let your system pick an unused port - + Random Tilfældig - + Use UPnP / NAT-PMP port forwarding from my router Brug UPnP/NAT-PMP port-viderestilling fra min router - + Connections Limits Grænser for forbindelser - + Maximum number of connections per torrent: Maksimum antal forbindelser pr. torrent: - + Global maximum number of connections: Global maksimum antal forbindelser: - + Maximum number of upload slots per torrent: Maksimum antal uploadpladser pr. torrent: - + Global maximum number of upload slots: Global maksimum antal uploadpladser: - + Proxy Server Proxyserver - + Type: Type: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Vært: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Ellers bruges proxyserveren kun til tracker-forbindelser - + Use proxy for peer connections Brug proxy til modpartsforbindelser - + A&uthentication &Godkendelse - + Info: The password is saved unencrypted Info: Adgangskoden gemmes ukrypteret - + Filter path (.dat, .p2p, .p2b): Filtrer sti (.dat, .p2p, .p2b): - + Reload the filter Genindlæs filteret - + Manually banned IP addresses... Manuelt udelukkede IP-adresser... - + Apply to trackers Anvend på trackere - + Global Rate Limits Globale grænser for hastighed - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Upload: - - + + Download: Download: - + Alternative Rate Limits Alternative grænser for hastighed - + Start time - + End time - + When: Når: - + Every day Hver dag - + Weekdays Hverdage - + Weekends Weekender - + Rate Limits Settings Indstillinger for grænser for hastighed - + Apply rate limit to peers on LAN Anvend grænse for hastighed til modparter på LAN - + Apply rate limit to transport overhead Anvend grænse for hastighed til transport-overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Anvend grænse for hastighed til µTP-protokol - + Privacy Privatliv - + Enable DHT (decentralized network) to find more peers Aktivér DHT (decentraliseret netværk) for at finde flere modparter - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Udveksel modparter med kompatible Bittorrent-klienter (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Aktivér modpartsudveksling (PeX) for at finde flere modparter - + Look for peers on your local network Søg efter modparter på dit lokale netværk - + Enable Local Peer Discovery to find more peers Aktivér lokal modpartsopdagelse for at finde flere modparter - + Encryption mode: Krypteringstilstand: - + Require encryption Kræv kryptering - + Disable encryption Deaktivér kryptering - + Enable when using a proxy or a VPN connection Aktivér når der bruges en proxy eller en VPN-forbindelse - + Enable anonymous mode Aktivér anonym tilstand - + Maximum active downloads: Maksimum aktive downloads: - + Maximum active uploads: Maksimum aktive uploads: - + Maximum active torrents: Maksimum aktive torrents: - + Do not count slow torrents in these limits Tæl ikke langsomme torrents med i disse grænser - + Upload rate threshold: Grænse for uploadhastighed: - + Download rate threshold: Grænse for downloadhastighed: - - - + + + + sec seconds sek. - + Torrent inactivity timer: Timer for torrent inaktivitet: - + then og så - + Use UPnP / NAT-PMP to forward the port from my router Brug UPnP/NAT-PMP til at viderestille porten fra min router - + Certificate: Certifikat: - + Key: Nøgle: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information om certifikater</a> - + Change current password Skift nuværende adgangskode - Use alternative Web UI - Brug alternativ webgrænseflade + Brug alternativ webgrænseflade - + Files location: Filplacering: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Sikkerhed - + Enable clickjacking protection Aktivér beskyttelse mod klikkidnapning - + Enable Cross-Site Request Forgery (CSRF) protection Aktivér beskyttelse mod Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Aktivér validering af værtsheader - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Tjeneste: - + Register Registrer - + Domain name: Domænenavn: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Ved at aktivere disse valgmuligheder kan du <strong>uigenkaldeligt miste</strong> dine .torrent-filer! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Hvis du aktiverer den anden valgmulighed (&ldquo;Også når tilføjelse annulleres&rdquo;), <strong>så slettes .torrent-filen</strong>, selv hvis du trykker på &ldquo;<strong>Annuller</strong>&rdquo; i &ldquo;Tilføj torrent&rdquo;-dialogen - + Select qBittorrent UI Theme file - + Choose Alternative UI files location Vælg alternativ placering til brugefladefiler - + Supported parameters (case sensitive): Understøttede parametre (forskel på store og små bogstaver): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: Torrentnavn - + %L: Category %L: Kategori - + %F: Content path (same as root path for multifile torrent) %F: Indholdssti (samme som rodsti til torrent med flere filer) - + %R: Root path (first torrent subdirectory path) %R: Rodsti (første torrent-undermappesti) - + %D: Save path %D: Gemmesti - + %C: Number of files %C: Antal filer - + %Z: Torrent size (bytes) %Z: Torrentstørrelse (bytes) - + %T: Current tracker %T: Nuværende tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: Omslut parameter med citationstegn så teksten ikke bliver afkortet af blanktegn (f.eks. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Ingen) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds En torrent betrages som værende langsom hvis dens download- og uploadhastighed forbliver under disse værdier for "Timer for torrent inaktivitet" sekunder - + Certificate Certifikat - + Select certificate Vælg certifikat - + Private key Privat nøgle - + Select private key Vælg privat nøgle - - Select folder to monitor - Vælg mappe som skal overvåges + + WebUI configuration failed. Reason: %1 + - - Adding entry failed - Tilføjelse af element mislykkedes + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + - - Location Error - Fejl ved placering + + System + System default Qt style + - - The alternative Web UI files location cannot be blank. - Placeringen til de alternative webbrugefladefiler må ikke være tom. + + Let Qt decide the style for this system + - - - Choose export directory - Vælg eksportmappe + + Dark + Dark color scheme + - - When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well + + Light + Light color scheme - - qBittorrent UI Theme file (*.qbtheme config.json) + + System + System color scheme - + + Select folder to monitor + Vælg mappe som skal overvåges + + + + Adding entry failed + Tilføjelse af element mislykkedes + + + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + + + + + Location Error + Fejl ved placering + + + + + Choose export directory + Vælg eksportmappe + + + + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well + + + + + qBittorrent UI Theme file (*.qbtheme config.json) + + + + %G: Tags (separated by comma) %G: Mærkatet (separeret af komma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Vælg en gemmemappe - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Vælg en IP-filterfil - + All supported filters Alle understøttede filtre - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Fejl ved fortolkning - + Failed to parse the provided IP filter Kunne ikke behandle det angivne IP-filter - + Successfully refreshed Genopfrisket - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Behandling af det angivne IP-filter lykkedes: %1 regler blev anvendt. - + Preferences Præferencer - + Time Error Fejl ved tid - + The start time and the end time can't be the same. Start- og slut-tiden må ikke være det samme. - - + + Length Error Fejl ved længde - - - The Web UI username must be at least 3 characters long. - Webgrænsefladens brugernavn skal være mindst 3 tegn langt. - - - - The Web UI password must be at least 6 characters long. - Webgrænsefladens adgangskode skal være mindst 6 tegn langt. - PeerInfo - + Unknown Ukendt - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7578,7 +7967,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Modparten "%1" er blevet udelukket manuelt - + N/A - @@ -7601,7 +7990,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Liste over modparter som skal tilføjes (én IP pr. linje): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port/[IPv6]:port @@ -7642,27 +8031,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Filer i dette stykke: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information Vent med at se detaljeret information før metadata bliver tilgængelig - + Hold Shift key for detailed information Hold Skift-tasten nede for detaljeret information @@ -7675,58 +8064,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Søge-plugins - + Installed search plugins: Installerede søge-plugins: - + Name Navn - + Version Version - + Url Url - - + + Enabled Aktiveret - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Advarsel: Sørg for at overholde dit lands love om ophavsret når du downloader torrents fra søgemotorerne. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installer en ny - + Check for updates Søg efter opdateringer - + Close Luk - + Uninstall Afinstaller @@ -7846,17 +8235,17 @@ Pluginsne blev deaktiveret. Plugin-kilde - + Search plugin source: Søg efter plugin-kilde: - + Local file Lokal fil - + Web link Weblink @@ -7897,47 +8286,47 @@ Pluginsne blev deaktiveret. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Følgende filer fra torrenten "%1" understøtter forhåndsvisning, vælg en af dem: - + Preview Forhåndsvis - + Name Navn - + Size Størrelse - + Progress Forløb - + Preview impossible Forhåndsvisning ikke muligt - + Sorry, we can't preview this file: "%1". Beklager, vi kan ikke forhåndsvise filen: "%1". - + Resize columns Ændr kolonners størrelse - + Resize all non-hidden columns to the size of their contents Ændr alle ikke-skjulte kolonner til deres indholds størrelse @@ -7950,27 +8339,27 @@ Pluginsne blev deaktiveret. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8011,12 +8400,12 @@ Pluginsne blev deaktiveret. PropertiesWidget - + Downloaded: Downloadet: - + Availability: Tilgængelighed: @@ -8031,53 +8420,53 @@ Pluginsne blev deaktiveret. Overførsel - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Tid aktiv: - + ETA: ETA: - + Uploaded: Uploadet: - + Seeds: Seeds: - + Download Speed: Downloadhastighed: - + Upload Speed: Uploadhastighed: - + Peers: Modparter: - + Download Limit: Downloadgrænse: - + Upload Limit: Uploadgrænse: - + Wasted: Spildt: @@ -8087,193 +8476,249 @@ Pluginsne blev deaktiveret. Forbindelser: - + Information Information - + Info Hash v1: - + Info Hash v2: - + Comment: Kommentar: - + Select All Vælg alt - + Select None Vælg intet - + Share Ratio: Deleforhold: - + Reannounce In: Genannoncer om: - + Last Seen Complete: Sidst set færdige: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Samlet størrelse: - + Pieces: Stykker: - + Created By: Oprettet af: - + Added On: Tilføjet: - + Completed On: Færdig: - + Created On: Oprettet: - + + Private: + + + + Save Path: Gemmesti: - + Never Aldrig - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (har %3) - - + + %1 (%2 this session) %1 (%2 denne session) - - + + + N/A - - + + Yes + Ja + + + + No + Nej + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedet i %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 i alt) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 gns.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nyt webseed + Nyt webseed - Remove Web seed - Fjern webseed + Fjern webseed - Copy Web seed URL - Kopiér webseed-URL + Kopiér webseed-URL - Edit Web seed URL - Rediger webseed-URL + Rediger webseed-URL - + Filter files... Filterfiler... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - Nyt URL-seed + Nyt URL-seed - New URL seed: - Nyt URL-seed: + Nyt URL-seed: - - This URL seed is already in the list. - Dette URL-seed er allerede i listen. + Dette URL-seed er allerede i listen. - + Web seed editing Redigering af webseed - + Web seed URL: Webseed-URL: @@ -8292,22 +8737,22 @@ Pluginsne blev deaktiveret. Kunne ikke gemme RSS AutoDownloader-data i %1. Fejl: %2 - + Invalid data format Ugyldigt dataformat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Kunne ikke læse RSS AutoDownloader-regler. Årsag: %1 @@ -8315,22 +8760,22 @@ Pluginsne blev deaktiveret. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Kunne ikke downloade RSS-feed på '%1'. Årsag: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-feed på '%1' opdateret. Tilføjede %2 nye artikler. - + Failed to parse RSS feed at '%1'. Reason: %2 Kunne ikke behandle RSS-feed på '%1'. Årsag: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS-feed hos '%1' blev downloadet. Begynder på at fortolke den. @@ -8366,12 +8811,12 @@ Pluginsne blev deaktiveret. RSS::Private::Parser - + Invalid RSS feed. Ugyldigt RSS-feed. - + %1 (line: %2, column: %3, offset: %4). %1 (linje: %2, kolonne: %3, forskydning: %4). @@ -8379,99 +8824,99 @@ Pluginsne blev deaktiveret. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. RSS-feed med angivne URL findes allerede: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. Kan ikke flytte rodmappe. - - + + Item doesn't exist: %1. Element findes ikke: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. Kan ikke slette rodmappe. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Ukorrekt RSS-elementsti: %1. - + RSS item with given path already exists: %1. RSS-element med angivne sti findes allerede: %1. - + Parent folder doesn't exist: %1. Forældermappe findes ikke: %1. @@ -8495,8 +8940,8 @@ Pluginsne blev deaktiveret. - - + + Mark items read Mærk elementer som læst @@ -8521,132 +8966,132 @@ Pluginsne blev deaktiveret. Torrents: (dobbeltklik for at downloade) - - + + Delete Slet - + Rename... Omdøb... - + Rename Omdøb - - + + Update Opdater - + New subscription... Nyt abonnement... - - + + Update all feeds Opdater alle feeds - + Download torrent Download torrent - + Open news URL Åbn nyheds-URL - + Copy feed URL Kopiér URL for feed - + New folder... Ny mappe... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Vælg venligst et mappenavn - + Folder name: Mappenavn: - + New folder Ny mappe - - + + Please type a RSS feed URL Skriv venligst en URL for RSS-feed - - + + Feed URL: URL for feed: - + Deletion confirmation Bekræftelse for sletning - + Are you sure you want to delete the selected RSS feeds? Er du sikker på, at du vil slette de valgte RSS-feeds? - + Please choose a new name for this RSS feed Vælg venligst et nyt navn til dette RSS-feed - + New feed name: Nyt feednavn: - + Rename failed Omdøbning mislykkedes - + Date: Dato: - + Feed: - + Author: Forfatter: @@ -8654,38 +9099,38 @@ Pluginsne blev deaktiveret. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range Forskydning er udenfor område - + All plugins are already up to date. Alle plugins er allerede af nyeste udgave. - + Updating %1 plugins Opdaterer %1 plugins - + Updating plugin %1 Opdaterer pluginet %1 - + Failed to check for plugin updates: %1 Kunne ikke søge efter plugin-opdateringer: %1 @@ -8760,132 +9205,146 @@ Pluginsne blev deaktiveret. Størrelse: - + Name i.e: file name Navn - + Size i.e: file size Størrelse - + Seeders i.e: Number of full sources Seedere - + Leechers i.e: Number of partial sources Leechere - Search engine - Søgemotor + Søgemotor - + Filter search results... Filtrer søgeresultater... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultater (viser <i>%1</i> ud af <i>%2</i>): - + Torrent names only Kun torrentnavne - + Everywhere Alle steder - + Use regular expressions Brug regulære udtryk - + Open download window - + Download Download - + Open description page Åbn beskrivelsesside - + Copy Kopiér - + Name Navn - + Download link Downloadlink - + Description page URL URL for beskrivelsesside - + Searching... Søger... - + Search has finished Søgningen er færdig - + Search aborted Søgning afbrudt - + An error occurred during search... Der opstod en fejl under søgningen... - + Search returned no results Søgningen gav ingen resultater - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Synlighed for kolonne - + Resize columns Ændr kolonners størrelse - + Resize all non-hidden columns to the size of their contents Ændr alle ikke-skjulte kolonner til deres indholds størrelse @@ -8893,104 +9352,104 @@ Pluginsne blev deaktiveret. SearchPluginManager - + Unknown search engine plugin file format. Ukendt filformat for søgemotor-plugin. - + Plugin already at version %1, which is greater than %2 Pluginet er allerede version %1, hvilket er større end %2 - + A more recent version of this plugin is already installed. En nyere version af dette plugin er allerede installeret. - + Plugin %1 is not supported. Pluginet %1 understøttes ikke. - - + + Plugin is not supported. Plugin understøttes ikke. - + Plugin %1 has been successfully updated. Pluginet %1 blev opdateret. - + All categories Alle kategorier - + Movies Film - + TV shows TV-shows - + Music Musik - + Games Spil - + Anime Anime - + Software Software - + Pictures Billeder - + Books Bøger - + Update server is temporarily unavailable. %1 Opdateringsserveren er midlertidig utilgængelig. %1 - - + + Failed to download the plugin file. %1 Kunne ikke download plugin-filen. %1 - + Plugin "%1" is outdated, updating to version %2 Pluginet "%1" er forældet, opdaterer til version %2 - + Incorrect update info received for %1 out of %2 plugins. Ukorrekt opdateringsinformation modtaget til %1 ud af %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') Søge-pluginet '%1' indeholder ugyldig versionsstreng ('%2') @@ -9000,114 +9459,153 @@ Pluginsne blev deaktiveret. - - - - Search Søg - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Der er ikke installeret nogen søge-plugins. Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, for at installere nogen. - + Search plugins... Søge-plugins... - + A phrase to search for. Søg efter en frase. - + Spaces in a search term may be protected by double quotes. Mellemrum i søgetermner kan beskyttes med dobbelte anførselstegn. - + Example: Search phrase example Eksempel: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: søg efter <b>foo bar</b> - + All plugins Alle plugins - + Only enabled Kun aktiverede - + + + Invalid data format. + Ugyldigt dataformat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab Luk faneblad - + Close all tabs Luk alle faneblade - + Select... Vælg... - - - + + Search Engine Søgemotor - + + Please install Python to use the Search Engine. Installer venligst Python for at bruge søgemotoren. - + Empty search pattern Tomt søgemønster - + Please type a search pattern first Skriv venligst først et søgemønster - + + Stop Stop - Search has finished - Søgningen er færdig + Søgningen er færdig - Search has failed - Søgningen mislykkedes + Søgningen mislykkedes + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9220,34 +9718,34 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, - + Upload: Upload: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Download: - + Alternative speed limits Alternative hastighedsgrænser @@ -9439,32 +9937,32 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, Gennemsnitlig tid i kø: - + Connected peers: Tilsluttede modparter: - + All-time share ratio: Deleforhold igennem tiden: - + All-time download: Download igennem tiden: - + Session waste: Sessionsspild: - + All-time upload: Upload igennem tiden: - + Total buffer size: Samlet bufferstørrelse: @@ -9479,12 +9977,12 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, I/O-jobs i kø: - + Write cache overload: Overbelastet skrivemellemlager: - + Read cache overload: Overbelastet læsemellemlager: @@ -9503,51 +10001,67 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, StatusBar - + Connection status: Forbindelsesstatus: - - + + No direct connections. This may indicate network configuration problems. Ingen direkte forbindelser. Dette kan indikere problemer med at konfigurere netværket. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 knudepunkter - + qBittorrent needs to be restarted! qBittorrent skal genstartes! - - - + + + Connection Status: Forbindelsesstatus: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. Dette betyder typisk at qBittorrent ikke kunne lytte efter indgående forbindelser på den valgte port. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klik for at skifte til alternative grænser for hastighed - + Click to switch to regular speed limits Klik for at skifte til normale grænser for hastighed @@ -9576,14 +10090,22 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, Færdige (0) - Resumed (0) - Genoptaget (0) + Genoptaget (0) - Paused (0) - Sat på pause (0) + Sat på pause (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9645,10 +10167,29 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, Completed (%1) Færdige (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Sat på pause (%1) + Sat på pause (%1) @@ -9656,14 +10197,12 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, - Resume torrents - Genoptag torrents + Genoptag torrents - Pause torrents - Sæt torrents på pause + Sæt torrents på pause @@ -9671,9 +10210,8 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, - Resumed (%1) - Genoptaget (%1) + Genoptaget (%1) @@ -9714,17 +10252,17 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, TagFilterModel - + Tags Mærkater - + All Alle - + Untagged Uden mærkat @@ -9732,52 +10270,64 @@ Klik på "Søg efter plugins..."-knappen nederst til højre i vinduet, TagFilterWidget - + Add tag... Tilføj mærkat... - + Remove tag Fjern mærkat - + Remove unused tags Fjern ubrugte mærkater - Resume torrents - Genoptag torrents + Genoptag torrents - Pause torrents - Sæt torrents på pause + Sæt torrents på pause - + Remove torrents - New Tag - Nyt mærkat + Nyt mærkat + + + + Start torrents + + + + + Stop torrents + - + Tag: Mærkat: - + + Add tag + + + + Invalid tag name Ugyldigt mærkatnavn - + Tag name '%1' is invalid Mærkatnavnet '%1' er ugyldigt @@ -9917,32 +10467,32 @@ Vælg venligst et andet navn og prøv igen. TorrentContentModel - + Name Navn - + Progress Forløb - + Download Priority Downloadprioritet - + Remaining Tilbage - + Availability Tilgængelighed - + Total Size Samlet størrelse @@ -9987,102 +10537,120 @@ Vælg venligst et andet navn og prøv igen. TorrentContentWidget - + Rename error Fejl ved omdøbning - + Renaming Omdøber - + New name: Nyt navn: - + Column visibility Synlighed for kolonne - + Resize columns Ændr kolonners størrelse - + Resize all non-hidden columns to the size of their contents Ændr alle ikke-skjulte kolonner til deres indholds størrelse - + Open Åbn - + Open containing folder - + Rename... Omdøb... - + Priority Prioritet - - + + Do not download Download ikke - + Normal Normal - + High Høj - + Maximum Højeste - + By shown file order Efter vist fil-rækkefølge - + Normal priority Normal prioritet - + High priority Høj prioritet - + Maximum priority Højeste prioritet - + Priority by shown file order Prioritet efter vist fil-rækkefølge + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10107,13 +10675,13 @@ Vælg venligst et andet navn og prøv igen. - + Select file Vælg fil - + Select folder Vælg mappe @@ -10138,58 +10706,10 @@ Vælg venligst et andet navn og prøv igen. Stykstørrelse: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10236,92 +10756,83 @@ Vælg venligst et andet navn og prøv igen. Felter - + You can separate tracker tiers / groups with an empty line. Du kan separere tracker-tiers/-grupper med en tom linje. - + Web seed URLs: Web seed-URL'er: - + Tracker URLs: Tracker-URL'er: - + Comments: Kommentarer: - + Source: Kilde: - + Progress: Forløb: - + Create Torrent Opret torrent - - + + Torrent creation failed Oprettelse af torrent mislykkedes - + Reason: Path to file/folder is not readable. Årsag: Sti til fil/mappe kan ikke læses. - + Select where to save the new torrent Vælg hvor den nye torrent skal gemmes - + Torrent Files (*.torrent) Torrent-filer (*.torrent) - - Reason: %1 - Årsag: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - Årsag: Oprettede torrent er ugyldig. Den vil ikke blive tilføjet til downloadlisten. - - - + Torrent creator Torrentopretter - + Torrent created: Torrent oprettet: @@ -10329,32 +10840,32 @@ Vælg venligst et andet navn og prøv igen. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10362,27 +10873,27 @@ Vælg venligst et andet navn og prøv igen. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10390,14 +10901,8 @@ Vælg venligst et andet navn og prøv igen. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Ugyldig metadata + Ugyldig metadata @@ -10428,127 +10933,187 @@ Vælg venligst et andet navn og prøv igen. Brug anden sti til ukomplet torrent - + Category: Kategori: - - Torrent speed limits + + Torrent Share Limits - + Download: Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits - + Upload: Upload: - - Torrent share limits - - - - Use global share limit - Brug global delegrænse + Brug global delegrænse - Set no share limit - Sæt ingen delegrænse + Sæt ingen delegrænse - Set share limit to - Sæt delegrænse til + Sæt delegrænse til - ratio - forhold - - - - total minutes - + forhold - - inactive minutes - - - - + Disable DHT for this torrent - + Download in sequential order Download i fortløbende rækkefølge - + Disable PeX for this torrent - + Download first and last pieces first Download første og sidste stykker først - + Disable LSD for this torrent - + Currently used categories - - + + Choose save path Vælg gemmesti - + Not applicable to private torrents - No share limit method selected - Ingen delegrænsemetode valgt + Ingen delegrænsemetode valgt - Please select a limit method first - Vælg venligst først en grænsemetode + Vælg venligst først en grænsemetode + + + + TorrentShareLimitsWidget + + + + + + Default + Standard + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Fjern torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Aktivér superseeding for torrent + + + + Ratio: + @@ -10559,32 +11124,36 @@ Vælg venligst et andet navn og prøv igen. - New Tag - Nyt mærkat + Nyt mærkat + Add tag + + + + Tag: Mærkat: - + Invalid tag name Ugyldigt mærkatnavn - + Tag name '%1' is invalid. - + Tag exists Mærkatet findes - + Tag name already exists. Mærkatnavnet findes allerede. @@ -10592,115 +11161,130 @@ Vælg venligst et andet navn og prøv igen. TorrentsController - + Error: '%1' is not a valid torrent file. Fejl: '%1' er ikke en gyldig torrent-fil. - + Priority must be an integer Prioritet skal være et heltal - + Priority is not valid Prioritet er ikke gyldig - + Torrent's metadata has not yet downloaded Torrentens metadata er endnu ikke downloadet - + File IDs must be integers Fil-id'er skal være heltal - + File ID is not valid Fil-id er ikke gyldig - - - - + + + + Torrent queueing must be enabled Torrent-forespørgsel må ikke være aktiveret - - + + Save path cannot be empty Gemmesti må ikke være tom - - + + Cannot create target directory - - + + Category cannot be empty Kategori må ikke være tom - + Unable to create category Kan ikke oprette kategori - + Unable to edit category Kan ikke redigere kategori - + Unable to export torrent file. Error: %1 - + Cannot make save path Kan ikke oprette gemmesti - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Kan ikke skrive til mappe - + WebUI Set location: moving "%1", from "%2" to "%3" Webgrænseflade sæt placering: flytter "%1", fra "%2" til "%3" - + Incorrect torrent name Ukorrekt torrentnavn - - + + Incorrect category name Ukorrekt kategorinavn @@ -10731,249 +11315,191 @@ Vælg venligst et andet navn og prøv igen. TrackerListModel - - + Working - Arbejder + Arbejder - + Disabled - Deaktiveret + Deaktiveret - + Disabled for this torrent - + This torrent is private - Denne torrent er privat + Denne torrent er privat - + N/A - + - - + Updating... - Opdaterer... + Opdaterer... - + Not working - Arbejder ikke + Arbejder ikke - + Tracker error - + Unreachable - + Not contacted yet - Ikke kontaktet endnu + Ikke kontaktet endnu - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tier + + BT Protocol + - - Protocol + + Next Announce - - Status - Status + + Min Announce + + + + + Tier + Tier - Peers - Modparter + Status + Status - Seeds - Seeds + Peers + Modparter - Leeches - Leechere + Seeds + Seeds - Times Downloaded - + Leeches + Leechere - Message - Meddelelse - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + Meddelelse TrackerListWidget - Working - Arbejder - - - Disabled - Deaktiveret - - - + This torrent is private Denne torrent er privat - Updating... - Opdaterer... - - - Not working - Arbejder ikke - - - Not contacted yet - Ikke kontaktet endnu - - - N/A - - - - - + Tracker editing Redigering af tracker - + Tracker URL: Tracker-URL: - - + + Tracker editing failed Redigering af tracker mislykkedes - + The tracker URL entered is invalid. Den indtastede tracker-URL er ugyldig. - + The tracker URL already exists. Tracker-URL'en findes allerede. - + Edit tracker URL... Rediger tracker-URL... - + Remove tracker Fjern tracker - + Copy tracker URL Kopiér tracker-URL - + Force reannounce to selected trackers Tving genannoncering til valgte trackere - + Force reannounce to all trackers Tving genannoncering til alle trackere - Tier - Tier - - - URL - URL - - - Status - Status - - - Seeds - Seeds - - - + Resize columns Ændr kolonners størrelse - + Resize all non-hidden columns to the size of their contents Ændr alle ikke-skjulte kolonner til deres indholds størrelse - Peers - Modparter - - - + Add trackers... - Leeches - Leechere - - - Message - Meddelelse - - - + Column visibility Synlighed for kolonne @@ -10991,37 +11517,37 @@ Vælg venligst et andet navn og prøv igen. Liste over trackere der skal tilføjes (en pr. linje): - + µTorrent compatible list URL: Liste-URL som er kompatibel med µTorrent: - + Download trackers list - + Add Tilføj - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11029,83 +11555,70 @@ Vælg venligst et andet navn og prøv igen. TrackersFilterWidget - All (0) - this is for the tracker filter - Alle (0) - - - Trackerless (0) - Trackerløs (0) - - - Error (0) - Fejl (0) - - - Warning (0) - Advarsel (0) - - - Error (%1) - Fejl (%1) - - - + Warning (%1) Advarsel (%1) - + Trackerless (%1) Trackerløs (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - Fjern tracker + Fjern tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Genoptag torrents + Genoptag torrents - Pause torrents - Sæt torrents på pause + Sæt torrents på pause - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Alle (%1) @@ -11114,7 +11627,7 @@ Vælg venligst et andet navn og prøv igen. TransferController - + 'mode': invalid argument @@ -11207,9 +11720,8 @@ Vælg venligst et andet navn og prøv igen. Tjekker genoptagelsesdata - Paused - Sat på pause + Sat på pause @@ -11234,220 +11746,262 @@ Vælg venligst et andet navn og prøv igen. Fejlramte - + Name i.e: torrent name Navn - + Size i.e: torrent size Størrelse - + Progress % Done Forløb - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Seeds - + Peers i.e. partial sources (often untranslated) Modparter - + Down Speed i.e: Download speed Downloadhastighed - + Up Speed i.e: Upload speed Uploadhastighed - + Ratio Share ratio Forhold - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category Kategori - + Tags Mærkater - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Tilføjet den - + Completed On Torrent was completed on 01/01/2010 08:00 Færdig den - + Tracker Tracker - + Down Limit i.e: Download limit Downloadgrænse - + Up Limit i.e: Upload limit Uploadgrænse - + Downloaded Amount of data downloaded (e.g. in MB) Downloadet - + Uploaded Amount of data uploaded (e.g. in MB) Uploadet - + Session Download Amount of data downloaded since program open (e.g. in MB) Downloadet i session - + Session Upload Amount of data uploaded since program open (e.g. in MB) Uploadet i session - + Remaining Amount of data left to download (e.g. in MB) Tilbage - + + Time Active + Time (duration) the torrent is active (not stopped) + Tid aktiv + + + + Yes + Ja + + + + No + Nej + + Time Active Time (duration) the torrent is active (not paused) - Tid aktiv + Tid aktiv - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Færdig - + Ratio Limit Upload share ratio limit Grænse for forhold - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Sidst set færdige - + Last Activity Time passed since a chunk was downloaded/uploaded Sidste aktivitet - + Total Size i.e. Size including unwanted data Samlet størrelse - + Availability The number of distributed copies of the torrent Tilgængelighed - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A - - + %1 ago e.g.: 1h 20m ago %1 siden - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedet i %2) @@ -11456,334 +12010,333 @@ Vælg venligst et andet navn og prøv igen. TransferListWidget - + Column visibility Synlighed for kolonne - + Recheck confirmation Bekræftelse for gentjek - + Are you sure you want to recheck the selected torrent(s)? Er du sikker på, at du vil gentjekke den valgte torrent(s)? - + Rename Omdøb - + New name: Nyt navn: - + Choose save path Vælg gemmesti - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview Kan ikke forhåndsvise - + The selected torrent "%1" does not contain previewable files Den valgte torrent "%1" indeholder ikke filer som kan forhåndsvises - + Resize columns Ændr kolonners størrelse - + Resize all non-hidden columns to the size of their contents Ændr alle ikke-skjulte kolonner til deres indholds størrelse - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Tilføj mærkater + Tilføj mærkater - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags Fjern alle mærkater - + Remove all tags from selected torrents? Fjern alle mærkater fra valgte torrents? - + Comma-separated tags: Kommasepareret mærkater: - + Invalid tag Ugyldigt mærkat - + Tag name: '%1' is invalid Mærkatnavnet '%1' er ugyldigt - &Resume Resume/start the torrent - &Genoptag + &Genoptag - &Pause Pause the torrent - Sæt på &pause - - - - Force Resu&me - Force Resume/start the torrent - + Sæt på &pause - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Download i fortløbende rækkefølge - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first Download første og sidste stykker først - + Automatic Torrent Management Automatisk håndtering af torrent - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatisk tilstand betyder at diverse torrent-egenskaber (f.eks. gemmesti) vil blive besluttet af den tilknyttede kategori - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Super seeding-tilstand @@ -11828,28 +12381,28 @@ Vælg venligst et andet navn og prøv igen. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11857,7 +12410,12 @@ Vælg venligst et andet navn og prøv igen. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Kunne ikke indlæse brugefladetema fra fil: "%1" @@ -11888,34 +12446,27 @@ Vælg venligst et andet navn og prøv igen. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Overføring af præferencer mislykkedes: Webgrænseflade-https, fil: "%1", fejl: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Overførte præferencer: Webgrænseflade-https, eksporterede data til fil: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python registreret, navn på eksekverbar: '%1', version: %2 - - - Python not detected - Python ikke registreret - Found Python executable. Name: "%1". Version: "%2" @@ -11950,27 +12501,27 @@ Vælg venligst et andet navn og prøv igen. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12034,72 +12585,72 @@ Vælg venligst et andet navn og prøv igen. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Uacceptabel filtype. Kun almindelig fil er tilladt. - + Symlinks inside alternative UI folder are forbidden. Symlinks i alternativ brugerflademappe er forbudt. - - Using built-in Web UI. - Bruger indbygget webgrænseflade. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Bruger tilpasset webgrænseflade. Placering: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Webgrænsefladen for den valgte lokalitet (%1) er indlæst. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Kunne ikke indlæse oversættelsen til webgrænsefladen for den valgte lokalitet (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Webgrænseflade: Origin-header og target-oprindelse matcher ikke! Kilde-IP: '%1'. Origin-header: '%2'. Target-oprindelse: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Webgrænseflade: Referer-header og target-oprindelse matcher ikke! Kilde-IP: '%1'. Referer-header: '%2'. Target-oprindelse: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Webgrænseflade: Ugyldig værtsheader, port matcher ikke. Anmodningens kilde-IP: '%1'. Serverport: '%2'. Modtog værtsheader: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Webgrænseflade: Ugyldig værtsheader. Anmodningens kilde-IP: '%1'. Modtog værtsheader: '%2' @@ -12107,143 +12658,136 @@ Vælg venligst et andet navn og prøv igen. WebUI - - Web UI: HTTPS setup successful - Webgrænseflade: HTTPS-opsætning lykkedes + + Credentials are not set + - - Web UI: HTTPS setup failed, fallback to HTTP - Webgrænseflade: HTTPS-opsætning mislykkedes, falder tilbage til HTTP + + WebUI: HTTPS setup successful + - - Web UI: Now listening on IP: %1, port: %2 - Webgrænseflade: Lytter nu på IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Webgrænseflade: Kan ikke binde til IP: %1, port: %2. Årsag: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + + fs + + + Unknown error + Ukendt fejl misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 m {1s?} + - + %1m e.g: 10 minutes - %1 m + %1 m - + %1h %2m e.g: 3 hours 5 minutes - %1 t %2 m + %1 t %2 m - + %1d %2h e.g: 2 days 10 hours - %1 d %2 t + %1 d %2 t - + %1y %2d e.g: 2 years 10 days - %1å %2d + %1å %2d - %1h %2m - e.g: 3hours 5minutes - %1 t %2 m - - - %1d %2h - e.g: 2days 10hours - %1 d %2 t - - - %1y %2d - e.g: 2years 10days - %1å %2d - - - - + + Unknown Unknown (size) Ukendt - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent vil nu lukke computeren da alle downloads er færdige. - + < 1m < 1 minute < 1 m - - %1m - e.g: 10minutes - %1 m - diff --git a/src/lang/qbittorrent_de.ts b/src/lang/qbittorrent_de.ts index 1bf1d2b50314..b9c2916fb5e1 100644 --- a/src/lang/qbittorrent_de.ts +++ b/src/lang/qbittorrent_de.ts @@ -14,77 +14,77 @@ Über - + Authors Autoren - + Current maintainer Derzeitiger Betreuer - + Greece Griechenland - - + + Nationality: Nationalität: - - + + E-mail: E-Mail: - - + + Name: Name: - + Original author Ursprünglicher Entwickler - + France Frankreich - + Special Thanks Besonderen Dank - + Translators Übersetzer - + License Lizenz - + Software Used Verwendete Software - + qBittorrent was built with the following libraries: qBittorrent wurde unter Verwendung folgender Bibliotheken erstellt: - + Copy to clipboard - + In die Zwischenablage kopieren @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 - Das qBittorrent Projekt + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 - Das qBittorrent Projekt @@ -166,14 +166,13 @@ Speichern in - + Never show again - Nicht wieder anzeigen + Nie wieder anzeigen - Torrent settings - Torrent-Einstellungen + Torrent-Einstellungen @@ -191,12 +190,12 @@ Torrent starten - + Torrent information Torrent-Information - + Skip hash check Prüfsummenkontrolle überspringen @@ -205,6 +204,11 @@ Use another path for incomplete torrent Einen anderen Pfad für unvollständige Torrents verwenden + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Bedingung für das Anhalten: - - + + None Kein - - + + Metadata received Metadaten erhalten - - + + Torrents that have metadata initially will be added as stopped. + Torrents, die anfänglich Metadaten haben, werden als gestoppt hinzugefügt. + + + + Files checked Dateien überprüft - + Add to top of queue In der Warteschlange an erster Stelle hinzufügen - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Wenn ausgewählt, wird die .torrent-Datei unabhängig von den Einstellungen auf der 'Download'-Seite NICHT gelöscht. - + Content layout: Layout für Inhalt: - + Original Original - + Create subfolder Erstelle Unterordner - + Don't create subfolder Erstelle keinen Unterordner - + Info hash v1: Info-Hash v1: - + Size: Größe: - + Comment: Kommentar: - + Date: Datum: @@ -324,245 +333,182 @@ Behalte letzten Speicherpfad - + Do not delete .torrent file .torrent-Datei nicht löschen - + Download in sequential order Der Reihe nach downloaden - + Download first and last pieces first Erste und letzte Teile zuerst laden - + Info hash v2: Info-Hash v2: - + Select All Alle Wählen - + Select None Keine Wählen - + Save as .torrent file... Speichere als .torrent-Datei ... - + I/O Error I/O-Fehler - Invalid torrent - Ungültiger Torrent - - - + Not Available This comment is unavailable Nicht verfügbar - + Not Available This date is unavailable Nicht verfügbar - + Not available Nicht verfügbar - Invalid magnet link - Ungültiger Magnet-Link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Kann Torrent '%1' nicht laden. -Fehler: %2 - - - This magnet link was not recognized - Dieser Magnet-Link wurde nicht erkannt - - - + Magnet link Magnet-Link - + Retrieving metadata... Frage Metadaten ab ... - - + + Choose save path Speicherpfad wählen - Torrent is already present - Dieser Torrent ist bereits vorhanden - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' befindet sich bereits in der Liste der Downloads. Tracker wurden nicht zusammengeführt, da es sich um einen privaten Torrent handelt. - - - Torrent is already queued for processing. - Dieser Torrent befindet sich bereits in der Warteschlange. - - - + No stop condition is set. Keine Bedingungen für das Anhalten eingestellt. - + Torrent will stop after metadata is received. Der Torrent wird angehalten wenn Metadaten erhalten wurden. - - Torrents that have metadata initially aren't affected. - Torrents, die ursprünglich Metadaten enthalten, sind nicht betroffen. - - - + Torrent will stop after files are initially checked. Der Torrent wird angehalten sobald die Dateien überprüft wurden. - + This will also download metadata if it wasn't there initially. Dadurch werden auch Metadaten heruntergeladen, wenn sie ursprünglich nicht vorhanden waren. - - + + N/A N/V - Magnet link is already queued for processing. - Dieser Magnet-Link befindet sich bereits in der Warteschlange. - - - + %1 (Free space on disk: %2) %1 (Freier Speicher auf Platte: %2) - + Not available This size is unavailable. Nicht verfügbar - + Torrent file (*%1) Torrent-Datei (*%1) - + Save as torrent file Speichere als Torrent-Datei - + Couldn't export torrent metadata file '%1'. Reason: %2. Die Torrent-Metadaten Datei '%1' konnte nicht exportiert werden. Grund: %2. - + Cannot create v2 torrent until its data is fully downloaded. Konnte v2-Torrent nicht erstellen solange die Daten nicht vollständig heruntergeladen sind. - Cannot download '%1': %2 - Kann '%1' nicht herunterladen: %2 - - - + Filter files... Dateien filtern ... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' befindet sich bereits in der Liste der Downloads. Tracker konnten nicht zusammengeführt, da es sich um einen privaten Torrent handelt. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' befindet sich bereits in der Liste der Downloads. Sollen die Tracker von der neuen Quelle zusammengeführt werden? - - - + Parsing metadata... Analysiere Metadaten ... - + Metadata retrieval complete Abfrage der Metadaten komplett - - Failed to load from URL: %1. -Error: %2 - Konnte von ULR '%1' nicht laden. -Fehler: %2 - - - Download Error - Downloadfehler - AddTorrentManager Downloading torrent... Source: "%1" - + Lade Torrent herunter ... Quelle: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Konnte Torrent nicht hinzufügen. Quelle: "%1". Grund: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Das Hinzufügen eines doppelten Torrents wurde erkannt. Quelle: %1. Bestehender Torrent: %2. Ergebnis: %3 - + Merging of trackers is disabled - + Zusammenführen der Tracker ist deaktiviert. - + Trackers cannot be merged because it is a private torrent - + Tracker können wegen privatem Torrent nicht zusammengeführt werden. - + Trackers are merged from new source - + Tracker wurden von der neuen Quelle zusammengeführt. @@ -648,72 +594,77 @@ Fehler: %2 Prüfsummenkontrolle überspringen - - - Choose save path - Speicherpfad wählen + + Torrent share limits + Verhältnis-Begrenzungen für Torrent - - - - - - - Default - Standard + + + Choose save path + Speicherpfad wählen + + + - Yes - Ja + Default + Standard + Yes + Ja + + + + + No Nein - + Manual Manuell - + Automatic Automatisch - + Original Original - + Create subfolder Erstelle Unterordner - + Don't create subfolder Erstelle keinen Unterordner - + None Kein - + Metadata received Metadaten erhalten - + Files checked Dateien überprüft @@ -721,734 +672,852 @@ Fehler: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Torrents nach Abschluss der Übertragung erneut prüfen - - + + ms milliseconds ms - + Setting Einstellung - + Value Value set for this setting Wert - + (disabled) (deaktiviert) - + (auto) (automatisch) - + + min minutes Min. - + All addresses Alle Adressen - + qBittorrent Section qBittorrent-Abschnitt - - + + Open documentation Dokumentation öffnen - + All IPv4 addresses Alle IPv4-Adressen - + All IPv6 addresses Alle IPv6-Adressen - + libtorrent Section libtorrent-Abschnitt - + Fastresume files Fastresume Dateien - + SQLite database (experimental) SQLite-Datenbank (experimentell) - + Resume data storage type (requires restart) Speichertyp der Fortsetzungsdaten (Programmneustart erforderlich) - + Normal Normal - + Below normal Niedriger als normal - + Medium Medium - + Low Niedrig - + Very low Sehr niedrig - - Process memory priority (Windows >= 8 only) - Prozess-Speicherpriorität (nur für Windows 8 und aufwärts) - - - + Physical memory (RAM) usage limit Begrenzung der Nutzung des physischen Speichers (RAM) - + Asynchronous I/O threads Asynchrone E/A-Threads - + Hashing threads Hash-Threads - + File pool size Größe des Datei-Pools - + Outstanding memory when checking torrents Speicher zum Prüfen von Torrents - + Disk cache Festplatten-Cache: - - - - + + + + s seconds s - + Disk cache expiry interval Ablauf-Intervall für Festplatten-Cache - + Disk queue size Größe der Festplatten-Warteschlange - - + + Enable OS cache Systemcache aktivieren - + Coalesce reads & writes Verbundene Schreib- u. Lesezugriffe - + Use piece extent affinity Aufeinanderfolgende Teile bevorzugen - + Send upload piece suggestions Sende Empfehlungen für Upload-Teil - - - - + + + + + 0 (disabled) 0 (deaktiviert) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Speicherintervall für Fortsetzungsdaten [0: deaktiviert] - + Outgoing ports (Min) [0: disabled] Ausgehende Ports (Min) [0: deaktiviert] - + Outgoing ports (Max) [0: disabled] Ausgehende Ports (Max) [0: deaktiviert] - + 0 (permanent lease) 0 (permanente Miete) - + UPnP lease duration [0: permanent lease] UPnP-Mietdauer [0: permanent] - + Stop tracker timeout [0: disabled] Halte die Tracker-Auszeit an [0: deaktiviert] - + Notification timeout [0: infinite, -1: system default] Benachrichtigungs-Timeout [0: unendlich; -1: Systemstandard] - + Maximum outstanding requests to a single peer Max. ausstehende Anfragen an einen einzelnen Peer - - - - - + + + + + KiB KiB - + (infinite) (unendlich) - + (system default) (Systemstandard) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Diese Option ist unter Linux weniger effektiv - + + Process memory priority + Priorität des Arbeitsspeichers + + + Bdecode depth limit Bdecode-Tiefenbegrenzung - + Bdecode token limit Bdecode-Token-Limit - + Default Standard - + Memory mapped files Im Speicher abgebildete Dateien - + POSIX-compliant POSIX-konform - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Festplatten-IO-Typ (Neustart benötigt) - - + + Disable OS cache Systemcache deaktivieren - + Disk IO read mode Festplatten IO-Lesemodus - + Write-through Durchschrift - + Disk IO write mode Festplatten IO-Schreibmodus - + Send buffer watermark Schwellenwert für Sendepuffer - + Send buffer low watermark Schwellenwert für niedrigen Sendepuffer - + Send buffer watermark factor Faktor für Schwellenwert bei Sendepuffer - + Outgoing connections per second Ausgehende Verbindungen pro Sekunde - - + + 0 (system default) 0 (Systemstandard) - + Socket send buffer size [0: system default] Socket-Sendepuffergröße [0: Systemvorgabe] - + Socket receive buffer size [0: system default] Socket-Empfangspuffergröße [0: Systemvorgabe] - + Socket backlog size Socket-Backlog-Größe - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent Dateigrößenbegrenzung - + Type of service (ToS) for connections to peers Servicetyp (ToS) für die Verbindung zu Peers - + Prefer TCP TCP bevorzugen - + Peer proportional (throttles TCP) Gleichmäßig f. Peers (drosselt TCP) - + Support internationalized domain name (IDN) Internationalisierten Domain-Namen (IDN) verwenden - + Allow multiple connections from the same IP address Erlaube mehrere Verbindungen von derselben IP-Adresse - + Validate HTTPS tracker certificates HTTPS-Tracker-Zertifikate überprüfen - + Server-side request forgery (SSRF) mitigation Schutz vor serverseitiger Anforderungsfälschung (SSRF) - + Disallow connection to peers on privileged ports Verbindung zu privilegierten Ports nicht zulassen - + + It appends the text to the window title to help distinguish qBittorent instances + Der Text wird an den Fenstertitel angehängt, um qBittorent-Instanzen zu unterscheiden + + + + Customize application instance name + Name der Anwendungsinstanz anpassen + + + It controls the internal state update interval which in turn will affect UI updates Es steuert das Intervall für die interne Statusaktualisierung, was sich auch auf die Aktualisierungen der Benutzeroberfläche auswirkt. - + Refresh interval Aktualisierungsintervall - + Resolve peer host names Hostnamen der Peers auflösen - + IP address reported to trackers (requires restart) Angegebene IP-Adresse bei Trackern (Neustart benötigt) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Erneute Benachrichtigung an alle Tracker, wenn IP oder Port geändert wurden - + Enable icons in menus Icons in Menüs anzeigen - + Enable port forwarding for embedded tracker Portweiterleitung für eingebetteten Tracker aktivieren - - (Auto detect if empty) + + Enable quarantine for downloaded files + Aktiviere Quarantäne-Option für heruntergeladene Dateien + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Aktiviere 'Mark-of-the-Web' (MOTW) für heruntergeladene Dateien + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Automatische Erkennung wenn leer) + + + Python executable path (may require restart) + Pfad für die Python Ausführungsdatei (ev. Neustart erforderlich) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + Sek. + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Entfernen des Tracker von allen Torrents bestätigen + + + Peer turnover disconnect percentage Peer-Verbindungsabbruch-Prozentsatz - + Peer turnover threshold percentage Peer-Verbindungsabbruch-Schwelle - + Peer turnover disconnect interval Peer-Umsatz-Trennungsintervall - + Resets to default if empty - + Standardeinstellung wenn leer - + DHT bootstrap nodes - + DHT-Bootstrap-Knotenpunkte - + I2P inbound quantity - I2P-Eingangsmenge + i2p eingehende Tunnelanzahl - + I2P outbound quantity - I2P-Ausgangsmenge + i2p ausgehende Tunnelanzahl - + I2P inbound length I2P-EIngangslänge - + I2P outbound length I2P-Ausgangslänge - + Display notifications Benachrichtigungen anzeigen - + Display notifications for added torrents Benachrichtigungen für hinzugefügte Torrents anzeigen - + Download tracker's favicon Tracker-Favicons herunterladen - + Save path history length Länge der Speicherpfad-Historie - + Enable speed graphs Geschwindigkeits-Grafiken einschalten - + Fixed slots Feste Slots - + Upload rate based Basierend auf Uploadrate - + Upload slots behavior Verhalten für Upload-Slots - + Round-robin Ringverteilung - + Fastest upload Schnellster Upload - + Anti-leech Gegen Sauger - + Upload choking algorithm Regel für Upload-Drosselung - + Confirm torrent recheck Überprüfung des Torrents bestätigen - + Confirm removal of all tags Entfernen aller Labels bestätigen - + Always announce to all trackers in a tier Immer bei allen Trackern einer Ebene anmelden - + Always announce to all tiers Immer bei allen Ebenen anmelden - + Any interface i.e. Any network interface Beliebiges Interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP Algorithmus für gemischten Modus - + Resolve peer countries Herkunftsländer der Peers auflösen - + Network interface Netzwerk Interface - + Optional IP address to bind to Optionale IP-Adresse binden an - + Max concurrent HTTP announces Max. gleichzeitige HTTP-Ansagen - + Enable embedded tracker Eingebetteten Tracker aktivieren - + Embedded tracker port Port des eingebetteten Trackers - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 gestartet + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Laufe im portablen Modus. Automatisch erkannter Profilordner: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Redundantes Befehlszeilen-Flag erkannt: "%1". Der portable Modus erfordert ein relativ schnelles Wiederaufnehmen. - + Using config directory: %1 Verwende Konfigurations-Verzeichnis: %1 - + Torrent name: %1 Name des Torrent: %1 - + Torrent size: %1 Größe des Torrent: %1 - + Save path: %1 Speicherpfad: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Der Torrent wurde in %1 heruntergeladen. - + + Thank you for using qBittorrent. Danke für die Benutzung von qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, Mailnachricht wird versendet - + Add torrent failed - + Hinzufügen vom Torrent fehlgeschlagen - + Couldn't add torrent '%1', reason: %2. - + Konnte Torrent '%1' nicht hinzufügen. Grund: %2. + + + + The WebUI administrator username is: %1 + Der Administrator-Name für das Webinterface lautet: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Es ist kein Administrator-Name für das Webinterface vergeben. Ein temporäres Passwort für diese Sitzung wird erstellt: %1 + + + + You should set your own password in program preferences. + Es sollte ein eigenes Passwort in den Programmeinstellungen vergeben werden. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Das Webinterface ist deaktiviert! Die Konfigurationsdatei manuell editieren um es zu aktivieren. - + Running external program. Torrent: "%1". Command: `%2` Externes Programm läuft. Torrent: "%1". Befehl: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Konnte externes Programm nicht starten. Torrent: "%1". Befehl: `%2` - + Torrent "%1" has finished downloading Torrent '%1' wurde vollständig heruntergeladen - + WebUI will be started shortly after internal preparations. Please wait... Das Webinterface startet gleich nach ein paar internen Vorbereitungen. Bitte warten ... - - + + Loading torrents... Lade Torrents ... - + E&xit &Beenden - + I/O Error i.e: Input/Output Error I/O-Fehler - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Fehler: %2 Grund: '%2' - Error - Fehler - - - Failed to add torrent: %1 - Konnte Torrent nicht hinzufügen: %1 - - - + Torrent added Torrent hinzugefügt - + '%1' was added. e.g: xxx.avi was added. '%1' wurde hinzugefügt. - + Download completed Download abgeschlossen - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' wurde vollständig heruntergeladen. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 gestartet. Prozess-ID: %2 - URL download error - Fehler beim Laden der URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Konnte Datei von URL '%1' nicht laden. Grund: '%2'. + + Test email + - Torrent file association - Verknüpfung mit Torrent-Dateien + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' wurde vollständig heruntergeladen. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent ist nicht die Standardapplikation um Torrent-Dateien oder Magnet-Links zu öffnen. -Sollen Torrent-Dateien und Magnet-Links immer mit qBittorent geöffnet werden? - - - + Information Informationen - + To fix the error, you may need to edit the config file manually. - + Um den Fehler zu beheben ist es erforderlich die Konfigurationsdatei händisch zu bearbeiten. - + To control qBittorrent, access the WebUI at: %1 Um qBittorrent zu steuern benutze das Webinterface mit: %1 - - The Web UI administrator username is: %1 - Der Administrator-Name für das Webinterface lautet: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Das Passwort des Webinterface-Administrators ist unverändert und immer noch die Standardeinstellung: %1 - - - - This is a security risk, please change your password in program preferences. - Dies ist eine Sicherheitslücke - bitte das Passwort über die Programmeinstellungen ändern. - - - Application failed to start. - Anwendung konnte nicht gestartet werden. - - - + Exit Beenden - + Recursive download confirmation - Rekursiven Download bestätigen + Rekursiven Download bestätigen - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Der Torrent '%1' enthält weitere .torrent-Dateien. Sollen diese auch heruntergeladen werden? + Der Torrent '%1' enthält weitere .torrent-Dateien. Sollen diese auch heruntergeladen werden? - + Never - + Niemals - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursives Herunterladen einer .torrent-Datei innerhalb eines Torrents. Quell-Torrent: "%1". Datei: "%2". + Rekursives Herunterladen einer .torrent-Datei innerhalb eines Torrents. Quell-Torrent: "%1". Datei: "%2". - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Das Limit für die Nutzung des physischen Speichers (RAM) konnte nicht gesetzt werden. Fehlercode: %1. Fehlermeldung: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Konnte die harte Grenze für die Nutzung des physischen Speichers (RAM) nicht setzen. Angeforderte Größe: %1. Harte Systemgrenze: %2. Fehlercode: %3. Fehlermeldung: "%4" - + qBittorrent termination initiated Abbruch von qBittorrent eingeleitet - + qBittorrent is shutting down... qBittorrent wird beendet ... - + Saving torrent progress... Torrent-Fortschritt wird gespeichert - + qBittorrent is now ready to exit qBittorrent kann nun beendet werden @@ -1597,7 +1637,7 @@ Sollen Torrent-Dateien und Magnet-Links immer mit qBittorent geöffnet werden? AsyncFileStorage - + Could not create directory '%1'. Konnte das Verzeichnis '%1' nicht erstellen. @@ -1605,22 +1645,22 @@ Sollen Torrent-Dateien und Magnet-Links immer mit qBittorent geöffnet werden? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI fehlerhafter Login. Grund: IP wurde gebannt, IP: %1, Benutzername: %2 - + Your IP address has been banned after too many failed authentication attempts. Ihre IP-Adresse wurde nach zu vielen fehlerhaften Authentisierungversuchen gebannt. - + WebAPI login success. IP: %1 WebAPI erfolgreicher Login. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI fehlerhafter Login. Grund: ungültige Anmeldeinformationen, Zugriffsversuche: %1, IP: %2, Benutzername: %3 @@ -1668,12 +1708,12 @@ Sollen Torrent-Dateien und Magnet-Links immer mit qBittorent geöffnet werden?Priorität: - + Must Not Contain: Enthält nicht: - + Episode Filter: Folgenfilter: @@ -1726,263 +1766,263 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form &Exportieren... - + Matches articles based on episode filter. Wählt Artikel gemäß Folgenfilter aus. - + Example: Beispiel: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match passt zu Folge 2, 5, 8 bis 15, 30 und weiteren Folgen von Staffel eins - + Episode filter rules: Folgenfilterregeln: - + Season number is a mandatory non-zero value Staffel-Nummer ist zwingend ein Wert ungleich Null - + Filter must end with semicolon Filter müssen mit einem Strichpunkt enden - + Three range types for episodes are supported: Drei Bereichstypen für Folgen werden unterstützt: - + Single number: <b>1x25;</b> matches episode 25 of season one Einzeln: <b>1x25;</b> passt zur Folge 25 von Staffel eins - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Bereich: <b>1x25-40;</b> passt zu den Folgen 25 bis 40 von Staffel eins - + Episode number is a mandatory positive value Folgen-Nummer ist zwingend ein positiver Wert - + Rules Regeln - + Rules (legacy) Regeln (Historie) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Endloser Bereich: <b>1x25-;</b> passt zu Folge 25 und allen folgenden Folgen von Staffel eins sowie aller Folgen weiterer Staffeln - + Last Match: %1 days ago Letzte Übereinstimmung: vor %1 Tagen - + Last Match: Unknown Letzte Übereinstimmung: Unbekannt - + New rule name Name der neuen Regel - + Please type the name of the new download rule. Bitte einen Namen für die neue Downloadregel eingeben. - - + + Rule name conflict Konflikt mit Regelnamen - - + + A rule with this name already exists, please choose another name. Eine Regel mit diesem Namen existiert bereits bitte einen anderen Namen wählen. - + Are you sure you want to remove the download rule named '%1'? Soll die Downloadregel '%1' wirklich entfernt werden? - + Are you sure you want to remove the selected download rules? Sollen die gewählten Downloadregeln wirklich entfernt werden? - + Rule deletion confirmation Regellöschung bestätigen - + Invalid action Ungültige Aktion - + The list is empty, there is nothing to export. Die Liste ist leer, es gibt nichts zu exportieren. - + Export RSS rules RSS-Regeln exportieren - + I/O Error I/O Fehler - + Failed to create the destination file. Reason: %1 Fehler beim Erstellen der Zieldatei. Grund: %1 - + Import RSS rules RSS-Regeln importieren - + Failed to import the selected rules file. Reason: %1 Import der ausgewählten Regeldatei fehlgeschlagen. Grund: %1 - + Add new rule... Neue Regel hinzufügen ... - + Delete rule Regel löschen - + Rename rule... Regel umbenennen ... - + Delete selected rules Gewählte Regeln löschen - + Clear downloaded episodes... Entferne bereits heruntergeladene Folgen... - + Rule renaming Regelumbenennung - + Please type the new rule name Bitte einen Namen für die neue Regel eingeben - + Clear downloaded episodes Entferne bereits heruntergeladene Folgen - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Soll wirklich die Liste mit heruntergeladenen Folgen für die gewählte Regel entfernt werden? - + Regex mode: use Perl-compatible regular expressions Regex-Modus: Perl-kompatible reguläre Ausdrücke verwenden - - + + Position %1: %2 Position %1: %2 - + Wildcard mode: you can use Platzhaltermodus: Sie können Folgendes verwenden - - + + Import error Fehler beim Import - + Failed to read the file. %1 Konnte die Datei nicht lesen. %1 - + ? to match any single character ? um mit irgendeinem Zeichen übereinzustimmen - + * to match zero or more of any characters * um mit keinem oder irgendwelchen Zeichen übereinzustimmen - + Whitespaces count as AND operators (all words, any order) Leerzeichen zählen als UND-Operatoren (alle Wörter, beliebige Reihenfolge) - + | is used as OR operator | wird als ODER-Operator verwendet - + If word order is important use * instead of whitespace. Wenn die Wortreihenfolge wichtig ist * anstelle von Leerzeichen verwenden - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Ein Ausdruck mit einer leeren Klausel %1 (z.B. %2) - + will match all articles. wird mit allen Artikeln übereinstimmen. - + will exclude all articles. wird alle Artikel ausschließen. @@ -2024,53 +2064,58 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Kann Fortsetzungs-Verzeichnis nicht erstellen: "%1" - + Cannot parse resume data: invalid format Fortsetzungsdaten können nicht analysiert werden: Ungültiges Format - - + + Cannot parse torrent info: %1 Torrent-Infos können nicht analysiert werden: %1 - + Cannot parse torrent info: invalid format Torrent-Infos können nicht analysiert werden: Ungültiges Format - + + Mismatching info-hash detected in resume data + Nicht übereinstimmender Info-Hash in den Resume-Daten entdeckt + + + Couldn't save torrent metadata to '%1'. Error: %2. Die Torrent-Metadaten konnte nicht nach '%1' gespeichert werden. Fehler: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Speichern der Fortsetzungsdaten nach '%1' fehlgeschlagen. Fehler: %2. - + Couldn't load torrents queue: %1 Die Warteschlange konnte nicht geladen werden: %1 - + Cannot parse resume data: %1 Fortsetzungsdaten können nicht analysiert werden: %1 - + Resume data is invalid: neither metadata nor info-hash was found Fortsetzungsdaten sind ungültig: weder Metadaten noch Info-Hash wurden gefunden - + Couldn't save data to '%1'. Error: %2 Speichern der Daten nach '%1' fehlgeschlagen. Fehler: %2 @@ -2078,38 +2123,38 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form BitTorrent::DBResumeDataStorage - + Not found. Nicht gefunden. - + Couldn't load resume data of torrent '%1'. Error: %2 Laden der Fortsetzungsdaten von Torrent '%1' fehlgeschlagen. Fehler: %2 - - + + Database is corrupted. Datenbank ist fehlerhaft. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Der Write-Ahead Logging (WAL) Protokollmodus konnte nicht aktiviert werden. Fehler: %1. - + Couldn't obtain query result. Das Abfrageergebnis konnte nicht abgerufen werden. - + WAL mode is probably unsupported due to filesystem limitations. Der WAL Modus ist wahrscheinlich aufgrund von Dateisystem Limitierungen nicht unterstützt. - + Couldn't begin transaction. Error: %1 Konnte Vorgang nicht starten. Fehler: %1 @@ -2117,22 +2162,22 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Konnte Torrent-Metadaten nicht speichern. Fehler: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Starten der Fortsetzungsdaten von Torrent '%1' fehlgeschlagen. Fehler: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Löschen der Fortsetzungsdaten von Torrent '%1' fehlgeschlagen. Fehler: %2 - + Couldn't store torrents queue positions. Error: %1 Konnte Position der Torrent-Warteschlange nicht speichern. Fehler: %1 @@ -2140,586 +2185,620 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Unterstützung der verteilten Hash-Tabelle (DHT): %1 - - - - - - - - - + + + + + + + + + ON EIN - - - - - - - - - + + + + + + + + + OFF AUS - - + + Local Peer Discovery support: %1 Unterstützung von Lokalen Peers (LPD): %1 - + Restart is required to toggle Peer Exchange (PeX) support Neustart erforderlich, um Peer-Exchange-Unterstützung (PeX) zu aktivieren - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrent konnte nicht fortgesetzt werden. Torrent: "%1". Grund: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Konnte Torrent nicht fortsetzen: ungültige Torrent-ID entdeckt. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Ungültige Daten entdeckt: Kategorie fehlt in der Konfigurationsdatei. Die Kategorie wird wiederhergestellt, aber ihre Einstellungen werden auf die Standardwerte zurückgesetzt. Torrent: "%1". Kategorie: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Ungültige Daten entdeckt: ungültige Kategorie. Torrent: "%1". Kategorie: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Es wurde eine Unstimmigkeit zwischen den Speicherpfaden der wiederhergestellten Kategorie und dem aktuellen Speicherpfad des Torrent festgestellt. Der Torrent wird jetzt in den manuellen Modus umgeschaltet. Torrent: "%1". Kategorie: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Ungültige Daten entdeckt: Label fehlt in der Konfigurationsdatei. Das Label wird wiederhergestellt. Torrent: "%1". Label: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Ungültige Daten entdeckt: ungültiges Label. Torrent: "%1". Label: "%2" - + System wake-up event detected. Re-announcing to all the trackers... System aus dem Ruhezustand erwacht. Erneute Ankündigung an alle Tracker ... - + Peer ID: "%1" Peer-ID: "%1" - + HTTP User-Agent: "%1" HTTP Benutzer-Agent: "%1" - + Peer Exchange (PeX) support: %1 Peer-Exchange (PeX) Unterstützung %1 - - + + Anonymous mode: %1 Anonymer Modus: %1 - - + + Encryption support: %1 Verschlüsselungsunterstützung: %1 - - + + FORCED ERZWUNGEN - + Could not find GUID of network interface. Interface: "%1" Die GUID der Netzwerkadresse wurde nicht gefunden. Schnittstelle: "%1" - + Trying to listen on the following list of IP addresses: "%1" Es wird versucht auf folgender Liste von IP-Adressen zu lauschen: "%1" - + Torrent reached the share ratio limit. Der Torrent hat das Limit für das Shareverhältnis erreicht. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent gelöscht. + Torrent gelöscht. - - - Removed torrent and deleted its content. - Torrent und seine Inhalte gelöscht. + Torrent und seine Inhalte gelöscht. - - - Torrent paused. - Torrent pausiert. + Torrent pausiert. - - - + Super seeding enabled. Super-Seeding aktiviert. - + Torrent reached the seeding time limit. Torrent hat das Zeitlimit für das Seeding erreicht. - + Torrent reached the inactive seeding time limit. Der Torrent hat die Grenze der inaktiven Seed-Zeit erreicht. - + Failed to load torrent. Reason: "%1" Der Torrent konnte nicht geladen werden. Grund: "%1" - + I2P error. Message: "%1". + I2P-Fehler. Nachricht: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP / NAT-PMP Unterstützung: EIN + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Lade Torrent herunter, bitte warten... Quelle: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Torrent konnte nicht geladen werden. Quelle: "%1". Grund: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Das Hinzufügen eines doppelten Torrents wurde erkannt. Das Zusammenführen von Trackern ist deaktiviert. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Das Hinzufügen eines doppelten Torrents wurde erkannt. Da es sich um einen privaten Torrent handelt ist das Zusammenführen von Trackern nicht möglich. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Das Hinzufügen eines doppelten Torrents wurde erkannt. Neue Tracker wurden von dieser Quelle zusammengeführt. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP / NAT-PMP Unterstützung: EIN + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP / NAT-PMP Unterstützung: AUS + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Torrent konnte nicht exportiert werden. Torrent: "%1". Ziel: "%2". Grund: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Speicherung der Fortsetzungsdaten abgebrochen. Anzahl der ausstehenden Torrents: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + - System network status changed to %1 - e.g: System network status changed to ONLINE - Systemnetzwerkstatus auf %1 geändert + + Merging of trackers is disabled + Zusammenführen der Tracker ist deaktiviert. + + + + Trackers cannot be merged because it is a private torrent + Tracker können wegen privatem Torrent nicht zusammengeführt werden. - ONLINE - ONLINE + + Trackers are merged from new source + Tracker wurden von der neuen Quelle zusammengeführt. + + + + UPnP/NAT-PMP support: OFF + UPnP / NAT-PMP Unterstützung: AUS - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Torrent konnte nicht exportiert werden. Torrent: "%1". Ziel: "%2". Grund: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Die Netzwerk-Konfiguration von %1 hat sich geändert - die Sitzungsbindung wird erneuert + + Aborted saving resume data. Number of outstanding torrents: %1 + Speicherung der Fortsetzungsdaten abgebrochen. Anzahl der ausstehenden Torrents: %1 - + The configured network address is invalid. Address: "%1" Die konfigurierte Netzwerkadresse ist ungültig. Adresse: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Die konfigurierte Netzwerkadresse zum Lauschen konnte nicht gefunden werden. Adresse: "%1" - + The configured network interface is invalid. Interface: "%1" Die konfigurierte Netzwerkadresse ist ungültig. Schnittstelle: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Ungültige IP-Adresse beim Anwenden der Liste der gebannten IP-Adressen zurückgewiesen. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Tracker wurde dem Torrent hinzugefügt. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Tracker wurde vom Torrent entfernt. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" URL-Seed wurde dem Torrent hinzugefügt. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" URL-Seed aus dem Torrent entfernt. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent pausiert. Torrent: "%1" + Torrent pausiert. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent fortgesetzt. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrent erfolgreich heruntergeladen. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Verschieben des Torrent abgebrochen. Torrent: "%1". Quelle: "%2". Ziel: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Torrent-Verschiebung konnte nicht in die Warteschlange gestellt werden. Torrent: "%1". Quelle: "%2". Ziel: "%3". Grund: Der Torrent wird gerade zum Zielort verschoben. - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Torrent-Verschiebung konnte nicht in die Warteschlange gestellt werden. Torrent: "%1". Quelle: "%2". Ziel: "%3". Grund: Beide Pfade zeigen auf den gleichen Ort - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrent-Verschiebung in der Warteschlange. Torrent: "%1". Quelle: "%2". Ziel: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Starte Torrent-Verschiebung. Torrent: "%1". Ziel: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Konnte die Konfiguration der Kategorien nicht speichern. Datei: "%1". Fehler: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Die Konfiguration der Kategorien konnte nicht analysiert werden. Datei: "%1". Fehler: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursives Herunterladen einer .torrent-Datei innerhalb eines Torrents. Quell-Torrent: "%1". Datei: "%2". - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Konnte .torrent-Datei nicht innerhalb der .torrent-Datei herunterladen. Quell-Torrent: "%1". Datei: "%2". Fehler: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Die IP-Filterdatei wurde erfolgreich analysiert. Anzahl der angewandten Regeln: %1 - + Failed to parse the IP filter file Konnte die IP-Filterdatei nicht analysieren - + Restored torrent. Torrent: "%1" Torrent wiederhergestellt. Torrent: "%1" - + Added new torrent. Torrent: "%1" Neuer Torrent hinzugefügt. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent mit Fehler. Torrent: "%1". Fehler: "%2" - - Removed torrent. Torrent: "%1" - Torrent entfernt. Torrent: "%1" + Torrent entfernt. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent und seine Inhalte gelöscht. Torrent: "%1" + Torrent und seine Inhalte gelöscht. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent fehlen SSL-Parameter. Torrent: "%1". Nachricht: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Dateifehlerwarnung. Torrent: "%1". Datei: "%2". Grund: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP: Fehler beim Portmapping. Meldung: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Erfolgreiches UPnP/NAT-PMP Portmapping. Meldung: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP-Filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). Gefilterter Port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). Bevorzugter Port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Bei der BitTorrent-Sitzung ist ein schwerwiegender Fehler aufgetreten. Grund: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 Proxy Fehler. Adresse: %1. Nachricht: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 Beschränkungen für gemischten Modus - + Failed to load Categories. %1 Konnte die Kategorien nicht laden. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Konnte die Kategorie-Konfiguration nicht laden. Datei: "%1". Fehler: "Ungültiges Datenformat" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent entfernt aber seine Inhalte und/oder Teildateien konnten nicht gelöscht werden. Torrent: "%1". Fehler: "%2" + Torrent entfernt aber seine Inhalte und/oder Teildateien konnten nicht gelöscht werden. Torrent: "%1". Fehler: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 ist deaktiviert - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 ist deaktiviert - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - DNS-Lookup vom URL-Seed fehlgeschlagen. Torrent: "%1". URL: "%2". Fehler: "%3" + DNS-Lookup vom URL-Seed fehlgeschlagen. Torrent: "%1". URL: "%2". Fehler: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Fehlermeldung vom URL-Seed erhalten. Torrent: "%1". URL: "%2". Nachricht: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Lausche erfolgreich auf dieser IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Konnte auf der IP nicht lauschen. IP: "%1". Port: "%2/%3". Grund: "%4" - + Detected external IP. IP: "%1" Externe IP erkannt. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Fehler: Interne Warnungswarteschlange voll und Warnungen wurden gelöscht. Möglicherweise ist die Leistung beeinträchtigt. Abgebrochener Alarmtyp: "%1". Nachricht: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent erfolgreich verschoben. Torrent: "%1". Ziel: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Torrent konnte nicht verschoben werden. Torrent: "%1". Quelle: "%2". Ziel: "%3". Grund: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operation abgebrochen - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Erstellung der neuen Torrent-Datei fehlgeschlagen. Grund: %1. + + Failed to start seeding. + Konnte mit dem Seeden nicht beginnen. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operation abgebrochen + Vorgang abgebrochen + + Create new torrent file failed. Reason: %1. - Erstellung der neuen Torrent-Datei fehlgeschlagen. Grund: %1. + Erstellung der neuen Torrent-Datei fehlgeschlagen. Grund: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Konnte Peer '%1' nicht zum Torrent '%2' hinzufügen. Grund: %3 - + Peer "%1" is added to torrent "%2" Peer '%1' wurde dem Torrent '%2' hinzugefügt - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Unerwartete Daten entdeckt. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Konnte nicht in Datei schreiben. Grund: "%1". Der Torrent ist jetzt im Modus "nur seeden". - + Download first and last piece first: %1, torrent: '%2' Erste und letzte Teile zuerst laden: %1, Torrent: '%2' - + On Ein - + Off Aus - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Torrent konnte nicht wieder geladen werden. Torrent: %1. Grund: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Erstellen der Fortsetzungsdatei fehlgeschlagen. Torrent: "%1". Grund: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Torrent konnte nicht wiederhergestellt werden. Entweder wurden Dateien verschoben oder auf den Speicher kann nicht zugegriffen werden. Torrent: "%1". Grund: "%2" - + Missing metadata Fehlende Metadaten - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Umbenennen der Datei fehlgeschlagen. Torrent: "%1", Datei: "%2", Grund: "%3" - + Performance alert: %1. More info: %2 Leistungsalarm: %1. Mehr Info: %2 @@ -2740,184 +2819,198 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' benötigt folgende Syntax: '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' benötigt folgende Syntax: '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Erwarte Ganzzahl in Umgebungsvariable '%1', bekam jedoch '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' benötigt folgende Syntax: '%1=%2' + Parameter '%1' benötigt folgende Syntax: '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Erwartete %1 in Umgebungsvariable '%2', bekam jedoch '%3' - - + + %1 must specify a valid port (1 to 65535). %1 muss einen gültigen Port (zwischen 1 und 65535) angeben. - + Usage: Verwendung: - + [options] [(<filename> | <url>)...] [Optionen] [(<filename> | <url>)...] - + Options: Optionen: - + Display program version and exit Zeige die Programmversion und beende. - + Display this help message and exit Zeige diese Hilfe und beende. - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' benötigt folgende Syntax: '%1=%2' + + + + Confirm the legal notice + Bestätige den rechtlichen Hinweis + + + + port Port - - Change the Web UI port + + Change the WebUI port Ändere den Webinterface-Port - + Change the torrenting port Ändere den Torrent-Port - + Disable splash screen Deaktiviere Splash Screen - + Run in daemon-mode (background) Laufe im Hintergrund als Dienst - + dir Use appropriate short form or abbreviation of "directory" Verz. - + Store configuration files in <dir> Konfigurationsdateien in <dir> speichern - - + + name Name - + Store configuration files in directories qBittorrent_<name> Konfigurationsdateien in Verzeichnis qBittorrent_<name> speichern - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Modifiziere die libtorrent-Fortsetzungsdateien und mache die Pfade relativ zum Profilverzeichnis - + files or URLs Dateien oder URLs - + Download the torrents passed by the user Lade die vom Benutzer angebenen Torrents herunter - + Options when adding new torrents: Sobald ein Torrent hinzugefügt wird: - + path Pfad - + Torrent save path Speicherpfad für Torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Neue Torrents starten oder pausieren + Neue Torrents starten oder pausieren - + Skip hash check Prüfsummenkontrolle überspringen - + Assign torrents to category. If the category doesn't exist, it will be created. Weise Torrents Kategorien zu. Wenn die Kategorie nicht existiert wird sie erstellt. - + Download files in sequential order Der Reihe nach downloaden - + Download first and last pieces first Erste und letzte Teile zuerst laden - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Lege fest ob der "Neuen Torrent hinzufügen"-Dialog beim Hinzufügen eines Torrents startet. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Optionswerte können von Umgebungsvariablen geliefert werden. Für eine Option mit dem Namen 'parameter-name' lautet der Name "QBT_PARAMETER_NAME' (in Großbuchstaben, '-' ersetzt durch '_'). Um die Werte zu akzeptieren, die Variable auf '1' oder 'WAHR' setzen. Z.B. um den Startbildschirm zu deaktivieren: - + Command line parameters take precedence over environment variables Kommandozeilenparameter haben Vorrang vor Umgebungsvariablen - + Help Hilfe @@ -2925,17 +3018,17 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form CategoryFilterModel - + Categories Kategorien - + All Alle - + Uncategorized Ohne Kategorie @@ -2969,13 +3062,21 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form - Resume torrents - Torrents fortsetzen + Start torrents + + Stop torrents + + + + Resume torrents + Torrents fortsetzen + + Pause torrents - Torrents pausieren + Torrents pausieren @@ -2986,15 +3087,20 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form ColorWidget - + Edit... Bearbeiten ... - + Reset Zurücksetzen + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form CustomThemeSource - + Failed to load custom theme style sheet. %1 Konnte die angepasste Themen-Stil Datei nicht laden. %1 - + Failed to load custom theme colors. %1 Konnte die angepassten Themen-Farben nicht laden. %1 @@ -3048,7 +3154,7 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form DefaultThemeSource - + Failed to load default theme colors. %1 Konnte die Standard Themen-Farben nicht laden. %1 @@ -3067,23 +3173,27 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form + Also remove the content files + + + Also permanently delete the files - Die Dateien auch dauerhaft löschen + Die Dateien auch dauerhaft löschen - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Soll '%1' wirklich von der Transfer-Liste gelöscht werden? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Sollen diese %1 Torrents wirklich von der Transfer-Liste gelöscht werden? - + Remove Entfernen @@ -3096,12 +3206,12 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form Von URLs laden - + Add torrent links Torrent-Links hinzufügen - + One link per line (HTTP links, Magnet links and info-hashes are supported) Ein Link pro Zeile (HTTP-Links, Magnet-Links und Info-Hashes werden unterstützt) @@ -3111,12 +3221,12 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form Herunterladen - + No URL entered Keine URL eingegeben - + Please type at least one URL. Bitte mindestens eine URL eingeben. @@ -3275,64 +3385,91 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form Syntax-Fehler: Die Filterdatei ist keine gültige PeerGuardian P2B-Datei. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Lade Torrent herunter ... Quelle: "%1" - Trackers cannot be merged because it is a private torrent - + Tracker können wegen privatem Torrent nicht zusammengeführt werden. - + Torrent is already present - Dieser Torrent ist bereits vorhanden + Dieser Torrent ist bereits vorhanden + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' befindet sich bereits in der Liste der Downloads. Sollen die Tracker von der neuen Quelle zusammengeführt werden? + Torrent '%1' befindet sich bereits in der Liste der Downloads. Sollen die Tracker von der neuen Quelle zusammengeführt werden? GeoIPDatabase - - + + Unsupported database file size. Nicht unterstützte Dateigröße der Datenbank. - + Metadata error: '%1' entry not found. Fehler in Metadaten: '%1'-Eintrag nicht gefunden. - + Metadata error: '%1' entry has invalid type. Fehler in Metadaten: '%1'-Eintrag ist ein ungültiger Typ. - + Unsupported database version: %1.%2 Nicht unterstützte Version der Datenbank: %1.%2 - + Unsupported IP version: %1 Nicht unterstützte IP-Version: %1 - + Unsupported record size: %1 Nicht unterstützte Speichergröße: %1 - + Database corrupted: no data section found. Fehlerhafte Datenbank: Kein Datenabschnitt gefunden. @@ -3340,17 +3477,17 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP-Anforderungsgröße überschreitet Limit, schließe Anschluß. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Schlechte Http-Anforderungsmethode, Socket wird geschlossen. IP: %1. Methode: "%2" - + Bad Http request, closing socket. IP: %1 Schlechte HTTP-Anforderung, schließe Anschluß. IP: %1 @@ -3391,36 +3528,64 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form IconWidget - + Browse... Durchsuchen ... - + Reset Zurücksetzen - + Select icon Icon wählen - + Supported image files Unterstützte Bilddateien + + LegalNotice + + + Legal Notice + Rechtshinweis + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent ist ein Filesharing Programm. Sobald ein Torrent im Programm läuft wird der Inhalt auch anderen durch Upload zur Verfügung gestellt. Das Teilen jeglicher Inhalte geschieht auf eigene Verantwortung. + + + + No further notices will be issued. + Es werden keine weiteren Meldungen ausgegeben. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Wenn Sie den rechtlichen Hinweis gelesen haben, können Sie die Kommandozeilenoption '--confirm-legal-notice' verwenden, um diese Meldung zu unterdrücken. + + + + Press 'Enter' key to continue... + Die 'Enter'-Taste zum Fortfahren drücken ... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 wurde blockiert. Grund: %2. - + %1 was banned 0.0.0.0 was banned %1 wurde gebannt @@ -3429,91 +3594,62 @@ Er unterstützt die Formate: S01E01, 1x1, 2017.12.31 und 31.12.2017 (Datums-Form Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 ist ein unbekannter Kommandozeilen-Parameter. - - + + %1 must be the single command line parameter. %1 muss der einzige Kommandozeilen-Parameter sein. - - You cannot use %1: qBittorrent is already running for this user. - %1 kann nicht verwendet werden. qBittorrent läuft für diesen Benutzer bereits. - - - + Run application with -h option to read about command line parameters. Programm mit -h starten um Info über Kommandozeilen-Parameter zu erhalten. - + Bad command line Falsche Kommandozeile - + Bad command line: Falsche Kommandozeile: - + An unrecoverable error occurred. - + Ein nicht behebbarer Fehler ist aufgetreten. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Rechtshinweis - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent ist ein Filesharing Programm. Sobald ein Torrent im Programm läuft wird der Inhalt auch anderen durch Upload zur Verfügung gestellt. Das Teilen jeglicher Inhalte geschieht auf eigene Verantwortung. - - - - No further notices will be issued. - Es werden keine weiteren Meldungen ausgegeben. - - - - Press %1 key to accept and continue... - Zum Bestätigen und Fortfahren bitte %1-Taste drücken ... + qBittorrent ist auf einen nicht behebbarer Fehler gestoßen. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent ist ein Filesharing Programm. Sobald ein Torrent im Programm läuft wird der Inhalt auch anderen durch Upload zur Verfügung gestellt. - -Selbstverständlich geschieht dieses Teilen jeglicher Inhalte auf eigene Verantwortung und es erfolgt auch kein weiterer Hinweis diesbezüglich. + + You cannot use %1: qBittorrent is already running. + %1 kann nicht verwendet werden: qBittorrent läuft bereits. - - Legal notice - Rechtshinweis + + Another qBittorrent instance is already running. + Eine läuft bereits ein andere qBittorrent-Instanz. - - Cancel - Abbrechen + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Unerwartete qBittorrent-Instanz gefunden, diese wird daher beendet. Aktuelle Prozess-ID: %1. - - I Agree - Ich stimme zu + + Error when daemonizing. Reason: "%1". Error code: %2. + Fehler beim Wechsels des Programms in den Hintergrund. Grund: "%1". Fehler-Code: %2. @@ -3524,621 +3660,706 @@ Selbstverständlich geschieht dieses Teilen jeglicher Inhalte auf eigene Verantw B&earbeiten - + &Tools &Werkzeuge - + &File &Datei - + &Help &Hilfe - + On Downloads &Done Wenn &Downloads abgeschlossen sind - + &View &Ansicht - + &Options... &Optionen ... - &Resume - Fo&rtsetzen + Fo&rtsetzen - + &Remove Entfe&rnen - + Torrent &Creator &Torrent-Ersteller - - + + Alternative Speed Limits Alternative Geschwindigkeitsbegrenzungen - + &Top Toolbar Obere Werkzeugleis&te - + Display Top Toolbar Obere Werkzeugleiste anzeigen - + Status &Bar Status &Bar - + Filters Sidebar Filter Seitenleiste - + S&peed in Title Bar &Geschwindigkeit in der Titelleiste - + Show Transfer Speed in Title Bar Übertragungsgeschwindigkeit in der Titelleiste anzeigen - + &RSS Reader &RSS Reader - + Search &Engine Suchmaschin&e - + L&ock qBittorrent qBitt&orrent sperren - + Do&nate! E&ntwicklung unterstützen! - + + Sh&utdown System + + + + &Do nothing Nichts ändern - + Close Window Fenster schließen - R&esume All - Alle forts&etzen + Alle forts&etzen - + Manage Cookies... Cookies verwalten ... - + Manage stored network cookies Gespeicherte Netzwerk-Cookies verwalten ... - + Normal Messages Normale Meldungen - + Information Messages Informations-Meldungen - + Warning Messages Warnmeldungen - + Critical Messages Kritische Meldungen - + &Log Protoko&ll - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Globale Geschwindigkeitsbegrenzungen einstellen... - + Bottom of Queue Ans Ende der Warteschlange - + Move to the bottom of the queue An das Ende der Warteschlange verschieben - + Top of Queue An Anfang der Warteschlange - + Move to the top of the queue An den Anfang der Warteschlange verschieben - + Move Down Queue In der Warteschlange nach unten - + Move down in the queue In der Warteschlange nach unten - + Move Up Queue In der Warteschlange nach oben - + Move up in the queue In der Warteschlange nach oben - + &Exit qBittorrent qBittorrent b&eenden - + &Suspend System &Standbymodus - + &Hibernate System &Ruhezustand - S&hutdown System - System &herunterfahren + System &herunterfahren - + &Statistics &Statistiken - + Check for Updates Auf Aktualisierungen prüfen - + Check for Program Updates Auf Programmaktualisierungen prüfen - + &About &Über - &Pause - &Pausieren + &Pausieren - P&ause All - A&lle anhalten + A&lle anhalten - + &Add Torrent File... Torrent-D&atei hinzufügen... - + Open Öffnen - + E&xit &Beenden - + Open URL URL öffnen - + &Documentation &Dokumentation - + Lock Sperren - - - + + + Show Anzeigen - + Check for program updates Auf Programm-Updates prüfen - + Add Torrent &Link... Torrent-&Link hinzufügen... - + If you like qBittorrent, please donate! Bitte unterstützen Sie qBittorrent wenn es Ihnen gefällt! - - + + Execution Log Ausführungs-Log - + Clear the password Passwort löschen - + &Set Password Passwort fe&stlegen - + Preferences Einstellungen - + &Clear Password Passwort lös&chen - + Transfers Übertragungen - - + + qBittorrent is minimized to tray qBittorrent wurde in die Statusleiste minimiert - - - + + + This behavior can be changed in the settings. You won't be reminded again. Dieses Verhalten kann in den Einstellungen geändert werden. Es folgt kein weiterer Hinweis. - + Icons Only Nur Icons - + Text Only Nur Text - + Text Alongside Icons Text neben Symbolen - + Text Under Icons Text unter Symbolen - + Follow System Style Dem Systemstil folgen - - + + UI lock password Passwort zum Entsperren - - + + Please type the UI lock password: Bitte das Passwort für den gesperrten qBittorrent-Bildschirm eingeben: - + Are you sure you want to clear the password? Soll das Passwort wirklich gelöscht werden? - + Use regular expressions Reguläre Ausdrücke verwenden - - Search - Suche + + + Search Engine + Suchmaschine - - Transfers (%1) - Übertragungen (%1) + + Search has failed + Suche fehlgeschlagen - Recursive download confirmation - Rekursiven Download bestätigen + + Search has finished + Suche abgeschlossen - Never - Niemals + + Search + Suche - + + Transfers (%1) + Übertragungen (%1) + + + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent wurde soeben aktualisiert. Änderungen werden erst nach einem Neustart aktiv. - + qBittorrent is closed to tray qBittorrent wurde in die Statusleiste geschlossen - + Some files are currently transferring. Momentan werden Dateien übertragen. - + Are you sure you want to quit qBittorrent? Sind Sie sicher, dass sie qBittorrent beenden möchten? - + &No &Nein - + &Yes &Ja - + &Always Yes &Immer ja - + Options saved. Optionen gespeichert. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Fehlende Python-Laufzeitumgebung - + qBittorrent Update Available Aktualisierung von qBittorrent verfügbar - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python wird benötigt um die Suchmaschine benutzen zu können, scheint aber nicht installiert zu sein. Soll Python jetzt installiert werden? - + Python is required to use the search engine but it does not seem to be installed. Python wird benötigt um die Suchmaschine benutzen zu können, scheint aber nicht installiert zu sein. - - + + Old Python Runtime Veraltete Python-Laufzeitumgebung - + A new version is available. Eine neue Version ist verfügbar. - + Do you want to download %1? Soll %1 heruntergeladen werden? - + Open changelog... Öffne Änderungsindex ... - + No updates available. You are already using the latest version. Keine Aktualisierung verfügbar, die neueste Version ist bereits installiert. - + &Check for Updates Auf Aktualisierungen prüfen - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Die Python-Version (%1) ist nicht mehr aktuell da mindestens Version %2 benötigt wird. Soll jetzt eine aktuellere Version installiert werden? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Die installierte Version von Python (%1) ist veraltet und sollte für die Funktion der Suchmaschine auf die aktuellste Version aktualisiert werden. Mindestens erforderlich ist: %2. - + + Paused + Angehalten + + + Checking for Updates... Prüfe auf Aktualisierungen ... - + Already checking for program updates in the background Überprüfung auf Programm-Aktualisierungen läuft bereits im Hintergrund - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Downloadfehler - Python setup could not be downloaded, reason: %1. Please install it manually. - Python konnte nicht heruntergeladen werden; Grund: %1. + Python konnte nicht heruntergeladen werden; Grund: %1. Bitte manuell installieren. - - + + Invalid password Ungültiges Passwort - + Filter torrents... Torrents filtern ... - + Filter by: Filtern nach: - + The password must be at least 3 characters long Das Passwort muss mindestens 3 Zeichen lang sein - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Der Torrent '%1' enthält weitere .torrent-Dateien. Sollen diese auch heruntergeladen werden? - - - + The password is invalid Das Passwort ist ungültig - + DL speed: %1 e.g: Download speed: 10 KiB/s DL-Geschw.: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s UL-Geschw.: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Ausblenden - + Exiting qBittorrent Beende qBittorrent - + Open Torrent Files Öffne Torrent-Dateien - + Torrent Files Torrent-Dateien @@ -4199,133 +4420,133 @@ Bitte manuell installieren. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O-Fehler: %1 - + The file size (%1) exceeds the download limit (%2) Die Dateigröße (%1) überschreitet das Download-Limit (%2) - + Exceeded max redirections (%1) Max. erlaubte Weiterleitungen wurden überschritten (%1) - + Redirected to magnet URI Weiterleitung zu Magnet-URI - + The remote host name was not found (invalid hostname) Der Hostname konnte nicht gefunden werden (ungültiger Hostname) - + The operation was canceled Der Vorgang wurde abgebrochen - + The remote server closed the connection prematurely, before the entire reply was received and processed Der Remote-Server hat die Verbindung beendet bevor die gesamte Antwort empfangen und verarbeitet werden konnte - + The connection to the remote server timed out Die Verbindung zum Remote-Server ist abgelaufen - + SSL/TLS handshake failed SSL/TLS Handshake fehlgeschlagen - + The remote server refused the connection Der Remote-Server hat die Verbindung verweigert - + The connection to the proxy server was refused Die Verbindung zum Proxy-Server wurde verweigert - + The proxy server closed the connection prematurely Der Proxy-Server hat die Verbindung vorzeitig beendet - + The proxy host name was not found Der Proxy-Hostname wurde nicht gefunden - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Zeitüberschreitung beim Verbindungsaufbau mit dem Proxy oder der Proxy hat nicht in angemessener Zeit auf die Anfrage reagiert - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Der Proxy benötigt Authentifizierung hat jedoch keine der angebotenen Zugangsdaten akzeptiert - + The access to the remote content was denied (401) Der Zugriff auf den Inhalt wurde verweigert (401) - + The operation requested on the remote content is not permitted Der angeforderte Vorgang auf rechnerferne Inhalte ist nicht gestattet - + The remote content was not found at the server (404) Die rechnerfernen Inhalte wurden auf dem Server nicht gefunden (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Der Remote-Server benötigt Authentifizierung hat jedoch keine der angebotenen Zugangsdaten akzeptiert - + The Network Access API cannot honor the request because the protocol is not known Die Network-Access-API konnte die Anfrage wegen unbekanntem Protokoll nicht bearbeiten. - + The requested operation is invalid for this protocol - Die gewählte Operation ist für dieses Protokoll ungültig + Der angeforderte Vorgang ist für dieses Protokoll ungültig - + An unknown network-related error was detected Ein unbekannter Netzwerk-Fehler ist aufgetreten - + An unknown proxy-related error was detected Ein unbekannter Proxy-Fehler ist aufgetreten - + An unknown error related to the remote content was detected Ein unbekannter Fehler in Zusammenhang mit dem Inhalt ist aufgetreten - + A breakdown in protocol was detected Es ist eine Störung im Protokoll aufgetreten - + Unknown error Unbekannter Fehler @@ -4333,7 +4554,12 @@ Bitte manuell installieren. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignoriere SSL-Fehler, URL: "%1", Fehler: "%2" @@ -5705,294 +5931,307 @@ Bitte manuell installieren. BitTorrent - + RSS RSS - Web UI - Webinterface + Webinterface - + Advanced Erweitert - + Customize UI Theme... UI-Thema anpassen ... - + Transfer List Übertragungsliste - + Confirm when deleting torrents Löschen von Torrents bestätigen - Shows a confirmation dialog upon pausing/resuming all the torrents - Zeigt einen Bestätigungsdialog für "Pause/Alles fortsetzen" für die Torrents + Zeigt einen Bestätigungsdialog für "Pause/Alles fortsetzen" für die Torrents - Confirm "Pause/Resume all" actions - Bestätige "Pause/Alles fortsetzen" Aktionen + Bestätige "Pause/Alles fortsetzen" Aktionen - + Use alternating row colors In table elements, every other row will have a grey background. Abwechselnde Reihenfarben verwenden - + Hide zero and infinity values Werte mit Null und Unendlich verbergen - + Always Immer - Paused torrents only - Nur pausierte Torrents + Nur pausierte Torrents - + Action on double-click Aktion bei Doppelklick - + Downloading torrents: Herunterladende Torrents: - - Start / Stop Torrent - Torrent starten / stoppen + Torrent starten / stoppen - - + + Open destination folder Zielordner öffnen - - + + No action Keine Aktion - + Completed torrents: Abgeschlossene Torrents: - + Auto hide zero status filters Automatisches Ausblenden von Null-Status-Filtern - + Desktop Desktop - + Start qBittorrent on Windows start up qBittorrent beim Systemstart starten - + Show splash screen on start up Beim Start von qBittorrent das Logo anzeigen - + Confirmation on exit when torrents are active Beenden bestätigen, wenn noch Torrents aktiv sind - + Confirmation on auto-exit when downloads finish Beenden bestätigen, wenn die Downloads abgeschlossen sind - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Um qBittorrent als Standardprogramm für .torrent-Dateien und/oder Magnet-Links festzulegen <br/>verwendet man den<span style=" font-weight:600;">'Standardprogramme'</span> Dialog der <span style=" font-weight:600;">'Systemsteuerung'</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Layout für Torrent-Inhalt: - + Original Original - + Create subfolder Erstelle Unterordner - + Don't create subfolder Erstelle keinen Unterordner - + The torrent will be added to the top of the download queue Der Torrent wird in der Warteschlange an erster Stelle hinzugefügt - + Add to top of queue The torrent will be added to the top of the download queue In der Warteschlange an erster Stelle hinzufügen - + When duplicate torrent is being added Wenn ein doppelter Torrent hinzugefügt wird - + Merge trackers to existing torrent Tracker zu bestehendem Torrent zusammenführen - + + Keep unselected files in ".unwanted" folder + Behalte abgewählte Dateien im Verzeichnis ".unwanted" + + + Add... Hinzufügen ... - + Options.. Optionen ... - + Remove Entfernen - + Email notification &upon download completion Benachrichtigen, wenn der Download &fertig ist - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Verbindungsprotokoll Peers: - + Any Zufällig - + I2P (experimental) I2P (experimentell) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Wenn der &quot;gemischte Modus&quot; aktiviert ist, können I2P Torrents auch Peers aus anderen Quellen als dem Tracker erhalten und sich mit regulären IPs verbinden, ohne dass eine Anonymisierung erfolgt. Dies kann nützlich sein, wenn der Benutzer nicht an der Anonymisierung von I2P interessiert ist, aber trotzdem in der Lage sein möchte, sich mit I2P-Peers zu verbinden.</p></body></html> + <html><head/><body><p>Wenn der &quot;gemischte Modus&quot; aktiviert ist, können I2P Torrents auch Peers aus anderen Quellen als dem Tracker erhalten und sich mit regulären IPs verbinden, ohne dass eine Anonymisierung erfolgt. Dies kann nützlich sein, wenn der Benutzer nicht an der Anonymisierung von I2P interessiert ist, aber trotzdem in der Lage sein möchte, sich mit I2P-Peers zu verbinden.</p></body></html> - + Mixed mode Gemischter Modus - + Some options are incompatible with the chosen proxy type! Einige Optionen sind mit dem gewählten Proxy-Typ nicht kompatibel! - + If checked, hostname lookups are done via the proxy Wenn diese Option aktiviert ist, erfolgt die Suche nach Hostnamen über den Proxy - + Perform hostname lookup via proxy Hostnamen-Suche über Proxy durchführen - + Use proxy for BitTorrent purposes Proxy für BitTorrent verwenden - + RSS feeds will use proxy RSS-Feeds werden nun Proxy verwenden - + Use proxy for RSS purposes Proxy für RSS-Zwecke verwenden - + Search engine, software updates or anything else will use proxy Suchmaschinen, Software-Updates oder andere Dinge verwenden Proxy - + Use proxy for general purposes Proxy für allgemeine Zwecke verwenden - + IP Fi&ltering IP-&Filterung - + Schedule &the use of alternative rate limits Benutzung von al&ternativen Verhältnisbegrenzungen verwenden - + From: From start time Von: - + To: To end time Bis: - + Find peers on the DHT network Finde Peers im DHT-Netzwerk - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,184 +6240,231 @@ Verschlüsselung verlangen: Nur mit Peers verbinden mit Protokoll-Verschlüsselu Verschlüsselung deaktivieren: Nur mit Peers ohne Prokokoll-Verschlüsselung verbinden - + Allow encryption Verschlüsselung erlauben - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mehr Information</a>) - + Maximum active checking torrents: Max. Anzahl aktiver Prüfungen v. Torrents: - + &Torrent Queueing Warteschlange für &Torrents - + When total seeding time reaches Wenn die gesamte Seed-Zeit erreicht hat: - + When inactive seeding time reaches Wenn die inaktive Seed-Zeit erreicht hat: - A&utomatically add these trackers to new downloads: - Diese Tracker a&utomatisch zu neuen Downloads hinzufügen: + Diese Tracker a&utomatisch zu neuen Downloads hinzufügen: - + RSS Reader RSS-Reader - + Enable fetching RSS feeds Aktiviere RSS-Feeds - + Feeds refresh interval: Aktualisierungsintervall für RSS-Feeds: - + + Same host request delay: + Gleiche Host-Anforderungsverzögerung: + + + Maximum number of articles per feed: Maximale Anzahl der Artikel pro Feed: - - - + + + min minutes Min. - + Seeding Limits Seed-Grenzen - Pause torrent - Torrent pausieren + Torrent pausieren - + Remove torrent Torrent entfernen - + Remove torrent and its files Entferne Torrent und seine Dateien - + Enable super seeding for torrent Super-Seeding für Torrent aktivieren - + When ratio reaches Wenn das Verhältnis erreicht ist - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS-Torrent Automatik-Downloader - + Enable auto downloading of RSS torrents Aktiviere automatisches Herunterladen von RSS-Torrents - + Edit auto downloading rules... Regeln für automatisches Herunterladen ändern ... - + RSS Smart Episode Filter RSS Smart-Folgenfilter - + Download REPACK/PROPER episodes Lade REPACK/PROPER Episoden herunter - + Filters: Filter: - + Web User Interface (Remote control) Webuser-Interface (Fernbedienung) - + IP address: IP-Adresse: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - IP-Adresse an die das WebUI gebunden wird. + IP-Adresse an die das Webinterface gebunden wird. Eingabe einer IPv4 oder IPv6-Adresse. Es kann "0.0.0.0" für jede IPv4-Adresse, "::" für jede IPv6-Adresse, oder "*" für IPv4 und IPv6 eingegeben werden. - + Ban client after consecutive failures: Programm nach aufeinanderfolgenden Fehlern sperren: - + Never Nie - + ban for: Bannen für: - + Session timeout: Sitzungs-Auszeit: - + Disabled Deaktiviert - Enable cookie Secure flag (requires HTTPS) - Aktiviere Cookie Sicheres Flag (erfordert HTTPS) + Aktiviere Cookie Sicheres Flag (erfordert HTTPS) - + Server domains: Server Domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6187,448 +6473,501 @@ Use ';' to split multiple entries. Can use wildcard '*'.Liste der erlaubten HTTP-Host Header-Felder. Um sich vor DNS-Rebinding-Attacken zu schützen, sollten hier Domain-Namen eingetragen weden, -die vom WebUI-Server verwendet werden. +die vom Webinterface-Server verwendet werden. Verwende ';' um mehrere Einträge zu trennen. Platzhalter '*' kann verwendet werden. - + &Use HTTPS instead of HTTP HTTPS anstatt von HTTP ben&utzen - + Bypass authentication for clients on localhost Authentifizierung für Clients auf dem Localhost umgehen - + Bypass authentication for clients in whitelisted IP subnets Authentifizierung für Clients auf der Liste der erlaubten IP-Subnets umgehen - + IP subnet whitelist... Erlaubte IP-Subnets ... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Geben Sie Reverse-Proxy-IPs an (oder Subnetze, z.B. 0.0.0.0/24), um weitergeleitete Client-Adressen zu verwenden (Attribut X-Forwarded-For), verwenden Sie ';' um mehrere Einträge aufzuteilen. - + Upda&te my dynamic domain name Dynamischen Domainnamen akt&ualisieren - + Minimize qBittorrent to notification area qBittorrent in den Benachrichtigungsbereich minimieren - + + Search + Suche + + + + WebUI + + + + Interface Interface - + Language: Sprache: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Tray Icon Stil: - - + + Normal Normal - + File association Dateizuordnung - + Use qBittorrent for .torrent files qBittorrent für .torrent Dateien verwenden - + Use qBittorrent for magnet links qBittorrent für Magnet Links verwenden - + Check for program updates Auf Programm-Updates prüfen - + Power Management Energieverwaltung - + + &Log Files + + + + Save path: Speicherpfad: - + Backup the log file after: Sichere die Protokolldatei nach: - + Delete backup logs older than: Lösche Sicherungen älter als: - + + Show external IP in status bar + + + + When adding a torrent Sobald ein Torrent hinzugefügt wird - + Bring torrent dialog to the front Aktiviere das Dialogfenster - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled .torrent-Dateien auch löschen wenn das Hinzufügen abgebrochen wurde - + Also when addition is cancelled Auch wenn das Hinzufügen abgebrochen wurde - + Warning! Data loss possible! Achtung! Datenverlust ist möglich! - + Saving Management Speicherverwaltung - + Default Torrent Management Mode: Vorgabe-Modus für das Torrent-Management: - + Manual Manuell - + Automatic Automatisch - + When Torrent Category changed: Wenn die Torrent-Kategorie geändert wird: - + Relocate torrent Torrent verschieben - + Switch torrent to Manual Mode Wechsle den Torrent in den manuellen Modus - - + + Relocate affected torrents Betroffene Torrents verschieben - - + + Switch affected torrents to Manual Mode Wechsle betroffene Torrents in den manuellen Modus - + Use Subcategories Unterkategorien verwenden - + Default Save Path: Standardspeicherpfad: - + Copy .torrent files to: .torrent Dateien kopieren nach: - + Show &qBittorrent in notification area &qBittorrent im Benachrichtigungsbereich anzeigen - &Log file - &Logdatei + &Logdatei - + Display &torrent content and some options Zeige Inhalt des &Torrent und einige Optionen - + De&lete .torrent files afterwards .torrent-Dateien ansch&ließend löschen - + Copy .torrent files for finished downloads to: Kopiere die .torrent Dateien von beendeten Downloads nach: - + Pre-allocate disk space for all files Allen Dateien Speicherplatz im Vorhinein zuweisen - + Use custom UI Theme Angepasstes UI-Thema verwenden - + UI Theme file: UI-Thema-Datei - + Changing Interface settings requires application restart Änderungen an den Anzeigeeinstellungen erfordern einen Programmneustart - + Shows a confirmation dialog upon torrent deletion Zeigt ein Bestätigungsfenster beim Löschen von Torrents - - + + Preview file, otherwise open destination folder Dateivorschau, sonst den Zielordner öffnen - - Show torrent options - Zeige die Torrent-Optionen + Zeige die Torrent-Optionen - + Shows a confirmation dialog when exiting with active torrents Zeigt ein Bestätigungsfenster wenn mit aktiven Torrents beendet wird - + When minimizing, the main window is closed and must be reopened from the systray icon Beim Minimieren wird das Hauptfenster geschlossen und muss über das Symbol in der Taskleiste wieder geöffnet werden - + The systray icon will still be visible when closing the main window Das Symbol in der Taskleiste bleibt sichtbar auch wenn das Hauptfenster geschlossen wird - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window qBittorrent in den Benachrichtigungsbereich schließen - + Monochrome (for dark theme) Monochrom (für das 'Dark Theme') - + Monochrome (for light theme) Monochrom (für das 'Light Theme') - + Inhibit system sleep when torrents are downloading Schlafmodus verhindern solange Torrents noch herunterladen - + Inhibit system sleep when torrents are seeding Schlafmodus verhindern solange Torrents noch uploaden - + Creates an additional log file after the log file reaches the specified file size Erstellt eine zusätzliche Log-Datei nachdem die angegebene Größe erreicht wurde - + days Delete backup logs older than 10 days Tage - + months Delete backup logs older than 10 months Monate - + years Delete backup logs older than 10 years Jahre - + Log performance warnings Leistungswarnungen protokollieren - The torrent will be added to download list in a paused state - Der Torrent wird der Download-Liste als pausiert hinzugefügt + Der Torrent wird der Download-Liste als pausiert hinzugefügt - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Download nicht automatisch starten - + Whether the .torrent file should be deleted after adding it Ob die .torrent-Datei nach dem Hinzufügen gelöscht werden soll - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Vor dem Starten des Downloads die volle Dateigröße auf der Festplatte zuweisen, um die Fragmentierung zu minimieren. Nur nützlich für Festplatten (nicht bei SSD). - + Append .!qB extension to incomplete files .!qB Erweiterung für unvollständige Dateien verwenden - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Wenn ein Torrent heruntergeladen wird, biete jede darin enthaltene .torrent-Datei zum Hinzufügen an - + Enable recursive download dialog Rekursiven Download-Dialog erlauben - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatik: diverse Torrent-Eigenschaften (z.B. der Speicherpfad) werden durch die gewählte Kategorie vorgegeben Manuell: diverse Torrent-Eigenschaften (z.B. der Speicherpfad) müssen händisch eingegeben werden - + When Default Save/Incomplete Path changed: Wenn sich der Standardspeicherpfad/unvollständiger Pfad ändert: - + When Category Save Path changed: Wenn sich der Speicherpfad der Kategorie ändert: - + Use Category paths in Manual Mode Kategoriepfade im manuellen Modus verwenden - + Resolve relative Save Path against appropriate Category path instead of Default one Auflösen des relativen Speicherpfads gegen den entsprechenden Kategoriepfad anstelle des Standardpfads. - + Use icons from system theme Icons des System Themes nutzen - + Window state on start up: Zustand des Fensters nach dem Start: - + qBittorrent window state on start up Zustand des qBittorrent Fensters nach dem Start - + Torrent stop condition: Bedingung für das Anhalten des Torrents: - - + + None Kein - - + + Metadata received Metadaten erhalten - - + + Files checked Dateien überprüft - + Ask for merging trackers when torrent is being added manually Bei manuell hinzugefügtem Torrent um das Zusammenführen der Tracker fragen. - + Use another path for incomplete torrents: Einen anderen Pfad für unvollständige Torrents verwenden: - + Automatically add torrents from: .torrent-Dateien aus diesem Verzeichnis automatisch hinzufügen: - + Excluded file names Ausgeschlossene Dateinamen - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6657,841 +6996,914 @@ readme.txt: filtert den genauen Dateinamen. readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt', aber nicht 'readme10.txt'. - + Receiver Empfänger - + To: To receiver Bis: - + SMTP server: SMTP-Server: - + Sender Sender - + From: From sender Von: - + This server requires a secure connection (SSL) Dieser Server benötigt eine sichere Verbindung (SSL) - - + + Authentication Authentifizierung - - - - + + + + Username: Benutzername: - - - - + + + + Password: Passwort: - + Run external program Externes Programm ausführen - Run on torrent added - Ausführen wenn Torrent hinzugefügt + Ausführen wenn Torrent hinzugefügt - Run on torrent finished - Ausführen wenn Torrent fertiggestellt + Ausführen wenn Torrent fertiggestellt - + Show console window Konsolenfenster anzeigen - + TCP and μTP TCP und μTP - + Listening Port Port auf dem gelauscht wird - + Port used for incoming connections: Port für eingehende Verbindungen: - + Set to 0 to let your system pick an unused port Wert auf 0 setzen, damit das System einen unbenutzten Port wählen kann. - + Random Zufällig - + Use UPnP / NAT-PMP port forwarding from my router UPnP / NAT-PMP Portweiterleitung des Routers verwenden - + Connections Limits Verbindungsbeschränkungen - + Maximum number of connections per torrent: Maximale Anzahl der Verbindungen pro Torrent: - + Global maximum number of connections: Maximale globale Anzahl der Verbindungen: - + Maximum number of upload slots per torrent: Maximale Anzahl Upload-Slots pro Torrent: - + Global maximum number of upload slots: Maximale globale Anzahl von Upload-Slots: - + Proxy Server Proxy-Server - + Type: Typ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Andererseits wird der Proxyserver nur für Tracker-Verbindungen verwendet - + Use proxy for peer connections Proxy für Peer-Verbindungen verwenden - + A&uthentication A&uthentifizierung - + Info: The password is saved unencrypted Info: Das Passwort wird unverschlüsselt gespeichert! - + Filter path (.dat, .p2p, .p2b): Filterpfad (.dat, .p2p, .p2b): - + Reload the filter Filter neu laden - + Manually banned IP addresses... Manuell gebannte IP-Adressen... - + Apply to trackers Zu Trackern hinzufügen - + Global Rate Limits Globale Verhältnisbegrenzung - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Hochladen: - - + + Download: Herunterladen: - + Alternative Rate Limits Alternative Verhältnisbegrenzungen - + Start time Startzeit - + End time Endzeit - + When: Wann: - + Every day Jeden Tag - + Weekdays Wochentage - + Weekends Wochenenden - + Rate Limits Settings Einstellungen für Verhältnisbegrenzungen - + Apply rate limit to peers on LAN Verhältnisbegrenzung auch für Peers im LAN verwenden - + Apply rate limit to transport overhead Verhältnisbegrenzung auf Transport Overhead anwenden - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Verhältnisbegrenzung für das µTP-Protokoll verwenden - + Privacy Privatsphäre - + Enable DHT (decentralized network) to find more peers DHT (dezentralisiertes Netzwerk) aktivieren, um mehr Peers zu finden - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Peers mit kompatiblen Bittorrent-Programmen austauschen (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Peer Exchange (PeX) aktivieren, um mehr Peers zu finden - + Look for peers on your local network Nach Peers im lokalen Netzwerk suchen - + Enable Local Peer Discovery to find more peers Lokale Peer Auffindung (LPD) aktivieren um mehr Peers zu finden - + Encryption mode: Verschlüsselungsmodus: - + Require encryption Verschlüsselung verlangen - + Disable encryption Verschlüsselung deaktivieren - + Enable when using a proxy or a VPN connection Aktiviere wenn ein Proxy oder ein VPN in Benutzung ist - + Enable anonymous mode Anonymen Modus aktivieren - + Maximum active downloads: Maximal aktive Downloads: - + Maximum active uploads: Maximal aktive Uploads: - + Maximum active torrents: Maximal aktive Torrents: - + Do not count slow torrents in these limits Bei diesen Begrenzungen langsame Torrents nicht mit einbeziehen - + Upload rate threshold: UL-Schwellenwert: - + Download rate threshold: DL-Schwellenwert: - - - + + + + sec seconds Sek. - + Torrent inactivity timer: Timer für Torrent-Inaktivität: - + then dann - + Use UPnP / NAT-PMP to forward the port from my router UPnP / NAT-PMP um den Port des Routers weiterzuleiten - + Certificate: Zertifikat: - + Key: Schlüssel: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informationen über Zertifikate</a> - + Change current password Aktuelles Passwort ändern - Use alternative Web UI - Verwende alternatives Webinterface + Verwende alternatives Webinterface - + Files location: Speicherort der Dateien: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Sicherheit - + Enable clickjacking protection Clickjacking-Schutz aktivieren - + Enable Cross-Site Request Forgery (CSRF) protection CSRF-Schutz aktivieren (Cross-Site Request Forgery) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Host-Header Überprüfung einschalten - + Add custom HTTP headers Benutzerdefinierte HTTP-Header hinzufügen - + Header: value pairs, one per line Header: Wertepaare, eines pro Zeile - + Enable reverse proxy support Aktivieren der Reverse-Proxy-Unterstützung - + Trusted proxies list: Liste der vertrauenswürdigen Proxys: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Dienst: - + Register Registrieren - + Domain name: Domainname: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Mit dem Aktivieren dieser Optionen können die .torrent-Dateien <strong>unwiederbringlich verloren gehen!</strong> - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Wenn die 2. Möglichkeit aktiviert wird (&ldquo;Auch wenn das Hinzufügen abgebrochen wurde&rdquo;) wird die .torrent-Datei <strong>unwiederbringlich gelöscht</strong> selbst wenn &ldquo;<strong>Abbrechen</strong>&rdquo; im &ldquo;Torrent hinzufügen&rdquo;-Menü gedrückt wird. - + Select qBittorrent UI Theme file Wähle qBittorrent UI-Thema-Datei - + Choose Alternative UI files location Wähle Dateispeicherort für alternatives UI - + Supported parameters (case sensitive): Unterstützte Parameter (Groß-/Kleinschreibung beachten): - + Minimized Minimiert - + Hidden Versteckt - + Disabled due to failed to detect system tray presence Deaktiviert weil keine Taskleiste erkannt werden kann - + No stop condition is set. Keine Bedingungen für das Anhalten eingestellt. - + Torrent will stop after metadata is received. Der Torrent wird angehalten wenn Metadaten erhalten wurden. - - Torrents that have metadata initially aren't affected. - Torrents, die ursprünglich Metadaten enthalten, sind nicht betroffen. - - - + Torrent will stop after files are initially checked. Der Torrent wird angehalten sobald die Dateien überprüft wurden. - + This will also download metadata if it wasn't there initially. Dadurch werden auch Metadaten heruntergeladen, wenn sie ursprünglich nicht vorhanden waren. - + %N: Torrent name %N: Torrentname - + %L: Category %L: Kategorie - + %F: Content path (same as root path for multifile torrent) %F: Inhaltspfad (gleich wie der Hauptpfad für Mehrdateien-Torrent) - + %R: Root path (first torrent subdirectory path) %R: Hauptpfad (erster Pfad für das Torrent-Unterverzeichnis) - + %D: Save path %D: Speicherpfad - + %C: Number of files %C: Anzahl der Dateien - + %Z: Torrent size (bytes) %Z: Torrentgröße (Byte) - + %T: Current tracker %T: aktueller Tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tipp: Setze Parameter zwischen Anführungszeichen damit Text bei Leerzeichen nicht abgeschnitten wird (z.B. "%N"). - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Keiner) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Ein Torrent wird als langsam eingestuft, wenn die DL- und UL-Rate unterhalb der Zeitgrenze des "Timer für Torrent-Inaktivität" bleiben - + Certificate Zertifikat - + Select certificate Zertifikat wählen - + Private key Privater Schlüssel - + Select private key Privaten Schlüssel wählen - + + WebUI configuration failed. Reason: %1 + Die Konfiguration für das Webinterface ist fehlgeschlagen. Grund: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Ein Verzeichnis zum Beobachten auswählen - + Adding entry failed Hinzufügen des Eintrags fehlgeschlagen - - Location Error - Speicherort-Fehler + + The WebUI username must be at least 3 characters long. + Das Passwort für das Webinterface muss mindestens 3 Zeichen lang sein. - - The alternative Web UI files location cannot be blank. - Der Speicherort des alternativen Webinterface darf nicht leer sein. + + The WebUI password must be at least 6 characters long. + Das Passwort für das Webinterface muss mindestens 6 Zeichen lang sein. + + + + Location Error + Speicherort-Fehler - - + + Choose export directory Export-Verzeichnis wählen - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Wenn diese Optionen aktiviert werden, wird qBittorrent .torrent-Dateien <strong>löschen</strong> nachdem sie (1. Möglichkeit) erfolgreich oder (2. Möglichkeit) nicht in die Download-Warteschlange hinzugefügt wurden. Dies betrifft <strong>nicht nur</strong> Dateien die über das &ldquo;Torrent hinzufügen&rdquo;-Menü sondern auch jene die über die <strong>Dateityp-Zuordnung</strong> geöffnet werden. - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI-Thema-Datei (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Label (getrennt durch Komma) - + %I: Info hash v1 (or '-' if unavailable) %I: Info-Hash v1 (oder '-' wenn nicht verfügbar) - + %J: Info hash v2 (or '-' if unavailable) %J: Info-Hash v2 (oder '-' wenn nicht verfügbar) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent-ID (entweder sha-1 Info-Hash für v1-Torrent oder abgeschnittener sha-256 Info-Hash für v2/Hybrid-Torrent) - - - + + + Choose a save directory Verzeichnis zum Speichern wählen - + + Torrents that have metadata initially will be added as stopped. + Torrents, die anfänglich Metadaten haben, werden als gestoppt hinzugefügt. + + + Choose an IP filter file IP-Filter-Datei wählen - + All supported filters Alle unterstützten Filter - + + The alternative WebUI files location cannot be blank. + Der Speicherort des alternativen Webinterface darf nicht leer sein. + + + Parsing error Fehler beim Analysieren - + Failed to parse the provided IP filter Fehler beim Analysieren der IP-Filter - + Successfully refreshed Erfolgreich aktualisiert - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Der IP-Filter wurde erfolgreich analysiert. Es wurden %1 Regeln angewendet. - + Preferences Einstellungen - + Time Error Zeitfehler - + The start time and the end time can't be the same. Die Startzeit und die Endzeit können nicht gleich sein. - - + + Length Error Längenfehler + + + PeerInfo - - The Web UI username must be at least 3 characters long. - Der Benutzername für das Webinterface muss mindestens 3 Zeichen lang sein. + + Unknown + Unbekannt - - The Web UI password must be at least 6 characters long. - Das Passwort für das Webinterface muss mindestens 6 Zeichen lang sein. - - - - PeerInfo - - - Unknown - Unbekannt - - - + Interested (local) and choked (peer) Interessiert (Lokal) und verstopft (Peer) - + Interested (local) and unchoked (peer) Interessiert (Lokal) und frei verfügbar (Peer) - + Interested (peer) and choked (local) Interessiert (Peer) und verstopft (Lokal) - + Interested (peer) and unchoked (local) Interessiert (Peer) und frei verfügbar (Lokal) - + Not interested (local) and unchoked (peer) Nicht interessiert (Lokal) und frei verfügbar (Peer) - + Not interested (peer) and unchoked (local) Nicht interessiert (Peer) und frei verfügbar (Lokal) - + Optimistic unchoke Optimistische Freigabe - + Peer snubbed Peer abgewiesen - + Incoming connection Eingehende Verbindung - + Peer from DHT Peer von DHT - + Peer from PEX Peer von PEX - + Peer from LSD Peer von LSD - + Encrypted traffic Verschlüsselter Datenverkehr - + Encrypted handshake Verschlüsselter Handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7647,7 +8059,7 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt', aber Peer "%1" wurde manuell gebannt - + N/A N/V @@ -7670,7 +8082,7 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt', aber Liste der hinzuzufügenden Peers (pro Zeile eine IP): - + Format: IPv4:port / [IPv6]:port Format: IPv4:Port / [IPv6]:Port @@ -7711,27 +8123,27 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt', aber PiecesBar - + Files in this piece: Dateien in diesem Teil: - + File in this piece: Datei in diesem Teil: - + File in these pieces: Datei in diesen Teilen: - + Wait until metadata become available to see detailed information Warte auf Metadaten für mehr Informationen - + Hold Shift key for detailed information Drücke die Shift-Taste für genauere Informationen @@ -7744,58 +8156,58 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt', aber Such-Plugins - + Installed search plugins: Installierte Such-Plugins: - + Name Name - + Version Version - + Url URL - - + + Enabled Aktiviert - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Warnung: Achten Sie darauf, die Urheberrechtsgesetze Ihres Landes zu befolgen, wenn Sie von einer dieser Suchmaschinen Torrents herunterladen. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Neue Suchmaschinen-Plugins können hier heruntergeladen werden: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installiere neues Plugin - + Check for updates Auf Aktualisierungen prüfen - + Close Schließen - + Uninstall Deinstallieren @@ -7916,17 +8328,17 @@ Diese Plugins wurden jetzt aber deaktiviert. Plugin-Quelle - + Search plugin source: Such-Plugin Quelle: - + Local file Lokale Datei - + Web link Web-Link @@ -7944,70 +8356,70 @@ Diese Plugins wurden jetzt aber deaktiviert. Power management found suitable D-Bus interface. Interface: %1 - + Das Power Management hat eine geeignete D-Bus-Schnittstelle gefunden. Schnittstelle: %1 Power management error. Did not found suitable D-Bus interface. - + Fehler im Power Management. Es wurde keine geeignete D-Bus-Schnittstelle gefunden. Power management error. Action: %1. Error: %2 - + Fehler im Power Management. Aktion: %1. Fehler: %2 Power management unexpected error. State: %1. Error: %2 - + Unerwarteter Fehler im Power Management. Status: %1. Fehler: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Die folgenden Dateien des Torrent '%1' unterstützen eine Vorschau - bitte eine Datei auswählen: - + Preview Vorschau - + Name Name - + Size Größe - + Progress Fortschritt - + Preview impossible Vorschau nicht möglich - + Sorry, we can't preview this file: "%1". Es kann leider keine Vorschau für diese Datei erstellt werden: "%1". - + Resize columns Spaltenbreite ändern - + Resize all non-hidden columns to the size of their contents Ändere alle sichtbaren Spalten in der Breite nach Inhalt @@ -8020,27 +8432,27 @@ Diese Plugins wurden jetzt aber deaktiviert. Private::FileLineEdit - + Path does not exist Pfad existiert nicht - + Path does not point to a directory Pfad zeigt nicht auf ein Verzeichnis - + Path does not point to a file Pfad zeigt nicht auf eine Datei - + Don't have read permission to path Keine Leseberechtigung für den Pfad - + Don't have write permission to path Keine Schreibberechtigung für den Pfad @@ -8081,12 +8493,12 @@ Diese Plugins wurden jetzt aber deaktiviert. PropertiesWidget - + Downloaded: Runtergeladen: - + Availability: Verfügbarkeit: @@ -8101,53 +8513,53 @@ Diese Plugins wurden jetzt aber deaktiviert. Übertragungen - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktiv seit: - + ETA: Fertig in: - + Uploaded: Hochgeladen: - + Seeds: Seeds: - + Download Speed: DL-Geschwindigkeit: - + Upload Speed: UL-Geschwindigkeit: - + Peers: Peers: - + Download Limit: Grenze für Download: - + Upload Limit: Grenze für Upload: - + Wasted: Verworfen: @@ -8157,193 +8569,249 @@ Diese Plugins wurden jetzt aber deaktiviert. Verbindungen: - + Information Informationen - + Info Hash v1: Info-Hash v1: - + Info Hash v2: Info-Hash v2: - + Comment: Kommentar: - + Select All Alle Wählen - + Select None Keine Wählen - + Share Ratio: Shareverhältnis: - + Reannounce In: Erneute Anmeldung in: - + Last Seen Complete: Letzter Seeder (100%) gesehen: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Gesamtgröße: - + Pieces: Teile: - + Created By: Erstellt von: - + Added On: Hinzugefügt am: - + Completed On: Abgeschlossen am: - + Created On: Erstellt am: - + + Private: + + + + Save Path: Speicherpfad: - + Never Niemals - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (%3 fertig) - - + + %1 (%2 this session) %1 (%2 diese Sitzung) - - + + + N/A N/V - + + Yes + Ja + + + + No + Nein + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) '%1' (geseedet seit '%2') - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 gesamt) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 durchschn.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Neuer Webseed + Neuer Webseed - Remove Web seed - Webseed entfernen + Webseed entfernen - Copy Web seed URL - Webseed-URL kopieren + Webseed-URL kopieren - Edit Web seed URL - Webseed-URL editieren + Webseed-URL editieren - + Filter files... Dateien filtern ... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Geschwindigkeits-Grafiken sind deaktiviert - + You can enable it in Advanced Options Das kann in den erweiterten Optionen aktiviert werden - New URL seed New HTTP source - Neuer URL Seed + Neuer URL Seed - New URL seed: - Neuer URL Seed: + Neuer URL Seed: - - This URL seed is already in the list. - Dieser URL Seed befindet sich bereits in der Liste. + Dieser URL Seed befindet sich bereits in der Liste. - + Web seed editing Webseed editieren - + Web seed URL: Webseed-URL: @@ -8362,22 +8830,22 @@ Diese Plugins wurden jetzt aber deaktiviert. Konnte Daten des RSS-AutoDownloader nicht in %1 speichern. Fehler: %2 - + Invalid data format Ungültiges Datenformat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS '%1' wurde durch die Regel '%2' akzeptiert. Versuche den Torrent hinzuzufügen ... - + Failed to read RSS AutoDownloader rules. %1 Konnte die RSS-AutoDownloader Regeln nicht laden. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Konnte Regeln des RSS-AutoDownloader nicht laden. Grund: %1 @@ -8385,22 +8853,22 @@ Diese Plugins wurden jetzt aber deaktiviert. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Konnte RSS-Feed von '%1' nicht herunterladen. Grund: '%2' - + RSS feed at '%1' updated. Added %2 new articles. RSS-Feed von '%1' wurde aktualisiert. %2 neue Einträge wurden hinzugefügt. - + Failed to parse RSS feed at '%1'. Reason: %2 Konnte RSS-Feed von '%1' nicht analysieren. Grund: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Der RSS-Feed von '%1' wurde erfolgreich heruntergeladen und wird nun aufgelöst. @@ -8436,12 +8904,12 @@ Diese Plugins wurden jetzt aber deaktiviert. RSS::Private::Parser - + Invalid RSS feed. Ungültiger RSS-Feed. - + %1 (line: %2, column: %3, offset: %4). %1 (Zeile: %2, Spalte: %3, Offset: %4). @@ -8449,99 +8917,99 @@ Diese Plugins wurden jetzt aber deaktiviert. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Konnte die RSS-Sitzungskonfiguration nicht speichern. Datei: "%1". Fehler: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Konnte Daten der RSS-Sitzung nicht speichern. Datei: "%1". Fehler: "%2" - - + + RSS feed with given URL already exists: %1. Der RSS-Feed mit URL besteht schon: %1. - + Feed doesn't exist: %1. Feed existiert nicht: %1. - + Cannot move root folder. Wurzelverzeichnis kann nicht verschoben werden. - - + + Item doesn't exist: %1. Das existiert nicht: %1. - + Couldn't move folder into itself. Verzeichnis kann nicht in sich selbst verschoben werden. - + Cannot delete root folder. Wurzelverzeichnis kann nicht gelöscht werden. - + Failed to read RSS session data. %1 Konnte die RSS Sitzungsdaten nicht lesen. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Konnte die RSS Sitzungsdaten nicht parsen. Datei: "%1". Fehler: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Konnte die RSS Sitzungsdaten nicht laden. Datei: "%1". Fehler: "Ungültiges Datenformat". - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Konnte RSS-Feed nicht laden. Feed: "%1". Grund: URL ist erforderlich. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Konnte RSS-Feed nicht laden. Feed: "%1". Grund: UID ist ungültig. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Doppelter RSS-Feed gefunden. UID: "%1". Fehler: Die Konfiguration scheint beschädigt zu sein. - + Couldn't load RSS item. Item: "%1". Invalid data format. RSS-Eintrag konnte nicht geladen werden. Eintrag: "%1". Ungültiges Datenformat. - + Corrupted RSS list, not loading it. Fehlerhafte RSS-Liste. Wird daher nicht geladen. - + Incorrect RSS Item path: %1. Falscher RSS-Item-Pfad: %1. - + RSS item with given path already exists: %1. Der RSS-Feed besteht schon: %1. - + Parent folder doesn't exist: %1. Verzeichnis existiert nicht: %1. @@ -8565,8 +9033,8 @@ Diese Plugins wurden jetzt aber deaktiviert. - - + + Mark items read Markiere Einträge als gelesen @@ -8591,132 +9059,132 @@ Diese Plugins wurden jetzt aber deaktiviert. Torrents: (Doppelklicken zum Herunterladen) - - + + Delete Löschen - + Rename... Umbenennen ... - + Rename Umbenennen - - + + Update Aktualisieren - + New subscription... Neues Abonnement ... - - + + Update all feeds Alle Feeds aktualisieren - + Download torrent Lade Torrent - + Open news URL Öffne News-URL - + Copy feed URL Kopiere Feed-URL - + New folder... Neuer Ordner ... - + Edit feed URL... Feed-URL editieren ... - + Edit feed URL Feed-URL editieren - + Please choose a folder name Bitte einen Verzeichnisnamen wählen - + Folder name: Verzeichnisname: - + New folder Neues Verzeichnis - - + + Please type a RSS feed URL Bitte eine RSS-Feed Adresse eingeben - - + + Feed URL: Feed-URL: - + Deletion confirmation Löschbestätigung - + Are you sure you want to delete the selected RSS feeds? Sind Sie sicher, dass Sie die gewählten RSS-Feeds löschen möchten? - + Please choose a new name for this RSS feed Bitte einen neuen Namen für diesen RSS-Feed wählen - + New feed name: Neuer Feed-Name: - + Rename failed Umbenennen fehlgeschlagen - + Date: Datum: - + Feed: - + Feed: - + Author: Autor: @@ -8724,38 +9192,38 @@ Diese Plugins wurden jetzt aber deaktiviert. SearchController - + Python must be installed to use the Search Engine. Python muss installiert sein um die Suchmaschine benützen zu können. - + Unable to create more than %1 concurrent searches. Es können nicht mehr als %1 gleichzeitige Suchen erstellt werden. - - + + Offset is out of range Adressabstand ausserhalb des gültigen Bereichs - + All plugins are already up to date. Alle Plugins sind auf dem neuesten Stand. - + Updating %1 plugins Aktualisiere %1 Plugins - + Updating plugin %1 Aktualisiere Plugin %1 - + Failed to check for plugin updates: %1 Konnte nicht nach Plugin-Updates suchen: %1 @@ -8830,132 +9298,146 @@ Diese Plugins wurden jetzt aber deaktiviert. Größe: - + Name i.e: file name Name - + Size i.e: file size Größe - + Seeders i.e: Number of full sources Seeder - + Leechers i.e: Number of partial sources Leecher - Search engine - Suchmaschine + Suchmaschine - + Filter search results... Dateien filtern ... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Ergebnisse (zeige <i>%1</i> von <i>%2</i>): - + Torrent names only Nur Torrent-Namen - + Everywhere Überall - + Use regular expressions Reguläre Ausdrücke verwenden - + Open download window Das Download-Fenster öffnen - + Download Download - + Open description page Beschreibungsseite öffnen - + Copy Kopieren - + Name Name - + Download link Download-Link - + Description page URL Beschreibungsseiten-URL - + Searching... Suche ... - + Search has finished Suche abgeschlossen - + Search aborted Suche abgebrochen - + An error occurred during search... Während der Suche ist ein Fehler aufgetreten ... - + Search returned no results Suche lieferte keine Ergebnisse - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Spaltensichtbarkeit - + Resize columns Spaltenbreite ändern - + Resize all non-hidden columns to the size of their contents Ändere alle sichtbaren Spalten in der Breite nach Inhalt @@ -8963,104 +9445,104 @@ Diese Plugins wurden jetzt aber deaktiviert. SearchPluginManager - + Unknown search engine plugin file format. Unbekanntes Dateiformat des Suchmaschinen-Plugins. - + Plugin already at version %1, which is greater than %2 Plugin ist bereits Version %1 und damit höher als %2 - + A more recent version of this plugin is already installed. Eine neuere Version dieses Plugins ist bereits installiert. - + Plugin %1 is not supported. Plugin %1 wird nicht unterstützt. - - + + Plugin is not supported. Plugin wird nicht unterstützt. - + Plugin %1 has been successfully updated. Das Plugin %1 wurde erfolgreich aktualisiert. - + All categories Alle Kategorien - + Movies Filme - + TV shows TV-Sendungen - + Music Musik - + Games Spiele - + Anime Anime - + Software Software - + Pictures Bilder - + Books Bücher - + Update server is temporarily unavailable. %1 Update-Server vorübergehend nicht erreichbar. %1 - - + + Failed to download the plugin file. %1 Fehler beim Herunterladen der Plugin-Datei. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" ist nicht mehr aktuell - wird aktualisiert auf Version %2 - + Incorrect update info received for %1 out of %2 plugins. Falsche Update-Information für %1 von %2 Plugins erhalten. - + Search plugin '%1' contains invalid version string ('%2') Das Such-Plugin '%1' enthält ungültige Versions-Zeichenkette ('%2') @@ -9070,114 +9552,153 @@ Diese Plugins wurden jetzt aber deaktiviert. - - - - Search Suche - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Es sind keine Such-Plugins installiert. Wähle den "Such-Plugins ..."-Knopf unten rechts aus um welche zu installieren. - + Search plugins... Such-Plugins ... - + A phrase to search for. Suchphrase. - + Spaces in a search term may be protected by double quotes. Leerzeichen innerhalb von Suchausdrücken in Anführungszeichen setzen. - + Example: Search phrase example Beispiel: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;schnur los&quot;</b>: suche nach <b>schnur los</b> - + All plugins Alle Plugins - + Only enabled Nur aktivierte - + + + Invalid data format. + Ungültiges Datenformat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>schnur los</b>: suche nach <b>schnur</b> und <b>los</b> - + + Refresh + + + + Close tab Registerkarte schließen - + Close all tabs Alle Registerkarten schließen - + Select... Wählen ... - - - + + Search Engine Suchmaschine - + + Please install Python to use the Search Engine. Python bitte installieren um die Suchmaschine benützen zu können. - + Empty search pattern Leere Suchanfrage - + Please type a search pattern first Bitte zuerst eine Suchanfrage eingeben - + + Stop Stopp - Search has finished - Suche abgeschlossen + Suche abgeschlossen - Search has failed - Suche fehlgeschlagen + Suche fehlgeschlagen + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9291,34 +9812,34 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende - + Upload: Hochladen: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Herunterladen: - + Alternative speed limits Alternative Geschwindigkeitsbegrenzung @@ -9510,32 +10031,32 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende Durchschnittliche Zeit in Warteschlange: - + Connected peers: Verbundene Peers: - + All-time share ratio: Gesamtes Shareverhältnis: - + All-time download: Gesamter DL: - + Session waste: Abfall in dieser Sitzung: - + All-time upload: Gesamter UL: - + Total buffer size: Gesamte Buffergröße: @@ -9550,12 +10071,12 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende Eingereihte I/O Aufgaben: - + Write cache overload: Überlast Schreibpuffer: - + Read cache overload: Überlast Lesepuffer: @@ -9574,51 +10095,67 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende StatusBar - + Connection status: Verbindungs-Status: - - + + No direct connections. This may indicate network configuration problems. Keine direkten Verbindungen. Möglicherweise gibt es Probleme mit der Netzwerkkonfiguration. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 Knoten - + qBittorrent needs to be restarted! qBittorrent benötigt einen Neustart! - - - + + + Connection Status: Verbindungs-Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. In den meisten Fällen bedeutet das, dass qBittorrent nicht auf dem angegebenen Port für eingehende Verbindungen lauschen kann. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klicken um zu den alternativen Geschwindigkeitsbegrenzungen zu wechseln - + Click to switch to regular speed limits Klick um zu den regulären Geschwindigkeitsbegrenzungen zu wechseln @@ -9647,14 +10184,22 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende Abgeschlossen (0) - Resumed (0) - Fortgesetzt (0) + Fortgesetzt (0) - Paused (0) - Pausiert (0) + Pausiert (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9716,10 +10261,29 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende Completed (%1) Abgeschlossen (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pausiert (%1) + Pausiert (%1) @@ -9727,14 +10291,12 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende Verschiebe (%1) - Resume torrents - Torrents fortsetzen + Torrents fortsetzen - Pause torrents - Torrents pausieren + Torrents pausieren @@ -9742,9 +10304,8 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende Torrents entfernen - Resumed (%1) - Fortgesetzt (%1) + Fortgesetzt (%1) @@ -9785,17 +10346,17 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende TagFilterModel - + Tags Label - + All Alle - + Untagged Ohne Label @@ -9803,52 +10364,64 @@ Daher wird eine Sicherungsdatei zur Wiederherstellung der Einstellungen verwende TagFilterWidget - + Add tag... Label hinzufügen ... - + Remove tag Label entfernen - + Remove unused tags Unbenutzte Label entfernen - Resume torrents - Torrents fortsetzen + Torrents fortsetzen - Pause torrents - Torrents pausieren + Torrents pausieren - + Remove torrents Torrents entfernen - New Tag - Neues Label + Neues Label + + + + Start torrents + + + + + Stop torrents + - + Tag: Label: - + + Add tag + + + + Invalid tag name Ungültiger Labelname - + Tag name '%1' is invalid Labelname '%1' ist ungültig @@ -9987,32 +10560,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Name - + Progress Fortschritt - + Download Priority Download-Priorität - + Remaining Verbleibend - + Availability Verfügbarkeit - + Total Size Gesamtgröße @@ -10057,102 +10630,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Fehler beim Umbenennen - + Renaming Umbenennen - + New name: Neuer Name: - + Column visibility Spaltensichtbarkeit - + Resize columns Spaltenbreite ändern - + Resize all non-hidden columns to the size of their contents Ändere alle sichtbaren Spalten in der Breite nach Inhalt - + Open Öffnen - + Open containing folder Öffne Verzeichnis - + Rename... Umbenennen ... - + Priority Priorität - - + + Do not download Nicht herunterladen - + Normal Normal - + High Hoch - + Maximum Maximum - + By shown file order Entsprechend angezeigter Dateisortierung - + Normal priority Normale Priorität - + High priority Hohe Priorität - + Maximum priority Höchste Priorität - + Priority by shown file order Priorität nach angezeigter Dateisortierung + + TorrentCreatorController + + + Too many active tasks + Zu viele aktive Aufgaben + + + + Torrent creation is still unfinished. + Torrent-Erstellung ist noch nicht abgeschlossen. + + + + Torrent creation failed. + Torrent-Erstellung gescheitert + + TorrentCreatorDialog @@ -10177,13 +10768,13 @@ Please choose a different name and try again. - + Select file Wähle Datei - + Select folder Wähle Verzeichnis @@ -10208,58 +10799,10 @@ Please choose a different name and try again. Größe der Teile: - + Auto Automatisch - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10306,92 +10849,83 @@ Please choose a different name and try again. Felder - + You can separate tracker tiers / groups with an empty line. Die Trackerebenen / -gruppen können mit leeren Zeilen getrennt werden. - + Web seed URLs: Webseed-URLs: - + Tracker URLs: Tracker-URLs: - + Comments: Kommentare: - + Source: Quelle: - + Progress: Fortschritt: - + Create Torrent Torrent erstellen - - + + Torrent creation failed Torrent-Erstellung gescheitert - + Reason: Path to file/folder is not readable. Grund: Verzeichnis kann nicht gelesen werden. - + Select where to save the new torrent Auswählen wohin der neue Torrent gespeichert werden soll - + Torrent Files (*.torrent) Torrent-Dateien (*.torrent) - - Reason: %1 - Grund: %1 - - - + Add torrent to transfer list failed. - + Das Hinzufügen des Torrent zur Übertragungsliste ist fehlgeschlagen. - + Reason: "%1" - + Grund: „%1“ - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Grund: Die erstellte Torrent-Datei ist ungültig. Sie wird der Downloadliste nicht hinzugefügt. + Hinzufügen vom Torrent fehlgeschlagen - + Torrent creator Torrent-Ersteller - + Torrent created: Torrent-Erstellung: @@ -10399,32 +10933,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Konnte die Überwachungspfad-Konfiguration nicht laden. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Konnte die Überwachungspfad-Konfiguration von %1 nicht parsen. Fehler: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Konte die Überwachungspfad-Konfiguration von %1 nicht laden. Fehler: "Ungültiges Datenformat". - + Couldn't store Watched Folders configuration to %1. Error: %2 Konnte die Konfiguration des Überwachungspfads nicht nach %1 speichern. Fehler: %2 - + Watched folder Path cannot be empty. Überwachungspfad kann nicht leer sein. - + Watched folder Path cannot be relative. Der Pfad zum Überwachungsverzeichnis darf nicht relativ sein. @@ -10432,27 +10966,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Ungültige Magnet URI. URI: %1. Grund: %2 - + Magnet file too big. File: %1 Magnetdatei zu groß. Datei: %1 - + Failed to open magnet file: %1 Fehler beim Öffnen der Magnet-Datei: %1 - + Rejecting failed torrent file: %1 Fehlerhafte Torrent-Datei wird zurückgewiesen: %1 - + Watching folder: "%1" Überwachtes Verzeichnis: "%1" @@ -10460,14 +10994,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Beim Lesen der Datei konnte kein Speicher zugewiesen werden. Datei: "%1". Fehler: "%2" + Beim Lesen der Datei konnte kein Speicher zugewiesen werden. Datei: "%1". Fehler: "%2" - Invalid metadata - Ungültige Metadaten + Ungültige Metadaten @@ -10498,279 +11030,374 @@ Please choose a different name and try again. Einen anderen Pfad für unvollständige Torrents verwenden - + Category: Kategorie: - + + Torrent Share Limits + + + Torrent speed limits - Geschwindigkeitsbegrenzungen für Torrent + Geschwindigkeitsbegrenzungen für Torrent - + Download: Herunterladen: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Damit werden die allgemeinen Begrenzungen nicht überschritten - + Upload: Hochladen: - Torrent share limits - Verhältnis-Begrenzungen für Torrent + Verhältnis-Begrenzungen für Torrent - Use global share limit - Globale Begrenzung für das Verhältnis verwenden + Globale Begrenzung für das Verhältnis verwenden - Set no share limit - Keine Begrenzung für das Verhältnis verwenden + Keine Begrenzung für das Verhältnis verwenden - Set share limit to - Begrenzung für das Verhältnis setzen + Begrenzung für das Verhältnis setzen - ratio - Verhältnis + Verhältnis - total minutes - gesamt Minuten + gesamt Minuten - inactive minutes - inaktive Minuten + inaktive Minuten - + Disable DHT for this torrent DHT für diesen Torrent deaktivieren - + Download in sequential order Der Reihe nach downloaden - + Disable PeX for this torrent PeX für diesen Torrent deaktivieren - + Download first and last pieces first Erste und letzte Teile zuerst laden - + Disable LSD for this torrent LSD für diesen Torrent deaktivieren - + Currently used categories Aktuell verwendete Kategorien - - + + Choose save path Speicherpfad wählen - + Not applicable to private torrents Das ist für private Torrents nicht anwendbar - No share limit method selected - Keine Methode für die Verhältnis-Begrenzung gewählt + Keine Methode für die Verhältnis-Begrenzung gewählt - Please select a limit method first - Bitte zuerst eine Begrenzungsmethode auswählen + Bitte zuerst eine Begrenzungsmethode auswählen - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Torrent-Label + + + + + Default + Standard - - New Tag - Neues Label + + + + Unlimited + Unbegrenzt - - Tag: - Label: + + + + Set to + Einstellen auf - - Invalid tag name - Ungültiger Labelname + + Seeding time: + Seed-Zeit: - - Tag name '%1' is invalid. - Labelname '%1' ist ungültig. + + + + + + + min + minutes + Min. - - Tag exists - Label existiert + + Inactive seeding time: + Inaktive Seed-Zeit: - - Tag name already exists. + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Torrent entfernen + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Super-Seeding für Torrent aktivieren + + + + Ratio: + Verhältnis: + + + + TorrentTagsDialog + + + Torrent Tags + Torrent-Label + + + New Tag + Neues Label + + + + Add tag + + + + + Tag: + Label: + + + + Invalid tag name + Ungültiger Labelname + + + + Tag name '%1' is invalid. + Labelname '%1' ist ungültig. + + + + Tag exists + Label existiert + + + + Tag name already exists. Labelname existiert bereits. TorrentsController - + Error: '%1' is not a valid torrent file. Fehler: '%1' ist keine gültige Torrent-Datei. - + Priority must be an integer Die Priorität muss ganzzahlig sein. - + Priority is not valid Priorität ist nicht gültig - + Torrent's metadata has not yet downloaded Die Metadaten des Torrent sind noch nicht heruntergeladen - + File IDs must be integers Die Datei-ID muss ganzahlig sein - + File ID is not valid Die Datei-ID ist nicht gültig - - - - + + + + Torrent queueing must be enabled Warteschlange für Torrents muss aktiviert sein - - + + Save path cannot be empty Speicherpfad kann nicht leer sein - - + + Cannot create target directory Kann das Zielverzeichnis nicht erstellen - - + + Category cannot be empty Kategorie kann nicht leer sein - + Unable to create category Kategorie konnte nicht erstellt werden - + Unable to edit category Kategorie kann nicht geändert werden - + Unable to export torrent file. Error: %1 Konnte Torrentdatei nicht exportieren. Fehler: '%1' - + Cannot make save path Kann Speicherpfad nicht erstellen - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Ungültiger 'sortieren'-Parameter - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. '%1' ist kein gültiger Dateiindex. - + Index %1 is out of bounds. Index %1 ist ausserhalb der Grenzen. - - + + Cannot write to directory Kann nicht in Verzeichnis schreiben - + WebUI Set location: moving "%1", from "%2" to "%3" - WebUI-Speicherort festlegen: "%1" wird von "%2" nach "%3" verschoben + Webinterface-Speicherort festlegen: "%1" wird von "%2" nach "%3" verschoben - + Incorrect torrent name Ungültiger Torrent-Name - - + + Incorrect category name Ungültiger Kategoriename @@ -10801,257 +11428,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - Arbeitet + Arbeitet - + Disabled - Deaktiviert + Deaktiviert - + Disabled for this torrent - Für diesen Torrent deaktiviert + Für diesen Torrent deaktiviert - + This torrent is private - Dieser Torrent ist privat + Dieser Torrent ist privat - + N/A - + N/V - + Updating... - Aktualisiere ... + Aktualisiere ... - + Not working - Arbeitet nicht + Arbeitet nicht - + Tracker error - + Tracker Fehler - + Unreachable - + Unerreichbar - + Not contacted yet - Noch nicht kontaktiert + Noch nicht kontaktiert - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Ebene + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Ungültiger Status! + + + URL/Announce endpoint + URL/Anmeldung Endpunkt + Tier + Ebene + + Protocol - + Protokoll - + Status - Status + Status - + Peers - Peers + Peers - + Seeds - Seeds + Seeds - + Leeches - Leecher + Leecher - + Times Downloaded - Anzahl Heruntergeladen + Anzahl Heruntergeladen - + Message - Meldung + Meldung - Next announce - + Nächste Anmeldung - Min announce - + Min. Anmeldung - v%1 - + v%1 TrackerListWidget - Working - Arbeitet - - - Disabled - Deaktiviert - - - Disabled for this torrent - Für diesen Torrent deaktiviert - - - + This torrent is private Dieser Torrent ist privat - Updating... - Aktualisiere ... - - - Not working - Arbeitet nicht - - - Not contacted yet - Noch nicht kontaktiert - - - N/A - N/V - - - + Tracker editing Tracker editieren - + Tracker URL: Tracker-URL: - - + + Tracker editing failed Tracker editieren fehlgeschlagen - + The tracker URL entered is invalid. Die eingegebene Tracker-URL ist ungültig. - + The tracker URL already exists. Die Tracker-URL existiert bereits. - + Edit tracker URL... Tracker-URL editieren - + Remove tracker Tracker entfernen - + Copy tracker URL Tracker-URL kopieren - + Force reannounce to selected trackers Erzwinge erneute Anmeldung bei den gewählten Trackern - + Force reannounce to all trackers Erzwinge erneute Anmeldung bei allen Trackern - Tier - Ebene - - - URL - URL - - - Status - Status - - - Seeds - Seeds - - - Times Downloaded - Anzahl Heruntergeladen - - - + Resize columns Spaltenbreite ändern - + Resize all non-hidden columns to the size of their contents Ändere alle sichtbaren Spalten in der Breite nach Inhalt - Peers - Peers - - - + Add trackers... Tracker hinzufügen ... - Leeches - Leecher - - - Message - Meldung - - - + Column visibility Spaltensichtbarkeit @@ -11069,37 +11654,37 @@ Please choose a different name and try again. Liste der hinzuzufügenden Tracker (einer pro Zeile): - + µTorrent compatible list URL: µTorrent kompatible Listen-URL: - + Download trackers list Tracker-Liste herunterladen - + Add Hinzufügen - + Trackers list URL error Fehler bei der URL der Tracker-Liste - + The trackers list URL cannot be empty Die URL der Tracker-Liste darf nicht leer sein - + Download trackers list error Fehler beim Herunterladen der Tracker-Liste - + Error occurred when downloading the trackers list. Reason: "%1" Fehler beim Herunterladen der Tracker-Liste. Grund: "%1" @@ -11107,87 +11692,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Alle (0) - - - Trackerless (0) - Ohne Tracker (0) - - - Error (0) - Fehler (0) - - - Warning (0) - Warnung (0) - - - Trackerless - Ohne Tracker - - - Error (%1) - Fehler (%1) - - - + Warning (%1) Warnung (%1) - + Trackerless (%1) Ohne Tracker (%1) - + Tracker error (%1) - + Tracker Fehler (%1) - + Other error (%1) - + Anderer Fehler (%1) - + Remove tracker - Tracker entfernen + Tracker entfernen + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Torrents fortsetzen + Torrents fortsetzen - Pause torrents - Torrents pausieren + Torrents pausieren - + Remove torrents Torrents entfernen - + Removal confirmation - + Entfernungsbestätigung - + Are you sure you want to remove tracker "%1" from all torrents? - + Soll der Tracker "%1" wirklich von allen Torrents entfernt werden? - + Don't ask me again. - + Nicht erneut nachfragen. - + All (%1) this is for the tracker filter Alle (%1) @@ -11196,7 +11764,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'Modus': ungültiges Argument @@ -11289,9 +11857,8 @@ Please choose a different name and try again. Überprüfe Fortsetzungsdaten - Paused - Angehalten + Angehalten @@ -11316,220 +11883,262 @@ Please choose a different name and try again. Fehlerhaft - + Name i.e: torrent name Name - + Size i.e: torrent size Größe - + Progress % Done Fortschritt - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Seeds - + Peers i.e. partial sources (often untranslated) Peers - + Down Speed i.e: Download speed DL-Geschw. - + Up Speed i.e: Upload speed UL-Geschw. - + Ratio Share ratio Verhältnis - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Fertig in - + Category Kategorie - + Tags Label - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Hinzugefügt am - + Completed On Torrent was completed on 01/01/2010 08:00 Abgeschlossen am - + Tracker Tracker - + Down Limit i.e: Download limit DL-Begrenzung - + Up Limit i.e: Upload limit UL-Begrenzung - + Downloaded Amount of data downloaded (e.g. in MB) Runtergeladen - + Uploaded Amount of data uploaded (e.g. in MB) Hochgeladen - + Session Download Amount of data downloaded since program open (e.g. in MB) DL in dieser Sitzung - + Session Upload Amount of data uploaded since program open (e.g. in MB) UL in dieser Sitzung - + Remaining Amount of data left to download (e.g. in MB) Verbleibend - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktiv seit + + + + Yes + Ja + + + + No + Nein + + Time Active Time (duration) the torrent is active (not paused) - Aktiv seit + Aktiv seit - + Save Path Torrent save path Speicherpfad - + Incomplete Save Path Torrent incomplete save path Unvollständiger Speicherpfad - + Completed Amount of data completed (e.g. in MB) Abgeschlossen - + Ratio Limit Upload share ratio limit Verhältnis Limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Letzter Seeder (100%) gesehen - + Last Activity Time passed since a chunk was downloaded/uploaded Letzte Aktivität - + Total Size i.e. Size including unwanted data Gesamtgröße - + Availability The number of distributed copies of the torrent Verfügbarkeit - + Info Hash v1 i.e: torrent info hash v1 Info-Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info-Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Erneute Anmeldung in + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/V - + %1 ago e.g.: 1h 20m ago vor %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (geseedet seit %2) @@ -11538,334 +12147,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Sichtbarkeit der Spalten - + Recheck confirmation Überprüfe Bestätigung - + Are you sure you want to recheck the selected torrent(s)? Sollen die gewählten Torrents wirklich nochmals überprüft werden? - + Rename Umbenennen - + New name: Neuer Name: - + Choose save path Speicherpfad wählen - Confirm pause - Anhalten bestätigen + Anhalten bestätigen - Would you like to pause all torrents? - Sollen alle Torrents angehalten werden? + Sollen alle Torrents angehalten werden? - Confirm resume - Fortsetzen bestätigen + Fortsetzen bestätigen - Would you like to resume all torrents? - Sollen alle Torrents fortgesetzt werden? + Sollen alle Torrents fortgesetzt werden? - + Unable to preview Vorschau nicht möglich - + The selected torrent "%1" does not contain previewable files Der gewählte Torrent '%1' enthält keine Dateien mit Vorschau. - + Resize columns Spaltenbreite ändern - + Resize all non-hidden columns to the size of their contents Ändere alle sichtbaren Spalten in der Breite nach Inhalt - + Enable automatic torrent management Automatisches Torrent-Management aktivieren - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Soll wirklich das automatische Torrent-Managment für die gewählten Torrents aktiviert werden? Diese könnten verschoben werden. - Add Tags - Label hinzufügen + Label hinzufügen - + Choose folder to save exported .torrent files Verzeichnis auswählen zum Speichern exportierter .torrent-Dateien - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Exportieren der .torrent-Datei fehlgeschlagen. Torrent: "%1". Speicherpfad: "%2". Grund: "%3" - + A file with the same name already exists Eine Datei mit gleichem Namen existiert bereits. - + Export .torrent file error Exportieren der .torrent-Datei fehlgeschlagen - + Remove All Tags Alle Label entfernen - + Remove all tags from selected torrents? Wirklich alle Labels von den ausgewählten Torrents entfernen? - + Comma-separated tags: Labels, mit Komma getrennt: - + Invalid tag Ungültiger Labelname - + Tag name: '%1' is invalid Labelname '%1' ist ungültig - &Resume Resume/start the torrent - Fo&rtsetzen + Fo&rtsetzen - &Pause Pause the torrent - &Pausieren + &Pausieren - Force Resu&me Force Resume/start the torrent - Fortsetzen &manuell erzwingen + Fortsetzen &manuell erzwingen - + Pre&view file... Datei&vorschau ... - + Torrent &options... Torrent-&Optionen ... - + Open destination &folder Zielverzeichnis ö&ffnen - + Move &up i.e. move up in the queue Hina&uf bewegen - + Move &down i.e. Move down in the queue Nach un&ten bewegen - + Move to &top i.e. Move to top of the queue An den Anfan&g - + Move to &bottom i.e. Move to bottom of the queue An das &Ende - + Set loc&ation... Speicher&ort setzen ... - + Force rec&heck Erzwinge neuerlic&he Überprüfung - + Force r&eannounce &Erzwinge erneute Anmeldung - + &Magnet link &Magnet-Link - + Torrent &ID Torrent-&ID - + + &Comment + &Kommentar + + + &Name &Name - + Info &hash v1 Info-&Hash v1 - + Info h&ash v2 Info-H&ash v2 - + Re&name... Umbe&nennen ... - + Edit trac&kers... Trac&ker editieren ... - + E&xport .torrent... .torrent e&xportieren ... - + Categor&y Kate&gorie - + &New... New category... &Neu ... - + &Reset Reset category Zu&rücksetzen - + Ta&gs Ta&gs - + &Add... Add / assign multiple tags... &Hinzufügen ... - + &Remove All Remove all tags Alle entfe&rnen - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Warteschlange - + &Copy &Kopieren - + Exported torrent is not necessarily the same as the imported Der exportierte Torrent ist nicht unbedingt derselbe wie der importierte - + Download in sequential order Der Reihe nach downloaden - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Fehler sind beim Exportieren der .torrent-Dateien aufgetreten. Bitte Ausführungs-Log für Details überprüfen. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Entfe&rnen - + Download first and last pieces first Erste und letzte Teile zuerst laden - + Automatic Torrent Management Automatisches Torrent-Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatischer Modus bedeutet, daß diverse Torrent-Eigenschaften (z.B. der Speicherpfad) durch die gewählte Kategorie vorgegeben werden. - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Neuankündigung kann nicht erzwungen werden, wenn der Torrent pausiert/angehalten/abgeschlossen ist oder geprüft wird + Neuankündigung kann nicht erzwungen werden, wenn der Torrent pausiert/angehalten/abgeschlossen ist oder geprüft wird - + Super seeding mode Super-Seeding-Modus @@ -11910,28 +12543,28 @@ Please choose a different name and try again. Icon-ID - + UI Theme Configuration. Konfiguration UI-Thema. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Die Änderungen am UI-Thema konnten nicht vollständig übernommen werden. Details dazu stehen im Protokoll. - + Couldn't save UI Theme configuration. Reason: %1 Die Konfigurationsdatei des UI-Themas konnte nicht gespeichert werden. Grund: %1 - - + + Couldn't remove icon file. File: %1. Konnte Icon-Datei nicht entfernen. Datei: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Konnte Icon-Datei nicht kopieren. Quelle: %1. Ziel: %2. @@ -11939,7 +12572,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Fehler beim Laden des Anzeige-Themas von Datei: %1 @@ -11970,89 +12608,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - Migrieren der Einstellungen fehlgeschlagen: WebUI-HTTPS, Datei: "%1", Fehler: "%2" + Migrieren der Einstellungen fehlgeschlagen: Webinterface-HTTPS, Datei: "%1", Fehler: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - Migrieren der Einstellungen: WebUI-HTTPS, Daten in Datei exportiert: "%1" + Migrieren der Einstellungen: Webinterface-HTTPS, Daten in Datei exportiert: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Ungültiger Wert in der Konfiguration - es wird stattdessen der Standard-Wert verwendet. Eintrag: "%1". Falscher Wert: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python erkannt, Name der Ausführungsdatei: '%1', Version: %2 - - - Python not detected - Python nicht gefunden - Found Python executable. Name: "%1". Version: "%2" - + Ausführungdatei für Python gefunden. Name: "%1". Version: "%2" Failed to find Python executable. Path: "%1". - + Ausführungdatei für Python nicht gefunden. Pfad: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Konnte Ausführungdatei für `python3` in der Pfad-Umgebungsvariable PATH nicht finden. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Konnte Ausführungdatei für `python` in der Pfad-Umgebungsvariable PATH nicht finden. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Konnte Ausführungdatei für `python` in der Windows-Registry nicht finden. Failed to find Python executable - + Konnte Ausführungdatei für Python nicht finden. Utils::IO - + File open error. File: "%1". Error: "%2" Fehler beim Datei öffnen. Datel: "%1". Fehler: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Die Dateigröße überschreitet das Limit. Datei: "%1". Dateigröße: %2. Größenlimit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Die Dateigröße überschreitet die Grenze für die Datengröße. Datei: "%1". Dateigröße: %2. Bereichsgrenze: %3 - + File read error. File: "%1". Error: "%2" Datei-Lesefehler. Datei: "%1". Fehler: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Größenunterschied beim Lesen. Datei: "%1". Erwartet: %2. Aktuell: %3 @@ -12116,72 +12747,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Unzulässiger Name für den Sitzungscookies wurde angegeben: '%1'. Die Standardeinstellung wird verwendet. - + Unacceptable file type, only regular file is allowed. Dateityp wird nicht akzeptiert - es sind nur gültige Dateitypen erlaubt. - + Symlinks inside alternative UI folder are forbidden. Symbolische Verknüpfungen (Symlinks) innerhalb von Verzeichnissen für alternative UI sind nicht erlaubt. - - Using built-in Web UI. + + Using built-in WebUI. Verwende eingebautes Webinterface. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". Verwende benutzerdefiniertes Webinterface. Ort: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. Die Übersetzung des Webinterface für die gewählte Region (%1) wurde erfolgreich geladen. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). Konnte die Übersetzung des Webinterface für die gewählte Region nicht laden (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - Fehlendes ':' Trennzeichen in benutzerdefiniertem WebUI HTTP-Header: "%1" + Fehlendes ':' Trennzeichen in benutzerdefiniertem Webinterface HTTP-Header: "%1" - + Web server error. %1 Fehler beim Web-Server. %1 - + Web server error. Unknown error. Fehler beim Web-Server. Unbekannter Fehler. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - WebUI: Ursprungs-Header & -Ziel stimmen nicht überein! Quell-IP: '%1'. Ursprungs-Header: '%2'. Ziel-Ursprung: '%3' + Webinterface: Ursprungs-Header & -Ziel stimmen nicht überein! Quell-IP: '%1'. Ursprungs-Header: '%2'. Ziel-Ursprung: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - WebUI: Referenz-Header & -Ziel stimmen nicht überein! Quell-IP: '%1'. Referenz-Header: '%2'. Ziel-Ursprung: '%3' + Webinterface: Referenz-Header & -Ziel stimmen nicht überein! Quell-IP: '%1'. Referenz-Header: '%2'. Ziel-Ursprung: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Webinterface: Ungültiger Host-Header, Ports stimmen nicht überein. Angefragte Quell-IP: '%1'. Server-Port: '%2'. Empfangener Host-Header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Webinterface: Ungültiger Host-Header. Angefragte Quell-IP: '%1'. Empfangener Host-Header: '%2' @@ -12189,143 +12820,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + Anmeldeinformationen sind nicht festgelegt + + + + WebUI: HTTPS setup successful Webinterface: HTTPS-Setup erfolgreich - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP Webinterface: HTTPS-Setup fehlgeschlagen - HTTP wird verwendet - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 Das Webinterface lauscht auf IP: %1, Port %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Webinterface kann nicht an IP: %1, Port %2 gebunden werden. Grund: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Webinterface kann nicht gebunden werden an IP: %1, Port %2. Grund: %3 + + + + fs + + + Unknown error + Unbekannter Fehler misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 Min {1s?} + %1s - + %1m e.g: 10 minutes - %1 Min + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1 T %2 h + %1T %2h - + %1y %2d e.g: 2 years 10 days - %1J %2T + %1J %2T - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1 T %2 h - - - %1y %2d - e.g: 2years 10days - %1J %2T - - - - + + Unknown Unknown (size) Unbekannt - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent wird den Computer jetzt herunterfahren, da alle Downloads vollständig sind. - + < 1m < 1 minute < 1 Min - - %1m - e.g: 10minutes - %1 Min - diff --git a/src/lang/qbittorrent_el.ts b/src/lang/qbittorrent_el.ts index 2cacfd12b841..13260aa2cd96 100644 --- a/src/lang/qbittorrent_el.ts +++ b/src/lang/qbittorrent_el.ts @@ -14,77 +14,77 @@ Σχετικά - + Authors Δημιουργοί - + Current maintainer Τρέχων συντηρητής - + Greece Ελλάδα - - + + Nationality: Εθνικότητα: - - + + E-mail: E-mail: - - + + Name: Όνομα: - + Original author Αρχικός δημιουργός - + France Γαλλία - + Special Thanks Ειδικές Ευχαριστίες - + Translators Μεταφραστές - + License Άδεια - + Software Used Λογισμικό που Χρησιμοποιήθηκε - + qBittorrent was built with the following libraries: Το qBittorrent φτιάχτηκε με τις ακόλουθες βιβλιοθήκες: - + Copy to clipboard - + Αντιγραφή στο πρόχειρο @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Πνευματικά Δικαιώματα %1 2006-2023 Το εγχείρημα qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Πνευματικά Δικαιώματα %1 2006-2024 Το εγχείρημα qBittorrent @@ -166,14 +166,13 @@ Αποθήκευση σε - + Never show again Να μην εμφανιστεί ξανά - Torrent settings - Ρυθμίσεις torrent + Ρυθμίσεις torrent @@ -191,12 +190,12 @@ Έναρξη torrent - + Torrent information Πληροφορίες torrent - + Skip hash check Παράλειψη ελέγχου hash @@ -205,6 +204,11 @@ Use another path for incomplete torrent Χρήση άλλης διαδρομής για ημιτελή torrents + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Συνθήκη διακοπής: - - + + None Κανένα - - + + Metadata received Ληφθέντα μεταδεδομένα - - + + Torrents that have metadata initially will be added as stopped. + Τα torrents που έχουν μεταδεδομένα εξαρχής θα προστεθούν ως σταματημένα. + + + + Files checked Ελεγμένα αρχεία - + Add to top of queue Προσθήκη στην αρχή της ουράς - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Όταν είναι επιλεγμένο, το αρχείο .torrent δεν θα διαγραφεί ανεξάρτητα από τις ρυθμίσεις στη σελίδα "Λήψη" του διαλόγου Επιλογές - + Content layout: Διάταξη περιεχομένου: - + Original Πρωτότυπο - + Create subfolder Δημιουργία υποφακέλου - + Don't create subfolder Να μη δημιουργηθεί υποφάκελος - + Info hash v1: Info hash v1: - + Size: Μέγεθος: - + Comment: Σχόλιο: - + Date: Ημερομηνία: @@ -324,245 +333,182 @@ Απομνημόνευση της τελευταίας διαδρομής αποθήκευσης που χρησιμοποιήθηκε - + Do not delete .torrent file Να μη διαγράφεται το αρχείο .torrent - + Download in sequential order Λήψη σε διαδοχική σειρά - + Download first and last pieces first Λήψη των πρώτων και των τελευταίων κομματιών πρώτα - + Info hash v2: Info hash v2: - + Select All Επιλογή Όλων - + Select None Καμία επιλογή - + Save as .torrent file... Αποθήκευση ως αρχείο .torrent... - + I/O Error Σφάλμα I/O - Invalid torrent - Μη έγκυρο torrent - - - + Not Available This comment is unavailable Μη Διαθέσιμο - + Not Available This date is unavailable Μη Διαθέσιμο - + Not available Μη διαθέσιμο - Invalid magnet link - Μη έγκυρος σύνδεσμος magnet - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Αποτυχία φόρτωσης του torrent: %1. -Σφάλμα: %2 - - - This magnet link was not recognized - Αυτός ο σύνδεσμος magnet δεν αναγνωρίστηκε - - - + Magnet link Σύνδεσμος magnet - + Retrieving metadata... Ανάκτηση μεταδεδομένων… - - + + Choose save path Επιλέξτε διαδρομή αποθήκευσης - Torrent is already present - Το torrent υπάρχει ήδη - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Το torrent '%1' είναι ήδη στην λίστα λήψεων. Οι trackers δεν συγχωνεύτηκαν γιατί είναι ένα ιδιωτικό torrent. - - - Torrent is already queued for processing. - Το torrent βρίσκεται ήδη στην ουρά για επεξεργασία. - - - + No stop condition is set. Δεν έχει οριστεί συνθήκη διακοπής. - + Torrent will stop after metadata is received. Το torrent θα σταματήσει μετά τη λήψη των μεταδεδομένων. - - Torrents that have metadata initially aren't affected. - Τα torrents που αρχικά έχουν μεταδεδομένα δεν επηρεάζονται. - - - + Torrent will stop after files are initially checked. Το torrent θα σταματήσει αφού πρώτα ελεγχθούν τα αρχεία. - + This will also download metadata if it wasn't there initially. Αυτό θα πραγματοποιήσει και λήψη μεταδεδομένων εάν δεν υπήρχαν αρχικά. - - + + N/A Δ/Υ - Magnet link is already queued for processing. - Ο σύνδεσμος magnet βρίσκεται ήδη στην ουρά για επεξεργασία. - - - + %1 (Free space on disk: %2) %1 (Ελεύθερος χώρος στον δίσκο: %2) - + Not available This size is unavailable. Μη διαθέσιμο - + Torrent file (*%1) Αρχείο torrent (*%1) - + Save as torrent file Αποθήκευση ως αρχείο torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Αδυναμία εξαγωγής του αρχείου μεταδεδομένων του torrent '%1'. Αιτία: %2. - + Cannot create v2 torrent until its data is fully downloaded. Δεν είναι δυνατή η δημιουργία v2 torrent μέχρι τα δεδομένα του να έχουν ληφθεί πλήρως. - Cannot download '%1': %2 - Δεν είναι δυνατή η λήψη '%1': %2 - - - + Filter files... Φίλτρο αρχείων... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Το torrent '%1' είναι ήδη στην λίστα λήψεων. Οι trackers δεν συγχωνεύτηκαν γιατί είναι ένα ιδιωτικό torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Το torrent '%1' υπάρχει ήδη στη λίστα λήψεων. Θέλετε να γίνει συγχώνευση των tracker από τη νέα πηγή; - - - + Parsing metadata... Ανάλυση μεταδεδομένων… - + Metadata retrieval complete Η ανάκτηση μεταδεδομένων ολοκληρώθηκε - - Failed to load from URL: %1. -Error: %2 - Η φόρτωση από URL απέτυχε: %1. -Σφάλμα: %2 - - - Download Error - Σφάλμα Λήψης - AddTorrentManager Downloading torrent... Source: "%1" - + Λήψη torrent... Πηγή: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Αποτυχία προσθήκης torrent. Πηγή: "%1". Αιτία: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Εντοπίστηκε μια προσπάθεια προσθήκης διπλού torrent. Πηγή: %1. Υπάρχον torrent: %2. Αποτέλεσμα: %3 - + Merging of trackers is disabled - + Η συγχώνευση trackers είναι απενεργοποιημένη - + Trackers cannot be merged because it is a private torrent - + Δεν είναι δυνατή η συγχώνευση των Trackers επειδή είναι ιδιωτικός torrent - + Trackers are merged from new source - + Οι trackers συγχωνεύονται από νέα πηγή @@ -648,72 +594,77 @@ Error: %2 Παράλειψη ελέγχου hash - - - Choose save path - Επιλέξτε διαδρομή αποθήκευσης + + Torrent share limits + Όρια διαμοιρασμού torrent - - - - - - - Default - Προεπιλογή + + + Choose save path + Επιλέξτε διαδρομή αποθήκευσης + + + - Yes - Ναι + Default + Προεπιλογή + Yes + Ναι + + + + + No Όχι - + Manual Χειροκίνητα - + Automatic Αυτόματα - + Original Πρωτότυπο - + Create subfolder Δημιουργία υποφακέλου - + Don't create subfolder Να μη δημιουργηθεί υποφάκελος - + None Κανένα - + Metadata received Μεταδεδομένα ελήφθησαν - + Files checked Τα αρχεία ελέγχθηκαν @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Επανέλεγχος των torrents μετά την ολοκλήρωση - - + + ms milliseconds ms - + Setting Ρύθμιση - + Value Value set for this setting Τιμή - + (disabled) (απενεργοποιημένο) - + (auto) (αυτόματο) - + + min minutes λεπτά - + All addresses Όλες οι διευθύνσεις - + qBittorrent Section Ενότητα qBittorrent - - + + Open documentation Άνοιγμα τεκμηρίωσης - + All IPv4 addresses Όλες οι διευθύνσεις IPv4 - + All IPv6 addresses Όλες οι διευθύνσεις IPv6 - + libtorrent Section Ενότητα libtorrent - + Fastresume files Αρχεία fastresume - + SQLite database (experimental) Βάση δεδομένων SQLite (πειραματικό) - + Resume data storage type (requires restart) Τύπος αποθήκευσης δεδομένων συνέχισης (απαιτεί επανεκκίνηση) - + Normal Κανονική - + Below normal Κάτω από κανονική - + Medium Μέτρια - + Low Χαμηλή - + Very low Πολύ χαμηλή - - Process memory priority (Windows >= 8 only) - Προτεραιότητα μνήμης διεργασίας (μόνο Windows >=8) - - - + Physical memory (RAM) usage limit Όριο χρήσης φυσικής μνήμης (RAM). - + Asynchronous I/O threads Ασύγχρονα νήματα I/O - + Hashing threads Hashing νημάτων - + File pool size Μέγεθος pool αρχείου - + Outstanding memory when checking torrents Outstanding μνήμης κατά τον έλεγχο των torrents - + Disk cache Cache δίσκου - - - - + + + + s seconds s - + Disk cache expiry interval Μεσοδιάστημα λήξης cache δίσκου - + Disk queue size Μέγεθος ουράς δίσκου: - - + + Enable OS cache Ενεργοποίηση cache ΛΣ - + Coalesce reads & writes Συνένωση αναγνώσεων & εγγραφών - + Use piece extent affinity Χρήση συγγένειας έκτασης κομματιού - + Send upload piece suggestions Στείλτε προτάσεις ανεβάσματος κομματιών - - - - + + + + + 0 (disabled) 0 (απενεργοποιημένο) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Αποθήκευση διαστήματος ανάκτησης δεδομένων [0: απενεργοποιημένο] - + Outgoing ports (Min) [0: disabled] Εξερχόμενες θύρες (ελάχ.) [0: απενεργοποιημένο] - + Outgoing ports (Max) [0: disabled] Εξερχόμενες θύρες (μέγ.) [0: απενεργοποιημένο] - + 0 (permanent lease) 0: (Μόνιμη μίσθωση) - + UPnP lease duration [0: permanent lease] Διάρκεια μίσθωσης UPnP [0: Μόνιμη μίσθωση] - + Stop tracker timeout [0: disabled] Χρονικό όριο διακοπής tracker: [0: ανενεργό] - + Notification timeout [0: infinite, -1: system default] Λήξη χρονικού ορίου ειδοποίησης [0: άπειρο, -1: προεπιλογή συστήματος] - + Maximum outstanding requests to a single peer Μέγιστα εκκρεμή αιτήματα σε μοναδικό peer: - - - - - + + + + + KiB KiB - + (infinite) (άπειρο) - + (system default) (προεπιλογή συστήματος) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Αυτή η επιλογή είναι λιγότερο αποτελεσματική σε Linux - + + Process memory priority + Προτεραιότητα μνήμης διεργασιών + + + Bdecode depth limit Όριο βάθους Bdecode - + Bdecode token limit Όριο token Bdecode - + Default Προεπιλογή - + Memory mapped files Αρχεία αντιστοιχισμένα στη μνήμη - + POSIX-compliant Συμβατό με POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Τύπος IO δίσκου (απαιτείται επανεκκίνηση) - - + + Disable OS cache Απενεργοποίηση cache ΛΣ - + Disk IO read mode Λειτουργία ανάγνωσης IO δίσκου - + Write-through Write-through - + Disk IO write mode Λειτουργία εγγραφής IO δίσκου - + Send buffer watermark Send buffer watermark - + Send buffer low watermark Send buffer low watermark - + Send buffer watermark factor Παράγοντας Send buffer watermark - + Outgoing connections per second Εξερχόμενες συνδέσεις ανά δευτερόλεπτο - - + + 0 (system default) 0 (προεπιλογή συστήματος) - + Socket send buffer size [0: system default] Μέγεθος buffer αποστολής υποδοχής [0: προεπιλογή συστήματος] - + Socket receive buffer size [0: system default] Μέγεθος buffer λήψης υποδοχής [0: προεπιλογή συστήματος] - + Socket backlog size Μέγεθος backlog του socket - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit όριο μεγέθους αρχείου .torrent - + Type of service (ToS) for connections to peers Τύπος υπηρεσίας (ToS) για συνδέσεις με peers - + Prefer TCP Προτίμηση TCP - + Peer proportional (throttles TCP) Ανάλογα με τα peers (ρυθμίζει το TCP) - + Support internationalized domain name (IDN) Υποστήριξη διεθνοποιημένου ονόματος τομέα (IDN) - + Allow multiple connections from the same IP address Να επιτρέπονται πολλαπλές συνδέσεις από την ίδια διεύθυνση IP - + Validate HTTPS tracker certificates Επικύρωση των HTTPS πιστοποιητικών του tracker - + Server-side request forgery (SSRF) mitigation Μείωση Server-Side Request Forgery (SSRF) - + Disallow connection to peers on privileged ports Να απαγορεύεται η σύνδεση των peers σε προνομιακές θύρες - + + It appends the text to the window title to help distinguish qBittorent instances + Προσαρτά το κείμενο στον τίτλο του παραθύρου ώστε να μπορείτε να ξεχωρίσετε τις υποστάσεις του qBittorent + + + + Customize application instance name + Προσαρμογή ονόματος υπόστασης εφαρμογής + + + It controls the internal state update interval which in turn will affect UI updates Ελέγχει το χρονικό διάστημα ενημέρωσης της εσωτερικής κατάστασης το οποίο με τη σειρά του θα επηρεάσει τις ενημερώσεις της διεπαφής χρήστη - + Refresh interval Χρονικό διάστημα ανανέωσης - + Resolve peer host names Επίλυση ονομάτων των host του peer - + IP address reported to trackers (requires restart) Η διεύθυνση IP που εκτίθεται στους trackers (απαιτεί επανεκκίνηση) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Reannounce σε όλους τους trackers όταν αλλάξει η IP ή η θύρα - + Enable icons in menus Ενεργοποίηση εικονιδίων στα μενού - + Enable port forwarding for embedded tracker Ενεργοποίηση port forwarding για ενσωματωμένο tracker - - (Auto detect if empty) + + Enable quarantine for downloaded files + Ενεργοποίηση καραντίνας για ληφθέντα αρχεία + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Ενεργοποίηση του Mark-of-the-Web (MOTW) για τα ληφθέντα αρχεία + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Αυτόματος εντοπισμός εάν είναι κενό) + + + Python executable path (may require restart) + Εκτελέσσιμη διαδρομή Python (ενδέχεται να απαιτείται επανεκκίνηση) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Επιβεβαιώστε την αφαίρεση του tracker από όλα τα torrent + + + Peer turnover disconnect percentage Ποσοστό αποσύνδεσης των κύκλων εργασιών του peer - + Peer turnover threshold percentage Ποσοστό ορίου των κύκλων εργασιών του peer - + Peer turnover disconnect interval Μεσοδιάστημα αποσύνδεσης του κύκλου εργασιών του peer - + Resets to default if empty - + Επαναφέρεται στην προεπιλογή εάν είναι κενό - + DHT bootstrap nodes - + Κόμβοι εκκίνησης DHT - + I2P inbound quantity Εισερχόμενη ποσότητα I2P - + I2P outbound quantity Εξερχόμενη ποσότητα I2P - + I2P inbound length Μήκος εισερχόμενου I2P - + I2P outbound length Μήκος εξερχόμενου I2P - + Display notifications Εμφάνιση ειδοποιήσεων - + Display notifications for added torrents Εμφάνισε ειδοποιήσεις για τα προστιθέμενα torrents - + Download tracker's favicon Λήψη favicon του tracker - + Save path history length Μήκος ιστορικού διαδρομής αποθήκευσης - + Enable speed graphs Ενεργοποίηση γραφημάτων ταχύτητας - + Fixed slots Σταθερά slots - + Upload rate based Βάσει ταχύτητας αποστολής - + Upload slots behavior Συμπεριφορά slots αποστολής - + Round-robin Round-robin - + Fastest upload Γρηγορότερη αποστολή - + Anti-leech Αντι-leech - + Upload choking algorithm Αλγόριθμος choking αποστολής - + Confirm torrent recheck Επιβεβαίωση επανελέγχου torrent - + Confirm removal of all tags Επιβεβαίωση αφαίρεσης όλων των ετικετών - + Always announce to all trackers in a tier Πάντα announce προς όλους τους trackers του tier - + Always announce to all tiers Πάντα ανακοίνωση σε όλα τα tiers - + Any interface i.e. Any network interface Οποιαδήποτε διεπαφή - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP αλγόριθμος μεικτής λειτουργίας - + Resolve peer countries Επίλυση χωρών των peer - + Network interface Διεπαφή δικτύου - + Optional IP address to bind to Προαιρετική διεύθυνση IP για δέσμευση - + Max concurrent HTTP announces Μέγιστες ταυτόχρονες HTTP announces - + Enable embedded tracker Ενεργοποίηση ενσωματωμένου tracker - + Embedded tracker port Θύρα ενσωματωμένου tracker - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - To qBittorrent %1 ξεκίνησε + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Εκτέλεση σε φορητή λειτουργία. Εντοπίστηκε αυτόματα φάκελος προφίλ σε: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Εντοπίστηκε περιττή σήμανση γραμμής εντολών: "%1". Η φορητή λειτουργία υποδηλώνει σχετικό fastresume. - + Using config directory: %1 Γίνεται χρήση του καταλόγου διαμόρφωσης: %1 - + Torrent name: %1 Όνομα torrent: %1 - + Torrent size: %1 Μέγεθος torrent: %1 - + Save path: %1 Διαδρομή αποθήκευσης: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Το torrent λήφθηκε σε %1. - + + Thank you for using qBittorrent. Σας ευχαριστούμε που χρησιμοποιείτε το qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, αποστολή ειδοποίησης μέσω email - + Add torrent failed - + Η προσθήκη torrent απέτυχε - + Couldn't add torrent '%1', reason: %2. - + Δεν ήταν δυνατή η προσθήκη torrent '%1', λόγος: %2. + + + + The WebUI administrator username is: %1 + Το όνομα χρήστη του διαχειριστή WebUI είναι: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Ο κωδικός πρόσβασης διαχειριστή WebUI δεν ορίστηκε. Παρέχεται ένας προσωρινός κωδικός πρόσβασης για αυτήν την περίοδο λειτουργίας: %1 + + + + You should set your own password in program preferences. + Θα πρέπει να ορίσετε τον δικό σας κωδικό πρόσβασης στις ρυθμίσεις. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Το WebUI είναι απενεργοποιημένο! Για να ενεργοποιήσετε το WebUI, επεξεργαστείτε χειροκίνητα το αρχείο ρυθμίσεων. - + Running external program. Torrent: "%1". Command: `%2` Εκτέλεση εξωτερικού προγράμματος. Torrent: "%1". Εντολή: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Απέτυχε η εκτέλεση εξωτερικού προγράμματος. Torrent: "%1". Εντολή: `%2` - + Torrent "%1" has finished downloading Η λήψη του torrent "%1" ολοκληρώθηκε - + WebUI will be started shortly after internal preparations. Please wait... Το WebUI θα ξεκινήσει λίγο μετά τις εσωτερικές προετοιμασίες. Παρακαλώ περιμένετε... - - + + Loading torrents... Φόρτωση torrents... - + E&xit Ε&ξοδος - + I/O Error i.e: Input/Output Error Σφάλμα I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Αιτία: %2 - Error - Σφάλμα - - - Failed to add torrent: %1 - Αποτυχία προσθήκης του torrent: %1 - - - + Torrent added Το torrent προστέθηκε - + '%1' was added. e.g: xxx.avi was added. Το '%1' προστέθηκε. - + Download completed Η λήψη ολοκληρώθηκε - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Η λήψη του '%1' ολοκληρώθηκε. - - - URL download error - Σφάλμα λήψης URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + Το qBittorrent %1 ξεκίνησε. ID διεργασίας: %2 - Couldn't download file at URL '%1', reason: %2. - Αδυναμία λήψης αρχείου από το URL: '%1', αιτία: %2. + + This is a test email. + - Torrent file association - Συσχετισμός αρχείων torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - Το qBittorrent δεν είναι η προεπιλεγμένη εφαρμογή για το άνοιγμα αρχείων torrent ή συνδέσμων Magnet. -Θέλετε να ορίσετε το qBittorrent ως προεπιλεγμένη εφαρμογή για αυτά; + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Η λήψη του '%1' ολοκληρώθηκε. - + Information Πληροφορίες - + To fix the error, you may need to edit the config file manually. - + Για να διορθώσετε το σφάλμα, ίσως χρειαστεί να επεξεργαστείτε το αρχείο ρυθμίσεων με μη αυτόματο τρόπο. - + To control qBittorrent, access the WebUI at: %1 Για τον έλεγχο του qBittorrent, αποκτήστε πρόσβαση στο WebUI στη : %1 - - The Web UI administrator username is: %1 - Το όνομα χρήστη του διαχειριστή Web UI είναι: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Ο κωδικός πρόσβασης του διαχειριστή στο Web UI δεν έχει αλλάξει από τον προεπιλεγμένο: %1 - - - - This is a security risk, please change your password in program preferences. - Αυτό αποτελεί κίνδυνο ασφαλείας, αλλάξτε τον κωδικό πρόσβασής σας στις προτιμήσεις του προγράμματος. - - - Application failed to start. - Η εφαρμογή απέτυχε να ξεκινήσει. - - - + Exit Έξοδος - + Recursive download confirmation - Επιβεβαίωση αναδρομικής λήψης + Επιβεβαίωση αναδρομικής λήψης - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Το torrent '%1' περιέχει αρχεία .torrent, θέλετε να συνεχίσετε με την λήψη τους; + Το torrent '%1' περιέχει αρχεία .torrent, θέλετε να συνεχίσετε με την λήψη τους; - + Never - Ποτέ + Ποτέ - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Αναδρομική λήψη αρχείου .torrent στο torrent. Torrent-πηγή: "%1". Αρχείο: "%2" + Αναδρομική λήψη αρχείου .torrent στο torrent. Torrent-πηγή: "%1". Αρχείο: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Αποτυχία ορισμού ορίου χρήσης φυσικής μνήμης (RAM). Κωδικός σφάλματος: %1. Μήνυμα σφάλματος: "% 2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Απέτυχε να οριστεί ανώτατο όριο χρήσης φυσικής μνήμης (RAM). Ζητούμενο μέγεθος: %1. Ανώτατο όριο συστήματος: %2. Κωδικός σφάλματος: %3. Μήνυμα σφάλματος: "%4" - + qBittorrent termination initiated Ξεκίνησε ο τερματισμός του qBittorrent - + qBittorrent is shutting down... Το qBittorrent τερματίζεται... - + Saving torrent progress... Αποθήκευση προόδου torrent… - + qBittorrent is now ready to exit Το qBittorrent είναι έτοιμο να πραγματοποιήσει έξοδο @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Δεν ήταν δυνατή η δημιουργία καταλόγου '%1'. @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Αποτυχία σύνδεσης στο WebAPI. Αιτία: Η IP έχει αποκλειστεί, IP: %1, όνομα χρήστη: %2 - + Your IP address has been banned after too many failed authentication attempts. Η IP διεύθυνσή σας έχει αποκλειστεί μετά από πάρα πολλές αποτυχημένες προσπάθειες ελέγχου ταυτότητας. - + WebAPI login success. IP: %1 Επιτυχία σύνδεσης στο WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Αποτυχία σύνδεσης στο WebAPI. Αιτία: μη έγκυρα διαπιστευτήρια, αριθμός προσπαθειών: %1, IP: %2, όνομα χρήστη: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? Προτεραιότητα: - + Must Not Contain: Να Μην Περιέχει: - + Episode Filter: Φίλτρο Επεισοδίου: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Εξαγωγή… - + Matches articles based on episode filter. Αντιστοιχεί άρθρα βασισμένα στο φίλτρο επεισοδίου. - + Example: Παράδειγμα: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match θα αντιστοιχίσει τα 2, 5, 8 έως 15, 30 και μετέπειτα επεισόδια της πρώτης σεζόν. - + Episode filter rules: Κανόνες φίλτρου επεισοδίου: - + Season number is a mandatory non-zero value Ο αριθμός της σεζόν είναι υποχρεωτική μή μηδενική τιμή - + Filter must end with semicolon Το φίλτρο πρέπει να τελειώνει με άνω τελεία - + Three range types for episodes are supported: Υποστηρίζονται τρεις τύποι εύρους για επεισόδια: - + Single number: <b>1x25;</b> matches episode 25 of season one Μονός αριθμός: <b>1x25;</b> αντιστοιχεί το επεισόδιο 25 της πρώτης σεζόν - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Κανονικό εύρος: <b>1x25-40;</b> αντιστοιχεί τα επεισόδια 25 έως 40 της πρώτης σεζόν - + Episode number is a mandatory positive value Ο αριθμός επεισοδίου είναι μια υποχρεωτική θετική τιμή. - + Rules Κανόνες - + Rules (legacy) Κανόνες (παλιοί) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Άπειρο εύρος: <b>1x25-;</b> ταιριάζει σε επεισόδια 25 και πάνω της πρώτης σεζόν, και όλα τα επεισόδια από μετέπειτα σεζόν - + Last Match: %1 days ago Τελευταία Αντιστοιχία: πριν από %1 ημέρες - + Last Match: Unknown Τελευταία Αντιστοιχία: Άγνωστο - + New rule name Όνομα νέου κανόνα - + Please type the name of the new download rule. Παρακαλώ πληκτρολογήστε το όνομα του νέου κανόνα λήψης. - - + + Rule name conflict Διένεξη ονόματος κανόνα - - + + A rule with this name already exists, please choose another name. Ένας κανόνας με αυτό το όνομα υπάρχει ήδη, παρακαλώ επιλέξτε ένα άλλο όνομα. - + Are you sure you want to remove the download rule named '%1'? Είστε σίγουροι πως θέλετε να αφαιρέσετε τον κανόνα λήψης με όνομα '%1'; - + Are you sure you want to remove the selected download rules? Είστε βέβαιοι ότι θέλετε να αφαιρέσετε τους επιλεγμένους κανόνες λήψης; - + Rule deletion confirmation Επιβεβαίωση διαγραφής κανόνα - + Invalid action Μη έγκυρη ενέργεια - + The list is empty, there is nothing to export. Η λίστα είναι άδεια, δεν υπάρχει τίποτα για εξαγωγή. - + Export RSS rules Εξαγωγή κανόνων RSS - + I/O Error Σφάλμα I/O - + Failed to create the destination file. Reason: %1 Η δημιουργία του αρχείου προορισμού απέτυχε. Αιτία: %1 - + Import RSS rules Εισαγωγή κανόνων RSS - + Failed to import the selected rules file. Reason: %1 Η εισαγωγή του επιλεγμένου αρχείου κανόνων απέτυχε. Αιτία: %1 - + Add new rule... Προσθήκη νέου κανόνα… - + Delete rule Διαγραφή κανόνα - + Rename rule... Μετονομασία κανόνα… - + Delete selected rules Διαγραφή επιλεγμένων κανόνων - + Clear downloaded episodes... Εκκαθάριση επεισοδίων που έχουν ληφθεί... - + Rule renaming Μετονομασία κανόνα - + Please type the new rule name Παρακαλώ πληκτρολογήστε το νέο όνομα κανόνα - + Clear downloaded episodes Εκκαθάριση επεισοδίων που έχουν ληφθεί - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Είστε βέβαιοι ότι θέλετε να διαγράψετε τη λίστα των επεισοδίων που έχετε κάνει λήψη για τον επιλεγμένο κανόνα; - + Regex mode: use Perl-compatible regular expressions Λειτουργία regex: χρησιμοποιήστε συμβατές-με-Perl κανονικές εκφράσεις - - + + Position %1: %2 Θέση %1: %2 - + Wildcard mode: you can use Λειτουργία wildcard: μπορείτε να χρησιμοποιήσετε - - + + Import error Σφάλμα εισαγωγής - + Failed to read the file. %1 Αποτυχία ανάγνωσης αρχείου. %1 - + ? to match any single character ? για να αντιστοιχηθεί με οποιονδήποτε μονό χαρακτήρα - + * to match zero or more of any characters * για να αντιστοιχηθεί με κανέναν ή περισσότερους από τυχόν χαρακτήρες - + Whitespaces count as AND operators (all words, any order) Τα κενά μετράνε ως τελεστές AND (όλες οι λέξεις, οποιαδήποτε σειρά) - + | is used as OR operator Το | χρησιμοποιείται ως τελεστής OR - + If word order is important use * instead of whitespace. Αν η σειρά των λέξεων παίζει ρόλο χρησιμοποιείστε * αντί για κενό. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Μια έκφραση με ένα κενό %1 όρο (e.g. %2) - + will match all articles. θα αντιστοιχηθεί με όλα τα άρθρα. - + will exclude all articles. θα εξαιρέσει όλα τα άρθρα. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Δεν είναι δυνατή η δημιουργία φακέλου συνέχισης torrent: "%1" - + Cannot parse resume data: invalid format Δεν είναι δυνατή η ανάλυση των δεδομένων συνέχισης: μη έγκυρη μορφή - - + + Cannot parse torrent info: %1 Δεν είναι δυνατή η ανάλυση των πληροφοριών torrent: %1 - + Cannot parse torrent info: invalid format Δεν είναι δυνατή η ανάλυση πληροφοριών torrent: μη έγκυρη μορφή - + + Mismatching info-hash detected in resume data + Εντοπίστηκε αναντιστοιχία hash πληροφοριών στα δεδομένα συνέχισης + + + Couldn't save torrent metadata to '%1'. Error: %2. Δεν ήταν δυνατή η αποθήκευση των μεταδεδομένων του torrent στο '%1'. Σφάλμα: %2 - + Couldn't save torrent resume data to '%1'. Error: %2. Δεν ήταν δυνατή η αποθήκευση των δεδομένων συνέχισης του torrent στο '%1'. Σφάλμα: %2 - + Couldn't load torrents queue: %1 Δεν ήταν δυνατή η φόρτωση της ουράς torrent: %1 - + Cannot parse resume data: %1 Δεν είναι δυνατή η ανάλυση των δεδομένων συνέχισης: %1 - + Resume data is invalid: neither metadata nor info-hash was found Τα δεδομένα συνέχισης δεν είναι έγκυρα: δεν βρέθηκαν μεταδεδομένα ούτε info-hash - + Couldn't save data to '%1'. Error: %2 Δεν ήταν δυνατή η αποθήκευση των δεδομένων στο '%1'. Σφάλμα: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Δεν βρέθηκε. - + Couldn't load resume data of torrent '%1'. Error: %2 Δεν ήταν δυνατή η φόρτωση των δεδομένων συνέχισης του torrent '%1'. Σφάλμα: %2 - - + + Database is corrupted. Η βάση δεδομένων έχει καταστραφεί. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Δεν ήταν δυνατή η ενεργοποίηση της λειτουργίας καταγραφής εγγραφής πριν από την εγγραφή (WAL). Σφάλμα: %1. - + Couldn't obtain query result. Δεν ήταν δυνατή η λήψη του αποτελέσματος του ερωτήματος. - + WAL mode is probably unsupported due to filesystem limitations. Η λειτουργία WAL πιθανώς δεν υποστηρίζεται λόγω περιορισμών του συστήματος αρχείων. - + Couldn't begin transaction. Error: %1 Δεν ήταν δυνατή η έναρξη της συναλλαγής. Σφάλμα: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Δεν ήταν δυνατή η αποθήκευση των μεταδεδομένων του torrent Σφάλμα: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Δεν ήταν δυνατή η αποθήκευση των δεδομένων συνέχισης για το torrent '%1'. Σφάλμα: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Δεν ήταν δυνατή η διαγραφή των δεδομένων συνέχισης του torrent '%1'. Σφάλμα: %2 - + Couldn't store torrents queue positions. Error: %1 Δεν ήταν δυνατή η αποθήκευση των θέσεων των torrents στην ουρά. Σφάλμα: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Υποστήριξη Distributed Hash Table (DHT): %1 - - - - - - - - - + + + + + + + + + ON ΕΝΕΡΓΟ - - - - - - - - - + + + + + + + + + OFF ΑΝΕΝΕΡΓΟ - - + + Local Peer Discovery support: %1 Υποστήριξη Ανακάλυψης Τοπικών Peer: %1 - + Restart is required to toggle Peer Exchange (PeX) support Απαιτείται επανεκκίνηση για εναλλαγή υποστήριξης Peer Exchange (PeX). - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Απέτυχε η συνέχιση του torrent. Torrent: "%1". Αιτία: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Απέτυχε η συνέχιση του torrent: ανιχνεύτηκε ασυνεπές ID torrent. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Εντοπίστηκαν ασυνεπή δεδομένα: λείπει η κατηγορία από το αρχείο διαμόρφωσης. Η κατηγορία θα ανακτηθεί, αλλά οι ρυθμίσεις της θα επανέλθουν στις προεπιλογές. Torrent: "%1". Κατηγορία: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Εντοπίστηκαν ασυνεπή δεδομένα: μη έγκυρη κατηγορία. Torrent: "%1". Κατηγορία: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Εντοπίστηκε αναντιστοιχία μεταξύ των διαδρομών αποθήκευσης της ανακτημένης κατηγορίας και της τρέχουσας διαδρομής αποθήκευσης του torrent. Το Torrent έχει πλέον αλλάξει σε Χειροκίνητη λειτουργία. Torrent: "%1". Κατηγορία: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Εντοπίστηκαν ασυνεπή δεδομένα: Η ετικέτα λείπει από το αρχείο διαμόρφωσης. Η ετικέτα θα ανακτηθεί. Torrent: "%1". Ετικέτα: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Εντοπίστηκαν ασυνεπή δεδομένα: μη έγκυρη ετικέτα. Torrent: "%1". Ετικέτα: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Εντοπίστηκε συμβάν αφύπνισης του συστήματος. Επανάληψη της αναγγελίας σε όλους τους trackers... - + Peer ID: "%1" ID Peer: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Υποστήριξη Ανταλλαγής Peer (PeX): %1 - - + + Anonymous mode: %1 Ανώνυμη λειτουργία: %1 - - + + Encryption support: %1 Υποστήριξη κρυπτογράφησης: %1 - - + + FORCED ΕΞΑΝΑΓΚΑΣΜΕΝΟ - + Could not find GUID of network interface. Interface: "%1" Δεν ήταν δυνατή η εύρεση του GUID της διεπαφής δικτύου. Διεπαφή: "%1" - + Trying to listen on the following list of IP addresses: "%1" Προσπάθεια ακρόασης στην ακόλουθη λίστα διευθύνσεων IP: "%1" - + Torrent reached the share ratio limit. Το torrent έφτασε το όριο αναλογίας διαμοιρασμού. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Το torrent αφαιρέθηκε. + Το torrent αφαιρέθηκε. - - - Removed torrent and deleted its content. - Αφαιρέθηκε το torrent και διαγράφηκε το περιεχόμενό του. + Αφαιρέθηκε το torrent και διαγράφηκε το περιεχόμενό του. - - - Torrent paused. - Έγινε παύση του torrent. + Έγινε παύση του torrent. - - - + Super seeding enabled. Η λειτουργία super seeding ενεργοποιήθηκε. - + Torrent reached the seeding time limit. Το torrent έφτασε το όριο χρόνου seeding. - + Torrent reached the inactive seeding time limit. Το torrent έφτασε το χρονικό όριο του ανενεργού seeding. - + Failed to load torrent. Reason: "%1" Αποτυχία φόρτωσης torrent. Αιτία: "%1." - + I2P error. Message: "%1". + Σφάλμα I2P. Μήνυμα: "%1". + + + + UPnP/NAT-PMP support: ON + Υποστήριξη UPnP/NAT-PMP: ΕΝΕΡΓΗ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Λήψη torrent, παρακαλώ περιμένετε... Πηγή: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Αποτυχία φόρτωσης torrent. Πηγή: "%1". Αιτία: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Εντοπίστηκε μια προσπάθεια προσθήκης ενός διπλού torrent. Η συγχώνευση των trackers είναι απενεργοποιημένη. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Εντοπίστηκε μια προσπάθεια προσθήκης ενός διπλού torrent. Οι trackers δεν μπορούν να συγχωνευθούν επειδή πρόκειται για ιδιωτικό torrent. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Εντοπίστηκε μια προσπάθεια προσθήκης ενός διπλού torrent. Οι trackers συγχωνεύονται από τη νέα πηγή. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Υποστήριξη UPnP/NAT-PMP: ΕΝΕΡΓΗ + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Υποστήριξη UPnP/NAT-PMP: ΑΝΕΝΕΡΓΗ + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Αποτυχία εξαγωγής torrent. Torrent: "%1". Προορισμός: "%2". Αιτία: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Ματαίωση αποθήκευσης των δεδομένων συνέχισης. Αριθμός torrent σε εκκρεμότητα: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Η συγχώνευση trackers είναι απενεργοποιημένη + + + + Trackers cannot be merged because it is a private torrent + Δεν είναι δυνατή η συγχώνευση των Trackers επειδή είναι ιδιωτικός torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Η κατάσταση δικτύου του συστήματος άλλαξε σε %1 + + Trackers are merged from new source + Οι trackers συγχωνεύονται από νέα πηγή - ONLINE - ΣΕ ΣΥΝΔΕΣΗ + + UPnP/NAT-PMP support: OFF + Υποστήριξη UPnP/NAT-PMP: ΑΝΕΝΕΡΓΗ - OFFLINE - ΕΚΤΟΣ ΣΥΝΔΕΣΗΣ + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Αποτυχία εξαγωγής torrent. Torrent: "%1". Προορισμός: "%2". Αιτία: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Η διαμόρφωση δικτύου του %1 άλλαξε, γίνεται ανανέωση δέσμευσης συνεδρίας + + Aborted saving resume data. Number of outstanding torrents: %1 + Ματαίωση αποθήκευσης των δεδομένων συνέχισης. Αριθμός torrent σε εκκρεμότητα: %1 - + The configured network address is invalid. Address: "%1" Η διαμορφωμένη διεύθυνση δικτύου δεν είναι έγκυρη. Διεύθυνση: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Αποτυχία εύρεσης της διαμορφωμένης διεύθυνσης δικτύου για ακρόαση. Διεύθυνση: "%1" - + The configured network interface is invalid. Interface: "%1" Η διαμορφωμένη διεπαφή δικτύου δεν είναι έγκυρη. Διεπαφή: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Απορρίφθηκε μη έγκυρη διεύθυνση IP κατά την εφαρμογή της λίστας των αποκλεισμένων IP διευθύνσεων. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Προστέθηκε tracker στο torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Καταργήθηκε ο tracker από το torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Προστέθηκε το URL seed στο torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Καταργήθηκε το URL seed από το torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Το torrent τέθηκε σε παύση. Ονομα torrent: "%1" + Το torrent τέθηκε σε παύση. Ονομα torrent: "%1" - + Torrent resumed. Torrent: "%1" Το torrent τέθηκε σε συνέχιση. Ονομα torrent: "%1" - + Torrent download finished. Torrent: "%1" Η λήψη του torrent ολοκληρώθηκε. Ονομα torrrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Η μετακίνηση του torrent ακυρώθηκε. Ονομα torrent: "%1". Προέλευση: "%2". Προορισμός: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Απέτυχε η προσθήκη του torrent στην ουρά μετακίνησης torrent. Ονομα Torrent: "%1". Προέλευση: "%2". Προορισμός: "%3". Αιτία: το torrent μετακινείται αυτήν τη στιγμή στον προορισμό - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Απέτυχε η προσθήκη του torrent στην ουρά μετακίνησης torrent. Ονομα Torrent: "%1". Προέλευση: "%2". Προορισμός: "%3". Αιτία: και οι δύο διαδρομές είναι ίδιες - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Μετακίνηση torrent σε ουρά. Torrent: "%1". Προέλευση: "%2". Προορισμός: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Εναρξη μετακίνησης torrent. Ονομα Torrent: "%1". Προορισμός: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Αποτυχία αποθήκευσης της διαμόρφωσης Κατηγοριών. Αρχείο: "%1". Σφάλμα: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Αποτυχία ανάλυσης της διαμόρφωσης Κατηγοριών. Αρχείο: "%1". Σφάλμα: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Αναδρομική λήψη αρχείου .torrent στο torrent. Torrent-πηγή: "%1". Αρχείο: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Απέτυχε η φόρτωση του αρχείου .torrent εντός torrent. Τorrent-πηγή: "%1". Αρχείο: "%2". Σφάλμα: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Επιτυχής ανάλυση του αρχείου φίλτρου IP. Αριθμός κανόνων που εφαρμόστηκαν: %1 - + Failed to parse the IP filter file Αποτυχία ανάλυσης του αρχείου φίλτρου IP - + Restored torrent. Torrent: "%1" Εγινε επαναφορά του torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Προστέθηκε νέο torrrent. Torrrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Το torrent παρουσίασε σφάλμα. Torrent: "%1". Σφάλμα: %2. - - Removed torrent. Torrent: "%1" - Το torrent αφαιρέθηκε. Torrrent: "%1" + Το torrent αφαιρέθηκε. Torrrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Το torrent αφαιρέθηκε και τα αρχεία του διαγράφτηκαν. Torrrent: "%1" + Το torrent αφαιρέθηκε και τα αρχεία του διαγράφτηκαν. Torrrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Λείπουν οι παράμετροι SSL του Torrent. Torrent: "%1". Μήνυμα: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Ειδοποίηση σφάλματος αρχείου. Torrent: "%1". Αρχείο: "%2". Αιτία: %3 - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP: Αποτυχία αντιστοίχισης θυρών. Μήνυμα: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP: Επιτυχία αντιστοίχισης θυρών. Μήνυμα: "%1" - + IP filter this peer was blocked. Reason: IP filter. Φίλτρο IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). φιλτραρισμένη θύρα (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). προνομιακή θύρα (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Η σύνοδος BitTorrent αντιμετώπισε ένα σοβαρό σφάλμα. Λόγος: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Σφάλμα SOCKS5 proxy. Διεύθυνση: %1. Μήνυμα: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 περιορισμοί μικτής λειτουργίας - + Failed to load Categories. %1 Αποτυχία φόρτωσης Κατηγοριών. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Αποτυχία φόρτωσης της διαμόρφωση κατηγοριών. Αρχείο: "%1". Σφάλμα: "Μη έγκυρη μορφή δεδομένων" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Καταργήθηκε το torrent αλλά απέτυχε η διαγραφή του περιεχόμενού του ή/και του partfile του. Torrent: "% 1". Σφάλμα: "% 2" + Καταργήθηκε το torrent αλλά απέτυχε η διαγραφή του περιεχόμενού του ή/και του partfile του. Torrent: "% 1". Σφάλμα: "% 2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. Το %1 είναι απενεργοποιημένο - + %1 is disabled this peer was blocked. Reason: TCP is disabled. Το %1 είναι απενεργοποιημένο - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Η αναζήτηση DNS για το URL seed απέτυχε. Torrent: "%1". URL: "%2". Σφάλμα: "%3" + Η αναζήτηση DNS για το URL seed απέτυχε. Torrent: "%1". URL: "%2". Σφάλμα: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Ελήφθη μήνυμα σφάλματος από URL seed. Torrent: "%1". URL: "%2". Μήνυμα: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Επιτυχής ακρόαση της IP. IP: "%1". Θύρα: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Αποτυχία ακρόασης της IP. IP: "%1". Θύρα: "%2/%3". Αιτία: "%4" - + Detected external IP. IP: "%1" Εντοπίστηκε εξωτερική IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Σφάλμα: Η εσωτερική ουρά ειδοποιήσεων είναι πλήρης και ακυρώθηκαν ειδοποιήσεις, μπορεί να διαπιστώσετε μειωμένες επιδόσεις. Τύπος ακυρωμένων ειδοποιήσεων: "%1". Μήνυμα: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Το torrent μετακινήθηκε με επιτυχία. Torrent: "%1". Προορισμός: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Αποτυχία μετακίνησης torrent. Torrent: "%1". Προέλευση: "%2". Προορισμός: "%3". Αιτία: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Η λειτουργία διακόπηκε - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Αποτυχία δημιουργίας νέου αρχείου torrent. Αιτία: %1. + + Failed to start seeding. + Σφάλμα έναρξης seeding - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Η λειτουργία διακόπηκε + Η λειτουργία διακόπηκε + + Create new torrent file failed. Reason: %1. - Αποτυχία δημιουργίας νέου αρχείου torrent. Αιτία: %1. + Αποτυχία δημιουργίας νέου αρχείου torrent. Αιτία: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Αποτυχία προσθήκης του peer "%1" στο torrent "%2". Αιτία: %3 - + Peer "%1" is added to torrent "%2" Το peer "%1" προστέθηκε στο torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Εντοπίστηκαν μη αναμενόμενα δεδομένα. Torrent: %1. Δεδομένα: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Δεν ήταν δυνατή η εγγραφή στο αρχείο. Αιτία: "%1". Το Torrent είναι πλέον σε λειτουργία "μόνο μεταφόρτωση". - + Download first and last piece first: %1, torrent: '%2' Λήψη πρώτου και τελευταίου κομματιού πρώτα: %1, torrent: '%2' - + On Ενεργό - + Off Ανενεργό - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Απέτυχε η επαναφόρτωση του torrent. Torrent: %1. Αιτία: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Αποτυχία δημιουργίας δεδομένων συνέχισης. Torrent: "%1". Αιτία: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Αποτυχία επαναφοράς torrent. Τα αρχεία πιθανότατα μετακινήθηκαν ή ο χώρος αποθήκευσης δεν είναι προσβάσιμος. Torrent: "%1". Αιτία: "%2" - + Missing metadata Τα μεταδεδομένα λείπουν - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Αποτυχία μετονομασίας αρχείου. Torrent: "%1", αρχείο: "%2", αιτία: "%3" - + Performance alert: %1. More info: %2 Προειδοποίηση απόδοσης: %1. Περισσότερες πληροφορίες: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Η παράμετρος '%1' πρέπει να ακολουθεί τη σύνταξη '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Η παράμετρος '%1' πρέπει να ακολουθεί τη σύνταξη '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Αναμενόταν ακέραιος αριθμός στη μεταβλητή περιβάλλοντος '%1', αλλά ελήφθη '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Η παράμετρος '%1' πρέπει να ακολουθεί τη σύνταξη '%1=%2' + Η παράμετρος '%1' πρέπει να ακολουθεί τη σύνταξη '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Αναμενόταν %1 στη μεταβλητή περιβάλλοντος '%2', αλλά ελήφθη '%3' - - + + %1 must specify a valid port (1 to 65535). Το %1 πρέπει να καθορίσει μια έγκυρη θύρα (1 έως 65535). - + Usage: Χρήση: - + [options] [(<filename> | <url>)...] [επιλογές] [(<filename> | <url>)...] - + Options: Επιλογές: - + Display program version and exit Εμφάνιση έκδοσης προγράμματος και έξοδος - + Display this help message and exit Εμφάνιση αυτού του μηνύματος βοήθειας και έξοδο - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Η παράμετρος '%1' πρέπει να ακολουθεί τη σύνταξη '%1=%2' + + + + Confirm the legal notice + Επιβεβαιώστε τη νομική ειδοποίηση + + + + port θύρα - - Change the Web UI port - Αλλαγή της θύρας του Web UI + + Change the WebUI port + Αλλάξτε τη θύρα WebUI - + Change the torrenting port Αλλαγή της θύρας του torrenting - + Disable splash screen Απενεργοποίηση οθόνης εκκίνησης - + Run in daemon-mode (background) Εκτέλεση σε λειτουργία daemon (παρασκήνιο) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Αποθήκευση αρχείων διαμόρφωσης σε <dir> - - + + name όνομα - + Store configuration files in directories qBittorrent_<name> Αποθήκευση αρχείων διαμόρφωσης σε καταλόγους qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Κάντε hack στα fastresume αρχεία του libtorrent και κάντε τις διαδρομές των αρχείων σχετικές με τον κατάλογο του προφίλ - + files or URLs αρχεία ή URLs - + Download the torrents passed by the user Λήψη των torrents που δόθηκαν από τον χρήστη - + Options when adding new torrents: Επιλογές όταν προστίθενται νέα torrents: - + path διαδρομή - + Torrent save path Διαδρομή αποθήκευσης torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Προσθήκη torrents ως εκκινημένα ή σε παύση + Προσθήκη torrents ως εκκινημένα ή σε παύση - + Skip hash check Παράλειψη ελέγχου hash - + Assign torrents to category. If the category doesn't exist, it will be created. Αναθέστε torrents σε μια κατηγορία. Αν η κατηγορία δεν υπάρχει, θα δημιουργηθεί. - + Download files in sequential order Λήψη αρχείων με διαδοχική σειρά - + Download first and last pieces first Λήψη των πρώτων και των τελευταίων κομματιών πρώτα - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Καθορίστε εάν ο διάλογος «Προσθήκη νέου Torrent» θα ανοίγει όταν προσθέτετε ένα torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Οι τιμές των επιλογών ενδέχεται να παρέχονται από τις μεταβλητές περιβάλλοντος. Για επιλογή με την ονομασία «onoma-parametrou», η μεταβλητή περιβάλλοντος έχει ονομασία «QBT_ONOMA_PARAMETROU» (στα κεφαλαία το «-» αντικαθίσταται με «_»). Για να στείλετε τιμές σήμανσης ορίστε την μεταβλητή σε «1» ή «TRUE». Για παράδειγμα, για να απενεργοποιήσετε της οθόνης εκκίνησης: - + Command line parameters take precedence over environment variables Οι παράμετροι της γραμμής εντολών υπερισχύουν των μεταβλητών περιβάλλοντος - + Help Βοήθεια @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Κατηγορίες - + All Όλα - + Uncategorized Μη Κατηγοριοποιημένο @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Συνέχιση torrents + Start torrents + + Stop torrents + + + + Resume torrents + Συνέχιση torrents + + Pause torrents - Παύση torrents + Παύση torrents @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Επεξεργασία... - + Reset Επαναφορά + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 Αποτυχία φόρτωσης του προσαρμοσμένου φύλλου στυλ του θέματος. %1 - + Failed to load custom theme colors. %1 Αποτυχία φόρτωσης προσαρμοσμένων χρωμάτων θέματος. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 Αποτυχία φόρτωσης των προεπιλεγμένων χρωμάτων του θέματος. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Διαγραφή και των αρχείων + Διαγραφή και των αρχείων - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Είστε σίγουροι πως θέλετε να διαγράψετε το '%1' από την λίστα μεταφορών; - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Είστε σίγουροι πως θέλετε να διαγράψετε αυτά τα "%1" torrents από τη λίστα μεταφορών; - + Remove Αφαίρεση @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Λήψη από URLs - + Add torrent links Προσθήκη συνδέσμων torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Ένας σύνδεσμος ανά γραμμή (υποστηρίζονται σύνδεσμοι HTTP, σύνδεσμοι Magnet και info-hashes) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Λήψη - + No URL entered Δεν έχετε εισάγει URL - + Please type at least one URL. Παρακαλώ εισάγετε τουλάχιστον ένα URL. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Σφάλμα Ανάλυσης: Το αρχείο φίλτρου δεν είναι ένα έγκυρο αρχείο PeerGuardian P2B. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Λήψη torrent... Πηγή: "%1" - Trackers cannot be merged because it is a private torrent - + Δεν είναι δυνατή η συγχώνευση των Trackers επειδή είναι ιδιωτικός torrent - + Torrent is already present - Το torrent υπάρχει ήδη + Το torrent υπάρχει ήδη + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Το torrent '%1' υπάρχει ήδη στη λίστα λήψεων. Θέλετε να γίνει συγχώνευση των tracker από τη νέα πηγή; + Το torrent '%1' υπάρχει ήδη στη λίστα λήψεων. Θέλετε να γίνει συγχώνευση των tracker από τη νέα πηγή; GeoIPDatabase - - + + Unsupported database file size. Μη υποστηριζόμενο μέγεθος αρχείου βάσης δεδομένων. - + Metadata error: '%1' entry not found. Σφάλμα μεταδεδομένων: η καταχώρηση '%1' δεν βρέθηκε. - + Metadata error: '%1' entry has invalid type. Σφάλμα μεταδεδομένων: η καταχώρηση '%1' έχει μη έγκυρο τύπο. - + Unsupported database version: %1.%2 Μη υποστηριζόμενη έκδοση βάσης δεδομένων: %1.%2 - + Unsupported IP version: %1 Μη υποστηριζόμενη έκδοση IP: %1 - + Unsupported record size: %1 Μη υποστηριζόμενο μέγεθος εγγραφής: %1 - + Database corrupted: no data section found. Η βάση δεδομένων είναι κατεστραμμένη: δεν βρέθηκε ενότητα δεδομένων. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Το μέγεθος του αιτήματος HTTP υπερβαίνει το όριο, γίνεται κλείσιμο του socket. Όριο: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Κακή μέθοδος αίτησης http, κλείσιμο socket. IP: %1. Μέθοδος: «%2» - + Bad Http request, closing socket. IP: %1 Κακό HTTP αίτημα, γίνεται κλείσιμο του socket. IP: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Περιήγηση... - + Reset Επαναφορά - + Select icon Επιλογή εικονιδίου - + Supported image files Υποστηριζόμενα αρχεία εικόνας + + LegalNotice + + + Legal Notice + Νομική Ειδοποίηση + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + Το qBittorrent είναι ένα πρόγραμμα κοινής χρήσης αρχείων. Όταν εκτελείτε ένα torrent, τα δεδομένα του θα είναι διαθέσιμα σε άλλους μέσω αποστολής. Οποιοδήποτε περιεχόμενο μοιράζεστε είναι αποκλειστικά δική σας ευθύνη. + + + + No further notices will be issued. + Δεν θα υπάρξουν περαιτέρω προειδοποιήσεις. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Εάν έχετε διαβάσει τη νομική ειδοποίηση, μπορείτε να χρησιμοποιήσετε την επιλογή γραμμής εντολών '--επιβεβαίωση νομικής ειδοποίησης' για να αποκρύψετε αυτό το μήνυμα. + + + + Press 'Enter' key to continue... + Πατήστε το πλήκτρο 'Enter' για να συνεχίσετε... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. Η %1 αποκλείστηκε. Αιτία: %2. - + %1 was banned 0.0.0.0 was banned Η %1 αποκλείστηκε @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. Το %1 είναι μια άγνωστη παράμετρος γραμμής εντολών. - - + + %1 must be the single command line parameter. Το %1 πρέπει να είναι ενιαία παράμετρος γραμμής εντολών. - - You cannot use %1: qBittorrent is already running for this user. - Δεν μπορείτε να χρησιμοποιήσετε το %1: το qBittorrent τρέχει ήδη για αυτόν τον χρήστη. - - - + Run application with -h option to read about command line parameters. Εκτελέστε την εφαρμογή με την επιλογή -h για να διαβάσετε σχετικά με τις παραμέτρους της γραμμής εντολών. - + Bad command line Κακή γραμμή εντολών - + Bad command line: Κακή γραμμή εντολών: - + An unrecoverable error occurred. - + Εμφανίστηκε σφάλμα που δεν μπορεί να αποκατασταθεί. - - + + qBittorrent has encountered an unrecoverable error. - + Το qBittorrent αντιμετώπισε ένα μη ανακτήσιμο σφάλμα. - - Legal Notice - Νομική Σημείωση - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - Το qBittorrent είναι ένα πρόγραμμα κοινής χρήσης αρχείων. Όταν εκτελείτε ένα torrent, τα δεδομένα του θα είναι διαθέσιμα σε άλλους μέσω αποστολής. Οποιοδήποτε περιεχόμενο μοιράζεστε είναι αποκλειστικά δική σας ευθύνη. - - - - No further notices will be issued. - Δεν θα υπάρξουν περαιτέρω προειδοποιήσεις. - - - - Press %1 key to accept and continue... - Πατήστε το πλήκτρο %1 για αποδοχή και συνέχεια… - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - Το qBittorrent είναι ένα πρόγραμμα ανταλλαγής αρχείων. Όταν τρέχετε ένα torrent, τα δεδομένα του γίνονται διαθέσιμα σε άλλους μέσω της αποστολής. Οποιοδήποτε περιεχόμενο μοιράζεστε είναι αποκλειστικά δική σας ευθύνη. - -Δεν θα εκδοθούν περαιτέρω ανακοινώσεις. + + You cannot use %1: qBittorrent is already running. + Δεν μπορείτε να χρησιμοποιήσετε το %1: το qBittorrent εκτελείται ήδη. - - Legal notice - Νομική Σημείωση + + Another qBittorrent instance is already running. + Μια άλλη υπόσταση του qBittorrent εκτελείται ήδη. - - Cancel - Άκυρο + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Βρέθηκε απροσδόκητη υπόσταση qBittorrent. Γίνεται έξοδος από αυτήν την υπόσταση. Αναγνωριστικό τρέχουσας διεργασίας: %1. - - I Agree - Συμφωνώ + + Error when daemonizing. Reason: "%1". Error code: %2. + Σφάλμα κατά το daemonizing. Αιτία: "%1". Κωδικός σφάλματος: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. &Επεξεργασία - + &Tools Ε&ργαλεία - + &File &Αρχείο - + &Help &Βοήθεια - + On Downloads &Done Στην Ολοκλήρωση των &Λήψεων - + &View &Προβολή - + &Options... &Επιλογές… - &Resume - &Συνέχιση + &Συνέχιση - + &Remove &Αφαίρεση - + Torrent &Creator &Δημιουργός Torrent - - + + Alternative Speed Limits Εναλλακτικά Όρια Ταχύτητας - + &Top Toolbar Κορυφαία &Γραμμή εργαλείων - + Display Top Toolbar Εμφάνιση Κορυφαίας Γραμμής εργαλείων - + Status &Bar Γραμμή κατάστασης - + Filters Sidebar Πλαϊνή γραμμή φίλτρων - + S&peed in Title Bar &Ταχύτητα στην Γραμμή Τίτλου - + Show Transfer Speed in Title Bar Εμφάνιση Ταχύτητας Μεταφοράς στην Γραμμή Τίτλου - + &RSS Reader Αναγνώστης &RSS - + Search &Engine &Μηχανή Αναζήτησης - + L&ock qBittorrent &Κλείδωμα qBittorrent - + Do&nate! &Δωρεά! - + + Sh&utdown System + + + + &Do nothing Μην κάνεις &τίποτα - + Close Window Κλείσιμο Παραθύρου - R&esume All - Σ&υνέχιση Όλων + Σ&υνέχιση Όλων - + Manage Cookies... Διαχείριση Cookies... - + Manage stored network cookies Διαχείριση αποθηκευμένων cookies δικτύου - + Normal Messages Κανονικά Μηνύματα - + Information Messages Μηνύματα Πληροφοριών - + Warning Messages Μηνύματα Προειδοποίησης - + Critical Messages Κρίσιμα Μηνύματα - + &Log Κ&αταγραφή - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Ορίστε Γενικά Όρια Ταχύτητας... - + Bottom of Queue Τέλος της Ουράς - + Move to the bottom of the queue Μετακίνηση στο τέλος της ουράς - + Top of Queue Αρχή της Ουράς - + Move to the top of the queue Μετακίνηση στην αρχή της ουράς - + Move Down Queue Μετακίνηση Ουράς Κάτω - + Move down in the queue Μετακίνηση προς τα κάτω στην ουρά - + Move Up Queue Μετακίνηση Ουράς Πάνω - + Move up in the queue Μετακίνηση προς τα πάνω στην ουρά - + &Exit qBittorrent Έ&ξοδος qBittorrent - + &Suspend System Α&ναστολή Συστήματος - + &Hibernate System Α&δρανοποίηση Συστήματος - S&hutdown System - &Τερματισμός Συστήματος + &Τερματισμός Συστήματος - + &Statistics &Στατιστικά - + Check for Updates Έλεγχος για ενημερώσεις - + Check for Program Updates Έλεγχος για ενημερώσεις του προγράμματος - + &About &Σχετικά - &Pause - &Παύση + &Παύση - P&ause All - Π&αύση Όλων + Π&αύση Όλων - + &Add Torrent File... Προσθήκη &Αρχείου Torrent… - + Open Άνοιγμα - + E&xit Έ&ξοδος - + Open URL Άνοιγμα URL - + &Documentation &Τεκμηρίωση - + Lock Κλείδωμα - - - + + + Show Εμφάνιση - + Check for program updates Έλεγχος για ενημερώσεις προγράμματος - + Add Torrent &Link... Προσθήκη &Σύνδεσμου Torrent… - + If you like qBittorrent, please donate! Αν σας αρέσει το qBittorrent, παρακαλώ κάντε μια δωρεά! - - + + Execution Log Καταγραφή Εκτέλεσης - + Clear the password Καθαρισμός του κωδικού πρόσβασης - + &Set Password &Ορίστε κωδικό πρόσβασης - + Preferences Προτιμήσεις - + &Clear Password &Καθαρισμός του κωδικού πρόσβασης - + Transfers Μεταφορές - - + + qBittorrent is minimized to tray Το qBittorrent ελαχιστοποιήθηκε στη γραμμή εργασιών - - - + + + This behavior can be changed in the settings. You won't be reminded again. Αυτή η συμπεριφορά μπορεί να αλλάξει στις ρυθμίσεις. Δεν θα σας γίνει υπενθύμιση ξανά. - + Icons Only Μόνο Εικονίδια - + Text Only Μόνο Κείμενο - + Text Alongside Icons Κείμενο Δίπλα στα Εικονίδια - + Text Under Icons Κείμενο Κάτω από τα Εικονίδια - + Follow System Style Ακολούθηση Στυλ Συστήματος - - + + UI lock password Κωδικός κλειδώματος UI - - + + Please type the UI lock password: Παρακαλώ εισάγετε τον κωδικό κλειδώματος του UI: - + Are you sure you want to clear the password? Είστε σίγουροι πως θέλετε να εκκαθαρίσετε τον κωδικό; - + Use regular expressions Χρήση κανονικών εκφράσεων - - Search - Αναζήτηση + + + Search Engine + Μηχανή Αναζήτησης - - Transfers (%1) - Μεταφορές (%1) + + Search has failed + Η αναζήτηση απέτυχε - Recursive download confirmation - Επιβεβαίωση αναδρομικής λήψης + + Search has finished + Η αναζήτηση ολοκληρώθηκε - Never - Ποτέ + + Search + Αναζήτηση + + + + Transfers (%1) + Μεταφορές (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. Το qBittorrent μόλις ενημερώθηκε και χρειάζεται επανεκκίνηση για να ισχύσουν οι αλλαγές. - + qBittorrent is closed to tray Το qBittorrent έκλεισε στη γραμμή εργασιών - + Some files are currently transferring. Μερικά αρχεία μεταφέρονται αυτή τη στιγμή. - + Are you sure you want to quit qBittorrent? Είστε σίγουροι ότι θέλετε να κλείσετε το qBittorrent? - + &No &Όχι - + &Yes &Ναι - + &Always Yes &Πάντα Ναι - + Options saved. Οι επιλογές αποθηκεύτηκαν. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime - Λείπει το Python Runtime + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 - + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Λείπει το Python Runtime + + + qBittorrent Update Available Διαθέσιμη Ενημέρωση του qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Το Python απαιτείται για τη χρήση της μηχανής αναζήτησης αλλά δεν φαίνεται να είναι εγκατεστημένο. Θέλετε να το εγκαταστήσετε τώρα; - + Python is required to use the search engine but it does not seem to be installed. Το Python απαιτείται για τη χρήση της μηχανής αναζήτησης αλλά δεν φαίνεται να είναι εγκατεστημένο. - - + + Old Python Runtime Παλιό Python Runtime - + A new version is available. Μια νέα έκδοση είναι διαθέσιμη - + Do you want to download %1? Θέλετε να κάνετε λήψη του %1; - + Open changelog... Άνοιγμα changelog... - + No updates available. You are already using the latest version. Δεν υπάρχουν διαθέσιμες ενημερώσεις. Χρησιμοποιείτε ήδη την πιο πρόσφατη έκδοση. - + &Check for Updates &Έλεγχος για ενημερώσεις - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Η Python έκδοσή σας (%1) είναι απαρχαιωμένη. Ελάχιστη απαίτηση: %2. Θέλετε να εγκαταστήσετε τώρα μια νεότερη έκδοση; - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Η Python έκδοσή σας (%1) είναι απαρχαιωμένη. Παρακαλώ αναβαθμίστε στην τελευταία έκδοση για να λειτουργήσουν οι μηχανές αναζήτησης. Ελάχιστη απαίτηση: %2. - + + Paused + Σε παύση + + + Checking for Updates... Αναζήτηση για ενημερώσεις… - + Already checking for program updates in the background Γίνεται ήδη έλεγχος για ενημερώσεις προγράμματος στο παρασκήνιο - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Σφάλμα λήψης - Python setup could not be downloaded, reason: %1. Please install it manually. - Η εγκατάσταση του Python δε μπορεί να ληφθεί, αιτία: %1. + Η εγκατάσταση του Python δε μπορεί να ληφθεί, αιτία: %1. Παρακαλούμε εγκαταστήστε το χειροκίνητα. - - + + Invalid password Μη έγκυρος κωδικός πρόσβασης - + Filter torrents... Φίλτρο torrent... - + Filter by: Φίλτρο κατά: - + The password must be at least 3 characters long Ο κωδικός πρόσβασης θα πρέπει να αποτελείται από τουλάχιστον 3 χαρακτήρες - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Το torrent '%1' περιέχει αρχεία .torrent, θέλετε να συνεχίσετε με την λήψη τους; - - - + The password is invalid Ο κωδικός πρόσβασης δεν είναι έγκυρος - + DL speed: %1 e.g: Download speed: 10 KiB/s Ταχύτητα ΛΨ: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Ταχύτητα ΑΠ: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [Λ: %1, Α: %2] qBittorrent %3 - - - + Hide Απόκρυψη - + Exiting qBittorrent Γίνεται έξοδος του qBittorrent - + Open Torrent Files Άνοιγμα Αρχείων torrent - + Torrent Files Αρχεία Torrent @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 Σφάλμα I/O: %1 - + The file size (%1) exceeds the download limit (%2) Το μέγεθος του αρχείου (%1) υπερβαίνει το όριο λήψης (%2) - + Exceeded max redirections (%1) Υπέρβαση μέγιστων ανακατευθύνσεων (%1) - + Redirected to magnet URI Ανακατευθύνθηκε στο URI magnet - + The remote host name was not found (invalid hostname) Το απομακρυσμένο hostname δεν βρέθηκε (μη έγκυρο hostname) - + The operation was canceled Η διαδικασία ακυρώθηκε - + The remote server closed the connection prematurely, before the entire reply was received and processed Ο απομακρυσμένος διακομιστής διέκοψε τη σύνδεση πρόωρα, προτού ληφθεί και υποβληθεί σε επεξεργασία ολόκληρη η απάντηση - + The connection to the remote server timed out Η σύνδεση με τον απομακρυσμένο διακομιστή έληξε - + SSL/TLS handshake failed Αποτυχία SSL/TLS handshake - + The remote server refused the connection Ο απομακρυσμένος διακομιστής απέρριψε τη σύνδεση - + The connection to the proxy server was refused Η σύνδεση στον διακομιστή proxy απορρίφθηκε - + The proxy server closed the connection prematurely Ο διακομιστής proxy διέκοψε την σύνδεση πρόωρα - + The proxy host name was not found Το hostname του proxy δεν βρέθηκε - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Η σύνδεση στον proxy έληξε ή ο proxy δεν αποκρίθηκε εγκαίρως στο αίτημα που στάλθηκε - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Ο proxy απαιτεί έλεγχο ταυτότητας για να τιμήσει το αίτημα αλλά δεν αποδέχθηκε κανένα διαπιστευτήριο που του προσφέρθηκε - + The access to the remote content was denied (401) Η πρόσβαση στο απομακρυσμένο περιεχόμενο δεν έγινε δεκτή (401) - + The operation requested on the remote content is not permitted Η λειτουργία που ζητήθηκε στο απομακρυσμένο περιεχόμενο δεν επιτρέπεται - + The remote content was not found at the server (404) Το απομακρυσμένο περιεχόμενο δεν βρέθηκε στον διακομιστή (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Ο απομακρυσμένος διακομιστής απαιτεί έλεγχο ταυτότητας για να προσφέρει το περιεχόμενο αλλά τα διαπιστευτήρια που του προσφέρθηκαν δεν έγιναν δεκτά - + The Network Access API cannot honor the request because the protocol is not known Το API Πρόσβασης Δικτύου δεν μπορεί να τιμήσει το αίτημα επειδή το πρωτόκολλο δεν είναι γνωστό - + The requested operation is invalid for this protocol Η λειτουργία που ζητήθηκε δεν είναι έγκυρη για αυτό το πρωτόκολλο - + An unknown network-related error was detected Εντοπίστηκε ένα άγνωστο σφάλμα που σχετίζεται με το δίκτυο - + An unknown proxy-related error was detected Εντοπίστηκε ένα άγνωστο σφάλμα που σχετίζεται με τον proxy - + An unknown error related to the remote content was detected Εντοπίστηκε ένα άγνωστο σφάλμα που σχετίζεται με το απομακρυσμένο περιεχόμενο - + A breakdown in protocol was detected Εντοπίστηκε μια κατάρρευση στο πρωτόκολλο - + Unknown error Αγνωστο σφάλμα @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Αγνόηση σφάλματος SSL, URL: "%1", σφάλματα: "%2" @@ -4686,7 +4912,7 @@ Please install it manually. Finland - Φιλανδία + Φινλανδία @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Για προχωρημένους - + Customize UI Theme... Προσαρμογή Θέματος UI... - + Transfer List Λίστα Μεταφοράς - + Confirm when deleting torrents Επιβεβαίωση κατά την διαγραφή των torrent - Shows a confirmation dialog upon pausing/resuming all the torrents - Εμφανίζει ένα παράθυρο επιβεβαίωσης κατά την παύση/επαναφορά όλων των torrents + Εμφανίζει ένα παράθυρο επιβεβαίωσης κατά την παύση/επαναφορά όλων των torrents - Confirm "Pause/Resume all" actions - Επιβεβαίωση των ενεργειών "Παύση/Επαναφορά όλων" + Επιβεβαίωση των ενεργειών "Παύση/Επαναφορά όλων" - + Use alternating row colors In table elements, every other row will have a grey background. Χρήση εναλλασσόμενων χρωμάτων σειράς - + Hide zero and infinity values Απόκρυψη μηδενικών και άπειρων τιμών - + Always Πάντα - Paused torrents only - Μόνο torrents σε παύση + Μόνο torrents σε παύση - + Action on double-click Ενέργεια στο διπλό κλικ - + Downloading torrents: Λήψη torrents: - - Start / Stop Torrent - Εκκίνηση / Παύση Torrent + Εκκίνηση / Παύση Torrent - - + + Open destination folder Άνοιγμα φακέλου προορισμού - - + + No action Καμία ενέργεια - + Completed torrents: Ολοκληρωμένα torrents: - + Auto hide zero status filters Αυτόματη απόκρυψη φίλτρων μηδενικής κατάστασης - + Desktop Επιφάνεια εργασίας - + Start qBittorrent on Windows start up Έναρξη του qBittorrent κατά την εκκίνηση των Windows - + Show splash screen on start up Εμφάνιση οθόνης εκκίνησης κατά την έναρξη - + Confirmation on exit when torrents are active Επιβεβαίωση κατά την έξοδο όταν τα torrents είναι ενεργά - + Confirmation on auto-exit when downloads finish Επιβεβαίωση κατά την αυτόματη έξοδο όταν ολοκληρωθούν οι λήψεις - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Για να ορίσετε το qBittorrent ως προεπιλεγμένο πρόγραμμα για αρχεία .torrent ή/και συνδέσμους Magnet<br/>μπορείτε να αλλάξετε τα<span style=" font-weight:600;">Προεπιλεγμένα προγράμματα</span> από τον <span style=" font-weight:600;">Πίνακα ελέγχου</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Διάταξη περιεχομένου του torrent: - + Original Πρωτότυπο - + Create subfolder Δημιουργία υποφακέλου - + Don't create subfolder Να μη δημιουργηθεί υποφάκελος - + The torrent will be added to the top of the download queue Το torrent θα προστεθεί στην αρχή της ουράς λήψεων - + Add to top of queue The torrent will be added to the top of the download queue Προσθήκη στην αρχή της ουράς - + When duplicate torrent is being added Όταν προστίθεται διπλό torrent - + Merge trackers to existing torrent Συγχώνευση trackers στο υπάρχον torrent - + + Keep unselected files in ".unwanted" folder + Διατήρηση των μη επιλεγμένων αρχείων στον φάκελο «.unwanted». + + + Add... Προσθήκη... - + Options.. Επιλογές… - + Remove Αφαίρεση - + Email notification &upon download completion Ειδοποίηση μέσω emai&l μετά την ολοκλήρωση της λήψης - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Πρωτόκολλο σύνδεσης peer: - + Any Οποιοδήποτε - + I2P (experimental) I2P (πειραματικό) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Αν η &quot;μικτή λειτουργία&quot; είναι ενεργοποιημένη τα I2P torrents επιτρέπονται να λάβουν peers και από άλλες πηγές εκτός του tracker, και να συνδεθούν σε κανονικές IP, παρέχοντας καμία ανωνυμία. Αυτό μπορεί να είναι χρήσιμο όταν ο χρήστης δεν ενδιαφέρεται για την ανωνυμοποίηση του I2P, αλλά εξακολουθεί να θέλει να μπορεί να συνδεθεί σε I2P peers.</p></body></html> + <html><head/><body><p>Αν η &quot;μικτή λειτουργία&quot; είναι ενεργοποιημένη τα I2P torrents επιτρέπονται να λάβουν peers και από άλλες πηγές εκτός του tracker, και να συνδεθούν σε κανονικές IP, παρέχοντας καμία ανωνυμία. Αυτό μπορεί να είναι χρήσιμο όταν ο χρήστης δεν ενδιαφέρεται για την ανωνυμοποίηση του I2P, αλλά εξακολουθεί να θέλει να μπορεί να συνδεθεί σε I2P peers.</p></body></html> - + Mixed mode Μικτή λειτουργία - + Some options are incompatible with the chosen proxy type! Ορισμένες επιλογές δεν είναι συμβατές με τον επιλεγμένο τύπο proxy! - + If checked, hostname lookups are done via the proxy Εάν είναι επιλεγμένο, οι αναζητήσεις hostname γίνονται μέσω του proxy - + Perform hostname lookup via proxy Εκτέλεση αναζήτησης hostname μέσω proxy - + Use proxy for BitTorrent purposes Χρήση διακομιστή μεσολάβησης για σκοπούς BitTorrent - + RSS feeds will use proxy Οι ροές RSS θα χρησιμοποιούν proxy - + Use proxy for RSS purposes Χρήση διακομιστή μεσολάβησης για σκοπούς RSS - + Search engine, software updates or anything else will use proxy Η μηχανή αναζήτησης, οι ενημερώσεις λογισμικού ή οτιδήποτε άλλο θα χρησιμοποιούν proxy - + Use proxy for general purposes Χρήση διακομιστή μεσολάβησης για γενικούς σκοπούς - + IP Fi&ltering Φι&λτράρισμα IP - + Schedule &the use of alternative rate limits Προ&γραμματισμός χρήσης εναλλακτικών ορίων ρυθμού - + From: From start time Από: - + To: To end time Προς: - + Find peers on the DHT network Εύρεση peers στο δίκτυο DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption Να απενεργοποιηθεί η κρυπτογράφηση: Σύνδεση σε peers χωρίς πρωτόκολλο κρυπτογράφησης - + Allow encryption Να επιτρέπεται η κρυπτογράφηση - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Περισσότερες πληροφορίες</a>) - + Maximum active checking torrents: Μέγιστος έλεγχος ενεργών torrents: - + &Torrent Queueing Torrent σε &Ουρά - + When total seeding time reaches Όταν ο συνολικός χρόνος seeding ολοκληρωθεί - + When inactive seeding time reaches Όταν ο χρόνος ανενεργού seeding ολοκληρωθεί - A&utomatically add these trackers to new downloads: - Αυτόμα&τη προσθήκη αυτών των trackers σε νέες λήψεις: + Αυτόμα&τη προσθήκη αυτών των trackers σε νέες λήψεις: - + RSS Reader Αναγνώστης RSS - + Enable fetching RSS feeds Ενεργοποίηση ανάκτησης ροών RSS - + Feeds refresh interval: Μεσοδιάστημα ανανέωσης ροών: - + + Same host request delay: + Καθυστέρηση αιτήματος ίδιου host: + + + Maximum number of articles per feed: Μέγιστος αριθμός άρθρων ανά ροή: - - - + + + min minutes λεπτά - + Seeding Limits Όρια Seeding - Pause torrent - Παύση torrent + Παύση torrent - + Remove torrent Αφαίρεση torrent - + Remove torrent and its files Αφαίρεση torrent και των αρχείων του - + Enable super seeding for torrent Ενεργοποίηση super seeding για το torrent - + When ratio reaches Όταν η αναλογία φτάσει - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Αυτόματος Λήπτης Torrent μέσω RSS - + Enable auto downloading of RSS torrents Ενεργοποίηση αυτόματης λήψης των torrents μέσω RSS - + Edit auto downloading rules... Επεξεργασία των κανόνων αυτόματης λήψης... - + RSS Smart Episode Filter Έξυπνο Φίλτρο Επεισοδίων RSS - + Download REPACK/PROPER episodes Λήψη REPACK/PROPER επεισοδίων - + Filters: Φίλτρα: - + Web User Interface (Remote control) Web UI (Απομακρυσμένος έλεγχος) - + IP address: Διεύθυνση IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv «::» για οποιαδήποτε διεύθυνση IPv6, ή «*» τόσο για IPv4 όσο και για IPv6. - + Ban client after consecutive failures: Αποκλεισμός client μετά από συνεχόμενες αποτυχίες: - + Never Ποτέ - + ban for: αποκλεισμός για: - + Session timeout: Χρονικό όριο λήξης συνεδρίας: - + Disabled Απενεργοποιημένο - Enable cookie Secure flag (requires HTTPS) - Ενεργοποίηση σήμανσης Secure cookie (απαιτεί HTTPS) + Ενεργοποίηση σήμανσης Secure cookie (απαιτεί HTTPS) - + Server domains: Τομείς διακομιστή: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP Χρήση HTTP&S αντί για HTTP - + Bypass authentication for clients on localhost Παράκαμψη ελέγχου ταυτότητας για clients σε localhost - + Bypass authentication for clients in whitelisted IP subnets Παράκαμψη ελέγχου ταυτότητας για clients σε IP subnets της allowlist - + IP subnet whitelist... Allowlist των IP subnet - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Καθορίστε αντίστροφες proxy IPs (ή subnets, π.χ. 0.0.0.0/24) για να χρησιμοποιήσετε τη προωθημένη διεύθυνση του client (X-Forwarded-For header). Χρησιμοποιήστε το ';' για να διαχωρίσετε πολλές εγγραφές. - + Upda&te my dynamic domain name &Ενημέρωση του δυναμικού ονόματος τομέα μου - + Minimize qBittorrent to notification area Ελαχιστοποίηση του qBittorrent στην περιοχή ειδοποιήσεων - + + Search + Αναζήτηση + + + + WebUI + + + + Interface Διεπαφή - + Language: Γλώσσα - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Στυλ εικονιδίου γραμμής εργασιών: - - + + Normal Κανονικό - + File association Συσχετισμός αρχείων - + Use qBittorrent for .torrent files Χρήση qBittorrent για τα αρχεία torrent - + Use qBittorrent for magnet links Χρήση του qBittorrent για συνδέσμους magnet - + Check for program updates Έλεγχος για ενημερώσεις προγράμματος - + Power Management Διαχείριση Ενέργειας - + + &Log Files + + + + Save path: Διαδρομή αποθήκευσης: - + Backup the log file after: Αντίγραφο ασφαλείας του αρχείου καταγραφής μετά από: - + Delete backup logs older than: Διαγραφή αντιγράφων ασφαλείας αρχείου καταγραφής παλαιότερα από: - + + Show external IP in status bar + + + + When adding a torrent Όταν προστίθεται ένα torrent - + Bring torrent dialog to the front Μεταφορά διαλόγου torrent στο προσκήνιο - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Επίσης διαγραφή αρχείων .torrent των οποίων η προσθήκη ακυρώθηκε - + Also when addition is cancelled Επίσης όταν ακυρώνεται η προσθήκη - + Warning! Data loss possible! Προειδοποίηση! Πιθανή απώλεια δεδομένων! - + Saving Management Διαχείριση Αποθήκευσης - + Default Torrent Management Mode: Προεπιλεγμένη Λειτουργία Διαχείρισης Torrent: - + Manual Χειροκίνητα - + Automatic Αυτόματα - + When Torrent Category changed: Όταν αλλάξει η Κατηγορία του torrent: - + Relocate torrent Μετεγκατάσταση torrent - + Switch torrent to Manual Mode Εναλλαγή του torrent σε Χειροκίνητη Λειτουργία - - + + Relocate affected torrents Μετεγκατάσταση επηρεασμένων torrents - - + + Switch affected torrents to Manual Mode Εναλλαγή επηρεασμένων torrents σε Χειροκίνητη Λειτουργία - + Use Subcategories Χρήση Υποκατηγοριών - + Default Save Path: Προεπιλεγμένη Διαδρομή Αποθήκευσης: - + Copy .torrent files to: Αντιγραφή αρχείων .torrent στο: - + Show &qBittorrent in notification area Εμφάνιση του &qBittorrent στην περιοχή ειδοποιήσεων - &Log file - Αρχείο Κ&αταγραφής + Αρχείο Κ&αταγραφής - + Display &torrent content and some options Εμφάνιση περιεχομένων torrent και επιλογών - + De&lete .torrent files afterwards Διαγραφή αρχείων .torrent μετά - + Copy .torrent files for finished downloads to: Αντιγραφή αρχείων .torrent για ολοκληρωμένες λήψεις στο: - + Pre-allocate disk space for all files Προ-εντοπισμός χώρου στο δίσκο για όλα τα αρχεία - + Use custom UI Theme Χρήση προσαρμοσμένου Θέματος UI - + UI Theme file: Αρχείο Θέματος UI: - + Changing Interface settings requires application restart Η αλλαγή ρυθμίσεων διεπαφής απαιτεί επανεκκίνηση της εφαρμογής - + Shows a confirmation dialog upon torrent deletion Εμφανίζει ένα παράθυρο διαλόγου επιβεβαίωσης κατά τη διαγραφή torrent - - + + Preview file, otherwise open destination folder Προεπισκόπηση αρχείου, διαφορετικά άνοιγμα φακέλου προορισμού - - Show torrent options - Εμφάνιση επιλογών torrent + Εμφάνιση επιλογών torrent - + Shows a confirmation dialog when exiting with active torrents Εμφανίζει ένα παράθυρο διαλόγου επιβεβαίωσης κατά την έξοδο όταν υπάρχουν ενεργά torrent - + When minimizing, the main window is closed and must be reopened from the systray icon Κατά την ελαχιστοποίηση, το κύριο παράθυρο κλείνει και πρέπει να ανοίξει ξανά από το εικονίδιο της περιοχής ειδοποιήσεων - + The systray icon will still be visible when closing the main window Το εικονίδιο στην περιοχή ειδοποιήσεων θα εξακολουθεί να είναι ορατό κατά το κλείσιμο του κύριου παραθύρου - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Κλείσιμο του qBittorrent στην περιοχή ειδοποιήσεων - + Monochrome (for dark theme) Μονόχρωμο (για σκοτεινό θέμα) - + Monochrome (for light theme) Μονόχρωμο (για φωτεινό θέμα) - + Inhibit system sleep when torrents are downloading Αποτροπή αναστολής του συστήματος όταν γίνεται λήψη torrents - + Inhibit system sleep when torrents are seeding Αποτροπή αναστολής του συστήματος όταν γίνεται torrent seeding - + Creates an additional log file after the log file reaches the specified file size Δημιουργεί ένα πρόσθετο αρχείο καταγραφής όταν η καταγραφή φτάσει το καθορισμένο μέγεθος αρχείου - + days Delete backup logs older than 10 days ημέρες - + months Delete backup logs older than 10 months μήνες - + years Delete backup logs older than 10 years χρόνια - + Log performance warnings Προειδοποιήσεις απόδοσης καταγραφής - The torrent will be added to download list in a paused state - Το torrent θα προστεθεί στη λίστα λήψεων σε κατάσταση παύσης + Το torrent θα προστεθεί στη λίστα λήψεων σε κατάσταση παύσης - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Να μην ξεκινά η λήψη αυτόματα - + Whether the .torrent file should be deleted after adding it Εάν το αρχείο .torrent θα πρέπει να διαγραφεί μετά την προσθήκη του - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Προ-εκχώρηση πλήρους μεγέθους αρχείων στο δίσκο πριν την εκκίνηση των λήψεων, για ελαχιστοποίηση του κατακερματισμού. Χρήσιμο μόνο για HDDs. - + Append .!qB extension to incomplete files Προσάρτηση επέκτασης .!qB σε μη ολοκληρωμένα αρχεία - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Όταν ολοκληρωθεί η λήψη ενός torrent, να γίνεται ερώτηση για προσθήκη torrents από τυχόν αρχεία .torrent που βρίσκονται μέσα σε αυτό - + Enable recursive download dialog Ενεργοποίηση διαλόγου αναδρομικής λήψης - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Αυτόματη: Διάφορες ιδιότητες του torrent (π.χ. διαδρομή αποθήκευσης) θα αποφασιστούν από την συσχετισμένη κατηγορία Χειροκίνητη: Διάφορες ιδιότητες του torrent (π.χ. διαδρομή αποθήκευσης) θα πρέπει να οριστούν χειροκίνητα - + When Default Save/Incomplete Path changed: Οταν αλλάξει η Προεπιλεγμένη Αποθήκευση/Ημιτελής διαδρομή: - + When Category Save Path changed: Όταν αλλάξει η Διαδρομή Αποθήκευσης Κατηγορίας: - + Use Category paths in Manual Mode Χρήση διαδρομών Κατηγορίας κατά τη Χειροκίνητη Λειτουργία - + Resolve relative Save Path against appropriate Category path instead of Default one Επιλύστε τη σχετική Διαδρομή Αποθήκευσης έναντι της κατάλληλης διαδρομής Κατηγορίας, αντί για την Προεπιλεγμένη - + Use icons from system theme Χρήση εικονιδίων από το θέμα του συστήματος - + Window state on start up: Κατάσταση παραθύρου κατά την εκκίνηση: - + qBittorrent window state on start up Κατάσταση παραθύρου qBittorrent κατά την εκκίνηση - + Torrent stop condition: Κατάσταση διακοπής torrent: - - + + None Κανένα - - + + Metadata received Ελήφθησαν μεταδεδομένα - - + + Files checked Τα αρχεία ελέγχθηκαν - + Ask for merging trackers when torrent is being added manually Αίτημα συγχώνευσης trackers όταν το torrent προστίθεται χειροκίνητα - + Use another path for incomplete torrents: Χρήση άλλης διαδρομής για ημιτελή torrents: - + Automatically add torrents from: Αυτόματη προσθήκη torrent από: - + Excluded file names Ονόματα αρχείων σε εξαίρεση - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,843 +6994,916 @@ readme.txt: φίλτρο για αρχείο με ακριβές όνομα. readme[0-9].txt: φίλτρο για «readme1.txt», «readme2.txt» αλλά όχι «readme10.txt». - + Receiver Παραλήπτης - + To: To receiver Προς: - + SMTP server: Διακομιστής SMTP: - + Sender Αποστολέας - + From: From sender Από: - + This server requires a secure connection (SSL) Αυτός ο διακομιστής απαιτεί ασφαλή σύνδεση (SSL) - - + + Authentication Έλεγχος Ταυτότητας - - - - + + + + Username: Όνομα χρήστη: - - - - + + + + Password: Κωδικός: - + Run external program Εκτέλεση εξωτερικού προγράμμματος - Run on torrent added - Εκτέλεση κατά την προσθήκη torrent + Εκτέλεση κατά την προσθήκη torrent - Run on torrent finished - Εκτέλεση κατά την ολοκλήρωση torrent + Εκτέλεση κατά την ολοκλήρωση torrent - + Show console window Εμφάνιση παραθύρου κονσόλας - + TCP and μTP TCP και μTP - + Listening Port Θύρα ακρόασης - + Port used for incoming connections: Θύρα που χρησιμοποιείται για εισερχόμενες συνδέσεις: - + Set to 0 to let your system pick an unused port Ορίστε το σε 0 για να επιτρέψετε στο σύστημά σας να επιλέξει μια αχρησιμοποίητη θύρα - + Random Τυχαία - + Use UPnP / NAT-PMP port forwarding from my router Χρήση προώθησης UPnP / NAT - PMP θυρών από τον δρομολογητή μου - + Connections Limits Όρια Συνδέσεων - + Maximum number of connections per torrent: Μέγιστος αριθμός συνδέσεων ανά torrent: - + Global maximum number of connections: Μέγιστος συνολικός αριθμός συνδέσεων: - + Maximum number of upload slots per torrent: Μέγιστος αριθμός slots αποστολής ανά torrent: - + Global maximum number of upload slots: Γενικός μέγιστος αριθμός slots αποστολής: - + Proxy Server Διακομιστής Proxy - + Type: Τύπος: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Θύρα: - + Otherwise, the proxy server is only used for tracker connections Διαφορετικά, ο proxy διακομιστής χρησιμοποιείται μόνο για συνδέσεις tracker - + Use proxy for peer connections Χρήση proxy για συνδέσεις peer - + A&uthentication Έλεγχος &Ταυτότητας - + Info: The password is saved unencrypted Πληροφορία: Ο κωδικός πρόσβασης έχει αποθηκευθεί μη κρυπτογραφημένος - + Filter path (.dat, .p2p, .p2b): Διαδρομή φίλτρου (.dat, .p2p, .p2b): - + Reload the filter Επαναφόρτωση του φίλτρου - + Manually banned IP addresses... Χειροκίνητα αποκλεισμένες IP διευθύνσεις... - + Apply to trackers Εφαρμογή στους trackers - + Global Rate Limits Γενικά Όρια Ρυθμού - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Αποστολή: - - + + Download: Λήψη - + Alternative Rate Limits Εναλλακτικά Όρια Ρυθμού - + Start time Ώρα εκκίνησης - + End time Ώρα λήξης - + When: Πότε: - + Every day Κάθε μέρα - + Weekdays Καθημερινές - + Weekends Σαββατοκύριακα - + Rate Limits Settings Ρυθμίσεις Ορίων Ρυθμού - + Apply rate limit to peers on LAN Εφαρμογή ορίου ρυθμού σε peers στο LAN - + Apply rate limit to transport overhead Εφαρμογή ορίων ρυθμού στο κόστος μεταφοράς - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Εφαρμογή ορίων ρυθμού στο uTP πρωτόκολλο - + Privacy Ιδιωτικότητα - + Enable DHT (decentralized network) to find more peers Ενεργοποίηση DHT (αποκεντρωμένο δίκτυο) για εύρεση περισσοτέρων peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Ανταλλαγή peers με συμβατούς Bittorrent clients (μTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Ενεργοποίηση Ανταλλαγής Peer (PeX) για εύρεση περισσότερων peers - + Look for peers on your local network Αναζήτηση για peers στο τοπικό σας δίκτυο - + Enable Local Peer Discovery to find more peers Ενεργοποίηση Ανακάλυψης Τοπικών Peer για εύρεση περισσότερων peers - + Encryption mode: Λειτουργία κρυπτογράφησης: - + Require encryption Απαίτηση κρυπτογράφησης - + Disable encryption Απενεργοποίηση κρυπτογράφησης - + Enable when using a proxy or a VPN connection Ενεργοποίηση όταν γίνεται χρήση ενός proxy ή μιας σύνδεσης VPN - + Enable anonymous mode Ενεργοποίηση ανώνυμης λειτουργίας - + Maximum active downloads: Μέγιστες ενεργές λήψεις: - + Maximum active uploads: Μέγιστες ενεργές αποστολές: - + Maximum active torrents: Μέγιστα ενεργά torrents: - + Do not count slow torrents in these limits Μη υπολογισμός αργών torrent σε αυτά τα όρια - + Upload rate threshold: Όριο ρυθμού αποστολής: - + Download rate threshold: Όριο ρυθμού λήψης: - - - + + + + sec seconds sec - + Torrent inactivity timer: Χρόνος αδράνειας torrent: - + then τότε - + Use UPnP / NAT-PMP to forward the port from my router Χρήση UPnP / NAT - PMP για προώθηση της θύρας από τον δρομολογητή μου - + Certificate: Πιστοποιητικό: - + Key: Κλειδί: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Πληροφορίες σχετικά με τα πιστοποιητικά</a> - + Change current password Αλλαγή τρέχοντος κωδικού πρόσβασης - Use alternative Web UI - Χρήση εναλλακτικού Web UI + Χρήση εναλλακτικού Web UI - + Files location: Τοποθεσία αρχείων: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Ασφάλεια - + Enable clickjacking protection Ενεργοποίηση προστασίας clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Ενεργοποίηση προστασίας Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Ενεργοποίηση ελέγχου ταυτότητας της κεφαλίδας του Host - + Add custom HTTP headers Προσθήκη προσαρμοσμένων κεφαλίδων HTTP - + Header: value pairs, one per line Κεφαλίδα: ζευγάρια τιμών, ένα ανά γραμμή - + Enable reverse proxy support Ενεργοποίηση υποστήριξης αντίστροφου proxy - + Trusted proxies list: Λίστα έμπιστων proxies: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Υπηρεσία: - + Register Εγγραφή - + Domain name: Όνομα τομέα: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Με την ενεργοποίηση αυτών των επιλογών, μπορεί να <strong>χάσετε αμετάκλητα</strong> τα .torrent αρχεία σας! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Αν ενεργοποιήσετε την δεύτερη επιλογή (&ldquo;Επίσης όταν η προσθήκη ακυρωθεί&rdquo;) το .torrent αρχείο <strong>θα διαγραφεί</strong> ακόμη και αν πατήσετε &ldquo;<strong>Ακύρωση</strong>&rdquo; στον διάλογο &ldquo;Προσθήκη αρχείου torrent&rdquo; - + Select qBittorrent UI Theme file Επιλέξτε αρχείο Θέματος του qBittorrent UI - + Choose Alternative UI files location Επιλέξτε εναλλακτική τοποθεσία αρχείων του UI - + Supported parameters (case sensitive): Υποστηριζόμενοι παράμετροι (διάκριση πεζών): - + Minimized Ελαχιστοποιημένο - + Hidden Κρυφό - + Disabled due to failed to detect system tray presence Απενεργοποιήθηκε λόγω αποτυχίας ανίχνευσης παρουσίας εικονιδίου περιοχής ειδοποιήσεων - + No stop condition is set. Δεν έχει οριστεί συνθήκη διακοπής. - + Torrent will stop after metadata is received. Το torrent θα σταματήσει μετά τη λήψη των μεταδεδομένων. - - Torrents that have metadata initially aren't affected. - Τα torrents που έχουν μεταδεδομένα εξαρχής δεν επηρεάζονται. - - - + Torrent will stop after files are initially checked. Το torrent θα σταματήσει αφού πρώτα ελεγχθούν τα αρχεία. - + This will also download metadata if it wasn't there initially. Αυτό θα πραγματοποιήσει και λήψη μεταδεδομένων εάν δεν υπήρχαν εξαρχής. - + %N: Torrent name %N: Όνομα Torrent - + %L: Category %L: Κατηγορία - + %F: Content path (same as root path for multifile torrent) %F: Διαδρομή περιεχομένου (ίδια με την ριζική διαδρομή για torrent πολλαπλών αρχείων) - + %R: Root path (first torrent subdirectory path) %R: Ριζική διαδρομή (διαδρομή υποκαταλόγου του πρώτου torrent) - + %D: Save path %D: Διαδρομή αποθήκευσης - + %C: Number of files %C: Αριθμός των αρχείων - + %Z: Torrent size (bytes) %Z: Μέγεθος torrent (bytes) - + %T: Current tracker %T: Τρέχων tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Συμβουλή: Περικλείστε την παράμετρο με αγγλικά εισαγωγικά για να αποφύγετε την αποκοπή του κειμένου στα κενά (π.χ. "%Ν") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Κανένα) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Ένα torrent θα θεωρηθεί αργό εάν οι ρυθμοί λήψης και αποστολής παραμείνουν κάτω από αυτές τις τιμές όσο ο «Χρόνος αδράνειας torrent» σε δευτερόλεπτα - + Certificate Πιστοποιητικό - + Select certificate Επιλογή πιστοποιητικού - + Private key Ιδιωτικό κλειδί - + Select private key Επιλογή ιδιωτικού κλειδιού - + + WebUI configuration failed. Reason: %1 + Η διαμόρφωση WebUI απέτυχε. Αιτία: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Επιλέξτε ένα φάκελο προς παρακολούθηση - + Adding entry failed Η προσθήκη καταχώρησης απέτυχε - - Location Error - Σφάλμα Τοποθεσίας + + The WebUI username must be at least 3 characters long. + Το όνομα χρήστη WebUI πρέπει να αποτελείται από τουλάχιστον 3 χαρακτήρες. - - The alternative Web UI files location cannot be blank. - Η εναλλακτική τοποθεσία των αρχείων του Web UI δεν μπορεί να είναι κενή. + + The WebUI password must be at least 6 characters long. + Ο κωδικός πρόσβασης WebUI πρέπει να αποτελείται από τουλάχιστον 6 χαρακτήρες. - - + + Location Error + Σφάλμα Τοποθεσίας + + + + Choose export directory Επιλέξτε κατάλογο εξαγωγής - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Όταν αυτές οι επιλογές είναι ενεργοποιημένες, το qBittorent θα <strong>διαγράψει</strong> τα αρχεία .torrent μετά την επιτυχή προσθήκη τους (η πρώτη επιλογή) ή όχι (η δεύτερη επιλογή) στην ουρά λήψεών του. Αυτό θα εφαρμοστεί <strong>όχι μόνο</strong> σε αρχεία που ανοίχτηκαν μέσω της ενέργειας του μενού «Προσθήκη αρχείου torrent» αλλά και σε αυτά που ανοίχτηκαν μέσω <strong>συσχέτισης τύπου αρχείων</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Αρχείο Θέματος qBittorrent UI (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Ετικέτες (διαχωρισμένες με κόμμα) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (ή «-» αν δεν είναι διαθέσιμο) - + %J: Info hash v2 (or '-' if unavailable) %J: Info hash v2 (ή «-» αν δεν είναι διαθέσιμο) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent ID (είτε sha-1 info hash για v1 torrent ή truncated sha-256 info hash για v2/hybrid torrent) - - - + + + Choose a save directory Επιλέξτε κατάλογο αποθήκευσης - + + Torrents that have metadata initially will be added as stopped. + Τα torrents που έχουν μεταδεδομένα εξαρχής θα προστεθούν ως σταματημένα. + + + Choose an IP filter file Επιλέξτε ένα αρχείο φίλτρου IP - + All supported filters Όλα τα υποστηριζόμενα φίλτρα - + + The alternative WebUI files location cannot be blank. + Η εναλλακτική τοποθεσία των αρχείων WebUI δεν μπορεί να είναι κενή. + + + Parsing error Σφάλμα ανάλυσης - + Failed to parse the provided IP filter Αποτυχία ανάλυσης του παρεχόμενου φίλτρου IP - + Successfully refreshed Επιτυχής ανανέωση - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Επιτυχής ανάλυση του παρεχόμενου φίλτρου IP: Εφαρμόστηκαν %1 κανόνες. - + Preferences Προτιμήσεις - + Time Error Σφάλμα Ώρας - + The start time and the end time can't be the same. Η ώρα έναρξης και η ώρα λήξης δεν μπορούν να είναι ίδιες. - - + + Length Error Σφάλμα Μήκους - - - The Web UI username must be at least 3 characters long. - Το όνομα χρήστη του Περιβάλλοντος Χρήστη Ιστού πρέπει να έχει μήκος τουλάχιστον 3 χαρακτήρες. - - - - The Web UI password must be at least 6 characters long. - Ο κωδικός πρόσβασης του Web UI πρέπει να έχει μήκος τουλάχιστον 6 χαρακτήρες. - PeerInfo - + Unknown Αγνωστο - + Interested (local) and choked (peer) Interested (τοπικά) και unchoked (peer) - + Interested (local) and unchoked (peer) Interested (τοπικά) και unchoked (peer) - + Interested (peer) and choked (local) Interested (peer) και choked (τοπικά) - + Interested (peer) and unchoked (local) Interested (peer) και unchoked (τοπικά) - + Not interested (local) and unchoked (peer) Not interested (τοπικά) και unchoked (peer) - + Not interested (peer) and unchoked (local) Not interested (peer) και unchoked (τοπικά) - + Optimistic unchoke Optimistic unchoke - + Peer snubbed Το peer αγνοήθηκε - + Incoming connection Εισερχόμενη σύνδεση - + Peer from DHT Peer από DHT - + Peer from PEX Peer από PeX - + Peer from LSD Peer από LSD - + Encrypted traffic Κρυπτογραφημένη κίνηση - + Encrypted handshake Κρυπτογραφημένο handshake - - + + + Peer is using NAT hole punching + + + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: φίλτρο για «readme1.txt», «readme2.txt» αλλά Το peer "%1" έχει αποκλειστεί χειροκίνητα - + N/A Δ/Υ @@ -7668,7 +8080,7 @@ readme[0-9].txt: φίλτρο για «readme1.txt», «readme2.txt» αλλά Λίστα peers για προσθήκη (μία IP ανά γραμμή): - + Format: IPv4:port / [IPv6]:port Μορφή: IPv4:θύρα / [IPv6]:θύρα @@ -7709,27 +8121,27 @@ readme[0-9].txt: φίλτρο για «readme1.txt», «readme2.txt» αλλά PiecesBar - + Files in this piece: Αρχεία σε αυτό το κομμάτι: - + File in this piece: Αρχείο σε αυτό το κομμάτι - + File in these pieces: Αρχείο σε αυτά τα κομμάτια - + Wait until metadata become available to see detailed information Περιμένετε μέχρι να γίνουν διαθέσιμα τα μεταδεδομένα για να δείτε λεπτομερείς πληροφορίες - + Hold Shift key for detailed information Κρατήστε πατημένο το πλήκτρο Shift για λεπτομερείς πληροφορίες @@ -7742,58 +8154,58 @@ readme[0-9].txt: φίλτρο για «readme1.txt», «readme2.txt» αλλά Προσθήκες αναζήτησης - + Installed search plugins: Εγκατεστημένες προσθήκες αναζήτησης: - + Name Όνομα - + Version Έκδοση - + Url URL - - + + Enabled Ενεργοποιημένο - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Προειδοποίηση: Βεβαιωθείτε ότι συμμορφώνεστε με τους νόμους περί πνευματικής ιδιοκτησίας της χώρας σας κατά τη λήψη torrents από οποιαδήποτε από αυτές τις μηχανές αναζήτησης. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Μπορείτε να αποκτήσετε νέα πρόσθετα μηχανών αναζήτησης εδώ: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Εγκατάσταση ενός νέου - + Check for updates Έλεγχος για ενημερώσεις - + Close Κλείσιμο - + Uninstall Απεγκατάσταση @@ -7913,17 +8325,17 @@ Those plugins were disabled. Πηγή προσθήκης - + Search plugin source: Πηγή προσθήκης αναζήτησης: - + Local file Τοπικό αρχείο - + Web link Σύνδεσμος στο web @@ -7941,70 +8353,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + Η διαχείριση ενέργειας βρήκε κατάλληλη διεπαφή D-Bus. Διασύνδεση: %1 Power management error. Did not found suitable D-Bus interface. - + Σφάλμα διαχείρισης ενέργειας. Δεν βρέθηκε κατάλληλη διασύνδεση D-Bus. Power management error. Action: %1. Error: %2 - + Σφάλμα διαχείρισης ενέργειας. Δράση: %1. Σφάλμα: %2 Power management unexpected error. State: %1. Error: %2 - + Μη αναμενόμενο σφάλμα διαχείρισης ενέργειας. Πολιτεία: %1. Σφάλμα: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Τα παρακάτω αρχεία από το torrent "%1" υποστηρίζουν προεπισκόπηση, παρακαλώ επιλέξτε ένα από αυτά: - + Preview Προεπισκόπηση - + Name Όνομα - + Size Μέγεθος - + Progress Πρόοδος - + Preview impossible Αδύνατη η προεπισκόπηση - + Sorry, we can't preview this file: "%1". Δυστυχώς, δε μπορεί να γίνει προεπισκόπηση αυτού του αρχείου: "%1". - + Resize columns Αλλαγή μεγέθους στηλών - + Resize all non-hidden columns to the size of their contents Αλλαγή του μεγέθους όλων των μη κρυφών στηλών στο μέγεθος του περιεχομένου τους @@ -8017,27 +8429,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Η διαδρομή δεν υπάρχει - + Path does not point to a directory Η διαδρομή δεν οδηγεί σε κατάλογο - + Path does not point to a file Η διαδρομή δεν αντιστοιχεί σε αρχείο - + Don't have read permission to path Δεν έχει δικαίωμα ανάγνωσης στη διαδρομή - + Don't have write permission to path Δεν έχει δικαίωμα εγγραφής στη διαδρομή @@ -8078,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Ληφθέντα: - + Availability: Διαθεσιμότητα: @@ -8098,53 +8510,53 @@ Those plugins were disabled. Μεταφορά - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Χρόνος εν Ενεργεία: - + ETA: ΠΩΑ: - + Uploaded: Απεσταλμένα: - + Seeds: Διαμοιραστές: - + Download Speed: Ταχύτητα Λήψης: - + Upload Speed: Ταχύτητα Αποστολής: - + Peers: Peers: - + Download Limit: Όριο Λήψης: - + Upload Limit: Όριο Αποστολής: - + Wasted: Σπαταλημένα: @@ -8154,193 +8566,249 @@ Those plugins were disabled. Συνδέσεις: - + Information Πληροφορίες - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Σχόλιο: - + Select All Επιλογή Όλων - + Select None Καμία επιλογή - + Share Ratio: Αναλογία Διαμοιρασμού: - + Reannounce In: Reannounce Σε: - + Last Seen Complete: Τελευταία Φορά Ολοκλήρωσης: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Συνολικό Μέγεθος: - + Pieces: Κομμάτια: - + Created By: Δημιουργήθηκε Από: - + Added On: Προστέθηκε Στις: - + Completed On: Ολοκληρώθηκε Στις: - + Created On: Δημιουργήθηκε Στις: - + + Private: + + + + Save Path: Διαδρομή Αποθήκευσης: - + Never Ποτέ - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (έχω %3) - - + + %1 (%2 this session) %1 (%2 αυτή τη συνεδρία) - - + + + N/A Δ/Υ - + + Yes + Ναι + + + + No + Όχι + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (διαμοιράστηκε για %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 μέγιστο) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 σύνολο) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 μ.ο.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Νέο Web seed + Νέο Web seed - Remove Web seed - Αφαίρεση Web seed + Αφαίρεση Web seed - Copy Web seed URL - Αντιγραφή URL του Web seed + Αντιγραφή URL του Web seed - Edit Web seed URL - Επεξεργασία URL του Web seed + Επεξεργασία URL του Web seed - + Filter files... Φίλτρο αρχείων… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Τα γραφήματα ταχύτητας είναι απενεργοποιημένα - + You can enable it in Advanced Options Μπορείτε να το ενεργοποιήσετε στις Επιλογές Για προχωρημένους - New URL seed New HTTP source - Νέο URL seed + Νέο URL seed - New URL seed: - Νέο URL seed: + Νέο URL seed: - - This URL seed is already in the list. - Αυτό το URL seed είναι ήδη στη λίστα. + Αυτό το URL seed είναι ήδη στη λίστα. - + Web seed editing Επεξεργασία Web seed - + Web seed URL: URL του Web seed: @@ -8359,22 +8827,22 @@ Those plugins were disabled. Δεν ήταν δυνατή η αποθήκευση των δεδομένων του Αυτόματου Λήπτη μέσω RSS στο %1. Σφάλμα: %2 - + Invalid data format Μη έγκυρη μορφή δεδομένων - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... Το άρθρο RSS '%1' είναι αποδεκτό από τον κανόνα '%2'. Προσπάθεια προσθήκης torrent... - + Failed to read RSS AutoDownloader rules. %1 Αποτυχία ανάγνωσης των κανόνων του RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Δεν ήταν δυνατή η φόρτωση των κανόνων του Αυτόματου Λήπτη μέσω RSS. Αιτία: %1 @@ -8382,22 +8850,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Αποτυχία λήψης ροής RSS στο '%1'. Αιτία: %2 - + RSS feed at '%1' updated. Added %2 new articles. Η ροή RSS στο '%1' ενημερώθηκε. Προστέθηκαν %2 νέα άρθρα. - + Failed to parse RSS feed at '%1'. Reason: %2 Αποτυχία ανάλυσης ροής RSS στο '%1'. Αιτία: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Έχει γίνει επιτυχής λήψη της ροής RSS από το '%1'. Εκκίνηση ανάλυσης. @@ -8433,12 +8901,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Μη έγκυρη ροή RSS. - + %1 (line: %2, column: %3, offset: %4). %1 (γραμμή: %2, στήλη: %3, offset: %4). @@ -8446,99 +8914,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Δεν ήταν δυνατή η αποθήκευση της διαμόρφωσης της συνεδρίας RSS. Αρχείο: "%1". Σφάλμα: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Δεν ήταν δυνατή η αποθήκευση των δεδομένων της συνεδρίας RSS. Αρχείο: "%1". Σφάλμα: "%2" - - + + RSS feed with given URL already exists: %1. Η ροή RSS με το δεδομένο URL υπάρχει ήδη: %1. - + Feed doesn't exist: %1. Η ροή δεν υπάρχει: %1. - + Cannot move root folder. Δεν είναι δυνατή η μετακίνηση του ριζικού φακέλου. - - + + Item doesn't exist: %1. Το στοιχείο δεν υπάρχει: %1. - + Couldn't move folder into itself. Δεν ήταν δυνατή η μετακίνηση του φακέλου στον εαυτό του. - + Cannot delete root folder. Δεν είναι δυνατή η διαγραφή του ριζικού φακέλου. - + Failed to read RSS session data. %1 Αποτυχία ανάγνωσης των δεδομένων συνεδρίας RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Αποτυχία ανάλυσης των δεδομένων συνεδρίας RSS. Αρχείο: "%1". Σφάλμα: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Αποτυχία φόρτωσης δεδομένων συνεδρίας RSS. Αρχείο: "%1". Σφάλμα: "Μη έγκυρη μορφή δεδομένων." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Δεν ήταν δυνατή η φόρτωση της ροής RSS "%1". Αιτία: Απαιτείται URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Δεν ήταν δυνατή η φόρτωση της ροής RSS "%1". Αιτία: Το UID δεν είναι έγκυρο. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Βρέθηκε διπλότυπη ροή RSS. UID: "%1". Σφάλμα: Η διαμόρφωση φαίνεται να είναι κατεστραμμένη. - + Couldn't load RSS item. Item: "%1". Invalid data format. Δεν ήταν δυνατή η φόρτωση του στοιχείου RSS. Στοιχείο: "%1". Μη έγκυρη μορφή δεδομένων. - + Corrupted RSS list, not loading it. Κατεστραμμένη λίστα RSS, η φόρτωση δεν θα γίνει. - + Incorrect RSS Item path: %1. Λανθασμένη διαδρομή RSS Στοιχείου: %1. - + RSS item with given path already exists: %1. Το RSS στοιχείο με τη δεδομένη διαδρομή υπάρχει ήδη: %1. - + Parent folder doesn't exist: %1. Ο γονικός φάκελος δεν υπάρχει: %1. @@ -8562,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read Επισήμανση αντικειμένων ως αναγνωσμένα @@ -8588,132 +9056,132 @@ Those plugins were disabled. Torrents: (διπλό κλικ για λήψη) - - + + Delete Διαγραφή - + Rename... Μετονομασία... - + Rename Μετονομασία - - + + Update Ενημέρωση - + New subscription... Νέα συνδρομή... - - + + Update all feeds Ενημέρωση όλων των ροών - + Download torrent Λήψη torrent - + Open news URL Άνοιγμα URL ειδήσεων - + Copy feed URL Αντιγραφή URL ροής - + New folder... Νέος φάκελος... - + Edit feed URL... Επεξεργασία URL ροής... - + Edit feed URL Επεξεργασία URL ροής - + Please choose a folder name Παρακαλώ επιλέξτε ένα όνομα φακέλου - + Folder name: Όνομα φακέλου: - + New folder Νέος φάκελος - - + + Please type a RSS feed URL Παρακαλώ εισάγετε ένα URL ροής RSS - - + + Feed URL: URL ροής: - + Deletion confirmation Επιβεβαίωση διαγραφής - + Are you sure you want to delete the selected RSS feeds? Είστε σίγουροι ότι θέλετε να διαγράψετε τις επιλεγμένες ροές RSS; - + Please choose a new name for this RSS feed Παρακαλώ επιλέξτε ένα νέο όνομα για αυτή την ροή RSS - + New feed name: Νέο όνομα ροής: - + Rename failed Η μετονομασία απέτυχε - + Date: Ημερομηνία: - + Feed: - + Τροφοδοσία: - + Author: Δημιουργός: @@ -8721,38 +9189,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Η Python πρέπει να εγκατασταθεί για να χρησιμοποιήσετε τη Μηχανή Αναζήτησης. - + Unable to create more than %1 concurrent searches. Δεν είναι δυνατή η δημιουργία περισσότερων από %1 ταυτόχρονων αναζητήσεων. - - + + Offset is out of range Το offset είναι εκτός εύρους - + All plugins are already up to date. Όλες οι προσθήκες είναι ήδη ενημερωμένες. - + Updating %1 plugins Ενημέρωση %1 προσθηκών - + Updating plugin %1 Ενημέρωση προσθήκης %1 - + Failed to check for plugin updates: %1 Απέτυχε ο έλεγχος για ενημερώσεις προσθηκών: %1 @@ -8827,132 +9295,146 @@ Those plugins were disabled. Μέγεθος: - + Name i.e: file name Όνομα - + Size i.e: file size Μέγεθος - + Seeders i.e: Number of full sources Seeders - + Leechers i.e: Number of partial sources Leechers - Search engine - Μηχανή αναζήτησης + Μηχανή αναζήτησης - + Filter search results... Φίλτρο αποτελεσμάτων αναζήτησης... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Αποτελέσματα (εμφανίζονται <i>%1</i> από <i>%2</i>): - + Torrent names only Ονόματα αρχείων torrent μόνο - + Everywhere Παντού - + Use regular expressions Χρήση κανονικών εκφράσεων - + Open download window Άνοιγμα παράθυρου λήψης - + Download Λήψη - + Open description page Άνοιγμα σελίδας περιγραφής - + Copy Αντιγραφή - + Name Όνομα - + Download link Σύνδεσμος λήψης - + Description page URL URL σελίδας περιγραφής - + Searching... Αναζήτηση... - + Search has finished Η αναζήτηση ολοκληρώθηκε - + Search aborted Η αναζήτηση διακόπηκε - + An error occurred during search... Προέκυψε ένα σφάλμα κατά την αναζήτηση... - + Search returned no results Η αναζήτηση δεν επέστρεψε κάποιο αποτέλεσμα - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Ορατότητα στήλης - + Resize columns Αλλαγή μεγέθους στηλών - + Resize all non-hidden columns to the size of their contents Αλλαγή του μεγέθους όλων των μη κρυφών στηλών στο μέγεθος του περιεχομένου τους @@ -8960,104 +9442,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Άγνωστη μορφή αρχείου προσθήκης μηχανής αναζήτησης. - + Plugin already at version %1, which is greater than %2 Η προσθήκη βρίσκεται ήδη στην έκδοση %1, η οποία είναι μεγαλύτερη από την %2 - + A more recent version of this plugin is already installed. Μια πιο πρόσφατη έκδοση αυτής της προσθήκης έχει ήδη εγκατασταθεί. - + Plugin %1 is not supported. Η προσθήκη %1 δεν υποστηρίζεται. - - + + Plugin is not supported. Η προσθήκη δεν υποστηρίζεται. - + Plugin %1 has been successfully updated. Η προσθήκη %1 έχει ενημερωθεί επιτυχώς. - + All categories Όλες οι κατηγορίες - + Movies Ταινίες - + TV shows Τηλεοπτικές σειρές - + Music Μουσική - + Games Παιχνίδια - + Anime Άνιμε - + Software Λογισμικό - + Pictures Εικόνες - + Books Βιβλία - + Update server is temporarily unavailable. %1 Ο διακομιστής ενημερώσεων είναι προσωρινά μη διαθέσιμος. %1 - - + + Failed to download the plugin file. %1 Αποτυχία λήψης του αρχείου προσθήκης. %1 - + Plugin "%1" is outdated, updating to version %2 Η προσθήκη "%1" είναι απαρχαιωμένη, ενημέρωση στην έκδοση %2 - + Incorrect update info received for %1 out of %2 plugins. Ελήφθησαν λανθασμένες πληροφορίες ενημέρωσης για %1 από τις %2 προσθήκες. - + Search plugin '%1' contains invalid version string ('%2') Η προσθήκη αναζήτησης '%1' περιέχει μη έγκυρη έκδοση συμβολοσειράς ('%2') @@ -9067,114 +9549,153 @@ Those plugins were disabled. - - - - Search Αναζήτηση - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Δεν υπάρχουν εγκατεστημένες προσθήκες αναζήτησης. Κάντε κλικ στο κουμπί «Προσθήκες αναζήτησης...» στην κάτω δεξιά γωνία του παραθύρου για να εγκαταστήσετε μερικές. - + Search plugins... Αναζήτηση προσθηκών… - + A phrase to search for. Μια φράση προς αναζήτηση. - + Spaces in a search term may be protected by double quotes. Τα κενά σε έναν όρο αναζήτησης μπορούν να προστατευθούν με διπλά εισαγωγικά. - + Example: Search phrase example Παράδειγμα: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: αναζήτηση για <b>foo bar</b> - + All plugins Όλες οι προσθήκες - + Only enabled Μόνο ενεργοποιημένο - + + + Invalid data format. + Μη έγκυρη μορφή δεδομένων. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: αναζήτηση για <b>foo</b> και <b>bar</b> - + + Refresh + + + + Close tab Κλείσιμο καρτέλας - + Close all tabs Κλείσιμο όλων των καρτελών - + Select... Επιλογή... - - - + + Search Engine Μηχανή Αναζήτησης - + + Please install Python to use the Search Engine. Παρακαλώ εγκαταστήστε το Python για να χρησιμοποιήσετε την Μηχανή Αναζήτησης. - + Empty search pattern Κενό πρότυπο αναζήτησης - + Please type a search pattern first Παρακαλώ πληκτρολογήστε ένα πρότυπο αναζήτησης πρώτα - + + Stop Διακοπή - Search has finished - Η αναζήτηση ολοκληρώθηκε + Η αναζήτηση ολοκληρώθηκε - Search has failed - Η αναζήτηση απέτυχε + Η αναζήτηση απέτυχε + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Αποστολή: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Λήψη: - + Alternative speed limits Εναλλακτικά όρια ταχύτητας @@ -9506,32 +10027,32 @@ Click the "Search plugins..." button at the bottom right of the window Μέσος χρόνος σε ουρά: - + Connected peers: Συνδεμένα peers: - + All-time share ratio: Συνολική αναλογία διαμοιρασμού: - + All-time download: Συνολικά ληφθέντα: - + Session waste: Σπατάλη συνεδρίας: - + All-time upload: Συνολικά απεσταλμένα: - + Total buffer size: Συνολικό μέγεθος buffer: @@ -9546,12 +10067,12 @@ Click the "Search plugins..." button at the bottom right of the window Εργασίες Ι/Ο σε ουρά: - + Write cache overload: Υπερφόρτωση cache εγγραφής: - + Read cache overload: Υπερφόρτωση cache ανάγνωσης: @@ -9570,51 +10091,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Κατάσταση σύνδεσης: - - + + No direct connections. This may indicate network configuration problems. Χωρίς απευθείας συνδέσεις. Αυτό μπορεί να αποτελεί ένδειξη προβλημάτων των παραμέτρων του δικτύου. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 κόμβοι - + qBittorrent needs to be restarted! Το qBittorrent χρειάζεται επανεκκίνηση! - - - + + + Connection Status: Κατάσταση Σύνδεσης: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Εκτός σύνδεσης. Αυτό συνήθως σημαίνει ότι το qBittorrent απέτυχε να λειτουργήσει στην επιλεγμένη θύρα για εισερχόμενες συνδέσεις. - + Online Σε σύνδεση - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Κλικ για αλλαγή σε εναλλακτικά όρια ταχύτητας - + Click to switch to regular speed limits Κλικ για αλλαγή σε κανονικά όρια ταχύτητας @@ -9643,14 +10180,22 @@ Click the "Search plugins..." button at the bottom right of the window Ολοκληρωμένα (0) - Resumed (0) - Σε Συνέχιση (0) + Σε Συνέχιση (0) - Paused (0) - Σε Παύση (0) + Σε Παύση (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Ολοκληρωμένα (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Σε Παύση (%1) + Σε Παύση (%1) @@ -9723,14 +10287,12 @@ Click the "Search plugins..." button at the bottom right of the window Μετακίνηση (%1) - Resume torrents - Συνέχιση torrents + Συνέχιση torrents - Pause torrents - Παύση torrents + Παύση torrents @@ -9738,9 +10300,8 @@ Click the "Search plugins..." button at the bottom right of the window Αφαίρεση torrent - Resumed (%1) - Σε Συνέχιση (%1) + Σε Συνέχιση (%1) @@ -9781,17 +10342,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Ετικέτες - + All Όλα - + Untagged Χωρίς ετικέτα @@ -9799,52 +10360,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Προσθήκη ετικέτας... - + Remove tag Αφαίρεση ετικέτας - + Remove unused tags Αφαίρεση αχρησιμοποίητων ετικετών - Resume torrents - Συνέχιση torrents + Συνέχιση torrents - Pause torrents - Παύση torrents + Παύση torrents - + Remove torrents Αφαίρεση torrent - New Tag - Νέα ετικέτα + Νέα ετικέτα + + + + Start torrents + - + + Stop torrents + + + + Tag: Ετικέτα - + + Add tag + + + + Invalid tag name Μη έγκυρο όνομα ετικέτας - + Tag name '%1' is invalid Το όνομα ετικέτας '%1' δεν είναι έγκυρο. @@ -9984,32 +10557,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Όνομα - + Progress Πρόοδος - + Download Priority Προτεραιότητα Λήψης - + Remaining Απομένουν - + Availability Διαθεσιμότητα - + Total Size Συνολικό μέγεθος @@ -10054,102 +10627,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Σφάλμα μετονομασίας - + Renaming Μετονομασία - + New name: Νέο όνομα: - + Column visibility Ορατότητα στήλης - + Resize columns Αλλαγή μεγέθους στηλών - + Resize all non-hidden columns to the size of their contents Αλλαγή του μεγέθους όλων των μη κρυφών στηλών στο μέγεθος του περιεχομένου τους - + Open Ανοιγμα - + Open containing folder Ανοιγμα περιεχομένων φακέλου - + Rename... Μετονομασία… - + Priority Προτεραιότητα - - + + Do not download Να μη γίνει λήψη - + Normal Κανονική - + High Υψηλή - + Maximum Μέγιστη - + By shown file order Οπως η σειρά των αρχείων που εμφανίζονται - + Normal priority Κανονική προτεραιότητα - + High priority Υψηλή προτεραιότητα - + Maximum priority Μέγιστη προτεραιότητα - + Priority by shown file order Προτεραιότητα όπως η σειρά των αρχείων που εμφανίζονται + + TorrentCreatorController + + + Too many active tasks + Πάρα πολλές ενεργές εργασίες + + + + Torrent creation is still unfinished. + Η δημιουργία του torrent είναι ακόμα ημιτελής. + + + + Torrent creation failed. + Αποτυχία δημιουργίας του torrent + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Please choose a different name and try again. - + Select file Επιλέξτε αρχείο - + Select folder Επιλέξτε φάκελο @@ -10205,58 +10796,10 @@ Please choose a different name and try again. Μέγεθος κομματιού: - + Auto Αυτόματο - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Please choose a different name and try again. Πεδία - + You can separate tracker tiers / groups with an empty line. Μπορείτε να διαχωρίσετε τα tiers / τις ομάδες των trackers με μια κενή γραμμή. - + Web seed URLs: URLs των Web seed: - + Tracker URLs: URLs του tracker: - + Comments: Σχόλια: - + Source: Πηγή: - + Progress: Πρόοδος: - + Create Torrent Δημιουργία torrent - - + + Torrent creation failed Αποτυχία δημιουργίας του torrent - + Reason: Path to file/folder is not readable. Αιτία: Η διαδρομή του αρχείου/φακέλου δεν είναι αναγνώσιμη. - + Select where to save the new torrent Επιλέξτε πού θα αποθηκεύσετε το νέο torrent - + Torrent Files (*.torrent) Αρχεία torrent (*.torrent) - - Reason: %1 - Αιτία: %1 - - - + Add torrent to transfer list failed. - + Η προσθήκη torrent στη λίστα μεταφοράς απέτυχε. - + Reason: "%1" - + Λόγος: "%1" - + Add torrent failed - + Η προσθήκη torrent απέτυχε - Reason: Created torrent is invalid. It won't be added to download list. - Αιτία: Το δημιουργημένο torrent δεν είναι έγκυρο. Δε θα προστεθεί στη λίστα λήψεων. - - - + Torrent creator Δημιουργός torrent - + Torrent created: Το Torrent δημιουργήθηκε: @@ -10396,32 +10930,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Αποτυχία φόρτωσης της διαμόρφωσης των Παρακολουθούμενων Φακέλων. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Αποτυχία ανάλυσης της διαμόρφωσης των Παρακολουθούμενων Φακέλων από το %1. Σφάλμα: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Αποτυχία φόρτωσης της διαμόρφωσης των Παρακολουθούμενων Φακέλων από το %1. Σφάλμα: "Μη έγκυρη μορφή δεδομένων." - + Couldn't store Watched Folders configuration to %1. Error: %2 Δεν ήταν δυνατή η αποθήκευση της διαμόρφωσης των Φακέλων Παρακολούθησης από το %1. Σφάλμα: %2 - + Watched folder Path cannot be empty. Η διαδρομή του Φακέλου Παρακολούθησης δεν μπορεί να είναι κενή. - + Watched folder Path cannot be relative. Η διαδρομή του φακέλου παρακολούθησης δεν μπορεί να είναι σχετική. @@ -10429,27 +10963,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Μη έγκυρο URI μαγνήτη. URI: %1. Λόγος: %2 - + Magnet file too big. File: %1 Το αρχείο magnet είναι πολύ μεγάλο. Αρχείο: %1 - + Failed to open magnet file: %1 Αποτυχία ανοίγματος αρχείου magnet: %1 - + Rejecting failed torrent file: %1 Απόρριψη αποτυχημένου αρχείου torrent: %1 - + Watching folder: "%1" Φάκελος Παρακολούθησης: "%1" @@ -10457,14 +10991,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Αποτυχία ανάθεσης μνήμης κατά την ανάγνωση του αρχείου. Αρχείο: "%1". Σφάλμα: "%2" + Αποτυχία ανάθεσης μνήμης κατά την ανάγνωση του αρχείου. Αρχείο: "%1". Σφάλμα: "%2" - Invalid metadata - Μη έγκυρα μεταδεδομένα + Μη έγκυρα μεταδεδομένα @@ -10495,279 +11027,374 @@ Please choose a different name and try again. Χρήση άλλης διαδρομής για ημιτελή torrent - + Category: Κατηγορία: - + + Torrent Share Limits + + + Torrent speed limits - Όρια ταχύτητας torrent + Όρια ταχύτητας torrent - + Download: Λήψη: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Αυτά δεν θα ξεπερνούν τα γενικά όρια - + Upload: Αποστολή: - Torrent share limits - Όρια διαμοιρασμού torrent + Όρια διαμοιρασμού torrent - Use global share limit - Χρήση γενικού ορίου διαμοιρασμού + Χρήση γενικού ορίου διαμοιρασμού - Set no share limit - Ορισμός κανενός ορίου διαμοιρασμού + Ορισμός κανενός ορίου διαμοιρασμού - Set share limit to - Ορισμός ορίου διαμοιρασμού σε + Ορισμός ορίου διαμοιρασμού σε - ratio - αναλογία + αναλογία - total minutes - συνολικά λεπτά + συνολικά λεπτά - inactive minutes - ανενεργά λεπτά + ανενεργά λεπτά - + Disable DHT for this torrent Απενεργοποίηση DHT για αυτό το torrent - + Download in sequential order Λήψη σε διαδοχική σειρά - + Disable PeX for this torrent Απενεργοποίηση PeX για αυτό το torrent - + Download first and last pieces first Λήψη των πρώτων και των τελευταίων κομματιών πρώτα - + Disable LSD for this torrent Απενεργοποίηση LSD για αυτό το torrent - + Currently used categories Κατηγορίες που χρησιμοποιούνται αυτήν τη στιγμή - - + + Choose save path Επιλέξτε διαδρομή αποθήκευσης - + Not applicable to private torrents Δεν εφαρμόζεται σε ιδιωτικά torrent - No share limit method selected - Δεν επιλέχθηκε μέθοδος ορίου διαμοιρασμού + Δεν επιλέχθηκε μέθοδος ορίου διαμοιρασμού - Please select a limit method first - Παρακαλώ επιλέξτε πρώτα μια μέθοδο ορίου + Παρακαλώ επιλέξτε πρώτα μια μέθοδο ορίου - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Ετικέτες Torrent + + + + + Default + Προεπιλογή - - New Tag - Νέα Ετικέτα + + + + Unlimited + Απεριόριστο - - Tag: - Ετικέτα: + + + + Set to + Ορισμός σε - - Invalid tag name - Μη έγκυρο όνομα ετικέτας + + Seeding time: + Χρόνος seeding: - - Tag name '%1' is invalid. - Το όνομα ετικέτας "% 1" δεν είναι έγκυρο. + + + + + + + min + minutes + λεπτά - - Tag exists - Η ετικέτα υπάρχει + + Inactive seeding time: + Χρόνος που δεν γίνεται seeding - - Tag name already exists. - Το όνομα της ετικέτας υπάρχει ήδη + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Σφάλμα: το '%1' δεν είναι έγκυρο αρχείο torrent. + + Stop torrent + - - Priority must be an integer - Η προτεραιότητα πρέπει να είναι ένας ακέραιος αριθμός + + Remove torrent + Αφαίρεση torrent - - Priority is not valid - Η προτεραιότητα δεν είναι έγκυρη + + Remove torrent and its content + - - Torrent's metadata has not yet downloaded + + Enable super seeding for torrent + Ενεργοποίηση super seeding για το torrent + + + + Ratio: + Αναλογία: + + + + TorrentTagsDialog + + + Torrent Tags + Ετικέτες Torrent + + + New Tag + Νέα Ετικέτα + + + + Add tag + + + + + Tag: + Ετικέτα: + + + + Invalid tag name + Μη έγκυρο όνομα ετικέτας + + + + Tag name '%1' is invalid. + Το όνομα ετικέτας "% 1" δεν είναι έγκυρο. + + + + Tag exists + Η ετικέτα υπάρχει + + + + Tag name already exists. + Το όνομα της ετικέτας υπάρχει ήδη + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Σφάλμα: το '%1' δεν είναι έγκυρο αρχείο torrent. + + + + Priority must be an integer + Η προτεραιότητα πρέπει να είναι ένας ακέραιος αριθμός + + + + Priority is not valid + Η προτεραιότητα δεν είναι έγκυρη + + + + Torrent's metadata has not yet downloaded Τα μεταδεδομένα του torrent δεν έχουν ληφθεί ακόμη - + File IDs must be integers Τα IDs αρχείου πρέπει να είναι ακέραιοι - + File ID is not valid Το ID αρχείου δεν είναι έγκυρο - - - - + + + + Torrent queueing must be enabled Η ουρά torrent πρέπει να είναι ενεργοποιημένη - - + + Save path cannot be empty Η διαδρομή αποθήκευσης δεν μπορεί να είναι κενή - - + + Cannot create target directory Δεν είναι δυνατή η δημιουργία του καταλόγου προορισμού - - + + Category cannot be empty Η κατηγορία δεν μπορεί να είναι κενή - + Unable to create category Δεν ήταν δυνατή η δημιουργία της κατηγορίας - + Unable to edit category Δεν ήταν δυνατή η επεξεργασία της κατηγορίας - + Unable to export torrent file. Error: %1 Αδυναμία εξαγωγής του αρχείου torrent. Σφάλμα: %1 - + Cannot make save path Αδυναμία δημιουργίας διαδρομής αποθήκευσης - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Η παράμετρος 'sort' δεν είναι έγκυρη - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. Το "%1" δεν είναι έγκυρο index αρχείο. - + Index %1 is out of bounds. Το index %1 είναι εκτός ορίων. - - + + Cannot write to directory Δεν είναι δυνατή η εγγραφή στον κατάλογο - + WebUI Set location: moving "%1", from "%2" to "%3" Ρύθμιση τοποθεσίας WebUI: μεταφορά "%1", από "%2" σε "%3" - + Incorrect torrent name Λανθασμένο όνομα torrent - - + + Incorrect category name Λανθασμένο όνομα κατηγορίας @@ -10798,257 +11425,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - Λειτουργεί + Λειτουργεί - + Disabled - + Απενεργοποιημένο - + Disabled for this torrent - Απενεργοποιημένο για αυτό το torrent + Απενεργοποιημένο για αυτό το torrent - + This torrent is private - Αυτό το torrent είναι ιδιωτικό + Αυτό το torrent είναι ιδιωτικό - + N/A - Δ/Υ + Δ/Υ - + Updating... - Γίνεται ενημέρωση... + Ενημερώνεται... - + Not working - Δεν λειτουργεί + Δεν Λειτουργεί - + Tracker error - + Σφάλμα tracker - + Unreachable - + Απρόσιτος - + Not contacted yet - Δεν έχει επικοινωνήσει ακόμα + Χωρίς επικοινωνία ακόμα - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Μη έγκυρη κατάσταση! + + + URL/Announce endpoint + Τελικό σημείο URL/αναγγελίας + Tier + Επίπεδο + + Protocol - + Πρωτόκολλο - + Status - Κατάσταση + Κατάσταση - + Peers - Peers + Peers - + Seeds - Seeds + Διαμοιραστές - + Leeches - Leeches + Leeches - + Times Downloaded - Φορές Λήψης + Φορές Λήψης - + Message - Μήνυμα + Μήνυμα - Next announce - + Επόμενη ανακοίνωση - Min announce - + Ελάχ. ανακοίνωση - v%1 - + v%1 TrackerListWidget - Working - Λειτουργεί - - - Disabled - Απενεργοποιημένος - - - Disabled for this torrent - Απενεργοποιημένο για αυτό το torrent - - - + This torrent is private Αυτό το torrent είναι ιδιωτικό - Updating... - Γίνεται ενημέρωση... - - - Not working - Δεν λειτουργεί - - - Not contacted yet - Δεν έχει επικοινωνήσει ακόμα - - - N/A - Δ/Υ - - - + Tracker editing Επεξεργασία tracker - + Tracker URL: URL του tracker: - - + + Tracker editing failed Η επεξεργασία του tracker απέτυχε - + The tracker URL entered is invalid. Το URL του tracker που καταχωρίσατε δεν είναι έγκυρο. - + The tracker URL already exists. Το URL του tracker υπάρχει ήδη. - + Edit tracker URL... Επεξεργασία URL του tracker... - + Remove tracker Αφαίρεση tracker - + Copy tracker URL Αντιγραφή URL του tracker - + Force reannounce to selected trackers Εξαναγκασμός reannounce σε επιλεγμένους trackers - + Force reannounce to all trackers Εξαναγκασμός reannounce σε όλους τους trackers - Tier - Tier - - - URL - URL - - - Status - Κατάσταση - - - Seeds - Seeds - - - Times Downloaded - Φορές Λήψης - - - + Resize columns Αλλαγή μεγέθους στηλών - + Resize all non-hidden columns to the size of their contents Αλλαγή του μεγέθους όλων των μη κρυφών στηλών στο μέγεθος του περιεχομένου τους - Peers - Peers - - - + Add trackers... Προσθήκη trackers... - Leeches - Leeches - - - Message - Μήνυμα - - - + Column visibility Ορατότητα στήλης @@ -11066,37 +11651,37 @@ Please choose a different name and try again. Λίστα trackers για προσθήκη (ένας ανά γραμμή): - + µTorrent compatible list URL: URL λίστας συμβατής με το µTorrent: - + Download trackers list Λήψη λίστας tracker - + Add Προσθήκη - + Trackers list URL error Σφάλμα διεύθυνσης URL λίστας tracker - + The trackers list URL cannot be empty Η λίστα tracker δεν μπορεί να είναι κενή - + Download trackers list error Σφάλμα λήψης λίστας tracker - + Error occurred when downloading the trackers list. Reason: "%1" Παρουσιάστηκε σφάλμα κατά τη λήψη της λίστας των tracker. Αιτία: "%1" @@ -11104,87 +11689,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Όλα (0) - - - Trackerless (0) - Χωρίς Tracker (0) - - - Error (0) - Σφάλμα (0) - - - Warning (0) - Προειδοποίηση (0) - - - Trackerless - Χωρίς Tracker - - - Error (%1) - Σφάλμα (%1) - - - + Warning (%1) Προειδοποίηση (%1) - + Trackerless (%1) Χωρίς Tracker (%1) - + Tracker error (%1) - + Σφάλμα ιχνηλάτη (%1) - + Other error (%1) - + Άλλο σφάλμα (%1) - + Remove tracker - Αφαίρεση tracker + Αφαίρεση tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Συνέχιση των torrents + Συνέχιση των torrents - Pause torrents - Παύση torrents + Παύση torrents - + Remove torrents Αφαίρεση torrent - + Removal confirmation - + Επιβεβαίωση διαγραφής - + Are you sure you want to remove tracker "%1" from all torrents? - + Είστε βέβαιοι ότι θέλετε να αφαιρέσετε το tracker "%1" από όλα τα torrents; - + Don't ask me again. - + Να μην εμφανιστεί ξανά - + All (%1) this is for the tracker filter Όλα (%1) @@ -11193,7 +11761,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'mode': μη έγκυρο όρισμα @@ -11286,9 +11854,8 @@ Please choose a different name and try again. Έλεγχος δεδομένων συνέχισης - Paused - Σε παύση + Σε παύση @@ -11313,220 +11880,262 @@ Please choose a different name and try again. Με σφάλματα - + Name i.e: torrent name Όνομα - + Size i.e: torrent size Μέγεθος - + Progress % Done Πρόοδος - Status Torrent status (e.g. downloading, seeding, paused) - Κατάσταση + Κατάσταση - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Κατάσταση + + + Seeds i.e. full sources (often untranslated) Seeds - + Peers i.e. partial sources (often untranslated) Peers - + Down Speed i.e: Download speed Ταχύτητα λήψης - + Up Speed i.e: Upload speed Ταχύτητα Αποστολής - + Ratio Share ratio Αναλογία - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ΠΩΑ - + Category Κατηγορία - + Tags Ετικέτες - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Προστέθηκε στις - + Completed On Torrent was completed on 01/01/2010 08:00 Ολοκληρώθηκε στις - + Tracker Tracker - + Down Limit i.e: Download limit Όριο Λήψης - + Up Limit i.e: Upload limit Όριο Αποστολής - + Downloaded Amount of data downloaded (e.g. in MB) Ληφθέντα - + Uploaded Amount of data uploaded (e.g. in MB) Απεσταλμένα - + Session Download Amount of data downloaded since program open (e.g. in MB) Ληφθέντα Συνεδρίας - + Session Upload Amount of data uploaded since program open (e.g. in MB) Απεσταλμένα Συνεδρίας - + Remaining Amount of data left to download (e.g. in MB) Απομένουν - + + Time Active + Time (duration) the torrent is active (not stopped) + Χρόνος εν Ενεργεία + + + + Yes + Ναι + + + + No + Όχι + + Time Active Time (duration) the torrent is active (not paused) - Χρόνος εν Ενεργεία + Χρόνος εν Ενεργεία - + Save Path Torrent save path Διαδρομή Aποθήκευσης - + Incomplete Save Path Torrent incomplete save path Μη συμπληρωμένη Διαδρομή Αποθήκευσης - + Completed Amount of data completed (e.g. in MB) Ολοκληρωμένα - + Ratio Limit Upload share ratio limit Όριο Αναλογίας - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Τελευταία Βρέθηκε Ολοκληρωμένο - + Last Activity Time passed since a chunk was downloaded/uploaded Τελευταία δραστηριότητα - + Total Size i.e. Size including unwanted data Συνολικό μέγεθος - + Availability The number of distributed copies of the torrent Διαθεσιμότητα - + Info Hash v1 i.e: torrent info hash v1 Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Επανανακοίνωση σε: + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Δ/Υ - + %1 ago e.g.: 1h 20m ago πριν από %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seeded για %2) @@ -11535,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Ορατότητα στήλης - + Recheck confirmation Επιβεβαίωση επανέλεγχου - + Are you sure you want to recheck the selected torrent(s)? Είστε σίγουροι πως θέλετε να επανελέγξετε τα επιλεγμένα torrent(s); - + Rename Μετονομασία - + New name: Νέο όνομα: - + Choose save path Επιλέξτε διαδρομή αποθήκευσης - Confirm pause - Επιβεβαίωση παύσης + Επιβεβαίωση παύσης - Would you like to pause all torrents? - Θέλετε σίγουρα να θέσετε σε παύση όλα τα torrent; + Θέλετε σίγουρα να θέσετε σε παύση όλα τα torrent; - Confirm resume - Επιβεβαίωση συνέχισης + Επιβεβαίωση συνέχισης - Would you like to resume all torrents? - Θέλετε σίγουρα να θέσετε σε συνέχιση όλα τα torrent; + Θέλετε σίγουρα να θέσετε σε συνέχιση όλα τα torrent; - + Unable to preview Αδυναμία προεπισκόπησης - + The selected torrent "%1" does not contain previewable files Το επιλεγμένο torrent "%1" δεν περιέχει αρχεία με δυνατότητα προεπισκόπησης - + Resize columns Αλλαγή μεγέθους στηλών - + Resize all non-hidden columns to the size of their contents Αλλαγή του μεγέθους όλων των μη κρυφών στηλών στο μέγεθος του περιεχομένου τους - + Enable automatic torrent management Ενεργοποίηση αυτόματης διαχείρισης torrent - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Είστε βέβαιοι πως θέλετε να ενεργοποιήσετε την Αυτόματη Διαχείριση Torrent για τα επιλεγμένα torrent(s); Μπορεί να μετεγκατασταθούν. - Add Tags - Προσθήκη ετικετών + Προσθήκη ετικετών - + Choose folder to save exported .torrent files Επιλέξτε φάκελο για αποθήκευση εξαγόμενων αρχείων .torrent - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Η εξαγωγή αρχείου .torrent απέτυχε. Torrent: "%1". Αποθήκευση διαδρομής: "%2". Αιτία: "%3" - + A file with the same name already exists Υπάρχει ήδη αρχείο με το ίδιο όνομα - + Export .torrent file error Σφάλμα εξαγωγής αρχείου .torrent - + Remove All Tags Αφαίρεση όλων των ετικετών - + Remove all tags from selected torrents? Αφαίρεση όλων των ετικετών από τα επιλεγμένα torrent; - + Comma-separated tags: Ετικέτες χωρισμένες με κόμμα: - + Invalid tag Μη έγκυρη ετικέτα - + Tag name: '%1' is invalid Το όνομα ετικέτας '%1' δεν είναι έγκυρο. - &Resume Resume/start the torrent - &Συνέχιση + &Συνέχιση - &Pause Pause the torrent - &Παύση + &Παύση - Force Resu&me Force Resume/start the torrent - Εξαναγκαστική Συνέχι&ση + Εξαναγκαστική Συνέχι&ση - + Pre&view file... Προε&πισκόπηση αρχείου… - + Torrent &options... &Ρυθμίσεις torrent... - + Open destination &folder Ανοιγμα φακέλου &προορισμού - + Move &up i.e. move up in the queue Μετακίνηση &επάνω - + Move &down i.e. Move down in the queue Μετακίνηση &κάτω - + Move to &top i.e. Move to top of the queue Μετακίνηση στην &κορυφή - + Move to &bottom i.e. Move to bottom of the queue Μετακίνηση στο &τέλος - + Set loc&ation... Ρύθμιση τοπο&θεσίας… - + Force rec&heck Εξαναγκαστικός επανέ&λεγχος - + Force r&eannounce Εξαναγκαστική επανανακοίνωση - + &Magnet link &Σύνδεσμος Magnet - + Torrent &ID Torrent &ID - + + &Comment + &Σχόλιο + + + &Name &Ονομα - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Μετ&ονομασία - + Edit trac&kers... Επεξεργασία trac&kers... - + E&xport .torrent... Ε&ξαγωγή .torrent... - + Categor&y Κατηγορί&α - + &New... New category... &Νέο... - + &Reset Reset category &Επαναφορά - + Ta&gs Ετικ&έτες - + &Add... Add / assign multiple tags... &Προσθήκη... - + &Remove All Remove all tags &Αφαίρεση Ολων - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Ουρά - + &Copy &Αντιγραφή - + Exported torrent is not necessarily the same as the imported Το εξαγόμενο torrent δεν είναι απαραίτητα το ίδιο με το εισαγόμενο - + Download in sequential order Λήψη σε διαδοχική σειρά - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Παρουσιάστηκαν σφάλματα κατά την εξαγωγή αρχείων .torrent. Ελέγξτε το αρχείο καταγραφής εκτέλεσης για λεπτομέρειες. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Αφαίρεση - + Download first and last pieces first Λήψη πρώτων και τελευταίων κομματιών πρώτα - + Automatic Torrent Management Αυτόματη Διαχείριση Torrent - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Η αυτόματη λειτουργία σημαίνει ότι διάφορες ιδιότητες του torrent (π.χ. διαδρομή αποθήκευσης) θα καθοριστούν από την συσχετισμένη κατηγορία. - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Δεν είναι δυνατή η εξαναγκαστική επανανακοίνωση εάν το torrent είναι Σε Παύση/Με Σφάλματα/Επανελέγχεται + Δεν είναι δυνατή η εξαναγκαστική επανανακοίνωση εάν το torrent είναι Σε Παύση/Με Σφάλματα/Επανελέγχεται - + Super seeding mode Λειτουργία super seeding @@ -11907,28 +12540,28 @@ Please choose a different name and try again. ID Εικονιδίου - + UI Theme Configuration. Διαμόρφωση Θέματος UI. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Οι αλλαγές στο Θέμα του UI δεν μπόρεσαν να εφαρμοστούν πλήρως. Οι λεπτομέρειες μπορούν να βρεθούν στο Αρχείο καταγραφής. - + Couldn't save UI Theme configuration. Reason: %1 Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων στο Θέμα του UI. Αιτία: %1 - - + + Couldn't remove icon file. File: %1. Δεν ήταν δυνατή η κατάργηση του αρχείου εικονιδίου. Αρχείο: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Δεν ήταν δυνατή η αντιγραφή του αρχείου εικονιδίου. Πηγή: %1. Προορισμός: %2. @@ -11936,7 +12569,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Αποτυχία φόρτωσης θέματος του UI από το αρχείο: "%1" @@ -11967,89 +12605,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Αποτυχία μετεγκατάστασης προτιμήσεων: WebUI HTTPS, αρχείο: "%1", σφάλμα: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Μετεγκατάσταση προτιμήσεων: WebUI HTTPS, τα δεδομένα έγιναν εξαγωγή στο αρχείο: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Βρέθηκε μη έγκυρη τιμή στο αρχείο διαμόρφωσης, γίνεται επαναφορά του στην προεπιλεγμένη . Κλειδί: "%1". Μη έγκυρη τιμή: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Ανιχνεύθηκε Python, όνομα εκτελέσιμου: '%1', έκδοση: %2 - - - Python not detected - Δεν ανιχνεύθηκε Python - Found Python executable. Name: "%1". Version: "%2" - + Βρέθηκε εκτελέσιμο αρχείο Python. Όνομα: "%1". Έκδοση: "%2" Failed to find Python executable. Path: "%1". - + Απέτυχε να βρει το εκτελέσιμο αρχείο Python. Μονοπάτι: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Αποτύχαμε να βρούμε το εκτελέσιμο αρχείο `python3` στη μεταβλητή περιβάλλοντος PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Αποτύχαμε να βρούμε το εκτελέσιμο αρχείο `python` στη μεταβλητή περιβάλλοντος PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Αποτύχαμε να βρούμε το εκτελέσιμο αρχείο `python` στο μητρώο των Windows. Failed to find Python executable - + Απέτυχε να βρει εκτελέσιμο αρχείο Python Utils::IO - + File open error. File: "%1". Error: "%2" Σφάλμα ανοίγματος αρχείου. Αρχείο: "%1". Σφάλμα: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Το μέγεθος του αρχείου υπερβαίνει το όριο. Αρχείο: "%1". Μέγεθος αρχείου: %2. Όριο μεγέθους: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Το μέγεθος του αρχείου υπερβαίνει το όριο. Αρχείο: "%1". Μέγεθος αρχείου: %2. Όριο μεγέθους: %3 - + File read error. File: "%1". Error: "%2" Σφάλμα ανάγνωσης αρχείου. Αρχείο: «%1». Σφάλμα: «%2» - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Αναντιστοιχία μεγέθους ανάγνωσης. Αρχείο: "%1". Αναμενόμενο: %2. Πραγματικό: %3 @@ -12113,72 +12744,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Καθορίστηκε μη αποδεκτό όνομα cookie συνεδρίας: '%1'. Χρησιμοποιείται η προεπιλογή. - + Unacceptable file type, only regular file is allowed. Μη αποδεκτός τύπος αρχείου, μόνο κανονικό αρχείο επιτρέπεται. - + Symlinks inside alternative UI folder are forbidden. Τα symlinks απαγορεύονται μέσα σε εναλλακτικό φάκελο του UI. - - Using built-in Web UI. - Χρησιμοποιείται ενσωματωμένο Web UI. + + Using built-in WebUI. + Χρήση ενσωματωμένου WebUI. - - Using custom Web UI. Location: "%1". - Χρησιμοποιείται προσαρμοσμένο Web UI. Τοποθεσία: "%1". + + Using custom WebUI. Location: "%1". + Χρήση προσαρμοσμένου WebUI. Τοποθεσία: "% 1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Η μετάφραση του Web UI για τη συγκεκριμένη γλώσσα (%1) φορτώθηκε με επιτυχία. + + WebUI translation for selected locale (%1) has been successfully loaded. + Η μετάφραση WebUI για επιλεγμένες τοπικές ρυθμίσεις (%1) φορτώθηκε με επιτυχία. - - Couldn't load Web UI translation for selected locale (%1). - Δεν ήταν δυνατή η φόρτωση της μετάφρασης του Web UI για την επιλεγμένη γλώσσα (%1). + + Couldn't load WebUI translation for selected locale (%1). + Δεν ήταν δυνατή η φόρτωση της μετάφρασης WebUI για επιλεγμένες τοπικές ρυθμίσεις (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Λείπει το διαχωριστικό «:» στην προσαρμοσμένη κεφαλίδα του HTTP στο WebUI: "%1" - + Web server error. %1 Σφάλμα διακομιστή Web. %1 - + Web server error. Unknown error. Σφάλμα διακομιστή Web. Άγνωστο σφάλμα. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Αναντιστοιχία προέλευσης κεφαλίδας & προέλευσης στόχου! Πηγή IP: '%1'. Προέλευση κεφαλίδας : '%2'. Προέλευση στόχου: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Αναντιστοιχία κεφαλίδας referer & προέλευση στόχου! Πηγή IP: '%1'. Κεφαλίδα referer : '%2'. Προέλευση στόχου: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Μη έγκυρη κεφαλίδα Host, αναντιστοιχία θυρών. IP προέλευσης αιτήματος: '%1'. Θύρα εξυπηρετητή: '%2'. Κεφαλίδα Host που ελήφθη: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Μη έγκυρη κεφαλίδα Host. IP προέλευσης αιτήματος: '%1'. Κεφαλίδα Host που ελήφθη: '%2' @@ -12186,143 +12817,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI: Επιτυχής διαμόρφωση του HTTPS + + Credentials are not set + Τα διαπιστευτήρια δεν έχουν οριστεί + + + + WebUI: HTTPS setup successful + WebUI: Επιτυχής εγκατάσταση HTTPS + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: Η ρύθμιση HTTPS απέτυχε, εναλλαγή σε HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: Απέτυχε η διαμόρφωση του HTTPS, υποχώρηση σε HTTP + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Ακρόαση IP: %1, θύρα: %2 - - Web UI: Now listening on IP: %1, port: %2 - Web UI: Γίνεται ακρόαση σε IP: %1, θύρα: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Δεν είναι δυνατή η σύνδεση με IP: %1, θύρα: %2. Αιτία: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Αδυναμία δέσμευσης σε IP: %1, θύρα: %2. Αιτία: %3 + + Unknown error + Αγνωστο σφάλμα misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1λεπτά {1s?} + %1s - + %1m e.g: 10 minutes - %1λεπτά + %1λ - + %1h %2m e.g: 3 hours 5 minutes - %1ώρες %2λεπτά + %1ώ %2λ - + %1d %2h e.g: 2 days 10 hours - %1ημέρες %2ώρες + %1ημ. %2ώ. - + %1y %2d e.g: 2 years 10 days - %1χρόνια %2ημέρες + %1χρ. %2ημ. - %1h %2m - e.g: 3hours 5minutes - %1ώρες %2λεπτά - - - %1d %2h - e.g: 2days 10hours - %1ημέρες %2ώρες - - - %1y %2d - e.g: 2years 10days - %1χρόνια %2ημέρες - - - - + + Unknown Unknown (size) Άγνωστο - + qBittorrent will shutdown the computer now because all downloads are complete. Το qBittorrent θα απενεργοποιήσει τον υπολογιστή τώρα καθώς έχουν ολοκληρωθεί όλες οι λήψεις. - + < 1m < 1 minute < 1λεπτό - - %1m - e.g: 10minutes - %1λεπτά - diff --git a/src/lang/qbittorrent_en.ts b/src/lang/qbittorrent_en.ts index 8aaaba5b782d..9fcbb73ce224 100644 --- a/src/lang/qbittorrent_en.ts +++ b/src/lang/qbittorrent_en.ts @@ -14,75 +14,75 @@ - + Authors - + Current maintainer - + Greece - - + + Nationality: - - + + E-mail: - - + + Name: - + Original author - + France - + Special Thanks - + Translators - + License - + Software Used - + qBittorrent was built with the following libraries: - + Copy to clipboard @@ -93,7 +93,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,15 +166,10 @@ - + Never show again - - - Torrent settings - - Set as default category @@ -191,12 +186,12 @@ - + Torrent information - + Skip hash check @@ -205,6 +200,11 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -231,70 +231,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: - + Original - + Create subfolder - + Don't create subfolder - + Info hash v1: - + Size: - + Comment: - + Date: @@ -324,152 +329,147 @@ - + Do not delete .torrent file - + Download in sequential order - + Download first and last pieces first - + Info hash v2: - + Select All - + Select None - + Save as .torrent file... - + I/O Error - + Not Available This comment is unavailable - + Not Available This date is unavailable - + Not available - + Magnet link - + Retrieving metadata... - - + + Choose save path - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A - + %1 (Free space on disk: %2) - + Not available This size is unavailable. - + Torrent file (*%1) - + Save as torrent file - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - + Filter files... - + Parsing metadata... - + Metadata retrieval complete @@ -487,22 +487,22 @@ - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -590,72 +590,77 @@ - - - Choose save path + + Torrent share limits - - - - - - - Default + + + Choose save path + + + - Yes + Default + Yes + + + + + + No - + Manual - + Automatic - + Original - + Create subfolder - + Don't create subfolder - + None - + Metadata received - + Files checked @@ -663,734 +668,852 @@ AdvancedSettings - - - - + + + + MiB - + Recheck torrents on completion - - + + ms milliseconds - + Setting - + Value Value set for this setting - + (disabled) - + (auto) - + + min minutes - + All addresses - + qBittorrent Section - - + + Open documentation - + All IPv4 addresses - + All IPv6 addresses - + libtorrent Section - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal - + Below normal - + Medium - + Low - + Very low - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache - - - - + + + + s seconds - + Disk cache expiry interval - + Disk queue size - - + + Enable OS cache - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications - + Display notifications for added torrents - + Download tracker's favicon - + Save path history length - + Enable speed graphs - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker - + Embedded tracker port - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started + + + Invalid directory path + + + + + Directory does not exist - + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 - + Torrent size: %1 - + Save path: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds - + + Thank you for using qBittorrent. - + Torrent: %1, sending mail notification - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit - + I/O Error i.e: Input/Output Error - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1398,109 +1521,110 @@ - + Torrent added - + '%1' was added. e.g: xxx.avi was added. - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started - - Information + + This is a test email. - - To fix the error, you may need to edit the config file manually. + + Test email - - To control qBittorrent, access the WebUI at: %1 + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. - - The Web UI administrator username is: %1 + + Information - - The Web UI administrator password has not been changed from the default: %1 + + To fix the error, you may need to edit the config file manually. - - This is a security risk, please change your password in program preferences. + + To control qBittorrent, access the WebUI at: %1 - + Exit - + Recursive download confirmation - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... - + qBittorrent is now ready to exit @@ -1508,7 +1632,7 @@ AsyncFileStorage - + Could not create directory '%1'. @@ -1516,22 +1640,22 @@ AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1579,12 +1703,12 @@ - + Must Not Contain: - + Episode Filter: @@ -1636,263 +1760,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Matches articles based on episode filter. - + Example: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: - + Season number is a mandatory non-zero value - + Filter must end with semicolon - + Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value - + Rules - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago - + Last Match: Unknown - + New rule name - + Please type the name of the new download rule. - - + + Rule name conflict - - + + A rule with this name already exists, please choose another name. - + Are you sure you want to remove the download rule named '%1'? - + Are you sure you want to remove the selected download rules? - + Rule deletion confirmation - + Invalid action - + The list is empty, there is nothing to export. - + Export RSS rules - + I/O Error - + Failed to create the destination file. Reason: %1 - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Add new rule... - + Delete rule - + Rename rule... - + Delete selected rules - + Clear downloaded episodes... - + Rule renaming - + Please type the new rule name - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1934,53 +2058,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -1988,38 +2117,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2027,22 +2156,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2050,466 +2179,520 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source - + UPnP/NAT-PMP support: OFF - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - - Removed torrent and deleted its content. Torrent: "%1" - - - - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2517,62 +2700,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2593,184 +2781,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: - + [options] [(<filename> | <url>)...] - + Options: - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help @@ -2778,17 +2971,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories - + All - + Uncategorized @@ -2822,12 +3015,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents + Start torrents - Pause torrents + Stop torrents @@ -2839,15 +3032,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset + + + System + + CookiesDialog @@ -2888,12 +3086,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2901,7 +3099,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -2920,23 +3118,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove @@ -2949,12 +3147,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Add torrent links - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -2964,12 +3162,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + No URL entered - + Please type at least one URL. @@ -3128,25 +3326,48 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - - Trackers cannot be merged because it is a private torrent + + Torrent is already present - - Torrent is already present + + Trackers cannot be merged because it is a private torrent. - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3154,38 +3375,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. - + Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 - + Unsupported IP version: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3193,17 +3414,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3244,36 +3465,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... - + Reset - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned @@ -3282,88 +3531,61 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - - No further notices will be issued. - - - - - Press %1 key to accept and continue... - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + You cannot use %1: qBittorrent is already running. - - Legal notice + + Another qBittorrent instance is already running. - - Cancel + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - I Agree + + Error when daemonizing. Reason: "%1". Error code: %2. @@ -3375,599 +3597,676 @@ No further notices will be issued. - + &Tools - + &File - + &Help - + On Downloads &Done - + &View - + &Options... - - &Resume - - - - + &Remove - + Torrent &Creator - - + + Alternative Speed Limits - + &Top Toolbar - + Display Top Toolbar - + Status &Bar - + Filters Sidebar - + S&peed in Title Bar - + Show Transfer Speed in Title Bar - + &RSS Reader - + Search &Engine - + L&ock qBittorrent - + Do&nate! - - &Do nothing + + Sh&utdown System - - Close Window + + &Do nothing - - R&esume All + + Close Window - + Manage Cookies... - + Manage stored network cookies - + Normal Messages - + Information Messages - + Warning Messages - + Critical Messages - + &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue - + Move to the bottom of the queue - + Top of Queue - + Move to the top of the queue - + Move Down Queue - + Move down in the queue - + Move Up Queue - + Move up in the queue - + &Exit qBittorrent - + &Suspend System - + &Hibernate System - - S&hutdown System - - - - + &Statistics - + Check for Updates - + Check for Program Updates - + &About - - &Pause - - - - - P&ause All - - - - + &Add Torrent File... - + Open - + E&xit - + Open URL - + &Documentation - + Lock - - - + + + Show - + Check for program updates - + Add Torrent &Link... - + If you like qBittorrent, please donate! - - + + Execution Log - + Clear the password - + &Set Password - + Preferences - + &Clear Password - + Transfers - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only - + Text Only - + Text Alongside Icons - + Text Under Icons - + Follow System Style - - + + UI lock password - - + + Please type the UI lock password: - + Are you sure you want to clear the password? - + Use regular expressions - + + + Search Engine + + + + + Search has failed + + + + + Search has finished + + + + Search - + Transfers (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + &No - + &Yes - + &Always Yes - + Options saved. - - + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime - + qBittorrent Update Available - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime - + A new version is available. - + Do you want to download %1? - + Open changelog... - + No updates available. You are already using the latest version. - + &Check for Updates - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + + + + Checking for Updates... - + Already checking for program updates in the background - - Download error + + Python installation in progress... - - Python setup could not be downloaded, reason: %1. -Please install it manually. + + Failed to open Python installer. File: "%1". - - - Invalid password + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". - - Filter torrents... + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". - - Filter by: + + Download error + + + + + + Invalid password + + + + + Filter torrents... + + + + + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) - + The password is invalid - + DL speed: %1 e.g: Download speed: 10 KiB/s - + UP speed: %1 e.g: Upload speed: 10 KiB/s - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - - - - + Hide - + Exiting qBittorrent - + Open Torrent Files - + Torrent Files @@ -4028,133 +4327,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) - + The operation was canceled - + The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out - + SSL/TLS handshake failed - + The remote server refused the connection - + The connection to the proxy server was refused - + The proxy server closed the connection prematurely - + The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known - + The requested operation is invalid for this protocol - + An unknown network-related error was detected - + An unknown proxy-related error was detected - + An unknown error related to the remote content was detected - + A breakdown in protocol was detected - + Unknown error @@ -4162,7 +4461,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5533,477 +5837,501 @@ Please install it manually. BitTorrent - - - RSS - - - Web UI + RSS - + Advanced - + Customize UI Theme... - + Transfer List - + Confirm when deleting torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always - - Paused torrents only - - - - + Action on double-click - + Downloading torrents: - - - Start / Stop Torrent - - - - - + + Open destination folder - - + + No action - + Completed torrents: - + Auto hide zero status filters - + Desktop - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB - + Torrent content layout: - + Original - + Create subfolder - + Don't create subfolder - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... - + Options.. - + Remove - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: + + + + + Any - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time - + To: To end time - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: - - - + + + min minutes - + Seeding Limits - - Pause torrent - - - - + Remove torrent - + Remove torrent and its files - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: - + Web User Interface (Remote control) - + IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never - + ban for: - + Session timeout: - + Disabled - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6012,441 +6340,482 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area - + + Search + + + + + WebUI + + + + Interface - + Language: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal - + File association - + Use qBittorrent for .torrent files - + Use qBittorrent for magnet links - + Check for program updates - + Power Management - + + &Log Files + + + + Save path: - + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management - + Default Torrent Management Mode: - + Manual - + Automatic - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + Copy .torrent files to: - + Show &qBittorrent in notification area - - &Log file - - - - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6463,841 +6832,902 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver - + SMTP server: - + Sender - + From: From sender - + This server requires a secure connection (SSL) - - + + Authentication - - - - + + + + Username: - - - - + + + + Password: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP - + Listening Port - + Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Random - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits - + Maximum number of connections per torrent: - + Global maximum number of connections: - + Maximum number of upload slots per torrent: - + Global maximum number of upload slots: - + Proxy Server - + Type: - + SOCKS4 - + SOCKS5 - + HTTP - - + + Host: - - - + + + Port: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... - + Apply to trackers - + Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s - - + + Upload: - - + + Download: - + Alternative Rate Limits - + Start time - + End time - + When: - + Every day - + Weekdays - + Weekends - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + Torrent inactivity timer: - + then - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: - + Key: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - - Use alternative Web UI + + Files location: - - Files location: + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> - + Security - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: - + Register - + Domain name: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name - + %L: Category - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files - + %Z: Torrent size (bytes) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Select certificate - + Private key - + Select private key - - Select folder to monitor + + WebUI configuration failed. Reason: %1 - - Adding entry failed + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode - - Location Error + + System + System default Qt style - - The alternative Web UI files location cannot be blank. + + Let Qt decide the style for this system - - - Choose export directory + + Dark + Dark color scheme - - When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well + + Light + Light color scheme - - qBittorrent UI Theme file (*.qbtheme config.json) + + System + System color scheme - - %G: Tags (separated by comma) + + Select folder to monitor - - %I: Info hash v1 (or '-' if unavailable) + + Adding entry failed - - %J: Info hash v2 (or '-' if unavailable) + + The WebUI username must be at least 3 characters long. - - %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) + + The WebUI password must be at least 6 characters long. - - - - Choose a save directory + + Location Error - - Choose an IP filter file + + + Choose export directory - - All supported filters + + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - - Parsing error + + qBittorrent UI Theme file (*.qbtheme config.json) - - Failed to parse the provided IP filter + + %G: Tags (separated by comma) - - Successfully refreshed + + %I: Info hash v1 (or '-' if unavailable) - - Successfully parsed the provided IP filter: %1 rules were applied. - %1 is a number + + %J: Info hash v2 (or '-' if unavailable) - - Preferences + + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - Time Error + + + + Choose a save directory - - The start time and the end time can't be the same. + + Torrents that have metadata initially will be added as stopped. - - - Length Error + + Choose an IP filter file - - The Web UI username must be at least 3 characters long. + + All supported filters - - The Web UI password must be at least 6 characters long. + + The alternative WebUI files location cannot be blank. + + + + + Parsing error + + + + + Failed to parse the provided IP filter + + + + + Successfully refreshed + + + + + Successfully parsed the provided IP filter: %1 rules were applied. + %1 is a number + + + + + Preferences + + + + + Time Error + + + + + The start time and the end time can't be the same. + + + + + + Length Error PeerInfo - + Unknown - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7453,7 +7883,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A @@ -7476,7 +7906,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Format: IPv4:port / [IPv6]:port @@ -7517,27 +7947,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7550,58 +7980,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Installed search plugins: - + Name - + Version - + Url - - + + Enabled - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one - + Check for updates - + Close - + Uninstall @@ -7720,17 +8150,17 @@ Those plugins were disabled. - + Search plugin source: - + Local file - + Web link @@ -7771,47 +8201,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview - + Name - + Size - + Progress - + Preview impossible - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7824,27 +8254,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -7885,12 +8315,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: - + Availability: @@ -7905,53 +8335,53 @@ Those plugins were disabled. - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) - + ETA: - + Uploaded: - + Seeds: - + Download Speed: - + Upload Speed: - + Peers: - + Download Limit: - + Upload Limit: - + Wasted: @@ -7961,193 +8391,220 @@ Those plugins were disabled. - + Information - + Info Hash v1: - + Info Hash v2: - + Comment: - + Select All - + Select None - + Share Ratio: - + Reannounce In: - + Last Seen Complete: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: - + Pieces: - + Created By: - + Added On: - + Completed On: - + Created On: - + + Private: + + + + Save Path: - + Never - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - - + + %1 (%2 this session) - - + + + N/A - + + Yes + + + + + No + + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) - - New Web seed + + Add web seed + Add HTTP source - - Remove Web seed + + Add web seed: - - Copy Web seed URL + + + This web seed is already in the list. - - Edit Web seed URL + + Filter files... - - Filter files... + + Add web seed... - - Speed graphs are disabled + + Remove web seed - - You can enable it in Advanced Options + + Copy web seed URL - - New URL seed - New HTTP source + + Edit web seed URL... - - New URL seed: + + Speed graphs are disabled - - - This URL seed is already in the list. + + You can enable it in Advanced Options - + Web seed editing - + Web seed URL: @@ -8166,22 +8623,22 @@ Those plugins were disabled. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8189,22 +8646,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8240,12 +8697,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). @@ -8253,99 +8710,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8369,8 +8826,8 @@ Those plugins were disabled. - - + + Mark items read @@ -8395,132 +8852,132 @@ Those plugins were disabled. - - + + Delete - + Rename... - + Rename - - + + Update - + New subscription... - - + + Update all feeds - + Download torrent - + Open news URL - + Copy feed URL - + New folder... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name - + Folder name: - + New folder - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed - + New feed name: - + Rename failed - + Date: - + Feed: - + Author: @@ -8528,38 +8985,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 - + Failed to check for plugin updates: %1 @@ -8634,132 +9091,142 @@ Those plugins were disabled. - + Name i.e: file name - + Size i.e: file size - + Seeders i.e: Number of full sources - + Leechers i.e: Number of partial sources - - Search engine - - - - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere - + Use regular expressions - + Open download window - + Download - + Open description page - + Copy - + Name - + Download link - + Description page URL - + Searching... - + Search has finished - + Search aborted - + An error occurred during search... - + Search returned no results - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8767,104 +9234,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories - + Movies - + TV shows - + Music - + Games - + Anime - + Software - + Pictures - + Books - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8874,112 +9341,143 @@ Those plugins were disabled. - - - - Search - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins - + Only enabled - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab - + Close all tabs - + Select... - - - + + Search Engine - + + Please install Python to use the Search Engine. - + Empty search pattern - + Please type a search pattern first - + + Stop + + + SearchWidget::DataStorage - - Search has finished + + Failed to load Search UI saved state data. File: "%1". Error: "%2" - - Search has failed + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" @@ -9093,34 +9591,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: - - - + + + - - - + + + KiB/s - - + + Download: - + Alternative speed limits @@ -9312,32 +9810,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: @@ -9352,12 +9850,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -9376,51 +9874,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: - - + + No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes - + qBittorrent needs to be restarted! - - - + + + Connection Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9450,12 +9964,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resumed (0) + Running (0) - Paused (0) + Stopped (0) @@ -9519,33 +10033,33 @@ Click the "Search plugins..." button at the bottom right of the window - - Paused (%1) + + Running (%1) - - Moving (%1) + + Stopped (%1) - Resume torrents + Start torrents - Pause torrents + Stop torrents - - Remove torrents + + Moving (%1) - - Resumed (%1) + + Remove torrents @@ -9587,17 +10101,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags - + All - + Untagged @@ -9605,52 +10119,52 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... - + Remove tag - + Remove unused tags - - Resume torrents + + Remove torrents - - Pause torrents + + Start torrents - - Remove torrents + + Stop torrents - - New Tag + + Tag: - - Tag: + + Add tag - + Invalid tag name - + Tag name '%1' is invalid @@ -9787,32 +10301,32 @@ Please choose a different name and try again. TorrentContentModel - + Name - + Progress - + Download Priority - + Remaining - + Availability - + Total Size @@ -9857,102 +10371,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error - + Renaming - + New name: - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open - + Open containing folder - + Rename... - + Priority - - + + Do not download - + Normal - + High - + Maximum - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -9977,13 +10509,13 @@ Please choose a different name and try again. - + Select file - + Select folder @@ -10008,7 +10540,7 @@ Please choose a different name and try again. - + Auto @@ -10058,88 +10590,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: - + Comments: - + Source: - + Progress: - + Create Torrent - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) - - Reason: %1 - - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Torrent creator - + Torrent created: @@ -10147,32 +10674,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10180,44 +10707,31 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" - - TorrentInfo - - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - - Invalid metadata - - - TorrentOptionsDialog @@ -10246,126 +10760,162 @@ Please choose a different name and try again. - + Category: - - Torrent speed limits + + Torrent Share Limits - + Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s - + These will not exceed the global limits - + Upload: - - Torrent share limits + + Disable DHT for this torrent - - Use global share limit + + Download in sequential order - - Set no share limit + + Disable PeX for this torrent - - Set share limit to + + Download first and last pieces first - - ratio + + Disable LSD for this torrent - - total minutes + + Currently used categories - - inactive minutes + + + Choose save path - - Disable DHT for this torrent + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - Download in sequential order + + + + + Default - - Disable PeX for this torrent + + + + Unlimited - - Download first and last pieces first + + + + Set to - - Disable LSD for this torrent + + Seeding time: - - Currently used categories + + + + + + + min + minutes - - - Choose save path + + Inactive seeding time: - - Not applicable to private torrents + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + + + + + Remove torrent and its content - - No share limit method selected + + Enable super seeding for torrent - - Please select a limit method first + + Ratio: @@ -10378,31 +10928,31 @@ Please choose a different name and try again. - New Tag + Add tag - + Tag: - + Invalid tag name - + Tag name '%1' is invalid. - + Tag exists - + Tag name already exists. @@ -10410,115 +10960,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name @@ -10544,197 +11109,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - + Disabled - + Disabled for this torrent - + This torrent is private - + N/A - + Updating... - + Not working - + Tracker error - + Unreachable - + Not contacted yet - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol - - Protocol + + Next Announce - - Status + + Min Announce + + + + + Tier - Peers + Status - Seeds + Peers - Leeches + Seeds - Times Downloaded + Leeches - Message + Times Downloaded - Next announce - - - - - Min announce - - - - - v%1 + Message TrackerListWidget - + This torrent is private - + Tracker editing - + Tracker URL: - - + + Tracker editing failed - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... - + Remove tracker - + Copy tracker URL - + Force reannounce to selected trackers - + Force reannounce to all trackers - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Add trackers... - + Column visibility @@ -10752,37 +11311,37 @@ Please choose a different name and try again. - + µTorrent compatible list URL: - + Download trackers list - + Add - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10790,62 +11349,62 @@ Please choose a different name and try again. TrackersFilterWidget - + Warning (%1) - + Trackerless (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - - Resume torrents + + Start torrents - - Pause torrents + + Stop torrents - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter @@ -10854,7 +11413,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -10946,11 +11505,6 @@ Please choose a different name and try again. Used when loading the torrents from disk after qbt is launched. It checks the correctness of the .fastresume file. Normally it is completed in a fraction of a second, unless loading many many torrents. - - - Paused - - Completed @@ -10974,220 +11528,252 @@ Please choose a different name and try again. - + Name i.e: torrent name - + Size i.e: torrent size - + Progress % Done - + + Stopped + + + + Status - Torrent status (e.g. downloading, seeding, paused) + Torrent status (e.g. downloading, seeding, stopped) - + Seeds i.e. full sources (often untranslated) - + Peers i.e. partial sources (often untranslated) - + Down Speed i.e: Download speed - + Up Speed i.e: Upload speed - + Ratio Share ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left - + Category - + Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 - + Completed On Torrent was completed on 01/01/2010 08:00 - + Tracker - + Down Limit i.e: Download limit - + Up Limit i.e: Upload limit - + Downloaded Amount of data downloaded (e.g. in MB) - + Uploaded Amount of data uploaded (e.g. in MB) - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Remaining Amount of data left to download (e.g. in MB) - + Time Active - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) - + + Yes + + + + + No + + + + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) - + Ratio Limit Upload share ratio limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Activity Time passed since a chunk was downloaded/uploaded - + Total Size i.e. Size including unwanted data - + Availability The number of distributed copies of the torrent - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A - + %1 ago e.g.: 1h 20m ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) @@ -11196,334 +11782,319 @@ Please choose a different name and try again. TransferListWidget - + Column visibility - + Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? - + Rename - + New name: - + Choose save path - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - - Add Tags - - - - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags - + Remove all tags from selected torrents? - + Comma-separated tags: - + Invalid tag - + Tag name: '%1' is invalid - - &Resume - Resume/start the torrent - - - - - &Pause - Pause the torrent - - - - - Force Resu&me - Force Resume/start the torrent - - - - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first - + Automatic Torrent Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode @@ -11568,28 +12139,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11597,7 +12168,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11628,20 +12204,21 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". @@ -11682,27 +12259,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11766,72 +12343,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -11839,120 +12416,133 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup successful - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + + fs + + + Unknown error misc - + B bytes - + KiB kibibytes (1024 bytes) - + MiB mebibytes (1024 kibibytes) - + GiB gibibytes (1024 mibibytes) - + TiB tebibytes (1024 gibibytes) - + PiB pebibytes (1024 tebibytes) - + EiB exbibytes (1024 pebibytes) - + /s per second - + %1s e.g: 10 seconds - + %1m e.g: 10 minutes - + %1h %2m e.g: 3 hours 5 minutes - + %1d %2h e.g: 2 days 10 hours - + %1y %2d e.g: 2 years 10 days - - + + Unknown Unknown (size) - + qBittorrent will shutdown the computer now because all downloads are complete. - + < 1m < 1 minute diff --git a/src/lang/qbittorrent_en_AU.ts b/src/lang/qbittorrent_en_AU.ts index ccd29bd54da6..e09edad52325 100644 --- a/src/lang/qbittorrent_en_AU.ts +++ b/src/lang/qbittorrent_en_AU.ts @@ -14,77 +14,77 @@ About - + Authors Authors - + Current maintainer Current maintainer - + Greece Greece - - + + Nationality: Nationality: - - + + E-mail: E-mail: - - + + Name: Name: - + Original author Original author - + France France - + Special Thanks Special Thanks - + Translators Translators - + License Licence - + Software Used Software Used - + qBittorrent was built with the following libraries: qBittorrent was built with the following libraries: - + Copy to clipboard - + Copy to clipboard @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Save at - + Never show again Never show again - Torrent settings - Torrent settings + Torrent settings @@ -191,12 +190,12 @@ Start torrent - + Torrent information Torrent information - + Skip hash check Skip hash check @@ -205,6 +204,11 @@ Use another path for incomplete torrent Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Stop condition: - - + + None None - - + + Metadata received Metadata received - - + + Torrents that have metadata initially will be added as stopped. + Torrents that have metadata initially will be added as stopped. + + + + Files checked Files checked - + Add to top of queue Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: Content layout: - + Original Original - + Create subfolder Create subfolder - + Don't create subfolder Don't create subfolder - + Info hash v1: Info hash v1: - + Size: Size: - + Comment: Comment: - + Date: Date: @@ -324,245 +333,182 @@ Remember last used save path - + Do not delete .torrent file Do not delete .torrent file - + Download in sequential order Download in sequential order - + Download first and last pieces first Download first and last pieces first - + Info hash v2: Info hash v2: - + Select All Select All - + Select None Select None - + Save as .torrent file... Save as .torrent file... - + I/O Error I/O Error - Invalid torrent - Invalid torrent - - - + Not Available This comment is unavailable Not Available - + Not Available This date is unavailable Not Available - + Not available Not available - Invalid magnet link - Invalid magnet link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Failed to load the torrent: %1. -Error: %2 - - - This magnet link was not recognized - This magnet link was not recognised - - - + Magnet link Magnet link - + Retrieving metadata... Retrieving metadata... - - + + Choose save path Choose save path - Torrent is already present - Torrent is already present - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - - - Torrent is already queued for processing. - Torrent is already queued for processing. - - - + No stop condition is set. No stop condition is set. - + Torrent will stop after metadata is received. Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - Torrents that have metadata initially aren't affected. - - - + Torrent will stop after files are initially checked. Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. This will also download metadata if it wasn't there initially. - - + + N/A N/A - Magnet link is already queued for processing. - Magnet link is already queued for processing. - - - + %1 (Free space on disk: %2) %1 (Free space on disk: %2) - + Not available This size is unavailable. Not available - + Torrent file (*%1) Torrent file (*%1) - + Save as torrent file Save as torrent file - + Couldn't export torrent metadata file '%1'. Reason: %2. Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. Cannot create v2 torrent until its data is fully downloaded. - Cannot download '%1': %2 - Cannot download '%1': %2 - - - + Filter files... Filter files... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - - - + Parsing metadata... Parsing metadata... - + Metadata retrieval complete Metadata retrieval complete - - Failed to load from URL: %1. -Error: %2 - Failed to load from URL: %1. -Error: %2 - - - Download Error - Download Error - AddTorrentManager Downloading torrent... Source: "%1" - + Downloading torrent... Source: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Failed to add torrent. Source: "%1". Reason: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source - + Trackers are merged from new source @@ -648,72 +594,77 @@ Error: %2 Skip hash check - - - Choose save path - Choose save path + + Torrent share limits + Torrent share limits - - - - - - - Default - Default + + + Choose save path + Choose save path + + + - Yes - Yes + Default + Default + Yes + Yes + + + + + No No - + Manual Manual - + Automatic Automatic - + Original Original - + Create subfolder Create subfolder - + Don't create subfolder Don't create subfolder - + None None - + Metadata received Metadata received - + Files checked Files checked @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Recheck torrents on completion - - + + ms milliseconds ms - + Setting Setting - + Value Value set for this setting Value - + (disabled) (disabled) - + (auto) (auto) - + + min minutes min - + All addresses All addresses - + qBittorrent Section qBittorrent Section - - + + Open documentation Open documentation - + All IPv4 addresses All IPv4 addresses - + All IPv6 addresses All IPv6 addresses - + libtorrent Section libtorrent Section - + Fastresume files Fastresume files - + SQLite database (experimental) SQLite database (experimental) - + Resume data storage type (requires restart) Resume data storage type (requires restart) - + Normal Normal - + Below normal Below normal - + Medium Medium - + Low Low - + Very low Very low - - Process memory priority (Windows >= 8 only) - Process memory priority (Windows >= 8 only) - - - + Physical memory (RAM) usage limit Physical memory (RAM) usage limit - + Asynchronous I/O threads Asynchronous I/O threads - + Hashing threads Hashing threads - + File pool size File pool size - + Outstanding memory when checking torrents Outstanding memory when checking torrents - + Disk cache Disk cache - - - - + + + + s seconds s - + Disk cache expiry interval Disk cache expiry interval - + Disk queue size Disk queue size - - + + Enable OS cache Enable OS cache - + Coalesce reads & writes Coalesce reads & writes - + Use piece extent affinity Use piece extent affinity - + Send upload piece suggestions Send upload piece suggestions - - - - + + + + + 0 (disabled) 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Save resume data interval [0: disabled] - + Outgoing ports (Min) [0: disabled] Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) 0 (permanent lease) - + UPnP lease duration [0: permanent lease] UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) (infinite) - + (system default) (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux This option is less effective on Linux - + + Process memory priority + Process memory priority + + + Bdecode depth limit Bdecode depth limit - + Bdecode token limit Bdecode token limit - + Default Default - + Memory mapped files Memory mapped files - + POSIX-compliant POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk IO type (requires restart) - - + + Disable OS cache Disable OS cache - + Disk IO read mode Disk IO read mode - + Write-through Write-through - + Disk IO write mode Disk IO write mode - + Send buffer watermark Send buffer watermark - + Send buffer low watermark Send buffer low watermark - + Send buffer watermark factor Send buffer watermark factor - + Outgoing connections per second Outgoing connections per second - - + + 0 (system default) 0 (system default) - + Socket send buffer size [0: system default] Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] Socket receive buffer size [0: system default] - + Socket backlog size Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent file size limit - + Type of service (ToS) for connections to peers Type of service (ToS) for connections to peers - + Prefer TCP Prefer TCP - + Peer proportional (throttles TCP) Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) Support internationalised domain name (IDN) - + Allow multiple connections from the same IP address Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + It appends the text to the window title to help distinguish qBittorrent instances + + + + Customize application instance name + Customise application instance name + + + It controls the internal state update interval which in turn will affect UI updates It controls the internal state update interval which in turn will affect UI updates - + Refresh interval Refresh interval - + Resolve peer host names Resolve peer host names - + IP address reported to trackers (requires restart) IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Re-announce to all trackers when IP or port changed - + Enable icons in menus Enable icons in menus - + Enable port forwarding for embedded tracker Enable port forwarding for embedded tracker - - (Auto detect if empty) + + Enable quarantine for downloaded files + Enable quarantine for downloaded files + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Auto detect if empty) + + + Python executable path (may require restart) + Python executable path (may require restart) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirm removal of tracker from all torrents + + + Peer turnover disconnect percentage Peer turnover disconnect percentage - + Peer turnover threshold percentage Peer turnover threshold percentage - + Peer turnover disconnect interval Peer turnover disconnect interval - + Resets to default if empty - + Resets to default if empty - + DHT bootstrap nodes - + DHT bootstrap nodes - + I2P inbound quantity I2P inbound quantity - + I2P outbound quantity I2P outbound quantity - + I2P inbound length I2P inbound length - + I2P outbound length I2P outbound length - + Display notifications Display notifications - + Display notifications for added torrents Display notifications for added torrents - + Download tracker's favicon Download tracker's favicon - + Save path history length Save path history length - + Enable speed graphs Enable speed graphs - + Fixed slots Fixed slots - + Upload rate based Upload rate based - + Upload slots behavior Upload slots behaviour - + Round-robin Round-robin - + Fastest upload Fastest upload - + Anti-leech Anti-leech - + Upload choking algorithm Upload choking algorithm - + Confirm torrent recheck Confirm torrent recheck - + Confirm removal of all tags Confirm removal of all tags - + Always announce to all trackers in a tier Always announce to all trackers in a tier - + Always announce to all tiers Always announce to all tiers - + Any interface i.e. Any network interface Any interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP mixed mode algorithm - + Resolve peer countries Resolve peer countries - + Network interface Network interface - + Optional IP address to bind to Optional IP address to bind to - + Max concurrent HTTP announces Max concurrent HTTP announces - + Enable embedded tracker Enable embedded tracker - + Embedded tracker port Embedded tracker port - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 started + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 Using config directory: %1 - + Torrent name: %1 Torrent name: %1 - + Torrent size: %1 Torrent size: %1 - + Save path: %1 Save path: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds The torrent was downloaded in %1. - + + Thank you for using qBittorrent. Thank you for using qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, sending e-mail notification - + Add torrent failed - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + Couldn't add torrent '%1', reason: %2. + + + + The WebUI administrator username is: %1 + The WebUI administrator username is: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + You should set your own password in program preferences. + You should set your own password in program preferences. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... Loading torrents... - + E&xit E&xit - + I/O Error i.e: Input/Output Error I/O Error - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Reason: %2 - Error - Error - - - Failed to add torrent: %1 - Failed to add torrent: %1 - - - + Torrent added Torrent added - + '%1' was added. e.g: xxx.avi was added. '%1' was added. - + Download completed Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' has finished downloading. - - - URL download error - URL download error + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 started. Process ID: %2 - Couldn't download file at URL '%1', reason: %2. - Couldn't download file at URL '%1', reason: %2. + + This is a test email. + - Torrent file association - Torrent file association + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' has finished downloading. - + Information Information - + To fix the error, you may need to edit the config file manually. - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - The Web UI administrator username is: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - The Web UI administrator password has not been changed from the default: %1 - - - - This is a security risk, please change your password in program preferences. - This is a security risk, please change your password in program preferences. - - - Application failed to start. - Application failed to start. - - - + Exit Exit - + Recursive download confirmation - Recursive download confirmation + Recursive download confirmation - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - Never + Never - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated qBittorrent termination initiated - + qBittorrent is shutting down... qBittorrent is shutting down... - + Saving torrent progress... Saving torrent progress... - + qBittorrent is now ready to exit qBittorrent is now ready to exit @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Could not create directory '%1'. @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. Your IP address has been banned after too many failed authentication attempts. - + WebAPI login success. IP: %1 WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? Priority: - + Must Not Contain: Must Not Contain: - + Episode Filter: Episode Filter: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Export... - + Matches articles based on episode filter. Matches articles based on episode filter. - + Example: Example: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match will match 2, 5, 8 through 15, 30 and onward episodes of season one - + Episode filter rules: Episode filter rules: - + Season number is a mandatory non-zero value Season number is a mandatory non-zero value - + Filter must end with semicolon Filter must end with semicolon - + Three range types for episodes are supported: Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value Episode number is a mandatory positive value - + Rules Rules - + Rules (legacy) Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago Last Match: %1 days ago - + Last Match: Unknown Last Match: Unknown - + New rule name New rule name - + Please type the name of the new download rule. Please type the name of the new download rule. - - + + Rule name conflict Rule name conflict - - + + A rule with this name already exists, please choose another name. A rule with this name already exists, please choose another name. - + Are you sure you want to remove the download rule named '%1'? Are you sure you want to remove the download rule named '%1'? - + Are you sure you want to remove the selected download rules? Are you sure you want to remove the selected download rules? - + Rule deletion confirmation Rule deletion confirmation - + Invalid action Invalid action - + The list is empty, there is nothing to export. The list is empty, there is nothing to export. - + Export RSS rules Export RSS rules - + I/O Error I/O Error - + Failed to create the destination file. Reason: %1 Failed to create the destination file. Reason: %1 - + Import RSS rules Import RSS rules - + Failed to import the selected rules file. Reason: %1 Failed to import the selected rules file. Reason: %1 - + Add new rule... Add new rule... - + Delete rule Delete rule - + Rename rule... Rename rule... - + Delete selected rules Delete selected rules - + Clear downloaded episodes... Clear downloaded episodes... - + Rule renaming Rule renaming - + Please type the new rule name Please type the new rule name - + Clear downloaded episodes Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 Position %1: %2 - + Wildcard mode: you can use Wildcard mode: you can use - - + + Import error Import error - + Failed to read the file. %1 Failed to read the file. %1 - + ? to match any single character ? to match any single character - + * to match zero or more of any characters * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) White-spaces count as AND operators (all words, any order) - + | is used as OR operator | is used as OR operator - + If word order is important use * instead of whitespace. If word order is important use * instead of white-space. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) An expression with an empty %1 clause (e.g. %2) - + will match all articles. will match all articles. - + will exclude all articles. will exclude all articles. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + Mismatching info-hash detected in resume data + + + Couldn't save torrent metadata to '%1'. Error: %2. Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 Couldn't save data to '%1'. Error: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 Couldn't store torrents queue positions. Error: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON ON - - - - - - - - - + + + + + + + + + OFF OFF - - + + Local Peer Discovery support: %1 Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" Peer ID: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 Anonymous mode: %1 - - + + Encryption support: %1 Encryption support: %1 - - + + FORCED FORCED - + Could not find GUID of network interface. Interface: "%1" Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. Torrent reached the share ratio limit. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Removed torrent. + Removed torrent. - - - Removed torrent and deleted its content. - Removed torrent and deleted its content. + Removed torrent and deleted its content. - - - Torrent paused. - Torrent paused. + Torrent paused. - - - + Super seeding enabled. Super seeding enabled. - + Torrent reached the seeding time limit. Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". + I2P error. Message: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP support: ON + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Downloading torrent, please wait... Source: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Failed to load torrent. Source: "%1". Reason: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP support: ON + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP support: OFF + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Aborted saving resume data. Number of outstanding torrents: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Merging of trackers is disabled + + + + Trackers cannot be merged because it is a private torrent + Trackers cannot be merged because it is a private torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - System network status changed to %1 + + Trackers are merged from new source + Trackers are merged from new source - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP support: OFF - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Network configuration of %1 has changed, refreshing session binding + + Aborted saving resume data. Number of outstanding torrents: %1 + Aborted saving resume data. Number of outstanding torrents: %1 - + The configured network address is invalid. Address: "%1" The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Removed URL seed from torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent paused. Torrent: "%1" + Torrent paused. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrent move cancelled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Failed to parse Categories configuration. File: "%1". Error: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent errored. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - Removed torrent. Torrent: "%1" + Removed torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" + Removed torrent and deleted its content. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtered port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). privileged port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent session encountered a serious error. Reason: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 mixed mode restrictions - + Failed to load Categories. %1 Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" + Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 is disabled - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 is disabled - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" + URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operation aborted - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Create new torrent file failed. Reason: %1. + + Failed to start seeding. + Failed to start seeding. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operation aborted + Operation aborted + + Create new torrent file failed. Reason: %1. - Create new torrent file failed. Reason: %1. + Create new torrent file failed. Reason: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' Download first and last piece first: %1, torrent: '%2' - + On On - + Off Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Failed to reload torrent. Torrent: %1. Reason: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 Performance alert: %1. More info: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' must follow syntax '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' must follow syntax '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Expected integer number in environment variable '%1', but got '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' must follow syntax '%1=%2' + Parameter '%1' must follow syntax '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). %1 must specify a valid port (1 to 65535). - + Usage: Usage: - + [options] [(<filename> | <url>)...] [options] [(<filename> | <url>)...] - + Options: Options: - + Display program version and exit Display program version and exit - + Display this help message and exit Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' must follow syntax '%1=%2' + + + + Confirm the legal notice + Confirm the legal notice + + + + port port - - Change the Web UI port - Change the Web UI port + + Change the WebUI port + Change the WebUI port - + Change the torrenting port Change the torrenting port - + Disable splash screen Disable splash screen - + Run in daemon-mode (background) Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Store configuration files in <dir> - - + + name name - + Store configuration files in directories qBittorrent_<name> Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hack into libtorrent fast-resume files and make file paths relative to the profile directory - + files or URLs files or URLs - + Download the torrents passed by the user Download the torrents passed by the user - + Options when adding new torrents: Options when adding new torrents: - + path path - + Torrent save path Torrent save path - + + Add torrents as running or stopped + + + Add torrents as started or paused - Add torrents as started or paused + Add torrents as started or paused - + Skip hash check Skip hash check - + Assign torrents to category. If the category doesn't exist, it will be created. Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order Download files in sequential order - + Download first and last pieces first Download first and last pieces first - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables Command line parameters take precedence over environment variables - + Help Help @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Categories - + All All - + Uncategorized Uncategorised @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Resume torrents + Start torrents + + Stop torrents + + + + Resume torrents + Resume torrents + + Pause torrents - Pause torrents + Pause torrents @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Edit... - + Reset Reset + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 Failed to load custom theme colors. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 Failed to load default theme colors. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Also permanently delete the files + Also permanently delete the files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Are you sure you want to remove '%1' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Are you sure you want to remove these %1 torrents from the transfer list? - + Remove Remove @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Download from URLs - + Add torrent links Add torrent links - + One link per line (HTTP links, Magnet links and info-hashes are supported) One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Download - + No URL entered No URL entered - + Please type at least one URL. Please type at least one URL. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Parsing Error: The filter file is not a valid PeerGuardian P2B file. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Downloading torrent... Source: "%1" - Trackers cannot be merged because it is a private torrent - + Trackers cannot be merged because it is a private torrent - + Torrent is already present - Torrent is already present + Torrent is already present + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? GeoIPDatabase - - + + Unsupported database file size. Unsupported database file size. - + Metadata error: '%1' entry not found. Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 Unsupported database version: %1.%2 - + Unsupported IP version: %1 Unsupported IP version: %1 - + Unsupported record size: %1 Unsupported record size: %1 - + Database corrupted: no data section found. Database corrupted: no data section found. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Bad Http request, closing socket. IP: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Browse... - + Reset Reset - + Select icon Select icon - + Supported image files Supported image files + + LegalNotice + + + Legal Notice + Legal Notice + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + No further notices will be issued. + No further notices will be issued. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + Press 'Enter' key to continue... + Press 'Enter' key to continue... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 was blocked. Reason: %2. - + %1 was banned 0.0.0.0 was banned %1 was banned @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 is an unknown command line parameter. - - + + %1 must be the single command line parameter. %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - You cannot use %1: qBittorrent is already running for this user. - - - + Run application with -h option to read about command line parameters. Run application with -h option to read about command line parameters. - + Bad command line Bad command line - + Bad command line: Bad command line: - + An unrecoverable error occurred. - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Legal Notice - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - No further notices will be issued. - No further notices will be issued. - - - - Press %1 key to accept and continue... - Press %1 key to accept and continue... + qBittorrent has encountered an unrecoverable error. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + You cannot use %1: qBittorrent is already running. + You cannot use %1: qBittorrent is already running. - - Legal notice - Legal notice + + Another qBittorrent instance is already running. + Another qBittorrent instance is already running. - - Cancel - Cancel + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - I Agree - I Agree + + Error when daemonizing. Reason: "%1". Error code: %2. + Error when daemonizing. Reason: "%1". Error code: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. &Edit - + &Tools &Tools - + &File &File - + &Help &Help - + On Downloads &Done On Downloads &Done - + &View &View - + &Options... &Options... - &Resume - &Resume + &Resume - + &Remove &Remove - + Torrent &Creator Torrent &Creator - - + + Alternative Speed Limits Alternative Speed Limits - + &Top Toolbar &Top Toolbar - + Display Top Toolbar Display Top Toolbar - + Status &Bar Status &Bar - + Filters Sidebar Filters Sidebar - + S&peed in Title Bar S&peed in Title Bar - + Show Transfer Speed in Title Bar Show Transfer Speed in Title Bar - + &RSS Reader &RSS Reader - + Search &Engine Search &Engine - + L&ock qBittorrent L&ock qBittorrent - + Do&nate! Do&nate! - + + Sh&utdown System + + + + &Do nothing &Do nothing - + Close Window Close Window - R&esume All - R&esume All + R&esume All - + Manage Cookies... Manage Cookies... - + Manage stored network cookies Manage stored network cookies - + Normal Messages Normal Messages - + Information Messages Information Messages - + Warning Messages Warning Messages - + Critical Messages Critical Messages - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Set Global Speed Limits... - + Bottom of Queue Bottom of Queue - + Move to the bottom of the queue Move to the bottom of the queue - + Top of Queue Top of Queue - + Move to the top of the queue Move to the top of the queue - + Move Down Queue Move Down Queue - + Move down in the queue Move down in the queue - + Move Up Queue Move Up Queue - + Move up in the queue Move up in the queue - + &Exit qBittorrent &Exit qBittorrent - + &Suspend System &Suspend System - + &Hibernate System &Hibernate System - S&hutdown System - S&hutdown System + S&hutdown System - + &Statistics &Statistics - + Check for Updates Check for Updates - + Check for Program Updates Check for Program Updates - + &About &About - &Pause - &Pause + &Pause - P&ause All - P&ause All + P&ause All - + &Add Torrent File... &Add Torrent File... - + Open Open - + E&xit E&xit - + Open URL Open URL - + &Documentation &Documentation - + Lock Lock - - - + + + Show Show - + Check for program updates Check for program updates - + Add Torrent &Link... Add Torrent &Link... - + If you like qBittorrent, please donate! If you like qBittorrent, please donate! - - + + Execution Log Execution Log - + Clear the password Clear the password - + &Set Password &Set Password - + Preferences Preferences - + &Clear Password &Clear Password - + Transfers Transfers - - + + qBittorrent is minimized to tray qBittorrent is minimised to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. This behaviour can be changed in the settings. You won't be reminded again. - + Icons Only Icons Only - + Text Only Text Only - + Text Alongside Icons Text Alongside Icons - + Text Under Icons Text Under Icons - + Follow System Style Follow System Style - - + + UI lock password UI lock password - - + + Please type the UI lock password: Please type the UI lock password: - + Are you sure you want to clear the password? Are you sure you want to clear the password? - + Use regular expressions Use regular expressions - - Search - Search + + + Search Engine + Search Engine - - Transfers (%1) - Transfers (%1) + + Search has failed + Search has failed - Recursive download confirmation - Recursive download confirmation + + Search has finished + Search has finished - Never - Never + + Search + Search + + + + Transfers (%1) + Transfers (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray qBittorrent is closed to tray - + Some files are currently transferring. Some files are currently transferring. - + Are you sure you want to quit qBittorrent? Are you sure you want to quit qBittorrent? - + &No &No - + &Yes &Yes - + &Always Yes &Always Yes - + Options saved. Options saved. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Missing Python Runtime - + qBittorrent Update Available qBittorrent Update Available - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime Old Python Runtime - + A new version is available. A new version is available. - + Do you want to download %1? Do you want to download %1? - + Open changelog... Open changelog... - + No updates available. You are already using the latest version. No updates available. You are already using the latest version. - + &Check for Updates &Check for Updates - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Paused + + + Checking for Updates... Checking for Updates... - + Already checking for program updates in the background Already checking for program updates in the background - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Download error - Python setup could not be downloaded, reason: %1. Please install it manually. - Python setup could not be downloaded, reason: %1. + Python setup could not be downloaded, reason: %1. Please install it manually. - - + + Invalid password Invalid password - + Filter torrents... Filter torrents... - + Filter by: Filter by: - + The password must be at least 3 characters long The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - - + The password is invalid The password is invalid - + DL speed: %1 e.g: Download speed: 10 KiB/s DL speed: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s UP speed: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Hide - + Exiting qBittorrent Exiting qBittorrent - + Open Torrent Files Open Torrent Files - + Torrent Files Torrent Files @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) Exceeded max redirections (%1) - + Redirected to magnet URI Redirected to magnet URI - + The remote host name was not found (invalid hostname) The remote host name was not found (invalid hostname) - + The operation was canceled The operation was cancelled - + The remote server closed the connection prematurely, before the entire reply was received and processed The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out The connection to the remote server timed out - + SSL/TLS handshake failed SSL/TLS handshake failed - + The remote server refused the connection The remote server refused the connection - + The connection to the proxy server was refused The connection to the proxy server was refused - + The proxy server closed the connection prematurely The proxy server closed the connection prematurely - + The proxy host name was not found The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered The proxy requires authentication in order to honour the request but did not accept any credentials offered - + The access to the remote content was denied (401) The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known The Network Access API cannot honour the request because the protocol is not known - + The requested operation is invalid for this protocol The requested operation is invalid for this protocol - + An unknown network-related error was detected An unknown network-related error was detected - + An unknown proxy-related error was detected An unknown proxy-related error was detected - + An unknown error related to the remote content was detected An unknown error related to the remote content was detected - + A breakdown in protocol was detected A breakdown in protocol was detected - + Unknown error Unknown error @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignoring SSL error, URL: "%1", errors: "%2" @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Advanced - + Customize UI Theme... Customise UI Theme... - + Transfer List Transfer List - + Confirm when deleting torrents Confirm when deleting torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - Shows a confirmation dialog upon pausing/resuming all the torrents + Shows a confirmation dialog upon pausing/resuming all the torrents - Confirm "Pause/Resume all" actions - Confirm "Pause/Resume all" actions + Confirm "Pause/Resume all" actions - + Use alternating row colors In table elements, every other row will have a grey background. Use alternating row colours - + Hide zero and infinity values Hide zero and infinity values - + Always Always - Paused torrents only - Paused torrents only + Paused torrents only - + Action on double-click Action on double-click - + Downloading torrents: Downloading torrents: - - Start / Stop Torrent - Start / Stop Torrent + Start / Stop Torrent - - + + Open destination folder Open destination folder - - + + No action No action - + Completed torrents: Completed torrents: - + Auto hide zero status filters Auto hide zero status filters - + Desktop Desktop - + Start qBittorrent on Windows start up Start qBittorrent on Windows start up - + Show splash screen on start up Show splash screen on start up - + Confirmation on exit when torrents are active Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Torrent content layout: - + Original Original - + Create subfolder Create subfolder - + Don't create subfolder Don't create subfolder - + The torrent will be added to the top of the download queue The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue Add to top of queue - + When duplicate torrent is being added When duplicate torrent is being added - + Merge trackers to existing torrent Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + Keep unselected files in ".unwanted" folder + + + Add... Add... - + Options.. Options.. - + Remove Remove - + Email notification &upon download completion Email notification &upon download completion - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Peer connection protocol: - + Any Any - + I2P (experimental) I2P (experimental) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymisation. This may be useful if the user is not interested in the anonymisation of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymisation. This may be useful if the user is not interested in the anonymisation of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + Mixed mode Mixed mode - + Some options are incompatible with the chosen proxy type! Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes Use proxy for BitTorrent purposes - + RSS feeds will use proxy RSS feeds will use proxy - + Use proxy for RSS purposes Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy Search engine, software updates or anything else will use proxy - + Use proxy for general purposes Use proxy for general purposes - + IP Fi&ltering IP Fi&ltering - + Schedule &the use of alternative rate limits Schedule &the use of alternative rate limits - + From: From start time From: - + To: To end time To: - + Find peers on the DHT network Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: Maximum active checking torrents: - + &Torrent Queueing &Torrent Queueing - + When total seeding time reaches When total seeding time reaches - + When inactive seeding time reaches When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - A&utomatically add these trackers to new downloads: + A&utomatically add these trackers to new downloads: - + RSS Reader RSS Reader - + Enable fetching RSS feeds Enable fetching RSS feeds - + Feeds refresh interval: Feeds refresh interval: - + + Same host request delay: + Same host request delay: + + + Maximum number of articles per feed: Maximum number of articles per feed: - - - + + + min minutes min - + Seeding Limits Seeding Limits - Pause torrent - Pause torrent + Pause torrent - + Remove torrent Remove torrent - + Remove torrent and its files Remove torrent and its files - + Enable super seeding for torrent Enable super seeding for torrent - + When ratio reaches When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents Enable auto downloading of RSS torrents - + Edit auto downloading rules... Edit auto downloading rules... - + RSS Smart Episode Filter RSS Smart Episode Filter - + Download REPACK/PROPER episodes Download REPACK/PROPER episodes - + Filters: Filters: - + Web User Interface (Remote control) Web User Interface (Remote control) - + IP address: IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: Ban client after consecutive failures: - + Never Never - + ban for: ban for: - + Session timeout: Session timeout: - + Disabled Disabled - Enable cookie Secure flag (requires HTTPS) - Enable cookie Secure flag (requires HTTPS) + Enable cookie Secure flag (requires HTTPS) - + Server domains: Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ you should put in domain names used by Web UI server. Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Upda&te my dynamic domain name - + Minimize qBittorrent to notification area Minimise qBittorrent to notification area - + + Search + Search + + + + WebUI + + + + Interface Interface - + Language: Language: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Tray icon style: - - + + Normal Normal - + File association File association - + Use qBittorrent for .torrent files Use qBittorrent for .torrent files - + Use qBittorrent for magnet links Use qBittorrent for magnet links - + Check for program updates Check for program updates - + Power Management Power Management - + + &Log Files + + + + Save path: Save path: - + Backup the log file after: Backup the log file after: - + Delete backup logs older than: Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent When adding a torrent - + Bring torrent dialog to the front Bring torrent dialogue to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled Also when addition is cancelled - + Warning! Data loss possible! Warning! Data loss possible! - + Saving Management Saving Management - + Default Torrent Management Mode: Default Torrent Management Mode: - + Manual Manual - + Automatic Automatic - + When Torrent Category changed: When Torrent Category changed: - + Relocate torrent Relocate torrent - + Switch torrent to Manual Mode Switch torrent to Manual Mode - - + + Relocate affected torrents Relocate affected torrents - - + + Switch affected torrents to Manual Mode Switch affected torrents to Manual Mode - + Use Subcategories Use Subcategories - + Default Save Path: Default Save Path: - + Copy .torrent files to: Copy .torrent files to: - + Show &qBittorrent in notification area Show &qBittorrent in notification area - &Log file - &Log file + &Log file - + Display &torrent content and some options Display &torrent content and some options - + De&lete .torrent files afterwards De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files Pre-allocate disk space for all files - + Use custom UI Theme Use custom UI Theme - + UI Theme file: UI Theme file: - + Changing Interface settings requires application restart Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder Preview file, otherwise open destination folder - - Show torrent options - Show torrent options + Show torrent options - + Shows a confirmation dialog when exiting with active torrents Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon When minimising, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Close qBittorrent to notification area - + Monochrome (for dark theme) Monochrome (for dark theme) - + Monochrome (for light theme) Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days days - + months Delete backup logs older than 10 months months - + years Delete backup logs older than 10 years years - + Log performance warnings Log performance warnings - The torrent will be added to download list in a paused state - The torrent will be added to download list in a paused state + The torrent will be added to download list in a paused state - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Do not start the download automatically - + Whether the .torrent file should be deleted after adding it Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Allocate full file sizes on disk before starting downloads, to minimise fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: When Default Save/Incomplete Path changed: - + When Category Save Path changed: When Category Save Path changed: - + Use Category paths in Manual Mode Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme Use icons from system theme - + Window state on start up: Window state on start up: - + qBittorrent window state on start up qBittorrent window state on start up - + Torrent stop condition: Torrent stop condition: - - + + None None - - + + Metadata received Metadata received - - + + Files checked Files checked - + Ask for merging trackers when torrent is being added manually Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: Use another path for incomplete torrents: - + Automatically add torrents from: Automatically add torrents from: - + Excluded file names Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: filter exact file name. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - + Receiver Receiver - + To: To receiver To: - + SMTP server: SMTP server: - + Sender Sender - + From: From sender From: - + This server requires a secure connection (SSL) This server requires a secure connection (SSL) - - + + Authentication Authentication - - - - + + + + Username: Username: - - - - + + + + Password: Password: - + Run external program Run external program - Run on torrent added - Run on torrent added + Run on torrent added - Run on torrent finished - Run on torrent finished + Run on torrent finished - + Show console window Show console window - + TCP and μTP TCP and μTP - + Listening Port Listening Port - + Port used for incoming connections: Port used for incoming connections: - + Set to 0 to let your system pick an unused port Set to 0 to let your system pick an unused port - + Random Random - + Use UPnP / NAT-PMP port forwarding from my router Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits Connections Limits - + Maximum number of connections per torrent: Maximum number of connections per torrent: - + Global maximum number of connections: Global maximum number of connections: - + Maximum number of upload slots per torrent: Maximum number of upload slots per torrent: - + Global maximum number of upload slots: Global maximum number of upload slots: - + Proxy Server Proxy Server - + Type: Type: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections Use proxy for peer connections - + A&uthentication A&uthentication - + Info: The password is saved unencrypted Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): Filter path (.dat, .p2p, .p2b): - + Reload the filter Reload the filter - + Manually banned IP addresses... Manually banned IP addresses... - + Apply to trackers Apply to trackers - + Global Rate Limits Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Upload: - - + + Download: Download: - + Alternative Rate Limits Alternative Rate Limits - + Start time Start time - + End time End time - + When: When: - + Every day Every day - + Weekdays Weekdays - + Weekends Weekends - + Rate Limits Settings Rate Limits Settings - + Apply rate limit to peers on LAN Apply rate limit to peers on LAN - + Apply rate limit to transport overhead Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Apply rate limit to µTP protocol - + Privacy Privacy - + Enable DHT (decentralized network) to find more peers Enable DHT (decentralised network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Exchange peers with compatible BitTorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network Look for peers on your local network - + Enable Local Peer Discovery to find more peers Enable Local Peer Discovery to find more peers - + Encryption mode: Encryption mode: - + Require encryption Require encryption - + Disable encryption Disable encryption - + Enable when using a proxy or a VPN connection Enable when using a proxy or a VPN connection - + Enable anonymous mode Enable anonymous mode - + Maximum active downloads: Maximum active downloads: - + Maximum active uploads: Maximum active uploads: - + Maximum active torrents: Maximum active torrents: - + Do not count slow torrents in these limits Do not count slow torrents in these limits - + Upload rate threshold: Upload rate threshold: - + Download rate threshold: Download rate threshold: - - - + + + + sec seconds sec - + Torrent inactivity timer: Torrent inactivity timer: - + then then - + Use UPnP / NAT-PMP to forward the port from my router Use UPnP / NAT-PMP to forward the port from my router - + Certificate: Certificate: - + Key: Key: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password Change current password - Use alternative Web UI - Use alternative Web UI + Use alternative Web UI - + Files location: Files location: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Security - + Enable clickjacking protection Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Enable Host header validation - + Add custom HTTP headers Add custom HTTP headers - + Header: value pairs, one per line Header: value pairs, one per line - + Enable reverse proxy support Enable reverse proxy support - + Trusted proxies list: Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Service: - + Register Register - + Domain name: Domain name: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file Select qBittorrent UI Theme file - + Choose Alternative UI files location Choose Alternative UI files location - + Supported parameters (case sensitive): Supported parameters (case sensitive): - + Minimized Minimised - + Hidden Hidden - + Disabled due to failed to detect system tray presence Disabled due to failed to detect system tray presence - + No stop condition is set. No stop condition is set. - + Torrent will stop after metadata is received. Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - Torrents that have metadata initially aren't affected. - - - + Torrent will stop after files are initially checked. Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: Torrent name - + %L: Category %L: Category - + %F: Content path (same as root path for multifile torrent) %F: Content path (same as root path for multi-file torrent) - + %R: Root path (first torrent subdirectory path) %R: Root path (first torrent subdirectory path) - + %D: Save path %D: Save path - + %C: Number of files %C: Number of files - + %Z: Torrent size (bytes) %Z: Torrent size (bytes) - + %T: Current tracker %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: Encapsulate parameter with quotation marks to avoid text being cut off at white-space (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (None) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate Certificate - + Select certificate Select certificate - + Private key Private key - + Select private key Select private key - + + WebUI configuration failed. Reason: %1 + WebUI configuration failed. Reason: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Select folder to monitor - + Adding entry failed Adding entry failed - - Location Error - Location Error + + The WebUI username must be at least 3 characters long. + The WebUI username must be at least 3 characters long. + + + + The WebUI password must be at least 6 characters long. + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. - The alternative Web UI files location cannot be blank. + + Location Error + Location Error - - + + Choose export directory Choose export directory - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + Torrents that have metadata initially will be added as stopped. + + + Choose an IP filter file Choose an IP filter file - + All supported filters All supported filters - + + The alternative WebUI files location cannot be blank. + The alternative WebUI files location cannot be blank. + + + Parsing error Parsing error - + Failed to parse the provided IP filter Failed to parse the provided IP filter - + Successfully refreshed Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Successfully parsed the provided IP filter: %1 rules were applied. - + Preferences Preferences - + Time Error Time Error - + The start time and the end time can't be the same. The start time and the end time can't be the same. - - + + Length Error Length Error - - - The Web UI username must be at least 3 characters long. - The Web UI username must be at least 3 characters long. - - - - The Web UI password must be at least 6 characters long. - The Web UI password must be at least 6 characters long. - PeerInfo - + Unknown Unknown - + Interested (local) and choked (peer) Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) Not interested (peer) and unchoked (local) - + Optimistic unchoke Optimistic unchoke - + Peer snubbed Peer snubbed - + Incoming connection Incoming connection - + Peer from DHT Peer from DHT - + Peer from PEX Peer from PEX - + Peer from LSD Peer from LSD - + Encrypted traffic Encrypted traffic - + Encrypted handshake Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer "%1" is manually banned - + N/A N/A @@ -7668,7 +8080,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not List of peers to add (one IP per line): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Files in this piece: - + File in this piece: File in this piece: - + File in these pieces: File in these pieces: - + Wait until metadata become available to see detailed information Wait until metadata become available to see detailed information - + Hold Shift key for detailed information Hold Shift key for detailed information @@ -7742,58 +8154,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Search plug-ins - + Installed search plugins: Installed search plugins: - + Name Name - + Version Version - + Url URL - - + + Enabled Enabled - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Install a new one - + Check for updates Check for updates - + Close Close - + Uninstall Uninstall @@ -7913,17 +8325,17 @@ Those plugins were disabled. Plug-in source - + Search plugin source: Search plug-in source: - + Local file Local file - + Web link Web link @@ -7941,70 +8353,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + Power management found suitable D-Bus interface. Interface: %1 Power management error. Did not found suitable D-Bus interface. - + Power management error. Did not found suitable D-Bus interface. Power management error. Action: %1. Error: %2 - + Power management error. Action: %1. Error: %2 Power management unexpected error. State: %1. Error: %2 - + Power management unexpected error. State: %1. Error: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: The following files from torrent "%1" support previewing, please select one of them: - + Preview Preview - + Name Name - + Size Size - + Progress Progress - + Preview impossible Preview impossible - + Sorry, we can't preview this file: "%1". Sorry, we can't preview this file: "%1". - + Resize columns Resize columns - + Resize all non-hidden columns to the size of their contents Resize all non-hidden columns to the size of their contents @@ -8017,27 +8429,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Path does not exist - + Path does not point to a directory Path does not point to a directory - + Path does not point to a file Path does not point to a file - + Don't have read permission to path Don't have read permission to path - + Don't have write permission to path Don't have write permission to path @@ -8078,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Downloaded: - + Availability: Availability: @@ -8098,53 +8510,53 @@ Those plugins were disabled. Transfer - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Time Active: - + ETA: ETA: - + Uploaded: Uploaded: - + Seeds: Seeds: - + Download Speed: Download Speed: - + Upload Speed: Upload Speed: - + Peers: Peers: - + Download Limit: Download Limit: - + Upload Limit: Upload Limit: - + Wasted: Wasted: @@ -8154,193 +8566,249 @@ Those plugins were disabled. Connections: - + Information Information - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Comment: - + Select All Select All - + Select None Select None - + Share Ratio: Share Ratio: - + Reannounce In: Re-announce In: - + Last Seen Complete: Last Seen Complete: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Total Size: - + Pieces: Pieces: - + Created By: Created By: - + Added On: Added On: - + Completed On: Completed On: - + Created On: Created On: - + + Private: + + + + Save Path: Save Path: - + Never Never - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (have %3) - - + + %1 (%2 this session) %1 (%2 this session) - - + + + N/A N/A - + + Yes + Yes + + + + No + No + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seeded for %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 average) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - New Web seed + New Web seed - Remove Web seed - Remove Web seed + Remove Web seed - Copy Web seed URL - Copy Web seed URL + Copy Web seed URL - Edit Web seed URL - Edit Web seed URL + Edit Web seed URL - + Filter files... Filter files... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Speed graphs are disabled - + You can enable it in Advanced Options You can enable it in Advanced Options - New URL seed New HTTP source - New URL seed + New URL seed - New URL seed: - New URL seed: + New URL seed: - - This URL seed is already in the list. - This URL seed is already in the list. + This URL seed is already in the list. - + Web seed editing Web seed editing - + Web seed URL: Web seed URL: @@ -8359,22 +8827,22 @@ Those plugins were disabled. Couldn't save RSS AutoDownloader data in %1. Error: %2 - + Invalid data format Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8382,22 +8850,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8433,12 +8901,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). %1 (line: %2, column: %3, offset: %4). @@ -8446,99 +8914,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. Feed doesn't exist: %1. - + Cannot move root folder. Cannot move root folder. - - + + Item doesn't exist: %1. Item doesn't exist: %1. - + Couldn't move folder into itself. Couldn't move folder into itself. - + Cannot delete root folder. Cannot delete root folder. - + Failed to read RSS session data. %1 Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. Parent folder doesn't exist: %1. @@ -8562,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read Mark items read @@ -8588,132 +9056,132 @@ Those plugins were disabled. Torrents: (double-click to download) - - + + Delete Delete - + Rename... Rename... - + Rename Rename - - + + Update Update - + New subscription... New subscription... - - + + Update all feeds Update all feeds - + Download torrent Download torrent - + Open news URL Open news URL - + Copy feed URL Copy feed URL - + New folder... New folder... - + Edit feed URL... Edit feed URL... - + Edit feed URL Edit feed URL - + Please choose a folder name Please choose a folder name - + Folder name: Folder name: - + New folder New folder - - + + Please type a RSS feed URL Please type a RSS feed URL - - + + Feed URL: Feed URL: - + Deletion confirmation Deletion confirmation - + Are you sure you want to delete the selected RSS feeds? Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed Please choose a new name for this RSS feed - + New feed name: New feed name: - + Rename failed Rename failed - + Date: Date: - + Feed: - + Feed: - + Author: Author: @@ -8721,38 +9189,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. Unable to create more than %1 concurrent searches. - - + + Offset is out of range Offset is out of range - + All plugins are already up to date. All plugins are already up to date. - + Updating %1 plugins Updating %1 plugins - + Updating plugin %1 Updating plugin %1 - + Failed to check for plugin updates: %1 Failed to check for plugin updates: %1 @@ -8827,132 +9295,146 @@ Those plugins were disabled. Size: - + Name i.e: file name Name - + Size i.e: file size Size - + Seeders i.e: Number of full sources Seeders - + Leechers i.e: Number of partial sources Leechers - Search engine - Search engine + Search engine - + Filter search results... Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Results (showing <i>%1</i> out of <i>%2</i>): - + Torrent names only Torrent names only - + Everywhere Everywhere - + Use regular expressions Use regular expressions - + Open download window Open download window - + Download Download - + Open description page Open description page - + Copy Copy - + Name Name - + Download link Download link - + Description page URL Description page URL - + Searching... Searching... - + Search has finished Search has finished - + Search aborted Search aborted - + An error occurred during search... An error occurred during search... - + Search returned no results Search returned no results - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Column visibility - + Resize columns Resize columns - + Resize all non-hidden columns to the size of their contents Resize all non-hidden columns to the size of their contents @@ -8960,104 +9442,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. A more recent version of this plugin is already installed. - + Plugin %1 is not supported. Plugin %1 is not supported. - - + + Plugin is not supported. Plugin is not supported. - + Plugin %1 has been successfully updated. Plugin %1 has been successfully updated. - + All categories All categories - + Movies Movies - + TV shows TV shows - + Music Music - + Games Games - + Anime Anime - + Software Software - + Pictures Pictures - + Books Books - + Update server is temporarily unavailable. %1 Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') Search plugin '%1' contains invalid version string ('%2') @@ -9067,114 +9549,153 @@ Those plugins were disabled. - - - - Search Search - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. There aren't any search plug-ins installed. Click the "Search plug-ins..." button at the bottom right of the window to install some. - + Search plugins... Search plug-ins... - + A phrase to search for. A phrase to search for. - + Spaces in a search term may be protected by double quotes. Spaces in a search term may be protected by double quotes. - + Example: Search phrase example Example: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> - + All plugins All plug-ins - + Only enabled Only enabled - + + + Invalid data format. + Invalid data format. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> - + + Refresh + + + + Close tab Close tab - + Close all tabs Close all tabs - + Select... Select... - - - + + Search Engine Search Engine - + + Please install Python to use the Search Engine. Please install Python to use the Search Engine. - + Empty search pattern Empty search pattern - + Please type a search pattern first Please type a search pattern first - + + Stop Stop - Search has finished - Search has finished + Search has finished - Search has failed - Search has failed + Search has failed + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Click the "Search plug-ins..." button at the bottom right of the windo - + Upload: Upload: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Download: - + Alternative speed limits Alternative speed limits @@ -9506,32 +10027,32 @@ Click the "Search plug-ins..." button at the bottom right of the windo Average time in queue: - + Connected peers: Connected peers: - + All-time share ratio: All-time share ratio: - + All-time download: All-time download: - + Session waste: Session waste: - + All-time upload: All-time upload: - + Total buffer size: Total buffer size: @@ -9546,12 +10067,12 @@ Click the "Search plug-ins..." button at the bottom right of the windo Queued I/O jobs: - + Write cache overload: Write cache overload: - + Read cache overload: Read cache overload: @@ -9570,51 +10091,67 @@ Click the "Search plug-ins..." button at the bottom right of the windo StatusBar - + Connection status: Connection status: - - + + No direct connections. This may indicate network configuration problems. No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodes - + qBittorrent needs to be restarted! qBittorrent needs to be restarted! - - - + + + Connection Status: Connection Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Click to switch to alternative speed limits - + Click to switch to regular speed limits Click to switch to regular speed limits @@ -9643,14 +10180,22 @@ Click the "Search plug-ins..." button at the bottom right of the windo Completed (0) - Resumed (0) - Resumed (0) + Resumed (0) - Paused (0) - Paused (0) + Paused (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Click the "Search plug-ins..." button at the bottom right of the windo Completed (%1) Completed (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Paused (%1) + Paused (%1) @@ -9723,14 +10287,12 @@ Click the "Search plug-ins..." button at the bottom right of the windo Moving (%1) - Resume torrents - Resume torrents + Resume torrents - Pause torrents - Pause torrents + Pause torrents @@ -9738,9 +10300,8 @@ Click the "Search plug-ins..." button at the bottom right of the windo Remove torrents - Resumed (%1) - Resumed (%1) + Resumed (%1) @@ -9781,17 +10342,17 @@ Click the "Search plug-ins..." button at the bottom right of the windo TagFilterModel - + Tags Tags - + All All - + Untagged Untagged @@ -9799,52 +10360,64 @@ Click the "Search plug-ins..." button at the bottom right of the windo TagFilterWidget - + Add tag... Add tag... - + Remove tag Remove tag - + Remove unused tags Remove unused tags - Resume torrents - Resume torrents + Resume torrents - Pause torrents - Pause torrents + Pause torrents - + Remove torrents Remove torrents - New Tag - New Tag + New Tag + + + + Start torrents + + + + + Stop torrents + - + Tag: Tag: - + + Add tag + + + + Invalid tag name Invalid tag name - + Tag name '%1' is invalid Tag name '%1' is invalid @@ -9984,32 +10557,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Name - + Progress Progress - + Download Priority Download Priority - + Remaining Remaining - + Availability Availability - + Total Size Total Size @@ -10054,102 +10627,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Rename error - + Renaming Renaming - + New name: New name: - + Column visibility Column visibility - + Resize columns Resize columns - + Resize all non-hidden columns to the size of their contents Resize all non-hidden columns to the size of their contents - + Open Open - + Open containing folder Open containing folder - + Rename... Rename... - + Priority Priority - - + + Do not download Do not download - + Normal Normal - + High High - + Maximum Maximum - + By shown file order By shown file order - + Normal priority Normal priority - + High priority High priority - + Maximum priority Maximum priority - + Priority by shown file order Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + Too many active tasks + + + + Torrent creation is still unfinished. + Torrent creation is still unfinished. + + + + Torrent creation failed. + Torrent creation failed. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Please choose a different name and try again. - + Select file Select file - + Select folder Select folder @@ -10205,58 +10796,10 @@ Please choose a different name and try again. Piece size: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Please choose a different name and try again. Fields - + You can separate tracker tiers / groups with an empty line. You can separate tracker tiers / groups with an empty line. - + Web seed URLs: Web seed URLs: - + Tracker URLs: Tracker URLs: - + Comments: Comments: - + Source: Source: - + Progress: Progress: - + Create Torrent Create Torrent - - + + Torrent creation failed Torrent creation failed - + Reason: Path to file/folder is not readable. Reason: Path to file/folder is not readable. - + Select where to save the new torrent Select where to save the new torrent - + Torrent Files (*.torrent) Torrent Files (*.torrent) - - Reason: %1 - Reason: %1 - - - + Add torrent to transfer list failed. - + Add torrent to transfer list failed. - + Reason: "%1" - + Reason: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Reason: Created torrent is invalid. It won't be added to download list. + Add torrent failed - + Torrent creator Torrent creator - + Torrent created: Torrent created: @@ -10396,32 +10930,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. Watched folder Path cannot be relative. @@ -10429,27 +10963,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 Magnet file too big. File: %1 - + Failed to open magnet file: %1 Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 Rejecting failed torrent file: %1 - + Watching folder: "%1" Watching folder: "%1" @@ -10457,14 +10991,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Failed to allocate memory when reading file. File: "%1". Error: "%2" + Failed to allocate memory when reading file. File: "%1". Error: "%2" - Invalid metadata - Invalid metadata + Invalid metadata @@ -10495,127 +11027,203 @@ Please choose a different name and try again. Use another path for incomplete torrent - + Category: Category: - + + Torrent Share Limits + + + Torrent speed limits - Torrent speed limits + Torrent speed limits - + Download: Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits These will not exceed the global limits - + Upload: Upload: - Torrent share limits - Torrent share limits + Torrent share limits - Use global share limit - Use global share limit + Use global share limit - Set no share limit - Set no share limit + Set no share limit - Set share limit to - Set share limit to + Set share limit to - ratio - ratio + ratio - total minutes - total minutes + total minutes - inactive minutes - inactive minutes + inactive minutes - + Disable DHT for this torrent Disable DHT for this torrent - + Download in sequential order Download in sequential order - + Disable PeX for this torrent Disable PeX for this torrent - + Download first and last pieces first Download first and last pieces first - + Disable LSD for this torrent Disable LSD for this torrent - + Currently used categories Currently used categories - - + + Choose save path Choose save path - + Not applicable to private torrents Not applicable to private torrents - No share limit method selected - No share limit method selected + No share limit method selected - Please select a limit method first - Please select a limit method first + Please select a limit method first + + + + TorrentShareLimitsWidget + + + + + + Default + Default + + + + + + Unlimited + Unlimited + + + + + + Set to + Set to + + + + Seeding time: + Seeding time: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Inactive seeding time: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Remove torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Enable super seeding for torrent + + + + Ratio: + Ratio: @@ -10626,32 +11234,36 @@ Please choose a different name and try again. Torrent Tags - New Tag - New Tag + New Tag + Add tag + + + + Tag: Tag: - + Invalid tag name Invalid tag name - + Tag name '%1' is invalid. Tag name '%1' is invalid. - + Tag exists Tag exists - + Tag name already exists. Tag name already exists. @@ -10659,115 +11271,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. Error: '%1' is not a valid torrent file. - + Priority must be an integer Priority must be an integer - + Priority is not valid Priority is not valid - + Torrent's metadata has not yet downloaded Torrent's metadata has not yet downloaded - + File IDs must be integers File IDs must be integers - + File ID is not valid File ID is not valid - - - - + + + + Torrent queueing must be enabled Torrent queueing must be enabled - - + + Save path cannot be empty Save path cannot be empty - - + + Cannot create target directory Cannot create target directory - - + + Category cannot be empty Category cannot be empty - + Unable to create category Unable to create category - + Unable to edit category Unable to edit category - + Unable to export torrent file. Error: %1 Unable to export torrent file. Error: %1 - + Cannot make save path Cannot make save path - - 'sort' parameter is invalid + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + + 'sort' parameter is invalid 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" is not a valid file index. - + Index %1 is out of bounds. Index %1 is out of bounds. - - + + Cannot write to directory Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name Incorrect torrent name - - + + Incorrect category name Incorrect category name @@ -10798,257 +11425,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - Working + Working - + Disabled - Disabled + Disabled - + Disabled for this torrent - Disabled for this torrent + Disabled for this torrent - + This torrent is private - This torrent is private + This torrent is private - + N/A - N/A + N/A - + Updating... - Updating... + Updating... - + Not working - Not working + Not working - + Tracker error - + Tracker error - + Unreachable - + Unreachable - + Not contacted yet - Not contacted yet + Not contacted yet - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Invalid status! + + + URL/Announce endpoint + URL/Announce endpoint + Tier + Tier + + Protocol - + Protocol - + Status - Status + Status - + Peers - Peers + Peers - + Seeds - Seeds + Seeds - + Leeches - Leeches + Leeches - + Times Downloaded - Times Downloaded + Times Downloaded - + Message - Message + Message - Next announce - + Next announce - Min announce - + Min announce - v%1 - + v%1 TrackerListWidget - Working - Working - - - Disabled - Disabled - - - Disabled for this torrent - Disabled for this torrent - - - + This torrent is private This torrent is private - Updating... - Updating... - - - Not working - Not working - - - Not contacted yet - Not contacted yet - - - N/A - N/A - - - + Tracker editing Tracker editing - + Tracker URL: Tracker URL: - - + + Tracker editing failed Tracker editing failed - + The tracker URL entered is invalid. The tracker URL entered is invalid. - + The tracker URL already exists. The tracker URL already exists. - + Edit tracker URL... Edit tracker URL... - + Remove tracker Remove tracker - + Copy tracker URL Copy tracker URL - + Force reannounce to selected trackers Force re-announce to selected trackers - + Force reannounce to all trackers Force re-announce to all trackers - Tier - Tier - - - URL - URL - - - Status - Status - - - Seeds - Seeds - - - Times Downloaded - Times Downloaded - - - + Resize columns Resize columns - + Resize all non-hidden columns to the size of their contents Resize all non-hidden columns to the size of their contents - Peers - Peers - - - + Add trackers... Add trackers... - Leeches - Leeches - - - Message - Message - - - + Column visibility Column visibility @@ -11066,37 +11651,37 @@ Please choose a different name and try again. List of trackers to add (one per line): - + µTorrent compatible list URL: µTorrent compatible list URL: - + Download trackers list Download trackers list - + Add Add - + Trackers list URL error Trackers list URL error - + The trackers list URL cannot be empty The trackers list URL cannot be empty - + Download trackers list error Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" Error occurred when downloading the trackers list. Reason: "%1" @@ -11104,87 +11689,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - All (0) - - - Trackerless (0) - Tracker-less (0) - - - Error (0) - Error (0) - - - Warning (0) - Warning (0) - - - Trackerless - Trackerless - - - Error (%1) - Error (%1) - - - + Warning (%1) Warning (%1) - + Trackerless (%1) Tracker-less (%1) - + Tracker error (%1) - + Tracker error (%1) - + Other error (%1) - + Other error (%1) - + Remove tracker - Remove tracker + Remove tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Resume torrents + Resume torrents - Pause torrents - Pause torrents + Pause torrents - + Remove torrents Remove torrents - + Removal confirmation - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + Don't ask me again. - + All (%1) this is for the tracker filter All (%1) @@ -11193,7 +11761,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'mode': invalid argument @@ -11286,9 +11854,8 @@ Please choose a different name and try again. Checking resume data - Paused - Paused + Paused @@ -11313,220 +11880,262 @@ Please choose a different name and try again. Errored - + Name i.e: torrent name Name - + Size i.e: torrent size Size - + Progress % Done Progress - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Seeds - + Peers i.e. partial sources (often untranslated) Peers - + Down Speed i.e: Download speed Down Speed - + Up Speed i.e: Upload speed Up Speed - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category Category - + Tags Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Added On - + Completed On Torrent was completed on 01/01/2010 08:00 Completed On - + Tracker Tracker - + Down Limit i.e: Download limit Down Limit - + Up Limit i.e: Upload limit Up Limit - + Downloaded Amount of data downloaded (e.g. in MB) Downloaded - + Uploaded Amount of data uploaded (e.g. in MB) Uploaded - + Session Download Amount of data downloaded since program open (e.g. in MB) Session Download - + Session Upload Amount of data uploaded since program open (e.g. in MB) Session Upload - + Remaining Amount of data left to download (e.g. in MB) Remaining - + + Time Active + Time (duration) the torrent is active (not stopped) + Time Active + + + + Yes + Yes + + + + No + No + + Time Active Time (duration) the torrent is active (not paused) - Time Active + Time Active - + Save Path Torrent save path Save Path - + Incomplete Save Path Torrent incomplete save path Incomplete Save Path - + Completed Amount of data completed (e.g. in MB) Completed - + Ratio Limit Upload share ratio limit Ratio Limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Last Seen Complete - + Last Activity Time passed since a chunk was downloaded/uploaded Last Activity - + Total Size i.e. Size including unwanted data Total Size - + Availability The number of distributed copies of the torrent Availability - + Info Hash v1 i.e: torrent info hash v1 Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Reannounce In + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1 ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seeded for %2) @@ -11535,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Column visibility - + Recheck confirmation Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? Are you sure you want to recheck the selected torrent(s)? - + Rename Rename - + New name: New name: - + Choose save path Choose save path - Confirm pause - Confirm pause + Confirm pause - Would you like to pause all torrents? - Would you like to pause all torrents? + Would you like to pause all torrents? - Confirm resume - Confirm resume + Confirm resume - Would you like to resume all torrents? - Would you like to resume all torrents? + Would you like to resume all torrents? - + Unable to preview Unable to preview - + The selected torrent "%1" does not contain previewable files The selected torrent "%1" does not contain previewable files - + Resize columns Resize columns - + Resize all non-hidden columns to the size of their contents Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Add Tags + Add Tags - + Choose folder to save exported .torrent files Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists A file with the same name already exists - + Export .torrent file error Export .torrent file error - + Remove All Tags Remove All Tags - + Remove all tags from selected torrents? Remove all tags from selected torrents? - + Comma-separated tags: Comma-separated tags: - + Invalid tag Invalid tag - + Tag name: '%1' is invalid Tag name: '%1' is invalid - &Resume Resume/start the torrent - &Resume + &Resume - &Pause Pause the torrent - &Pause + &Pause - Force Resu&me Force Resume/start the torrent - Force Resu&me + Force Resu&me - + Pre&view file... Pre&view file... - + Torrent &options... Torrent &options... - + Open destination &folder Open destination &folder - + Move &up i.e. move up in the queue Move &up - + Move &down i.e. Move down in the queue Move &down - + Move to &top i.e. Move to top of the queue Move to &top - + Move to &bottom i.e. Move to bottom of the queue Move to &bottom - + Set loc&ation... Set loc&ation... - + Force rec&heck Force rec&heck - + Force r&eannounce Force r&eannounce - + &Magnet link &Magnet link - + Torrent &ID Torrent &ID - + + &Comment + &Comment + + + &Name &Name - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Re&name... - + Edit trac&kers... Edit trac&kers... - + E&xport .torrent... E&xport .torrent... - + Categor&y Categor&y - + &New... New category... &New... - + &Reset Reset category &Reset - + Ta&gs Ta&gs - + &Add... Add / assign multiple tags... &Add... - + &Remove All Remove all tags &Remove All - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Queue - + &Copy &Copy - + Exported torrent is not necessarily the same as the imported Exported torrent is not necessarily the same as the imported - + Download in sequential order Download in sequential order - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Remove - + Download first and last pieces first Download first and last pieces first - + Automatic Torrent Management Automatic Torrent Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Can not force reannounce if torrent is Paused/Queued/Errored/Checking + Can not force reannounce if torrent is Paused/Queued/Errored/Checking - + Super seeding mode Super seeding mode @@ -11907,28 +12540,28 @@ Please choose a different name and try again. Icon ID - + UI Theme Configuration. UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Couldn't copy icon file. Source: %1. Destination: %2. @@ -11936,7 +12569,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Failed to load UI theme from file: "%1" @@ -11967,89 +12605,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python detected, executable name: '%1', version: %2 - - - Python not detected - Python not detected - Found Python executable. Name: "%1". Version: "%2" - + Found Python executable. Name: "%1". Version: "%2" Failed to find Python executable. Path: "%1". - + Failed to find Python executable. Path: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Failed to find `python3` executable in PATH environment variable. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Failed to find `python` executable in PATH environment variable. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Failed to find `python` executable in Windows Registry. Failed to find Python executable - + Failed to find Python executable Utils::IO - + File open error. File: "%1". Error: "%2" File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12113,72 +12744,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. - Using built-in Web UI. + + Using built-in WebUI. + Using built-in WebUI. - - Using custom Web UI. Location: "%1". - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 Web server error. %1 - + Web server error. Unknown error. Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12186,143 +12817,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS setup successful + + Credentials are not set + Credentials are not set + + + + WebUI: HTTPS setup successful + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs + + + Unknown error + Unknown error misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Unknown - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent will shutdown the computer now because all downloads are complete. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_en_GB.ts b/src/lang/qbittorrent_en_GB.ts index 28ff9f41262c..67f7a193ec24 100644 --- a/src/lang/qbittorrent_en_GB.ts +++ b/src/lang/qbittorrent_en_GB.ts @@ -14,107 +14,107 @@ About - + Authors - + Authors - + Current maintainer Current maintainer - + Greece Greece - - + + Nationality: Nationality: - - + + E-mail: E-mail: - - + + Name: Name: - + Original author Original author - + France France - + Special Thanks Special Thanks - + Translators Translators - + License Licence - + Software Used - + Software Used - + qBittorrent was built with the following libraries: qBittorrent was built with the following libraries: - + Copy to clipboard - + Copy to clipboard An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. - + An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. - Copyright %1 2006-2023 The qBittorrent project - + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project Home Page: - + Home Page: Forum: - + Forum: Bug Tracker: - + Bug Tracker: The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License - + The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License @@ -123,39 +123,39 @@ The old path is invalid: '%1'. - + The old path is invalid: '%1'. The new path is invalid: '%1'. - + The new path is invalid: '%1'. Absolute path isn't allowed: '%1'. - + Absolute path isn't allowed: '%1'. The file already exists: '%1'. - + The file already exists: '%1'. No such file: '%1'. - + No such file: '%1'. The folder already exists: '%1'. - + The folder already exists: '%1'. No such folder: '%1'. - + No such folder: '%1'. @@ -166,14 +166,13 @@ Save at - + Never show again Never show again - Torrent settings - Torrent settings + Torrent settings @@ -191,34 +190,39 @@ Start torrent - + Torrent information Torrent information - + Skip hash check Skip hash check Use another path for incomplete torrent + Use another path for incomplete torrent + + + + Torrent options Tags: - + Tags: Click [...] button to add/remove tags. - + Click [...] button to add/remove tags. Add/remove tags - + Add/remove tags @@ -228,73 +232,78 @@ Stop condition: - + Stop condition: - - + + None - + None - - + + Metadata received - + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + Torrents that have metadata initially will be added as stopped. + + + + Files checked - + Files checked - + Add to top of queue - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: - + Content layout: - + Original - + Original - + Create subfolder Create subfolder - + Don't create subfolder - + Don't create subfolder - + Info hash v1: - + Info hash v1: - + Size: Size: - + Comment: Comment: - + Date: Date: @@ -321,214 +330,185 @@ Remember last used save path - + Remember last used save path - + Do not delete .torrent file Do not delete .torrent file - + Download in sequential order Download in sequential order - + Download first and last pieces first Download first and last pieces first - + Info hash v2: - + Info hash v2: - + Select All Select All - + Select None Select None - + Save as .torrent file... - + Save as .torrent file... - + I/O Error I/O Error - Invalid torrent - Invalid torrent - - - + Not Available This comment is unavailable Not Available - + Not Available This date is unavailable Not Available - + Not available Not available - Invalid magnet link - Invalid magnet link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Failed to load the torrent: %1. -Error: %2 - - - This magnet link was not recognized - This magnet link was not recognised - - - + Magnet link Magnet link - + Retrieving metadata... Retrieving metadata... - - + + Choose save path Choose save path - + No stop condition is set. - + No stop condition is set. - + Torrent will stop after metadata is received. - - - - - Torrents that have metadata initially aren't affected. - + Torrent will stop after metadata is received. - + Torrent will stop after files are initially checked. - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + This will also download metadata if it wasn't there initially. - - + + N/A N/A - + %1 (Free space on disk: %2) - + %1 (Free space on disk: %2) - + Not available This size is unavailable. Not available - + Torrent file (*%1) - + Torrent file (*%1) - + Save as torrent file - + Save as torrent file - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - + Cannot create v2 torrent until its data is fully downloaded. - + Filter files... Filter files... - + Parsing metadata... Parsing metadata... - + Metadata retrieval complete Metadata retrieval complete - - Download Error - Download Error - AddTorrentManager Downloading torrent... Source: "%1" - + Downloading torrent... Source: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Failed to add torrent. Source: "%1". Reason: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source - + Trackers are merged from new source @@ -536,7 +516,7 @@ Error: %2 Form - + Form @@ -556,12 +536,12 @@ Error: %2 Note: the current defaults are displayed for reference. - + Note: the current defaults are displayed for reference. Use another path for incomplete torrents: - + Use another path for incomplete torrents: @@ -571,17 +551,17 @@ Error: %2 Tags: - + Tags: Click [...] button to add/remove tags. - + Click [...] button to add/remove tags. Add/remove tags - + Add/remove tags @@ -591,22 +571,22 @@ Error: %2 Start torrent: - + Start torrent: Content layout: - + Content layout: Stop condition: - + Stop condition: Add to top of queue: - + Add to top of queue: @@ -614,807 +594,930 @@ Error: %2 Skip hash check - - - Choose save path - Choose save path + + Torrent share limits + Torrent share limits - - - - - - - Default - + + + Choose save path + Choose save path + + + - Yes - Yes + Default + Default + Yes + Yes + + + + + No No - + Manual Manual - + Automatic Automatic - + Original - + Original - + Create subfolder Create subfolder - + Don't create subfolder - + Don't create subfolder - + None - + None - + Metadata received - + Metadata received - + Files checked - + Files checked AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Recheck torrents on completion - - + + ms milliseconds ms - + Setting Setting - + Value Value set for this setting Value - + (disabled) (disabled) - + (auto) (auto) - + + min minutes min - + All addresses All addresses - + qBittorrent Section qBittorrent Section - - + + Open documentation Open documentation - + All IPv4 addresses - + All IPv4 addresses - + All IPv6 addresses - + All IPv6 addresses - + libtorrent Section libtorrent Section - + Fastresume files - + Fastresume files - + SQLite database (experimental) - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Resume data storage type (requires restart) - + Normal Normal - + Below normal - + Below normal - + Medium - + Medium - + Low - + Low - + Very low - - - - - Process memory priority (Windows >= 8 only) - + Very low - + Physical memory (RAM) usage limit - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Asynchronous I/O threads - + Hashing threads - + Hashing threads - + File pool size - + File pool size - + Outstanding memory when checking torrents - + Outstanding memory when checking torrents - + Disk cache - + Disk cache - - - - + + + + s seconds s - + Disk cache expiry interval Disk cache expiry interval - + Disk queue size - + Disk queue size - - + + Enable OS cache Enable OS cache - + Coalesce reads & writes - + Coalesce reads & writes - + Use piece extent affinity - + Use piece extent affinity - + Send upload piece suggestions Send upload piece suggestions - - - - + + + + + 0 (disabled) - + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Save resume data interval [0: disabled] - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB - + KiB - + (infinite) - + (infinite) - + (system default) + (system default) + + + + Delete files permanently - - This option is less effective on Linux + + Move files to trash (if possible) - - Bdecode depth limit + + Torrent content removing mode - + + This option is less effective on Linux + This option is less effective on Linux + + + + Process memory priority + Process memory priority + + + + Bdecode depth limit + Bdecode depth limit + + + Bdecode token limit - + Bdecode token limit - + Default - + Default - + Memory mapped files - + Memory mapped files - + POSIX-compliant + POSIX-compliant + + + + Simple pread/pwrite - + Disk IO type (requires restart) - + Disk IO type (requires restart) - - + + Disable OS cache - + Disable OS cache - + Disk IO read mode - + Disk IO read mode - + Write-through - + Write-through - + Disk IO write mode - + Disk IO write mode - + Send buffer watermark - + Send buffer watermark - + Send buffer low watermark - + Send buffer low watermark - + Send buffer watermark factor - + Send buffer watermark factor - + Outgoing connections per second - + Outgoing connections per second - - + + 0 (system default) - + 0 (system default) - + Socket send buffer size [0: system default] - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size + Socket backlog size + + + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + .torrent file size limit - + .torrent file size limit - + Type of service (ToS) for connections to peers - + Type of service (ToS) for connections to peers - + Prefer TCP - + Prefer TCP - + Peer proportional (throttles TCP) - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) Support internationalised domain name (IDN) - + Allow multiple connections from the same IP address - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + Disallow connection to peers on privileged ports + + + + It appends the text to the window title to help distinguish qBittorent instances + It appends the text to the window title to help distinguish qBittorent instances + + + + Customize application instance name + Customise application instance name - + It controls the internal state update interval which in turn will affect UI updates - + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Refresh interval - + Resolve peer host names Resolve peer host names - + IP address reported to trackers (requires restart) + IP address reported to trackers (requires restart) + + + + Port reported to trackers (requires restart) [0: listening port] - + Reannounce to all trackers when IP or port changed Re-announce to all trackers when IP or port changed - + Enable icons in menus - + Enable icons in menus - + Enable port forwarding for embedded tracker - + Enable port forwarding for embedded tracker - - (Auto detect if empty) - + + Enable quarantine for downloaded files + Enable quarantine for downloaded files - - Python executable path (may require restart) + + Enable Mark-of-the-Web (MOTW) for downloaded files + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - - Confirm removal of tracker from all torrents + + Ignore SSL errors - - Peer turnover disconnect percentage + + (Auto detect if empty) + (Auto detect if empty) + + + + Python executable path (may require restart) + Python executable path (may require restart) + + + + Start BitTorrent session in paused state - - Peer turnover threshold percentage + + sec + seconds + sec + + + + -1 (unlimited) - - Peer turnover disconnect interval + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirm removal of tracker from all torrents + + + + Peer turnover disconnect percentage + Peer turnover disconnect percentage + + + + Peer turnover threshold percentage + Peer turnover threshold percentage + + + + Peer turnover disconnect interval + Peer turnover disconnect interval + + + Resets to default if empty - + Resets to default if empty - + DHT bootstrap nodes - + DHT bootstrap nodes - + I2P inbound quantity - + I2P inbound quantity - + I2P outbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P inbound length - + I2P outbound length - + I2P outbound length - + Display notifications Display notifications - + Display notifications for added torrents Display notifications for added torrents - + Download tracker's favicon Download tracker's favicon - + Save path history length - + Save path history length - + Enable speed graphs - + Enable speed graphs - + Fixed slots - + Fixed slots - + Upload rate based - + Upload rate based - + Upload slots behavior Upload slots behaviour - + Round-robin - + Round-robin - + Fastest upload - + Fastest upload - + Anti-leech - + Anti-leech - + Upload choking algorithm - + Upload choking algorithm - + Confirm torrent recheck Confirm torrent recheck - + Confirm removal of all tags - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all trackers in a tier - + Always announce to all tiers - + Always announce to all tiers - + Any interface i.e. Any network interface Any interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + %1-TCP mixed mode algorithm - + Resolve peer countries - + Resolve peer countries - + Network interface - + Network interface - + Optional IP address to bind to - + Optional IP address to bind to - + Max concurrent HTTP announces - + Max concurrent HTTP announces - + Enable embedded tracker Enable embedded tracker - + Embedded tracker port Embedded tracker port - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 started + + + Invalid directory path + - - Running in portable mode. Auto detected profile folder at: %1 + + Directory does not exist - - Redundant command line flag detected: "%1". Portable mode implies relative fastresume. + + Invalid mode, allowed values: %1 - - Using config directory: %1 + + cookies must be array + + + Application + + + Running in portable mode. Auto detected profile folder at: %1 + Running in portable mode. Auto detected profile folder at: %1 + + + + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. + - + + Using config directory: %1 + Using config directory: %1 + + + Torrent name: %1 Torrent name: %1 - + Torrent size: %1 Torrent size: %1 - + Save path: %1 Save path: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds The torrent was downloaded in %1. - + + Thank you for using qBittorrent. Thank you for using qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, sending e-mail notification - + Add torrent failed - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + Couldn't add torrent '%1', reason: %2. + + + + The WebUI administrator username is: %1 + The WebUI administrator username is: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + You should set your own password in program preferences. + You should set your own password in program preferences. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + Loading torrents... - + E&xit E&xit - + I/O Error i.e: Input/Output Error I/O Error - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1423,162 +1526,143 @@ Error: %2 Reason: %2 - Error - Error - - - Failed to add torrent: %1 - Failed to add torrent: %1 - - - + Torrent added Torrent added - + '%1' was added. e.g: xxx.avi was added. '%1' was added. - + Download completed - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' has finished downloading. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 started. Process ID: %2 - URL download error - URL download error + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Couldn't download file at URL '%1', reason: %2. + + Test email + - Torrent file association - Torrent file association + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' has finished downloading. - + Information Information - + To fix the error, you may need to edit the config file manually. - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - - - - The Web UI administrator username is: %1 - - - - - The Web UI administrator password has not been changed from the default: %1 - + To control qBittorrent, access the WebUI at: %1 - - This is a security risk, please change your password in program preferences. - - - - + Exit Exit - + Recursive download confirmation - Recursive download confirmation + Recursive download confirmation - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - Never + Never - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent termination initiated - + qBittorrent is shutting down... - + qBittorrent is shutting down... - + Saving torrent progress... Saving torrent progress... - + qBittorrent is now ready to exit - + qBittorrent is now ready to exit AsyncFileStorage - + Could not create directory '%1'. - + Could not create directory '%1'. AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. Your IP address has been banned after too many failed authentication attempts. - + WebAPI login success. IP: %1 - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1601,7 +1685,7 @@ Error: %2 Use Smart Episode Filter - + Use Smart Episode Filter @@ -1611,25 +1695,25 @@ Error: %2 Auto downloading of RSS torrents is currently disabled. You can enable it in application settings. - + Auto downloading of RSS torrents is currently disabled. You can enable it in application settings. Rename selected rule. You can also use the F2 hotkey to rename. - + Rename selected rule. You can also use the F2 hotkey to rename. Priority: - + Priority: - + Must Not Contain: Must Not Contain: - + Episode Filter: Episode Filter: @@ -1637,18 +1721,19 @@ Error: %2 Smart Episode Filter will check the episode number to prevent downloading of duplicates. Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also support - as a separator) - + Smart Episode Filter will check the episode number to prevent downloading of duplicates. +Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also support - as a separator) Torrent parameters - + Torrent parameters Ignore Subsequent Matches for (0 to Disable) ... X days - + Ignore Subsequent Matches for (0 to Disable) @@ -1681,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Export... - + Matches articles based on episode filter. Matches articles based on episode filter. - + Example: Example: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match will match 2, 5, 8 through 15, 30 and onward episodes of season one - + Episode filter rules: Episode filter rules: - + Season number is a mandatory non-zero value Season number is a mandatory non-zero value - + Filter must end with semicolon Filter must end with semicolon - + Three range types for episodes are supported: Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value Episode number is a mandatory positive value - + Rules - + Rules - + Rules (legacy) - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago Last Match: %1 days ago - + Last Match: Unknown Last Match: Unknown - + New rule name New rule name - + Please type the name of the new download rule. Please type the name of the new download rule. - - + + Rule name conflict Rule name conflict - - + + A rule with this name already exists, please choose another name. A rule with this name already exists, please choose another name. - + Are you sure you want to remove the download rule named '%1'? Are you sure you want to remove the download rule named '%1'? - + Are you sure you want to remove the selected download rules? Are you sure you want to remove the selected download rules? - + Rule deletion confirmation Rule deletion confirmation - + Invalid action Invalid action - + The list is empty, there is nothing to export. The list is empty, there is nothing to export. - + Export RSS rules - + Export RSS rules - + I/O Error I/O Error - + Failed to create the destination file. Reason: %1 - + Failed to create the destination file. Reason: %1 - + Import RSS rules - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Failed to import the selected rules file. Reason: %1 - + Add new rule... Add new rule... - + Delete rule Delete rule - + Rename rule... Rename rule... - + Delete selected rules Delete selected rules - + Clear downloaded episodes... - + Clear downloaded episodes... - + Rule renaming Rule renaming - + Please type the new rule name Please type the new rule name - + Clear downloaded episodes - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 Position %1: %2 - + Wildcard mode: you can use Wildcard mode: you can use - - + + Import error - + Import error - + Failed to read the file. %1 - + Failed to read the file. %1 - + ? to match any single character ? to match any single character - + * to match zero or more of any characters * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) White-spaces count as AND operators (all words, any order) - + | is used as OR operator | is used as OR operator - + If word order is important use * instead of whitespace. If word order is important use * instead of white-space. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) An expression with an empty %1 clause (e.g. %2) - + will match all articles. will match all articles. - + will exclude all articles. will exclude all articles. @@ -1947,12 +2032,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also List of banned IP addresses - + List of banned IP addresses Ban IP - + Ban IP @@ -1963,681 +2048,759 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Warning - + Warning The entered IP address is invalid. - + The entered IP address is invalid. The entered IP is already banned. - + The entered IP is already banned. BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + Cannot parse torrent info: invalid format + + + + Mismatching info-hash detected in resume data + Mismatching info-hash detected in resume data - + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 - + Couldn't save data to '%1'. Error: %2 BitTorrent::DBResumeDataStorage - + Not found. - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 - + Couldn't begin transaction. Error: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 - + Couldn't store torrents queue positions. Error: %1 BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - - - - + Distributed Hash Table (DHT) support: %1 + + + + + + + + + + + ON ON - - - - - - - - - + + + + + + + + + OFF OFF - - + + Local Peer Discovery support: %1 - + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - + Anonymous mode: %1 - - + + Encryption support: %1 - + Encryption support: %1 - - + + FORCED FORCED - + Could not find GUID of network interface. Interface: "%1" - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - + Torrent: "%1". - - - Removed torrent. - + Removed torrent. - - - Removed torrent and deleted its content. - + Removed torrent and deleted its content. - - - Torrent paused. - + Torrent paused. - - - + Super seeding enabled. - + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" - + Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP support: ON + + + + Saving resume data completed. - - UPnP/NAT-PMP support: OFF + + BitTorrent session successfully finished. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Session shutdown timed out. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Removing torrent. - System network status changed to %1 - e.g: System network status changed to ONLINE - System network status changed to %1 + + Removing torrent and deleting its content. + - ONLINE - ONLINE + + Torrent stopped. + - OFFLINE - OFFLINE + + Torrent content removed. Torrent: "%1" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Network configuration of %1 has changed, refreshing session binding + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - The configured network address is invalid. Address: "%1" + + Torrent removed. Torrent: "%1" - - - Failed to find the configured network address to listen on. Address: "%1" + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 - + + Merging of trackers is disabled + Merging of trackers is disabled + + + + Trackers cannot be merged because it is a private torrent + Trackers cannot be merged because it is a private torrent + + + + Trackers are merged from new source + Trackers are merged from new source + + + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP support: OFF + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + + + Aborted saving resume data. Number of outstanding torrents: %1 + Aborted saving resume data. Number of outstanding torrents: %1 + + + + The configured network address is invalid. Address: "%1" + The configured network address is invalid. Address: "%1" + + + + + Failed to find the configured network address to listen on. Address: "%1" + Failed to find the configured network address to listen on. Address: "%1" + + + The configured network interface is invalid. Interface: "%1" + The configured network interface is invalid. Interface: "%1" + + + + Tracker list updated - - Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + + Failed to update tracker list. Reason: "%1" - + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + + + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" + Removed URL seed from torrent. Torrent: "%1". URL: "%2" + + + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - Torrent paused. Torrent: "%1" - + Torrent paused. Torrent: "%1" - + Torrent resumed. Torrent: "%1" - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" + + + + Torrent stopped. Torrent: "%1" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - + Torrent errored. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - + Removed torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - + Removed torrent and deleted its content. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + IP filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + filtered port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). + privileged port (%1) + + + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + BitTorrent session encountered a serious error. Reason: "%1" - + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + %1 mixed mode restrictions - + Failed to load Categories. %1 - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - + %1 is disabled - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + Failed to start seeding. BitTorrent::TorrentCreator - + Operation aborted - + Operation aborted - - + + Create new torrent file failed. Reason: %1. - + Create new torrent file failed. Reason: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + Download first and last piece first: %1, torrent: '%2' - + On - + On - + Off - + Off + + + + Failed to reload torrent. Torrent: %1. Reason: %2 + Failed to reload torrent. Torrent: %1. Reason: %2 - + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 - + Performance alert: %1. More info: %2 @@ -2645,195 +2808,209 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Embedded Tracker: Now listening on IP: %1, port: %2 - + Embedded Tracker: Now listening on IP: %1, port: %2 Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 - + Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' must follow syntax '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' must follow syntax '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' - + Expected integer number in environment variable '%1', but got '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' must follow syntax '%1=%2' + Parameter '%1' must follow syntax '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + %1 must specify a valid port (1 to 65535). - + Usage: Usage: - + [options] [(<filename> | <url>)...] - + [options] [(<filename> | <url>)...] - + Options: Options: - + Display program version and exit - + Display program version and exit - + Display this help message and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' must follow syntax '%1=%2' + + + + Confirm the legal notice + Confirm the legal notice + + + + port port - - Change the Web UI port - + + Change the WebUI port + Change the WebUI port - + Change the torrenting port - + Change the torrenting port - + Disable splash screen Disable splash screen - + Run in daemon-mode (background) Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + dir - + Store configuration files in <dir> Store configuration files in <dir> - - + + name name - + Store configuration files in directories qBittorrent_<name> - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hack into libtorrent fast-resume files and make file paths relative to the profile directory - + files or URLs - + files or URLs - + Download the torrents passed by the user - + Download the torrents passed by the user - + Options when adding new torrents: Options when adding new torrents: - + path - + path - + Torrent save path Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Add torrents as started or paused + Add torrents as started or paused + + + Skip hash check Skip hash check - + Assign torrents to category. If the category doesn't exist, it will be created. Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download files in sequential order - + Download first and last pieces first Download first and last pieces first - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables Command line parameters take precedence over environment variables - + Help Help @@ -2841,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Categories - + All All - + Uncategorized Uncategorised @@ -2871,7 +3048,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Edit category... - + Edit category... @@ -2885,32 +3062,45 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Resume torrents + Start torrents + + Stop torrents + + + + Resume torrents + Resume torrents + + Pause torrents - Pause torrents + Pause torrents Remove torrents - + Remove torrents ColorWidget - + Edit... - + Edit... - + Reset Reset + + + System + + CookiesDialog @@ -2951,22 +3141,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 - + Failed to load custom theme colours. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Failed to load default theme colours. %1 @@ -2974,7 +3164,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Remove torrent(s) - + Remove torrent(s) @@ -2983,25 +3173,29 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Also permanently delete the files + Also permanently delete the files + + + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove '%1' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? - + Remove - + Remove @@ -3009,17 +3203,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Download from URLs - + Download from URLs - + Add torrent links Add torrent links - + One link per line (HTTP links, Magnet links and info-hashes are supported) - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3027,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Download - + No URL entered No URL entered - + Please type at least one URL. Please type at least one URL. @@ -3042,17 +3236,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Missing pieces - + Missing pieces Partial pieces - + Partial pieces Completed pieces - + Completed pieces @@ -3097,7 +3291,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also An error occurred while trying to open the log file. Logging to file is disabled. - + An error occurred while trying to open the log file. Logging to file is disabled. @@ -3112,24 +3306,24 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Browse... Launch file dialog button text (full) - + &Browse... Choose a file Caption for file open/save dialog - + Choose a file Choose a folder Caption for directory open dialog - + Choose a folder Any file - + Any file @@ -3139,14 +3333,14 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also I/O Error: Could not open IP filter file in read mode. - + I/O Error: Could not open IP filter file in read mode. IP filter line %1 is malformed. - + IP filter line %1 is malformed. @@ -3170,14 +3364,14 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IP filter exception thrown for line %1. Exception is: %2 - + IP filter exception thrown for line %1. Exception is: %2 %1 extra IP filter parsing errors occurred. 513 extra IP filter parsing errors occurred. - + %1 extra IP filter parsing errors occurred. @@ -3191,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Parsing Error: The filter file is not a valid PeerGuardian P2B file. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Downloading torrent... Source: "%1" - Trackers cannot be merged because it is a private torrent - + Trackers cannot be merged because it is a private torrent - + Torrent is already present + Torrent is already present + + + + Trackers cannot be merged because it is a private torrent. - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? GeoIPDatabase - - + + Unsupported database file size. Unsupported database file size. - + Metadata error: '%1' entry not found. Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 Unsupported database version: %1.%2 - + Unsupported IP version: %1 Unsupported IP version: %1 - + Unsupported record size: %1 Unsupported record size: %1 - + Database corrupted: no data section found. Database corrupted: no data section found. @@ -3256,19 +3477,19 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 - + Bad Http request, closing socket. IP: %1 @@ -3276,17 +3497,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also List of whitelisted IP subnets - + List of whitelisted IP subnets Example: 172.17.32.0/24, fdff:ffff:c8::/40 - + Example: 172.17.32.0/24, fdff:ffff:c8::/40 Add subnet - + Add subnet @@ -3301,135 +3522,134 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also The entered subnet is invalid. - + The entered subnet is invalid. IconWidget - + Browse... Browse... - + Reset Reset - + Select icon - + Select icon - + Supported image files - + Supported image files + + + + LegalNotice + + + Legal Notice + Legal Notice + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + No further notices will be issued. + No further notices will be issued. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + Press 'Enter' key to continue... + Press 'Enter' key to continue... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was blocked. Reason: %2. - + %1 was banned 0.0.0.0 was banned - + %1 was banned Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 is an unknown command line parameter. - - + + %1 must be the single command line parameter. %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - You cannot use %1: qBittorrent is already running for this user. - - - + Run application with -h option to read about command line parameters. Run application with -h option to read about command line parameters. - + Bad command line Bad command line - + Bad command line: Bad command line: - + An unrecoverable error occurred. - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Legal Notice - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - - No further notices will be issued. - - - - - Press %1 key to accept and continue... - Press %1 key to accept and continue... + qBittorrent has encountered an unrecoverable error. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + You cannot use %1: qBittorrent is already running. + You cannot use %1: qBittorrent is already running. - - Legal notice - Legal notice + + Another qBittorrent instance is already running. + Another qBittorrent instance is already running. - - Cancel - Cancel + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - I Agree - I Agree + + Error when daemonizing. Reason: "%1". Error code: %2. + Error when daemonizing. Reason: "%1". Error code: %2. @@ -3440,615 +3660,706 @@ No further notices will be issued. &Edit - + &Tools &Tools - + &File &File - + &Help &Help - + On Downloads &Done On Downloads &Done - + &View &View - + &Options... &Options... - &Resume - &Resume + &Resume - + &Remove - + &Remove - + Torrent &Creator Torrent &Creator - - + + Alternative Speed Limits Alternative Speed Limits - + &Top Toolbar &Top Toolbar - + Display Top Toolbar Display Top Toolbar - + Status &Bar - + Status &Bar - + Filters Sidebar - + Filters Sidebar - + S&peed in Title Bar S&peed in Title Bar - + Show Transfer Speed in Title Bar Show Transfer Speed in Title Bar - + &RSS Reader &RSS Reader - + Search &Engine Search &Engine - + L&ock qBittorrent L&ock qBittorrent - + Do&nate! Do&nate! - - &Do nothing + + Sh&utdown System - + + &Do nothing + &Do nothing + + + Close Window - + Close Window - R&esume All - R&esume All + R&esume All - + Manage Cookies... Manage Cookies... - + Manage stored network cookies Manage stored network cookies - + Normal Messages Normal Messages - + Information Messages Information Messages - + Warning Messages Warning Messages - + Critical Messages Critical Messages - + &Log &Log - - Set Global Speed Limits... + + Sta&rt - - Bottom of Queue + + Sto&p - - Move to the bottom of the queue + + R&esume Session - - Top of Queue + + Pau&se Session - + + Set Global Speed Limits... + Set Global Speed Limits... + + + + Bottom of Queue + Bottom of Queue + + + + Move to the bottom of the queue + Move to the bottom of the queue + + + + Top of Queue + Top of Queue + + + Move to the top of the queue - + Move to the top of the queue - + Move Down Queue - + Move Down Queue - + Move down in the queue - + Move down in the queue - + Move Up Queue - + Move Up Queue - + Move up in the queue - + Move up in the queue - + &Exit qBittorrent &Exit qBittorrent - + &Suspend System &Suspend System - + &Hibernate System &Hibernate System - S&hutdown System - S&hutdown System + S&hutdown System - + &Statistics &Statistics - + Check for Updates Check for Updates - + Check for Program Updates Check for Program Updates - + &About &About - &Pause - &Pause + &Pause - P&ause All - P&ause All + P&ause All - + &Add Torrent File... &Add Torrent File... - + Open Open - + E&xit E&xit - + Open URL Open URL - + &Documentation &Documentation - + Lock Lock - - - + + + Show Show - + Check for program updates Check for program updates - + Add Torrent &Link... Add Torrent &Link... - + If you like qBittorrent, please donate! If you like qBittorrent, please donate! - - + + Execution Log Execution Log - + Clear the password Clear the password - + &Set Password &Set Password - + Preferences Preferences - + &Clear Password &Clear Password - + Transfers Transfers - - + + qBittorrent is minimized to tray qBittorrent is minimised to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. This behaviour can be changed in the settings. You won't be reminded again. - + Icons Only Icons Only - + Text Only Text Only - + Text Alongside Icons Text Alongside Icons - + Text Under Icons Text Under Icons - + Follow System Style Follow System Style - - + + UI lock password UI lock password - - + + Please type the UI lock password: Please type the UI lock password: - + Are you sure you want to clear the password? Are you sure you want to clear the password? - + Use regular expressions Use regular expressions - - Search - Search + + + Search Engine + Search Engine - - Transfers (%1) - Transfers (%1) + + Search has failed + Search has failed - Recursive download confirmation - Recursive download confirmation + + Search has finished + Search has finished - Never - Never + + Search + Search + + + + Transfers (%1) + Transfers (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + qBittorrent is closed to tray - + Some files are currently transferring. - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + Are you sure you want to quit qBittorrent? - + &No &No - + &Yes &Yes - + &Always Yes &Always Yes - + Options saved. + Options saved. + + + + [PAUSED] %1 + %1 is the rest of the window title - %1/s - s is a shorthand for seconds - %1/s + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 - - - Missing Python Runtime + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. - + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Missing Python Runtime + + + qBittorrent Update Available qBittorrent Update Available - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime - + Old Python Runtime - + A new version is available. - + A new version is available. - + Do you want to download %1? - + Do you want to download %1? - + Open changelog... - + Open changelog... - + No updates available. You are already using the latest version. No updates available. You are already using the latest version. - + &Check for Updates &Check for Updates - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Minimum requirement: %2. +Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. +Minimum requirement: %2. + + + + Paused + Paused - + Checking for Updates... Checking for Updates... - + Already checking for program updates in the background Already checking for program updates in the background - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Download error - Python setup could not be downloaded, reason: %1. Please install it manually. - Python setup could not be downloaded, reason: %1. + Python setup could not be downloaded, reason: %1. Please install it manually. - - + + Invalid password Invalid password - + Filter torrents... - + Filter torrents... - + Filter by: - + Filter by: - + The password must be at least 3 characters long - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid The password is invalid - + DL speed: %1 e.g: Download speed: 10 KiB/s DL speed: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s UP speed: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Hide - + Exiting qBittorrent Exiting qBittorrent - + Open Torrent Files Open Torrent Files - + Torrent Files Torrent Files @@ -4078,12 +4389,12 @@ Please install it manually. Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. @@ -4109,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) The remote host name was not found (invalid hostname) - + The operation was canceled The operation was cancelled - + The remote server closed the connection prematurely, before the entire reply was received and processed The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out The connection to the remote server timed out - + SSL/TLS handshake failed SSL/TLS handshake failed - + The remote server refused the connection The remote server refused the connection - + The connection to the proxy server was refused The connection to the proxy server was refused - + The proxy server closed the connection prematurely The proxy server closed the connection prematurely - + The proxy host name was not found The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The proxy requires authentication in order to honour the request but did not accept any credentials offered - + The access to the remote content was denied (401) The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known The Network Access API cannot honour the request because the protocol is not known - + The requested operation is invalid for this protocol The requested operation is invalid for this protocol - + An unknown network-related error was detected An unknown network-related error was detected - + An unknown proxy-related error was detected An unknown proxy-related error was detected - + An unknown error related to the remote content was detected An unknown error related to the remote content was detected - + A breakdown in protocol was detected A breakdown in protocol was detected - + Unknown error Unknown error @@ -4243,10 +4554,15 @@ Please install it manually. Net::DownloadManager - - Ignoring SSL error, URL: "%1", errors: "%2" + + SSL error, URL: "%1", errors: "%2" + + + Ignoring SSL error, URL: "%1", errors: "%2" + Ignoring SSL error, URL: "%1", errors: "%2" + Net::GeoIPManager @@ -4270,13 +4586,13 @@ Please install it manually. IP geolocation database loaded. Type: %1. Build time: %2. - + IP geolocation database loaded. Type: %1. Build time: %2. Couldn't load IP geolocation database. Reason: %1 - + Couldn't load IP geolocation database. Reason: %1 @@ -5296,27 +5612,27 @@ Please install it manually. Vietnam - + Vietnam Couldn't download IP geolocation database file. Reason: %1 - + Couldn't download IP geolocation database file. Reason: %1 Could not decompress IP geolocation database file. - + Could not decompress IP geolocation database file. Couldn't save downloaded IP geolocation database file. Reason: %1 - + Couldn't save downloaded IP geolocation database file. Reason: %1 Successfully updated IP geolocation database. - + Successfully updated IP geolocation database. @@ -5544,42 +5860,42 @@ Please install it manually. Authentication failed, msg: %1 - + Authentication failed, msg: %1 <mail from> was rejected by server, msg: %1 - + <mail from> was rejected by server, msg: %1 <Rcpt to> was rejected by server, msg: %1 - + <Rcpt to> was rejected by server, msg: %1 <data> was rejected by server, msg: %1 - + <data> was rejected by server, msg: %1 Message was rejected by the server, error: %1 - + Message was rejected by the server, error: %1 Both EHLO and HELO failed, msg: %1 - + Both EHLO and HELO failed, msg: %1 The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 - + The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 Email Notification Error: %1 - + Email Notification Error: %1 @@ -5615,476 +5931,540 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Advanced - + Customize UI Theme... - + Customize UI Theme... - + Transfer List Transfer List - + Confirm when deleting torrents Confirm when deleting torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - + Shows a confirmation dialog upon pausing/resuming all the torrents - Confirm "Pause/Resume all" actions - + Confirm "Pause/Resume all" actions - + Use alternating row colors In table elements, every other row will have a grey background. Use alternating row colours - + Hide zero and infinity values Hide zero and infinity values - + Always Always - Paused torrents only - Paused torrents only + Paused torrents only - + Action on double-click Action on double-click - + Downloading torrents: Downloading torrents: - - Start / Stop Torrent - Start / Stop Torrent + Start / Stop Torrent - - + + Open destination folder Open destination folder - - + + No action No action - + Completed torrents: Completed torrents: - + Auto hide zero status filters - + Auto hide zero status filters - + Desktop Desktop - + Start qBittorrent on Windows start up Start qBittorrent on Windows start up - + Show splash screen on start up Show splash screen on start up - + Confirmation on exit when torrents are active Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB - + KiB - + Torrent content layout: - + Torrent content layout: - + Original - + Original - + Create subfolder Create subfolder - + Don't create subfolder - + Don't create subfolder - + The torrent will be added to the top of the download queue - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + Add to top of queue - + When duplicate torrent is being added - + When duplicate torrent is being added - + Merge trackers to existing torrent - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + Keep unselected files in ".unwanted" folder + + + Add... - + Add... - + Options.. - + Options.. - + Remove - + Remove - + Email notification &upon download completion Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: - + + Peer connection protocol: + Peer connection protocol: + + + + Any + Any + + + + I2P (experimental) + I2P (experimental) + + <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymisation. This may be useful if the user is not interested in the anonymisation of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + Mixed mode - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + Use proxy for general purposes - + IP Fi&ltering IP Fi&ltering - + Schedule &the use of alternative rate limits Schedule &the use of alternative rate limits - + From: From start time - + From: - + To: To end time - + To: - + Find peers on the DHT network - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption: Connect to peers regardless of setting +Require encryption: Only connect to peers with protocol encryption +Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + Maximum active checking torrents: - + &Torrent Queueing &Torrent Queueing - + When total seeding time reaches - + When total seeding time reaches - + When inactive seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - A&utomatically add these trackers to new downloads: + A&utomatically add these trackers to new downloads: - + RSS Reader RSS Reader - + Enable fetching RSS feeds - + Enable fetching RSS feeds - + Feeds refresh interval: - + Feeds refresh interval: + + + + Same host request delay: + Same host request delay: - + Maximum number of articles per feed: Maximum number of articles per feed: - - - + + + min minutes min - + Seeding Limits - + Seeding Limits - Pause torrent - + Pause torrent - + Remove torrent - + Remove torrent - + Remove torrent and its files - + Remove torrent and its files - + Enable super seeding for torrent - + Enable super seeding for torrent - + When ratio reaches - + When ratio reaches - - RSS Torrent Auto Downloader - RSS Torrent Auto Downloader + + Stop torrent + - - Enable auto downloading of RSS torrents - Enable auto downloading of RSS torrents + + A&utomatically append these trackers to new downloads: + - - Edit auto downloading rules... + + Automatically append trackers from URL to new downloads: - - RSS Smart Episode Filter - + + URL: + URL: - - Download REPACK/PROPER episodes + + Fetched trackers - - Filters: + + Search UI - - Web User Interface (Remote control) + + Store opened tabs - - IP address: + + Also store search results - - IP address that the Web UI will bind to. -Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, -"::" for any IPv6 address, or "*" for both IPv4 and IPv6. + + History length - - Ban client after consecutive failures: - + + RSS Torrent Auto Downloader + RSS Torrent Auto Downloader - - Never - Never + + Enable auto downloading of RSS torrents + Enable auto downloading of RSS torrents - - ban for: - + + Edit auto downloading rules... + Edit auto downloading rules... - - Session timeout: - + + RSS Smart Episode Filter + RSS Smart Episode Filter - - Disabled + + Download REPACK/PROPER episodes + Download REPACK/PROPER episodes + + + + Filters: + Filters: + + + + Web User Interface (Remote control) + Web User Interface (Remote control) + + + + IP address: + IP address: + + + + IP address that the Web UI will bind to. +Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, +"::" for any IPv6 address, or "*" for both IPv4 and IPv6. + IP address that the Web UI will bind to. +Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, +"::" for any IPv6 address, or "*" for both IPv4 and IPv6. + + + + Ban client after consecutive failures: + Ban client after consecutive failures: + + + + Never + Never + + + + ban for: + ban for: + + + + Session timeout: + Session timeout: + + + + Disabled Disabled - Enable cookie Secure flag (requires HTTPS) - + Enable cookie Secure flag (requires HTTPS) - + Server domains: Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6097,441 +6477,495 @@ you should put in domain names used by Web UI server. Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... + IP subnet whitelist... + + + + Use alternative WebUI - + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Upda&te my dynamic domain name - + Minimize qBittorrent to notification area Minimise qBittorrent to notification area - - Interface + + Search + Search + + + + WebUI - + + Interface + Interface + + + Language: + Language: + + + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog - + Tray icon style: Tray icon style: - - + + Normal Normal - + File association File association - + Use qBittorrent for .torrent files Use qBittorrent for .torrent files - + Use qBittorrent for magnet links Use qBittorrent for magnet links - + Check for program updates Check for program updates - + Power Management Power Management - + + &Log Files + + + + Save path: Save path: - + Backup the log file after: Backup the log file after: - + Delete backup logs older than: Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent When adding a torrent - + Bring torrent dialog to the front Bring torrent dialogue to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled Also when addition is cancelled - + Warning! Data loss possible! Warning! Data loss possible! - + Saving Management Saving Management - + Default Torrent Management Mode: Default Torrent Management Mode: - + Manual Manual - + Automatic Automatic - + When Torrent Category changed: When Torrent Category changed: - + Relocate torrent Relocate torrent - + Switch torrent to Manual Mode Switch torrent to Manual Mode - - + + Relocate affected torrents Relocate affected torrents - - + + Switch affected torrents to Manual Mode Switch affected torrents to Manual Mode - + Use Subcategories Use Subcategories - + Default Save Path: Default Save Path: - + Copy .torrent files to: Copy .torrent files to: - + Show &qBittorrent in notification area - + Show &qBittorrent in notification area - &Log file - &Log file + &Log file - + Display &torrent content and some options Display &torrent content and some options - + De&lete .torrent files afterwards De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files Pre-allocate disk space for all files - + Use custom UI Theme - + Use custom UI Theme - + UI Theme file: - + UI Theme file: - + Changing Interface settings requires application restart - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - + Shows a confirmation dialogue upon torrent deletion - - + + Preview file, otherwise open destination folder - + Preview file, otherwise open destination folder - - Show torrent options - + Show torrent options - + Shows a confirmation dialog when exiting with active torrents - + Shows a confirmation dialogue when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + When minimising, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Close qBittorrent to notification area - + Monochrome (for dark theme) - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days - + days - + months Delete backup logs older than 10 months - + months - + years Delete backup logs older than 10 years - + years - + Log performance warnings - + Log performance warnings - The torrent will be added to download list in a paused state - + The torrent will be added to download list in a paused state - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Do not start the download automatically - + Whether the .torrent file should be deleted after adding it - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Allocate full file sizes on disk before starting downloads, to minimise fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Enable recursive download dialogue - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category +Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Use icons from system theme - + Window state on start up: - + Window state on start up: - + qBittorrent window state on start up - + qBittorrent window state on start up - + Torrent stop condition: - + Torrent stop condition: - - + + None - + None - - + + Metadata received - + Metadata received - - + + Files checked - + Files checked - + Ask for merging trackers when torrent is being added manually - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Use another path for incomplete torrents: - + Automatically add torrents from: Automatically add torrents from: - + Excluded file names - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6545,842 +6979,927 @@ Examples readme.txt: filter exact file name. ?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - + Blacklist filtered file names from being downloaded from torrent(s). +Files matching any of the filters in this list will have their priority automatically set to "Do not download". + +Use newlines to separate multiple entries. Can use wildcards as outlined below. +*: matches zero or more of any characters. +?: matches any single character. +[...]: sets of characters can be represented in square brackets. + +Examples +*.exe: filter '.exe' file extension. +readme.txt: filter exact file name. +?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. +readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - + Receiver - + Receiver - + To: To receiver - + To: - + SMTP server: SMTP server: - + Sender - + Sender - + From: From sender - + From: - + This server requires a secure connection (SSL) This server requires a secure connection (SSL) - - + + Authentication Authentication - - - - + + + + Username: Username: - - - - + + + + Password: Password: - + Run external program - + Run external program - Run on torrent added - + Run on torrent added - Run on torrent finished - + Run on torrent finished - + Show console window - + Show console window - + TCP and μTP - + TCP and μTP - + Listening Port Listening Port - + Port used for incoming connections: Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Set to 0 to let your system pick an unused port - + Random Random - + Use UPnP / NAT-PMP port forwarding from my router Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits Connections Limits - + Maximum number of connections per torrent: Maximum number of connections per torrent: - + Global maximum number of connections: Global maximum number of connections: - + Maximum number of upload slots per torrent: Maximum number of upload slots per torrent: - + Global maximum number of upload slots: Global maximum number of upload slots: - + Proxy Server Proxy Server - + Type: Type: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections Use proxy for peer connections - + A&uthentication A&uthentication - + Info: The password is saved unencrypted Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): Filter path (.dat, .p2p, .p2b): - + Reload the filter Reload the filter - + Manually banned IP addresses... Manually banned IP addresses... - + Apply to trackers Apply to trackers - + Global Rate Limits Global Rate Limits - - - - - - - + + + + + + + ∞ - + - - - - - - + + + + + + KiB/s - + KiB/s - - + + Upload: Upload: - - + + Download: Download: - + Alternative Rate Limits Alternative Rate Limits - + Start time - + Start time - + End time - + End time - + When: When: - + Every day Every day - + Weekdays Weekdays - + Weekends Weekends - + Rate Limits Settings Rate Limits Settings - + Apply rate limit to peers on LAN Apply rate limit to peers on LAN - + Apply rate limit to transport overhead Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Apply rate limit to µTP protocol - + Privacy Privacy - + Enable DHT (decentralized network) to find more peers Enable DHT (decentralised network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Exchange peers with compatible BitTorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network Look for peers on your local network - + Enable Local Peer Discovery to find more peers Enable Local Peer Discovery to find more peers - + Encryption mode: Encryption mode: - + Require encryption Require encryption - + Disable encryption Disable encryption - + Enable when using a proxy or a VPN connection Enable when using a proxy or a VPN connection - + Enable anonymous mode Enable anonymous mode - + Maximum active downloads: Maximum active downloads: - + Maximum active uploads: Maximum active uploads: - + Maximum active torrents: Maximum active torrents: - + Do not count slow torrents in these limits Do not count slow torrents in these limits - + Upload rate threshold: - + Upload rate threshold: - + Download rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + sec - + Torrent inactivity timer: - + Torrent inactivity timer: - + then then - + Use UPnP / NAT-PMP to forward the port from my router Use UPnP / NAT-PMP to forward the port from my router - + Certificate: Certificate: - + Key: Key: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - + Change current password - Use alternative Web UI - + Use alternative Web UI - + Files location: + Files location: + + + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> - + Security - + Security - + Enable clickjacking protection - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection + Enable Cross-Site Request Forgery (CSRF) protection + + + + Enable cookie Secure flag (requires HTTPS or localhost connection) - + Enable Host header validation - + Enable Host header validation - + Add custom HTTP headers - + Add custom HTTP headers - + Header: value pairs, one per line - + Header: value pairs, one per line - + Enable reverse proxy support - + Enable reverse proxy support - + Trusted proxies list: + Trusted proxies list: + + + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> - + Service: Service: - + Register Register - + Domain name: Domain name: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Choose Alternative UI files location - + Supported parameters (case sensitive): Supported parameters (case sensitive): - + Minimized - + Minimized - + Hidden - + Hidden - + Disabled due to failed to detect system tray presence - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + No stop condition is set. - + Torrent will stop after metadata is received. - - - - - Torrents that have metadata initially aren't affected. - + Torrent will stop after metadata is received. - + Torrent will stop after files are initially checked. - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: Torrent name - + %L: Category %L: Category - + %F: Content path (same as root path for multifile torrent) %F: Content path (same as root path for multi-file torrent) - + %R: Root path (first torrent subdirectory path) %R: Root path (first torrent subdirectory path) - + %D: Save path %D: Save path - + %C: Number of files %C: Number of files - + %Z: Torrent size (bytes) %Z: Torrent size (bytes) - + %T: Current tracker %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: Encapsulate parameter with quotation marks to avoid text being cut off at white-space (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (None) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Certificate - + Select certificate - + Select certificate - + Private key - + Private key - + Select private key + Select private key + + + + WebUI configuration failed. Reason: %1 + WebUI configuration failed. Reason: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme - + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Select folder to monitor - + Adding entry failed Adding entry failed - - Location Error - + + The WebUI username must be at least 3 characters long. + The WebUI username must be at least 3 characters long. - - The alternative Web UI files location cannot be blank. - + + The WebUI password must be at least 6 characters long. + The WebUI password must be at least 6 characters long. + + + + Location Error + Location Error - - + + Choose export directory Choose export directory - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Choose a save directory - - Choose an IP filter file - Choose an IP filter file + + Torrents that have metadata initially will be added as stopped. + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file + Choose an IP filter file - + All supported filters All supported filters - + + The alternative WebUI files location cannot be blank. + The alternative WebUI files location cannot be blank. + + + Parsing error Parsing error - + Failed to parse the provided IP filter Failed to parse the provided IP filter - + Successfully refreshed Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Successfully parsed the provided IP filter: %1 rules were applied. - + Preferences Preferences - + Time Error Time Error - + The start time and the end time can't be the same. The start time and the end time can't be the same. - - + + Length Error Length Error - - - The Web UI username must be at least 3 characters long. - The Web UI username must be at least 3 characters long. - - - - The Web UI password must be at least 6 characters long. - The Web UI password must be at least 6 characters long. - PeerInfo - + Unknown Unknown - + Interested (local) and choked (peer) - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Optimistic unchoke - + Peer snubbed - + Peer snubbed - + Incoming connection - + Incoming connection - + Peer from DHT - + Peer from DHT - + Peer from PEX - + Peer from PEX - + Peer from LSD - + Peer from LSD - + Encrypted traffic - + Encrypted traffic - + Encrypted handshake + Encrypted handshake + + + + Peer is using NAT hole punching @@ -7389,12 +7908,12 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Country/Region - + Country/Region IP/Address - + IP/Address @@ -7421,7 +7940,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer ID Client i.e.: Client resolved from Peer ID - + Peer ID Client @@ -7473,33 +7992,33 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Resize columns - + Resize columns Resize all non-hidden columns to the size of their contents - + Resize all non-hidden columns to the size of their contents Add peers... - + Add peers... Adding peers - + Adding peers Some peers cannot be added. Check the Log for details. - + Some peers cannot be added. Check the Log for details. Peers are added to this torrent. - + Peers are added to this torrent. @@ -7510,35 +8029,35 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Cannot add peers to a private torrent - + Cannot add peers to a private torrent Cannot add peers when the torrent is checking - + Cannot add peers when the torrent is checking Cannot add peers when the torrent is queued - + Cannot add peers when the torrent is queued No peer was selected - + No peer was selected Are you sure you want to permanently ban the selected peers? - + Are you sure you want to permanently ban the selected peers? Peer "%1" is manually banned - + Peer "%1" is manually banned - + N/A N/A @@ -7553,37 +8072,37 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Add Peers - + Add Peers List of peers to add (one IP per line): - + List of peers to add (one IP per line): - + Format: IPv4:port / [IPv6]:port - + Format: IPv4:port / [IPv6]:port No peer entered - + No peer entered Please type at least one peer. - + Please type at least one peer. Invalid peer - + Invalid peer The peer '%1' is invalid. - + The peer '%1' is invalid. @@ -7591,38 +8110,38 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Unavailable pieces - + Unavailable pieces Available pieces - + Available pieces PiecesBar - + Files in this piece: Files in this piece: - + File in this piece: - + File in this piece: - + File in these pieces: - + File in these pieces: - + Wait until metadata become available to see detailed information Wait until metadata become available to see detailed information - + Hold Shift key for detailed information Hold Shift key for detailed information @@ -7635,58 +8154,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Search plug-ins - + Installed search plugins: - + Installed search plugins: - + Name Name - + Version - + Version - + Url URL - - + + Enabled Enabled - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Install a new one - + Check for updates Check for updates - + Close Close - + Uninstall Uninstall @@ -7714,7 +8233,8 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. Those plugins were disabled. - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. +Those plugins were disabled. @@ -7737,7 +8257,7 @@ Those plugins were disabled. Plugins installed or updated: %1 - + Plugins installed or updated: %1 @@ -7769,7 +8289,7 @@ Those plugins were disabled. qBittorrent search plugin - + qBittorrent search plugin @@ -7779,7 +8299,7 @@ Those plugins were disabled. Sorry, couldn't check for plugin updates. %1 - + Sorry, couldn't check for plugin updates. %1 @@ -7789,12 +8309,12 @@ Those plugins were disabled. Couldn't install "%1" search engine plugin. %2 - + Couldn't install "%1" search engine plugin. %2 Couldn't update "%1" search engine plugin. %2 - + Couldn't update "%1" search engine plugin. %2 @@ -7805,17 +8325,17 @@ Those plugins were disabled. Plug-in source - + Search plugin source: Search plug-in source: - + Local file Local file - + Web link Web link @@ -7825,7 +8345,7 @@ Those plugins were disabled. qBittorrent is active - + qBittorrent is active @@ -7833,72 +8353,72 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + Power management found suitable D-Bus interface. Interface: %1 Power management error. Did not found suitable D-Bus interface. - + Power management error. Did not found suitable D-Bus interface. Power management error. Action: %1. Error: %2 - + Power management error. Action: %1. Error: %2 Power management unexpected error. State: %1. Error: %2 - + Power management unexpected error. State: %1. Error: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Preview - + Name Name - + Size Size - + Progress Progress - + Preview impossible Preview impossible - + Sorry, we can't preview this file: "%1". - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Resize all non-hidden columns to the size of their contents @@ -7909,29 +8429,29 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not exist - + Path does not point to a directory - + Path does not point to a directory - + Path does not point to a file - + Path does not point to a file - + Don't have read permission to path - + Don't have read permission to path - + Don't have write permission to path - + Don't have write permission to path @@ -7970,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Downloaded: - + Availability: Availability: @@ -7990,53 +8510,53 @@ Those plugins were disabled. Transfer - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Time Active: - + ETA: ETA: - + Uploaded: Uploaded: - + Seeds: Seeds: - + Download Speed: Download Speed: - + Upload Speed: Upload Speed: - + Peers: Peers: - + Download Limit: Download Limit: - + Upload Limit: Upload Limit: - + Wasted: Wasted: @@ -8046,193 +8566,249 @@ Those plugins were disabled. Connections: - + Information Information - + Info Hash v1: - + Info Hash v1: - + Info Hash v2: - + Info Hash v2: - + Comment: Comment: - + Select All Select All - + Select None Select None - + Share Ratio: Share Ratio: - + Reannounce In: Re-announce In: - + Last Seen Complete: Last Seen Complete: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Total Size: - + Pieces: Pieces: - + Created By: Created By: - + Added On: Added On: - + Completed On: Completed On: - + Created On: Created On: - + + Private: + + + + Save Path: Save Path: - + Never Never - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (have %3) - - + + %1 (%2 this session) %1 (%2 this session) - - + + + N/A N/A - + + Yes + Yes + + + + No + No + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seeded for %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 average) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - New Web seed + New Web seed - Remove Web seed - Remove Web seed + Remove Web seed - Copy Web seed URL - Copy Web seed URL + Copy Web seed URL - Edit Web seed URL - Edit Web seed URL + Edit Web seed URL - + Filter files... Filter files... - - Speed graphs are disabled + + Add web seed... - - You can enable it in Advanced Options + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... - + + Speed graphs are disabled + Speed graphs are disabled + + + + You can enable it in Advanced Options + You can enable it in Advanced Options + + New URL seed New HTTP source - New URL seed + New URL seed - New URL seed: - New URL seed: + New URL seed: - - This URL seed is already in the list. - This URL seed is already in the list. + This URL seed is already in the list. - + Web seed editing Web seed editing - + Web seed URL: Web seed URL: @@ -8243,55 +8819,55 @@ Those plugins were disabled. Invalid data format. - + Invalid data format. Couldn't save RSS AutoDownloader data in %1. Error: %2 - + Couldn't save RSS AutoDownloader data in %1. Error: %2 - + Invalid data format - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8299,138 +8875,138 @@ Those plugins were disabled. Failed to read RSS session data. %1 - + Failed to read RSS session data. %1 Failed to save RSS feed in '%1', Reason: %2 - + Failed to save RSS feed in '%1', Reason: %2 Couldn't parse RSS Session data. Error: %1 - + Couldn't parse RSS Session data. Error: %1 Couldn't load RSS Session data. Invalid data format. - + Couldn't load RSS Session data. Invalid data format. Couldn't load RSS article '%1#%2'. Invalid data format. - + Couldn't load RSS article '%1#%2'. Invalid data format. RSS::Private::Parser - + Invalid RSS feed. Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). - + %1 (line: %2, column: %3, offset: %4). RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Couldn't move folder into itself. - + Cannot delete root folder. Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. Parent folder doesn't exist: %1. @@ -8454,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read Mark items read @@ -8477,135 +9053,135 @@ Those plugins were disabled. Torrents: (double-click to download) - + Torrents: (double-click to download) - - + + Delete Delete - + Rename... Rename... - + Rename Rename - - + + Update Update - + New subscription... New subscription... - - + + Update all feeds Update all feeds - + Download torrent Download torrent - + Open news URL Open news URL - + Copy feed URL Copy feed URL - + New folder... New folder... - + Edit feed URL... - + Edit feed URL... - + Edit feed URL - + Edit feed URL - + Please choose a folder name Please choose a folder name - + Folder name: Folder name: - + New folder New folder - - + + Please type a RSS feed URL - + Please type a RSS feed URL - - + + Feed URL: Feed URL: - + Deletion confirmation - + Deletion confirmation - + Are you sure you want to delete the selected RSS feeds? Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed Please choose a new name for this RSS feed - + New feed name: New feed name: - + Rename failed Rename failed - + Date: Date: - + Feed: - + Feed: - + Author: Author: @@ -8613,40 +9189,40 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + Offset is out of range - + All plugins are already up to date. - + All plugins are already up to date. - + Updating %1 plugins - + Updating %1 plugins - + Updating plugin %1 - + Updating plugin %1 - + Failed to check for plugin updates: %1 - + Failed to check for plugin updates: %1 @@ -8654,47 +9230,47 @@ Those plugins were disabled. Results(xxx) - + Results(xxx) Search in: - + Search in: <html><head/><body><p>Some search engines search in torrent description and in torrent file names too. Whether such results will be shown in the list below is controlled by this mode.</p><p><span style=" font-weight:600;">Everywhere </span>disables filtering and shows everything returned by the search engines.</p><p><span style=" font-weight:600;">Torrent names only</span> shows only torrents whose names match the search query.</p></body></html> - + <html><head/><body><p>Some search engines search in torrent description and in torrent file names too. Whether such results will be shown in the list below is controlled by this mode.</p><p><span style=" font-weight:600;">Everywhere </span>disables filtering and shows everything returned by the search engines.</p><p><span style=" font-weight:600;">Torrent names only</span> shows only torrents whose names match the search query.</p></body></html> Set minimum and maximum allowed number of seeders - + Set minimum and maximum allowed number of seeders Minimum number of seeds - + Minimum number of seeds Maximum number of seeds - + Maximum number of seeds Set minimum and maximum allowed size of a torrent - + Set minimum and maximum allowed size of a torrent Minimum torrent size - + Minimum torrent size Maximum torrent size - + Maximum torrent size @@ -8711,7 +9287,7 @@ Those plugins were disabled. ∞ - + @@ -8719,239 +9295,253 @@ Those plugins were disabled. Size: - + Name i.e: file name Name - + Size i.e: file size Size - + Seeders i.e: Number of full sources Seeders - + Leechers i.e: Number of partial sources Leechers - Search engine - Search engine + Search engine - + Filter search results... - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Results (showing <i>%1</i> out of <i>%2</i>): - + Torrent names only - + Torrent names only - + Everywhere - + Everywhere - + Use regular expressions Use regular expressions - + Open download window - + Open download window - + Download Download - + Open description page - + Open description page - + Copy Copy - + Name Name - + Download link - + Download link - + Description page URL - + Description page URL - + Searching... Searching... - + Search has finished Search has finished - + Search aborted Search aborted - + An error occurred during search... An error occurred during search... - + Search returned no results Search returned no results - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Column visibility - + Resize columns - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Resize all non-hidden columns to the size of their contents SearchPluginManager - + Unknown search engine plugin file format. - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin is not supported. - + Plugin %1 has been successfully updated. - + Plugin %1 has been successfully updated. - + All categories All categories - + Movies - + Movies - + TV shows TV shows - + Music Music - + Games Games - + Anime Anime - + Software Software - + Pictures Pictures - + Books Books - + Update server is temporarily unavailable. %1 - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') - + Search plugin '%1' contains invalid version string ('%2') @@ -8959,155 +9549,194 @@ Those plugins were disabled. - - - - Search Search - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. There aren't any search plug-ins installed. Click the "Search plug-ins..." button at the bottom right of the window to install some. - + Search plugins... Search plug-ins... - + A phrase to search for. A phrase to search for. - + Spaces in a search term may be protected by double quotes. Spaces in a search term may be protected by double quotes. - + Example: Search phrase example Example: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> - + All plugins All plug-ins - + Only enabled Only enabled - + + + Invalid data format. + Invalid data format. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> - - Close tab + + Refresh - + + Close tab + Close tab + + + Close all tabs - + Close all tabs - + Select... Select... - - - + + Search Engine Search Engine - + + Please install Python to use the Search Engine. Please install Python to use the Search Engine. - + Empty search pattern Empty search pattern - + Please type a search pattern first Please type a search pattern first - + + Stop Stop - Search has finished - Search has finished + Search has finished - Search has failed - Search has failed + Search has failed - SettingsStorage + SearchWidget::DataStorage - - Detected unclean program exit. Using fallback file to restore settings: %1 + + Failed to load Search UI saved state data. File: "%1". Error: "%2" - - An access error occurred while trying to write the configuration file. - An access error occurred while trying to write the configuration file. + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + - - A format error occurred while trying to write the configuration file. - A format error occurred while trying to write the configuration file. + + Failed to save Search UI state. File: "%1". Error: "%2" + - - An unknown error occurred while trying to write the configuration file. + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" - - - ShutdownConfirmDialog - - Don't show again + + Failed to load Search UI history. File: "%1". Error: "%2" - - qBittorrent will now exit. + + Failed to save search history. File: "%1". Error: "%2" + + + SettingsStorage + + + Detected unclean program exit. Using fallback file to restore settings: %1 + Detected unclean program exit. Using fallback file to restore settings: %1 + + + + An access error occurred while trying to write the configuration file. + An access error occurred while trying to write the configuration file. + + + + A format error occurred while trying to write the configuration file. + A format error occurred while trying to write the configuration file. + + + + An unknown error occurred while trying to write the configuration file. + An unknown error occurred while trying to write the configuration file. + + + + ShutdownConfirmDialog + + + Don't show again + Don't show again + + + + qBittorrent will now exit. + qBittorrent will now exit. + E&xit Now - + E&xit Now @@ -9117,12 +9746,12 @@ Click the "Search plug-ins..." button at the bottom right of the windo The computer is going to shutdown. - + The computer is going to shutdown. &Shutdown Now - + &Shutdown Now @@ -9132,37 +9761,37 @@ Click the "Search plug-ins..." button at the bottom right of the windo The computer is going to enter suspend mode. - + The computer is going to enter suspend mode. &Suspend Now - + &Suspend Now Suspend confirmation - + Suspend confirmation The computer is going to enter hibernation mode. - + The computer is going to enter hibernation mode. &Hibernate Now - + &Hibernate Now Hibernate confirmation - + Hibernate confirmation You can cancel the action within %1 seconds. - + You can cancel the action within %1 seconds. @@ -9170,43 +9799,43 @@ Click the "Search plug-ins..." button at the bottom right of the windo Global Speed Limits - + Global Speed Limits Speed limits - + Speed limits - + Upload: Upload: - - - + + + ∞ - + - - - + + + KiB/s - + KiB/s - - + + Download: Download: - + Alternative speed limits Alternative speed limits @@ -9398,34 +10027,34 @@ Click the "Search plug-ins..." button at the bottom right of the windo Average time in queue: - + Connected peers: - + Connected peers: - + All-time share ratio: - + All-time share ratio: - + All-time download: - + All-time download: - + Session waste: - + Session waste: - + All-time upload: - + All-time upload: - + Total buffer size: - + Total buffer size: @@ -9438,12 +10067,12 @@ Click the "Search plug-ins..." button at the bottom right of the windo Queued I/O jobs: - + Write cache overload: Write cache overload: - + Read cache overload: Read cache overload: @@ -9462,51 +10091,67 @@ Click the "Search plug-ins..." button at the bottom right of the windo StatusBar - + Connection status: Connection status: - - + + No direct connections. This may indicate network configuration problems. No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodes - + qBittorrent needs to be restarted! - + qBittorrent needs to be restarted! - - - + + + Connection Status: Connection Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Click to switch to alternative speed limits - + Click to switch to regular speed limits Click to switch to regular speed limits @@ -9522,67 +10167,75 @@ Click the "Search plug-ins..." button at the bottom right of the windo Downloading (0) - + Downloading (0) Seeding (0) - + Seeding (0) Completed (0) - + Completed (0) - Resumed (0) + Resumed (0) + + + Paused (0) + Paused (0) + + + + Running (0) - Paused (0) + Stopped (0) Active (0) - + Active (0) Inactive (0) - + Inactive (0) Stalled (0) - + Stalled (0) Stalled Uploading (0) - + Stalled Uploading (0) Stalled Downloading (0) - + Stalled Downloading (0) Checking (0) - + Checking (0) Moving (0) - + Moving (0) Errored (0) - + Errored (0) @@ -9592,98 +10245,114 @@ Click the "Search plug-ins..." button at the bottom right of the windo Downloading (%1) - + Downloading (%1) Seeding (%1) - + Seeding (%1) Completed (%1) + Completed (%1) + + + + Running (%1) - Paused (%1) + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + Paused (%1) + Paused (%1) + Moving (%1) - + Moving (%1) - Resume torrents - Resume torrents + Resume torrents - Pause torrents - Pause torrents + Pause torrents Remove torrents - + Remove torrents - Resumed (%1) - + Resumed (%1) Active (%1) - + Active (%1) Inactive (%1) - + Inactive (%1) Stalled (%1) - + Stalled (%1) Stalled Uploading (%1) - + Stalled Uploading (%1) Stalled Downloading (%1) - + Stalled Downloading (%1) Checking (%1) - + Checking (%1) Errored (%1) - + Errored (%1) TagFilterModel - + Tags Tags - + All All - + Untagged Untagged @@ -9691,64 +10360,76 @@ Click the "Search plug-ins..." button at the bottom right of the windo TagFilterWidget - + Add tag... Add tag... - + Remove tag Remove tag - + Remove unused tags - + Remove unused tags - Resume torrents - Resume torrents + Resume torrents - Pause torrents - Pause torrents + Pause torrents - + Remove torrents - + Remove torrents - New Tag - New Tag + New Tag + + + + Start torrents + + + + + Stop torrents + - + Tag: + Tag: + + + + Add tag - + Invalid tag name Invalid tag name - + Tag name '%1' is invalid - + Tag name '%1' is invalid Tag exists - + Tag exists Tag name already exists. - + Tag name already exists. @@ -9756,7 +10437,7 @@ Click the "Search plug-ins..." button at the bottom right of the windo Torrent Category Properties - + Torrent Category Properties @@ -9766,17 +10447,17 @@ Click the "Search plug-ins..." button at the bottom right of the windo Save path for incomplete torrents: - + Save path for incomplete torrents: Use another path for incomplete torrents: - + Use another path for incomplete torrents: Default - + Default @@ -9791,7 +10472,7 @@ Click the "Search plug-ins..." button at the bottom right of the windo Path: - + Path: @@ -9806,35 +10487,38 @@ Click the "Search plug-ins..." button at the bottom right of the windo Choose download path - + Choose download path New Category - + New Category Invalid category name - + Invalid category name Category name cannot contain '\'. Category name cannot start/end with '/'. Category name cannot contain '//' sequence. - + Category name cannot contain '\'. +Category name cannot start/end with '/'. +Category name cannot contain '//' sequence. Category creation error - + Category creation error Category with the given name already exists. Please choose a different name and try again. - + Category with the given name already exists. +Please choose a different name and try again. @@ -9873,34 +10557,34 @@ Please choose a different name and try again. TorrentContentModel - + Name Name - + Progress Progress - + Download Priority Download Priority - + Remaining Remaining - + Availability Availability - + Total Size - + Total Size @@ -9943,100 +10627,118 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Rename error - + Renaming Renaming - + New name: New name: - + Column visibility Column visibility - + Resize columns - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Resize all non-hidden columns to the size of their contents - + Open Open - + Open containing folder - + Open containing folder - + Rename... Rename... - + Priority Priority - - + + Do not download Do not download - + Normal Normal - + High High - + Maximum Maximum - + By shown file order - + By shown file order - + Normal priority - + Normal priority - + High priority - + High priority - + Maximum priority - + Maximum priority - + Priority by shown file order - + Priority by shown file order + + + + TorrentCreatorController + + + Too many active tasks + Too many active tasks + + + + Torrent creation is still unfinished. + Torrent creation is still unfinished. + + + + Torrent creation failed. + Torrent creation failed. @@ -10044,49 +10746,49 @@ Please choose a different name and try again. Torrent Creator - + Torrent Creator Select file/folder to share - + Select file/folder to share Path: - + Path: [Drag and drop area] - + [Drag and drop area] - + Select file - + Select file - + Select folder - + Select folder Settings - + Settings Torrent format: - + Torrent format: Hybrid - + Hybrid @@ -10094,56 +10796,24 @@ Please choose a different name and try again. Piece size: - + Auto Auto - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - Calculate number of pieces: - + Calculate number of pieces: Private torrent (Won't distribute on DHT network) - + Private torrent (Won't distribute on DHT network) Start seeding immediately - + Start seeding immediately @@ -10158,7 +10828,7 @@ Please choose a different name and try again. Align to piece boundary for files larger than: - + Align to piece boundary for files larger than: @@ -10168,172 +10838,165 @@ Please choose a different name and try again. KiB - + KiB Fields - + Fields - + You can separate tracker tiers / groups with an empty line. You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Web seed URLs: - + Tracker URLs: Tracker URLs: - + Comments: - + Comments: - + Source: - + Source: - + Progress: Progress: - + Create Torrent - + Create Torrent - - + + Torrent creation failed - + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Select where to save the new torrent - + Torrent Files (*.torrent) - - - - - Reason: %1 - Reason: %1 + Torrent Files (*.torrent) - + Add torrent to transfer list failed. - + Add torrent to transfer list failed. - + Reason: "%1" - + Reason: "%1" - + Add torrent failed - + Add torrent failed - + Torrent creator - + Torrent creator - + Torrent created: - + Torrent created: TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. - + Watched folder Path cannot be relative. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" - + Watching folder: "%1" TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Failed to allocate memory when reading file. File: "%1". Error: "%2" - Invalid metadata - Invalid metadata + Invalid metadata @@ -10341,12 +11004,12 @@ Please choose a different name and try again. Torrent Options - + Torrent Options Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category @@ -10361,284 +11024,379 @@ Please choose a different name and try again. Use another path for incomplete torrent - + Use another path for incomplete torrent - + Category: Category: - - Torrent speed limits + + Torrent Share Limits - + Torrent speed limits + Torrent speed limits + + + Download: Download: - - + + ∞ + + + + + Torrent Speed Limits - - + + KiB/s - + KiB/s - + These will not exceed the global limits - + These will not exceed the global limits - + Upload: Upload: - Torrent share limits - + Torrent share limits - Use global share limit - + Use global share limit - Set no share limit - + Set no share limit - Set share limit to - + Set share limit to - ratio - + ratio - total minutes - + total minutes - inactive minutes - + inactive minutes - + Disable DHT for this torrent - + Disable DHT for this torrent - + Download in sequential order Download in sequential order - + Disable PeX for this torrent - + Disable PeX for this torrent - + Download first and last pieces first Download first and last pieces first - + Disable LSD for this torrent - + Disable LSD for this torrent - + Currently used categories - + Currently used categories - - + + Choose save path Choose save path - + Not applicable to private torrents - + Not applicable to private torrents - No share limit method selected - + No share limit method selected - Please select a limit method first + Please select a limit method first + + + + TorrentShareLimitsWidget + + + + + + Default + Default + + + + + + Unlimited + Unlimited + + + + + + Set to + Set to + + + + Seeding time: + Seeding time: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Inactive seeding time: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Remove torrent + + + + Remove torrent and its content + + + Enable super seeding for torrent + Enable super seeding for torrent + + + + Ratio: + Ratio: + TorrentTagsDialog Torrent Tags - + Torrent Tags - New Tag - New Tag + New Tag - Tag: + Add tag - + + Tag: + Tag: + + + Invalid tag name Invalid tag name - + Tag name '%1' is invalid. - + Tag name '%1' is invalid. - + Tag exists - + Tag exists - + Tag name already exists. - + Tag name already exists. TorrentsController - + Error: '%1' is not a valid torrent file. - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority must be an integer - + Priority is not valid - + Priority is not valid - + Torrent's metadata has not yet downloaded - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File IDs must be integers - + File ID is not valid - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - + Torrent queueing must be enabled - - + + Save path cannot be empty - + Save path cannot be empty - - + + Cannot create target directory - + Cannot create target directory - - + + Category cannot be empty - + Category cannot be empty - + Unable to create category - + Unable to create category - + Unable to edit category - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Unable to export torrent file. Error: %1 - + Cannot make save path + Cannot make save path + + + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] - + 'sort' parameter is invalid + 'sort' parameter is invalid + + + + "%1" is not an existing URL - + "%1" is not a valid file index. - + "%1" is not a valid file index. - + Index %1 is out of bounds. - + Index %1 is out of bounds. - - + + Cannot write to directory - + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - + Incorrect torrent name - - + + Incorrect category name - + Incorrect category name @@ -10646,7 +11404,7 @@ Please choose a different name and try again. Edit trackers - + Edit trackers @@ -10656,247 +11414,226 @@ Please choose a different name and try again. - All trackers within the same group will belong to the same tier. - The group on top will be tier 0, the next group tier 1 and so on. - Below will show the common subset of trackers of the selected torrents. - + One tracker URL per line. + +- You can split the trackers into groups by inserting blank lines. +- All trackers within the same group will belong to the same tier. +- The group on top will be tier 0, the next group tier 1 and so on. +- Below will show the common subset of trackers of the selected torrents. TrackerListModel - - + Working - Working + Working - + Disabled - Disabled + Disabled - + Disabled for this torrent - + Disabled for this torrent - + This torrent is private - This torrent is private + This torrent is private - + N/A - N/A + N/A - + Updating... - Updating... + Updating... - + Not working - Not working + Not working - + Tracker error - + Tracker error - + Unreachable - + Unreachable - + Not contacted yet - Not contacted yet + Not contacted yet - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Invalid status! + + + URL/Announce endpoint + URL/Announce endpoint + + Tier + Tier + + Protocol - + Protocol - + Status - Status + Status - + Peers - Peers + Peers - + Seeds - Seeds + Seeds - + Leeches - + Leeches - + Times Downloaded - + Times Downloaded - + Message - Message + Message - Next announce - + Next announce - Min announce - + Min announce - v%1 - + v%1 TrackerListWidget - Working - Working - - - Disabled - Disabled - - - + This torrent is private This torrent is private - Updating... - Updating... - - - Not working - Not working - - - Not contacted yet - Not contacted yet - - - N/A - N/A - - - + Tracker editing Tracker editing - + Tracker URL: Tracker URL: - - + + Tracker editing failed Tracker editing failed - + The tracker URL entered is invalid. The tracker URL entered is invalid. - + The tracker URL already exists. The tracker URL already exists. - + Edit tracker URL... - + Edit tracker URL... - + Remove tracker Remove tracker - + Copy tracker URL - + Copy tracker URL - + Force reannounce to selected trackers Force re-announce to selected trackers - + Force reannounce to all trackers Force re-announce to all trackers - URL - URL - - - Status - Status - - - Seeds - Seeds - - - + Resize columns - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Resize all non-hidden columns to the size of their contents - Peers - Peers - - - + Add trackers... - - - - Message - Message + Add trackers... - + Column visibility Column visibility @@ -10906,7 +11643,7 @@ Please choose a different name and try again. Add trackers - + Add trackers @@ -10914,121 +11651,108 @@ Please choose a different name and try again. List of trackers to add (one per line): - + µTorrent compatible list URL: µTorrent compatible list URL: - + Download trackers list - + Download trackers list - + Add - + Add - + Trackers list URL error - + Trackers list URL error - + The trackers list URL cannot be empty - + The trackers list URL cannot be empty - + Download trackers list error - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" - + Error occurred when downloading the trackers list. Reason: "%1" TrackersFilterWidget - All (0) - this is for the tracker filter - All (0) - - - Trackerless (0) - Tracker-less (0) - - - Error (0) - Error (0) - - - Warning (0) - Warning (0) - - - Error (%1) - Error (%1) - - - + Warning (%1) Warning (%1) - + Trackerless (%1) Tracker-less (%1) - + Tracker error (%1) - + Tracker error (%1) - + Other error (%1) - + Other error (%1) - + Remove tracker - Remove tracker + Remove tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Resume torrents + Resume torrents - Pause torrents - Pause torrents + Pause torrents - + Remove torrents - + Remove torrents - + Removal confirmation - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + Don't ask me again. - + All (%1) this is for the tracker filter All (%1) @@ -11037,9 +11761,9 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument - + 'mode': invalid argument @@ -11088,13 +11812,13 @@ Please choose a different name and try again. [F] Downloading metadata Used when forced to load a magnet link. You probably shouldn't translate the F. - + [F] Downloading metadata [F] Downloading Used when the torrent is forced started. You probably shouldn't translate the F. - + [F] Downloading @@ -11107,7 +11831,7 @@ Please choose a different name and try again. [F] Seeding Used when the torrent is forced started. You probably shouldn't translate the F. - + [F] Seeding @@ -11130,9 +11854,8 @@ Please choose a different name and try again. Checking resume data - Paused - Paused + Paused @@ -11143,234 +11866,276 @@ Please choose a different name and try again. Moving Torrent local data are being moved/relocated - + Moving Missing Files - + Missing Files Errored Torrent status, the torrent has an error - + Errored - + Name i.e: torrent name Name - + Size i.e: torrent size Size - + Progress % Done Progress - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Seeds - + Peers i.e. partial sources (often untranslated) Peers - + Down Speed i.e: Download speed Down Speed - + Up Speed i.e: Upload speed Up Speed - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category Category - + Tags Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Added On - + Completed On Torrent was completed on 01/01/2010 08:00 Completed On - + Tracker Tracker - + Down Limit i.e: Download limit Down Limit - + Up Limit i.e: Upload limit Up Limit - + Downloaded Amount of data downloaded (e.g. in MB) Downloaded - + Uploaded Amount of data uploaded (e.g. in MB) Uploaded - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Download - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Session Upload - + Remaining Amount of data left to download (e.g. in MB) Remaining - + + Time Active + Time (duration) the torrent is active (not stopped) + Time Active + + + + Yes + Yes + + + + No + No + + Time Active Time (duration) the torrent is active (not paused) - Time Active + Time Active - + Save Path Torrent save path - + Save Path - + Incomplete Save Path Torrent incomplete save path - + Incomplete Save Path - + Completed Amount of data completed (e.g. in MB) Completed - + Ratio Limit Upload share ratio limit - + Ratio Limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Seen Complete - + Last Activity Time passed since a chunk was downloaded/uploaded - + Last Activity - + Total Size i.e. Size including unwanted data - + Total Size - + Availability The number of distributed copies of the torrent Availability - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Reannounce In + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/A - + %1 ago e.g.: 1h 20m ago - + %1 ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seeded for %2) @@ -11379,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Column visibility - + Recheck confirmation Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? Are you sure you want to recheck the selected torrent(s)? - + Rename Rename - + New name: New name: - + Choose save path Choose save path - Confirm pause - + Confirm pause - Would you like to pause all torrents? - + Would you like to pause all torrents? - Confirm resume - + Confirm resume - Would you like to resume all torrents? - + Would you like to resume all torrents? - + Unable to preview - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Add Tags + Add Tags - + Choose folder to save exported .torrent files - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + A file with the same name already exists - + Export .torrent file error - + Export .torrent file error - + Remove All Tags - + Remove All Tags - + Remove all tags from selected torrents? - + Remove all tags from selected torrents? - + Comma-separated tags: Comma-separated tags: - + Invalid tag - + Invalid tag - + Tag name: '%1' is invalid - + Tag name: '%1' is invalid - &Resume Resume/start the torrent - &Resume + &Resume - &Pause Pause the torrent - &Pause + &Pause - Force Resu&me Force Resume/start the torrent - + Force Resu&me - + Pre&view file... - + Pre&view file... - + Torrent &options... - + Torrent &options... - + Open destination &folder - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &up - + Move &down i.e. Move down in the queue - + Move &down - + Move to &top i.e. Move to top of the queue - + Move to &top - + Move to &bottom i.e. Move to bottom of the queue - + Move to &bottom - + Set loc&ation... - + Set loc&ation... - + Force rec&heck - + Force rec&heck - + Force r&eannounce - + Force r&eannounce - + &Magnet link - + &Magnet link - + Torrent &ID - + Torrent &ID - + + &Comment + &Comment + + + &Name - + &Name - + Info &hash v1 - + Info &hash v1 - + Info h&ash v2 - + Info h&ash v2 - + Re&name... - + Re&name... - + Edit trac&kers... - + Edit trac&kers... - + E&xport .torrent... - + E&xport .torrent... - + Categor&y - + Categor&y - + &New... New category... - + &New... - + &Reset Reset category - + &Reset - + Ta&gs - + Ta&gs - + &Add... Add / assign multiple tags... - + &Add... - + &Remove All Remove all tags + &Remove All + + + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + &Queue - + &Queue - + &Copy - + &Copy - + Exported torrent is not necessarily the same as the imported - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Download in sequential order - - Errors occurred when exporting .torrent files. Check execution log for details. + + Add tags + + + Errors occurred when exporting .torrent files. Check execution log for details. + Errors occurred when exporting .torrent files. Check execution log for details. + + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + &Remove - + Download first and last pieces first Download first and last pieces first - + Automatic Torrent Management Automatic Torrent Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Can not force re-announce if torrent is Paused/Queued/Errored/Checking + Can not force re-announce if torrent is Paused/Queued/Errored/Checking - + Super seeding mode Super seeding mode @@ -11716,91 +12505,96 @@ Please choose a different name and try again. UI Theme Configuration - + UI Theme Configuration Colors - + Colours Color ID - + Colour ID Light Mode - + Light Mode Dark Mode - + Dark Mode Icons - + Icons Icon ID - + Icon ID - + UI Theme Configuration. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Couldn't copy icon file. Source: %1. Destination: %2. UIThemeManager - - Failed to load UI theme from file: "%1" + + Set app style failed. Unknown style: "%1" + + + Failed to load UI theme from file: "%1" + Failed to load UI theme from file: "%1" + UIThemeSource Couldn't parse UI Theme configuration file. Reason: %1 - + Couldn't parse UI Theme configuration file. Reason: %1 UI Theme configuration file has invalid format. Reason: %1 - + UI Theme configuration file has invalid format. Reason: %1 Root JSON value is not an object - + Root JSON value is not an object @@ -11811,22 +12605,23 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". - + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". @@ -11834,60 +12629,60 @@ Please choose a different name and try again. Found Python executable. Name: "%1". Version: "%2" - + Found Python executable. Name: "%1". Version: "%2" Failed to find Python executable. Path: "%1". - + Failed to find Python executable. Path: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Failed to find `python3` executable in PATH environment variable. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Failed to find `python` executable in PATH environment variable. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Failed to find `python` executable in Windows Registry. Failed to find Python executable - + Failed to find Python executable Utils::IO - + File open error. File: "%1". Error: "%2" - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11895,22 +12690,22 @@ Please choose a different name and try again. Watched Folder Options - + Watched Folder Options <html><head/><body><p>Will watch the folder and all its subfolders. In Manual torrent management mode it will also add subfolder name to the selected Save path.</p></body></html> - + <html><head/><body><p>Will watch the folder and all its subfolders. In Manual torrent management mode it will also add subfolder name to the selected Save path.</p></body></html> Recursive mode - + Recursive mode Torrent parameters - + Torrent parameters @@ -11923,242 +12718,235 @@ Please choose a different name and try again. Watched folder path cannot be empty. - + Watched folder path cannot be empty. Watched folder path cannot be relative. - + Watched folder path cannot be relative. Folder '%1' is already in watch list. - + Folder '%1' is already in watch list. Folder '%1' doesn't exist. - + Folder '%1' doesn't exist. Folder '%1' isn't readable. - + Folder '%1' isn't readable. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. - + + Using built-in WebUI. + Using built-in WebUI. - - Using custom Web UI. Location: "%1". - + + Using custom WebUI. Location: "%1". + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). - + + Couldn't load WebUI translation for selected locale (%1). + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. %1 - + Web server error. Unknown error. - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI - - Web UI: HTTPS setup successful - + + Credentials are not set + Credentials are not set - - Web UI: HTTPS setup failed, fallback to HTTP - + + WebUI: HTTPS setup successful + WebUI: HTTPS setup successful - - Web UI: Now listening on IP: %1, port: %2 - + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Now listening on IP: %1, port: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs + + + Unknown error + Unknown error misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d + %1y %2d - - + + Unknown Unknown (size) Unknown - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent will shutdown the computer now because all downloads are complete. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_eo.ts b/src/lang/qbittorrent_eo.ts index 518f36ed99e8..922182a3c5cd 100644 --- a/src/lang/qbittorrent_eo.ts +++ b/src/lang/qbittorrent_eo.ts @@ -14,87 +14,87 @@ Pri - + Authors Aŭtoroj - + Current maintainer Aktuala prizorganto - + Greece Grekujo - - + + Nationality: Nacieco: - - + + E-mail: Repoŝto: - - + + Name: Nomo: - + Original author Originala aŭtoro - + France Francujo - + Special Thanks Specialaj Dankoj - + Translators Tradukistoj - + License Permesilo - + Software Used Programaroj Uzita - + qBittorrent was built with the following libraries: qBittorrent konstruiĝis kun la sekvaj bibliotekoj: - + Copy to clipboard - + Kopii al tondujo An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. - + Altnivelan BitTorrent kienton programis per C++, kiu uzas Qt ilaron kaj libtorrent-rasterbar. - Copyright %1 2006-2023 The qBittorrent project - + Copyright %1 2006-2024 The qBittorrent project + Kopirajto %1 2006-2024 La qBittorrent-projekto @@ -114,7 +114,7 @@ The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License - + La libera IP al la datumbazo de Country Light per DB-IP estas uzis por trovas la landon de samtavolanoj. La datumbazon permesas sub la Creative Commons Atribution 4.0 International License @@ -123,39 +123,39 @@ The old path is invalid: '%1'. - + La malnova indiko estas nevalida: '%1'. The new path is invalid: '%1'. - + La nova indiko estas nevalida: '%1'. Absolute path isn't allowed: '%1'. - + Absoluta indiko ne rajtas: '%1'. The file already exists: '%1'. - + La dosiero jam ekzistas: '%1'. No such file: '%1'. - + Dosiero ne ekzistas: '%1'. The folder already exists: '%1'. - + La dosierujo jam ekzistas: '%1'. No such folder: '%1'. - + Dosierujo ne ekzistas: '%1'. @@ -166,19 +166,18 @@ konservi en - + Never show again Neniam remontru - Torrent settings - Torentaj agordoj + Torentaj agordoj Set as default category - + Metu kiel defaŭla kategorio @@ -191,34 +190,39 @@ Komenci la torenton - + Torrent information - + Torena informo - + Skip hash check Preterpasi la haketan kontrolon Use another path for incomplete torrent + Uzi alian indikon por nekompleta torento + + + + Torrent options Tags: - + Etikedoj: Click [...] button to add/remove tags. - + Alklaki [...] butonon al aldoni/forigi etikedojn. Add/remove tags - + Aldoni/forigi etikedojn @@ -228,90 +232,95 @@ Stop condition: - + Haltigi situacion: - - + + None - + Nenio - - + + Metadata received - + Ricevis metadatenojn + + + + Torrents that have metadata initially will be added as stopped. + Torentoj kiu havas metadatenojn komence aldonos kiel haltigis. - - + + Files checked - + Dosierojn ekzamenis - + Add to top of queue - + Aldoni al super de la vicoj - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: - + Original - + Originalo - + Create subfolder - + Krei subdosierujon - + Don't create subfolder - + Ne krei subdosierujon - + Info hash v1: - + V1 de Informa Haketaĵo: - + Size: Grando: - + Comment: Komento: - + Date: Dato: Torrent Management Mode: - + Modo de Torenta Administrado: Automatic mode means that various torrent properties(eg save path) will be decided by the associated category - + La signifo de aŭtomata modo estas diversaj torentaj ecoj(ek. konserva indiko) decidos per la elektita kategorio Manual - + Mana @@ -321,204 +330,183 @@ Remember last used save path - + Memori lastan uzitan konservan indikon - + Do not delete .torrent file - + Ne forigi .torrent dosieron - + Download in sequential order Elŝuti en sinsekva ordo - + Download first and last pieces first - + Elŝuti la unuan kaj la finan pecojn unue - + Info hash v2: - + V2 de Informa Haketaĵo: - + Select All Elekti cion - + Select None Elekti nenion - + Save as .torrent file... - + Konservi kiel .torrent dosiero - + I/O Error Eneliga eraro - Invalid torrent - Malvalida torento - - - + Not Available This comment is unavailable Ne Disponeblas - + Not Available This date is unavailable Ne Disponeblas - + Not available Ne disponeblas - Invalid magnet link - Malvalida magnet-ligilo - - - This magnet link was not recognized - Ĉi tiu magnet-ligilo ne estis rekonata - - - + Magnet link Magnet-ligilo - + Retrieving metadata... Ricevante metadatenojn... - - + + Choose save path Elektu la dosierindikon por konservi - + No stop condition is set. - + Torrent will stop after metadata is received. - - - - - Torrents that have metadata initially aren't affected. - + Torenton haltigos post ricevis metadatenojn. - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A N/A - + %1 (Free space on disk: %2) - + %1 (Libera spaco de disko: %2) - + Not available This size is unavailable. Ne disponeblas - + Torrent file (*%1) - + Torenta dosiero (*%1) - + Save as torrent file - + Konservi kiel torrenta dosiero - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Ne povas eksporti torentan metadatenan dosieron '%1'. Kialo: %2. - + Cannot create v2 torrent until its data is fully downloaded. - + Ne povas kreii v2 torenton ĝis giajn datumojn tute elŝutis. - + Filter files... Filtri dosierojn... - + Parsing metadata... Sintakse analizante metadatenojn... - + Metadata retrieval complete La ricevo de metadatenoj finiĝis - - Download Error - Elŝuta eraro - AddTorrentManager Downloading torrent... Source: "%1" - + Elŝutas torenton... Fonto: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Malsukcesis aldoni torenton. Fonto: "%1". Kialo: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -533,17 +521,17 @@ Torrent Management Mode: - + Modo de Torenta Administrado Automatic mode means that various torrent properties(eg save path) will be decided by the associated category - + La signifo de aŭtomata modo estas diversaj torentaj ecoj(ek. konserva indiko) decidos per la elektita kategorio. Save at - konservi en + Konservi en @@ -553,7 +541,7 @@ Use another path for incomplete torrents: - + Uzi alian indikon por nekompletaj torentoj: @@ -563,17 +551,17 @@ Tags: - + Etikedoj: Click [...] button to add/remove tags. - + Alklaki [...] butonon al aldoni/forigi etikedojn. Add/remove tags - + Aldoni/forigi etikedojn @@ -583,7 +571,7 @@ Start torrent: - + Komenci torenton: @@ -593,12 +581,12 @@ Stop condition: - + Haltigi situacion: Add to top of queue: - + Aldoni al super de la vicoj: @@ -606,807 +594,930 @@ Preterpasi la haketan kontrolon - - - Choose save path - Elektu la konservan dosierindikon + + Torrent share limits + - - - - - - - Default - + + + Choose save path + Elektu la konservan dosierindikon + + + - Yes - Jes + Default + Defaŭlto + Yes + Jes + + + + + No Ne - + Manual - + Mana - + Automatic Aŭtomata - + Original - + Originala - + Create subfolder - + Kreii subdosierujon - + Don't create subfolder - + Ne krei subdosierujon - + None - + Nenio - + Metadata received - + Ricevis metadatenojn - + Files checked - + Dosierojn ekzamenis AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Rekontroli torentojn post fino - - + + ms milliseconds ms - + Setting Agordo - + Value Value set for this setting Valoro - + (disabled) - + (malebligita) - + (auto) (aŭtomata) - + + min minutes - + min - + All addresses Ĉiuj adresoj - + qBittorrent Section - - + + Open documentation - + Malfermi dokumentadon - + All IPv4 addresses - + Ĉiuj IPv4 adresoj - + All IPv6 addresses - + Ĉiuj IPv6 adresoj - + libtorrent Section - + Fastresume files Rapidreaktivigi dosierojn - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Normala - + Below normal Sub normala - + Medium Meza - + Low Malalta - + Very low Tre Malalta - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache - - - - + + + + s seconds s - + Disk cache expiry interval Intervalo por senvalidigado de la diska kaŝmemoro - + Disk queue size - - + + Enable OS cache Ebligi operaciuman kaŝmemoron - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Defaŭlto - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP Preferi TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Aperigi sciigoj - + Display notifications for added torrents - + Download tracker's favicon - + Save path history length - + Enable speed graphs - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck Konfirmi rekontrolon de la torento - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface Iu ajn interfaco - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker Ebligu enigitan spurilon - + Embedded tracker port Enigita spurila pordo - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 lanĉiĝis + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 Nomo de la torento: %1 - + Torrent size: %1 Grando de la torento: %1 - + Save path: %1 Konserva dosierindiko: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds La torento elŝutiĝis en %1. - + + Thank you for using qBittorrent. Dankon pro uzi la qBittorrent-klienton. - + Torrent: %1, sending mail notification - + Add torrent failed - + Malsukcesis aldoni torenton - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit &Ĉesu - + I/O Error i.e: Input/Output Error Eneliga eraro - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1415,129 +1526,110 @@ Kial: %2 - Error - Eraro - - - Failed to add torrent: %1 - Ne eblis aldoni la torenton: %1 - - - + Torrent added - + '%1' was added. e.g: xxx.avi was added. - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' finiĝis elŝuton. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - URL-elŝuta eraro + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Ne eblis elŝuti dosieron ĉe URL '%1', kialo: %2. + + Test email + - Torrent file association - Torentdosiera asocio + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' finiĝis elŝuton. - + Information Informoj - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - + Exit Ĉesigi - + Recursive download confirmation - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - Neniam + Neniam - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Konservante la torentan progreson... - + qBittorrent is now ready to exit @@ -1545,7 +1637,7 @@ Kial: %2 AsyncFileStorage - + Could not create directory '%1'. @@ -1553,22 +1645,22 @@ Kial: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1616,12 +1708,12 @@ Kial: %2 - + Must Not Contain: Nepras ne enhavi: - + Episode Filter: Epizodfiltrilo: @@ -1673,263 +1765,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also E&lporti... - + Matches articles based on episode filter. - + Example: Ekzemplo: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: Epizodfiltrilaj reguloj: - + Season number is a mandatory non-zero value - + Filter must end with semicolon - + Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value - + Rules - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago Lasta kongruo: antaŭ %1 tagoj - + Last Match: Unknown Lasta kongruo: Nekonata - + New rule name Nova regulnomo - + Please type the name of the new download rule. Bonvolu tajpi la nomon de la nova elŝutregulo. - - + + Rule name conflict Regulnoma konflikto - - + + A rule with this name already exists, please choose another name. Regulo kun tiu nomo jam ekzistas, bonvolu elekti alian nomon. - + Are you sure you want to remove the download rule named '%1'? Ĉu vi certas, ke vi volas forigi la elŝutregulon, kies nomo estas '%1'? - + Are you sure you want to remove the selected download rules? Ĉu vi certas, ke vi volas forigi la elektitajn elŝutregulojn? - + Rule deletion confirmation Regul-foriga konfirmado - + Invalid action Malvalida ago - + The list is empty, there is nothing to export. La listo malplenas, estas nenio por elporti. - + Export RSS rules - + I/O Error Eneliga eraro - + Failed to create the destination file. Reason: %1 - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Add new rule... Aldoni novan regulon... - + Delete rule Forigi la regulon - + Rename rule... Renomi la regulon... - + Delete selected rules Forigi elektitajn regulojn - + Clear downloaded episodes... - + Rule renaming Regul-renomado - + Please type the new rule name Bonvolu tajpi la novan regulnomon - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1971,53 +2063,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2025,38 +2122,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2064,22 +2161,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2087,474 +2184,540 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - Removed torrent. - + Forigis torenton. - - - Removed torrent and deleted its content. - - - - - - - Torrent paused. - + Forigis torenton kaj ĝiajn dosierojn - - - + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - - UPnP/NAT-PMP support: OFF + + Saving resume data completed. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + BitTorrent session successfully finished. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + + + + + UPnP/NAT-PMP support: OFF - ONLINE - KONEKTITA + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - OFFLINE - MALKONEKTITA + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - + Forigis torenton. Torento: "%1" - Removed torrent and deleted its content. Torrent: "%1" + Forigis torenton kaj ĝiajn dosierojn. Torento: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Forigis torenton sed malsuksesis forigi ĝiajn dosierojn kaj/aŭ partfile. Torrent: "%1". Eraro: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2562,62 +2725,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2638,184 +2806,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: Uzo: - + [options] [(<filename> | <url>)...] - + Options: Opcioj: - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen Malebligi salutŝildon - + Run in daemon-mode (background) Lanĉi per demonreĝimo (fone) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check Preterpasi la haketan kontrolon - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first - + Elŝuti la unuan kaj la finan pecojn unue - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Helpo @@ -2823,17 +2996,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories - + Kategorioj - + All Ĉio - + Uncategorized @@ -2843,12 +3016,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Add category... - + Aldoni kategorion... Add subcategory... - + Aldoni subkategorion... @@ -2858,41 +3031,54 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Remove category - + Forigi kategorion Remove unused categories - + Forigi neuzatajn kategoriojn - Resume torrents - Reaktivigi la torentojn + Start torrents + + Stop torrents + + + + Resume torrents + Reaktivigi la torentojn + + Pause torrents - Paŭzigi la torentojn + Paŭzigi la torentojn Remove torrents - + Forigi torentojn ColorWidget - + Edit... - + Reset Vakigi + + + System + + CookiesDialog @@ -2933,12 +3119,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2946,7 +3132,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -2956,7 +3142,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Remove torrent(s) - + Forigi torento(j)n @@ -2965,25 +3151,25 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Ĉu vi vere volas forigi '%1' de la transmetlisto? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Ĉu vi vere volas forigi tiujn %1 torentojn de la transmetlisto? - + Remove - + Forigi @@ -2994,12 +3180,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Add torrent links - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3009,12 +3195,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Elŝuti - + No URL entered Neniu URL-adreso eniĝis - + Please type at least one URL. Bonvolu tajpi almenaŭ unu URL-adreson. @@ -3155,43 +3341,66 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - - - %1 extra IP filter parsing errors occurred. - 513 extra IP filter parsing errors occurred. + + + %1 extra IP filter parsing errors occurred. + 513 extra IP filter parsing errors occurred. + + + + + + + + + + + Parsing Error: The filter file is not a valid PeerGuardian P2B file. + + + + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards - - - - - - - - Parsing Error: The filter file is not a valid PeerGuardian P2B file. + + Regular expression GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Elŝutas torenton... Fonto: "%1" - - Trackers cannot be merged because it is a private torrent + + Torrent is already present - - Torrent is already present + + Trackers cannot be merged because it is a private torrent. - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3199,38 +3408,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. Nesubtenata databank-dosiergrando. - + Metadata error: '%1' entry not found. Metadatena eraro: elemento '%1' ne troviĝis. - + Metadata error: '%1' entry has invalid type. Metadatena eraro: elemento '%1' havas malvalidan tipon. - + Unsupported database version: %1.%2 Nesubtenata datenbank-versio: %1.%2 - + Unsupported IP version: %1 Nesubtenata IP-versio: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3238,17 +3447,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3289,36 +3498,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Folii... - + Reset Vakigi - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + Leĝa Noto + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned @@ -3327,89 +3564,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 estas nekonata komandlinia parametro. - - + + %1 must be the single command line parameter. %1 nepras esti la sola komandlinia parametro. - - You cannot use %1: qBittorrent is already running for this user. - %1 ne povas uziĝi de vi: qBittorrent jam funkciantas por ĉi tiu uzanto. - - - + Run application with -h option to read about command line parameters. Lanĉu la aplikaĵon kun la opcion -h por legi pri komandliniaj parametroj. - + Bad command line Malvalida komandlinio - + Bad command line: Malvalida komandlinio: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Leĝa Noto - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + You cannot use %1: qBittorrent is already running. - - No further notices will be issued. + + Another qBittorrent instance is already running. - - Press %1 key to accept and continue... - Premu la %1-klavon por akcepti kaj daŭrigi... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - Legal notice - Leĝa noto - - - - Cancel - Nuligi - - - - I Agree - Mi Konsentas + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3420,605 +3630,698 @@ No further notices will be issued. &Redakti - + &Tools &Iloj - + &File &Dosiero - + &Help &Helpo - + On Downloads &Done - + &View &Vido - + &Options... &Opcioj - &Resume - &Reaktivigi + &Reaktivigi - + &Remove - + &Forigi - + Torrent &Creator Torent&kreilo - - + + Alternative Speed Limits Alternativaj rapidlimoj - + &Top Toolbar - + Display Top Toolbar - + Status &Bar - + Filters Sidebar - + S&peed in Title Bar - + Show Transfer Speed in Title Bar - + &RSS Reader &RSS-legilo - + Search &Engine &Serĉilo - + L&ock qBittorrent Ŝl&osi la qBittorrent-klienton - + Do&nate! Do&nacu! - - &Do nothing + + Sh&utdown System - + + &Do nothing + Fari &nenion + + + Close Window - R&esume All - R&eaktivigu Ĉion + R&eaktivigu Ĉion - + Manage Cookies... - + Manage stored network cookies - + Normal Messages - + Information Messages - + Warning Messages - + Critical Messages - + &Log &Protokolo - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue - + Move to the bottom of the queue - + Top of Queue - + Move to the top of the queue - + Move Down Queue - + Move down in the queue - + Move Up Queue - + Move up in the queue - + &Exit qBittorrent Ĉ&esigi la qBittorrent-klienton - + &Suspend System &Haltetigi la sistemon - + &Hibernate System &Diskodormigi la sistemon - S&hutdown System - Mal&ŝalti la sistemon + Mal&ŝalti la sistemon - + &Statistics &Statistikoj - + Check for Updates Kontroli ĝisdatigadon - + Check for Program Updates Kontroli programaran ĝisdatigadon - + &About &Pri - &Pause - &Paŭzigu + &Paŭzigu - P&ause All - &Paŭzigu Ĉion + &Paŭzigu Ĉion - + &Add Torrent File... Aldonu Torent&dosieron... - + Open Malfermu - + E&xit &Ĉesu - + Open URL Malfermu URL-adreson - + &Documentation &Dokumentado - + Lock Ŝlosu - - - + + + Show Montru - + Check for program updates Kontroli programaran ĝisdatigadon - + Add Torrent &Link... Aldonu Torent&ligilon... - + If you like qBittorrent, please donate! Se qBittorrent plaĉas al vi, bonvolu donaci! - - + + Execution Log - + Clear the password Vakigi la pasvorton - + &Set Password &Agordi pasvorton - + Preferences Agordoj - + &Clear Password &Vakigi la pasvorton - + Transfers Transmetoj - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only Nur bildsimboloj - + Text Only Nur Teksto - + Text Alongside Icons Teksto apud bildsimboloj - + Text Under Icons Teksto sub bildsimboloj - + Follow System Style Uzi la sisteman stilon - - + + UI lock password UI-ŝlosa pasvorto - - + + Please type the UI lock password: Bonvolu tajpi la UI-ŝlosilan pasvorton: - + Are you sure you want to clear the password? Ĉu vi certas, ke vi volas vakigi la pasvorton? - + Use regular expressions - + + + Search Engine + Serĉilo + + + + Search has failed + Serĉo malsukcesis + + + + Search has finished + Serĉo finiĝis + + + Search Serĉi - + Transfers (%1) Transmetoj (%1) - Never - Neniam - - - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent ĵus ĝisdatiĝis kaj devas relanĉiĝi por la ŝanĝoj efiki. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + &No &Ne - + &Yes &Jes - + &Always Yes &Ĉiam Jes - + Options saved. - - + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime - + qBittorrent Update Available Ĝisdatigo por qBittorrent disponeblas - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Pitono estas bezona por uzi la serĉilon, sed ŝajnas, ke ĝi ne estas instalita. Ĉu vi volas instali ĝin nun? - + Python is required to use the search engine but it does not seem to be installed. Pitono estas bezona por uzi la serĉilon, sed ŝajnas, ke ĝi ne estas instalita. - - + + Old Python Runtime - + A new version is available. - + Do you want to download %1? - + Open changelog... - + No updates available. You are already using the latest version. Neniu ĝisdatigo disponeblas. Vi jam uzas la aktualan version. - + &Check for Updates &Kontroli ĝisdatigadon - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Paŭzinta + + + Checking for Updates... Kontrolante ĝisdatigadon... - + Already checking for program updates in the background Jam kontrolante programan ĝisdatigon fone - - Download error - Elŝuta eraro + + Python installation in progress... + - - Python setup could not be downloaded, reason: %1. -Please install it manually. + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". - - + + Download error + Elŝuta eraro + + + + Invalid password Malvalida pasvorto - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid La pasvorto malvalidas - + DL speed: %1 e.g: Download speed: 10 KiB/s Elŝutrapido: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Alŝutrapido: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [E: %1, A: %2] qBittorrent %3 - - - + Hide Kaŝi - + Exiting qBittorrent qBittorrent ĉesantas - + Open Torrent Files Malfermi Torentdosierojn - + Torrent Files Torentdosieroj @@ -4079,133 +4382,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) La nomo de la malloka gastigo ne troviĝis (malvalida gastiga nomo) - + The operation was canceled La operacio malfariĝis - + The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out La konekto al la malloka servilo eltempiĝis. - + SSL/TLS handshake failed SSL-/TSL-kvitanco malsukcesis - + The remote server refused the connection La malloka servilo rifuzis la konekton - + The connection to the proxy server was refused La konekto al la prokurilo rifuziĝis - + The proxy server closed the connection prematurely La prokurilo fermis la konekton antaŭtempe - + The proxy host name was not found La nomo de la prokurila gastigo ne troviĝis - + The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known - + The requested operation is invalid for this protocol - + An unknown network-related error was detected - + An unknown proxy-related error was detected - + An unknown error related to the remote content was detected - + A breakdown in protocol was detected - + Unknown error Nekonata eraro @@ -4213,7 +4516,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5585,476 +5893,508 @@ Please install it manually. BitTorrent - + RSS - Web UI - TTT-UI + TTT-UI - + Advanced Speciala - + Customize UI Theme... - + Transfer List Transmetlisto - + Confirm when deleting torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Uzi alternajn vicokolorojn - + Hide zero and infinity values - + Always Ĉiam - - Paused torrents only - - - - + Action on double-click Duoble-klaka ago - + Downloading torrents: Elŝutante torentojn: - - Start / Stop Torrent - Komenci / Haltigi la Torenton + Komenci / Haltigi la Torenton - - + + Open destination folder Malfermi la celdosierujon - - + + No action Neniu ago - + Completed torrents: Finitaj torentoj: - + Auto hide zero status filters - + Desktop Labortablo - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: - + Original - + Originalo - + Create subfolder - + Kreii subdosierujon - + Don't create subfolder - + Ne krei subdosierujon - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + Aldoni al super de la vicoj - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... - + Options.. - + Remove - + Forigi - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + Any + + + + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time De: - + To: To end time Al: - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: Maksimuma nombro da artikoloj por fluo: - - - + + + min minutes - + min - + Seeding Limits - - Pause torrent + + Remove torrent + Forigi torenton + + + + Remove torrent and its files + Forigi torenton kaj ĝiaj dosierojn + + + + Enable super seeding for torrent + + + + + When ratio reaches - - Remove torrent + + Stop torrent - - Remove torrent and its files + + A&utomatically append these trackers to new downloads: - - Enable super seeding for torrent + + Automatically append trackers from URL to new downloads: - - When ratio reaches + + URL: + URL-adreso: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs - + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: - + Web User Interface (Remote control) - + IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Neniam - + ban for: - + Session timeout: - + Disabled Malebligita - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6063,441 +6403,482 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - - Bypass authentication for clients on localhost + + Bypass authentication for clients on localhost + + + + + Bypass authentication for clients in whitelisted IP subnets + + + + + IP subnet whitelist... + + + + + Use alternative WebUI + + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + + + + Upda&te my dynamic domain name + + + + + Minimize qBittorrent to notification area + + + + + Search + Serĉi + + + + WebUI - - Bypass authentication for clients in whitelisted IP subnets + + Interface - - IP subnet whitelist... - + + Language: + Lingvo: - - Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + Style: - - Upda&te my dynamic domain name + + Color scheme: - - Minimize qBittorrent to notification area + + Stopped torrents only - - Interface + + + Start / stop torrent - - Language: + + + Open torrent options dialog - + Tray icon style: - - + + Normal Normala - + File association Dosiera asociigo - + Use qBittorrent for .torrent files Uzi la qBittorrent-klienton por magnet-ligiloj - + Use qBittorrent for magnet links Uzi la qBittorrent-klienton por magnet-ligiloj - + Check for program updates Kontroli programaran ĝisdatigadon - + Power Management Energiadministrado - - Save path: + + &Log Files - + + Save path: + Konserva dosierindiko: + + + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent Aldonante torenton - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management - + Default Torrent Management Mode: - + Manual - + Mana - + Automatic Aŭtomata - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + Copy .torrent files to: Kopii .torrent-dosierojn al: - + Show &qBittorrent in notification area - - &Log file - - - - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ne komenci la elŝuton aŭtomate - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Aldonu finaĵon .!qB al mankohavaj dosieroj - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - + Nenio - - + + Metadata received - + Ricevis metadatenojn - - + + Files checked - + Dosierojn ekzamenis - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Uzi alian indikon por nekompletaj torentoj: - + Automatically add torrents from: Aŭtomate aldoni torentojn de: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6514,841 +6895,902 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver Al: - + SMTP server: SMTP-servilo: - + Sender - + From: From sender De: - + This server requires a secure connection (SSL) - - + + Authentication Aŭtentigo - - - - + + + + Username: Uzantnomo: - - - - + + + + Password: Pasvorto: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP - + Listening Port Aŭskultpordo - + Port used for incoming connections: Pordo uzata por alvenantaj konektoj: - + Set to 0 to let your system pick an unused port - + Random Hazarda - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits Konektaj Limoj - + Maximum number of connections per torrent: Maksimuma nombro da konektoj por torento: - + Global maximum number of connections: Malloka maksimuma nombro da konektoj: - + Maximum number of upload slots per torrent: Maksimuma nombro da alŝutkonektoj por torento: - + Global maximum number of upload slots: - + Proxy Server Prokura Servilo - + Type: Tipo: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Gastigo: - - - + + + Port: Pordo: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections Uzi prokurilon por samtavolaj konektoj - + A&uthentication - + Info: The password is saved unencrypted Informo: La pasvorto estas konservita senĉifrite - + Filter path (.dat, .p2p, .p2b): Filtri la dosierindikon (.dat, .p2p, .p2b): - + Reload the filter Reŝargi la filtron - + Manually banned IP addresses... - + Apply to trackers Apliki al spuriloj - + Global Rate Limits Mallokaj rapidlimoj - - - - - - - + + + + + + + ∞ - + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Alŝuta: - - + + Download: Elŝuti - + Alternative Rate Limits Alternativaj rapidlimoj - + Start time - + End time - + When: Kiam: - + Every day Ĉiutage - + Weekdays Laborsemajne - + Weekends Semajnfine - + Rate Limits Settings Rapidlimaj agordoj - + Apply rate limit to peers on LAN Apliki la rapidlimon al samtavolanoj en loka reto. - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Apliki la rapidlimon al la µTP-protokolo - + Privacy Privateco - + Enable DHT (decentralized network) to find more peers Trovi pli samtavolanojn per DHT (malcentra reto) - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Trovi pli samtavolanojn per Peer Exchange (PeX) - + Look for peers on your local network Serĉi samtavolanojn en via loka reto - + Enable Local Peer Discovery to find more peers Trovi pli samtavolanojn per Local Peer Discovery - + Encryption mode: Ĉifroreĝimo: - + Require encryption Neprigi ĉifradon - + Disable encryption Malebligi ĉifradon - + Enable when using a proxy or a VPN connection - + Enable anonymous mode Ebligi la sennoman modon - + Maximum active downloads: Maksimumaj aktivaj elŝutoj: - + Maximum active uploads: Maksimumaj aktivaj elŝutoj: - + Maximum active torrents: Maksimumaj aktivaj torentoj: - + Do not count slow torrents in these limits Ne inkluzivi malrapidajn torentojn en tiuj limoj - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + Torrent inactivity timer: - + then poste - + Use UPnP / NAT-PMP to forward the port from my router Plusendi la pordon de mia enkursigilo per UPnP / NAT-PMP - + Certificate: Atestilo: - + Key: Ŝlosilo: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - - Use alternative Web UI + + Files location: - - Files location: + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> - + Security - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servo: - + Register Registri - + Domain name: Domajna nomo: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - - - - Torrents that have metadata initially aren't affected. - + Torento haltigos post ricevis metadatenojn. - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: Torenta nomo - + %L: Category - + %L: Kategorio - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path %D: Konserva dosierindiko - + %C: Number of files %C: Nombro de dosieroj - + %Z: Torrent size (bytes) %Z: Grando de la torento (bitoj) - + %T: Current tracker %T: Aktuala spurilo - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nenio) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Select certificate - + Private key - + Select private key - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory Elektu la elportan dosierujon - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Elektu konservan dosierujon - + + Torrents that have metadata initially will be added as stopped. + Torentoj kiu havas metadatenojn komence aldonos kiel haltigis. + + + Choose an IP filter file Elektu IP-filtrildosieron - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Sintaksanaliza eraro - + Failed to parse the provided IP filter - + Successfully refreshed Sukcese aktualigita - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences Agordoj - + Time Error Tempa Eraro - + The start time and the end time can't be the same. La komenctempo kaj la fintempo ne povas esti la samaj. - - + + Length Error - - - The Web UI username must be at least 3 characters long. - La uzantnomo por TTT-UI nepras esti almenaŭ 3 signojn longa. - - - - The Web UI password must be at least 6 characters long. - - PeerInfo - + Unknown Nekonata - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7504,7 +7946,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A N/A @@ -7527,7 +7969,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Format: IPv4:port / [IPv6]:port Aranĝo: IPv4:pordo / [IPv6]:pordo @@ -7568,27 +8010,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7601,58 +8043,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Serĉilaj kromprogramoj - + Installed search plugins: Instalitaj serĉilaj kromprogramoj: - + Name Nomo - + Version Versio - + Url URL-adreso - - + + Enabled Ebligita - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instali novan - + Check for updates Kontroli ĝisdatigadon - + Close Fermi - + Uninstall Malinstali @@ -7772,17 +8214,17 @@ Tiuj kromprogramoj malebliĝis. - + Search plugin source: - + Local file Loka dosiero - + Web link TTT-ligilo @@ -7823,47 +8265,47 @@ Tiuj kromprogramoj malebliĝis. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Antaŭrigardu - + Name Nomo - + Size Grando - + Progress Progreso - + Preview impossible Antaŭrigardo maleblas - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7876,27 +8318,27 @@ Tiuj kromprogramoj malebliĝis. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -7937,12 +8379,12 @@ Tiuj kromprogramoj malebliĝis. PropertiesWidget - + Downloaded: Elŝutis: - + Availability: Disponeblo: @@ -7957,53 +8399,53 @@ Tiuj kromprogramoj malebliĝis. Transmeto - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktiva Tempo: - + ETA: ETA: - + Uploaded: Alŝutis: - + Seeds: Fontsendantoj: - + Download Speed: Elŝutrapido: - + Upload Speed: Alŝutrapido: - + Peers: Samtavolanoj: - + Download Limit: Elŝutlimo: - + Upload Limit: Alŝutlimo: - + Wasted: Senefikaĵo: @@ -8013,193 +8455,249 @@ Tiuj kromprogramoj malebliĝis. Konektoj: - + Information Informoj - + Info Hash v1: - + Info Hash v2: - + Comment: Komento: - + Select All Elekti cion - + Select None Elekti nenion - + Share Ratio: Kunhava proporcio: - + Reannounce In: Rekonekti al spuriloj post: - + Last Seen Complete: Laste trovita plene: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Tuta grando: - + Pieces: Pecoj: - + Created By: Kreita de: - + Added On: Aldonita je: - + Completed On: Finita je: - + Created On: Kreita je: - + + Private: + + + + Save Path: Konserva Dosierindiko: - + Never Neniam - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (havas %3) - - + + %1 (%2 this session) %1 (%2 ĉi tiu seanco) - - + + + N/A N/A - + + Yes + Jes + + + + No + Ne + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (fontsendis dum %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 tute) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 mez.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nova TTT-fonto + Nova TTT-fonto - Remove Web seed - Forigi TTT-fonton + Forigi TTT-fonton - Copy Web seed URL - Kopii URL-adreson de TTT-fonto + Kopii URL-adreson de TTT-fonto - Edit Web seed URL - Redakti URL-adreson de TTT-fonto + Redakti URL-adreson de TTT-fonto - + Filter files... Filtri dosierojn... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - Nova URL-fonto + Nova URL-fonto - New URL seed: - Nova URL-fonto: + Nova URL-fonto: - - This URL seed is already in the list. - Tiu URL-fonto jam estas en la listo. + Tiu URL-fonto jam estas en la listo. - + Web seed editing TTT-fonta redaktado - + Web seed URL: URL-adreso de la TTT-fonto: @@ -8218,22 +8716,22 @@ Tiuj kromprogramoj malebliĝis. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8241,22 +8739,22 @@ Tiuj kromprogramoj malebliĝis. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8292,12 +8790,12 @@ Tiuj kromprogramoj malebliĝis. RSS::Private::Parser - + Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). @@ -8305,99 +8803,99 @@ Tiuj kromprogramoj malebliĝis. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8421,8 +8919,8 @@ Tiuj kromprogramoj malebliĝis. - - + + Mark items read Marki elementojn kiel legitaj @@ -8447,132 +8945,132 @@ Tiuj kromprogramoj malebliĝis. Torentoj: (duoble alklaki por elŝuti) - - + + Delete Forigu - + Rename... Renomi... - + Rename Renomi... - - + + Update Ĝisdatigi - + New subscription... Nova abono... - - + + Update all feeds Ĝisdatigi ĉiujn fluojn - + Download torrent Elŝuti la torenton - + Open news URL Malfermi novaĵan URL-adreson - + Copy feed URL - + New folder... Nova dosierujo... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Bonvolu elekti dosierujo-nomon - + Folder name: Dosierujo-nomo: - + New folder Nova dosierujo - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation Foriga konfirmado - + Are you sure you want to delete the selected RSS feeds? Ĉu vi certas, ke vi volas forigi la elektitajn RSS-fluojn? - + Please choose a new name for this RSS feed Bonvolu elekti novan nomon por tiu RSS-fluo - + New feed name: Nova flunomo: - + Rename failed - + Date: Dato: - + Feed: - + Author: Aŭtoro: @@ -8580,38 +9078,38 @@ Tiuj kromprogramoj malebliĝis. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 - + Failed to check for plugin updates: %1 @@ -8678,7 +9176,7 @@ Tiuj kromprogramoj malebliĝis. ∞ - + @@ -8686,132 +9184,146 @@ Tiuj kromprogramoj malebliĝis. Grando: - + Name i.e: file name Nomo - + Size i.e: file size Grando - + Seeders i.e: Number of full sources Fontoj - + Leechers i.e: Number of partial sources Ricevantoj - Search engine - Serĉilo + Serĉilo - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere - + Use regular expressions - + Open download window - + Download Elŝuti - + Open description page - + Copy Kopii - + Name Nomo - + Download link - + Description page URL - + Searching... Serĉante... - + Search has finished Serĉo finiĝis - + Search aborted Serĉo ĉesiĝis - + An error occurred during search... Eraro okazis dum la serĉo... - + Search returned no results Serĉo reportis neniun rezulton - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8819,104 +9331,104 @@ Tiuj kromprogramoj malebliĝis. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. Kromprogramo ne subtenatas. - + Plugin %1 has been successfully updated. - + All categories Ĉiuj kategorioj - + Movies Filmoj - + TV shows Televidserioj - + Music Muziko - + Games Ludoj - + Anime Animeo - + Software Programaroj - + Pictures Bildoj - + Books Libroj - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8926,113 +9438,152 @@ Tiuj kromprogramoj malebliĝis. - - - - Search Serĉi - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... Serĉilaj kromprogramoj... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins Ĉiuj kromprogramoj - + Only enabled - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab - + Close all tabs - + Select... - - - + + Search Engine Serĉilo - + + Please install Python to use the Search Engine. Bonvolu instali Pitonon por uzi la Serĉilon. - + Empty search pattern Malplena serĉa ŝablono - + Please type a search pattern first Bonvolu tajpi serĉan ŝablonon unue - + + Stop Halti - Search has finished - Serĉo finiĝis + Serĉo finiĝis - Search has failed - Serĉo malsukcesis + Serĉo malsukcesis + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9145,34 +9696,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Alŝuta: - - - + + + ∞ - + - - - + + + KiB/s KiB/s - - + + Download: Elŝuti - + Alternative speed limits @@ -9364,32 +9915,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: @@ -9404,12 +9955,12 @@ Click the "Search plugins..." button at the bottom right of the window Enviciĝitaj eneligaj taskoj: - + Write cache overload: - + Read cache overload: @@ -9428,51 +9979,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Konekta stato: - - + + No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodoj - + qBittorrent needs to be restarted! - - - + + + Connection Status: Konekta Stato: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online Konektite - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9501,14 +10068,22 @@ Click the "Search plugins..." button at the bottom right of the window Finite (0) - Resumed (0) - Reaktiviĝita (0) + Reaktiviĝita (0) - Paused (0) - Paŭzinta (0) + Paŭzinta (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9570,10 +10145,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Finite (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Paŭzinta (%1) + Paŭzinta (%1) @@ -9581,24 +10175,21 @@ Click the "Search plugins..." button at the bottom right of the window - Resume torrents - Reaktivigi la torentojn + Reaktivigi la torentojn - Pause torrents - Paŭzigi la torentojn + Paŭzigi la torentojn Remove torrents - + Forigi torentojn - Resumed (%1) - Reaktiviĝita (%1) + Reaktiviĝita (%1) @@ -9639,17 +10230,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Etikedoj - + All Ĉio - + Untagged @@ -9657,64 +10248,76 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... - + Remove tag - + Forigi la etikedon - + Remove unused tags Forigi neuzitajn etikedojn - Resume torrents - Reaktivigi la torentojn + Reaktivigi la torentojn - Pause torrents - Paŭzigi la torentojn + Paŭzigi la torentojn - + Remove torrents - + Forigi torentojn - New Tag + Nova Etikedo + + + + Start torrents - + + Stop torrents + + + + Tag: + Etikedo: + + + + Add tag - + Invalid tag name - + Malvalida etikednomo - + Tag name '%1' is invalid Tag exists - + Etikedo ekzistas Tag name already exists. - + Etikeda nomo jam ekzistas. @@ -9737,12 +10340,12 @@ Click the "Search plugins..." button at the bottom right of the window Use another path for incomplete torrents: - + Uzi alian indikon por nekompletaj torentoj: Default - + Defaŭlto @@ -9757,12 +10360,12 @@ Click the "Search plugins..." button at the bottom right of the window Path: - + Indiko: Save path: - + Konserva dosierindiko: @@ -9839,32 +10442,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Nomo - + Progress Progreso - + Download Priority Elŝut-prioritato - + Remaining Restanta - + Availability - + Disponeblo - + Total Size Tuta grando @@ -9909,102 +10512,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error - + Renaming - + New name: Nova nomo: - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Malfermu - + Open containing folder - + Rename... Renomi... - + Priority Prioritato - - + + Do not download Ne elŝuti - + Normal Normala - + High Alta - + Maximum Maksimuma - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10020,7 +10641,7 @@ Please choose a different name and try again. Path: - + Indiko: @@ -10029,13 +10650,13 @@ Please choose a different name and try again. - + Select file - + Select folder @@ -10060,54 +10681,10 @@ Please choose a different name and try again. Pecogrando: - + Auto Aŭtomate - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - Calculate number of pieces: @@ -10154,88 +10731,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: Spurilaj URL-adresoj: - + Comments: - + Source: - + Progress: Progreso: - + Create Torrent - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) Torentdosieroj (*.torrent) - - Reason: %1 - Kial: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Malsukcesis aldoni torenton - + Torrent creator - + Torrent created: @@ -10243,32 +10815,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10276,27 +10848,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10304,14 +10876,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Malvalidaj metadatenoj + Malvalidaj metadatenoj @@ -10339,129 +10905,165 @@ Please choose a different name and try again. Use another path for incomplete torrent - + Uzi alian indikon por nekompleta torento - + Category: Kategorio: - - Torrent speed limits + + Torrent Share Limits - + Download: Elŝuti - - + + ∞ + + + + + Torrent Speed Limits - - + + KiB/s KiB/s - + These will not exceed the global limits - + Upload: Alŝuta: - - Torrent share limits + + Disable DHT for this torrent - - Use global share limit - + + Download in sequential order + Elŝuti en sinsekva ordo - - Set no share limit + + Disable PeX for this torrent - - Set share limit to - + + Download first and last pieces first + Elŝuti la unuan kaj la finan pecojn unue - - ratio + + Disable LSD for this torrent - - total minutes + + Currently used categories - - inactive minutes + + + Choose save path + Elektu la konservan dosierindikon + + + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - Disable DHT for this torrent + + + + + Default + Defaŭlto + + + + + + Unlimited - - Download in sequential order - Elŝuti en sinsekva ordo + + + + Set to + - - Disable PeX for this torrent + + Seeding time: - - Download first and last pieces first + + + + + + + min + minutes + min + + + + Inactive seeding time: - - Disable LSD for this torrent + + Action when the limit is reached: - - Currently used categories + + Stop torrent - - - Choose save path - Elektu la konservan dosierindikon + + Remove torrent + Forigi torenton - - Not applicable to private torrents + + Remove torrent and its content - - No share limit method selected + + Enable super seeding for torrent - - Please select a limit method first + + Ratio: @@ -10473,148 +11075,167 @@ Please choose a different name and try again. - New Tag - + Nova Etikedo - Tag: + Add tag - + + Tag: + Etikedo + + + Invalid tag name - + Malvalida etikednomo - + Tag name '%1' is invalid. - + Tag exists - + Etikedo ekzistas - + Tag name already exists. - + Etikeda nomo jam ekzistas. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name @@ -10640,241 +11261,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - Funkciante + Funkciante - + Disabled - Malebligita + Malebligita - + Disabled for this torrent - + This torrent is private - Ĉi tiu torento estas privata + Ĉi tiu torento estas privata - + N/A - N/A + N/A - + Updating... - Ĝisdatiĝante... + Ĝisdatiĝante... - + Not working - Nefunkciante + Nefunkciante - + Tracker error - + Unreachable - + Not contacted yet - Ne jam kontaktiĝis + Ne jam kontaktiĝis - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol - - Protocol + + Next Announce - - Status - Stato + + Min Announce + + + + + Tier + - Peers - Samtavolanoj + Status + Stato - Seeds - Fontoj + Peers + Samtavolanoj - Leeches - + Seeds + Fontoj - Times Downloaded + Leeches - Message - Mesaĝo - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + Mesaĝo TrackerListWidget - Working - Funkciante - - - Disabled - Malebligita - - - + This torrent is private Ĉi tiu torento estas privata - Updating... - Ĝisdatiĝante... - - - Not working - Nefunkciante - - - Not contacted yet - Ne jam kontaktiĝis - - - N/A - N/A - - - + Tracker editing Spuril-redaktado - + Tracker URL: Spurila URL-adreso: - - + + Tracker editing failed Spuril-redaktado malsukcesis - + The tracker URL entered is invalid. Malvalidas la spurila URL-adreso, kiun vi enigis. - + The tracker URL already exists. Tiu spurila URL-adreso jam ekzistas. - + Edit tracker URL... - + Remove tracker Forigi la spurilon - + Copy tracker URL Kopii la spurilan URL-adreson: - + Force reannounce to selected trackers - - - - - Force reannounce to all trackers - - - - URL - URL - - - Status - Stato + - Seeds - Fontoj + + Force reannounce to all trackers + - + Resize columns - + Resize all non-hidden columns to the size of their contents - Peers - Samtavolanoj - - - + Add trackers... - Message - Mesaĝo - - - + Column visibility @@ -10892,37 +11463,37 @@ Please choose a different name and try again. Listo da spuriloj por aldoni (po unu por linio): - + µTorrent compatible list URL: URL-adreso de listo, kiu kongruas kun µTorrent: - + Download trackers list - + Elŝuti spurila listo - + Add Aldoni - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10930,83 +11501,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Ĉio (0) - - - Trackerless (0) - Senspurila (0) - - - Error (0) - Eraro (0) - - - Warning (0) - Averto (0) - - - Error (%1) - Eraro (%1) - - - + Warning (%1) Averto (%1) - + Trackerless (%1) Senspurila (%1) - + Tracker error (%1) - + Spurila eraro (%1) - + Other error (%1) - + Alia eraro (%1) - + Remove tracker - Forigi la spurilon + Forigi la spurilon + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Reaktivigi la torentojn + Reaktivigi la torentojn - Pause torrents - Paŭzigi la torentojn + Paŭzigi la torentojn - + Remove torrents - + Forigi torentojn - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Ĉio (%1) @@ -11015,7 +11573,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11030,7 +11588,7 @@ Please choose a different name and try again. Categories - + Kategorioj @@ -11108,9 +11666,8 @@ Please choose a different name and try again. Kontrolante reaktivigajn datenojn - Paused - Paŭzinta + Paŭzinta @@ -11135,220 +11692,262 @@ Please choose a different name and try again. Erarinta - + Name i.e: torrent name Nomo - + Size i.e: torrent size Grando - + Progress % Done Progreso - Status Torrent status (e.g. downloading, seeding, paused) - Stato + Stato - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stato + + + Seeds i.e. full sources (often untranslated) Fontoj - + Peers i.e. partial sources (often untranslated) Samtavolanoj - + Down Speed i.e: Download speed Elŝutrapido - + Up Speed i.e: Upload speed Alŝutrapido - + Ratio Share ratio Proporcio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category - + Kategorio - + Tags Etikedoj - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Aldonita je - + Completed On Torrent was completed on 01/01/2010 08:00 Finita je - + Tracker Spurilo - + Down Limit i.e: Download limit Elŝutlimo - + Up Limit i.e: Upload limit Alŝutlimo - + Downloaded Amount of data downloaded (e.g. in MB) Elŝutita - + Uploaded Amount of data uploaded (e.g. in MB) Alŝutita - + Session Download Amount of data downloaded since program open (e.g. in MB) Seanca Elŝuto - + Session Upload Amount of data uploaded since program open (e.g. in MB) Seanca Alŝuto - + Remaining Amount of data left to download (e.g. in MB) Restanta - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktiva tempo + + + + Yes + Jes + + + + No + Ne + + Time Active Time (duration) the torrent is active (not paused) - Aktiva tempo + Aktiva tempo - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Finita - + Ratio Limit Upload share ratio limit Proporci-limo - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Laste trovita plene - + Last Activity Time passed since a chunk was downloaded/uploaded Lasta ago - + Total Size i.e. Size including unwanted data Tuta grando - + Availability The number of distributed copies of the torrent - + Disponeblo - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago antaŭ %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (fontsendis dum %2) @@ -11357,334 +11956,333 @@ Please choose a different name and try again. TransferListWidget - + Column visibility - + Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? Ĉu vi certas, ke vi volas rekontroli la elektita(j)n torento(j)n? - + Rename Renomi... - + New name: Nova nomo: - + Choose save path Elektu la konservan dosierindikon - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Aldoni Etikedojn + Aldoni Etikedojn - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags Forigi Ĉiujn Etikedojn - + Remove all tags from selected torrents? - + Forigi ĉiujn etikedojn per elektitaj torentoj? - + Comma-separated tags: - + Invalid tag - + Tag name: '%1' is invalid - &Resume Resume/start the torrent - &Reaktivigi + &Reaktivigi - &Pause Pause the torrent - &Paŭzigu - - - - Force Resu&me - Force Resume/start the torrent - + &Paŭzigu - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags + &Forigi Ĉiujn + + + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + &Queue - + &Copy - + &Kopii - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Elŝuti en sinsekva ordo - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. - &Remove - Remove the torrent + &Start + Resume/start the torrent - - Download first and last pieces first + + Sto&p + Stop the torrent - - Automatic Torrent Management + + Force Star&t + Force Resume/start the torrent - - Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category + + &Remove + Remove the torrent + &Forigi + + + + Download first and last pieces first + Elŝuti la unuan kaj la finan pecojn unue + + + + Automatic Torrent Management - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking + + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - + Super seeding mode Superfontsendanta reĝimo @@ -11729,28 +12327,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11758,7 +12356,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11789,30 +12392,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python not detected - Pitono netrovita - Found Python executable. Name: "%1". Version: "%2" @@ -11847,27 +12447,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11900,103 +12500,103 @@ Please choose a different name and try again. Watched Folder - + Observita Dosierujo Watched folder path cannot be empty. - + Indiko de la observita dosierujo ne povas malplena. Watched folder path cannot be relative. - + Indiko de la observita dosierujo ne povas relativa. Folder '%1' is already in watch list. - + La dosierujo '%1' jam estas rigarlisto. Folder '%1' doesn't exist. - + La dosierujo '%1' ne ekzistas. Folder '%1' isn't readable. - + La dosierujo '%1' ne legeblas. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Eraro de retservilo. %1 - + Web server error. Unknown error. - + Eraro de retservilo. Nekonata eraro. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12004,138 +12604,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup successful - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + + fs + + + Unknown error + Nekonata eraro + misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) - + PiB - + EiB exbibytes (1024 pebibytes) - + EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1t %2h + %1t %2h - + %1y %2d e.g: 2 years 10 days - %1t %2h {1y?} {2d?} - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1t %2h + %1j %2t - - + + Unknown Unknown (size) Nekonata - + qBittorrent will shutdown the computer now because all downloads are complete. - + qBittorrent malŝaltos la komputilon nun ĉar ĉiuj elŝutojn komplete elŝutis. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_es.ts b/src/lang/qbittorrent_es.ts index ba603c512741..9b1556123853 100644 --- a/src/lang/qbittorrent_es.ts +++ b/src/lang/qbittorrent_es.ts @@ -14,77 +14,77 @@ Acerca de - + Authors Autores - + Current maintainer Encargado actual - + Greece Grecia - - + + Nationality: Nacionalidad: - - + + E-mail: E-mail: - - + + Name: Nombre: - + Original author Autor original - + France Francia - + Special Thanks Agradecimientos especiales - + Translators Traductores - + License Licencia - + Software Used Software utilizado - + qBittorrent was built with the following libraries: qBittorrent fue compilado con las siguientes librerías: - + Copy to clipboard - + Copiar al portapapeles @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 El Proyecto qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 El Proyecto qBittorrent @@ -166,14 +166,13 @@ Guardar en - + Never show again No volver a mostrar - Torrent settings - Propiedades del torrent + Propiedades del torrent @@ -191,12 +190,12 @@ Iniciar torrent - + Torrent information Información del torrent - + Skip hash check No comprobar hash @@ -205,6 +204,11 @@ Use another path for incomplete torrent Usa otra ruta para torrent incompleto + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Condición de parada: - - + + None Ninguno - - + + Metadata received Metadatos recibidos - - + + Torrents that have metadata initially will be added as stopped. + Los torrents que inicialmente tengan metadatos se añadirán como detenidos. + + + + Files checked Archivos verificados - + Add to top of queue Añadir al principio de la cola - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Cuando se marca, el archivo .torrent no se eliminará independientemente de la configuración en la página "Descargar" del cuadro de diálogo Opciones. - + Content layout: Diseño de contenido: - + Original Original - + Create subfolder Crear subcarpeta - + Don't create subfolder No crear subcarpetas - + Info hash v1: Info hash v1: - + Size: Tamaño: - + Comment: Comentario: - + Date: Fecha: @@ -324,246 +333,182 @@ Recordar la última ubicación - + Do not delete .torrent file No eliminar el archivo .torrent - + Download in sequential order Descargar en orden secuencial - + Download first and last pieces first Comenzar por las primeras y últimas partes - + Info hash v2: Info hash v2: - + Select All Seleccionar Todo - + Select None Seleccionar Ninguno - + Save as .torrent file... Guardar como archivo .torrent - + I/O Error Error de I/O - Invalid torrent - Torrent inválido - - - + Not Available This comment is unavailable No disponible - + Not Available This date is unavailable No disponible - + Not available No disponible - Invalid magnet link - Enlace magnet inválido - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Fallo al cargar el torrent: %1 -Error: %2 - - - This magnet link was not recognized - Este enlace magnet no pudo ser reconocido - - - + Magnet link Enlace magnet - + Retrieving metadata... Recibiendo metadatos... - - + + Choose save path Elegir ruta - Torrent is already present - El torrent ya está presente - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - El torrent '%1' ya está en la lista de transferencias. -Los Trackers no fueron fusionados porque el torrent es privado. - - - Torrent is already queued for processing. - El torrent ya está en la cola de procesado. - - - + No stop condition is set. No se establece una condición de parada. - + Torrent will stop after metadata is received. El torrent se detendrá después de que se reciban metadatos. - - Torrents that have metadata initially aren't affected. - Los torrents que tienen metadatos inicialmente no están afectados. - - - + Torrent will stop after files are initially checked. El torrent se detendrá después de que los archivos se verifiquen inicialmente. - + This will also download metadata if it wasn't there initially. Esto también descargará metadatos si no estaba allí inicialmente. - - + + N/A N/A - Magnet link is already queued for processing. - El enlace magnet ya está en la cola de procesado. - - - + %1 (Free space on disk: %2) %1 (Espacio libre en disco: %2) - + Not available This size is unavailable. No disponible - + Torrent file (*%1) Archivo Torrent (*%1) - + Save as torrent file Guardar como archivo torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. No se pudo exportar el archivo de metadatos del torrent '%1'. Razón: %2. - + Cannot create v2 torrent until its data is fully downloaded. No se puede crear el torrent v2 hasta que los datos estén completamente descargados. - Cannot download '%1': %2 - No se puede descargar '%1': %2 - - - + Filter files... Filtrar archivos... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - El torrent '%1' ya está en la lista de transferencia. Los rastreadores no se pueden fusionar porque es un torrent privado. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - El torrent '%1' ya está en la lista de transferencia. ¿Quieres fusionar rastreadores de una nueva fuente? - - - + Parsing metadata... Analizando metadatos... - + Metadata retrieval complete Recepción de metadatos completa - - Failed to load from URL: %1. -Error: %2 - Fallo al cargar de la URL: %1. -Error: %2 - - - Download Error - Error de descarga - AddTorrentManager Downloading torrent... Source: "%1" - + Descargando torrent... Fuente: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Error al agregar el torrent. Fuente: "%1". Razón: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Se a detectado un intento de agregar un torrent duplicado. Origen: %1. Torrent existente: %2. Resultado: %3 - + Merging of trackers is disabled - + La fusión de los rastreadores está desactivada. - + Trackers cannot be merged because it is a private torrent - + Los rastreadores no se pueden fusionar porque es un torrent privado. - + Trackers are merged from new source - + Los rastreadores han sido fusionados desde una nueva fuente @@ -649,72 +594,77 @@ Error: %2 Omitir comprobación de hash - - - Choose save path - Seleccione una ruta de destino + + Torrent share limits + Límites de uso compartido de torrents - - - - - - - Default - Por defecto + + + Choose save path + Seleccione una ruta de destino + + + - Yes - Si + Default + Por defecto + Yes + Si + + + + + No No - + Manual Manual - + Automatic Automático - + Original Original - + Create subfolder Crear subcarpeta - + Don't create subfolder No crear subcarpetas - + None Ninguno - + Metadata received Metadatos recibidos - + Files checked Archivos verificados @@ -722,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Verificar torrents completados - - + + ms milliseconds ms - + Setting Ajustes - + Value Value set for this setting Valor - + (disabled) (deshabilitado) - + (auto) (auto) - + + min minutes min - + All addresses Todas las direcciones - + qBittorrent Section Sección de qBittorrent - - + + Open documentation Abrir documentación - + All IPv4 addresses Todas las direcciones IPv4 - + All IPv6 addresses Todas las direcciones IPv6 - + libtorrent Section Sección de libtorrent - + Fastresume files Archivos de reanudación rápida - + SQLite database (experimental) Base de datos SQLite (experimental) - + Resume data storage type (requires restart) Reanudar el tipo de almacenamiento de datos (requiere reiniciar) - + Normal Normal - + Below normal Debajo de lo normal - + Medium Media - + Low Baja - + Very low Muy baja - - Process memory priority (Windows >= 8 only) - Prioridad de memoria del proceso (Sólo Windows >=8) - - - + Physical memory (RAM) usage limit Límite de uso de la memoria física (RAM) - + Asynchronous I/O threads Hilos I/O asíncronos - + Hashing threads Hilos de hashing - + File pool size Tamaño de la reserva de archivos - + Outstanding memory when checking torrents Exceso de memoria al verificar los torrents - + Disk cache Caché de disco - - - - + + + + s seconds s - + Disk cache expiry interval Intervalo de expiración de la caché de disco - + Disk queue size Tamaño de la cola de disco - - + + Enable OS cache Activar caché del S.O. - + Coalesce reads & writes Combinar lecturas y escrituras - + Use piece extent affinity Usar afinidad de extensión de pieza - + Send upload piece suggestions Enviar sugerencias de piezas a subir - - - - + + + + + 0 (disabled) 0 (desactivado) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Guardar intervalo de datos de continuación [0: desactivado] - + Outgoing ports (Min) [0: disabled] Puertos de salida (Min) [0: desactivado] - + Outgoing ports (Max) [0: disabled] Puertos de salida (Max) [0: desactivado} - + 0 (permanent lease) 0 (cesión permanente) - + UPnP lease duration [0: permanent lease] Duración de la cesión UPnP [0: cesión permanente] - + Stop tracker timeout [0: disabled] Parar el temporizador de tracker [0: desactivado] - + Notification timeout [0: infinite, -1: system default] Cuenta atrás de notificación [0: infinito, -1 por defecto del sistema] - + Maximum outstanding requests to a single peer Máximo de solicitudes pendientes a un único par - - - - - + + + + + KiB KiB - + (infinite) (infinito) - + (system default) (por defecto de sistema) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Esta opción es menos efectiva en Linux - + + Process memory priority + Prioridad de la memoria de proceso + + + Bdecode depth limit Límite de profundidad Bdecode - + Bdecode token limit Límite de token Bdecode - + Default Por defecto - + Memory mapped files Archivos mapeados en memoria - + POSIX-compliant compatible con POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipo de E/S de disco (requiere reiniciar) - - + + Disable OS cache Deshabilitar caché del sistema operativo - + Disk IO read mode Modo de lectura de E/S de disco - + Write-through Escritura por medio de - + Disk IO write mode Modo de escritura de E/S de disco - + Send buffer watermark Enviar buffer watermark - + Send buffer low watermark Enviar buffer lowmark - + Send buffer watermark factor Enviar buffer watermark factor - + Outgoing connections per second Conexiones salientes por segundo - - + + 0 (system default) 0 (por defecto de sistema) - + Socket send buffer size [0: system default] Tamaño de buffer de envío [0: por defecto de sistema] - + Socket receive buffer size [0: system default] Tamaño de buffer de recepción [0: por defecto de sistema] - + Socket backlog size Tamaño del backlog del socket - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Límite de tamaño de archivo .torrent - + Type of service (ToS) for connections to peers Tipo de servicio (ToS) para conexiones a pares - + Prefer TCP Preferir TCP - + Peer proportional (throttles TCP) Proporcional a los pares (ahoga el TCP) - + Support internationalized domain name (IDN) Permitir nombres de dominio internacionalizados (IDN) - + Allow multiple connections from the same IP address Permitir múltiples conexiones de la misma dirección IP - + Validate HTTPS tracker certificates Validar certificados HTTPS del rastreador - + Server-side request forgery (SSRF) mitigation Mitigación de falsificación de solicitudes del lado del servidor (SSRF) - + Disallow connection to peers on privileged ports No permitir la conexión a pares en puertos privilegiados - + + It appends the text to the window title to help distinguish qBittorent instances + Añade el texto al título de la ventana para ayudar a distinguir las instancias de qBittorent + + + + Customize application instance name + Personalizar el nombre de la instancia de la aplicación + + + It controls the internal state update interval which in turn will affect UI updates Controla el intervalo de actualización del estado interno que, a su vez, afectará las actualizaciones de la interfaz de usuario - + Refresh interval Intervalo de actualización - + Resolve peer host names Resolver nombres de host de los pares - + IP address reported to trackers (requires restart) Dirección IP informada a los rastreadores (requiere reiniciar): - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Reanunciar a todos los rastreadores cuando cambia la IP o el puerto - + Enable icons in menus Habilitar iconos en menús - + Enable port forwarding for embedded tracker Habilitar el reenvío de puertos para el rastreador integrado - - (Auto detect if empty) + + Enable quarantine for downloaded files + Habilitar cuarentena para los archivos descargados + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Habilite la Marca de la Web (MOTW) para archivos descargados + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Auto detectar si está vacío) + + + Python executable path (may require restart) + Ruta del ejecutable de Python (puede requerir reinicio) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + seg + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirmar la eliminación del rastreador de todos los torrents + + + Peer turnover disconnect percentage Porcentaje de desconexión de la rotación de pares - + Peer turnover threshold percentage Porcentaje del limite de rotación de pares - + Peer turnover disconnect interval Intervalo de desconexión de rotación de pares - + Resets to default if empty - + Restablece a predeterminados si está vacío - + DHT bootstrap nodes - + Nodos bootstrap DHT - + I2P inbound quantity Cantidad entrante I2P - + I2P outbound quantity Cantidad saliente de I2P - + I2P inbound length Longitud de entrada I2P - + I2P outbound length Longitud de salida I2P - + Display notifications Mostrar notificaciones - + Display notifications for added torrents Mostrar notificaciones para torrents agregados - + Download tracker's favicon Descargar favicon del tracker - + Save path history length Tamaño del historial de rutas de guardado - + Enable speed graphs Activar gráficas de velocidad - + Fixed slots Puestos fijos - + Upload rate based Basado en la vel. de subida - + Upload slots behavior Comportamiento de los puestos de subida - + Round-robin Round-robin - + Fastest upload Subida mas rápida - + Anti-leech Anti-leech - + Upload choking algorithm Algoritmo de bloqueo de subidas - + Confirm torrent recheck Confirmar la verificación del torrent - + Confirm removal of all tags Confirmar la eliminación de todas las etiquetas - + Always announce to all trackers in a tier Siempre anunciar a todos los trackers del nivel - + Always announce to all tiers Siempre anunciar a todos los niveles - + Any interface i.e. Any network interface Cualquier interfaz - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritmo de modo mixto %1-TCP - + Resolve peer countries Resolver el país de los pares - + Network interface Interfaz de red - + Optional IP address to bind to Dirección IP opcional para enlazar - + Max concurrent HTTP announces Aviso de HTTP simultáneo máximo - + Enable embedded tracker Activar tracker integrado - + Embedded tracker port Puerto del tracker integrado - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 iniciado + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Ejecutando en modo portátil. Carpeta de perfil detectada automáticamente en: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Parámetro de línea de comandos redundante detectado: "%1". Modo portable implica recuperación relativamente rápida. - + Using config directory: %1 Usando el directorio de configuración: %1 - + Torrent name: %1 Nombre del torrent: %1 - + Torrent size: %1 Tamaño del torrent: %1 - + Save path: %1 Guardar en: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds El torrernt se descargó en %1. - + + Thank you for using qBittorrent. Gracias por utilizar qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, enviando correo de notificación - + Add torrent failed - + Error al agregar torrent - + Couldn't add torrent '%1', reason: %2. - + No se pudo agregar el torrent '%1', motivo: %2. + + + + The WebUI administrator username is: %1 + El nombre de usuario del administrador de WebUI es: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + La contraseña del administrador de WebUI no fue establecida. Una contraseña temporal fue puesta en esta sesión: %1 + + + + You should set your own password in program preferences. + Debes poner tu propia contraseña en las preferencias del programa. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + ¡La interfaz de usuario web está desactivada! Para habilitar la interfaz de usuario web, edite el archivo de configuración manualmente. - + Running external program. Torrent: "%1". Command: `%2` Ejecutando programa externo. Torrent: "%1". Comando: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` No se pudo ejecutar el programa externo. Torrent: "%1". Comando: `%2` - + Torrent "%1" has finished downloading El torrent "%1" ha terminado de descargarse - + WebUI will be started shortly after internal preparations. Please wait... WebUI se iniciará poco después de los preparativos internos. Espere por favor... - - + + Loading torrents... Cargando torrents... - + E&xit S&alir - + I/O Error i.e: Input/Output Error Error de E/S - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1458,139 +1526,110 @@ Error: %2 Motivo: %2 - Error - Error - - - Failed to add torrent: %1 - No se pudo añadir el torrent: %1 - - - + Torrent added Torrent añadido - + '%1' was added. e.g: xxx.avi was added. Se añadió '%1'. - + Download completed Descarga completada - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' ha terminado de descargarse. - - - URL download error - Error de descarga de URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + Se inició qBittorrent %1. ID de proceso: %2 - Couldn't download file at URL '%1', reason: %2. - No se pudo descargar el archivo en la URL '%1', motivo: %2. + + This is a test email. + - Torrent file association - asociación de archivos torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent no es la aplicación predeterminada para abrir archivos torrent o enlaces Magnet. -¿Quiere que qBittorrent sea la aplicación predeterminada? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' ha terminado de descargarse. - + Information Información - + To fix the error, you may need to edit the config file manually. - + Para solucionar el error, es posible que debas editar el archivo de configuración manualmente. - + To control qBittorrent, access the WebUI at: %1 Para controlar qBittorrent, acceda a WebUI en: %1 - - The Web UI administrator username is: %1 - El nombre de usuario del administrador de la interfaz Web es: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - La contraseña del administrador de la interfaz de usuario web no se ha cambiado de la predeterminada: %1 - - - - This is a security risk, please change your password in program preferences. - Este es un riesgo de seguridad, cambie su contraseña en las preferencias del programa. - - - Application failed to start. - Fallo al iniciar la aplicación. - - - + Exit Salir - + Recursive download confirmation - Confirmación de descargas recursivas + Confirmación de descargas recursivas - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - El torrent '%1' contiene archivos .torrent, ¿Desea continuar con sus descargas? + El torrent '%1' contiene archivos .torrent, ¿Desea continuar con sus descargas? - + Never - Nunca + Nunca - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Archivo .torrent de descarga recursiva dentro de torrent. Torrent de origen: "%1". Archivo: "%2" + Archivo .torrent de descarga recursiva dentro de torrent. Torrent de origen: "%1". Archivo: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" No se pudo establecer el límite de uso de la memoria física (RAM). Código de error: %1. Mensaje de error: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" No se pudo establecer el límite máximo de uso de la memoria (RAM). Tamaño solicitado: %1. Límite estricto del sistema: %2. Código de error: %3. Mensaje de error: "%4" - + qBittorrent termination initiated terminación de qBittorrent iniciada - + qBittorrent is shutting down... qBittorrent se está cerrando... - + Saving torrent progress... Guardando progreso del torrent... - + qBittorrent is now ready to exit qBittorrent ahora está listo para salir @@ -1598,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. No se pudo crear el directorio '%1'. @@ -1606,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI: falló el inicio de sesión. Razón: IP prohibida, IP: %1, usuario: %2 - + Your IP address has been banned after too many failed authentication attempts. Tu dirección IP ha sido bloqueada después múltiples intentos de autenticación fallidos. - + WebAPI login success. IP: %1 WebAPI: inicio de sesión exitoso. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI: falló el inicio de sesión. Razón: credenciales invalidas, intento número: %1, IP: %2, usuario: %3 @@ -1669,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? Prioridad: - + Must Not Contain: No debe contener: - + Episode Filter: Filtro de episodios: @@ -1727,263 +1766,263 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha &Exportar... - + Matches articles based on episode filter. Filtrar artículos en base al filtro de episodios. - + Example: Ejemplo: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match coincidirá con los episodios 2, 5, del 8 al 15, y del 30 en adelante de la temporada uno - + Episode filter rules: Reglas del filtro de episodios: - + Season number is a mandatory non-zero value El número de temporada debe ser distinto de cero - + Filter must end with semicolon El filtro debe finalizar con punto y coma (;) - + Three range types for episodes are supported: Son soportados tres tipos de rango de episodios: - + Single number: <b>1x25;</b> matches episode 25 of season one Un número: <b>1x25;</b> coincidirá con el episodio 25 de la temporada uno - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Un rango: <b>1x25-40;</b> coincidirá con los episodios del 25 al 40 de la temporada uno - + Episode number is a mandatory positive value El número de episodio debe ser un valor positivo - + Rules Reglas - + Rules (legacy) Reglas (antiguas) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Rango infinito: <b>1x25-;</b> coincidirá con los episodios del 25 en adelante de la temporada uno, y todos los episodios de las temporadas siguientes - + Last Match: %1 days ago Última coincidencia: %1 días atrás - + Last Match: Unknown Última coincidencia: Desconocida - + New rule name Nombre de la regla - + Please type the name of the new download rule. Por favor, escriba el nombre de la nueva regla de descarga. - - + + Rule name conflict Conflicto con el nombre de la regla - - + + A rule with this name already exists, please choose another name. Ya existena una regla con este nombre, por favor, elija otro nombre. - + Are you sure you want to remove the download rule named '%1'? ¿Está seguro de querer eliminar la regla de descarga llamada '%1'? - + Are you sure you want to remove the selected download rules? ¿Está seguro que desea eliminar las reglas de descarga seleccionadas? - + Rule deletion confirmation Confirmar la eliminación de la regla - + Invalid action Acción no válida - + The list is empty, there is nothing to export. La lista está vacía, no hay nada para exportar. - + Export RSS rules Exportar reglas RSS - + I/O Error Error de I/O - + Failed to create the destination file. Reason: %1 No se pudo crear el archivo de destino. Razón: %1 - + Import RSS rules Importar reglas RSS - + Failed to import the selected rules file. Reason: %1 No se pudo importar el archivo de reglas seleccionado. Razón: %1 - + Add new rule... Agregar nueva regla... - + Delete rule Eliminar regla - + Rename rule... Renombrar regla... - + Delete selected rules Eliminar reglas seleccionadas - + Clear downloaded episodes... Limpiar episodios descargados... - + Rule renaming Renombrando regla - + Please type the new rule name Por favor, escriba el nombre de la nueva regla - + Clear downloaded episodes Limpiar episodios descargados - + Are you sure you want to clear the list of downloaded episodes for the selected rule? ¿Está seguro que desea limpiar la lista de episodios descargados de la regla seleccionada? - + Regex mode: use Perl-compatible regular expressions Modo Regex: usar expresiones regulares compatibles con Perl - - + + Position %1: %2 Posición %1: %2 - + Wildcard mode: you can use Modo comodín: puedes usar - - + + Import error Error al importar - + Failed to read the file. %1 Error al leer el archivo. %1 - + ? to match any single character ? para coincidir cualquier carácter - + * to match zero or more of any characters * para coincidir cero o más de cualquier carácter - + Whitespaces count as AND operators (all words, any order) Los espacios cuentan como operadores AND (todas las palabras, cualquier orden) - + | is used as OR operator | es usado como operador OR - + If word order is important use * instead of whitespace. Si el orden de las palabras es importante use * en vez de espacios. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Una expresión con una cláusula %1 vacía (p.ej. %2) - + will match all articles. coincidirá con todos los artículos. - + will exclude all articles. excluirá todos los artículos. @@ -2025,53 +2064,58 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" No se pudo crear una carpeta de reanudación del torrent: "%1" - + Cannot parse resume data: invalid format No se puede analizar los datos de reanudación: formato inválido - - + + Cannot parse torrent info: %1 No se puede analizar la información del torrent: %1 - + Cannot parse torrent info: invalid format No se puede analizar la información del torrent: formato inválido - + + Mismatching info-hash detected in resume data + Se detectó hash de información no coincidente en los datos del resumen + + + Couldn't save torrent metadata to '%1'. Error: %2. No se pudieron guardar los metadatos de torrent en '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. No se pudieron guardar los datos de reanudación de torrent en '%1'. Error: %2. - + Couldn't load torrents queue: %1 No se pudo cargar la cola de torrents: %1 - + Cannot parse resume data: %1 No se puede analizar los datos de reanudación: %1 - + Resume data is invalid: neither metadata nor info-hash was found Los datos del reanudación no son válidos: no se encontraron metadatos ni informacion de hash - + Couldn't save data to '%1'. Error: %2 No se pudo guardar los datos en '%1'. Error: %2 @@ -2079,38 +2123,38 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha BitTorrent::DBResumeDataStorage - + Not found. No encontrado. - + Couldn't load resume data of torrent '%1'. Error: %2 No se pudieron cargar los datos de reanudación del torrent '%1'. Error: %2 - - + + Database is corrupted. La base de datos está dañada. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. No se pudo habilitar el modo de registro diario Write-Ahead Logging (WAL). Error: %1. - + Couldn't obtain query result. No se pudo obtener el resultado de la consulta. - + WAL mode is probably unsupported due to filesystem limitations. El modo WAL probablemente no sea compatible debido a las limitaciones del sistema de archivos. - + Couldn't begin transaction. Error: %1 No se pudo iniciar la transacción. Error: %1 @@ -2118,22 +2162,22 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. No se pudieron guardar los metadatos del torrent. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 No se pudieron almacenar los datos de reanudación del torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 No se pudieron borrar los datos de reanudación del torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 No se pudieron almacenar las posiciones de la cola de torrents. Error: %1 @@ -2141,586 +2185,620 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Soporte de tabla hash distribuida (DHT): %1 - - - - - - - - - + + + + + + + + + ON ON - - - - - - - - - + + + + + + + + + OFF OFF - - + + Local Peer Discovery support: %1 Soporte de deteccion local de pares: %1 - + Restart is required to toggle Peer Exchange (PeX) support Es necesario reiniciar para alternar la compatibilidad de Intercambio entre pares (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Error al reanudar el torrent. Torrent: "%1". Razón: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" No se pudo reanudar el torrent: detectado un ID de torrent inconsistente. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Detectado datos incoherentes: falta la categoría en el archivo de configuración. La categoría se recuperará pero su configuración se restablecerá a los valores predeterminados. Torrent: "%1". Categoría: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Detectado datos incoherentes: categoría inválida. Torrent: "%1". Categoría: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Detectada una discrepancia entre las rutas de guardado de la categoría recuperada y la ruta de guardado actual del torrent. El torrent ahora está en modo Manual. Torrent: "%1". Categoría: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Detectados datos incoherentes: falta la etiqueta en el archivo de configuración. Se recuperará la etiqueta. Torrent: "%1". Etiqueta: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Detectado datos incoherentes: etiqueta inválida. Torrent: "%1". Etiqueta: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Se detectó un evento de reactivación del sistema. Reanunciar a todos los rastreadores... - + Peer ID: "%1" ID de par: "%1" - + HTTP User-Agent: "%1" Agente de Usuario HTTP: "%1" - + Peer Exchange (PeX) support: %1 Soporte con intercambio entre pares (PeX): %1 - - + + Anonymous mode: %1 Modo Anónimo: %1 - - + + Encryption support: %1 Soporte de cifrado: %1 - - + + FORCED FORZADO - + Could not find GUID of network interface. Interface: "%1" No se pudo encontrar el GUID de la interfaz de red. Interfaz: "%1" - + Trying to listen on the following list of IP addresses: "%1" Intentando escuchar en la siguiente lista de direcciones IP: "%1" - + Torrent reached the share ratio limit. El Torrent alcanzó el límite de proporción de acciones. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent eliminado. + Torrent eliminado. - - - Removed torrent and deleted its content. - Eliminado el torrent y su contenido. + Eliminado el torrent y su contenido. - - - Torrent paused. - Torrent pausado. + Torrent pausado. - - - + Super seeding enabled. Super siembra habilitado. - + Torrent reached the seeding time limit. El Torrent alcanzó el límite de tiempo de siembra. - + Torrent reached the inactive seeding time limit. El torrent alcanzó el límite de tiempo de siembra inactiva. - + Failed to load torrent. Reason: "%1" Error al cargar torrent. Razón: "%1" - + I2P error. Message: "%1". + Error I2P. Mensaje: "%1". + + + + UPnP/NAT-PMP support: ON + Soporte UPNP/NAT-PMP: ENCENDIDO + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Descargando torrent, espere... Fuente: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Error al cargar torrent. Fuente: "%1". Razón: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Se detectó un intento de añadir un torrent duplicado. La combinación de rastreadores está deshabilitada. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Se detectó un intento de añadir un torrent duplicado. Los rastreadores no se pueden fusionar porque es un torrent privado. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Se detectó un intento de añadir un torrent duplicado. Los rastreadores se fusionan desde una nueva fuente. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Soporte UPNP/NAT-PMP: ENCENDIDO + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Soporte UPNP/NAT-PMP: APAGADO + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Error al exportar torrent. Torrent: "%1". Destino: "%2". Razón: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Se canceló el guardado de los datos reanudados. Número de torrents pendientes: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + La fusión de los rastreadores está desactivada. + + + + Trackers cannot be merged because it is a private torrent + Los rastreadores no se pueden fusionar porque es un torrent privado. - System network status changed to %1 - e.g: System network status changed to ONLINE - El estado de la red del equipo cambió a %1 + + Trackers are merged from new source + Los rastreadores han sido fusionados desde una nueva fuente - ONLINE - EN LÍNEA + + UPnP/NAT-PMP support: OFF + Soporte UPNP/NAT-PMP: APAGADO - OFFLINE - FUERA DE LÍNEA + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Error al exportar torrent. Torrent: "%1". Destino: "%2". Razón: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - La configuración de red de %1 ha cambiado, actualizando el enlace de sesión + + Aborted saving resume data. Number of outstanding torrents: %1 + Se canceló el guardado de los datos reanudados. Número de torrents pendientes: %1 - + The configured network address is invalid. Address: "%1" La dirección de red configurada no es válida. Dirección: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" No se pudo encontrar la dirección de red configurada para escuchar. Dirección: "%1" - + The configured network interface is invalid. Interface: "%1" La interfaz de red configurada no es válida. Interfaz: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Dirección IP no válida rechazada al aplicar la lista de direcciones IP prohibidas. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Añadido rastreador a torrent. Torrent: "%1". Rastreador: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Rastreador eliminado de torrent. Torrent: "%1". Rastreador: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Se añadió semilla de URL a torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Se eliminó la semilla de URL de torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent pausado. Torrent: "%1" + Torrent pausado. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent reanudado. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Descarga de torrent finalizada. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Movimiento de torrent cancelado. Torrent: "%1". Origen: "%2". Destino: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination No se pudo poner en cola el movimiento de torrent. Torrent: "%1". Origen: "%2". Destino: "%3". Motivo: El torrent se está moviendo actualmente al destino - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location No se pudo poner en cola el movimiento del torrent. Torrent: "%1". Origen: "%2" Destino: "%3". Motivo: ambos caminos apuntan a la misma ubicación - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Movimiento de torrent en cola. Torrent: "%1". Origen: "%2". Destino: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Empezar a mover el torrent. Torrent: "%1". Destino: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" No se pudo guardar la configuración de Categorías. Archivo: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" No se pudo analizar la configuración de categorías. Archivo: "%1". Error: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Archivo .torrent de descarga recursiva dentro de torrent. Torrent de origen: "%1". Archivo: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - No se pudo cargar el archivo .torrent dentro del torrent. Torrent de origen: "%1". Archivo: "%2". Error: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Se analizó con éxito el archivo de filtro de IP. Número de reglas aplicadas: %1 - + Failed to parse the IP filter file No se pudo analizar el archivo de filtro de IP - + Restored torrent. Torrent: "%1" Torrent restaurado. Torrent: "%1" - + Added new torrent. Torrent: "%1" Añadido nuevo torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent con error. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - Torrent eliminado. Torrent: "%1" + Torrent eliminado. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Se eliminó el torrent y se eliminó su contenido. Torrent: "%1" + Se eliminó el torrent y se eliminó su contenido. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Al Torrent le faltan parámetros SSL. Torrent: "%1". Mensaje: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Advertencia de error de archivo. Torrent: "%1". Archivo: "%2". Motivo: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" La asignación de puertos UPnP/NAT-PMP falló. Mensaje: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" La asignación de puertos UPnP/NAT-PMP se realizó correctamente. Mensaje: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtro de IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). puerto filtrado (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). puerto privilegiado (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + La sesión de BitTorrent encontró un error grave. Razón: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Error de proxy SOCKS5. Dirección: %1. Mensaje: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restricciones de modo mixto - + Failed to load Categories. %1 Error al cargar las Categorías. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Error al cargar la configuración de Categorías. Archivo: "%1". Error: "Formato de datos inválido" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Se eliminó el torrent pero no se pudo eliminar su contenido o su fichero .part. Torrent: "%1". Error: "%2" + Se eliminó el torrent pero no se pudo eliminar su contenido o su fichero .part. Torrent: "%1". Error: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 está deshabilitado - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 está deshabilitado - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Falló la búsqueda de DNS inicial de URL. Torrent: "%1". URL: "%2". Error: "%3" + Falló la búsqueda de DNS inicial de URL. Torrent: "%1". URL: "%2". Error: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Mensaje de error recibido de semilla de URL. Torrent: "%1". URL: "%2". Mensaje: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Escuchando con éxito en IP. IP: "%1". Puerto: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Error al escuchar en IP. IP: "%1". Puerto: "%2/%3". Motivo: "%4" - + Detected external IP. IP: "%1" IP externa detectada. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Error: La cola de alerta interna está llena y las alertas se descartan, es posible que vea un rendimiento degradado. Tipo de alerta descartada: "%1". Mensaje: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent movido con éxito. Torrent: "%1". Destino: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" No se pudo mover el torrent. Torrent: "%1". Origen: "%2". Destino: "%3". Razón: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operación abortada - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Error al crear un nuevo archivo torrent. Razón: %1. + + Failed to start seeding. + Fallo al iniciar el sembrado. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operación abortada + Operación abortada + + Create new torrent file failed. Reason: %1. - Error al crear un nuevo archivo torrent. Razón: %1. + Error al crear un nuevo archivo torrent. Razón: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 No se pudo añadir el par "%1" al torrent "%2". Razón: %3 - + Peer "%1" is added to torrent "%2" El par "%1" se añade al torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Datos inesperados detectados. Torrent: %1. Datos: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. No se pudo escribir en el archivo. Razón: "%1". El torrent ahora está en modo "solo subida". - + Download first and last piece first: %1, torrent: '%2' Descargar el primero y último fragmento: %1, torrent: '%2' - + On Activado - + Off Desactivado - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Fallo al recargar el torrent. Torrent: %1. Razón: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Reanudar los datos erroneos generados. Torrent: "%1". Razón: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Error al restaurar el torrent. Probablemente los archivos se movieron o no se puede acceder al almacenamiento. Torrent: "%1". Razón: "%2" - + Missing metadata Faltan metadatos - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Error al cambiar el nombre del archivo. Torrent: "%1", archivo: "%2", motivo: "%3" - + Performance alert: %1. More info: %2 Alerta de rendimiento: %1. Más información: %2 @@ -2741,184 +2819,198 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' El parámetro '%1' debe seguir la sintaxis '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' El parámetro '%1' debe seguir la sintaxis '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Esperado un número entero en la variable del entorno '%1', pero se obtuvo '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - El parámetro '%1' debe seguir la sintaxis '%1=%2' + El parámetro '%1' debe seguir la sintaxis '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Esperado %1 en la variable del entorno '%2', pero se obtuvo '%3' - - + + %1 must specify a valid port (1 to 65535). %1 debe especificar un puerto válido (entre 1 y 65535). - + Usage: Uso: - + [options] [(<filename> | <url>)...] [opciones] [(<filename> | <url>)...] - + Options: Opciones: - + Display program version and exit Muestra la versión del programa y sale - + Display this help message and exit Muestra este mensaje de ayuda y sale - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + El parámetro '%1' debe seguir la sintaxis '%1=%2' + + + + Confirm the legal notice + Confirmar el aviso legal + + + + port puerto - - Change the Web UI port - Cambia el puerto de la interfaz Web + + Change the WebUI port + Cambiar el puerto de WebUI - + Change the torrenting port Cambiar el puerto del torrente - + Disable splash screen Desactivar pantalla de inicio - + Run in daemon-mode (background) Ejecutar en modo servicio (segundo plano) - + dir Use appropriate short form or abbreviation of "directory" ruta - + Store configuration files in <dir> Guardar archivos de configuración en <dir> - - + + name nombre - + Store configuration files in directories qBittorrent_<name> Guardar archivos de configuración en direcciones qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Modificar los archivos de continuación rápida de libtorrent y hacer las rutas relativas a la ruta del perfil. - + files or URLs archivos o URLs - + Download the torrents passed by the user Descarga los torrents pasados por el usuario - + Options when adding new torrents: Opciones cuando agregue nuevos torrents: - + path ruta - + Torrent save path Ruta de destino del Torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Agregar torrents iniciados o pausados + Agregar torrents iniciados o pausados - + Skip hash check Omitir comprobación de hash - + Assign torrents to category. If the category doesn't exist, it will be created. Asignar torrents a la categoría. Si la categoría no existe, será creada. - + Download files in sequential order Descargar archivos en orden secuencial - + Download first and last pieces first Descargar antes primeras y últimas partes - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Especifica si el dialogo de "Agregar torrent" se abre al agregar un torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Valores opcionales pueden ser provistos por variables del entorno. Para la opción llamada 'parameter-name', la variable del entorno se llama 'QBT_PARAMETER_NAME' (en mayúsculas y '-' es reemplazado por '_'). Para pasar valores de bandera, defina la variable como '1' o 'TRUE'. Por Ej: para desactivar la pantalla de inicio: - + Command line parameters take precedence over environment variables Los parámetros de linea de comandos tienen prioridad sobre las variables del entorno - + Help Ayuda @@ -2926,17 +3018,17 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha CategoryFilterModel - + Categories Categorías - + All Todos - + Uncategorized Sin categorizar @@ -2970,13 +3062,21 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha - Resume torrents - Continuar torrents + Start torrents + + Stop torrents + + + + Resume torrents + Continuar torrents + + Pause torrents - Pausar torrents + Pausar torrents @@ -2987,15 +3087,20 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha ColorWidget - + Edit... Editar... - + Reset Descategorizar + + + System + + CookiesDialog @@ -3036,12 +3141,12 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha CustomThemeSource - + Failed to load custom theme style sheet. %1 No se pudo cargar la hoja de estilo del tema personalizado. %1 - + Failed to load custom theme colors. %1 No se pudieron cargar los colores del tema personalizado. %1 @@ -3049,7 +3154,7 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha DefaultThemeSource - + Failed to load default theme colors. %1 Error al cargar los colores del tema predeterminado. %1 @@ -3068,23 +3173,27 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha + Also remove the content files + + + Also permanently delete the files - También eliminar permanentemente los archivos. + También eliminar permanentemente los archivos. - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? ¿Seguro que desea eliminar '%1' de la lista de transferencias? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? ¿Seguro que desea eliminar estos %1 torrents de la lista de transferencias? - + Remove Eliminar @@ -3097,12 +3206,12 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha Descargar de URLs - + Add torrent links Agregar enlaces torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Un enlace por línea (pueden ser enlaces HTTP, enlaces magnet o info-hashes) @@ -3112,12 +3221,12 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha Descargar - + No URL entered No ha escrito ninguna URL - + Please type at least one URL. Por favor escriba al menos una URL. @@ -3276,64 +3385,91 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha Error de análisis: El archivo de filtros no es un P2B valido de PeerGuardian. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Descargando torrent... Fuente: "%1" - Trackers cannot be merged because it is a private torrent - + Los rastreadores no se pueden fusionar porque es un torrent privado. - + Torrent is already present - El torrent ya está presente + El torrent ya está presente + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - El torrent '%1' ya está en la lista de transferencia. ¿Quieres fusionar rastreadores de una nueva fuente? + El torrent '%1' ya está en la lista de transferencia. ¿Quieres fusionar rastreadores de una nueva fuente? GeoIPDatabase - - + + Unsupported database file size. El tamaño del archivo de base de datos no es soportado. - + Metadata error: '%1' entry not found. Error de metadatos: no se encontró la entrada '%1'. - + Metadata error: '%1' entry has invalid type. Error de metadatos: la entrada '%1' tiene un tipo invalido. - + Unsupported database version: %1.%2 Versión de base de datos no soportada: %1.%2 - + Unsupported IP version: %1 Versión de IP no soportada: %1 - + Unsupported record size: %1 Tamaño del registro no soportado: %1 - + Database corrupted: no data section found. Base de datos corrupta: no se encontró la sección de datos. @@ -3341,17 +3477,17 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 El tamaño de la solicitud Http excede la limitación, cerrando el socket. Límite:% 1, IP:% 2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Mal método de solicitud Http, cerrando socket. IP: %1. Método: "%2" - + Bad Http request, closing socket. IP: %1 Petición HTTP errónea, cerrando socket. IP: %1 @@ -3392,36 +3528,64 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha IconWidget - + Browse... Examinar... - + Reset Descategorizar - + Select icon Seleccione icono - + Supported image files Ficheros de imagen soportados + + LegalNotice + + + Legal Notice + Aviso Legal + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent es un programa para compartir archivos. Cuando se descarga un torrent, los datos del mismo se pondrán a disposición de los demás usuarios por medio de las subidas. Cualquier contenido que usted comparta, lo hace bajo su propia responsabilidad. + + + + No further notices will be issued. + No se le volverá a notificar sobre esto. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Si ha leído el aviso legal, puede usar la opción de línea de comando `--confirm-legal-notice` para suprimir este mensaje. + + + + Press 'Enter' key to continue... + Presione la tecla 'Enter' para continuar... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 fue bloqueado. Razón: %2. - + %1 was banned 0.0.0.0 was banned %1 ha sido vetado @@ -3430,91 +3594,62 @@ Admite los formatos: S01E01, 1x1, 2017.12.31 y 31.12.2017 (los formatos de fecha Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 es un parámetro de la línea de comandos desconocido. - - + + %1 must be the single command line parameter. %1 debe ser el único parámetro de la línea de comandos. - - You cannot use %1: qBittorrent is already running for this user. - No puedes usar %1: qBittorrent ya se está ejecutando para este usuario. - - - + Run application with -h option to read about command line parameters. Ejecuta la aplicación con la opción -h para obtener información sobre los parámetros de la línea de comandos. - + Bad command line Parámetros de la línea de comandos incorrectos - + Bad command line: Parámetros de la línea de comandos incorrectos: - + An unrecoverable error occurred. - + Se produjo un error irrecuperable. - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent ha encontrado un error irrecuperable. - - Legal Notice - Aviso legal - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent es un programa para compartir archivos. Cuando se descarga un torrent, los datos del mismo se pondrán a disposición de los demás usuarios por medio de las subidas. Cualquier contenido que usted comparta, lo hace bajo su propia responsabilidad. - - - - No further notices will be issued. - No se le volverá a notificar sobre esto. - - - - Press %1 key to accept and continue... - Pulse la tecla %1 para aceptar y continuar... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent es un programa para compartir archivos. Cuando se descarga un torrent, los datos del mismo se pondrán a disposición de los demás usuarios por medio de las subidas. Cualquier contenido que usted comparta, lo hace bajo su propia responsabilidad. - -No se le volverá a notificar sobre esto. + + You cannot use %1: qBittorrent is already running. + No puedes usar %1: qBittorrent ya se está ejecutando. - - Legal notice - Aviso legal + + Another qBittorrent instance is already running. + Ya se está ejecutando otra instancia de qBittorrent. - - Cancel - Cancelar + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Se encontró una instancia inesperada de qBittorrent. Saliendo de esta instancia. ID del proceso actual: %1. - - I Agree - Estoy de acuerdo + + Error when daemonizing. Reason: "%1". Error code: %2. + Error al demonizar. Motivo: "%1". Código de error: %2. @@ -3525,622 +3660,707 @@ No se le volverá a notificar sobre esto. &Editar - + &Tools &Herramientas - + &File &Archivo - + &Help A&yuda - + On Downloads &Done Al finalizar las &descargas - + &View &Ver - + &Options... &Opciones... - &Resume - &Continuar + &Continuar - + &Remove &Eliminar - + Torrent &Creator &Crear torrent - - + + Alternative Speed Limits Límites de velocidad alternativos - + &Top Toolbar &Barra de herramientas - + Display Top Toolbar Mostrar barra de herramientas - + Status &Bar Barra de estado - + Filters Sidebar Barra lateral de filtros - + S&peed in Title Bar &Velocidad en la barra de título - + Show Transfer Speed in Title Bar Mostrar Velocidad de Transferencia en la Barra de Título - + &RSS Reader Lector &RSS - + Search &Engine Motor de Búsqu&eda - + L&ock qBittorrent Bl&oquear qBittorrent - + Do&nate! Do&nar! - + + Sh&utdown System + + + + &Do nothing &No hacer nada - + Close Window Cerrar ventana - R&esume All - R&eanudar todos + R&eanudar todos - + Manage Cookies... Administrar Cookies... - + Manage stored network cookies Administrar cookies de red almacenadas - + Normal Messages Mensajes Normales - + Information Messages Mensajes de Información - + Warning Messages Mensajes de advertencias - + Critical Messages Mensajes Críticos - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Establecer límites de velocidad globales... - + Bottom of Queue Final de la cola - + Move to the bottom of the queue Mover al final de la cola - + Top of Queue Principio de la cola - + Move to the top of the queue Mover al principio de la cola - + Move Down Queue Bajar en la cola - + Move down in the queue Bajar en la cola - + Move Up Queue Subir en la cola - + Move up in the queue Subir en la cola - + &Exit qBittorrent Salir de &qBittorrent - + &Suspend System &Suspender Equipo - + &Hibernate System &Hibernar Equipo - S&hutdown System - &Apagar Equipo + &Apagar Equipo - + &Statistics E&stadísticas - + Check for Updates Buscar actualizaciones - + Check for Program Updates Buscar actualizaciones del programa - + &About &Acerca de - &Pause - &Pausar + &Pausar - P&ause All - Pa&usar todos + Pa&usar todos - + &Add Torrent File... &Agregar archivo torrent... - + Open Abrir - + E&xit &Salir - + Open URL Abrir URL - + &Documentation &Documentación - + Lock Bloquear - - - + + + Show Mostrar - + Check for program updates Buscar actualizaciones del programa - + Add Torrent &Link... Agregar &enlace torrent... - + If you like qBittorrent, please donate! Si le gusta qBittorrent, por favor realice una donación! - - + + Execution Log Log - + Clear the password Borrar la contraseña - + &Set Password &Establecer Contraseña - + Preferences Preferencias - + &Clear Password Limpiar C&ontraseña - + Transfers Transferencias - - + + qBittorrent is minimized to tray qBittorrent fue minimizado al área de notificación - - - + + + This behavior can be changed in the settings. You won't be reminded again. Este comportamiento puede ser cambiado en las opciones. No se le recordará nuevamente. - + Icons Only Solo iconos - + Text Only Solo texto - + Text Alongside Icons Texto al lado de los iconos - + Text Under Icons Texto debajo de los iconos - + Follow System Style Usar estilo del equipo - - + + UI lock password Contraseña de bloqueo - - + + Please type the UI lock password: Por favor, escriba la contraseña de bloqueo: - + Are you sure you want to clear the password? ¿Seguro que desea borrar la contraseña? - + Use regular expressions Usar expresiones regulares - - Search - Buscar + + + Search Engine + Motor de búsqueda - - Transfers (%1) - Transferencias (%1) + + Search has failed + La búsqueda ha fallado - Recursive download confirmation - Confirmación de descargas recursivas + + Search has finished + - Never - Nunca + + Search + Buscar + + + + Transfers (%1) + Transferencias (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent ha sido actualizado y debe ser reiniciado para que los cambios sean efectivos. - + qBittorrent is closed to tray qBittorrent fue cerrado al área de notificación - + Some files are currently transferring. Algunos archivos aún están transfiriéndose. - + Are you sure you want to quit qBittorrent? ¿Está seguro de que quiere cerrar qBittorrent? - + &No &No - + &Yes &Sí - + &Always Yes S&iempre sí - + Options saved. Opciones guardadas. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime Falta el intérprete de Python - + qBittorrent Update Available Actualización de qBittorrent disponible - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python es necesario para utilizar el motor de búsqueda pero no parece que esté instalado. ¿Desea instalarlo ahora? - + Python is required to use the search engine but it does not seem to be installed. Python es necesario para utilizar el motor de búsqueda pero no parece que esté instalado. - - + + Old Python Runtime Intérprete de Python antiguo - + A new version is available. Hay una nueva versión disponible. - + Do you want to download %1? ¿Desea descargar %1? - + Open changelog... Abrir el registro de cambios... - + No updates available. You are already using the latest version. No hay actualizaciones disponibles. Ya está utilizando la versión mas reciente. - + &Check for Updates &Buscar actualizaciones - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Tu versión de Python (%1) está desactualizada. Requisito mínimo: %2. ¿Quieres instalar una versión más reciente ahora? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Tu versión de Python (%1) está desactualizada. Actualice a la última versión para que los motores de búsqueda funcionen. Requisito mínimo: %2. - + + Paused + Pausado + + + Checking for Updates... Buscando actualizaciones... - + Already checking for program updates in the background Ya se están buscando actualizaciones del programa en segundo plano - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Error de descarga - Python setup could not be downloaded, reason: %1. Please install it manually. - La instalación de Python no se pudo realizar, la razón: %1. + La instalación de Python no se pudo realizar, la razón: %1. Por favor, instálelo de forma manual. - - + + Invalid password Contraseña no válida - + Filter torrents... Filtrar torrents... - + Filter by: Filtrar por: - + The password must be at least 3 characters long La contraseña debe tener al menos 3 caracteres - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - El torrent '%1' contiene archivos .torrent, ¿Desea continuar con sus descargas? - - - + The password is invalid La contraseña no es válida - + DL speed: %1 e.g: Download speed: 10 KiB/s Vel. descarga: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Vel. subida: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [B: %1, S: %2] qBittorrent %3 - - - + Hide Ocultar - + Exiting qBittorrent Cerrando qBittorrent - + Open Torrent Files Abrir archivos torrent - + Torrent Files Archivos torrent @@ -4201,133 +4421,133 @@ Por favor, instálelo de forma manual. Net::DownloadHandlerImpl - - + + I/O Error: %1 Error de E/S: %1 - + The file size (%1) exceeds the download limit (%2) El tamaño del archivo (%1) supera el límite de descarga (%2) - + Exceeded max redirections (%1) Redirecciones máximas excedidas (%1) - + Redirected to magnet URI Redirigido al URI magnético - + The remote host name was not found (invalid hostname) No se encontró el nombre de host remoto (nombre de host no válido) - + The operation was canceled La operación ha sido cancelada - + The remote server closed the connection prematurely, before the entire reply was received and processed El servidor remoto cerró la conexión antes de tiempo, antes de que se recibiera y procesara la respuesta completa - + The connection to the remote server timed out La conexión con el servidor remoto ha expirado - + SSL/TLS handshake failed Fallo en la negociación SSL/TLS - + The remote server refused the connection El servidor remoto ha rechazado la conexión - + The connection to the proxy server was refused La conexión al servidor proxy ha sido rechazada - + The proxy server closed the connection prematurely El servidor proxy cerró la conexión antes de tiempo - + The proxy host name was not found No se encontró el nombre del host proxy - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Se agotó el tiempo de conexión con el proxy o el proxy no respondió a tiempo a la solicitud enviada - + The proxy requires authentication in order to honor the request but did not accept any credentials offered El proxy requiere autenticación para completar la petición, pero no acepta las credenciales ofrecidas - + The access to the remote content was denied (401) El acceso al contenido remoto ha sido rechazado (401) - + The operation requested on the remote content is not permitted No se permite la operación solicitada sobre el contenido remoto - + The remote content was not found at the server (404) El contenido remoto no se encontró en el servidor (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted El servidor remoto requiere autenticación para servir el contenido, pero las credenciales introducidas no fueron aceptadas - + The Network Access API cannot honor the request because the protocol is not known La API de acceso a red no puede realizar la petición porque el protocolo es desconocido - + The requested operation is invalid for this protocol La operación solicitada no es válida para este protocolo - + An unknown network-related error was detected Se ha detectado un error desconocido relacionado con la red - + An unknown proxy-related error was detected Se ha detectado un error desconocido relacionado con el proxy - + An unknown error related to the remote content was detected Un error desconocido relacionado con el contenido remoto fue detectado - + A breakdown in protocol was detected Una violación de protocolo fue detectada - + Unknown error Error desconocido @@ -4335,7 +4555,12 @@ Por favor, instálelo de forma manual. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorando error SSL, URL: "%1", errores: "%2" @@ -5707,294 +5932,307 @@ Por favor, instálelo de forma manual. BitTorrent - + RSS RSS - Web UI - Interfaz Web + Interfaz Web - + Advanced Avanzado - + Customize UI Theme... Personalizar tema de IU... - + Transfer List Lista de transferencias - + Confirm when deleting torrents Confirmar al eliminar torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - Muestra un cuadro de diálogo de confirmación al pausar/reanudar todos los torrents + Muestra un cuadro de diálogo de confirmación al pausar/reanudar todos los torrents - Confirm "Pause/Resume all" actions - Confirmar acciones de "Pausar/Reanudar todo" + Confirmar acciones de "Pausar/Reanudar todo" - + Use alternating row colors In table elements, every other row will have a grey background. Alternar colores en la lista de transferencias - + Hide zero and infinity values Ocultar los valores cero e infinito - + Always Siempre - Paused torrents only - Solo torrents pausados + Solo torrents pausados - + Action on double-click Acción a realizar con un doble-click - + Downloading torrents: Torrents descargando: - - Start / Stop Torrent - Iniciar / Parar torrent + Iniciar / Parar torrent - - + + Open destination folder Abrir carpeta de destino - - + + No action Sin acción - + Completed torrents: Torrents completados: - + Auto hide zero status filters Auto ocultar filtros de estado cero - + Desktop Escritorio - + Start qBittorrent on Windows start up Iniciar qBittorrent cuando arranque Windows - + Show splash screen on start up Mostrar pantalla de bienvenida al iniciar - + Confirmation on exit when torrents are active Confirmación al salir mientras haya torrents activos - + Confirmation on auto-exit when downloads finish Confirmar la salida automática cuando las descargas finalicen - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Para configurar qBittorrent como programa predeterminado para archivos .torrent y/o enlaces Magnet<br/> puede usar el cuadro de diálogo de <span style=" font-weight:600;">Programas predeterminados</span> del <span style=" font-weight:600;">Panel de Control</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Diseño de contenido de torrent: - + Original Original - + Create subfolder Crear subcarpeta - + Don't create subfolder No crear subcarpeta - + The torrent will be added to the top of the download queue El torrent se añadirá al principio de la cola de descarga. - + Add to top of queue The torrent will be added to the top of the download queue Añadir al principio de la cola - + When duplicate torrent is being added Cuando se añade un torrent duplicado - + Merge trackers to existing torrent Fusionar rastreadores a un torrent existente - + + Keep unselected files in ".unwanted" folder + Mantén los archivos no seleccionados en la carpeta ".unwanted" + + + Add... Añadir... - + Options.. Opciones.. - + Remove Eliminar - + Email notification &upon download completion Notificarme por correo electrónico de la finalización de las descargas - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protocolo de conexión entre pares: - + Any Ninguno - + I2P (experimental) I2P (experimental) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>si &quot;modo mixto&quot; está activado se permite a los torrents I2P buscar pares de otras fuentes que el tracker, y conectar a direcciones IP corrientes, sin aportar ninguna anonimización. Esto puede ser útil si el usuario no está interesado en la anonimización deI2P, pero todavía quiere poder conectar a pares I2P</p></body></html> + <html><head/><body><p>si &quot;modo mixto&quot; está activado se permite a los torrents I2P buscar pares de otras fuentes que el tracker, y conectar a direcciones IP corrientes, sin aportar ninguna anonimización. Esto puede ser útil si el usuario no está interesado en la anonimización deI2P, pero todavía quiere poder conectar a pares I2P</p></body></html> - + Mixed mode Modo mixto - + Some options are incompatible with the chosen proxy type! ¡Algunas opciones son incompatibles con el tipo de proxy elegido! - + If checked, hostname lookups are done via the proxy Si se verifica, las búsquedas del nombre de host se realizan a través del proxy. - + Perform hostname lookup via proxy Realizar búsqueda de hots via proxy - + Use proxy for BitTorrent purposes Usar proxy para propósitos de BitTorrent - + RSS feeds will use proxy Las fuentes RSS usarán proxy - + Use proxy for RSS purposes Usar proxy para propósitos de RSS - + Search engine, software updates or anything else will use proxy El motor de búsqueda, las actualizaciones de software o cualquier otra cosa usarán proxy - + Use proxy for general purposes Usar proxy para propósitos generales - + IP Fi&ltering Filtrado IP - + Schedule &the use of alternative rate limits Programar el uso de límites alternativos - + From: From start time De: - + To: To end time Para: - + Find peers on the DHT network Buscar pares en la red DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6003,140 +6241,188 @@ Requerir encriptación: Solo conectar a pares con encriptación de protocolo Deshabilitar encriptación: Solo conectar a pares sin encriptación de protocolo - + Allow encryption Permitir el cifrado - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Más información</a>) - + Maximum active checking torrents: Máximo de torrents de comprobación activos: - + &Torrent Queueing Torrents en cola - + When total seeding time reaches Cuando el tiempo total de siembra alcance - + When inactive seeding time reaches Cuando el tiempo de siembra inactiva alcanza - A&utomatically add these trackers to new downloads: - Agregar automáticamente estos trackers a las descargas: + Agregar automáticamente estos trackers a las descargas: - + RSS Reader Lector RSS - + Enable fetching RSS feeds Habilitar búsqueda por canales RSS - + Feeds refresh interval: Intervalo de actualización de canales RSS: - + + Same host request delay: + Retraso en la solicitud del mismo host: + + + Maximum number of articles per feed: Número máximo de artículos por canal: - - - + + + min minutes min - + Seeding Limits Límites de siembra - Pause torrent - Pausar torrent + Pausar torrent - + Remove torrent Eliminar torrent - + Remove torrent and its files Eliminar el torrent y sus archivos - + Enable super seeding for torrent Habilitar la super-siembra para el torrent - + When ratio reaches Cuando se alcance la ratio - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Descargador RSS - + Enable auto downloading of RSS torrents Habilitar auto descarga de torrents RSS - + Edit auto downloading rules... Editar reglas de auto descarga... - + RSS Smart Episode Filter Filtro Inteligente de Episodios por RSS - + Download REPACK/PROPER episodes Descargar episodios REPACK/PROPER - + Filters: Filtros: - + Web User Interface (Remote control) interfaz Web (Control remoto) - + IP address: Direcciones IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6147,42 +6433,41 @@ Especifique una dirección IPv4 o IPv6. "*" para cualquier dirección IPv4 O IPv6 - + Ban client after consecutive failures: Vetar cliente después de consecutivos intentos fallidos: - + Never Nunca - + ban for: vetar por: - + Session timeout: Límite de tiempo de la sesión: - + Disabled Deshabilitado - Enable cookie Secure flag (requires HTTPS) - Habilitar la marca de cookie Segura (requiere HTTPS) + Habilitar la marca de cookie Segura (requiere HTTPS) - + Server domains: Dominios de servidor: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6195,442 +6480,495 @@ no debería utilizar nombres de dominio utilizados por el servidor de la interfa Use ';' para dividir múltiples entradas. Puede usar el comodin '*'. - + &Use HTTPS instead of HTTP &Usar HTTPS en lugar de HTTP - + Bypass authentication for clients on localhost Eludir la autenticación para clientes en localhost - + Bypass authentication for clients in whitelisted IP subnets Eludir la autenticación para clientes en la lista blanca de subredes IP - + IP subnet whitelist... Lista blanca de subredes IP... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Especifique IP de proxy inverso (o subredes, por ejemplo, 0.0.0.0/24) para usar la dirección de cliente reenviada (encabezado X-Reenviado-para encabezado). Usar ';' para dividir varias entradas. - + Upda&te my dynamic domain name Actualizar mi nombre de dominio dinámico - + Minimize qBittorrent to notification area Minimizar qBittorrent al area de notificación - + + Search + Buscar + + + + WebUI + + + + Interface Interfaz - + Language: Idioma: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Estilo del icono del area de notificación: - - + + Normal Normal - + File association Asociación de archivos - + Use qBittorrent for .torrent files Usar qBittorrent para los archivos .torrent - + Use qBittorrent for magnet links Usar qBittorrent para los enlaces magnet - + Check for program updates Comprobar actualizaciones disponibles - + Power Management Administración de energía - + + &Log Files + + + + Save path: Ruta Destino - + Backup the log file after: Respaldar el archivo de logs después de: - + Delete backup logs older than: Eliminar logs de más antiguos que: - + + Show external IP in status bar + + + + When adding a torrent Al agregar un torrent - + Bring torrent dialog to the front Traer el diálogo del torrent al frente - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled También eliminar archivos .torrent si su agregado fue cancelado. - + Also when addition is cancelled También cuando su agregado es cancelado. - + Warning! Data loss possible! ¡Peligro! Perdida de datos posible. - + Saving Management Administración de guardado - + Default Torrent Management Mode: Administración de Torrents predeterminada: - + Manual Manual - + Automatic Automático - + When Torrent Category changed: Cuando cambia la categoría del torrent: - + Relocate torrent Reubicar torrent - + Switch torrent to Manual Mode Cambiar torrent a modo manual - - + + Relocate affected torrents Reubicar los torrents afectados - - + + Switch affected torrents to Manual Mode Cambiar los torrents afectados a modo manual - + Use Subcategories Usar subcategorias: - + Default Save Path: Ubicación de guardado predeterminada: - + Copy .torrent files to: Copiar archivos .torrent en: - + Show &qBittorrent in notification area Mostrar &qBittorrent en el área de notificación - &Log file - Archivo de &logs + Archivo de &logs - + Display &torrent content and some options Mostrar el contenido del Torrent y opciones - + De&lete .torrent files afterwards Después eliminar el archivo .torrent - + Copy .torrent files for finished downloads to: Copiar archivos .torrent de descargas finalizadas a: - + Pre-allocate disk space for all files Pre-asignar espacio en el disco para todos los archivos - + Use custom UI Theme Usar tema de IU personalizado - + UI Theme file: Archivo de tema de IU: - + Changing Interface settings requires application restart Cambiar la configuración de la interfaz requiere reiniciar la aplicación - + Shows a confirmation dialog upon torrent deletion Muestra una ventana de confirmación al borrar torrents - - + + Preview file, otherwise open destination folder Previsualizar el archivo, sino, abrir la carpeta de destino - - Show torrent options - Mostrar opciones de torrent + Mostrar opciones de torrent - + Shows a confirmation dialog when exiting with active torrents Muestra un ventana de confirmación al salir con torrents activos - + When minimizing, the main window is closed and must be reopened from the systray icon Cuando se minimice, la ventana principal se cierra y debe ser abierta desde el icono de la bandeja del sistema - + The systray icon will still be visible when closing the main window El icono de la bandeja del sistema seguirá visible al cerrar la ventana principal - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Cerrar qBittorrent al área de notificación - + Monochrome (for dark theme) Monocromo (para tema oscuro) - + Monochrome (for light theme) Monocromo (para tema claro) - + Inhibit system sleep when torrents are downloading Inhabilitar la suspensión del equipo cuando queden torrents descargando - + Inhibit system sleep when torrents are seeding Inhabilitar la suspensión del equipo cuando queden torrents sembrando - + Creates an additional log file after the log file reaches the specified file size Crea un fichero de log adicional cuando el fichero de log alcance el tamaño especificado - + days Delete backup logs older than 10 days días - + months Delete backup logs older than 10 months meses - + years Delete backup logs older than 10 years años - + Log performance warnings Registrar advertencias de rendimiento - The torrent will be added to download list in a paused state - El torrent será añadido a la lista de descarga en estado pausado + El torrent será añadido a la lista de descarga en estado pausado - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state No comenzar la descarga automáticamente - + Whether the .torrent file should be deleted after adding it Si el archivo .torrent debe eliminarse después de añadirlo - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Reservar espacio para ficheros de tamaño completo en disco antes de iniciar la descarga, para minimizar la fragmentación. Solo útil en discos duros. - + Append .!qB extension to incomplete files Agregar la extensión .!qB a los archivos incompletos - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Cuando se descarga un torrent, permite agregar torrents de cualquier archivo .torrent que se encuentra dentro de él - + Enable recursive download dialog Activar la ventana de confirmación de descargas recursivas - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automático: Diversas características del torrent (p.e. ruta de guardado) se decidirán por la categoría asociada Manual: Diversas características del torrent (p.e. ruta de guardado) deben ser asignadas manualmente - + When Default Save/Incomplete Path changed: Cuando cambió la ruta guardada/incompleta predeterminada: - + When Category Save Path changed: Cuando cambia la ruta de destino de la categoría: - + Use Category paths in Manual Mode Usar directorios de Categoría en Modo Manual - + Resolve relative Save Path against appropriate Category path instead of Default one Resolver la ruta de ubicación relativa contra la ruta de categoría apropiada en lugar de la predeterminada. - + Use icons from system theme Usar íconos del tema del sistema - + Window state on start up: Estado de la ventana al inicio: - + qBittorrent window state on start up Estado de la ventana de qBittorrent al iniciar - + Torrent stop condition: Condición de parada del Torrent: - - + + None Ninguno - - + + Metadata received Metadatos recibidos - - + + Files checked Archivos verificados - + Ask for merging trackers when torrent is being added manually Solicitar la fusión de rastreadores cuando el torrent se añade manualmente - + Use another path for incomplete torrents: Use otra ruta para torrents incompletos: - + Automatically add torrents from: Agregar automáticamente los torrents de: - + Excluded file names Nombres de archivos excluidos - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6659,841 +6997,914 @@ readme.txt: filtra el nombre exacto del archivo. readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt' pero no 'readme10.txt'. - + Receiver Destinatario - + To: To receiver Para: - + SMTP server: Servidor SMTP: - + Sender Remitente - + From: From sender De: - + This server requires a secure connection (SSL) El servidor requiere una conexión segura (SSL) - - + + Authentication Autenticación - - - - + + + + Username: Nombre de usuario: - - - - + + + + Password: Contraseña: - + Run external program Ejecutar programa externo - Run on torrent added - Seguir ejecutando torrent añadido + Seguir ejecutando torrent añadido - Run on torrent finished - Seguir ejecutando torrent finalizado + Seguir ejecutando torrent finalizado - + Show console window Mostrar ventana de la consola - + TCP and μTP TCP y μTP - + Listening Port Puerto de escucha - + Port used for incoming connections: Puerto utilizado para conexiones entrantes: - + Set to 0 to let your system pick an unused port Establezca el valor 0 para permitir que el sistema utilice un puerto sin usar. - + Random Aleatorio - + Use UPnP / NAT-PMP port forwarding from my router Usar reenvío de puertos UPnP / NAT-PMP de mi router - + Connections Limits Límites de conexión - + Maximum number of connections per torrent: Máximo de conexiones por torrent: - + Global maximum number of connections: Máximo de conexiones totales: - + Maximum number of upload slots per torrent: Máximo de puestos de subida por torrent: - + Global maximum number of upload slots: Máximo total de puestos de subida: - + Proxy Server Servidor proxy - + Type: Tipo: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Puerto: - + Otherwise, the proxy server is only used for tracker connections Sino, el servidor proxy se utilizará solamente para las conexiones al tracker - + Use proxy for peer connections Usar proxy para las conexiones a los pares - + A&uthentication Autenticación - + Info: The password is saved unencrypted Info: La contraseña se guarda sin cifrar - + Filter path (.dat, .p2p, .p2b): Ruta del filtro (.dat, .p2p, .p2b): - + Reload the filter Actualizar el filtro - + Manually banned IP addresses... Direcciones IP prohibidas manualmente... - + Apply to trackers Aplicar a los trackers - + Global Rate Limits Limites globales de velocidad - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Subida: - - + + Download: Bajada: - + Alternative Rate Limits Límites de velocidad alternativos - + Start time Hora de inicio - + End time Hora de finalización - + When: Cuándo: - + Every day Todos los días - + Weekdays Días laborales - + Weekends Fines de semana - + Rate Limits Settings Configuración de los limites - + Apply rate limit to peers on LAN Aplicar el límite a los pares en LAN - + Apply rate limit to transport overhead Aplicar límite para el exceso de transporte (Overhead) - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Aplicar límite para conexiones µTP - + Privacy Privacidad - + Enable DHT (decentralized network) to find more peers Activar DHT (red descentralizada) para encontrar más pares - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Intercambiar pares con clientes Bittorrent compatibles (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Habilitar intercambio de pares (PeX) para encontrar más pares - + Look for peers on your local network Buscar pares en su red local - + Enable Local Peer Discovery to find more peers Habilitar busqueda local de pares para encontrar más pares - + Encryption mode: Modo de cifrado: - + Require encryption Exigir cifrado - + Disable encryption Deshabilitar cifrado - + Enable when using a proxy or a VPN connection Habilitar cuando se use un proxy o un VPN - + Enable anonymous mode Activar modo anónimo - + Maximum active downloads: Máximo de descargas activas: - + Maximum active uploads: Máximo de subidas activas: - + Maximum active torrents: Máximo de torrents activos: - + Do not count slow torrents in these limits No contar torrents lentos en estos límites - + Upload rate threshold: Umbral de vel. de subida: - + Download rate threshold: Umbral de vel. de descarga: - - - + + + + sec seconds seg - + Torrent inactivity timer: Temporizador de inactividad de Torrent: - + then luego - + Use UPnP / NAT-PMP to forward the port from my router Usar UPnP / NAT-PMP para redirigir el puerto de mi router - + Certificate: Certificado: - + Key: Clave: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Información acerca de los certificados</a> - + Change current password Cambiar contraseña actual - Use alternative Web UI - Usar la interfaz Web alternativa + Usar la interfaz Web alternativa - + Files location: Ubicación de archivos: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Seguridad - + Enable clickjacking protection Activar protección de clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Activar protección CSRF (Cross-site Request Forgery) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Habilitar la validación de encabezado del Host - + Add custom HTTP headers Añadir cabeceras HTTP personalizadas - + Header: value pairs, one per line Cabecera: pares de valores, uno por línea - + Enable reverse proxy support Habilitar el soporte de proxy inverso - + Trusted proxies list: Lista de proxies de confianza: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servicio: - + Register Registro - + Domain name: Nombre de dominio: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Al activar estas opciones, puedes <strong>perder permanentemente</strong> tus archivos .torrent - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Si habilitas la segunda opción (&ldquo;También cuando la agregado es cancelado&rdquo;) el archivo .torrent <strong> será borrado </strong> incluso si elijes &ldquo;<strong>Cancelar</strong>&rdquo; en la ventana de &ldquo;Agregar torrent&rdquo; - + Select qBittorrent UI Theme file Seleccionar archivo de Tema UI de qBittorrent - + Choose Alternative UI files location Elegir ubicación de archivos de la Interfaz de Usuario alternativa - + Supported parameters (case sensitive): Parámetros soportados (sensible a mayúsculas): - + Minimized Minimizado - + Hidden Oculto - + Disabled due to failed to detect system tray presence Desactivado debido a que no se pudo detectar la presencia de la bandeja del sistema - + No stop condition is set. No se establece una condición de parada. - + Torrent will stop after metadata is received. El torrent se detendrá después de que se reciban metadatos. - - Torrents that have metadata initially aren't affected. - Los torrents que tienen metadatos inicialmente no están afectados. - - - + Torrent will stop after files are initially checked. El torrent se detendrá después de que los archivos se verifiquen inicialmente. - + This will also download metadata if it wasn't there initially. Esto también descargará metadatos si no estaba allí inicialmente. - + %N: Torrent name %N: Nombre del torrent - + %L: Category %L: Categoría - + %F: Content path (same as root path for multifile torrent) %F: Ruta del contenido (misma ruta que la raíz para torrents muilti-archivo) - + %R: Root path (first torrent subdirectory path) %R: Ruta Raíz (primer subdirectorio del torrent) - + %D: Save path %D: Ruta de destino - + %C: Number of files %C: Cantidad de archivos - + %Z: Torrent size (bytes) %Z: Tamaño del torrent (bytes) - + %T: Current tracker %T: Tracker actual - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Consejo: Encapsula el parámetro con comillas para evitar que el texto sea cortado en un espacio (ej: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Ninguno) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Un torrent se considerará lento si la velocidad de descarga y subida se mantienen debajo de estos valores por el tiempo indicado en el "Temporizador de inactividad de Torrent" - + Certificate Certificado - + Select certificate Seleccionar certificado - + Private key Llave privada - + Select private key Seleccionar llave privada - + + WebUI configuration failed. Reason: %1 + La configuración de WebUI falló. Motivo: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Seleccione una carpeta para monitorear - + Adding entry failed Fallo al agregar entrada - - Location Error - Error de ubicación + + The WebUI username must be at least 3 characters long. + El nombre de usuario de WebUI debe tener al menos 3 caracteres. + + + + The WebUI password must be at least 6 characters long. + La contraseña de WebUI debe tener al menos 6 caracteres. - - The alternative Web UI files location cannot be blank. - La ubicación de los archivos de la interfaz Web alternativa no puede estar vacía. + + Location Error + Error de ubicación - - + + Choose export directory Selecciona una ruta de exportación - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Cuando estas opciones están habilitadas, qBittorrent <strong>eliminará</strong> los archivos .torrent después de que se hayan agregado con éxito (la primera opción) o no (la segunda opción) a su cola de descarga. Esto se aplicará <strong>no solo</strong> a los archivos abiertos mediante &ldquo; Agregar torrent&rdquo;; acción del menú, pero también a los que se abren mediante la <strong>asociación de tipo de archivo</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Archivo de tema de la interfaz de usuario de qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Tags (separados por coma) - + %I: Info hash v1 (or '-' if unavailable) %I: Hash de información v1 (o '-' si no está disponible) - + %J: Info hash v2 (or '-' if unavailable) %J: Hash de información v2 (o '-' si no está disponible) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID de torrent (ya sea hash de información sha-1 para torrent v1 o hash de información sha-256 truncado para torrent v2/híbrido) - - - + + + Choose a save directory Seleccione una ruta para guardar - + + Torrents that have metadata initially will be added as stopped. + Los torrents que inicialmente tengan metadatos se añadirán como detenidos. + + + Choose an IP filter file Seleccione un archivo de filtro IP - + All supported filters Todos los filtros soportados - + + The alternative WebUI files location cannot be blank. + La ubicación alternativa de los archivos WebUI no puede estar en blanco. + + + Parsing error Error de análisis - + Failed to parse the provided IP filter No se ha podido analizar el filtro IP proporcionado - + Successfully refreshed Actualizado correctamente - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Filtro IP analizado correctamente: %1 reglas fueron aplicadas. - + Preferences Preferencias - + Time Error Error de tiempo - + The start time and the end time can't be the same. Los tiempos de inicio y finalización no pueden ser iguales. - - + + Length Error Error de longitud - - - The Web UI username must be at least 3 characters long. - El nombre de usuario de la interfaz Web debe ser de al menos 3 caracteres. - - - - The Web UI password must be at least 6 characters long. - La contraseña de interfaz Web debe ser de al menos 6 caracteres. - PeerInfo - + Unknown Desconocido - + Interested (local) and choked (peer) Interesado (local) y ahogado (par) - + Interested (local) and unchoked (peer) Interesado (local) y desahogado (par) - + Interested (peer) and choked (local) Interesado (par) y ahogado (local) - + Interested (peer) and unchoked (local) interesado (par) y desahogado (local) - + Not interested (local) and unchoked (peer) No interesado (local) y no desahogado (par) - + Not interested (peer) and unchoked (local) No interesado (par) y desahogado (local) - + Optimistic unchoke Desahogamiento optimista - + Peer snubbed Par descartado - + Incoming connection Conexión entrante - + Peer from DHT Par desde DHT - + Peer from PEX Par desde PEX - + Peer from LSD Par desde LSD - + Encrypted traffic Tráfico cifrado - + Encrypted handshake Establecimiento de comunicación cifrado + + + Peer is using NAT hole punching + + PeerListWidget @@ -7649,7 +8060,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt' pero no El par "%1" está vetado manualmente - + N/A N/A @@ -7672,7 +8083,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt' pero no Lista de pares a agregar (una IP por línea): - + Format: IPv4:port / [IPv6]:port Formato: IPv4:puerto / [IPv6]:puerto @@ -7713,27 +8124,27 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt' pero no PiecesBar - + Files in this piece: Archivos en esta pieza: - + File in this piece: Archivo en esta pieza: - + File in these pieces: Archivo en estas piezas: - + Wait until metadata become available to see detailed information Espere hasta que los metadatos estén disponibles para ver la información detallada. - + Hold Shift key for detailed information Mantén Shift para información detallada @@ -7746,58 +8157,58 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt' pero no Plugins de búsqueda - + Installed search plugins: Plugins de búsqueda instalados: - + Name Nombre - + Version Versión - + Url URL - - + + Enabled Habilitado - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Advertencia: Asegúrese de cumplir con las leyes de copyright de su país cuando descarga torrents de estos motores de búsqueda. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Aquí puede conseguir nuevos complementos para motores de búsqueda: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instalar uno nuevo - + Check for updates Buscar actualizaciones - + Close Cerrar - + Uninstall Desinstalar @@ -7916,17 +8327,17 @@ Those plugins were disabled. Fuente del plugin - + Search plugin source: Fuente del plugin de búsqueda: - + Local file Archivo local - + Web link Enlace web @@ -7944,70 +8355,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + El administrador de Energía encontró una interfaz D-Bus adecuada. Interfaz: %1 Power management error. Did not found suitable D-Bus interface. - + Error de administración de energía. No se encontró la interfaz D-Bus adecuada. Power management error. Action: %1. Error: %2 - + Error de administración de energía. Acción: %1. Error: %2 Power management unexpected error. State: %1. Error: %2 - + Error inesperado en la administración de energía. Estado: %1. Error: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Los siguientes ficheros del torrent "%1" soportan vista previa, por favor seleccione uno de ellos: - + Preview Previsualizar - + Name Nombre - + Size Tamaño - + Progress Progreso - + Preview impossible Imposible previsualizar - + Sorry, we can't preview this file: "%1". Lo siento, no se puede previsualizar este archivo: "%1". - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Reajustar el tamaño de todas las columnas no ocultas al tamaño de sus contenidos. @@ -8020,27 +8431,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist La ruta no existe - + Path does not point to a directory La ruta no apunta a un directorio - + Path does not point to a file La ruta no apunta a un archivo - + Don't have read permission to path No tiene permiso de lectura para la ruta - + Don't have write permission to path No tiene permiso de escritura para la ruta @@ -8081,12 +8492,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Descargado: - + Availability: Disponibilidad: @@ -8101,53 +8512,53 @@ Those plugins were disabled. Transferencia - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Tiempo activo: - + ETA: Tiempo restante: - + Uploaded: Subido: - + Seeds: Semillas: - + Download Speed: Velocidad de descarga: - + Upload Speed: Velocidad de subida: - + Peers: Pares: - + Download Limit: Límite de descarga: - + Upload Limit: Límite de subida: - + Wasted: Desperdiciado: @@ -8157,193 +8568,249 @@ Those plugins were disabled. Conexiones: - + Information Información - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Comentario: - + Select All Seleccionar todo - + Select None Seleccionar ninguno - + Share Ratio: Ratio de compartición: - + Reannounce In: Anunciar en: - + Last Seen Complete: Ultima vez visto completo: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Tamaño total: - + Pieces: Piezas: - + Created By: Creado por: - + Added On: Agregado el: - + Completed On: Completado el: - + Created On: Creado el: - + + Private: + + + + Save Path: Ruta de destino: - + Never Nunca - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (tienes %3) - - + + %1 (%2 this session) %1 (%2 en esta sesión) - - + + + N/A N/A - + + Yes + + + + + No + No + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sembrado durante %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 máx) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 prom.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nueva semilla Web + Nueva semilla Web - Remove Web seed - Eliminar semilla Web + Eliminar semilla Web - Copy Web seed URL - Copiar URL de la semilla Web + Copiar URL de la semilla Web - Edit Web seed URL - Editar URL de la semilla Web + Editar URL de la semilla Web - + Filter files... Filtrar archivos... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Los gráficos de velocidad están desactivados - + You can enable it in Advanced Options Puede habilitarlo en Opciones Avanzadas - New URL seed New HTTP source - Nueva semilla URL + Nueva semilla URL - New URL seed: - Nueva semilla URL: + Nueva semilla URL: - - This URL seed is already in the list. - Esta semilla URL ya está en la lista. + Esta semilla URL ya está en la lista. - + Web seed editing Editando semilla Web - + Web seed URL: URL de la semilla Web: @@ -8362,22 +8829,22 @@ Those plugins were disabled. No se guardaron las reglas del descargador RSS en %1. Error: %2 - + Invalid data format Formato de datos inválido. - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... El artículo RSS '%1' es aceptado por la regla '%2'. Intentando añadir torrent... - + Failed to read RSS AutoDownloader rules. %1 Error al leer las reglas RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 No se cargaron las reglas del descargador RSS Razón: %1 @@ -8385,22 +8852,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 No se pudo descargar el feed RSS: '%1', razón: %2. - + RSS feed at '%1' updated. Added %2 new articles. Actualizado Feed RSS en '%1'. Agregados %2 nuevos artículos. - + Failed to parse RSS feed at '%1'. Reason: %2 No se pudo analizar el feed RSS: '%1', razón: %2. - + RSS feed at '%1' is successfully downloaded. Starting to parse it. El RSS feed en '%1' se ha descargado correctamente. Se ha comenzando a analizarlo. @@ -8436,12 +8903,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Canal RSS inválido. - + %1 (line: %2, column: %3, offset: %4). %1 (linea: %2, columna: %3, margen: %4). @@ -8449,99 +8916,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" No se pudo guardar la configuración de la sesión RSS. Archivo: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" No se pudo guardar los datos de la sesión RSS. Archivo: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. El canal RSS con la URL dada ya existe: %1. - + Feed doesn't exist: %1. El feed no existe %1. - + Cannot move root folder. No se puede mover la carpeta raíz. - - + + Item doesn't exist: %1. El item no existe: %1. - + Couldn't move folder into itself. No se pudo mover la carpeta a sí misma. - + Cannot delete root folder. No se puede eliminar la carpeta raíz. - + Failed to read RSS session data. %1 Error al leer los datos de la sesión RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Error al analizar los datos de la sesión RSS. Archivo: "%1". Error: "%2": "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Error al cargar los datos de la sesión RSS. Archivo: "%1". Error: "Formato de datos no válido". - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. No se pudo cargar la fuente RSS. Fuente: "%1". Motivo: se requiere la URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. No se pudo cargar la fuente RSS. Fuente: "%1". Motivo: el UID no es válido. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Se encontró una fuente RSS duplicada. UID: "%1". Error: la configuración parece estar dañada. - + Couldn't load RSS item. Item: "%1". Invalid data format. No se pudo cargar el elemento RSS. Elemento: "%1". Formato de datos inválido. - + Corrupted RSS list, not loading it. Lista de RSS corrupta, no cargarla. - + Incorrect RSS Item path: %1. Elemento RSS incorrecto Ruta : %1. - + RSS item with given path already exists: %1. El canal RSS con la ruta dada ya existe: %1. - + Parent folder doesn't exist: %1. La carpeta no existe: %1. @@ -8565,8 +9032,8 @@ Those plugins were disabled. - - + + Mark items read Marcar como leídos @@ -8591,132 +9058,132 @@ Those plugins were disabled. Torrents: (doble-click para descargar) - - + + Delete Eliminar - + Rename... Renombrar... - + Rename Renombrar - - + + Update Actualizar - + New subscription... Nueva suscripción... - - + + Update all feeds Actualizar todos los canales - + Download torrent Descargar torrent - + Open news URL Abrir URL - + Copy feed URL Copiar URL del canal - + New folder... Nueva carpeta... - + Edit feed URL... Guardar URL de feed... - + Edit feed URL Editar URL de feed - + Please choose a folder name Por favor elija un nombre para la carpeta - + Folder name: Nombre de la carpeta: - + New folder Nueva carpeta - - + + Please type a RSS feed URL Por favor escribe una URL de un Canal RSS - - + + Feed URL: URL del canal: - + Deletion confirmation Confirmar eliminación - + Are you sure you want to delete the selected RSS feeds? ¿Esta seguro que desea eliminar los canales RSS seleccionados? - + Please choose a new name for this RSS feed Por favor, elija un nuevo nombre para el canal RSS - + New feed name: Nombre del nuevo canal: - + Rename failed Renombrado fallido - + Date: Fecha: - + Feed: - + Semillas: - + Author: Autor: @@ -8724,38 +9191,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Debe instalar Python para usar el motor de búsqueda. - + Unable to create more than %1 concurrent searches. No se puede crear más de %1 búsquedas simultáneas. - - + + Offset is out of range Fuera de rango - + All plugins are already up to date. Todos los plugins ya están actualizados. - + Updating %1 plugins Actualizando %1 plugins - + Updating plugin %1 Actualizando plugin %1 - + Failed to check for plugin updates: %1 Error al comprobar actualizaciones: %1 @@ -8830,132 +9297,146 @@ Those plugins were disabled. Tamaño: - + Name i.e: file name Nombre - + Size i.e: file size Tamaño - + Seeders i.e: Number of full sources Semillas - + Leechers i.e: Number of partial sources Pares - Search engine - Motor de búsqueda + Motor de búsqueda - + Filter search results... Filtrar archivos... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultados (mostrando <i>%1</i> de <i>%2</i>): - + Torrent names only Solo nombres de Torrent - + Everywhere En todas partes - + Use regular expressions Usar expresiones regulares - + Open download window Abrir ventana de descarga - + Download Descargar - + Open description page Abrir la página de descripción - + Copy Copiar - + Name Nombre - + Download link Enlace de descarga - + Description page URL URL de página de descripción - + Searching... Buscando... - + Search has finished La búsqueda ha finalizado - + Search aborted Búsqueda abortada - + An error occurred during search... Ha ocurrido un error durante la búsqueda... - + Search returned no results La búsqueda no ha devuelto resultados - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilidad de columnas - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Reajustar el tamaño de todas las columnas no ocultas al tamaño de sus contenidos. @@ -8963,104 +9444,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Formato de plugin de motor de búsqueda desconocido. - + Plugin already at version %1, which is greater than %2 La versión del plugin %1, ya es mayor que %2 - + A more recent version of this plugin is already installed. Una versión más reciente del plugin ya está instalada. - + Plugin %1 is not supported. Plugin %1 no soportado. - - + + Plugin is not supported. Plugin no soportado. - + Plugin %1 has been successfully updated. Plugin %1 actualizado exitosamente. - + All categories Todas - + Movies Películas - + TV shows Programas de TV - + Music Música - + Games Juegos - + Anime Anime - + Software Software - + Pictures Imágenes - + Books Libros - + Update server is temporarily unavailable. %1 El servidor de actualizaciones no está disponible temporalmente. %1 - - + + Failed to download the plugin file. %1 Error al descargar el plugin. %1 - + Plugin "%1" is outdated, updating to version %2 El plugin %1 se está actualizando a la versión %2 - + Incorrect update info received for %1 out of %2 plugins. La información de actualización recibida es incorrecta para %1 de %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') El plugin de búsqueda '%1' contiene una cadena de versión invalida ('%2') @@ -9070,114 +9551,153 @@ Those plugins were disabled. - - - - Search Buscar - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. No hay plugins de búsqueda instalados. Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha para instalar algunos. - + Search plugins... Plugins de búsqueda... - + A phrase to search for. Una frase a buscar. - + Spaces in a search term may be protected by double quotes. Los espacios de una búsqueda pueden ser protegidos por comillas dobles. - + Example: Search phrase example Ejemplo: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: buscar <b>foo bar</b> - + All plugins Todos los motores - + Only enabled Solo habilitados - + + + Invalid data format. + Formato de datos inválido. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: buscar por<b>foo</b> y <b>bar</b> - + + Refresh + + + + Close tab Cerrar pestaña - + Close all tabs Cerrar todas las pestañas - + Select... Seleccionar... - - - + + Search Engine Motor de búsqueda - + + Please install Python to use the Search Engine. Por favor, instala Python para usar el motor de búsqueda. - + Empty search pattern Patrón de búsqueda vacío - + Please type a search pattern first Por favor, escriba un patrón de búsqueda primero - + + Stop Detener - Search has finished - La búsqueda ha terminado + La búsqueda ha terminado - Search has failed - La búsqueda ha fallado + La búsqueda ha fallado + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9290,34 +9810,34 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha - + Upload: Subida: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Bajada: - + Alternative speed limits Límites de velocidad alternativos @@ -9509,32 +10029,32 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha Tiempo promedio en cola: - + Connected peers: Pares conectados: - + All-time share ratio: Ratio de comparticíon: - + All-time download: Total bajado: - + Session waste: Desperdicio de sesión: - + All-time upload: Total subido: - + Total buffer size: Tamaño total del buffer: @@ -9549,12 +10069,12 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha Trabajos de I/O en cola: - + Write cache overload: Sobrecarga de la caché de escritura: - + Read cache overload: Sobrecarga de la caché de lectura: @@ -9573,51 +10093,67 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha StatusBar - + Connection status: Estado de la conexión: - - + + No direct connections. This may indicate network configuration problems. No hay conexiones directas. Esto puede indicar problemas en la configuración de red. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodos - + qBittorrent needs to be restarted! Es necesario reiniciar qBittorrent - - - + + + Connection Status: Estado de la conexión: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Fuera de línea. Esto normalmente significa que qBittorrent no puede escuchar el puerto seleccionado para las conexiones entrantes. - + Online En línea - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Click para cambiar a los límites de velocidad alternativos - + Click to switch to regular speed limits Click para cambiar a los límites de velocidad normales @@ -9646,14 +10182,22 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha Completados (0) - Resumed (0) - Reanudados (0) + Reanudados (0) - Paused (0) - Pausados (0) + Pausados (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9715,10 +10259,29 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha Completed (%1) Completados (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pausados (%1) + Pausados (%1) @@ -9726,14 +10289,12 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha Moviendo (%1) - Resume torrents - Reanudar torrents + Reanudar torrents - Pause torrents - Pausar torrents + Pausar torrents @@ -9741,9 +10302,8 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha Eliminar torrents - Resumed (%1) - Continuados (%1) + Continuados (%1) @@ -9784,17 +10344,17 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha TagFilterModel - + Tags Etiquetas - + All Todos - + Untagged Sin etiquetar @@ -9802,52 +10362,64 @@ Presione el boton "Plugins de búsqueda..." ubicado abajo a la derecha TagFilterWidget - + Add tag... Añadir etiqueta... - + Remove tag Eliminar etiqueta - + Remove unused tags Eliminar etiquetas sin usar - Resume torrents - Reanudar torrents + Reanudar torrents - Pause torrents - Pausar torrents + Pausar torrents - + Remove torrents Eliminar torrents - New Tag - Nueva etiqueta + Nueva etiqueta + + + + Start torrents + + + + + Stop torrents + - + Tag: Etiqueta: - + + Add tag + + + + Invalid tag name Nombre de etiqueta no válido - + Tag name '%1' is invalid El nombre de la etiqueta '%1' no es válido @@ -9987,32 +10559,32 @@ Por favor, elija otro nombre. TorrentContentModel - + Name Nombre - + Progress Progreso - + Download Priority Prioridad de descarga - + Remaining Restante - + Availability Disponibilidad - + Total Size Tamaño total @@ -10057,102 +10629,120 @@ Por favor, elija otro nombre. TorrentContentWidget - + Rename error Error al renombrar - + Renaming Renombrando - + New name: Nuevo nombre: - + Column visibility Visibilidad de columna - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Redimensionar todas las columnas no ocultas al tamaño de su contenido - + Open Abrir - + Open containing folder Abrir carpeta de destino - + Rename... Renombrar... - + Priority Prioridad - - + + Do not download No descargar - + Normal Normal - + High Alta - + Maximum Máxima - + By shown file order Por orden de archivo mostrado - + Normal priority Prioridad Normal - + High priority Prioridad Alta - + Maximum priority Prioridad Máxima - + Priority by shown file order Prioridad por orden de archivo mostrado + + TorrentCreatorController + + + Too many active tasks + Demasiadas tareas activas + + + + Torrent creation is still unfinished. + La creación del torrent aún está sin acabar. + + + + Torrent creation failed. + La creación del torrent falló. + + TorrentCreatorDialog @@ -10177,13 +10767,13 @@ Por favor, elija otro nombre. - + Select file Seleccionar archivo - + Select folder Seleccionar carpeta @@ -10208,58 +10798,10 @@ Por favor, elija otro nombre. Tamaño de la pieza: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10306,92 +10848,83 @@ Por favor, elija otro nombre. Campos - + You can separate tracker tiers / groups with an empty line. Puedes separar los niveles / grupos de trackers con una línea vacía. - + Web seed URLs: URLs de las semillas Web: - + Tracker URLs: Tracker URLs: - + Comments: Comentarios: - + Source: Origen: - + Progress: Progreso: - + Create Torrent Crear Torrent - - + + Torrent creation failed - Fallo al crear torrent + Error al crear el torrent - + Reason: Path to file/folder is not readable. Razón: La ruta del archivo/carpeta no es legible. - + Select where to save the new torrent Seleccione donde guardar el nuevo torrent - + Torrent Files (*.torrent) Archivos Torrent (*.torrent) - - Reason: %1 - Razón: %1 - - - + Add torrent to transfer list failed. - + El torrent no se pudo agregar a la lista de transferencias. - + Reason: "%1" - + Razón: "%1" - + Add torrent failed - + Error al agregar el torrent - Reason: Created torrent is invalid. It won't be added to download list. - Razón: El torrent creado no es válido. No se agregará a la lista de descargas. - - - + Torrent creator Crear &Torrent - + Torrent created: Torrent creado: @@ -10399,32 +10932,32 @@ Por favor, elija otro nombre. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Error al cargar la configuración de carpetas vigiladas. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Error al analizar la configuración de carpetas vigiladas de %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Error al cargar la configuración de carpetas vigiladas de %1. Error: "Formato de datos no válido". - + Couldn't store Watched Folders configuration to %1. Error: %2 No se pudo almacenar la configuración de las carpetas supervisadas en %1. Error: %2 - + Watched folder Path cannot be empty. La ruta de la carpeta vigilada no puede estar vacia. - + Watched folder Path cannot be relative. La ruta de la carpeta vigilada no puede ser relativa. @@ -10432,27 +10965,27 @@ Por favor, elija otro nombre. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI magnético inválido. URI: %1. Razón: %2 - + Magnet file too big. File: %1 Archivo Magnet demasiado grande. Archivo: %1 - + Failed to open magnet file: %1 Error al abrir el archivo magnet: %1 - + Rejecting failed torrent file: %1 Rechazando archivo torrent fallido: %1 - + Watching folder: "%1" Carpeta de visualización: "%1" @@ -10460,14 +10993,12 @@ Por favor, elija otro nombre. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Fallo al asignar memoria al leer archivo. Archivo: "%1". Error: "%2" + Fallo al asignar memoria al leer archivo. Archivo: "%1". Error: "%2" - Invalid metadata - Metadatos inválidos + Metadatos inválidos @@ -10498,127 +11029,203 @@ Por favor, elija otro nombre. Usa otra ruta para torrent incompleto - + Category: Categoría: - + + Torrent Share Limits + + + Torrent speed limits - Límites de velocidad del torrent + Límites de velocidad del torrent - + Download: Bajada: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Estos no excederán los límites globales - + Upload: Subida: - Torrent share limits - Límites de uso compartido de torrents + Límites de uso compartido de torrents - Use global share limit - Usar límite de participación global + Usar límite de participación global - Set no share limit - No establecer límite de participación + No establecer límite de participación - Set share limit to - Establecer límite de participación en + Establecer límite de participación en - ratio - tasa + tasa - total minutes - minutos totales + minutos totales - inactive minutes - minutos inactivos + minutos inactivos - + Disable DHT for this torrent Desactivar DHT para este torrent - + Download in sequential order Descarga en orden secuencial - + Disable PeX for this torrent Desactivar PeX para este torrent - + Download first and last pieces first Descargar antes primeras y últimas partes - + Disable LSD for this torrent Desactivar LSD para este torrent - + Currently used categories Categorías usadas actualmente - - + + Choose save path Elija guardar ruta - + Not applicable to private torrents No aplicable a torrents privados - No share limit method selected - No se seleccionó ningún método de límite de participación + No se seleccionó ningún método de límite de participación - Please select a limit method first - Primero seleccione un método de límite + Primero seleccione un método de límite + + + + TorrentShareLimitsWidget + + + + + + Default + Por defecto + + + + + + Unlimited + Ilimitado + + + + + + Set to + Ajustado a + + + + Seeding time: + Tiempo sembrando: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Tiempo de sembrado inactivo: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Eliminar torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Habilitar la super-siembra para el torrent + + + + Ratio: + Ratio: @@ -10629,32 +11236,36 @@ Por favor, elija otro nombre. Etiquetas de torrent - New Tag - Nueva etiqueta + Nueva etiqueta + Add tag + + + + Tag: Etiqueta: - + Invalid tag name Nombre de etiqueta no válido - + Tag name '%1' is invalid. El nombre de etiqueta '%1' es inválido - + Tag exists La etiqueta existe - + Tag name already exists. El nombre de la etiqueta ya existe. @@ -10662,115 +11273,130 @@ Por favor, elija otro nombre. TorrentsController - + Error: '%1' is not a valid torrent file. Error: '%1' no es un archivo torrent valido. - + Priority must be an integer La prioridad debe ser un entero - + Priority is not valid La prioridad no es válida - + Torrent's metadata has not yet downloaded Aún no se han descargado los metadatos del torrent - + File IDs must be integers El ID del archivo debe ser enteros - + File ID is not valid El ID del archivo no es válido - - - - + + + + Torrent queueing must be enabled Debe activar la cola de torrents - - + + Save path cannot be empty La ruta de destino no puede estar vacía - - + + Cannot create target directory No se puede crear el directorio de destino - - + + Category cannot be empty La categoría no puede estar vacía - + Unable to create category No se pudo crear la categoría - + Unable to edit category No se pudo editar la categoría - + Unable to export torrent file. Error: %1 No se puede exportar el archivo torrent. Error: %1 - + Cannot make save path No se puede crear la ruta de destino - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid El parámetro 'sort' no es válido - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" no es un índice de archivo válido. - + Index %1 is out of bounds. El índice %1 está fuera de los límites. - - + + Cannot write to directory No se puede escribir en el directorio - + WebUI Set location: moving "%1", from "%2" to "%3" Establecer ubicación: moviendo "%1", de "%2" a "%3" - + Incorrect torrent name Nombre del torrent incorrecto - - + + Incorrect category name Nombre de la categoría incorrecto @@ -10801,257 +11427,215 @@ Por favor, elija otro nombre. TrackerListModel - - + Working - Trabajando + Trabajando - + Disabled - Deshabilitado + Deshabilitado - + Disabled for this torrent - Deshabilitado para este torrent + Deshabilitado para este torrent - + This torrent is private - Este torrent es privado + Este torrent es privado - + N/A - N/A + N/A - + Updating... - Actualizando... + Actualizando... - + Not working - No funciona + No funciona - + Tracker error - + Error del rastreador - + Unreachable - + Inalcanzable - + Not contacted yet - Aún no contactado + Todavía no contactado - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Nivel + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + ¡Estado inválido! + + + URL/Announce endpoint + URL/Anunciar punto final + Tier + Nivel + + Protocol - + Protocolo - + Status - Estado + Estado - + Peers - Pares + Pares - + Seeds - Semillas + Semillas - + Leeches - Pares + Pares - + Times Downloaded - Veces descargado + Veces Descargado - + Message - Mensaje + Mensaje - Next announce - + Siguiente anuncio - Min announce - + Anuncio mínimo - v%1 - + v%1 TrackerListWidget - Working - Trabajando - - - Disabled - Deshabilitado - - - Disabled for this torrent - Deshabilitado para este torrent - - - + This torrent is private Este torrent es privado - Updating... - Actualizando... - - - Not working - No funciona - - - Not contacted yet - Aún no contactado - - - N/A - N/A - - - + Tracker editing Editando tracker - + Tracker URL: URL del tracker: - - + + Tracker editing failed Falló la edición del tracker - + The tracker URL entered is invalid. La URL del tracker es inválida. - + The tracker URL already exists. La URL del tracker ya existe. - + Edit tracker URL... Editar URL del tracker... - + Remove tracker Eliminar tracker - + Copy tracker URL Copiar URL del tracker - + Force reannounce to selected trackers Forzar recomunicación con los trackers seleccionados - + Force reannounce to all trackers Forzar recomunicación con todos los trackers - Tier - Nivel - - - URL - URL - - - Status - Estado - - - Seeds - Semillas - - - Times Downloaded - Veces descargado - - - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Reajustar el tamaño de todas las columnas no ocultas al tamaño de sus contenidos. - Peers - Pares - - - + Add trackers... Añadir trackers... - Leeches - Pares - - - Message - Mensaje - - - + Column visibility Visibilidad de columnas @@ -11069,37 +11653,37 @@ Por favor, elija otro nombre. Lista de trackers a agregar (uno por línea): - + µTorrent compatible list URL: Lista de URL compatible con μTorrent: - + Download trackers list Descargar lista de rastreadores - + Add Añadir - + Trackers list URL error Error de URL de la lista de rastreadores - + The trackers list URL cannot be empty La URL de la lista de rastreadores no puede estar vacía - + Download trackers list error Error al descargar lista de rastreadores - + Error occurred when downloading the trackers list. Reason: "%1" Ocurrió un error al descargar la lista de rastreadores. Razón: "%1" @@ -11107,87 +11691,70 @@ Por favor, elija otro nombre. TrackersFilterWidget - All (0) - this is for the tracker filter - Todos (0) - - - Trackerless (0) - Sin tracker (0) - - - Error (0) - Error (0) - - - Warning (0) - Advertencia (0) - - - Trackerless - Sin tracker - - - Error (%1) - Error (%1) - - - + Warning (%1) Advertencia (%1) - + Trackerless (%1) Sin tracker (%1) - + Tracker error (%1) - + Error del rastreador (%1) - + Other error (%1) - + Otro error (%1) - + Remove tracker - Eliminar tracker + Eliminar tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Reanudar torrents + Reanudar torrents - Pause torrents - Pausar torrents + Pausar torrents - + Remove torrents Eliminar torrents - + Removal confirmation - + Confirmación de eliminación - + Are you sure you want to remove tracker "%1" from all torrents? - + ¿Estás seguro de que quieres eliminar el rastreador "%1" de todos los torrents? - + Don't ask me again. - + No volver a preguntar. - + All (%1) this is for the tracker filter Todos (%1) @@ -11196,7 +11763,7 @@ Por favor, elija otro nombre. TransferController - + 'mode': invalid argument 'modo': argumento inválido @@ -11289,9 +11856,8 @@ Por favor, elija otro nombre. Comprobando datos de reanudación - Paused - Pausado + Pausado @@ -11316,220 +11882,262 @@ Por favor, elija otro nombre. Con errores - + Name i.e: torrent name Nombre - + Size i.e: torrent size Tamaño - + Progress % Done Progreso - Status Torrent status (e.g. downloading, seeding, paused) - Estado + Estado - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Estado + + + Seeds i.e. full sources (often untranslated) Semillas - + Peers i.e. partial sources (often untranslated) Pares - + Down Speed i.e: Download speed Vel. Bajada - + Up Speed i.e: Upload speed Vel. Subida - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Tiempo Restante - + Category Categoría - + Tags Etiquetas - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Añadido el - + Completed On Torrent was completed on 01/01/2010 08:00 Completado - + Tracker Tracker - + Down Limit i.e: Download limit Límite de bajada - + Up Limit i.e: Upload limit Límite de subida - + Downloaded Amount of data downloaded (e.g. in MB) Bajado - + Uploaded Amount of data uploaded (e.g. in MB) Subido - + Session Download Amount of data downloaded since program open (e.g. in MB) Desc. Sesión - + Session Upload Amount of data uploaded since program open (e.g. in MB) Sub. Sesión - + Remaining Amount of data left to download (e.g. in MB) Restante - + + Time Active + Time (duration) the torrent is active (not stopped) + Tiempo Activo + + + + Yes + + + + + No + No + + Time Active Time (duration) the torrent is active (not paused) - Tiempo Activo + Tiempo Activo - + Save Path Torrent save path Ruta de Destino - + Incomplete Save Path Torrent incomplete save path Ruta de destino incompleta - + Completed Amount of data completed (e.g. in MB) Completado - + Ratio Limit Upload share ratio limit Limite de Ratio - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Ultima vez visto completo - + Last Activity Time passed since a chunk was downloaded/uploaded Última Actividad - + Total Size i.e. Size including unwanted data Tamaño Total - + Availability The number of distributed copies of the torrent Disponibilidad - + Info Hash v1 i.e: torrent info hash v1 Informacion Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Informacion Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Reanunciar en + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago hace %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sembrado durante %2) @@ -11538,334 +12146,358 @@ Por favor, elija otro nombre. TransferListWidget - + Column visibility Visibilidad de columnas - + Recheck confirmation Confirmación de comprobación - + Are you sure you want to recheck the selected torrent(s)? ¿Esta seguro que desea comprobar los torrents seleccionados? - + Rename Renombrar - + New name: Nuevo nombre: - + Choose save path Seleccione una ruta de destino - Confirm pause - Confirmar pausa + Confirmar pausa - Would you like to pause all torrents? - ¿Te gustaría pausar todos los torrents? + ¿Te gustaría pausar todos los torrents? - Confirm resume - Confirmar reanudar + Confirmar reanudar - Would you like to resume all torrents? - ¿Te gustaría reanudar todos los torrents? + ¿Te gustaría reanudar todos los torrents? - + Unable to preview Imposible previsualizar - + The selected torrent "%1" does not contain previewable files El torrent seleccionado "%1" no contiene archivos previsualizables - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Cambiar el tamaño de todas las columnas no ocultas al tamaño original de sus contenidos. - + Enable automatic torrent management Habilitar administración de torrent automática. - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. ¿Está seguro de que desea activar la administración automática de Torrent para el/los Torrent(s) seleccionados? Pueden que sean reubicados. - Add Tags - Añadir etiquetas + Añadir etiquetas - + Choose folder to save exported .torrent files Elija la carpeta para guardar los archivos .torrent exportados - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Error al exportar el archivo .torrent. Torrent: "%1". Guardar ruta: "%2". Motivo: "%3" - + A file with the same name already exists Ya existe un archivo con el mismo nombre - + Export .torrent file error Exportar error de archivo .torrent - + Remove All Tags Eliminar todas las etiquetas - + Remove all tags from selected torrents? ¿Eliminar todas las etiquetas de los torrents seleccionados? - + Comma-separated tags: Etiquetas separadas por comas: - + Invalid tag Etiqueta no válida - + Tag name: '%1' is invalid El nombre de la etiqueta: '%1' no es válido - &Resume Resume/start the torrent - &Continuar + &Continuar - &Pause Pause the torrent - &Pausar + &Pausar - Force Resu&me Force Resume/start the torrent - Forzar contin&uación + Forzar contin&uación - + Pre&view file... Pre&visualizar archivo... - + Torrent &options... &Opciones del torrent... - + Open destination &folder Abrir &carpeta de destino - + Move &up i.e. move up in the queue Mover &arriba - + Move &down i.e. Move down in the queue Mover &abajo - + Move to &top i.e. Move to top of the queue Mover al &principio - + Move to &bottom i.e. Move to bottom of the queue Mover al &final - + Set loc&ation... Est&ablecer destino... - + Force rec&heck Forzar verificación de arc&hivo - + Force r&eannounce Forzar r&ecomunicación - + &Magnet link Enlace &Magnético - + Torrent &ID &ID del torrent - + + &Comment + &Comentario + + + &Name &Nombre - + Info &hash v1 Informacion &hash v1 - + Info h&ash v2 Informacion &hash v2 - + Re&name... Re&nombrar... - + Edit trac&kers... Editar trac&kers... - + E&xport .torrent... E&xportar .torrent... - + Categor&y Categori&a - + &New... New category... &Nuevo... - + &Reset Reset category &Restablecer - + Ta&gs Etique&tas - + &Add... Add / assign multiple tags... &Añadir... - + &Remove All Remove all tags &Eliminar Todo - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Cola - + &Copy &Copiar - + Exported torrent is not necessarily the same as the imported El torrent exportado no es necesariamente el mismo que el importado - + Download in sequential order Descargar en orden secuencial - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Ocurrieron errores al exportar archivos .torrent. Consulte el registro de ejecución para obtener más información. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Eliminar - + Download first and last pieces first Descargar antes primeras y últimas partes - + Automatic Torrent Management Administración automática de torrents - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Modo automático significa que varias propiedades del Torrent (i.e. ruta de guardado) será decidida por la categoría asociada. - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - No se puede forzar la reanudación si el torrent está en pausa, en cola, con error o comprobando + No se puede forzar la reanudación si el torrent está en pausa, en cola, con error o comprobando - + Super seeding mode Modo supersiembra @@ -11910,28 +12542,28 @@ Por favor, elija otro nombre. ID de icono - + UI Theme Configuration. Configuración de tema de IU. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Los cambios en el tema de IU no pudieron ser aplicados completamente. Los detalles están en el Log. - + Couldn't save UI Theme configuration. Reason: %1 No se pudo guardar la configuración del tema de IU. Razón: %1 - - + + Couldn't remove icon file. File: %1. No se pudo borrar el fichero de icono. Fichero: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. No se pudo copiar el fichero de icono. Origen: %1. Destino: %2. @@ -11939,7 +12571,12 @@ Por favor, elija otro nombre. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Error cargando el tema de IU desde el fichero: "%1" @@ -11970,89 +12607,82 @@ Por favor, elija otro nombre. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" No se ha podido migrar las preferencias: WebUI https, archivo: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Preferencias migradas: https WebUI, datos exportados a fichero: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Se encontró un valor inválido en el archivo de configuración, volviéndolo a los valores predeterminados. Clave: "%1". Valor inválido: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python detectado, nombre del ejecutable: '%1', versión: %2 - - - Python not detected - Python no detectado - Found Python executable. Name: "%1". Version: "%2" - + Se encontró el ejecutable de Python. Nombre: "%1". Versión: "%2" Failed to find Python executable. Path: "%1". - + Error al encontrar el ejecutable de Python. Ruta: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + No se encontró el ejecutable de `python3` en la variable de entorno PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + No se encontró el ejecutable de `python` en la variable de entorno PATH: "%1" Failed to find `python` executable in Windows Registry. - + No se pudo encontrar el ejecutable `python` en el Registro de Windows. Failed to find Python executable - + No se pudo encontrar el ejecutable de Python Utils::IO - + File open error. File: "%1". Error: "%2" Error al abrir el archivo. Archivo: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 El tamaño del archivo excede el límite. Archivo: "%1". Tamaño del archivo: %2. Límite de tamaño: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + El tamaño del archivo excede el límite de tamaño de datos. Archivo: "%1". Tamaño de archivo: %2. Límite de matriz: %3 - + File read error. File: "%1". Error: "%2" Error de lectura de archivo. Archivo: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Tamaño de lectura incorrecto. Archivo: "%1". Esperado: %2. Real: %3 @@ -12116,72 +12746,72 @@ Por favor, elija otro nombre. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Se especificó un nombre de cookie de sesión inaceptable: '%1'. Se usa uno predeterminado. - + Unacceptable file type, only regular file is allowed. Tipo de archivo no aceptable, solo se aceptan de tipo regular. - + Symlinks inside alternative UI folder are forbidden. Los enlaces simbólicos dentro de la carpeta de la interfaz alternativa están prohibidos. - - Using built-in Web UI. - Usando la interfaz Web integrada. + + Using built-in WebUI. + Usando WebUI incorporada. - - Using custom Web UI. Location: "%1". - Usando interfaz Web personalizada. Ubicación: "%1". + + Using custom WebUI. Location: "%1". + Usando WebUI personalizada. Ruta: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - La traducción de la interfaz Web para la configuración regional seleccionada (%1) se ha cargado correctamente. + + WebUI translation for selected locale (%1) has been successfully loaded. + La traducción de WebUI para la configuración regional seleccionada (%1) se cargó correctamente. - - Couldn't load Web UI translation for selected locale (%1). - No se pudo cargar la traducción de la interfaz Web para la configuración regional seleccionada (%1). + + Couldn't load WebUI translation for selected locale (%1). + No se pudo cargar la traducción de la interfaz de usuario web para la configuración regional seleccionada (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Falta separador ':' en cabecera personalizada WebUI: "%1" - + Web server error. %1 Error del servidor web. %1 - + Web server error. Unknown error. Error del servidor web. Error desconocido. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' interfaz Web: ¡El encabezado de origen y el origen objetivo no coinciden! IP de origen: '%1'. Encabezado de origen: '%2'. Origen objetivo: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' interfaz Web: ¡El encabezado de referencia y el origen objetivo no coinciden! IP de origen: '%1'. Encabezado de referencia: '%2'. Origen objetivo: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' interfaz Web: Encabezado Host inválido, los puertos no coinciden. IP de origen de la solicitud: '%1'. Puerto del servidor: '%2'. Encabezado Host recibido: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' interfaz Web: Encabezado Host inválido. IP de origen de la solicitud: '%1'. Encabezado Host recibido: '%2' @@ -12189,143 +12819,136 @@ Por favor, elija otro nombre. WebUI - - Web UI: HTTPS setup successful - interfaz Web: conexión HTTPS exitosa + + Credentials are not set + Las credenciales no están configuradas + + + + WebUI: HTTPS setup successful + WebUI: Configuración de HTTPS exitosa - - Web UI: HTTPS setup failed, fallback to HTTP - interfaz Web: conexión HTTPS fallida, volviendo a HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: Configuración de HTTPS fallida, se regresa a HTTP - - Web UI: Now listening on IP: %1, port: %2 - La interfaz Web está escuchando IP: %1, puerto %2 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Esta escuchando en IP: %1, puerto: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Error de la interfaz Web - No se puede enlazar la IP %1 Puerto %2 Razón %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + No se puede enlazar a la IP: %1, puerto: %2. Motivo: %3 + + + + fs + + + Unknown error + Error desconocido misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1a %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1a %2d - - - - + + Unknown Unknown (size) Desconocido - + qBittorrent will shutdown the computer now because all downloads are complete. Todas las descargas se han completado. qBittorrent apagará el equipo ahora. - + < 1m < 1 minute <1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_et.ts b/src/lang/qbittorrent_et.ts index efa06aa20cb6..d4255bd506a2 100644 --- a/src/lang/qbittorrent_et.ts +++ b/src/lang/qbittorrent_et.ts @@ -14,77 +14,77 @@ Teave - + Authors Autorid - + Current maintainer Praegune haldur - + Greece Kreeka - - + + Nationality: Rahvus: - - + + E-mail: E-post: - - + + Name: Nimi: - + Original author Algne autor - + France Prantsusmaa - + Special Thanks Erilised tänusõnad - + Translators Tõlkijad - + License Litsents - + Software Used Kasutatud tarkvara - + qBittorrent was built with the following libraries: qBittorrent ehitati järgnevate teekidega: - + Copy to clipboard - + Kopeeri lõikelauale @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Autoriõigus %1 2006-2023 Projekt qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Autoriõigus %1 2006-2024 Projekt qBittorrent @@ -166,14 +166,13 @@ Salvesta asukohta - + Never show again Ära enam näita - Torrent settings - Torrenti seaded + Torrenti seaded @@ -191,12 +190,12 @@ Käivita torrent - + Torrent information Torrenti info - + Skip hash check Jäta vahele räsi kontroll @@ -205,6 +204,11 @@ Use another path for incomplete torrent Kasuta muud asukohta poolikutel torrentitel + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Peatamise tingimus: - - + + None - - + + Metadata received Metaandmed kätte saadud - - + + Torrents that have metadata initially will be added as stopped. + Torrentid, millel on metaandmed, lisatakse peatutuna. + + + + Files checked - + Add to top of queue Lisa ootejärjekorras esimeseks - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Kui on valitud, siis .torrent'i faili ei kustutata, misest, et sätete "Allalaadimised" lehel, seadete dialoogis, oli valitud teisiti - + Content layout: Sisu paigutus: - + Original Algne - + Create subfolder Loo alamkaust - + Don't create subfolder Ära loo alamkausta - + Info hash v1: Info räsi v1: - + Size: Suurus: - + Comment: Kommentaar: - + Date: Kuupäev: @@ -324,245 +333,182 @@ Pea meeles hiljutist salvestamise asukohta - + Do not delete .torrent file Ära kustuta .torrent faili - + Download in sequential order Järjestikuses allalaadimine - + Download first and last pieces first Lae alla esmalt esimene ja viimane tükk - + Info hash v2: Info räsi v2: - + Select All Vali kõik - + Select None Eemalda valik - + Save as .torrent file... Salvesta kui .torrent fail... - + I/O Error I/O viga - Invalid torrent - Vigane torrent - - - + Not Available This comment is unavailable Pole saadaval - + Not Available This date is unavailable Pole Saadaval - + Not available Pole saadaval - Invalid magnet link - Vigane magneti link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Torrenti laadimine ebaõnnestus: %1. -Viga: %2 - - - This magnet link was not recognized - Seda magneti linki ei tuvastatud - - - + Magnet link Magneti link - + Retrieving metadata... Hangitakse metaandmeid... - - + + Choose save path Vali salvestamise asukoht - Torrent is already present - see Torrent on juba olemas - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' on juba ülekandeloendis. Jälgijaid pole ühendatud, kuna see on privaatne torrent. - - - Torrent is already queued for processing. - Torrent on juba töötlemiseks järjekorras. - - - + No stop condition is set. Pole peatamise tingimust määratud. - + Torrent will stop after metadata is received. Torrent peatatakse pärast meta-andmete saamist. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. Torrent peatatakse pärast failide kontrolli. - + This will also download metadata if it wasn't there initially. See laeb alla ka metadata, kui seda ennem ei olnud. - - + + N/A Puudub - Magnet link is already queued for processing. - Magnet link on juba töötlemiseks järjekorras. - - - + %1 (Free space on disk: %2) %1 (Vabaruum kettal: %2) - + Not available This size is unavailable. Pole saadaval - + Torrent file (*%1) Torrenti fail (*%1) - + Save as torrent file Salvesta kui torrenti fail - + Couldn't export torrent metadata file '%1'. Reason: %2. Ei saanud eksportida torrenti metadata faili '%1'. Selgitus: %2. - + Cannot create v2 torrent until its data is fully downloaded. Ei saa luua v2 torrentit, enne kui pole andmed tervenisti allalaaditud. - Cannot download '%1': %2 - Ei saa allalaadida '%1': %2 - - - + Filter files... Filtreeri failid... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' on juba ülekandeloendis. Jälgijaid pole ühendatud, kuna see on privaatne torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' on juba ülekandeloendis. Kas soovite jälgijaid lisada uuest allikast? - - - + Parsing metadata... Metaandmete lugemine... - + Metadata retrieval complete Metaandmete hankimine sai valmis - - Failed to load from URL: %1. -Error: %2 - Nurjus laadimine URL-ist: %1. -Viga: %2 - - - Download Error - Allalaadimise viga - AddTorrentManager Downloading torrent... Source: "%1" - + Allalaaditakse torrentit... Allikas: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Nurjus torrenti lisamine. Allikas: "%1". Selgitus: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Tuvastati katse lisada duplikaat torrent. Allikas: %1. Olemasolev torrent: %2. Tulemus: %3 - + Merging of trackers is disabled - + Jälitajate kokkuliitmine on väljalülitatud - + Trackers cannot be merged because it is a private torrent - + Jälitajaid ei saa liita, kuna tegemist on privaatse torrentiga - + Trackers are merged from new source - + Jälitajad liidetakse uuest allikast @@ -648,72 +594,77 @@ Viga: %2 Jäta vahele räsi kontroll - - - Choose save path - Vali salvestamise asukoht + + Torrent share limits + Torrenti jagamise limiidid - - - - - - - Default - Vaikimisi + + + Choose save path + Vali salvestamise asukoht + + + - Yes - Jah + Default + Vaikimisi + Yes + Jah + + + + + No Ei - + Manual Käsitsi - + Automatic Automaatne - + Original Algne - + Create subfolder Loo alamkaust - + Don't create subfolder Ära loo alamkausta - + None - + Metadata received Metaandmed saabunud - + Files checked @@ -721,734 +672,852 @@ Viga: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Kontrolli üle torrentid pärast allalaadimist - - + + ms milliseconds ms - + Setting Seaded - + Value Value set for this setting Väärtus - + (disabled) (väljalülitatud) - + (auto) (automaatne) - + + min minutes min - + All addresses Kõik aadressid - + qBittorrent Section qBittorrenti jaotis - - + + Open documentation Ava dokumentatsioon - + All IPv4 addresses Kõik IPv4 aadressid - + All IPv6 addresses Kõik IPv6 aadressid - + libtorrent Section libtorrent jaotis - + Fastresume files Fastresume failid - + SQLite database (experimental) SQLite andmebaas (eksperimentaalne) - + Resume data storage type (requires restart) Jätkamise andmete salvestuse tüüp (taaskäivitus on vajalik) - + Normal Tavaline - + Below normal Alla tavalise - + Medium Keskmine - + Low Madal - + Very low Väga madal - - Process memory priority (Windows >= 8 only) - Protsessi mälu prioriteet (Windows >= 8 ainult) - - - + Physical memory (RAM) usage limit Füüsilise mälu (RAM) kasutamise piirang - + Asynchronous I/O threads Asünkroonsed I/O lõimed - + Hashing threads Räsi lõimed - + File pool size Failipanga suurus - + Outstanding memory when checking torrents Vajalik mälu torrentite kontrollimisel - + Disk cache Ketta vahemälu - - - - + + + + s seconds s - + Disk cache expiry interval Ketta puhvri aegumise intervall - + Disk queue size Ketta järjekorra suurus - - + + Enable OS cache Luba OS'i puhver - + Coalesce reads & writes Ühenda lugemised ja kirjutamised - + Use piece extent affinity Kasuta tüki ulatuse sidusust - + Send upload piece suggestions Saada üleslaadimise tükkide soovitusi - - - - + + + + + 0 (disabled) - + 0 (keelatud) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Väljuvad pordid (Min) [0: keelatud] - + Outgoing ports (Max) [0: disabled] - + Väljuvad pordid (Maks.) [0: keelatud] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] Teavituse aegumine [0: piiranguta, -1: süsteemi tavasäte] - + Maximum outstanding requests to a single peer Maksimum ootelolevate päringute arv ühele partnerile - - - - - + + + + + KiB KiB - + (infinite) - + (piiramatu) - + (system default) (süsteemi tavasäte) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux See valik on Linuxi puhul vähem tõhus - + + Process memory priority + Protsessi mälu prioriteet + + + Bdecode depth limit - + Bdecode token limit - + Default Vaikimisi - + Memory mapped files Mälukaardistatud failid - + POSIX-compliant POSIX-ühilduv - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Ketta IO tüüp (taaskäivitus on vajalik) - - + + Disable OS cache Keela OS'i puhver - + Disk IO read mode Ketta IO lugemisrežiim - + Write-through - + Disk IO write mode Ketta IO kirjutamisrežiim - + Send buffer watermark Saada puhvri vesimärk - + Send buffer low watermark Saada puhver madal vesimärk - + Send buffer watermark factor Saada puhvri vesimärgi faktor - + Outgoing connections per second Väljuvaid ühendusi ühes sekundis - - + + 0 (system default) 0 (süsteemi tavasäte) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Pesa tööjärje suurus - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent'i faili suuruse limiit - + Type of service (ToS) for connections to peers Teenuse tüüp (ToS) ühenduste puhul partneritega - + Prefer TCP Eelista TCP-d - + Peer proportional (throttles TCP) Proportsionaalne partnerite vahel (piirab TCP-d) - + Support internationalized domain name (IDN) Luba tugi rahvusvahelistele domeeninimedele (IDN) - + Allow multiple connections from the same IP address Luba mitu ühendust samalt IP aadressilt - + Validate HTTPS tracker certificates Valideeri HTTPS jälitajate sertifikaate - + Server-side request forgery (SSRF) mitigation Serveripoolse taotluse võltsimise (SSRF) leevendamine - + Disallow connection to peers on privileged ports Keela ühendus partneritega eelistatud portidel - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval Värskendamise intervall - + Resolve peer host names Lahenda partneri hostinimed - + IP address reported to trackers (requires restart) Jälgijatele saadetav IP-aadress (vajalik on taaskäivitus) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Koheselt teavita kõiki jälgijaid, kui IP või port on muutunud - + Enable icons in menus Luba ikoonid menüüs - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + Luba karantiin allalaaditud failidele + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Luba Mark-of-the-Web (MOTW) allalaaditud failidele + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + sek + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage Partnerite ringluse katkemise protsent - + Peer turnover threshold percentage Partnerite ringluse piirmäära protsent - + Peer turnover disconnect interval Partnerite ringluse katkemise sagedus - + Resets to default if empty - + Algne taastatakse, kui jätta tühjaks - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Näita teavitusi - + Display notifications for added torrents Näita teavitusi lisatud torrentitel - + Download tracker's favicon Lae alla jälitaja pisi-ikoon - + Save path history length Salvestuse asukoha-ajaloo pikkus - + Enable speed graphs Luba kiiruse graafikud - + Fixed slots Fikseeritud pesad - + Upload rate based - Üleslaadimise kiirus põhineb + Üleslaadimise kiiruse järgi - + Upload slots behavior Üleslaadimiste kohtade käitumine: - + Round-robin Round-robin - + Fastest upload Kiireim üleslaadimine - + Anti-leech Antikaan - + Upload choking algorithm - Üleslaadimise choking-algorütm + Üleslaadimise choking-algoritm - + Confirm torrent recheck Kinnita torrenti ülekontrollimist - + Confirm removal of all tags Kinnita üle, enne kõikide siltide eemaldamist - + Always announce to all trackers in a tier Saada teavitused alati kõikidele jälitajatele, mis samal tasandil - + Always announce to all tiers Anna alati teada kõigile tasanditele - + Any interface i.e. Any network interface Iga kasutajaliides - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP segarežiimi algoritm - + Resolve peer countries Leia partnerite riigid - + Network interface Võrguliides - + Optional IP address to bind to Valikuline IP-aadress, millega siduda - + Max concurrent HTTP announces Maksimaalselt samaaegseid HTTP-teavitusi - + Enable embedded tracker Luba integreeritud jälitaja - + Embedded tracker port Integreeritud jälitaja port - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 käivitatud + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Töötab kaasaskantavas režiimis. Automaatselt tuvastati profiili kaust asukohas: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Tuvastati üleliigne käsurea tähis: "%1". Kaasaskantav režiim eeldab suhtelist fastresume'i. - + Using config directory: %1 Kasutatakse konfiguratsiooni kataloogi: %1 - + Torrent name: %1 Torrenti nimi: %1 - + Torrent size: %1 Torrenti suurus: %1 - + Save path: %1 Salvesta kausta: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrenti allalaadimiseks kulus %1. - + + Thank you for using qBittorrent. Aitäh, et kasutad qBittorrentit. - + Torrent: %1, sending mail notification Torrent: %1, saadetakse e-posti teavitus - + Add torrent failed - + Torrenti lisamine nurjus - + Couldn't add torrent '%1', reason: %2. - + Ei saanud lisada torrentit '%1', selgitus: %2. + + + + The WebUI administrator username is: %1 + WebUI administraatori kasutajanimi on: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + WebUI administraatori parooli pole määratud. Ajutine parool on selleks sessiooniks: %1 - + + You should set your own password in program preferences. + Te peaksite määrama omaenda parooli programmi sätetes. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Torrent %1' on lõpetanud allalaadimise - + WebUI will be started shortly after internal preparations. Please wait... WebUI käivitub peatselt pärast ettevalmistusi. Palun oodake... - - + + Loading torrents... Laetakse torrenteid... - + E&xit S&ulge - + I/O Error i.e: Input/Output Error I/O viga - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Viga: %2 Selgitus: %2 - Error - Viga - - - Failed to add torrent: %1 - Nurjus torrenti lisamine: %1 - - - + Torrent added Torrent lisatud - + '%1' was added. e.g: xxx.avi was added. '%1' oli lisatud. - + Download completed Allalaadimine sai valmis - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' on allalaaditud. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - URL allalaadimise viga + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Ei saanud allalaadida faili URL'ist '%1', selgitus: %2 + + Test email + - Torrent file association - Torrent failidega sidumine - - - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent ei ole peamine programm torrenti failide ja Magnet linkide avamiseks. -Soovite qBittorrenti määrata peamiseks programmiks, et neid avada? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' on allalaaditud. - + Information Informatsioon - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - qBittorrent'i juhtimiseks avage veebi kasutajaliides aadressil: %1 - - - - The Web UI administrator username is: %1 - Web UI administraatori kasutajanimi on: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web UI administraatori parooli pole muudetud tava paroolist: %1 - - - - This is a security risk, please change your password in program preferences. - See on turvalisuse risk, palun muudke oma parooli programmi seadetes. - - - Application failed to start. - Rakenduse käivitamine ebaõnnestus. + Juhtimaks qBittorrent'it, avage WebUI aadressil: %1 - + Exit Sulge - + Recursive download confirmation - Korduv allalaadimise kinnitamine + Korduv allalaadimise kinnitamine - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' sisaldab .torrent faile, soovite jätkata nende allalaadimist? + Torrent '%1' sisaldab .torrent faile, soovite jätkata nende allalaadimist? - + Never - Mitte kunagi + Mitte kunagi - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Korduv .torrent faili allalaadimine torrentist. Allikaks on torrent: "%1". Fail: "%2" + Korduv .torrent faili allalaadimine torrentist. Allikaks on torrent: "%1". Fail: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - Füüsilise mälu (RAM) kasutuspiirangu määramine nurjus. Veakood: %1. Veateade: "%2" + Nurjus füüsilise mälu (RAM) kasutamise piirangu määramine. Veakood: %1. Veateade: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Nurjus füüsilise mälu (RAM) kasutuspiirangu määramine. Taotletud suurus: %1. Süsteemi piirang: %2. Vea kood: %3. Veateade: "%4" - + qBittorrent termination initiated qBittorrenti sulgemine käivitakse - + qBittorrent is shutting down... qBittorrent suletakse... - + Saving torrent progress... Salvestan torrenti seisu... - + qBittorrent is now ready to exit qBittorrent on nüüd sulgemiseks valmis @@ -1597,7 +1637,7 @@ Soovite qBittorrenti määrata peamiseks programmiks, et neid avada? AsyncFileStorage - + Could not create directory '%1'. Ei saanud luua sihtkohta '%1'. @@ -1605,22 +1645,22 @@ Soovite qBittorrenti määrata peamiseks programmiks, et neid avada? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI sisselogimise viga. Selgitus: IP on keelatud, IP: %1, kasutajanimi: %2 - + Your IP address has been banned after too many failed authentication attempts. Teie IP aadress on keelatud pärast liiga paljusid ebaõnnestunud autentimiskatseid. - + WebAPI login success. IP: %1 WebAPI sisselogimine õnnestus. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI login nurjus. Selgitus: sobimatud tuvastusandmed, proovimise katsetusi: %1, IP: %2, kasutajanimi: %3 @@ -1668,12 +1708,12 @@ Soovite qBittorrenti määrata peamiseks programmiks, et neid avada?Prioriteet: - + Must Not Contain: Ei tohi sisaldada: - + Episode Filter: Osa filter: @@ -1726,263 +1766,263 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe &Ekspordi... - + Matches articles based on episode filter. Sobitab artikleid vastavalt osa filtrile. - + Example: Näidis: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match vastab 2, 5, 8 kuni 15, 30 ja järgnevatele osadele esimesest hooajast - + Episode filter rules: Osade filtrite reeglid: - + Season number is a mandatory non-zero value Hooaja number on kohustuslik nullist erinev väärtus - + Filter must end with semicolon Filter peab lõppema semikooloniga - + Three range types for episodes are supported: Kolm toetatud vahemiku tüüpi episoodidele: - + Single number: <b>1x25;</b> matches episode 25 of season one Ühekordne number: <b>1x25;</b> ühtib osa 25-ga, esimesest hooajast - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Tavaline vahemik: <b>1x25-40;</b> ühtib osadega 25 kuni 40, esimesest hooajast - + Episode number is a mandatory positive value Osa number on kohustuslik positiivne väärtus - + Rules Reeglid - + Rules (legacy) Reeglid (vana) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Lõpmatu valik: <b>1x25-;</b> sobib esimese hooaja 25. ja hilisemate hooaegade kõigi osadega. - + Last Match: %1 days ago Viimane sobivus: %1 päeva tagasi - + Last Match: Unknown Viimane sobivus: teadmata - + New rule name Uus reegli nimi - + Please type the name of the new download rule. Palun sisesta nimi, allalaadimise uuele reeglile. - - + + Rule name conflict Reegli nime konflikt - - + + A rule with this name already exists, please choose another name. Samanimeline kategooria on olemas, palun vali teine nimi. - + Are you sure you want to remove the download rule named '%1'? Kindel, et soovid eemaldada allalaadimise reegli nimega '%1'? - + Are you sure you want to remove the selected download rules? Kindel, et soovid eemaldada valitud allalaadimise reeglid? - + Rule deletion confirmation Reegli kustutamise kinnitamine - + Invalid action Sobimatu toiming - + The list is empty, there is nothing to export. Nimekiri on tühi, pole midagi eksportida. - + Export RSS rules Ekspordi RSS reeglid - + I/O Error I/O viga - + Failed to create the destination file. Reason: %1 Nurjus sihtkohafaili loomine. Selgitus: %1 - + Import RSS rules Impordi RSS reeglid - + Failed to import the selected rules file. Reason: %1 Nurjus valitud reegli faili importimine. Selgitus: %1 - + Add new rule... Lisa uus reegel... - + Delete rule Kustuta reegel - + Rename rule... Ümbernimeta reegel... - + Delete selected rules Kustuta valitud reeglid - + Clear downloaded episodes... Eemalda allalaaditud osad... - + Rule renaming Reegli ümbernimetamine - + Please type the new rule name Palun sisesta uue reegli nimi - + Clear downloaded episodes Eemalda allalaaditud osad - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Kindel, et soovid eemaldada valitud reeglis allalaaditud osade nimekirja? - + Regex mode: use Perl-compatible regular expressions Regex-režiim: kasuta Perliga ühilduvaid regulaarseid väljendeid - - + + Position %1: %2 Positsioon %1: %2 - + Wildcard mode: you can use Wildcard-režiim: saate kasutada - - + + Import error Importimise viga - + Failed to read the file. %1 Nurjus faili lugemine. %1 - + ? to match any single character ? mis tahes üksikule tähemärgile vastamiseks - + * to match zero or more of any characters *, et sobitada null või rohkem tähemärki - + Whitespaces count as AND operators (all words, any order) Tühimikud loetakse AND-operaatoriteks (kõik sõnad, mis tahes järjekorras). - + | is used as OR operator | kasutatakse OR operaatorina - + If word order is important use * instead of whitespace. Kui sõnade järjekord on oluline, siis kasuta * tühimiku asemel. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Väljend tühja %1 klausliga (nt %2) - + will match all articles. vastab kõigile artiklitele. - + will exclude all articles. välistab kõik artiklid. @@ -2024,53 +2064,58 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Ei saa luua torrenti jätkukausta: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Ei saanud salvestada torrenti metadata't '%1'. Viga: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Ei õnnestunud salvestada torrendi jätkamise andmeid '%1'. Viga: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 Ei saanud salvestada andmeid asukohta '%1'. Viga: %2 @@ -2078,38 +2123,38 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe BitTorrent::DBResumeDataStorage - + Not found. Ei leitud. - + Couldn't load resume data of torrent '%1'. Error: %2 Ei õnnestunud laadida torrenti '%1' jätkamise andmeid. Viga: %2 - - + + Database is corrupted. Andmebaas on vigane. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Ei saanud salvestada torrenti metadata't. Viga: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Ei saanud salvestada jätkamise andmeid torrent '%1' jaoks. Viga: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Ei õnnestunud kustutada torrenti '%1' jätkamise andmeid. Viga: %2 - + Couldn't store torrents queue positions. Error: %1 Ei saanud salvestada torrentite järjekorra positsioone. Viga: %1 @@ -2140,570 +2185,616 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Hajutatud räsitabeli (DHT) tugi: %1 - - - - - - - - - + + + + + + + + + ON SEES - - - - - - - - - + + + + + + + + + OFF VÄLJAS - - + + Local Peer Discovery support: %1 Kohaliku partneri avastamise toetus: %1 - + Restart is required to toggle Peer Exchange (PeX) support Taaskäivitus on vajalik, et muuta Peer Exchange (PeX) tuge - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Nurjus torrenti jätkamine. Torrent: "%1". Selgitus: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Torrenti ei õnnestunud jätkata: tuvastati vastuoluline torrenti ID. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Avastatud vastuolulised andmed: kategooria puudub konfiguratsioonifailist. Kategooria taastatakse, kuid selle seaded taastatakse vaikimisi. Torrent: "%1". Kategooria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Avastatud vastuolulised andmed: kehtetu kategooria. Torrent: "%1". Kategooria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Avastatud ebakõla taastatava kategooria asukohtade ja torrenti praeguse asukoha vahel. Torrent on nüüd lülitatud manuaalsesse režiimi. Torrent: "%1". Kategooria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" Partneri ID: "%1" - + HTTP User-Agent: "%1" HTTP kasutajaagent: "%1" - + Peer Exchange (PeX) support: %1 Peer Exchange (PeX) tugi: %1 - - + + Anonymous mode: %1 Anonüümne režiim: %1 - - + + Encryption support: %1 Krüpteeringu tugi: %1 - - + + FORCED SUNNITUD - + Could not find GUID of network interface. Interface: "%1" Ei suutnud leida võrguliidese GUID-i. Liides: "%1" - + Trying to listen on the following list of IP addresses: "%1" Proovin kuulata järgmist IP-aadresside nimekirja: "%1" - + Torrent reached the share ratio limit. Torrent jõudis jagamise määra piirini. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Eemaldati torrent. + Eemaldati torrent. - - - Removed torrent and deleted its content. - Eemaldati torrent ja kustutati selle sisu. + Eemaldati torrent ja kustutati selle sisu. - - - Torrent paused. - Torrent on pausitud. + Torrent on pausitud. - - - + Super seeding enabled. Super jagamine lubatud - + Torrent reached the seeding time limit. Torrent jõudis jagamise aja piirini. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" Nurjus torrenti laadimine. Selgitus: "%1" - + I2P error. Message: "%1". + I2P viga. Teade: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP tugi: SEES + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Allalaaditakse torrentit, palun oodake... Allikas: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Nurjus torrenti laadimine. Allikas: "%1". Selgitus: "%2" + + Session shutdown timed out. + - - UPnP/NAT-PMP support: ON + + Removing torrent. - - UPnP/NAT-PMP support: OFF + + Removing torrent and deleting its content. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Nurjus torrenti eksportimine. Torrent: "%1". Sihtkoht: "%2". Selgitus: "%3" + + Torrent stopped. + - - Aborted saving resume data. Number of outstanding torrents: %1 - Jätkamise andmete salvestamine katkestati. Ootelolevate torrentide arv: %1 + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Jälitajate kokkuliitmine on väljalülitatud + + + + Trackers cannot be merged because it is a private torrent + Jälitajaid ei saa liita, kuna tegemist on privaatse torrentiga - System network status changed to %1 - e.g: System network status changed to ONLINE - Süsteemi ühenduse olek on muutunud %1 + + Trackers are merged from new source + Jälitajad liidetakse uuest allikast - ONLINE - VÕRGUS + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP tugi: VÄLJAS - OFFLINE - VÕRGUÜHENDUSETA + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Nurjus torrenti eksportimine. Torrent: "%1". Sihtkoht: "%2". Selgitus: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Võrgukonfiguratsioon %1 on muutunud, sessiooni sidumise värskendamine + + Aborted saving resume data. Number of outstanding torrents: %1 + Jätkamise andmete salvestamine katkestati. Ootelolevate torrentide arv: %1 - + The configured network address is invalid. Address: "%1" Konfigureeritud võrguaadress on kehtetu. Aadress: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Ei õnnestunud leida konfigureeritud võrgu aadressi, mida kuulata. Aadress: "%1" - + The configured network interface is invalid. Interface: "%1" Konfigureeritud võrguliides on kehtetu. Liides: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Keelatud IP aadresside nimekirja kohaldamisel lükati tagasi kehtetu IP aadress. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Torrentile lisati jälitaja. Torrent: "%1". Jälitaja: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Eemaldati jälitaja torrentil. Torrent: "%1". Jälitaja: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Lisatud URL-seeme torrentile. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Eemaldatud URL-seeme torrentist. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent on pausitud. Torrent: "%1" + Torrent on pausitud. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrentit jätkati. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrent-i allalaadimine on lõppenud. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrenti liikumine tühistatud. Torrent: "%1". Allikas: "%2". Sihtkoht: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Ei saanud torrenti teisaldamist järjekorda lisada. Torrent: "%1". Allikas: "%2". Sihtkoht: "%3". Selgitus: torrent liigub hetkel sihtkohta - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Ei suutnud järjekorda lisada torrenti liigutamist. Torrent: "%1". Allikas: "%2" Sihtkoht: "%3". Selgitus: mõlemad teekonnad viitavad samale asukohale. - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Järjekorda pandud torrenti liikumine. Torrent: "%1". Allikas: "%2". Sihtkoht: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Alusta torrenti liigutamist. Torrent: "%1". Sihtkoht: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Kategooriate konfiguratsiooni salvestamine ebaõnnestus. Faili: "%1". Viga: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Kategooriate konfiguratsiooni analüüsimine ebaõnnestus. Faili: "%1". Viga: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Korduv .torrent faili allalaadimine torrentist. Allikaks on torrent: "%1". Fail: "%2" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP-filtri faili edukas analüüsimine. Kohaldatud reeglite arv: %1 - + Failed to parse the IP filter file IP-filtri faili analüüsimine ebaõnnestus - + Restored torrent. Torrent: "%1" Taastatud torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Lisatud on uus torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrenti viga. Torrent: "%1". Viga: "%2" - - Removed torrent. Torrent: "%1" - Eemaldati torrent. Torrent: "%1" + Eemaldati torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Eemaldati torrent ja selle sisu. Torrent: "%1" + Eemaldati torrent ja selle sisu. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentil puudub SSL parameetrid. Torrent: "%1". Teade: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Faili veahoiatus. Torrent: "%1". Faili: "%2". Selgitus: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP portide kaardistamine nurjus. Teade: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP portide kaardistamine õnnestus. Teade: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtreeritud port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + SOCKS5 proksi viga. Aadress: %1. Teade: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 segarežiimi piirangud - + Failed to load Categories. %1 Ei saanud laadida kategooriaid. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - - - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Nurjus kategooriate sättete laadimine. Faili: "%1". Viga: "vale andmevorming" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 on väljalülitatud - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 on väljalülitatud - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL-seemne DNS-otsing nurjus. Torrent: "%1". URL: "%2". Viga: "%3" + URL-seemne DNS-otsing nurjus. Torrent: "%1". URL: "%2". Viga: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Saabunud veateade URL-seemnest. Torrent: "%1". URL: "%2". Teade: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Edukas IP-kuulamine. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Ei saanud kuulata IP-d. IP: "%1". Port: "%2/%3". Selgitus: "%4" - + Detected external IP. IP: "%1" Avastatud väline IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Viga: Sisemine hoiatuste järjekord on täis ja hoiatused tühistatakse, võib tekkida jõudluse langus. Tühistatud hoiatuste tüüp: "%1". Teade: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent edukalt teisaldatud. Torrent: "%1". Sihtkoht: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Ei saanud torrentit liigutada. Torrent: "%1". Allikas: "%2". Sihtkoht: "%3". Selgitus: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Toiming tühistati - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Uue torrenti faili loomine nurjus. Selgitus: %1. + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Toiming tühistati + Toiming tühistati + + Create new torrent file failed. Reason: %1. - Uue torrenti faili loomine nurjus. Selgitus: %1. + Uue torrenti faili loomine nurjus. Selgitus: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Nurjus partneri lisamine "%1" torrentile "%2". Selgitus: %3 - + Peer "%1" is added to torrent "%2" Partner "%1" on lisatud torrenti "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Ei saanud faili kirjutada. Selgitus: "%1". Torrent on nüüd "ainult üleslaadimise" režiimis. - + Download first and last piece first: %1, torrent: '%2' Lae alla esmalt esimene ja viimane tükk: %1, torrent: '%2' - + On Sees - + Off Väljas - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Ei saanud torrentit taastada. Arvatavasti on failid teisaldatud või salvestusruum ei ole kättesaadav. Torrent: "%1". Selgitus: "%2" - + Missing metadata Puuduvad metaandmed - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Faili ümbernimetamine nurjus. Torrent: "%1", fail: "%2", selgitus: "%3" - + Performance alert: %1. More info: %2 Toimivushäire: %1. Rohkem infot: %2 @@ -2724,184 +2815,198 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameeter '%1' peab järgima süntaksit '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Parameeter '%1' peab järgima süntaksit '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - + Parameeter '%1' peab järgima süntaksit '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). %1 määratud port peab olema sobiv (1 kuni 65535). - + Usage: Kasutus: - + [options] [(<filename> | <url>)...] - + Options: Valikud: - + Display program version and exit Kuva programmi versioon ja sule - + Display this help message and exit Kuva see abitekst ja sulge - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameeter '%1' peab järgima süntaksit '%1=%2' + + + + Confirm the legal notice + + + + + port Port - - Change the Web UI port - Muuda Web UI porti + + Change the WebUI port + Muuda WebUI porti - + Change the torrenting port Muuda torrentimise porti - + Disable splash screen - + Run in daemon-mode (background) Käivitab deemon-režiimis (taustal) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Hoiusta konfiguratsiooni faile asukohas <dir> - - + + name Nimi - + Store configuration files in directories qBittorrent_<name> Hoia konfiguratsiooni faile asukohtades qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Haki libtorrent fastresume failidesse ja tee failide asukohad suhteliseks profiili kataloogi suhtes - + files or URLs failid või URL-id - + Download the torrents passed by the user Laadige kasutaja poolt edastatud torrentid alla - + Options when adding new torrents: Valikud kui lisatakse uued torrentid: - + path asukoht - + Torrent save path Torrenti salvestamise asukoht - + + Add torrents as running or stopped + + + Add torrents as started or paused - Lisa torrentid käivitatuna või pausitutena + Lisa torrentid käivitatuna või pausitutena - + Skip hash check Jäta vahele räsi kontroll - + Assign torrents to category. If the category doesn't exist, it will be created. Määra torrentitele kategooriad. Kui kategooriat pole, siis see luuakse. - + Download files in sequential order Järjestikuses failide allalaadimine - + Download first and last pieces first Lae alla esmalt esimene ja viimane tükk - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Määra, et kas avatakse dialoog "Lisa Uus Torrent", torrentite lisamisel. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Valiku väärtused võib esitada keskkonnamuutujate kaudu. 'parameetri-nimi' nimelise valiku puhul on keskkonnamuutuja nimi 'QBT_PARAMETER_NAME' (suures kirjas, '-' asendatud '_'-ga). Lipuväärtuste edastamiseks tuleb muutuja väärtuseks määrata '1' või 'TRUE'. Näiteks, et keelata splash screen: - + Command line parameters take precedence over environment variables - + Help Abi @@ -2909,17 +3014,17 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe CategoryFilterModel - + Categories Kategooriad - + All Kõik - + Uncategorized Kategooriata @@ -2953,13 +3058,21 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe - Resume torrents - Jätka torrentitega + Start torrents + + Stop torrents + + + + Resume torrents + Jätka torrentitega + + Pause torrents - Pausi torrentid + Pausi torrentid @@ -2970,15 +3083,20 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe ColorWidget - + Edit... Muuda... - + Reset + + + System + + CookiesDialog @@ -3019,12 +3137,12 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3032,7 +3150,7 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3051,23 +3169,27 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe + Also remove the content files + + + Also permanently delete the files - Samuti kustuta lõplikult ka failid + Samuti kustuta lõplikult ka failid - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Kindel, et soovite eemaldada '%1' edastuste nimekirjast? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Kindel, et soovite eemaldada %1 torrentid edastuste nimekirjast? - + Remove Eemalda @@ -3080,12 +3202,12 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe Laadi alla URL-idelt - + Add torrent links Lisa torrenti lingid - + One link per line (HTTP links, Magnet links and info-hashes are supported) Üks link ühe rea kohta (HTTP lingid, Magnet lingid ja info-räsid on toetatud) @@ -3095,12 +3217,12 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe Laadi alla - + No URL entered URL on sisestamata - + Please type at least one URL. Palun sisesta vähemalt üks URL. @@ -3259,64 +3381,91 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe Analüüsi viga: filtrifail ei ole sobilik PeerGuardian P2B fail. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Allalaaditakse torrentit... Allikas: "%1" - Trackers cannot be merged because it is a private torrent - + Jälitajaid ei saa liita, kuna tegemist on privaatse torrentiga - + Torrent is already present - see Torrent on juba olemas + see Torrent on juba olemas + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' on juba ülekandeloendis. Kas soovite jälgijaid lisada uuest allikast? + Torrent '%1' on juba ülekandeloendis. Kas soovite jälgijaid lisada uuest allikast? GeoIPDatabase - - + + Unsupported database file size. Ei toeta sellist andmebaasi faili suurust. - + Metadata error: '%1' entry not found. Metaandmete viga: kirjet '%1' ei leitud. - + Metadata error: '%1' entry has invalid type. Metaandmete viga: '%1' kirje on sobimatu. - + Unsupported database version: %1.%2 Puudub tugi andmebaasi versioonile: %1.%2 - + Unsupported IP version: %1 Puudub tugi IP versioonile: %1 - + Unsupported record size: %1 Toetamata kirje suurus: %1 - + Database corrupted: no data section found. Andmebaas vigane: ei leitud andmete sektsiooni. @@ -3324,17 +3473,17 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP-päringu suurus ületab piirangu, pesa suletakse. Piirang: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Vigane HTTP-päring, pesa sulgemine. IP: %1 @@ -3375,36 +3524,64 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe IconWidget - + Browse... Sirvi... - + Reset - + Select icon Vali ikoon - + Supported image files Toetatud pildi failid + + LegalNotice + + + Legal Notice + Juriidiline teade + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent on failide jagamise programm. Kui käivitate torrenti, siis selle andmeid edastatakse teistele. Kõik mida jagad on su enda vastutada. + + + + No further notices will be issued. + Rohkem teid sellest ei teavitata. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + Vajutage 'Enter' klahvi, et jätkata... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 blokeeriti. Selgitus: %2. - + %1 was banned 0.0.0.0 was banned %1 on nüüd keelatud @@ -3413,91 +3590,62 @@ Toetab formaate: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (kuupäevade formaate toe Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - Ei saa kasutada %1: qBittorrent on juba käivitatud, samal kasutajal. - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Juriidiline teade - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent on failide jagamise programm. Kui käivitate torrenti, siis selle andmeid edastatakse teistele. Kõik mida jagad on su enda vastutada. - - - - No further notices will be issued. - Rohkem teid sellest ei teavitata. - - - - Press %1 key to accept and continue... - Vajuta %1 klahvi, et nõustuda ja jätkata... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent on failide jagamise programm. Kui käivitate torrenti, siis selle andmeid edastatakse teistele. Kõik mida jagad on su enda vastutada. - -Rohkem teid ei teavitata. + + You cannot use %1: qBittorrent is already running. + Ei saa kasutada %1: qBittorrent on juba käivitatud. - - Legal notice + + Another qBittorrent instance is already running. - - Cancel - Tühista + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Mina Nõustun + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3508,621 +3656,706 @@ Rohkem teid ei teavitata. &Muuda - + &Tools &Tööriistad - + &File &Fail - + &Help &Abi - + On Downloads &Done Kui allalaadimised &lõpetatud - + &View &Vaade - + &Options... &Valikud... - &Resume - &Jätka + &Jätka - + &Remove &Eemalda - + Torrent &Creator Torrenti &Looja - - + + Alternative Speed Limits Alternatiivsed kiiruse limiidid - + &Top Toolbar &Ülemine Tööriistariba - + Display Top Toolbar Kuva Ülemine Tööriistariba - + Status &Bar Oleku &Riba - + Filters Sidebar Filtrite külgriba - + S&peed in Title Bar K&iirus mis on Tiitliribal - + Show Transfer Speed in Title Bar Näita Edastuste Kiirust Tiitliribal - + &RSS Reader &RSS Lugeja - + Search &Engine Otsingu &Mootor - + L&ock qBittorrent L&ukusta qBittorrent - + Do&nate! &Anneta! - + + Sh&utdown System + + + + &Do nothing &Ära tee midagi - + Close Window Sulge Aken - R&esume All - J&ätka Kõikidega + J&ätka Kõikidega - + Manage Cookies... Halda Küpsiseid... - + Manage stored network cookies Halda hoiustatud ühenduste-küpsiseid - + Normal Messages Tava teavitused - + Information Messages Info teavitused - + Warning Messages Hoiatus teavitused - + Critical Messages Kriitilised teavitused - + &Log &Logid - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Määra üldise kiiruse limiidid... - + Bottom of Queue Järjekorras viimaseks - + Move to the bottom of the queue Liiguta järjekorras viimaseks - + Top of Queue Esimeseks Järjekorras - + Move to the top of the queue Liiguta järjekorras esimeseks - + Move Down Queue Liiguta Alla Järjekorras - + Move down in the queue Liiguta järjekorras allapoole - + Move Up Queue Liiguta Üles Järjekorras - + Move up in the queue Liiguta järjekorras ülespoole - + &Exit qBittorrent &Sule qBittorrent - + &Suspend System &Peata süsteem - + &Hibernate System &Pane süsteem talveunerežiimi - S&hutdown System - S&ulge süsteem + S&ulge süsteem - + &Statistics &Statistika - + Check for Updates Kontrolli Uuendusi - + Check for Program Updates Kontrolli Programmi Uuendusi - + &About &Teave - &Pause - &Pane pausile + &Pane pausile - P&ause All - P&ausi Kõik + P&ausi Kõik - + &Add Torrent File... &Lisa Torrenti Fail... - + Open Ava - + E&xit S&ulge - + Open URL Ava URL - + &Documentation &Dokumentatsioon - + Lock Lukusta - - - + + + Show Näita - + Check for program updates Kontrolli programmi uuendusi - + Add Torrent &Link... Lisa Torrenti &Link... - + If you like qBittorrent, please donate! Kui sulle meeldib qBittorrent, palun annetage! - - + + Execution Log Toimingute logi - + Clear the password Eemalda see parool - + &Set Password &Määra Parool - + Preferences Eelistused - + &Clear Password &Eemalda parool - + Transfers Ülekanded - - + + qBittorrent is minimized to tray qBittorrent on minimeeritud tegumireale - - - + + + This behavior can be changed in the settings. You won't be reminded again. Seda käitumist saab muuta seadetest. Teid ei teavita sellest rohkem. - + Icons Only Ainult ikoonid - + Text Only Ainult tekst - + Text Alongside Icons Text Ikoonide Kõrval - + Text Under Icons Text Ikoonide Alla - + Follow System Style Järgi Süsteemi Stiili - - + + UI lock password UI luku parool - - + + Please type the UI lock password: Palun sisesta UI luku parool: - + Are you sure you want to clear the password? Kindel, et soovid eemaldada selle parooli? - + Use regular expressions Kasuta regulaarseid väljendeid - - Search - Otsi + + + Search Engine + Otsingu Mootor - - Transfers (%1) - Ülekanded (%1) + + Search has failed + Otsimine nurjus - Recursive download confirmation - Korduv allalaadimise kinnitamine + + Search has finished + Otsing on lõpetatud - Never - Mitte kunagi + + Search + Otsi + + + + Transfers (%1) + Ülekanded (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent oli just uuendatud ja on vajalik taaskäivitada muudatuse rakendamiseks. - + qBittorrent is closed to tray qBittorrent on suletud tegumireale - + Some files are currently transferring. Osa faile on hetkel edastamisel. - + Are you sure you want to quit qBittorrent? Kindel, et soovid täielikult sulgeda qBittorrenti? - + &No &Ei - + &Yes &Jah - + &Always Yes &Alati Jah - + Options saved. Sätted salvestati. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [A: %1, Ü: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Puudub Python Runtime - + qBittorrent Update Available qBittorrenti Uuendus Saadaval - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python on vajalik, et kasutada otsingu mootorit, tundub nagu poleks teil see installitud. Soovite koheselt paigaldada? - + Python is required to use the search engine but it does not seem to be installed. Python on vajalik, et kasutada otsingu mootorit, tundub nagu poleks teil see installitud. - - + + Old Python Runtime Vana Python Runtime - + A new version is available. Uus versioon on saadaval. - + Do you want to download %1? Kas sa soovid allalaadida %1? - + Open changelog... Ava muudatustelogi... - + No updates available. You are already using the latest version. Uuendused pole saadaval. Juba kasutate uusimat versiooni. - + &Check for Updates &Kontrolli Uuendusi - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Teie Pythoni versioon (%1) on liiga vana. Vajalik on vähemalt: %2. Kas soovite koheselt installida uue versiooni? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Teie Pythoni versioon (%1) on vana. Palun uuendage uusimale versioonile, et toimiksid otsingu mootorid. Vajalik on vähemalt: %2. - + + Paused + Pausitud + + + Checking for Updates... Kontrollin uuendusi... - + Already checking for program updates in the background Juba kontrollin programmi uuendusi tagaplaanil - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Allalaadimise tõrge - Python setup could not be downloaded, reason: %1. Please install it manually. - Pythoni setupit ei saanud allalaadida, selgitus: %1. + Pythoni setupit ei saanud allalaadida, selgitus: %1. Palun installige see iseseisvalt. - - + + Invalid password Sobimatu parool - + Filter torrents... Filtreeri torrenteid... - + Filter by: - + Filtreering: - + The password must be at least 3 characters long Parooli pikkus peab olema vähemalt 3 tähemärki - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' sisaldab .torrent faile, soovite jätkata nende allalaadimist? - - - + The password is invalid Parool on sobimatu - + DL speed: %1 e.g: Download speed: 10 KiB/s AL kiirus: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s ÜL kiirus: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [A: %1, Ü: %2] qBittorrent %3 - - - + Hide Peida - + Exiting qBittorrent Suletakse qBittorrent - + Open Torrent Files Ava Torrenti Failid - + Torrent Files Torrenti Failid @@ -4183,133 +4416,133 @@ Palun installige see iseseisvalt. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O viga: %1 - + The file size (%1) exceeds the download limit (%2) Faili suurus (%1) ületab allalaadimise limiiti (%2) - + Exceeded max redirections (%1) Ületatud on maks. ümbersuunamist (%1) - + Redirected to magnet URI Ümbersuunatud magnet URI-le - + The remote host name was not found (invalid hostname) Kaugserveri nime ei leitud (vigane hostinimi) - + The operation was canceled Operatsioon oli tühistatud - + The remote server closed the connection prematurely, before the entire reply was received and processed Väline server sulges ühenduse varakult, enne täieliku vastukaja saabumist ja töötlemist - + The connection to the remote server timed out Ühendus aegus välise serveriga - + SSL/TLS handshake failed SSL/TLS käivitus ebaõnnestus - + The remote server refused the connection Kaugserver keeldus ühendusest - + The connection to the proxy server was refused Keelduti proxy serveriga ühendamine - + The proxy server closed the connection prematurely Proxy server sulges ühenduse enneaegselt - + The proxy host name was not found Proxy hosti nime ei leitud - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Ühendus proksiga aegus või proksi ei vastanud õigeaegselt saadetud päringule - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proksi nõuab taotluse rahuldamiseks autentimist, kuid ei võtnud vastu ühtegi pakutavat volitust - + The access to the remote content was denied (401) Juurdepääs kaugsisule on keelatud (401) - + The operation requested on the remote content is not permitted Taotletud operatsioon kaugsisuga ei ole lubatud - + The remote content was not found at the server (404) Kaugsisu ei leitud serveris (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Kaugserver nõuab sisu edastamiseks autentimist, kuid esitatud volitusi ei aktsepteeritud - + The Network Access API cannot honor the request because the protocol is not known Võrgujuurdepääsu API ei saa taotlust rahuldada, sest protokoll ei ole teada. - + The requested operation is invalid for this protocol Taotletav toiming on selle protokolli jaoks sobimatu - + An unknown network-related error was detected Avastati võrguga seotud tundmatu viga - + An unknown proxy-related error was detected Avastati proksiga seotud tundmatu viga - + An unknown error related to the remote content was detected Avastati kaugsisuga seotud tundmatu viga - + A breakdown in protocol was detected Protokollis tuvastati katkestus - + Unknown error Tundmatu viga @@ -4317,7 +4550,12 @@ Palun installige see iseseisvalt. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -4445,7 +4683,7 @@ Palun installige see iseseisvalt. Burkina Faso - + Burkina Faso @@ -4475,7 +4713,7 @@ Palun installige see iseseisvalt. Brunei Darussalam - + Brunei Darussalam @@ -4555,7 +4793,7 @@ Palun installige see iseseisvalt. Cameroon - + Kamerun @@ -4565,7 +4803,7 @@ Palun installige see iseseisvalt. Colombia - + Colombia @@ -4610,7 +4848,7 @@ Palun installige see iseseisvalt. Djibouti - + Djibouti @@ -4620,7 +4858,7 @@ Palun installige see iseseisvalt. Dominica - + Dominica @@ -4635,7 +4873,7 @@ Palun installige see iseseisvalt. Ecuador - + Ecuador @@ -4780,7 +5018,7 @@ Palun installige see iseseisvalt. Guinea-Bissau - + Guinea-Bissau @@ -4870,7 +5108,7 @@ Palun installige see iseseisvalt. Jordan - + Jordaania @@ -4885,12 +5123,12 @@ Palun installige see iseseisvalt. Kyrgyzstan - + Kõrgõzstan Cambodia - + Kambodža @@ -4905,7 +5143,7 @@ Palun installige see iseseisvalt. Saint Kitts and Nevis - + Saint Kitts ja Nevis @@ -4945,12 +5183,12 @@ Palun installige see iseseisvalt. Saint Lucia - + Saint Lucia Liechtenstein - + Liechtenstein @@ -5180,7 +5418,7 @@ Palun installige see iseseisvalt. Saint Pierre and Miquelon - + Saint-Pierre ja Miquelon @@ -5240,7 +5478,7 @@ Palun installige see iseseisvalt. Seychelles - + Seišellid @@ -5265,7 +5503,7 @@ Palun installige see iseseisvalt. Svalbard and Jan Mayen - + Svalbard ja Jan Mayen @@ -5300,7 +5538,7 @@ Palun installige see iseseisvalt. Sao Tome and Principe - + Sao Tome ja Principe @@ -5315,7 +5553,7 @@ Palun installige see iseseisvalt. Swaziland - + Svaasimaa @@ -5410,7 +5648,7 @@ Palun installige see iseseisvalt. Cote d'Ivoire - + Elevandiluurannik @@ -5430,7 +5668,7 @@ Palun installige see iseseisvalt. Macao - + Macao @@ -5445,7 +5683,7 @@ Palun installige see iseseisvalt. Saint Helena, Ascension and Tristan da Cunha - + Saint Helena, Ascension ja Tristan da Cunha @@ -5540,7 +5778,7 @@ Palun installige see iseseisvalt. Wallis and Futuna - + Wallis ja Futuna @@ -5600,12 +5838,12 @@ Palun installige see iseseisvalt. Jersey - + Jersey Saint Barthelemy - + Saint Barthelemy @@ -5689,294 +5927,303 @@ Palun installige see iseseisvalt. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Edasijõudnutele - + Customize UI Theme... Muuda UI Theme... - + Transfer List Ülekandeloend - + Confirm when deleting torrents Kinnita enne torrentite kustutamist - Shows a confirmation dialog upon pausing/resuming all the torrents - + Kuvatakse kinnitamiseks dialoog, enne kui pausitakse/jätkatakse kõikide torrentitega - Confirm "Pause/Resume all" actions - + Kinnita "Pausi/Jätka kõik" toiminguid - + Use alternating row colors In table elements, every other row will have a grey background. Kasuta vahelduvaid rea värve - + Hide zero and infinity values Peida nullid ja lõpmatuse väärtused - + Always Alati - Paused torrents only - Ainult pausitud torrentid + Ainult pausitud torrentid - + Action on double-click Toiming pärast topeltklõpsu - + Downloading torrents: Allalaadimisel torrentid: - - Start / Stop Torrent - Käivita / Seiska Torrent + Käivita / Seiska Torrent - - + + Open destination folder Ava sihtkoha kaust - - + + No action Ei tehta midagi - + Completed torrents: Lõpetatud torrentid: - + Auto hide zero status filters - + Automaatselt peida null olekufiltrid - + Desktop Töölaud - + Start qBittorrent on Windows start up Käivita qBittorrent Windowsi käivitamisel - + Show splash screen on start up - + Confirmation on exit when torrents are active Kuva kinnitamine enne sulgemist, kui torrentid on aktiivsed - + Confirmation on auto-exit when downloads finish Kuva kinnitamine, enne automaatset-sulgumist, pärast allalaadimiste valmimist - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Torrenti sisu paigutus: - + Original Originaal - + Create subfolder Loo alamkaust - + Don't create subfolder Ära loo alamkausta - + The torrent will be added to the top of the download queue Torrent lisatakse ootejärjekorras täitsa esimeseks - + Add to top of queue The torrent will be added to the top of the download queue Lisa ootejärjekorras esimeseks - + When duplicate torrent is being added Kui lisatakse juba olemasolev torrent - + Merge trackers to existing torrent - + Liida jälitajad olemasolevale torrentile + + + + Keep unselected files in ".unwanted" folder + Hoia mittevalitud failid ".unwanted" kaustas - + Add... Lisa... - + Options.. Valikud... - + Remove Eemalda - + Email notification &upon download completion E-postile teavitus &pärast allalaadimist - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Partneri ühenduse protokoll: - + Any Suvaline - + I2P (experimental) I2P (eksperimentaalne) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Some options are incompatible with the chosen proxy type! Osad valikud ei ühildu valitud proksi tüübiga! - + If checked, hostname lookups are done via the proxy - + Kui valitud, hostinimede otsing tehakse proksi abiga - + Perform hostname lookup via proxy - + Tee hostinimede otsing proksi abiga - + Use proxy for BitTorrent purposes - + Kasuta proksit BitTorrenti jaoks - + RSS feeds will use proxy - + RSS vood kasutavad proksit - + Use proxy for RSS purposes - + Kasuta proksit RSS jaoks - + Search engine, software updates or anything else will use proxy - + Otsingu mootor, tarkvara uuendused ja muud kasutavad proksit - + Use proxy for general purposes - + Kasuta proksit tavatoimingute jaoks - + IP Fi&ltering IP Fi&lteering - + Schedule &the use of alternative rate limits Planeeri alternatiivsete kiiruste limiidi &kasutust - + From: From start time Ajast: - + To: To end time Kuni: - + Find peers on the DHT network Otsi partnereid DHT võrgust - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5985,182 +6232,225 @@ Nõua krüpteering: Ainult ühenda partneritega kel on lubatud protokolli krüpt Keela krüpteering: Ainult ühenda partneritega kel pole protokolli krüpteeringut - + Allow encryption Luba krüpteering - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Rohkem informatsiooni</a>) - + Maximum active checking torrents: Maksimum samaaegselt kontrollitavaid torrenteid: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - A&utomaatselt lisa need jälitajad uutele allalaadimistele: + A&utomaatselt lisa need jälitajad uutele allalaadimistele: - + RSS Reader RSS Lugeja - + Enable fetching RSS feeds RSS-voogude toomise lubamine - + Feeds refresh interval: Voogude värskendamise intervall: - + + Same host request delay: + + + + Maximum number of articles per feed: Artiklite maksimaalne arv ühe voo kohta: - - - + + + min minutes min - + Seeding Limits Jagamise limiidid - Pause torrent - Pausi torrent + Pausi torrent - + Remove torrent Eemalda torrent - + Remove torrent and its files Eemalda torrent ja selle failid - + Enable super seeding for torrent Luba super jagamise režiim torrentile - + When ratio reaches Kui suhe jõuab - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrenti Automaatne Allalaadija - + Enable auto downloading of RSS torrents Luba RSS'i torrentite automaatne allalaadimine - + Edit auto downloading rules... Muuda automaatse allalaadimise reegleid... - + RSS Smart Episode Filter RSS tark osa filter - + Download REPACK/PROPER episodes Laadi alla REPACK/PROPER osad - + Filters: Filtrid: - + Web User Interface (Remote control) - + Veebi kasutajaliides (kaughaldus) - + IP address: IP aadress: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: Keela klient pärast mitut järjestikkust nurjumist: - + Never Mitte kunagi - + ban for: keela kuni: - + Session timeout: Sessiooni aegumistähtaeg: - + Disabled Keelatud - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: Serveri domeenid: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6169,442 +6459,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &Kasuta HTTPS'i HTTP asemel - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Uue&nda minu dünaamilise domeeni nime - + Minimize qBittorrent to notification area Minimeeri qBittorrent teavituste alale - + + Search + Otsi + + + + WebUI + + + + Interface Kasutajaliides - + Language: Keel: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal Tavaline - + File association - + Use qBittorrent for .torrent files Kasuta .torrent failide puhul qBittorrentit - + Use qBittorrent for magnet links Kasuta magnet linkide puhul qBittorrentit - + Check for program updates Kontrolli programmi uuendusi - + Power Management - + + &Log Files + + + + Save path: Salvestamise asukoht: - + Backup the log file after: Tee tagavara logi failist pärast: - + Delete backup logs older than: Kustuta tagavara logid mis vanemad kui: - + + Show external IP in status bar + + + + When adding a torrent Kui lisatakse torrent - + Bring torrent dialog to the front Too esile torrenti dialoogiaken - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Kustuta ka .torrent failid, mille lisamine tühistati - + Also when addition is cancelled Ka siis, kui lisamine tühistatakse - + Warning! Data loss possible! Hoiatus! Andmete kadu võimalik! - + Saving Management Salvestamise Haldamine - + Default Torrent Management Mode: Torrentide vaikimisi haldusrežiim: - + Manual Juhend - + Automatic Automaatne - + When Torrent Category changed: Kui torrenti kategooria muutus: - + Relocate torrent Ümberpaiguta torrent - + Switch torrent to Manual Mode Lülita torrent manuaalsesse režiimi - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode Lülitage mõjutatud torrentid manuaalsesse režiimi - + Use Subcategories Kasuta Alamkategooriaid - + Default Save Path: Tava Salvestamise Asukoht: - + Copy .torrent files to: Kopeeri .torrent failid asukohta: - + Show &qBittorrent in notification area Kuva &qBittorrent teavituste alal - &Log file - &Logi fail + &Logi fail - + Display &torrent content and some options Kuva &torrenti sisu ja osasid valikuid - + De&lete .torrent files afterwards Ku&stuta pärast .torrent failid - + Copy .torrent files for finished downloads to: Kopeeri .torrent failid lõpetanud allalaadimistel hiljem asukohta: - + Pre-allocate disk space for all files Hõiva ette ketta ruum kõikidele failidele - + Use custom UI Theme Kasuta kohandatud UI teemat - + UI Theme file: UI Teema fail: - + Changing Interface settings requires application restart Kasutajaliidese seadete muutmiseks on vaja rakendus taaskäivitada - + Shows a confirmation dialog upon torrent deletion Kuvab kinnitamiseks dialoogi enne torrenti kustutamist - - + + Preview file, otherwise open destination folder Kuva faili eelvaade, muidu ava faili kaust - - Show torrent options - Kuva torrenti valikuid + Kuva torrenti valikuid - + Shows a confirmation dialog when exiting with active torrents Kuvatakse kinnituse dialoog, kui suletakse aktiivsete torrentitega - + When minimizing, the main window is closed and must be reopened from the systray icon Minimeerimisel suletakse põhiaken ja see tuleb uuesti avada tegumirea ikoonilt - + The systray icon will still be visible when closing the main window Tegumirea ikoon jääb nähtavaks ka põhiakna sulgemisel. - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Sule qBittorrent teavituste alale - + Monochrome (for dark theme) - + Monotoonne (tumeda teema jaoks) - + Monochrome (for light theme) - + Monotoonne (heleda teema jaoks) - + Inhibit system sleep when torrents are downloading Takista süsteemil uinuda, kui torrenteid on allalaadimas - + Inhibit system sleep when torrents are seeding Takista süsteemil uinuda, kui torrenteid hetkel jagatakse - + Creates an additional log file after the log file reaches the specified file size Loob lisa logi faili, kui logi fail ületab valitud mahu piiri - + days Delete backup logs older than 10 days päeva - + months Delete backup logs older than 10 months kuud - + years Delete backup logs older than 10 years aastat - + Log performance warnings Logi jõudluse hoiatused - The torrent will be added to download list in a paused state - Torrent lisatakse allalaadimise nimekirja pausitud olekus + Torrent lisatakse allalaadimise nimekirja pausitud olekus - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ära käivita allalaadimist automaatselt - + Whether the .torrent file should be deleted after adding it Kas .torrent fail peaks olema kustutatud pärast lisamist - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Hõiva täielikult kogu faili maht enne allalaadimist, et vähendada fragmentatsiooni. Kasulik HDD jaoks. - + Append .!qB extension to incomplete files Lisa .!qB laiend poolikutele failidele - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Kui torrentit laetakse alla, paku torrentite lisamist, ükskõik mis sellest leitud . torrenti failidest - + Enable recursive download dialog Luba korduv allalaadimise dialoog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automaatne: mitmed torrenti omadused (s.h. salvestamise asukoht) otsustatakse seostatud kategooriaga Manuaalne: mitmed torrenti omadused (s.h. salvestamise asukoht) tuleb määrata käsitsi - + When Default Save/Incomplete Path changed: Kui muudetakse tava salvestuste/poolikute asukohta: - + When Category Save Path changed: Kui muutus kategooria salvestamise asukoht: - + Use Category paths in Manual Mode Kasuta kategooria asukohti manuaalses režiimis - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme Kasuta süsteemi teema ikoone - + Window state on start up: Akna olek käivitamisel: - + qBittorrent window state on start up qBittorrenti akna olek käivitamisel - + Torrent stop condition: Torrenti peatamise tingimus: - - + + None - - + + Metadata received Metaandmed kätte saadud - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Küsi üle jälitajate liitmine, kui torrent lisatakse manuaalselt - + Use another path for incomplete torrents: Kasuta muud asukohta poolikutel torrentitel: - + Automatically add torrents from: Automaatselt lisa torrentid asukohast: - + Excluded file names Välistatud failide nimed - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6621,841 +6964,914 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Vastuvõtja - + To: To receiver Sihtkohta: - + SMTP server: SMTP server: - + Sender Saatja - + From: From sender Asukohast: - + This server requires a secure connection (SSL) See server vajab turvalist ühendust (SSL) - - + + Authentication Audentimine - - - - + + + + Username: Kasutajanimi: - - - - + + + + Password: Parool: - + Run external program Käivita välispidine programm - Run on torrent added - Käivita torrenti lisamisel + Käivita torrenti lisamisel - Run on torrent finished - Käivita, kui torrent sai valmis + Käivita, kui torrent sai valmis - + Show console window Näita konsooli akent - + TCP and μTP TCP ja μTP - + Listening Port Kuulatav port - + Port used for incoming connections: Port kasutuseks sissetulevatel ühendustel: - + Set to 0 to let your system pick an unused port Vali 0, et süsteem saaks valida vaba pordi - + Random Suvaline - + Use UPnP / NAT-PMP port forwarding from my router Kasuta UPnP / NAT-PMP port forwarding'ut minu ruuterist - + Connections Limits Ühenduste limiidid - + Maximum number of connections per torrent: Maksimum kogus ühendusi ühel torrentil: - + Global maximum number of connections: Globaalselt maksimum kogus ühendusi: - + Maximum number of upload slots per torrent: Maksimum kogus üleslaadimise kohti ühel torrentil: - + Global maximum number of upload slots: Globaalselt maksimum kogus üleslaadimise kohti: - + Proxy Server Proxy Server - + Type: Tüüp: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Muidu, seda proxy serverit kasutatakse ainult jälitajate ühendustel - + Use proxy for peer connections Kasuta ühendustel partneritega proksit - + A&uthentication A&udentimine - + Info: The password is saved unencrypted Info: See parool on salvestatud krüpteeringuta - + Filter path (.dat, .p2p, .p2b): - + Reload the filter Lae filter uuesti - + Manually banned IP addresses... Manuaalselt keelatud IP aadressid... - + Apply to trackers Määra jälgijatele - + Global Rate Limits Üldine kiiruse limiidid - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Üleslaadimine: - - + + Download: Allalaadimine: - + Alternative Rate Limits Alternatiivsed kiiruse piirangud - + Start time Alguse aeg - + End time Lõpu aeg - + When: Millal: - + Every day Kõik päevad - + Weekdays Tööpäevadel - + Weekends Nädalavahetustel - + Rate Limits Settings Kiiruse piirangu seaded - + Apply rate limit to peers on LAN Määra kiiruse limiit partneritele LAN'is - + Apply rate limit to transport overhead Määra kiiruse limiit edastatavale lisainfole - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Määra kiiruse limiit µTP protokollile - + Privacy Privaatsus - + Enable DHT (decentralized network) to find more peers Luba DHT (detsentraliseeritud võrk), et leida rohkem partnereid - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Luba partnerite vahetus toetatud Bitorrenti klientidega (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Luba Peer Exchange (PeX), et leida rohkem partnereid - + Look for peers on your local network Otsi partnereid oma kohalikust võrgust - + Enable Local Peer Discovery to find more peers Luba Kohalike Partnerite Avastamine, et leida rohkem partnereid - + Encryption mode: Krüpteeringu režiim: - + Require encryption Nõua krüpteering - + Disable encryption Keela krüpteering - + Enable when using a proxy or a VPN connection Luba kui kasutad proksit või VPN ühendust - + Enable anonymous mode Luba anonüümne režiim - + Maximum active downloads: Maksimaalselt aktiivseid allalaadimisi: - + Maximum active uploads: Maksimaalselt aktiivseid üleslaadimisi: - + Maximum active torrents: Maksimaalselt aktiivseid torrenteid: - + Do not count slow torrents in these limits Ära arvesta aeglaseid torrenteid limiitide hulka - + Upload rate threshold: Üleslaadimise kiiruse piirmäär: - + Download rate threshold: Allalaadimise kiiruse piirmäär: - - - + + + + sec seconds sek - + Torrent inactivity timer: Torrenti passiivsuse timer: - + then siis - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: Sertifikaat: - + Key: Võti: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informatsioon sertifikaatidest</a> - + Change current password Muuda praegust parooli - Use alternative Web UI - Kasuta alternatiivset Web UI'd + Kasuta alternatiivset Web UI'd - + Files location: Faili asukoht: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Turvalisus - + Enable clickjacking protection Luba clickjacking'ute kaitse - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers Lisa kohandatud HTTP päised - + Header: value pairs, one per line - + Enable reverse proxy support Luba reverse proxy tugi - + Trusted proxies list: Usaldatud prokside nimekiri - - Service: + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + + Service: Teenus: - + Register Registreeri - + Domain name: Domeeni nimi: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Lubades need valikud, on oht, et <strong>kaotate täielikult</strong> oma .torrent failid! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Kui te lubate teise valiku (&ldquo;Ka siis, kui lisamine tühistatakse&rdquo;), <strong>kustutatakse</strong> .torrent fail isegi siis, kui te vajutate &ldquo;<strong>Tühista</strong>&rdquo; dialoogis &ldquo;Lisa torrent&rdquo; - + Select qBittorrent UI Theme file Vali qBittorrenti UI Teema fail - + Choose Alternative UI files location Vali Alternatiivse UI faili asukoht - + Supported parameters (case sensitive): Toetatud parameetrid (sõltuvalt suur- ja väiketähest): - + Minimized Minimeeritud - + Hidden Peidetud - + Disabled due to failed to detect system tray presence - + No stop condition is set. Pole peatamise tingimust määratud. - + Torrent will stop after metadata is received. Torrent peatatakse pärast meta-andmete saamist. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. Torrent peatatakse pärast failide kontrolli. - + This will also download metadata if it wasn't there initially. See laeb alla ka metadata, kui seda ennem ei olnud. - + %N: Torrent name %N: Torrenti nimi - + %L: Category %L: Kategooria - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path %D: Salvestamise asukoht - + %C: Number of files %C: Faile on kokku - + %Z: Torrent size (bytes) %Z: Torrenti suurus (baiti) - + %T: Current tracker %T: Praegune jälitaja - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Vihje: ümbritsege parameeter jutumärkidega, et vältida teksti katkestamist tühimikes (nt "%N"). - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Puudub) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate Sertifikaat: - + Select certificate Vali sertifikaat - + Private key Privaatne võti - + Select private key Vali privaatne võti - + + WebUI configuration failed. Reason: %1 + WebUI konfigureerimine nurjus. Selgitus: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Vali kaust mida monitoorida - + Adding entry failed Kirje lisamine nurjus - - Location Error - Asukoha viga + + The WebUI username must be at least 3 characters long. + WebUI kasutajanimi pikkus peab olema vähemalt 3 tähemärki. + + + + The WebUI password must be at least 6 characters long. + WebUI parooli pikkus peab olema vähemalt 6 tähemärki. - - The alternative Web UI files location cannot be blank. - Alternatiivse WEB UI falide asukoht ei tohi olla tühimik. + + Location Error + Asukoha viga - - + + Choose export directory Vali ekspordi sihtkoht - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Sildid (eraldatud komaga) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Vali salvestamise sihtkoht - + + Torrents that have metadata initially will be added as stopped. + Torrentid, millel on metaandmed, lisatakse peatutuna. + + + Choose an IP filter file Vali IP filtri fail - + All supported filters Kõik toetatud filtrid - + + The alternative WebUI files location cannot be blank. + Alternatiivse WebUI faili asukoht ei saa olla tühi. + + + Parsing error Analüüsimise viga - + Failed to parse the provided IP filter - + Successfully refreshed Edukalt värskendatud - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences Eelistused - + Time Error Aja viga - + The start time and the end time can't be the same. Alguse ja lõpu aeg ei tohi olla samad. - - + + Length Error Pikkuse viga - - - The Web UI username must be at least 3 characters long. - Web UI kasutajanimi peab olema minimaalselt 3 tähte pikk. - - - - The Web UI password must be at least 6 characters long. - Web UI parool peab olema minimaalselt 6 tähte pikk. - PeerInfo - + Unknown Tundmatu - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection Sissetulev ühendus - + Peer from DHT DHT partner - + Peer from PEX - + Peer from LSD - + Encrypted traffic Krüpteeritud liiklus - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7467,7 +7883,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Aadress @@ -7611,7 +8027,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Partner "%1" on manuaalselt keelatud - + N/A Puudub @@ -7634,7 +8050,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Nimekiri partnerite lisamiseks (üks IP rea kohta): - + Format: IPv4:port / [IPv6]:port Formaat: IPv4:port / [IPv6]:port @@ -7675,27 +8091,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Failid selles tükis: - + File in this piece: Fail selles tükis: - + File in these pieces: Fail nendes tükkides: - + Wait until metadata become available to see detailed information Oota kuni metadata on saadaval, et näha detailset infot - + Hold Shift key for detailed information Hoia Shift klahvi detailsema info jaoks @@ -7708,58 +8124,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Otsi pistikprogramme - + Installed search plugins: - + Name Nimi - + Version Versioon - + Url Url - - + + Enabled Lubatud - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Hoiatus: Veenduge, et järgite oma riigi autoriõiguste seadusi, enne torrentite allalaadimist siit otsingu mootorite abil. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installi uus - + Check for updates Kontrolli uuendusi - + Close Sulge - + Uninstall Desinstalli @@ -7848,7 +8264,7 @@ Need pistikprogrammid olid välja lülitatud. All your plugins are already up to date. - + Kõik teie plugin'ad on juba uusimad. @@ -7876,20 +8292,20 @@ Need pistikprogrammid olid välja lülitatud. Plugin source - + Plugin'a allikas - + Search plugin source: - + Local file Lokaalne fail - + Web link Veebi link @@ -7930,47 +8346,47 @@ Need pistikprogrammid olid välja lülitatud. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Antud failid, mis on torrentil "%1", toetatavad eelvaatamist, palun valige üks neist: - + Preview Eelvaade - + Name Nimi - + Size Suurus - + Progress Edenemine - + Preview impossible Eelvade on võimatu - + Sorry, we can't preview this file: "%1". Vabandust, ei saa me teha faili eelvaadet: "%1". - + Resize columns Muuda veergude suurust - + Resize all non-hidden columns to the size of their contents Muuda kõikide mitte-peidetud veergude suurust sobitumaks vastavalt nende sisule @@ -7983,29 +8399,29 @@ Need pistikprogrammid olid välja lülitatud. Private::FileLineEdit - + Path does not exist - + Asukohta pole olemas - + Path does not point to a directory - + Asukoht ei viita kausta - + Path does not point to a file - + Asukoht ei viita failile - + Don't have read permission to path - + Puudub asukoha lugemisõigus - + Don't have write permission to path - + Puudub asukoha kirjutamisõigus @@ -8044,12 +8460,12 @@ Need pistikprogrammid olid välja lülitatud. PropertiesWidget - + Downloaded: Allalaetud: - + Availability: Saadavus: @@ -8064,53 +8480,53 @@ Need pistikprogrammid olid välja lülitatud. Ülekandmine - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktiivne aeg: - + ETA: - + Uploaded: Üleslaaditud: - + Seeds: Seemneid: - + Download Speed: Allalaadimise Kiirus: - + Upload Speed: Üleslaadimise Kiirus: - + Peers: Partnereid: - + Download Limit: Allalaadimise Limiit: - + Upload Limit: Üleslaadimise Limiit: - + Wasted: Raisatud: @@ -8120,193 +8536,249 @@ Need pistikprogrammid olid välja lülitatud. Ühendusi: - + Information Informatsioon - + Info Hash v1: Info räsi v1: - + Info Hash v2: Info räsi v2: - + Comment: Kommentaar: - + Select All Vali kõik - + Select None Eemalda valik - + Share Ratio: Jagamise Suhe: - + Reannounce In: - + Last Seen Complete: Viimati Nähtud Lõpetamas: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Kogu suurus: - + Pieces: Tükke: - + Created By: Looja: - + Added On: Lisatud: - + Completed On: Lõpetatud: - + Created On: Loodud: - + + Private: + + + + Save Path: Salvestamise Asukoht: - + Never Mitte kunagi - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (olemas %3) - - + + %1 (%2 this session) %1 (%2 see seanss) - - + + + N/A Puudub - + + Yes + Jah + + + + No + Ei + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 on kokku) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 kesk.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Uus veebi-seeme + Uus veebi-seeme - Remove Web seed - Eemalda veebi-seeme + Eemalda veebi-seeme - Copy Web seed URL - Kopeeri veebi-seemne URL + Kopeeri veebi-seemne URL - Edit Web seed URL - Muuda veebi-seemne URL-i + Muuda veebi-seemne URL-i - + Filter files... Filtreeri failid... - - Speed graphs are disabled + + Add web seed... + + + + + Remove web seed - + + Copy web seed URL + + + + + Edit web seed URL... + + + + + Speed graphs are disabled + Kiiruse graafikud on väljalülitatud + + + You can enable it in Advanced Options - New URL seed New HTTP source - Uus URL-seeme + Uus URL-seeme - New URL seed: - Uus URL-seeme: + Uus URL-seeme: - - This URL seed is already in the list. - URL-seeme on juba nimekirjas. + URL-seeme on juba nimekirjas. - + Web seed editing Veebi-seemne muutmine - + Web seed URL: Veebi-seemne URL: @@ -8325,22 +8797,22 @@ Need pistikprogrammid olid välja lülitatud. - + Invalid data format Sobimatu andmete formaat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8348,22 +8820,22 @@ Need pistikprogrammid olid välja lülitatud. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Ei saanud allalaadida RSS-voogu '%1'. Selgitus: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-voog kohas '%1' on uuendatud. Lisatud %2 uut artiklit. - + Failed to parse RSS feed at '%1'. Reason: %2 Ei saanud analüüsida RSS-voogu '%1'. Selgitus: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS-voog kohas '%1' on edukalt alla laaditud. Hakkame seda analüüsima. @@ -8399,12 +8871,12 @@ Need pistikprogrammid olid välja lülitatud. RSS::Private::Parser - + Invalid RSS feed. Vigane RSS-voog - + %1 (line: %2, column: %3, offset: %4). @@ -8412,99 +8884,99 @@ Need pistikprogrammid olid välja lülitatud. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. On juba olemas sama URL-iga RSS-voog: '%1'. - + Feed doesn't exist: %1. Voogu pole olemas: %1. - + Cannot move root folder. Juurkausta ei saa liigutada. - - + + Item doesn't exist: %1. Seda pole olemas: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. Juurkausta ei saa kustutada. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Nurjus RSS-voogu laadimine. Voog: "%1". Selgitus: URL on vajalik. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Ei saanud RSS-voogu laadida. Voog: "%1". Põhjus: UID on kehtetu. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Leitakse dubleeritud RSS-voog. UID: "%1". Viga: Konfiguratsioon näib olevat rikutud. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. Vigane RSS nimekiri, seda ei kuvata. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. Ülemkausta ei eksisteeri: %1. @@ -8528,8 +9000,8 @@ Need pistikprogrammid olid välja lülitatud. - - + + Mark items read Märgi need loetuks @@ -8554,132 +9026,132 @@ Need pistikprogrammid olid välja lülitatud. Torrentid: (topelt-klõps allalaadimiseks) - - + + Delete Kustuta - + Rename... Ümbernimeta... - + Rename Ümbernimeta - - + + Update Uuenda - + New subscription... Uus tellimus... - - + + Update all feeds Värskenda kõik feedid - + Download torrent Lae alla torrent - + Open news URL Ava uudiste URL - + Copy feed URL Kopeeri feedi URL - + New folder... Uus kaust... - + Edit feed URL... - + Muuda voogu URLi... - + Edit feed URL - + Muuda voogu URLi - + Please choose a folder name Palun valige kausta nimi - + Folder name: Kausta nimi: - + New folder Uus kaust - - + + Please type a RSS feed URL Palun sisesta RSS-voo URL - - + + Feed URL: Feedi URL: - + Deletion confirmation Kustutamise kinnitamine - + Are you sure you want to delete the selected RSS feeds? Kindel, et soovite kustutada valitud RSS-vood? - + Please choose a new name for this RSS feed Palun valige RSS-voole uus nimi - + New feed name: Uus feedi nimi: - + Rename failed Ümbernimetamine nurjus - + Date: Kuupäev: - + Feed: - + Voog: - + Author: Autor: @@ -8687,38 +9159,38 @@ Need pistikprogrammid olid välja lülitatud. SearchController - + Python must be installed to use the Search Engine. - + Python peab olema installitud, et kasutada otsingu mootorit. - + Unable to create more than %1 concurrent searches. Ei saa samaaegselt teha rohkem kui %1 otsingut. - - + + Offset is out of range - + All plugins are already up to date. Kõik plugin'ad on juba uusimad. - + Updating %1 plugins Uuendan %1 plugin'aid - + Updating plugin %1 Uuendan plugin'at %1 - + Failed to check for plugin updates: %1 @@ -8793,132 +9265,146 @@ Need pistikprogrammid olid välja lülitatud. Suurus: - + Name i.e: file name Nimi - + Size i.e: file size Suurus - + Seeders i.e: Number of full sources Jagajad - + Leechers i.e: Number of partial sources Kaanid - Search engine - Otsingumootor + Otsingumootor - + Filter search results... Filtreeri otsingu tulemused... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Tulemused (näitab <i>%1</i> <i>%2</i>-st): - + Torrent names only Torrenti nimed ainult - + Everywhere Kõikjal - + Use regular expressions Kasuta regulaarseid väljendeid - + Open download window Ava allalaadimise aken - + Download Lae alla - + Open description page Ava selgituste leht - + Copy Kopeeri - + Name Nimi - + Download link Allalaadimise link - + Description page URL Selgituste lehe URL - + Searching... Otsin... - + Search has finished Otsing on lõpetatud - + Search aborted Otsing tühistati - + An error occurred during search... Viga ilmnes otsinguga... - + Search returned no results Otsingul ei leitud mittemidagi - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Veergude nähtavus - + Resize columns Muuda veergude suurust - + Resize all non-hidden columns to the size of their contents Muuda kõikide mitte-peidetud veergude suurust sobitumaks vastavalt nende sisule @@ -8926,104 +9412,104 @@ Need pistikprogrammid olid välja lülitatud. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. Plugin'at ei toetata. - + Plugin %1 has been successfully updated. Plugin %1 on edukalt uuendatud. - + All categories Kõik kategooriad - + Movies Filmid - + TV shows TV saated - + Music Muusika - + Games Mängud - + Anime Anime - + Software Tarkvara - + Pictures Pildid - + Books Raamatud - + Update server is temporarily unavailable. %1 Uuenduste server on ajutiselt kinni. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" on vana, uuendan versioonile %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -9033,113 +9519,152 @@ Need pistikprogrammid olid välja lülitatud. - - - - Search Otsi - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... Otsi plugin'aid... - + A phrase to search for. Fraas mida otsida. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example Näidis: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins - + Only enabled Ainult lubatud - + + + Invalid data format. + Sobimatu andmete formaat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab Sulge sakk - + Close all tabs Sulge kõik sakid - + Select... Vali... - - - + + Search Engine Otsingu Mootor - + + Please install Python to use the Search Engine. - + Palun installige Python, et kasutada otsingu mootorit. - + Empty search pattern Tühjenda otsingu väli - + Please type a search pattern first - + Palun sisestage esmalt otsingumuster - + + Stop Stop - Search has finished - Otsing on lõpetatud + Otsing on lõpetatud - Search has failed - Otsimine nurjus + Otsimine nurjus + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9252,34 +9777,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Üleslaadimine: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Allalaadimine: - + Alternative speed limits Alternatiivsed kiiruse limiidid @@ -9471,32 +9996,32 @@ Click the "Search plugins..." button at the bottom right of the window Keskmine aeg ootejärjekorras: - + Connected peers: Ühenduses partnerid: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: Kogu puhvri suurus: @@ -9511,12 +10036,12 @@ Click the "Search plugins..." button at the bottom right of the window Ootel I/O toimingud: - + Write cache overload: Kirjutamise vahemälu ülekoormus: - + Read cache overload: Lugemise vahemälu ülekoormus: @@ -9535,51 +10060,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Ühenduse olek: - - + + No direct connections. This may indicate network configuration problems. Ei ole otseühendusi. See viitab interneti sätete probleemile. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 sõlme - + qBittorrent needs to be restarted! qBittorrentit on vaja taaskäivitada! - - - + + + Connection Status: Ühenduse Olek: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Võrguühenduseta. See tähendab tavaliselt, et qBittorrent ei suutnud valitud pordil sissetulevaid ühendusi kuulata. - + Online Võrgus - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klõpsake, et lülituda alternatiivsetele kiiruspiirangutele - + Click to switch to regular speed limits Klõpsake, et lülituda tavapärastele kiiruspiirangutele @@ -9607,15 +10148,19 @@ Click the "Search plugins..." button at the bottom right of the window Completed (0) Lõpetatud (0) + + Paused (0) + Pausitud (0) + - Resumed (0) + Running (0) - Paused (0) - Pausitud (0) + Stopped (0) + @@ -9677,10 +10222,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Lõpetatud (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pausitud (%1) + Pausitud (%1) @@ -9688,25 +10252,18 @@ Click the "Search plugins..." button at the bottom right of the window Teisaldakse (%1) - Resume torrents - Jätka torrentitega + Jätka torrentitega - Pause torrents - Pausi torrentid + Pausi torrentid Remove torrents Eemalda torrentid - - - Resumed (%1) - - Active (%1) @@ -9746,17 +10303,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Sildid - + All Kõik - + Untagged Sildistamata @@ -9764,52 +10321,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Lisa silt... - + Remove tag Eemalda silt - + Remove unused tags Eemalda kasutamata sildid - Resume torrents - Jätka torrentitega + Jätka torrentitega - Pause torrents - Pausi torrentid + Pausi torrentid - + Remove torrents Eemalda torrentid - New Tag - Uus Silt + Uus Silt + + + + Start torrents + + + + + Stop torrents + - + Tag: Silt: - + + Add tag + + + + Invalid tag name Sobimatu sildi nimi - + Tag name '%1' is invalid Sildi nimi '%1' on sobimatu @@ -9949,32 +10518,32 @@ Palun vali teine nimi ja proovi uuesti. TorrentContentModel - + Name Nimi - + Progress Edenemine - + Download Priority Allalaadimise Prioriteet - + Remaining Järelejäänud - + Availability Saadavus - + Total Size Kogu suurus @@ -10019,102 +10588,120 @@ Palun vali teine nimi ja proovi uuesti. TorrentContentWidget - + Rename error Viga ümbernimetamisel - + Renaming - + Ümbernimetatakse - + New name: Uus nimi: - + Column visibility Veergude nähtavus - + Resize columns Muuda veergude suurust - + Resize all non-hidden columns to the size of their contents Muuda kõikide mitte-peidetud veergude suurust sobitumaks vastavalt nende sisule - + Open Ava - + Open containing folder Ava seda sisaldav kaust - + Rename... Ümbernimeta... - + Priority Prioriteet - - + + Do not download Ära lae alla - + Normal Tavaline - + High Kõrge - + Maximum Maksimum - + By shown file order Failide järjekorra järgi - + Normal priority Tava prioriteet - + High priority Kõrge prioriteet - + Maximum priority Maksimum prioriteet - + Priority by shown file order Prioriteet failide järjekorra järgi + + TorrentCreatorController + + + Too many active tasks + Liiga palju aktiivseid toiminguid + + + + Torrent creation is still unfinished. + Torrenti loomine pole veel valmis. + + + + Torrent creation failed. + Torrenti loomine nurjus. + + TorrentCreatorDialog @@ -10139,13 +10726,13 @@ Palun vali teine nimi ja proovi uuesti. - + Select file Vali fail - + Select folder Vali kaust @@ -10170,92 +10757,44 @@ Palun vali teine nimi ja proovi uuesti. Tüki suurus: - + Auto Automaatne - 16 KiB - 16 KiB + + Calculate number of pieces: + Arvuta tükkide hulk: - 32 KiB - 32 KiB + + Private torrent (Won't distribute on DHT network) + Privaatne torrent (ei edastata DHT võrgustikus) - 64 KiB - 64 KiB + + Start seeding immediately + Alusta koheselt jagamisega - 128 KiB - 128 KiB + + Ignore share ratio limits for this torrent + - 256 KiB - 256 KiB + + Optimize alignment + Optimeeri paigutust - 512 KiB - 512 KiB + + Align to piece boundary for files larger than: + - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - - - - Calculate number of pieces: - Arvuta tükkide hulk: - - - - Private torrent (Won't distribute on DHT network) - Privaatne torrent (ei edastata DHT võrgustikus) - - - - Start seeding immediately - Alusta koheselt jagamisega - - - - Ignore share ratio limits for this torrent - - - - - Optimize alignment - Optimeeri paigutust - - - - Align to piece boundary for files larger than: - - - - - Disabled - Väljalülitatud + + Disabled + Väljalülitatud @@ -10268,92 +10807,83 @@ Palun vali teine nimi ja proovi uuesti. Väljad - + You can separate tracker tiers / groups with an empty line. - + Saate eraldada jälitajate tasandeid / gruppe tühja reaga. - + Web seed URLs: Veebi-seemne URL-id: - + Tracker URLs: Jälgija URL-id: - + Comments: Kommentaarid: - + Source: Allikas: - + Progress: Edenemine: - + Create Torrent Loo Torrent - - + + Torrent creation failed - Torrenti loomine ebaõnnestus + Torrenti loomine nurjus - + Reason: Path to file/folder is not readable. Selgitus: faili/kausta asukoht pole loetav. - + Select where to save the new torrent Vali kuhu salvestada uus torrent - + Torrent Files (*.torrent) Torrenti Failid (*.torrent) - - Reason: %1 - Selgitus: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Selgitus: "%1" - + Add torrent failed - + Torrenti lisamine nurjus - Reason: Created torrent is invalid. It won't be added to download list. - Selgitus: loodud torrent ei sobi. Seda ei lisata allalaadimise nimekirja. - - - + Torrent creator Torrenti looja - + Torrent created: Torrent loodud: @@ -10361,32 +10891,32 @@ Palun vali teine nimi ja proovi uuesti. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. Jälgitava kausta asukoht ei tohi olla tühi. - + Watched folder Path cannot be relative. @@ -10394,27 +10924,27 @@ Palun vali teine nimi ja proovi uuesti. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Magnet fail liiga suur. Fail: %1 - + Failed to open magnet file: %1 Nurjus magneti avamine: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10422,14 +10952,8 @@ Palun vali teine nimi ja proovi uuesti. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Vigased metaandmed + Vigased metaandmed @@ -10460,127 +10984,191 @@ Palun vali teine nimi ja proovi uuesti. Kasuta muud asukohta poolikutel torrentitel - + Category: Kategooria: - + + Torrent Share Limits + + + Torrent speed limits - Torrenti kiiruse limiidid + Torrenti kiiruse limiidid - + Download: Allalaadimine: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Need ei ületa üleüldiseid limiite - + Upload: Üleslaadimine: - Torrent share limits - Torrenti jagamise limiidid + Torrenti jagamise limiidid - Use global share limit - Kasuta üleüldist jagamise limiiti + Kasuta üleüldist jagamise limiiti - Set no share limit - Ilma jagamise piiranguta + Ilma jagamise piiranguta - Set share limit to - Määra jagamise limiit + Määra jagamise limiit - ratio - suhe - - - - total minutes - - - - - inactive minutes - + suhe - + Disable DHT for this torrent Keela DHT sellel torrentil - + Download in sequential order Järjestikuses allalaadimine - + Disable PeX for this torrent Keela PeX sellel torrentil - + Download first and last pieces first Lae alla esmalt esimene ja viimane tükk - + Disable LSD for this torrent Keela LSD sellel torrentil - + Currently used categories Hetkel kasutatud kategooriad - - + + Choose save path Vali salvestamise asukoht - + Not applicable to private torrents Ei kehti privaatsetele torrentitele - - No share limit method selected + Please select a limit method first + Palun ennem valige limiidi meetod + + + + TorrentShareLimitsWidget + + + + + + Default + Vaikimisi + + + + + + Unlimited + Piiramatu + + + + + + Set to - - Please select a limit method first - Palun ennem valige limiidi meetod + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Eemalda torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Luba super jagamise režiim torrentile + + + + Ratio: + @@ -10591,32 +11179,36 @@ Palun vali teine nimi ja proovi uuesti. Torrenti sildid - New Tag - Uus Silt + Uus Silt + Add tag + + + + Tag: Silt: - + Invalid tag name Sobimatu sildi nimi - + Tag name '%1' is invalid. Sildi nimi '%1' on sobimatu. - + Tag exists Silt on juba olemas - + Tag name already exists. Sildi nimi on juba olemas. @@ -10624,115 +11216,130 @@ Palun vali teine nimi ja proovi uuesti. TorrentsController - + Error: '%1' is not a valid torrent file. Viga: '%1' ei ole sobiv torrenti fail. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded Torrenti metadata ei ole veel allalaaditud - + File IDs must be integers - + File ID is not valid Faili ID pole sobilik - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty Salvestamise asukoht ei tohi olla tühimik - - + + Cannot create target directory Sihtkataloogi ei saa luua - - + + Category cannot be empty Kategooria ei saa olla tühi - + Unable to create category Ei saanud luua kategooriat - + Unable to edit category Ei saanud muuta kategooriat - + Unable to export torrent file. Error: %1 Ei saa eksportida torrenti faili. Viga: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Ei saa kirjutada sihtkohta - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name Sobimatu torrenti nimi - - + + Incorrect category name Sobimatu kategooria nimi @@ -10763,253 +11370,203 @@ Palun vali teine nimi ja proovi uuesti. TrackerListModel - - + Working - Töötab + Töötab - + Disabled - + Väljalülitatud - + Disabled for this torrent - Keelatud sellel torrentil + Keelatud sellel torrentil - + This torrent is private - See torrent on privaatne + See torrent on privaatne - + N/A - Puudub + Puudub - + Updating... - Uuendan... + Uuendan... - + Not working - Ei tööta + Ei tööta - + Tracker error - + Jälitaja viga - + Unreachable - + Not contacted yet - Pole veel ühendust võetud + Pole veel ühendust võetud - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + Invalid status! + Sobimatu olek! + - Protocol + Tier - - Status - Olek + Protocol + Protokoll - Peers - + Status + Olek - Seeds - Seemneid + Peers + Partnerid - Leeches - Kaanid + Seeds + Seemneid - Times Downloaded - Kordi allalaaditud + Leeches + Kaanid - Message - Teavitus + Times Downloaded + Kordi allalaaditud - Next announce - - - - - Min announce - + Message + Teavitus - v%1 - + v%1 TrackerListWidget - Working - Töötab - - - Disabled - Väljalülitatud - - - Disabled for this torrent - Keelatud sellel torrentil - - - + This torrent is private See torrent on privaatne - Updating... - Uuendan... - - - Not working - Ei tööta - - - Not contacted yet - Pole veel ühendust võetud - - - N/A - Puudub - - - + Tracker editing Jälitaja muutmine - + Tracker URL: Jälitaja URL: - - + + Tracker editing failed Jälitaja muutmine nurjus - + The tracker URL entered is invalid. Sisestatud jälitaja URL on sobimatu. - + The tracker URL already exists. See jälitaja URL on juba olemas. - + Edit tracker URL... Muuda jälgija URL-i... - + Remove tracker Eemalda jälitaja - + Copy tracker URL Kopeeri jälitaja URL - + Force reannounce to selected trackers - + Force reannounce to all trackers - URL - URL - - - Status - Olek - - - Seeds - Seemneid - - - Times Downloaded - Kordi allalaaditud - - - + Resize columns Muuda veergude suurust - + Resize all non-hidden columns to the size of their contents Muuda kõikide mitte-peidetud veergude suurust sobitumaks vastavalt nende sisule - Peers - Partnereid - - - + Add trackers... Lisa jälitajaid... - Leeches - Kaanid - - - Message - Teavitus - - - + Column visibility Veergude nähtavus @@ -11027,37 +11584,37 @@ Palun vali teine nimi ja proovi uuesti. Nimekiri jälitajate lisamiseks (üks rea kohta): - + µTorrent compatible list URL: µTorrentiga ühilduva nimekirja URL: - + Download trackers list - + Lae alla jälitajate nimekiri - + Add Lisa - + Trackers list URL error - + Jälitajate nimekirja URL viga - + The trackers list URL cannot be empty - + Jälitajate nimekirja URL ei saa olla tühi - + Download trackers list error - + Jälitajate nimekirja allalaadimise viga - + Error occurred when downloading the trackers list. Reason: "%1" Toimus viga jälitajate nimekirja allalaadimisel. Selgitus: "%1" @@ -11065,87 +11622,70 @@ Palun vali teine nimi ja proovi uuesti. TrackersFilterWidget - All (0) - this is for the tracker filter - Kõik (0) - - - Trackerless (0) - Jälitajateta (0) - - - Error (0) - Viga (0) - - - Warning (0) - Hoiatus (0) - - - Trackerless - Jälitajateta - - - Error (%1) - Viga (%1) - - - + Warning (%1) Hoiatus (%1) - + Trackerless (%1) Jälitajateta (%1) - + Tracker error (%1) - + Jälitaja viga (%1) - + Other error (%1) - + Muu viga (%1) - + Remove tracker - Eemalda jälitaja + Eemalda jälitaja + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Jätka torrentitega + Jätka torrentitega - Pause torrents - Pausi torrentid + Pausi torrentid - + Remove torrents Eemalda torrentid - + Removal confirmation - + Eemaldamise kinnitamine - + Are you sure you want to remove tracker "%1" from all torrents? - + Kindel, et soovite eemaldada jälitaja "%1" kõikidelt torrentitelt? - + Don't ask me again. - + Ära enam küsi. - + All (%1) this is for the tracker filter Kõik (%1) @@ -11154,7 +11694,7 @@ Palun vali teine nimi ja proovi uuesti. TransferController - + 'mode': invalid argument @@ -11247,9 +11787,8 @@ Palun vali teine nimi ja proovi uuesti. Kontrollin jätkamise andmeid - Paused - Pausitud + Pausitud @@ -11274,220 +11813,262 @@ Palun vali teine nimi ja proovi uuesti. Vigane - + Name i.e: torrent name Nimi - + Size i.e: torrent size Suurus - + Progress % Done Edenemine - Status Torrent status (e.g. downloading, seeding, paused) - Olek + Olek - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Olek + + + Seeds i.e. full sources (often untranslated) Seemneid - + Peers i.e. partial sources (often untranslated) Partnerid - + Down Speed i.e: Download speed Kiirus alla - + Up Speed i.e: Upload speed Kiirus üles - + Ratio Share ratio Suhe - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left - + Category Kategooria - + Tags Sildid - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Lisatud - + Completed On Torrent was completed on 01/01/2010 08:00 Lõpetatud - + Tracker Jälitaja - + Down Limit i.e: Download limit Alla Limiit - + Up Limit i.e: Upload limit Üles Limiit - + Downloaded Amount of data downloaded (e.g. in MB) Allalaaditud - + Uploaded Amount of data uploaded (e.g. in MB) Üleslaaditud - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Remaining Amount of data left to download (e.g. in MB) Järelejäänud - + + Time Active + Time (duration) the torrent is active (not stopped) + Aeg Aktiivne + + + + Yes + Jah + + + + No + Ei + + Time Active Time (duration) the torrent is active (not paused) - Aeg Aktiivne + Aeg Aktiivne - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Lõpetatud - + Ratio Limit Upload share ratio limit Suhte Limiit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Viimati Nähtud Lõpetamas - + Last Activity Time passed since a chunk was downloaded/uploaded Viimati Aktiivne - + Total Size i.e. Size including unwanted data Kogu suurus - + Availability The number of distributed copies of the torrent Saadavus - + Info Hash v1 i.e: torrent info hash v1 - Info räsi v2: {1?} + - + Info Hash v2 i.e: torrent info hash v2 - Info räsi v2: {2?} + - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Puudub - + %1 ago e.g.: 1h 20m ago %1 tagasi - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) @@ -11496,334 +12077,354 @@ Palun vali teine nimi ja proovi uuesti. TransferListWidget - + Column visibility Veeru nähtavus - + Recheck confirmation Ülekontrollimise kinnitamine - + Are you sure you want to recheck the selected torrent(s)? Kindel, et soovid üle kontrollida valitud torrent(eid)? - + Rename Ümbernimeta - + New name: Uus nimi: - + Choose save path Vali salvestamise asukoht - Confirm pause - Kinnitus, enne pausimist + Kinnitus, enne pausimist - Would you like to pause all torrents? - Kas soovite pausile panna kõik torrentid? + Kas soovite pausile panna kõik torrentid? - Confirm resume - Kinnitus, enne jätkamist + Kinnitus, enne jätkamist - Would you like to resume all torrents? - Kas soovite jätkata kõikide torrentitega? + Kas soovite jätkata kõikide torrentitega? - + Unable to preview Ei saanud teha eelvaadet - + The selected torrent "%1" does not contain previewable files Valitud torrent "%1" ei sisalda eelvaadetavaid faile - + Resize columns Muuda veergude suurust - + Resize all non-hidden columns to the size of their contents Muuda kõikide mitte-peidetud veergude suurust sobitumaks vastavalt nende sisule - + Enable automatic torrent management Lülita sisse automaatne torrentite haldamine - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Oled kindel, et soovid sisselülitada automaatse torrenti halduse valitud torrenti(tele)? Nende torrentite asukohti võidakse muuta. - Add Tags - Lisa silte + Lisa silte - + Choose folder to save exported .torrent files Määra kaust kuhu salvestakse eksporditud .torrent failid - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Nurjus .torrent faili eksportimine. Torrent: "%1". Salvestuse asukoht: "%2". Selgitus: "%3" - + A file with the same name already exists Sama nimega fail on juba olemas - + Export .torrent file error Viga .torrent faili eksportimisega - + Remove All Tags Eemalda Kõik Sildid - + Remove all tags from selected torrents? Eemalda kõik sildid valitud torrentitelt? - + Comma-separated tags: Komaga eraldatud sildid: - + Invalid tag Sobimatu silt - + Tag name: '%1' is invalid Sildi nimi: '%1' on sobimatu - &Resume Resume/start the torrent - &Jätka + &Jätka - &Pause Pause the torrent - &Pane Pausile + &Pane Pausile - Force Resu&me Force Resume/start the torrent - + Sunni Jätka&ma - + Pre&view file... Fai&li eelvaade... - + Torrent &options... Torrenti &valikud... - + Open destination &folder Ava sihtkoha &kaust - + Move &up i.e. move up in the queue Liiguta &üles - + Move &down i.e. Move down in the queue Liiguta &alla - + Move to &top i.e. Move to top of the queue Liiguta kõige &üles - + Move to &bottom i.e. Move to bottom of the queue Liiguta täitsa &alla - + Set loc&ation... Määra a&sukoht... - + Force rec&heck Sunni üle&kontrolli - + Force r&eannounce - + &Magnet link &Magnet link - + Torrent &ID Torrenti &ID - + + &Comment + &Kommentaar + + + &Name &Nimi - + Info &hash v1 Info &räsi v1 - + Info h&ash v2 - + Info r&äsi v2 - + Re&name... Üm&bernimeta... - + Edit trac&kers... Muuda j&älitajaid... - + E&xport .torrent... E&kspordi .torrent... - + Categor&y Kategoor&ia - + &New... New category... &Uus... - + &Reset Reset category - + Ta&gs Sil&did - + &Add... Add / assign multiple tags... &Lisa... - + &Remove All Remove all tags &Eemalda Kõik - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Järjekord - + &Copy &Kopeeri - + Exported torrent is not necessarily the same as the imported Eksporditud torrent ei ole täielikult sama mis imporditud - + Download in sequential order Järjestikuses allalaadimine - - Errors occurred when exporting .torrent files. Check execution log for details. + + Add tags + + + Errors occurred when exporting .torrent files. Check execution log for details. + Ilmnesid vead .torrent failide eksportimisega. Kontrollige toimingute logi, et näha lisainfot. + + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Eemalda - + Download first and last pieces first Lae alla esmalt esimene ja viimane tükk - + Automatic Torrent Management Automaatne Torrenti Haldamine - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automaatne režiim tähendab, et mitmed torrenti omadused (sh salvestamise koht) määratakse seostatud kategooriaga - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Super jagamise režiim @@ -11868,28 +12469,28 @@ Palun vali teine nimi ja proovi uuesti. Ikooni ID - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Ei saanud eemaldada ikooni faili. Fail: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11897,7 +12498,12 @@ Palun vali teine nimi ja proovi uuesti. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11928,30 +12534,27 @@ Palun vali teine nimi ja proovi uuesti. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python not detected - Python'it pole tuvastatud - Found Python executable. Name: "%1". Version: "%2" @@ -11986,27 +12589,27 @@ Palun vali teine nimi ja proovi uuesti. Utils::IO - + File open error. File: "%1". Error: "%2" - + Faili avamise viga. Fail: "%1". Viga: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + Faili suurus ületab limiiti. Fail: "%1". Faili suurus: %2. Suuruse limiit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Faili lugemise viga. Fail: "%1". Viga: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12070,72 +12673,72 @@ Palun vali teine nimi ja proovi uuesti. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Lubamatu failitüüp, lubatud on ainult tavaline fail. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. - Integreeritud Web UI kasutamine. + + Using built-in WebUI. + Kasutatakse integreeritud WebUI'd. - - Using custom Web UI. Location: "%1". - Kasutatakse kohandatud veebi UI-d. Asukoht: "%1". + + Using custom WebUI. Location: "%1". + Kasutatakse kohandatud WebUI'd. Asukoht: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI tõlge valitud lokaalile (%1) on edukalt laetud. - - Couldn't load Web UI translation for selected locale (%1). - Ei saanud laadida Web UI tõlget valitud piirkonnale (%1). + + Couldn't load WebUI translation for selected locale (%1). + Ei saanud laadida WebUI tõlget valitud lokaalile (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Puudub eraldaja ':' WebUI kohandatud HTTP päises: "%1" - + Web server error. %1 - + Veebi serveri viga. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12143,143 +12746,136 @@ Palun vali teine nimi ja proovi uuesti. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS edukalt seadistatud + + Credentials are not set + + + + + WebUI: HTTPS setup successful + WebUI: HTTPS seadistamine edukas - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + Tundmatu viga + + misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1t %2m + %1t %2m - + %1d %2h e.g: 2 days 10 hours - %1p %2t + %1p %2t - + %1y %2d e.g: 2 years 10 days - %1a %2p - - - %1h %2m - e.g: 3hours 5minutes - %1t %2m - - - %1d %2h - e.g: 2days 10hours - %1p %2t - - - %1y %2d - e.g: 2years 10days - %1a %2p + %1a %2p - - + + Unknown Unknown (size) Tundmatu - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent lülitab arvuti välja, kuna kõik allalaadimised on valmis. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_eu.ts b/src/lang/qbittorrent_eu.ts index 83e51eeb7baa..f20aa83f6202 100644 --- a/src/lang/qbittorrent_eu.ts +++ b/src/lang/qbittorrent_eu.ts @@ -14,77 +14,77 @@ Honi buruz - + Authors Egileak - + Current maintainer Oraingo mantentzailea - + Greece Grezia - - + + Nationality: Naziotasuna: - - + + E-mail: Post@: - - + + Name: Izena: - + Original author Jatorrizko egilea - + France Frantzia - + Special Thanks Esker Bereziak - + Translators Itzultzaileak - + License Baimena - + Software Used Erabilitako Softwarea - + qBittorrent was built with the following libraries: qBittorrent hurrengo liburutegiekin eraiki da: - + Copy to clipboard - + Kopiatu arbelera @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 qBittorrent proiektua + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 qBittorrent proiektua @@ -166,14 +166,13 @@ Gordeta - + Never show again Ez erakutsi berriro - Torrent settings - Torrent ezarpenak + Torrent ezarpenak @@ -191,12 +190,12 @@ Hasi torrenta - + Torrent information Torrentaren argibideak - + Skip hash check Jauzi hash egiaztapena @@ -205,6 +204,11 @@ Use another path for incomplete torrent Erabili beste bide-izena bukatu gabeko torrententzat + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Gelditze-egoera: - - + + None Bat ere ez - - + + Metadata received Metadatuak jaso dira - - + + Torrents that have metadata initially will be added as stopped. + Hasieran metadatuak dituzten torrentak geldituta gehituko dira. + + + + Files checked Fitxategiak egiaztatuta - + Add to top of queue Gehitu ilararen goiko aldera. - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Egiaztatzen denean, .torrent fitxategia ez da ezabatuko Aukerak elkarrizketako "Deskargatu" orrialdeko konfigurazioaren arabera - + Content layout: Edukiaren antolakuntza: - + Original Jatorrizkoa - + Create subfolder Sortu azpiagiritegia - + Don't create subfolder Ez sortu azpiagiritegia - + Info hash v1: Info hash v1: - + Size: Neurria: - + Comment: Aipamena: - + Date: Eguna: @@ -324,237 +333,182 @@ Gogoratu erabilitako azken gordetze helburua - + Do not delete .torrent file Ez ezabatu .torrent agiria - + Download in sequential order Jeitsi hurrenkera sekuentzialean - + Download first and last pieces first Jeitsi lehen eta azken atalak lehenik - + Info hash v2: Info hash v2: - + Select All Hautatu denak - + Select None Ez hautatu ezer - + Save as .torrent file... Gorde .torrent agiri bezala... - + I/O Error S/I Akatsa - Invalid torrent - Torrent baliogabea - - - + Not Available This comment is unavailable Ez dago Eskuragarri - + Not Available This date is unavailable Ez dago Eskuragarri - + Not available Eskuraezina - Invalid magnet link - Magnet lotura baliogabea - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Hutsegitea torrenta gertatzerakoan: %1. -Akatsa: %2 - - - This magnet link was not recognized - Magnet lotura hau ez da ezagutu - - - + Magnet link Magnet lotura - + Retrieving metadata... Metadatuak eskuratzen... - - + + Choose save path Hautatu gordetze helburua - Torrent is already present - Torrenta badago jadanik - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - '%1' torrenta jadanik eskualdaketa zerrendan dago. Aztarnariak ez dira batu torrent pribatu bat delako. - - - Torrent is already queued for processing. - Torrenta jadanik prozesatzeko lerrokatuta dago - - - + No stop condition is set. Ez da gelditze-egoerarik ezarri. - + Torrent will stop after metadata is received. Torrenta gelditu egingo da metadatuak jaso ondoren. - - Torrents that have metadata initially aren't affected. - Ez du eraginik dagoeneko metadatuak dituzten torrent-etan. - - - + Torrent will stop after files are initially checked. Torrenta gelditu egingo da fitxategiak aztertu ondoren. - + This will also download metadata if it wasn't there initially. - + Honek metadatuak deskargatu ditu ez bazeuden hasieratik. - - + + N/A E/G - Magnet link is already queued for processing. - Magnet lotura jadanik prozesatzeko lerrokatuta dago. - - - + %1 (Free space on disk: %2) %1 (Diskako toki askea: %2) - + Not available This size is unavailable. Ez dago Eskuragarri - + Torrent file (*%1) Torrent fitxategia (*%1) - + Save as torrent file Gorde torrent agiri bezala - + Couldn't export torrent metadata file '%1'. Reason: %2. Ezin izan da '%1' torrent metadatu fitxategia esportatu. Arrazoia: %2. - + Cannot create v2 torrent until its data is fully downloaded. - - - - Cannot download '%1': %2 - Ezin da jeitsi '%1': %2 + Ezin da v2 torrenta sortu bere datuak guztiz deskargatu arte. - + Filter files... Iragazi agiriak... - + Parsing metadata... Metadatuak aztertzen... - + Metadata retrieval complete Metadatu eskurapena osatuta - - Failed to load from URL: %1. -Error: %2 - Hutsegitea URL-tik gertatzerakoan: %1. -Akatsa: %2 - - - Download Error - Jeisketa Akatsa - AddTorrentManager Downloading torrent... Source: "%1" - + Torrenta deskargatzen... Iturria: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Torrenta gehitzeak huts egin du. Irurria: "%1". Arrazoia: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Bikoiztutako torrent bat gehitzeko saiakera bat detektatu da. Iturria: %1. Dagoen torrenta: %2. Emaitza: %3 - + Merging of trackers is disabled - + Aztarnarien fusioa desgaituta dago - + Trackers cannot be merged because it is a private torrent - + Ezin dira aztarnariak fusionatu torrenta pribatua delako - + Trackers are merged from new source - + Aztarnariak fusionatu dira iturri berritik @@ -582,7 +536,7 @@ Akatsa: %2 Note: the current defaults are displayed for reference. - + Oharra: uneko balio lehenetsiak erreferentzia gisa erakusten dira. @@ -640,72 +594,77 @@ Akatsa: %2 Jausi hash egiaztapena - - - Choose save path - Aukeratu gordetze bide-izena + + Torrent share limits + Torrentaren elkarbanatze mugak - - - - - - - Default - Lehenetsia + + + Choose save path + Aukeratu gordetze bide-izena + + + - Yes - Bai + Default + Lehenetsia + Yes + Bai + + + + + No Ez - + Manual Eskuzkoa - + Automatic Automatikoa - + Original Jatorrizkoa - + Create subfolder Sortu azpikarpeta - + Don't create subfolder Ez sortu azpikarpeta - + None Bat ere ez - + Metadata received Metadatuak jaso dira - + Files checked Fitxategiak egiaztatuta @@ -713,734 +672,852 @@ Akatsa: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Berregiaztatu torrentak osatutakoan - - + + ms milliseconds sm - + Setting Ezarpena - + Value Value set for this setting Balioa - + (disabled) (ezgaituta) - + (auto) (berez) - + + min minutes min - + All addresses Helbide guztiak - + qBittorrent Section qBittorrent Atala - - + + Open documentation Ireki agiritza - + All IPv4 addresses IPv4 helbide guztiak - + All IPv6 addresses IPv6 helbide guztiak - + libtorrent Section libtorrent Atala - + Fastresume files - + Fastresume fitxategiak - + SQLite database (experimental) SQLite datu-basea (esperimentala) - + Resume data storage type (requires restart) Berrekite datu biltegi-mota (berrabiaraztea beharrezkoa) - + Normal Arrunta - + Below normal Arruntetik behera - + Medium Ertaina - + Low Apala - + Very low Oso apala - - Process memory priority (Windows >= 8 only) - Prozesuaren oroimen lehentasuna (Windows >= 8 bakarrik) - - - + Physical memory (RAM) usage limit - + Memoria fisikoaren (RAM) erabilera-muga - + Asynchronous I/O threads S/I hari asinkronoak - + Hashing threads Hash hariak - + File pool size Agiri multzoaren neurria - + Outstanding memory when checking torrents Gain oroimena torrentak egiaztatzean - + Disk cache Diska katxea - - - - + + + + s seconds seg - + Disk cache expiry interval Diska katxe muga tartea - + Disk queue size - + Diskoaren ilara tamaina - - + + Enable OS cache Gaitu SE katxea - + Coalesce reads & writes Batu irakur eta idatzi - + Use piece extent affinity Erabili atalaren maila kidetasuna - + Send upload piece suggestions Bidali igoera atal iradokizunak - - - - + + + + + 0 (disabled) - + 0 (desgaituta) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Gorde berrekintze-datu tartea: [0: desgaituta] - + Outgoing ports (Min) [0: disabled] - + Irteera atakak (Gutx) [0: desgaituta] - + Outgoing ports (Max) [0: disabled] - + Irteera atakak (Geh) [0: desgaituta] - + 0 (permanent lease) - + 0 (alokatze iraunkorra) - + UPnP lease duration [0: permanent lease] - + UPnP esleipenaren iraupena [0: esleipen iraunkorra] - + Stop tracker timeout [0: disabled] - + Jarraitzailearen denbora-muga gelditzeko: [0: desgaituta] - + Notification timeout [0: infinite, -1: system default] - + Jakinarazpenen denbora-muga [0: infinitua, -1: sistemak lehenetsia] - + Maximum outstanding requests to a single peer - + Gehienezko eskaerak parekide bakar bati - - - - - + + + + + KiB KiB - + (infinite) - + (infinitua) - + (system default) + (sistemak lehenetsia) + + + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode - + This option is less effective on Linux Aukera honek eragin gutxiago du Linuxen - + + Process memory priority + Prozesuen memoria prioritatea + + + Bdecode depth limit - + Bdecode sakoneraren muga - + Bdecode token limit - + Bdecode token muga - + Default Lehenetsia - + Memory mapped files Memoriara esleitutako fitxategiak - + POSIX-compliant POSIX betetzen du - - Disk IO type (requires restart) + + Simple pread/pwrite - - + + Disk IO type (requires restart) + Diskoaren SI mota (berrabiarazi behar da) + + + + Disable OS cache - + Desgaitu SE cachea - + Disk IO read mode - + Diskoaren SI irakurtze modua - + Write-through - + Igarotze-idazketa - + Disk IO write mode - + Diskoaren SI idazte modua - + Send buffer watermark Bidali buffer urmarka - + Send buffer low watermark Bidali buffer apal urmarka - + Send buffer watermark factor Bidali buffer urmarka ezaugarria - + Outgoing connections per second Irteerako konexioak segundoko - - + + 0 (system default) - + 0 (sistemak lehenetsia) - + Socket send buffer size [0: system default] - + Socket bidaltzeko buffer tamaina [0: sistemak lehenetsita] - + Socket receive buffer size [0: system default] - + Socket jasotzeko buffer tamaina [0: sistemak lehenetsita] - + Socket backlog size Socket atzera-oharraren neurria - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + .torrent fitxategiaren tamaina muga + + + Type of service (ToS) for connections to peers Zerbitzu motak (ToS) konexio parekoentzat - + Prefer TCP Hobetsi TCP - + Peer proportional (throttles TCP) Hartzailekiko proporzionala (dohitua TCP) - + Support internationalized domain name (IDN) Sostengatzen du nazioarteturiko domeinu izena (IDN) - + Allow multiple connections from the same IP address Ahalbide elkarketa ugari IP helbide berdinetik - + Validate HTTPS tracker certificates Balioztatu HTTPS aztarnari egiaztagiriak - + Server-side request forgery (SSRF) mitigation - + Zerbitzariaren aldeko eskaera faltsutzea (SSRF) saihestea - + Disallow connection to peers on privileged ports Ez ahalbidetu elkarketa hartzaileetara pribilegiozko ataketan - + + It appends the text to the window title to help distinguish qBittorent instances + Testua leihoaren izenburuari eransten dio qBittorent instantziak bereizten laguntzeko + + + + Customize application instance name + Pertsonalizatu aplikazioaren instantziaren izena + + + It controls the internal state update interval which in turn will affect UI updates - + Barne-egoera eguneratzeko tartea kontrolatzen du eta horrek, aldi berean, UI eguneratzeei eragingo die - + Refresh interval - + Freskatze-tartea - + Resolve peer host names Erabaki hartzaile hostalari izenak - + IP address reported to trackers (requires restart) + Aztarnariei jakinarazitako IP helbidea (berrabiarazi behar da) + + + + Port reported to trackers (requires restart) [0: listening port] - + Reannounce to all trackers when IP or port changed Beriragarri jarraitzaile guztietara IP edo ataka aldatzean - + Enable icons in menus Gaitu ikonoak menuetan - + Enable port forwarding for embedded tracker + Gaitu ataka-birbidaltzea kapsulatutako aztarnarientzat + + + + Enable quarantine for downloaded files + Gaitu berrogeialdia deskargatutako fitxategietarako + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Gaitu Mark-of-the-Web (MOTW) deskargatutako fitxategietarako + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - - (Auto detect if empty) + + Ignore SSL errors - + + (Auto detect if empty) + (Auto detektatu hutsik badago) + + + Python executable path (may require restart) + Python exekutagarriaren bide-izena (baliteke berrabiarazi behar izatea) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + seg + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Berretsi aztarnaria torrent guztietatik kentzea + + + Peer turnover disconnect percentage Peer turnover disconnect percentage - + Peer turnover threshold percentage Hartzaile errotazio muga ehunekoa - + Peer turnover disconnect interval Hartzaile errotazio etetze tartea - + Resets to default if empty - + Lehenetsira berrezartzen da hutsik badago - + DHT bootstrap nodes - + DHT hasieratze nodoak - + I2P inbound quantity - + I2P sarrerako kantitatea - + I2P outbound quantity - + I2P irteerako kantitatea - + I2P inbound length - + I2P sarrerako luzera - + I2P outbound length - + I2P irteerako luzera - + Display notifications Erakutsi jakinarazpenak - + Display notifications for added torrents Erakutsi jakinarazpenak gehitutako torrententzat - + Download tracker's favicon Jeitsi aztarnariaren ikurra - + Save path history length Gordetze helburu historiaren luzera - + Enable speed graphs Gaitu abiadura grafikoak - + Fixed slots Slot finkoak - + Upload rate based Igoera maila ohinarrituz - + Upload slots behavior Igoera sloten jokabidea - + Round-robin Round-robin - + Fastest upload Igoera azkarrena - + Anti-leech Izain-aurkakoa - + Upload choking algorithm Igoera choking algoritmoa - + Confirm torrent recheck Baieztatu torrentaren berregiaztapena - + Confirm removal of all tags Baieztatu etiketa guztiak kentzea - + Always announce to all trackers in a tier Betik iragarri maila bateko aztarnari guztietara - + Always announce to all tiers Betik iragarri maila guztietara - + Any interface i.e. Any network interface Edozein interfaze - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP algoritmo modu nahasia - + Resolve peer countries Erabaki hartzaile herrialdeak - + Network interface Sare interfazea - + Optional IP address to bind to Aukerazko IP helbidea lotzeko - + Max concurrent HTTP announces Geh HTTP iragarpen aldiberean - + Enable embedded tracker Gaitu barneratutako aztarnaria - + Embedded tracker port Barneratutako aztarnari ataka - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 abiatuta + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Eramangarri moduan ekiten. Profila agiritegia berez atzeman da hemen: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Agindu lerro ikur erredundantea atzeman da: "%1". Modu eramangarriak berrekite-azkar erlatiboa darama. - + Using config directory: %1 Itxurapen zuzenbidea erabiltzen: %1 - + Torrent name: %1 Torrentaren izena: %1 - + Torrent size: %1 Torrentaren neurria: %1 - + Save path: %1 Gordetze helburua: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrenta %1-ra jeitsi da. - + + Thank you for using qBittorrent. Mila esker qBittorrent erabiltzeagaitik. - + Torrent: %1, sending mail notification Torrenta: %1, post@ jakinarapena bidaltzen - + Add torrent failed - + Torrenta gehitzeak huts egin du - + Couldn't add torrent '%1', reason: %2. - + Ezin izan da '%1' torrent-a gehitu, arrazoia: %2. - + + The WebUI administrator username is: %1 + WebUI administratzailearen erabiltzaile-izena hau da: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + WebUI administratzailearen pasahitza ez da ezarri. Saio honetarako aldi baterako pasahitz bat eman da: %1 + + + + You should set your own password in program preferences. + Zure pasahitza ezarri beharko zenuke programaren hobespenetan. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI-a desgaituta dago! WebUI gaitzeko, editatu konfigurazio fitxategia eskuz. - + Running external program. Torrent: "%1". Command: `%2` - + Kanpoko programa exekutatzen. Torrenta: "%1". Komandoa: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Kanpoko programa exekutatzeak huts egin du. Torrenta: "%1". Komandoa: `%2` - + Torrent "%1" has finished downloading - + "% 1" torrenta deskargatzen amaitu da - + WebUI will be started shortly after internal preparations. Please wait... - + WebUI barne prestaketak egin eta gutxira hasiko dira. Mesedez, itxaron... - - + + Loading torrents... - + Torrentak kargatzen... - + E&xit I&rten - + I/O Error i.e: Input/Output Error S/I Akatsa - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1449,141 +1526,118 @@ Akatsa: %2 Zergaitia: %2 - Error - Akatsa - - - Failed to add torrent: %1 - Hutsegitea torrenta gehitzerakoan: %1 - - - + Torrent added Torrenta gehituta - + '%1' was added. e.g: xxx.avi was added. '%1' gehituta. - + Download completed - + Deskarga osatu da - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1'-k amaitu du jeisketa. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 hasi da. Prozesuaren ID: %2 - URL download error - URL jeisketa akatsa + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Ezinezkoa agiria jeistea URL-tik: '%1', zergaitia: %2. + + Test email + - Torrent file association - Torrent agiri elkarketa + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1'-k amaitu du jeisketa. - + Information Argibideak - + To fix the error, you may need to edit the config file manually. - + Errorea konpontzeko, baliteke konfigurazio fitxategia eskuz editatu behar izatea. - + To control qBittorrent, access the WebUI at: %1 - + qBittorrent kontrolatzeko, sartu WebUI-ra hemen: %1 - - The Web UI administrator username is: %1 - Web EI administrari erabiltzaile izena da: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - Application failed to start. - Aplikazioak huts egin du abiatzean. - - - + Exit Irten - + Recursive download confirmation - Jeisketa mugagabearen baieztapena + Jeisketa mugagabearen baieztapena - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + '%1' torrentak .torrent fitxategiak ditu, haien deskargarekin jarraitu nahi duzu? - + Never - Inoiz ez + Inoiz - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Deskargatu errekurtsiboki .torrent fitxategia torrent barruan. Iturburu torrenta: "%1". Fitxategia: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Ezin izan da memoria fisikoaren (RAM) erabilera-muga ezarri. Errore kodea: %1. Errore mezua: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Ezin izan da memoria fisikoaren (RAM) erabilera muga gogorra ezarri. Eskatutako tamaina: %1. Sistemaren muga gogorra: %2. Errore kodea: %3. Errore mezua: "%4" - + qBittorrent termination initiated - + qBittorrent-en amaiera hasi da - + qBittorrent is shutting down... - + qBittorrent itzaltzen ari da... - + Saving torrent progress... Torrent garapena gordetzen... - + qBittorrent is now ready to exit - + qBittorrent irteteko prest dago AsyncFileStorage - + Could not create directory '%1'. Ezin da zuzenbidea sortu: '%1'. @@ -1591,22 +1645,22 @@ Zergaitia: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI saio hasiera hutsegitea: Zergaitia: IP-a eragotzia izan da, IP: %1, erabiltzaile-izena: %2 - + Your IP address has been banned after too many failed authentication attempts. Zure IP helbidea eragotzia izan da egiaztapen saiakera hutsegite askoren ondoren. - + WebAPI login success. IP: %1 WebAPI saio hasiera ongi. IP-a: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI saio hasiera hutsegitea: Zergaitia: egiaztagiri baliogabea, saiakera zenbatekoa: %1, IP: %2, erabiltzaile-izena: %3 @@ -1641,25 +1695,25 @@ Zergaitia: %2 Auto downloading of RSS torrents is currently disabled. You can enable it in application settings. - + RSS torrenten deskarga automatikoa desgaituta dago une honetan. Aplikazioaren ezarpenetan gaitu dezakezu. Rename selected rule. You can also use the F2 hotkey to rename. - + Berrizendatu hautatutako araua. F2 laster-tekla ere erabil dezakezu berrizendatzeko. Priority: - + Lehentasuna: - + Must Not Contain: Ez du izan behar: - + Episode Filter: Atal Iragazkia: @@ -1712,263 +1766,263 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar E&sportatu... - + Matches articles based on episode filter. Atal iragazkian ohinarritutako artikulu bat-etortzeak. - + Example: Adibidea: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match bat-etorriko dira 2, 5, 8 -> 15, 30 bitartez eta bat denboraldiko hurrengo atalak - + Episode filter rules: Atal iragazki arauak: - + Season number is a mandatory non-zero value Denboraldi zenbakia ezin da huts balioa izan - + Filter must end with semicolon Iragazkia puntu eta kakotxaz amaitu behar da - + Three range types for episodes are supported: Hiru eremu mota sostengatzen dira atalentzat: - + Single number: <b>1x25;</b> matches episode 25 of season one Zenbaki soila: <b>1x25;</b> lehen denboraldiko 25. atala da - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Eremu arrunta: <b>1x25-40;</b> lehen denboraldiko 25 eta 40.-a arteko atalak dira - + Episode number is a mandatory positive value Atal zenbakia balio positiboa izan behar da - + Rules Arauak - + Rules (legacy) Arauak (ondorena) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Eremu mugagabea: <b>1x25-;</b> lehen denboraldiko 25. atala eta aurreranzkoak, eta ondorengo denboraldietako atal guztiak bat datoz - + Last Match: %1 days ago Azken Bat-etortzea: duela %1 egun - + Last Match: Unknown Azken Bat-etortzea: Ezezaguna - + New rule name Arau izen berria - + Please type the name of the new download rule. Mesedez idatzi jeisketa arau berriaren izena. - - + + Rule name conflict Arau izen gatazka - - + + A rule with this name already exists, please choose another name. Jadanik badago izen hau duen arau bat, mesedez hautatu beste izen bat. - + Are you sure you want to remove the download rule named '%1'? Zihur zaude %1 izeneko jeisketa araua kentzea nahi duzula? - + Are you sure you want to remove the selected download rules? Zihur zaude hautatutako jeisketa arauak kentzea nahi dituzula? - + Rule deletion confirmation Arau ezabapen baieztapena - + Invalid action Ekintza baliogabea - + The list is empty, there is nothing to export. Zerrenda hutsik dago, ez dago ezer esportatzeko. - + Export RSS rules Esportatu RSS arauak - + I/O Error S/I Akatsa - + Failed to create the destination file. Reason: %1 Hutsegitea helmuga agiria sortzerakoan. Zergaitia: %1 - + Import RSS rules Inportatu RSS arauak - + Failed to import the selected rules file. Reason: %1 Hutsegitea hautaturiko araua agiria inportatzerakoan. Zergaitia: %1 - + Add new rule... Gehitu arau berria... - + Delete rule Ezabatu araua - + Rename rule... Berrizendatu araua... - + Delete selected rules Ezabatu hautatutako arauak - + Clear downloaded episodes... Garbitu jeitsitako atalak... - + Rule renaming Arau berrizendapena - + Please type the new rule name Mesedez idatzi arau izen berria - + Clear downloaded episodes Garbitu jeitsitako atalak - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Zihur zaude hautatutako araurako jeitsitako atalen zerrenda garbitu nahi dituzula? - + Regex mode: use Perl-compatible regular expressions Regex modua: erabili Perl-bezalako adierazpen arruntak - - + + Position %1: %2 Kokapena %1: %2 - + Wildcard mode: you can use Ordezhizki modua: erabili ditzakezu - - + + Import error - + Inportazio errorea - + Failed to read the file. %1 - + Fitxategia irakurtzeak huts egin du. %1 - + ? to match any single character ? edozein hizki soil bat etortzeko - + * to match zero or more of any characters * edozein hizkiko zero edo gehiago bat etortzeko - + Whitespaces count as AND operators (all words, any order) Zuriuneak ETA aldagaia bezala zenbatzen da (hitz gutziak, edozein hurrenkera) - + | is used as OR operator | EDO aldagai bezala erabiltzen da - + If word order is important use * instead of whitespace. Hitz hurrenkera garrantzitsua bada erabili * zuriunearen ordez. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) %1 esaldi hutsa duen adierazpen bat (adib. %2) - + will match all articles. bat etorriko da artikulo guztiekin. - + will exclude all articles. artikulo guztiak baztertuko ditu. @@ -2010,53 +2064,58 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Ezin da torrent berrekite karpeta sortu: "%1" - + Cannot parse resume data: invalid format - + Ezin dira berrekiteko datuak analizatu: formatu baliogabea - - + + Cannot parse torrent info: %1 - + Ezin da torrentaren informazioa analizatu: %1 - + Cannot parse torrent info: invalid format - + Ezin da torrentaren informazioa analizatu: formatu baliogabea + + + + Mismatching info-hash detected in resume data + Info-hash baterazina detektatu da berrekiteko datuetan - + Couldn't save torrent metadata to '%1'. Error: %2. Ezin izan dira torrentaren metadatuak '%1'(e)ra gorde. Errorea: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Ezin izan dira torrentaren berrekite datuak gorde '%1'. Errorea: %2. - + Couldn't load torrents queue: %1 - + Ezin izan da torrent ilara kargatu: %1 - + Cannot parse resume data: %1 - + Ezin dira berrekiteko datuak analizatu: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Berrekite datuak baliogabeak dira: ez dira ez metadatuak ez info-hash aurkitu - + Couldn't save data to '%1'. Error: %2 Ezinezkoa datuak gordetzea hemen: '%1'. Akatsa: %2 @@ -2064,618 +2123,684 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar BitTorrent::DBResumeDataStorage - + Not found. Ez da aurkitu. - + Couldn't load resume data of torrent '%1'. Error: %2 - + Ezin izan dira '%1' torrenteko berrekite datuak kargatu. Errorea: %2 - - + + Database is corrupted. - + Datu-basea kaltetuta dago. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Ezin izan da Write-Ahead Logging (WAL) egunkari-modua gaitu. Errorea: %1. - + Couldn't obtain query result. - + Ezin izan da eskaeraren emaitza lortu. - + WAL mode is probably unsupported due to filesystem limitations. - + WAL modua ziurrenik ez da onartzen fitxategi-sistemaren mugak direla eta. - + Couldn't begin transaction. Error: %1 - + Ezin izan da transakzioa hasi. Errorea: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Ezin izan dira torrentaren metadatuak gorde. Errorea: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Ezin izan dira '%1' torrenteko berrekite datuak gorde. Errorea: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Ezin izan dira '%1' torrenteko berrekite datuak ezabatu. Errorea: %2 - + Couldn't store torrents queue positions. Error: %1 - + Ezin izan dira torrenten ilararen posizioak gorde. Errorea: %1 BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - - - - + Distributed Hash Table (DHT) euskarria: %1 + + + + + + + + + + + ON BAI - - - - - - - - - + + + + + + + + + OFF EZ - - + + Local Peer Discovery support: %1 - + Tokiko parekideen aurkikuntza euskarria: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Berrabiarazi behar da Peer Exchange (PeX) euskarria aldatzeko - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - + Torrenta berrekiteak huts egin du. Torrenta: "%1". Arrazoia: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Torrenta berrezartzeak huts egin du: torrent ID inkoherentea hauteman da. Torrenta: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Datu inkoherenteak hauteman dira: kategoria falta da konfigurazio fitxategian. Kategoria berreskuratuko da, baina bere ezarpenak lehenetsiko dira. Torrenta: "%1". Kategoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Datu inkoherenteak hauteman dira: kategoria baliogabea. Torrenta: "%1". Kategoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Berreskuratutako kategoriaren eta torrentaren uneko artean bat ez datozen gordetze bide-izenak hauteman dira. Torrenta eskuzko modura aldatu da orain. Torrenta: "%1". Kategoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Datu inkoherenteak hauteman dira: etiketa falta da konfigurazio fitxategian. Etiketa berreskuratuko da. Torrenta: "%1". Etiketa: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + Datu inkoherenteak hauteman dira: etiketa baliogabea. Torrenta: "%1". Etiketa: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Sistema esnatzeko gertaera detektatu da. Aztarnari guztiei berriro iragartzen... - + Peer ID: "%1" - + Hartzailearen ID-a: "%1" - + HTTP User-Agent: "%1" - + HTTP erabiltzaile-agentea: "%1" - + Peer Exchange (PeX) support: %1 - + Peer Exchange (PeX) euskarria: %1 - - + + Anonymous mode: %1 - + Modu anonimoa: %1 - - + + Encryption support: %1 - + Zifratze euskarria: %1 - - + + FORCED BEHARTUTA - + Could not find GUID of network interface. Interface: "%1" - + Ezin izan da sareko interfazearen GUIDa aurkitu. Interfazea: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + IP helbideen zerrenda hau entzuten saiatzen: "%1" - + Torrent reached the share ratio limit. - + Torrent partekatze-ratioaren mugara iritsi da. - - - + Torrent: "%1". - + Torrenta: "%1". - - - Removed torrent. - + Torrenta kenduta. - - - Removed torrent and deleted its content. - + Torrenta kenduta eta bere edukiak ezabatuta. - - - Torrent paused. - + Torrenta pausatuta. - - - + Super seeding enabled. - + Super emaritza gaituta. - + Torrent reached the seeding time limit. - + Torrentek emaritze denbora-mugara iritsi da. - + Torrent reached the inactive seeding time limit. - + Torrenta emaritza inaktiboaren denbora-mugara iritsi da. - + Failed to load torrent. Reason: "%1" - + Ezin izan da torrenta kargatu. Arrazoia: "%1" - + I2P error. Message: "%1". - + I2P errorea. Mezua: "%1". - + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP euskarria: AKTIBO + + + + Saving resume data completed. - - UPnP/NAT-PMP support: OFF + + BitTorrent session successfully finished. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Session shutdown timed out. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Removing torrent. - System network status changed to %1 - e.g: System network status changed to ONLINE - Sistemaren sare egoera %1-ra aldatu da + + Removing torrent and deleting its content. + - ONLINE - ONLINE + + Torrent stopped. + - OFFLINE - LINEAZ-KANPO + + Torrent content removed. Torrent: "%1" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1-ren sare itxurapena aldatu egin da, saio lotura berritzen + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - The configured network address is invalid. Address: "%1" + + Torrent removed. Torrent: "%1" - - - Failed to find the configured network address to listen on. Address: "%1" + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 - + + Merging of trackers is disabled + Aztarnarien fusioa desgaituta dago + + + + Trackers cannot be merged because it is a private torrent + Ezin dira aztarnariak fusionatu torrenta pribatua delako + + + + Trackers are merged from new source + Aztarnariak fusionatu dira iturri berritik + + + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP euskarria: EZ + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Ezin izan da torrenta esportatu. Torrenta: "%1". Helburua: "%2". Arrazoia: "%3" + + + + Aborted saving resume data. Number of outstanding torrents: %1 + Berrekite datuak gordetzeari utzi zaio. Torrent nabarmenen kopurua: %1 + + + + The configured network address is invalid. Address: "%1" + Konfiguratutako sare helbidea ez da baliozkoa. Helbidea: "%1" + + + + + Failed to find the configured network address to listen on. Address: "%1" + Entzuteko konfiguratutako sare helbidea aurkitzeak huts egin du. Helbidea: "%1" + + + The configured network interface is invalid. Interface: "%1" + Konfiguratutako sare interfazea ez da baliozkoa. Helbidea: "%1" + + + + Tracker list updated - - Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + + Failed to update tracker list. Reason: "%1" - + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + IP helbide baliogabea baztertu da debekatutako IP helbideen zerrenda aplikatzean. IPa: "%1" + + + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Aztarnaria gehitu da torrentera. Torrenta: "%1". Aztarnaria: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Aztarnaria kendu da torrentetik. Torrenta: "%1". Aztarnaria: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + URL bidezko emailea gehitu da torrentera. Torrenta: "%1". URLa: "% 2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" + URL bidezko emailea kendu da torrentetik. Torrenta: "%1". URLa: "% 2" + + + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - Torrent paused. Torrent: "%1" - + Torrenta pausatuta. Torrenta: "%1" - + Torrent resumed. Torrent: "%1" - + Torrenta berrekita. Torrenta: "%1" - + Torrent download finished. Torrent: "%1" - + Torrentaren deskarga bukatu da. Torrenta: "% 1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" + Torrenta mugitzea bertan behera utzi da. Torrenat: "%1". Iturria: "%2". Helmuga: "%3" + + + + Torrent stopped. Torrent: "%1" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Torrenta mugitzea ilaran jartzeak huts egin du. Torrenta: "%1". Iturria: "%2". Helmuga: "%3". Arrazoia: torrent helburura mugitzen ari da une honetan - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Torrenta mugitzea ilaran jartzeak huts egin du. Torrenta: "%1". Iturria: "%2". Helburua: "%3". Arrazoia: bide-izenek kokaleku berdinera daramate - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Torrentaren mugimendua ilaran jarri da. Torrenta: "%1". Iturria: "%2". Helburua: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Hasi torrenta mugitzen. Torrenta: "%1". Helmuga: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Kategorien konfigurazioa gordetzeak huts egin du. Fitxategia: "%1". Errorea: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Kategorien konfigurazioa analizatzeak huts egin du. Fitxategia: "%1". Errorea: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Behar bezala analizatu da IP iragazkien fitxategia. Aplikaturiko arau kopurua: %1 - + Failed to parse the IP filter file - + IP iragazkien fitxategia analizatzeak huts egin du - + Restored torrent. Torrent: "%1" - + Torrenta berrezarrita. Torrenta: "%1" - + Added new torrent. Torrent: "%1" - + Torrent berria gehitu da. Torrenta: "% 1" - + Torrent errored. Torrent: "%1". Error: "%2" - + Torrentak errore bat izan du. Torrenta: "%1". Errorea: "%2" - - Removed torrent. Torrent: "%1" - + Torrenta kenduta. Torrenta: "%1" - Removed torrent and deleted its content. Torrent: "%1" - + Torrenta kenduta eta bere edukiak ezabatuta. Torrenta: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentari SSL parametroak falta zaizkio. Torrenta: "%1". Mezua: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + Fitxategiaren errorearen alerta. Torrenta: "%1". Fitxategia: "%2". Arrazoia: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP ataka mapatzeak huts egin du. Mezua: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + UPnP/NAT-PMP ataken mapatzea ongi burutu da. Mezua: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP Iragazkia - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + iragazitako ataka (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). + ataka pribilegiatua (%1) + + + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + BitTorrent session encountered a serious error. Reason: "%1" - + BitTorrent saioak errore larri bat aurkitu du. Arrazoia: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + SOCKS5 proxy errorea. Helbidea: %1. Mezua: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 modu nahasi murrizpenak - + Failed to load Categories. %1 - + Ezin izan dira kategoriak kargatu. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + kategorien konfigurazioa kargatzeak huts egin du. Fitxategia: "%1". Errorea: "Datu formatu baliogabea" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Torrenta kendu da baina bere edukiak edo zati-fitxategia ezabatzeak huts egin du. Torrenta: "%1". Errorea: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 ezgaituta dago - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 ezgaituta dago - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + URL emaritzaren DNS bilaketak huts egin du. Torrent: "%1". URLa: "%2". Errorea: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + URL emailetik errore-mezua jaso da. Torrenta: "%1". URLa: "%2". Mezua: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + IPan ondo entzuten. IP: "%1". Ataka: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + IPan entzuteak huts egin du. IP: "%1". Portua: "%2/%3". Arrazoia: "%4" - + Detected external IP. IP: "%1" - + Kanpoko IP detektatu da. IP-a: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Errorea: Barneko alerta-ilara beteta dago eta alertak kendu egin dira, baliteke errendimendu hondatua ikustea. Alerta mota jaitsi da: "%1". Mezua: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Torrenta ondo mugitu da. Torrenta: "%1". Helmuga: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - + Torrent mugitzeak huts egin du. Torrenta: "%1". Iturria: "%2". Helburua: "%3". Arrazoia: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Eragiketa bertan behera utzi da - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - + + Failed to start seeding. + Emaritza hasteak huts egin du. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Eragiketa bertan behera utzi da + Eragiketa bertan behera utzi da + + + + + Create new torrent file failed. Reason: %1. + Torrent fitxategi berria sortzeak huts egin du. Arrazoia: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Hutsegitea "%1" hartzailea "%2" torrentari gehitzean. Zergatia: %3 - + Peer "%1" is added to torrent "%2" "%1" hartzailea torrent "%2" torrentera gehitu da - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Ustekabeko datuak hauteman dira. Torrenta: %1. Datuak: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Ezin izan da fitxategian idatzi. Arrazoia: "%1". Torrenta "kargatu soilik" moduan dago orain. - + Download first and last piece first: %1, torrent: '%2' Jeitsi lehen eta azken atalak lehenik: %1, torrenta: '%2' - + On Bai - + Off Ez - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Torrenta birkargatzeak huts egin du. Torrenta: "%1". Arrazoia: "%2" + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Berrekite datuak sortzeak huts egin du. Torrenta: "%1". Arrazoia: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Torrenta berresteak huts egin du. Fitxategiak lekuz aldatu dira edo biltegiratzea ez da erabilgarri. Torrenta: "%1". Arrazoia: "%2" - + Missing metadata - + Metadatuak falta dira - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Agiri berrizendatze hutsegitea. Torrenta: "%1", agiria: "%2", zegatia: "%3" - + Performance alert: %1. More info: %2 - + Errendimendu alerta: %1. Informazio gehiago: %2 @@ -2694,184 +2819,198 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' '%1' parametroak '%1=%2' joskera jarraitu behar du - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' '%1' parametroak '%1=%2' joskera jarraitu behar du - + Expected integer number in environment variable '%1', but got '%2' Zenbaki osoa itxaroten zen '%1' inguru aldagaian, baina lortu da '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - '%1' parametroak '%1=%2' joskera jarraitu behar du + '%1' parametroak '%1=%2' joskera jarraitu behar du - + Expected %1 in environment variable '%2', but got '%3' %1 itxaroten zen '%2' inguru aldagaian, baina lortu da '%3' - - + + %1 must specify a valid port (1 to 65535). %1-k baliozko ataka adierazi behar du (1 eta 65535 artean). - + Usage: Erabilpena: - + [options] [(<filename> | <url>)...] - + [aukerak] [(<filename> | <url>)...] - + Options: Aukerak: - + Display program version and exit Erakutsi programaren bertsioa eta irten - + Display this help message and exit Erakutsi laguntza mezu hau eta irten - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + '%1' parametroak '%1=%2' joskera jarraitu behar du + + + + Confirm the legal notice + Berretsi ohar legala + + + + port ataka - - Change the Web UI port - Aldatu Web EI ataka + + Change the WebUI port + Aldatu WebUI ataka - + Change the torrenting port - + Aldatu torrent ataka - + Disable splash screen Ezgaitu ongi etorri ikusleihoa - + Run in daemon-mode (background) Ekin daemon-moduan (barrenean) - + dir Use appropriate short form or abbreviation of "directory" zuz - + Store configuration files in <dir> Biltegiratu itxurapen agiriak hemen: <dir> - - + + name izena - + Store configuration files in directories qBittorrent_<name> Biltegiratu itxurapen agiriak qBittorrent zuzenbideetan_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hackeatu libtorrent berrekite-azkarra agirietan eta egin helburuak erlatiboak profilaren zuzenbidearekiko - + files or URLs agirak edo URL-ak - + Download the torrents passed by the user Jeitsi rabiltzaileak pasatutako torrentak - + Options when adding new torrents: Aukerak torrent berriak gehitzerakoan: - + path helburua - + Torrent save path Torrenta gordetzeko helburua - + + Add torrents as running or stopped + + + Add torrents as started or paused - Gehitu torrentak hasita edo pausatuta bezala + Gehitu torrentak hasita edo pausatuta bezala - + Skip hash check Jausi hash egiaztapena - + Assign torrents to category. If the category doesn't exist, it will be created. Esleitu torrentak kategoriari. Kategoria ez badago, sortu egin daiteke. - + Download files in sequential order Jeitsi agiriak hurrenkera sekuentzialean - + Download first and last pieces first Jeitsi lehen eta azken atalak lehenik - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Torrent bat gehitzerakoan "Gehitu Torrent Berria" elkarrizketak zer irekitzen duen adierazten du - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Aukera balioak inguru aldagaien bidez eman daitezke. 'parameter-name' izeneko aukerarentzat, inguru aldagaiaren izena da 'QBT_PARAMETER_NAME' (hizki larriz, '-' ordeztuz '_'-rekin). Igaropen ikur balioentzat, ezarri aldagaia '1' edo 'TRUE' egoeran. Adibidez, hasierako ikusleihoa ezgaitzeko: - + Command line parameters take precedence over environment variables Agindu lerro parametroek lehentasuna dute inguru aldagaiekiko - + Help Laguntza @@ -2879,17 +3018,17 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar CategoryFilterModel - + Categories Kategoriak - + All Guztiak - + Uncategorized Kategoriagabea @@ -2923,32 +3062,45 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar - Resume torrents - Berrekin torrentak + Start torrents + + Stop torrents + + + + Resume torrents + Berrekin torrentak + + Pause torrents - Pausatu torrentak + Pausatu torrentak Remove torrents - + Kendu torrentak ColorWidget - + Edit... - + Editatu... - + Reset Berrezarri + + + System + + CookiesDialog @@ -2989,22 +3141,22 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Gaiaren estilo-orri pertsonalizatua kargatzeak huts egin du. %1 - + Failed to load custom theme colors. %1 - + Gaiaren kolore pertsonalizatuak kargatzeak huts egin du. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Gaiaren kolore lehenetsiak kargatzeak huts egin du. %1 @@ -3012,7 +3164,7 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar Remove torrent(s) - + Kendu torrenta(k) @@ -3021,23 +3173,27 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar - Also permanently delete the files + Also remove the content files - + Also permanently delete the files + Fitxategiak ere betirako ezabatu + + + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Ziur '%1' transferentzia zerrendatik kendu nahi duzula? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Ziur %1 torrent hauek transferentzia zerrendatik kendu nahi dituzula? - + Remove Kendu @@ -3050,12 +3206,12 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar Jeitsi URL-tatik - + Add torrent links Gehitu torrent loturak - + One link per line (HTTP links, Magnet links and info-hashes are supported) Lotura bat lerroko (HTTP loturak, Magnet loturak eta info-hashak daude sostengatuta) @@ -3065,12 +3221,12 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar Jeitsi - + No URL entered Ez da URL-rik sartu - + Please type at least one URL. Mesedez idatzi URL bat gutxinez. @@ -3229,64 +3385,91 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar Aztertze Akatsa: Iragazki agiria ez da baliozko PeerGuardian P2B agiria. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Torrenta deskargatzen... Iturria: "%1" - Trackers cannot be merged because it is a private torrent - + Ezin dira aztarnariak fusionatu torrenta pribatua delako - + Torrent is already present - Torrenta badago jadanik + Torrenta badago jadanik - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + + Trackers cannot be merged because it is a private torrent. + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + '%1' torrenta transferentzia zerrendan dago jada. Iturburu berriko jarraitzaileak batu nahi dituzu? + GeoIPDatabase - - + + Unsupported database file size. Datubase agiri neurri sostengatu gabea. - + Metadata error: '%1' entry not found. Metadatu akatsa: '%1' sarrera ez da aurkitu. - + Metadata error: '%1' entry has invalid type. Metadatu akatsa: '%1' sarrera mota baliogabekoa da. - + Unsupported database version: %1.%2 Datubase bertsio sostengatu gabea: %1.%2 - + Unsupported IP version: %1 IP bertsio sostengatu gabea: %1 - + Unsupported record size: %1 Erregistro neurri sostengatu gabea: %1 - + Database corrupted: no data section found. Datubasea hondatuta: ez da datu atalik aurkitu. @@ -3294,17 +3477,17 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http eskabide neurriak muga gainditzen du, ahoa itxitzen. Muga: %1, IP-a: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Http eskaera-metodo txarra, socketa ixten da. IPa: %1. Metodoa: "%2" - + Bad Http request, closing socket. IP: %1 Http eskabide gaitza, ahoa itxitzen. IP-a: %1 @@ -3345,36 +3528,64 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar IconWidget - + Browse... Bilatu... - + Reset Berrezarri - + Select icon - + Hautatu ikonoa - + Supported image files - + Onartutako irudi fitxategiak + + + + LegalNotice + + + Legal Notice + Legezko Jakinarazpena + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent agiri elkarbanatze programa bat da. Torrent bati ekiten diozunean, datu hauek eskuragarriak izango dira besteentzako igoeraren bidez. Elkarbanatzen duzun edozein eduki zure erantzunkizunekoa da. + + + + No further notices will be issued. + Ez da berri gehiago jaulkiko. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Lege-oharra irakurri baduzu, `--confirm-legal-notice` komando-lerroko aukera erabil dezakezu mezu hau ezabatzeko. + + + + Press 'Enter' key to continue... + Sakatu 'Sartu' tekla jarraitzeko... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 blokeatuta. Zergaitia: %2. - + %1 was banned 0.0.0.0 was banned %1 eragotzia izan da @@ -3383,90 +3594,62 @@ Sostengatutako heuskarriak: S01E01, 1x1, 2017.12.31 eta 31.12.2017 (Data heuskar Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 agindu lerro parametro ezezaguna da. - - + + %1 must be the single command line parameter. %1 agindu lerro parametro soila izan behar da. - - You cannot use %1: qBittorrent is already running for this user. - Ezin duzu %1 erabili: qBittorrent jadanik ekinean dago erabiltzaile honentzat. - - - + Run application with -h option to read about command line parameters. Ekin aplikazioa -h aukerarekin agindu lerro parametroei buruz irakurtzeko. - + Bad command line Agindu lerro okerra - + Bad command line: Agindu lerro okerra: - + An unrecoverable error occurred. - + Berreskuraezina den errore bat gertatu da. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Legezko Jakinarazpena - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent agiri elkarbanatze programa bat da. Torrent bati ekiten diozunean, datu hauek eskuragarriak izango dira besteentzako igoeraren bidez. Elkarbanatzen duzun edozein eduki zure erantzunkizunekoa da. - - - - No further notices will be issued. - Ez da berri gehiago jaulkiko. - - - - Press %1 key to accept and continue... - Sakatu %1 tekla onartu eta jarraitzeko... + qBittorrent-ek errore berreskuraezin bat aurkitu du. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent agiri elkarbanatze programa bat da. Torrent bati ekiten diozunean, datu hauek eskuragarriak izango dira besteentzako igoeraren bidez. Elkarbanatzen duzun edozein eduki zure erantzunkizunekoa da. -Ez dira jakinarazpen gehiago egingo. + + You cannot use %1: qBittorrent is already running. + Ezin duzu %1 erabili: qBittorrent dagoeneko martxan dago. - - Legal notice - Legezko Jakinarazpena + + Another qBittorrent instance is already running. + Beste qBittorrent instantzia bat dagoeneko martxan dago. - - Cancel - Ezeztatu + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Ustekabeko qBittorrent instantzia aurkitu da. Instantzia honetatik irteten. Uneko prozesuaren IDa: %1. - - I Agree - Onartzen dut + + Error when daemonizing. Reason: "%1". Error code: %2. + Errore bat daimonizatzean. Arrazoia: "%1". Errore kodea: %2. @@ -3477,615 +3660,706 @@ Ez dira jakinarazpen gehiago egingo. &Editatu - + &Tools &Tresnak - + &File &Agiria - + &Help &Laguntza - + On Downloads &Done &Burututako Jeisketetan - + &View &Ikusi - + &Options... A&ukerak... - &Resume - &Berrekin + &Berrekin - + &Remove - + &Kendu - + Torrent &Creator Torrent &Sortzailea - - + + Alternative Speed Limits Aukerazko Abiadura Mugak - + &Top Toolbar Goiko &Tresnabarra - + Display Top Toolbar Erakutsi Goiko Tresnabarra - + Status &Bar Egoera &Barra - + Filters Sidebar Iragazkien alde-barra - + S&peed in Title Bar &Abiadura Izenaren Barran - + Show Transfer Speed in Title Bar Erakutsi Eskualdaketa Abiadura Izenaren Barran - + &RSS Reader &RSS Irakurlea - + Search &Engine Bilaketa &Gailua - + L&ock qBittorrent &Blokeatu qBittorrent - + Do&nate! E&man Dirulaguntza! - - &Do nothing + + Sh&utdown System - + + &Do nothing + &Ez egin ezer + + + Close Window Itxi Leihoa - R&esume All - Berrekin &Denak + Berrekin &Denak - + Manage Cookies... Kudeatu Cookieak... - + Manage stored network cookies Kudeatu biltegiratutako sare cookieak - + Normal Messages Mezu Arruntak - + Information Messages Argibide Mezuak - + Warning Messages Kontuz Mezuak - + Critical Messages Larrialdi Mezuak - + &Log &Oharra - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Ezarri Abiadura Muga Orokorrak... - + Bottom of Queue Lerroaren Beheren - + Move to the bottom of the queue Mugitu lerroaren beheren - + Top of Queue Lerroaren Goren - + Move to the top of the queue Mugitu lerroaren gorenera - + Move Down Queue Mugitu Lerroan Behera - + Move down in the queue Mugitu behera lerroan - + Move Up Queue Mugitu Gora Lerroan - + Move up in the queue Mugitu gora lerroan - + &Exit qBittorrent I&rten qBittorrent-etik - + &Suspend System &Egoneratu Sistema - + &Hibernate System &Neguratu Sistema - S&hutdown System - &Itzali Sistema + &Itzali Sistema - + &Statistics E&statistikak - + Check for Updates Egiaztatu Eguneraketarik dagoen - + Check for Program Updates Egiaztatu Programaren Eguneraketarik dagoen - + &About &Honi buruz - &Pause - &Pausatu + &Pausatu - P&ause All - P&asatu Denak + P&asatu Denak - + &Add Torrent File... Gehitu Torrent &Agiria... - + Open Ireki - + E&xit I&rten - + Open URL Ireki URL-a - + &Documentation &Agiritza - + Lock Blokeatu - - - + + + Show Erakutsi - + Check for program updates Egiaztatu programaren eguneraketak - + Add Torrent &Link... Gehitu Torrent &Lotura... - + If you like qBittorrent, please donate! qBittorrent gogoko baduzu, mesedez eman dirulaguntza! - - + + Execution Log Ekintza Oharra - + Clear the password Garbitu sarhitza - + &Set Password Ezarri &Sarhitza - + Preferences Hobespenak - + &Clear Password &Garbitu Sarhitza - + Transfers Eskualdaketak - - + + qBittorrent is minimized to tray qBittorrent erretilura txikiendu da - - - + + + This behavior can be changed in the settings. You won't be reminded again. Jokabide hau ezarpenetan aldatu daiteke. Ez zaizu berriro gogoratuko. - + Icons Only Ikurrak Bakarrik - + Text Only Idazkia Bakarrik - + Text Alongside Icons Idazkia Ikurren Alboan - + Text Under Icons Idazkia Ikurren Azpian - + Follow System Style Jarraitu Sistemaren Estiloa - - + + UI lock password EI blokeatze sarhitza - - + + Please type the UI lock password: Mesedez idatzi EI blokeatze sarhitza: - + Are you sure you want to clear the password? Zihur zaude sarhitza garbitzea nahi duzula? - + Use regular expressions Erabili adierazpen arruntak - - Search - Bilatu + + + Search Engine + Bilaketa Gailua - - Transfers (%1) - Eskualdaketak (%1) + + Search has failed + Bilaketak huts egin du - Recursive download confirmation - Jeisketa mugagabearen baieztapena + + Search has finished + Bilaketa amaitu da - Never - Inoiz ez + + Search + Bilatu + + + + Transfers (%1) + Eskualdaketak (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent eguneratua izan da eta berrabiarazpena behar du aldaketek eragina izateko. - + qBittorrent is closed to tray qBittorrent erretilura itxi da - + Some files are currently transferring. Zenbait agiri eskualdatzen ari dira une honetan. - + Are you sure you want to quit qBittorrent? Zihur zaude qBittorrent uztea nahi duzula? - + &No &Ez - + &Yes &Bai - + &Always Yes & Betik Bai - + Options saved. + Aukerak gordeta. + + + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, K: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. - %1/s - s is a shorthand for seconds - %1/s + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Ez dago Python Runtime - + qBittorrent Update Available qBittorrent Eguneraketa Eskuragarri - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python beharrezkoa da bilaketa gailua erabiltzeko baina ez dirudi ezarrita dagoenik. Orain ezartzea nahi duzu? - + Python is required to use the search engine but it does not seem to be installed. Python beharrezkoa da bilaketa gailua erabiltzeko baina ez dirudi ezarrita dagoenik. - - + + Old Python Runtime Python Runtime zaharra - + A new version is available. Bertsio berri bat eskuragarri - + Do you want to download %1? Nahi duzu %1 jeistea? - + Open changelog... Ireki aldaketa-oharra.. - + No updates available. You are already using the latest version. Ez dago eguneraketarik eskuragarri. Jadanik azken bertsioa ari zara erabiltzen. - + &Check for Updates &Egiaztatu Eguneraketak - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Zure Python bertsioa (%1) zaharkituta dago. Beharrezko gutxienekoa: %2. +Bertsio berriago bat instalatu nahi duzu orain? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + Zure Python bertsioa (%1) zaharkituta dago. Mesedez, eguneratu azken bertsiora bilatzaileek funtziona dezaten. +Beharrezko gutxiena: %2. - + + Paused + Pausatuta + + + Checking for Updates... Eguneraketak Egiaztatzen.. - + Already checking for program updates in the background Jadanik programaren eguneraketa egiaztatzen barrenean - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Jeisketa akatsa - Python setup could not be downloaded, reason: %1. Please install it manually. - Python ezartzailea ezin da jeitsi, zergaitia: %1. + Python ezartzailea ezin da jeitsi, zergaitia: %1. Mesedez ezarri eskuz. - - + + Invalid password Sarhitz baliogabea - + Filter torrents... - + Iragazi torrentak... - + Filter by: - + Iragazi honekin: - + The password must be at least 3 characters long - + Pasahitzak 3 karaktere izan behar ditu gutxienez - - - + + + RSS (%1) RSS (%1) - + The password is invalid Sarhitza baliogabea da - + DL speed: %1 e.g: Download speed: 10 KiB/s JE abiadura: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s IG abiadura: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [J: %1, I: %2] qBittorrent %3 - - - + Hide Ezkutatu - + Exiting qBittorrent qBittorrentetik irtetzen - + Open Torrent Files Ireki Torrent Agiriak - + Torrent Files Torrent Agiriak @@ -4115,12 +4389,12 @@ Mesedez ezarri eskuz. Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. - + DNS dinamikoaren errorea: zerbitzuak qBittorrent zerrenda beltzean sartu su, bidali akatsen txostena https://bugs.qbittorrent.org helbidera. Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. - + DNS dinamikoaren errorea: zerbitzuak %1 itzuli du, mesedez bidali akatsen txostena https://bugs.qbittorrent.org helbidera. @@ -4146,133 +4420,133 @@ Mesedez ezarri eskuz. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + S/I errorea: %1 - + The file size (%1) exceeds the download limit (%2) Agiriaren neurriak (%1) jeitsiera muga gainditzen du (%2) - + Exceeded max redirections (%1) Gaindituta geh. berzuzentzeak (%1) - + Redirected to magnet URI Magnet URI-ra berzuzendua - + The remote host name was not found (invalid hostname) Hurruneko hostalari izena ez da aurkitu (hostalari-izen baliogabea) - + The operation was canceled Eragiketa ezeztatua izan da - + The remote server closed the connection prematurely, before the entire reply was received and processed Hurruneko zerbitzariak elkarketa azkarregi itxi du, erantzuna osorik jaso eta prozesatu aurretik - + The connection to the remote server timed out Hurruneko zerbitzariarekiko elkarketa denboraz kanpo - + SSL/TLS handshake failed SLL/TLS eskuemate hutsegitea - + The remote server refused the connection Hurruneko zerbitzariak elkarketa baztertu du - + The connection to the proxy server was refused Proxy zerbitzariarekiko elkarketa baztertua izan da - + The proxy server closed the connection prematurely Proxy zerbitzariak elkarketa azkarregi itxi du - + The proxy host name was not found Proxy hostalari izena ez da aurkitu - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Proxyarekiko elkarketa denboraz kanpo edo proxyak ez dio garaiz erantzun bidalitako eskabideari - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxyak egiaztapena behar du eskabidea burutzeko baina ez du onartu eskainitako nortasunik - + The access to the remote content was denied (401) Hurruneko edukirako sarbidea ukatua izan da (401) - + The operation requested on the remote content is not permitted Hurruneko edukian eskatutako eragiketa ez dago baimenduta - + The remote content was not found at the server (404) Hurruneko edukia ez da aurkitu zerbitzarian (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Hurruneko zerbitzariak egiaztapena behar du edukia zerbitzatzeko baina ez du onartu emandako nortasunik - + The Network Access API cannot honor the request because the protocol is not known Sare Sarbide API-k ezin du eskabidea burutu protokoloa ez delako ezaguna - + The requested operation is invalid for this protocol Eskatutako eragiketa baliogabea da protokolo honentzat - + An unknown network-related error was detected Sareari-buruzko akats ezezagun bat atzeman da - + An unknown proxy-related error was detected Proxyari-buruzko akats ezezagun bat atzeman da - + An unknown error related to the remote content was detected Hurruneko edukiari buruzko akats ezezagun bat atzeman da - + A breakdown in protocol was detected Protokolo matxura bat atzeman da - + Unknown error akats ezezaguna @@ -4280,7 +4554,12 @@ Mesedez ezarri eskuz. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSL akatsa ezikusten, URL: "%1", akatsak: "%2" @@ -5348,7 +5627,7 @@ Mesedez ezarri eskuz. Couldn't save downloaded IP geolocation database file. Reason: %1 - + Ezin izan da deskargatutako IP geokokapen datu-basearen fitxategia gorde. Arrazoia: %1 @@ -5576,47 +5855,47 @@ Mesedez ezarri eskuz. Connection failed, unrecognized reply: %1 - + Konexioak huts egin du, erantzun ezezaguna: %1 Authentication failed, msg: %1 - + Autentifikazioak huts egin du, mez: %1 <mail from> was rejected by server, msg: %1 - + <mail from> zerbitzariarengatik ukatua izan da, mez: %1 <Rcpt to> was rejected by server, msg: %1 - + <Rcpt to> zerbitzariarengatik ukatua izan da, mez: %1 <data> was rejected by server, msg: %1 - + <data> zerbitzariarengatik ukatua izan da, mez: %1 Message was rejected by the server, error: %1 - + Mezua zerbitzariarengatik ukatua izan da, mez: %1 Both EHLO and HELO failed, msg: %1 - + EHLO eta HELO-k huts egin dute, mez: %1 The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 - + Badirudi SMTP zerbitzariak ez duela onartzen ditugun autentifikazio-modurik [CRAM-MD5|PLAIN|LOGIN], autentifikazioa saltatzen, seguruenik huts egingo duela jakinda... Zerbitzariaren autentifikazio-moduak: %1 Email Notification Error: %1 - + E-posta jakinarazpen errorea: %1 @@ -5652,294 +5931,307 @@ Mesedez ezarri eskuz. BitTorrent - + RSS RSS - Web UI - Web EI + Web EI - + Advanced Aurreratua - + Customize UI Theme... - + Pertsonalizatu UI gaia... - + Transfer List Eskualdaketa Zerrenda - + Confirm when deleting torrents Baieztatu torrenten ezabapena - Shows a confirmation dialog upon pausing/resuming all the torrents - + Berrespen elkarrizketa bat erakusten du torrentak pausatu/berrekitean - Confirm "Pause/Resume all" actions - + Berretsi "Pausatu/Berrekin denak" ekintzak - + Use alternating row colors In table elements, every other row will have a grey background. Erabili lerro margo ezberdinak - + Hide zero and infinity values Ezkutatu huts eta mugagabeko balioak - + Always Betik - Paused torrents only - Pausatutako torrentak bakarrik + Pausatutako torrentak bakarrik - + Action on double-click Klik-bikoitzaren ekintza - + Downloading torrents: Torrentak jeisterakoan: - - Start / Stop Torrent - Hasi / Gelditu Torrenta + Hasi / Gelditu Torrenta - - + + Open destination folder Ireki helmuga agiritegia - - + + No action Ekintzarik ez - + Completed torrents: Osatutako torrentak: - + Auto hide zero status filters - + Ezkutatu automatikoki zero egoera iragazkiak - + Desktop Mahaigaina - + Start qBittorrent on Windows start up Hasi qBittorrent Windows hasterakoan - + Show splash screen on start up Erakutsi logoa abiarazterakoan - + Confirmation on exit when torrents are active Baieztapena irtetzerakoan torrentak ekinean daudenean - + Confirmation on auto-exit when downloads finish Baieztapena berez-irtetzean jeitsierak amaitutakoan - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>qBittorrent .torrent fitxategietarako eta/edo Magnet esteketarako<br/> programa lehenetsi gisa ezartzeko, <span style=" font-weight:600;">Kontrol Paneleko</span> <span style=" font-weight:600;">Lehenetsitako Programak</span> elkarrizketa-koadroa erabili dezakezu.</p></body></html> - + KiB KiB - + Torrent content layout: Torrent edukiaren antolakuntza: - + Original Jatorrizkoa - + Create subfolder Sortu azpiagiritegia - + Don't create subfolder Ez sortu azpiagiritegia - + The torrent will be added to the top of the download queue - + Torrenta deskarga-ilararen goiko aldean gehituko da - + Add to top of queue The torrent will be added to the top of the download queue Gehitu ilararen goiko aldera. - + When duplicate torrent is being added - + Torrent bikoiztua gehitzen ari denean - + Merge trackers to existing torrent - + Batu aztarnariak lehendik dagoen torrentarekin + + + + Keep unselected files in ".unwanted" folder + Gorde hautatu gabeko fitxategiak ".unwanted" karpetan - + Add... Gehitu... - + Options.. Aukerak... - + Remove Kendu - + Email notification &upon download completion &Post@ jakinarazpena jeitsiera osatutakoan - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Hartzaile elkarketa protokoloa: - + Any Edozein - + I2P (experimental) - + I2P (esperimentala) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + <html><head/><body><p>&quot;modu mistoa&quot; gaituta dago I2P torrentek aztarnaria ez den beste iturri batzuetatik parekoak ere lortzeko eta ohiko IPetara konektatzeko baimena dute, anonimotasunik eman gabe. Hau erabilgarria izan daiteke erabiltzaileari I2Pren anonimotasuna interesatzen ez bazaio, baina hala ere I2P parekideekin konektatu ahal izan nahi badu.</p></body></html> - + Mixed mode - + Modu mistoa - + Some options are incompatible with the chosen proxy type! - + Aukera batzuk ez dira bateragarriak aukeratutako proxy-motarekin! - + If checked, hostname lookups are done via the proxy - + Hautatzen bada, ostalari-izenen bilaketak proxy bidez egiten dira - + Perform hostname lookup via proxy - + Egin ostalari-izenen bilaketa proxy bidez - + Use proxy for BitTorrent purposes - + Erabili proxy BitTorrent helburuetarako - + RSS feeds will use proxy - + RSS jarioek proxya erabiliko dute - + Use proxy for RSS purposes - + Erabili proxy RSS helburuetarako - + Search engine, software updates or anything else will use proxy - + Bilatzaileak, software eguneratzeak edo beste edozerk proxya erabiliko du - + Use proxy for general purposes - + Erabili proxy helburu orokorretarako - + IP Fi&ltering IP I&ragazketa - + Schedule &the use of alternative rate limits Egitarautu a&ukerazko neurri muga erabilpena - + From: From start time Hemendik: - + To: To end time Hona: - + Find peers on the DHT network Bilatu hartzaileak DHT sarean - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5948,140 +6240,188 @@ Enkriptaketa beharr du: Elkartu hartzaileetara enkriptaketa protokoloaren bidez Ezagaitu enkriptaketa: Elkartu hartzaileetara enkriptaketa protokolo gabe bakarrik - + Allow encryption Gaitu enkriptaketa - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Argibide gehiago</a>) - + Maximum active checking torrents: - + Gehienezko egiaztapen-torrent aktibo: - + &Torrent Queueing &Torrent Lerrokapena - + When total seeding time reaches - + Emaritza denbora osoa honetara heltzen denean - + When inactive seeding time reaches - + Emaritza denbora inaktiboa honetara heltzen denean - A&utomatically add these trackers to new downloads: - &Berezgaitasunez gehitu aztarnari hauek jeitsiera berriei: + &Berezgaitasunez gehitu aztarnari hauek jeitsiera berriei: - + RSS Reader RSS Irakurlea - + Enable fetching RSS feeds Gaitu RSS jarioak lortzea - + Feeds refresh interval: Jarioen berritze epea: - + + Same host request delay: + Ostalari berdinaren eskaeren atzerapena: + + + Maximum number of articles per feed: Gehienezko idazlan harpidetza bakoitzeko: - - - + + + min minutes min - + Seeding Limits Emaritza Mugak - Pause torrent - Pausatu torrenta + Pausatu torrenta - + Remove torrent Kendu torrenta - + Remove torrent and its files Kendu torrenta eta bere agiriak - + Enable super seeding for torrent Gaitu gain emaritza torrentarentzat - + When ratio reaches Maila erdietsitakoan - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL-a: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent Berez Jeistzailea - + Enable auto downloading of RSS torrents Gaitu RSS torrenten berez jeistea - + Edit auto downloading rules... Editatu berez jeiste arauak... - + RSS Smart Episode Filter RSS Atal Iragazki Adimentsua - + Download REPACK/PROPER episodes Jeitsi REPACK/PROPER atalak - + Filters: Iragazkiak: - + Web User Interface (Remote control) Web Erabiltzaile Interfazea (Hurruneko agintea) - + IP address: IP helbidea: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6090,42 +6430,41 @@ Adierazi IPv4 edo IPv6 helbide bat. "0.0.0.0" adierazi dezakezu edozei "::" edozein IPv6 helbiderentzat, edo "*" bientzat IPv4 et IPv6. - + Ban client after consecutive failures: Kanporatu bezeroa hutsegite jarraien ondoren - + Never Inoiz ez - + ban for: Kanporatu honegatik: - + Session timeout: Saio epemuga: - + Disabled Ezgaituta - Enable cookie Secure flag (requires HTTPS) - Gaitu cookie Seguru ikurra (HTTPS behar du) + Gaitu cookie Seguru ikurra (HTTPS behar du) - + Server domains: Zerbitzari domeinuak: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6138,442 +6477,495 @@ WebEI zerbitzariak erabiltzen dituen domeinu izenetan jarri behar duzu. Erabili ';' sarrera ugari banantzeko. '*' ordez-hizkia erabili daiteke. - + &Use HTTPS instead of HTTP Erabili &HTTPS, HTTP-ren ordez - + Bypass authentication for clients on localhost Igaropen egiaztapena tokiko-hostalariko berezoentzat - + Bypass authentication for clients in whitelisted IP subnets Igaropen egiaztapena IP azpisare zerrenda-zuriko berezoentzat - + IP subnet whitelist... IP azpisare zerrenda-zuria... - - Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + Use alternative WebUI - + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + Zehaztu alderantzizko proxy IPak (edo azpisareak, adib. 0.0.0.0/24) birbidalitako bezeroaren helbidea (X-Forwarded-For goiburua) erabiltzeko. Erabili ';' hainbat sarrera banatzeko. + + + Upda&te my dynamic domain name Eg&uneratu nire domeinu dinamikoaren izena - + Minimize qBittorrent to notification area Txikiendu qBittorrent jakinarazpen eremura - + + Search + + + + + WebUI + + + + Interface Interfazea - + Language: Hizkuntza: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Erretilu ikur estiloa: - - + + Normal Arrunta - + File association Agiri elkarketa - + Use qBittorrent for .torrent files Erabili qBittorrent .torrent agirientzat - + Use qBittorrent for magnet links Erabili qBittorrent magnet loturentzat - + Check for program updates Egiaztatu programaren eguneraketarik dagoen - + Power Management Indar Kudeaketa - + + &Log Files + + + + Save path: Gordetze helburua: - + Backup the log file after: Babeskopiatu ohar agiria ondoren: - + Delete backup logs older than: Ezabatu zaharragoak diren babeskopia oharrak: - + + Show external IP in status bar + + + + When adding a torrent Torrent bat gehitzerakoan - + Bring torrent dialog to the front Ekarri torrent elkarrizketa aurrealdera - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Ezabatu gehitzea ezeztatu diren .torrent agiriak ere - + Also when addition is cancelled Baita gehitzea ezeztatutakoan - + Warning! Data loss possible! Kontuz! Datuak galdu daitezke! - + Saving Management Gordetze Kudeaketa - + Default Torrent Management Mode: Berezko Torrent Kudeaketa Modua: - + Manual Eskuzkoa - + Automatic Berezgaitasunezkoa - + When Torrent Category changed: Torrent Kategoria aldatzen denean: - + Relocate torrent Berkokatu torrenta - + Switch torrent to Manual Mode Aldatu torrenta Eskuzko Modura - - + + Relocate affected torrents Berkokatu eragindako torrentak - - + + Switch affected torrents to Manual Mode Aldatu eragindako torrentak Eskuzko Modura - + Use Subcategories Erabili Azpikategoriak - + Default Save Path: Berezko Gordetze Helbura: - + Copy .torrent files to: Kopiatu .torrent agiriak hona: - + Show &qBittorrent in notification area Erakutsi &qBittorrent jakinarazpen eremuan - &Log file - &Ohar agiria + &Ohar agiria - + Display &torrent content and some options Erakutsi &torrent edukia eta aukera batzuk - + De&lete .torrent files afterwards E&zabatu .torrent agiriak edonola - + Copy .torrent files for finished downloads to: Kopiatu amaitutako jeisketa .torrent agiriak hona: - + Pre-allocate disk space for all files Aurre-esleitu diska tokia agiri guztientzat - + Use custom UI Theme Erabili norbere EI azalgaia - + UI Theme file: EI azalgai agiria: - + Changing Interface settings requires application restart Interfazearen ezarpenak aldatuz gero aplikazioa berrabiarazi behar da - + Shows a confirmation dialog upon torrent deletion Erakutsi baieztapen elkarrizketa bat torrenta ezabatzean - - + + Preview file, otherwise open destination folder Aurreikusi agiria, bestela ireki helmuga agiritegia - - Show torrent options - + Erakutsi torrentaren aukerak - + Shows a confirmation dialog when exiting with active torrents Erakutsi baieztapen elkarrizketa bat torrentak ekinean daudela irtetzean - + When minimizing, the main window is closed and must be reopened from the systray icon Txikientzerakoan, leiho nagusia itxi egiten da eta sistemaren erretilu ikurretik berrireki behar da - + The systray icon will still be visible when closing the main window Sistemaren erretilu ikurra ikusgarria egongo da leiho nagusia itxitzean - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Itxi qBittorrent jakinarazpen eremura - + Monochrome (for dark theme) Margobakarra (Azalgai iluna) - + Monochrome (for light theme) Margobakarra (azalgai argiarako) - + Inhibit system sleep when torrents are downloading Eragotzi sistemaren lotaratzea torrentak jeisten daudenean - + Inhibit system sleep when torrents are seeding Eragotzi sistemaren lotaratzea torrentak emaritzan daudenean - + Creates an additional log file after the log file reaches the specified file size Ohar agiri gehigarri bat sortzen du ohar agiriak adierazitako neurria erdiestean - + days Delete backup logs older than 10 days egun - + months Delete backup logs older than 10 months hilabete - + years Delete backup logs older than 10 years urte - + Log performance warnings Erregistratu errendimendu oharrak - The torrent will be added to download list in a paused state - Torrent agiriak jeisketa zerrendara gehituko dira pausatu egoran. + Torrent agiriak jeisketa zerrendara gehituko dira pausatu egoran. - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ez hasi jeisketa berezgaitasunez - + Whether the .torrent file should be deleted after adding it - + .torrent fitxategia gehitu ondoren ezabatu behar den ala ez - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Esleitu agiri neurri osoan diskan jeitsierak hasi aurretik, zatiketa gutxitzeko. HDD-etan bakarrik erabilgarria. - + Append .!qB extension to incomplete files Gehitu .!qB luzapena osatugabeko agiriei - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Torrent bat jeistean, eskaini torrentak gehitzea bere barnean aurkituriko .torrent agiri guztientzat - + Enable recursive download dialog Gaitu jeisketa mugagabearen elkarrizketa - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Berezgaitasunezkoa: Torrent ezaugarri ugari (adib. gordetze helburua) elkarturiko kategoriaren arabera erabakiko da Eskuzkoa: Torrent ezaugarri ugari (adib. gordetze helburua) eskuz esleitu behar da - + When Default Save/Incomplete Path changed: - + Gorde/Osagabe bide-izen lehenetsia aldatzen denean: - + When Category Save Path changed: Kategoria Gordetze Helburua aldatzen denean: - + Use Category paths in Manual Mode - + Erabili kategorien bide-izenak eskuzko moduan - + Resolve relative Save Path against appropriate Category path instead of Default one - + Ebatzi gordetze bide-izen erlatiboa kategoriaren bide egokiaren aurka lehenetsitako baten ordez - + Use icons from system theme - + Erabili sistemaren gaiaren ikonoak - + Window state on start up: - + Leihoaren egoera abiaraztean: - + qBittorrent window state on start up - + qBittorrent leihoaren egoera abiaraztean - + Torrent stop condition: - + Torrentaren gelditze-baldintza: - - + + None (Bat ere ez) - - + + Metadata received Metadatuak jaso dira - - + + Files checked Fitxategiak egiaztatuta - + Ask for merging trackers when torrent is being added manually - + Eskatu aztarnariak bateratzea torrenta eskuz gehitzen denean - + Use another path for incomplete torrents: Erabili beste bide-izena bukatu gabeko torrententzat: - + Automatically add torrents from: Berezgaitasunez gehitu torrentak hemendik: - + Excluded file names - + Baztertutako fitxategi-izenak - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6587,844 +6979,929 @@ Examples readme.txt: filter exact file name. ?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - + Zerrenda beltzean gehitu hainbat fitxategien izen torrent(etatik) deskargatu ez daitezen. +Zerrenda honetako edozein iragazkirekin bat datozen fitxategiek "Ez deskargatu" lehentasuna automatikoki ezarriko dute. + +Erabili lerro berriak hainbat sarrera bereizteko. Komodinak erabil ditzake behean azaltzen den moduan. +*: edozein karaktereren zero edo gehiagorekin bat dator. +?: edozein karaktere bakarrarekin bat dator. +[...]: karaktere multzoak kortxete artean irudika daitezke. + +Adibideak +*.exe: iragazkia '.exe' fitxategi-luzapena. +readme.txt: iragazi fitxategiaren izen zehatza. +?.txt: iragazi 'a.txt', 'b.txt' baina ez 'aa.txt'. +readme[0-9].txt: iragazi 'readme1.txt', 'readme2.txt' baina ez 'readme10.txt'. - + Receiver Jasotzailea - + To: To receiver Hona: - + SMTP server: SMTP zerbitzaria: - + Sender Bidaltzailea - + From: From sender Hemendik: - + This server requires a secure connection (SSL) Zerbitzari honek elkarketa segurua behar du (SSL) - - + + Authentication Egiaztapena - - - - + + + + Username: Erabiltzaile-izena: - - - - + + + + Password: Sarhitza: - + Run external program - + Exekutatu kanpoko programa - Run on torrent added - + Exekutatu torrenta gehitzean - Run on torrent finished - + Exekutatu torrenta bukatzean - + Show console window Erakutsi kontsolaren leihoa - + TCP and μTP TCP eta μTP - + Listening Port Aditze Ataka - + Port used for incoming connections: Barrurako elkarketentzako ataka: - + Set to 0 to let your system pick an unused port Ezarri 0ra sistemak erabili gabeko ataka bat hartzeko - + Random Zorizkoa - + Use UPnP / NAT-PMP port forwarding from my router Erabili UPnP / NAT-PMP ataka nire bideratzailetik bidaltzeko - + Connections Limits Elkarketa Mugak - + Maximum number of connections per torrent: Gehienezko elkarketa zenbatekoa torrent bakoitzeko: - + Global maximum number of connections: Gehienezko elkarketa zenbatekoa orotara: - + Maximum number of upload slots per torrent: Gehienezko igoera aho zenbatekoa torrent bakoitzeko: - + Global maximum number of upload slots: Gehienezko Igoera aho orokor zenbatekoa: - + Proxy Server Proxy Zerbitzaria - + Type: Mota: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Hostalaria: - - - + + + Port: Ataka: - + Otherwise, the proxy server is only used for tracker connections Bestela, proxya zerbitzaria aztarnari elkarketetarako bakarrik erabiltzen da - + Use proxy for peer connections Erabili proxya hartzaile elkarketetarako - + A&uthentication E&giaztapena - + Info: The password is saved unencrypted Argibidea: Sarhitza enkriptatu gabe gordetzen da - + Filter path (.dat, .p2p, .p2b): Iragazki helburua (.dat, .p2p, .p2b): - + Reload the filter Birgertatu iragazkia - + Manually banned IP addresses... Eskuzko IP helbide eragoztea... - + Apply to trackers Ezarri aztarnariei - + Global Rate Limits Neurri Muga Orokorrak - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Igoera: - - + + Download: Jeitsiera: - + Alternative Rate Limits Aukerazko Neurri Mugak - + Start time Hasiera ordua - + End time Amaira ordua - + When: Noiz: - + Every day Egunero - + Weekdays Lanegunak - + Weekends Asteburuak - + Rate Limits Settings Neurri Muga Ezarpenak - + Apply rate limit to peers on LAN Ezarri neurri muga LAN-eko hartzaileei - + Apply rate limit to transport overhead Ezarri neurri muga burugain garraioari - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Ezarri neurri muga µTP protokoloari - + Privacy Pribatutatasuna - + Enable DHT (decentralized network) to find more peers Gaitu DHT (zentralizatugabeko sarea) hartzaile gehiago bilatzeko - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Aldatu hartzaileak Bittorrent bezero bateragarriekin (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Gaitu Hartzaile Aldaketa (PeX) hartzaile gehiago bilatzeko - + Look for peers on your local network Bilatu hartzaileak zure tokiko sarean - + Enable Local Peer Discovery to find more peers Gaitu Tokiko Hartzaile Aurkikuntza hartzaile gehiago bilatzeko - + Encryption mode: Enkriptaketa modua: - + Require encryption Enkriptaketa beharrezkoa - + Disable encryption Ezgaitu enkriptaketa - + Enable when using a proxy or a VPN connection Gaitu proxy bat edo VPN elkarketa bat erabiltzerakoan. - + Enable anonymous mode Gaitu izengabeko modua - + Maximum active downloads: Gehienezko jeitsiera eraginda: - + Maximum active uploads: Gehienezko igoera eraginda: - + Maximum active torrents: Gehienezko torrent eraginda: - + Do not count slow torrents in these limits Ez zenbatu torrent geldoak muga hauetan - + Upload rate threshold: Igoera neurri mugapena: - + Download rate threshold: Jeitsiera neurri mugapena: - - - + + + + sec seconds seg - + Torrent inactivity timer: Torrentaren jardungabe denboragailua: - + then orduan - + Use UPnP / NAT-PMP to forward the port from my router Erabili UPnP / NAT-PMP ataka nire bideratzailetik bidaltzeko - + Certificate: Egiaztagiria: - + Key: Giltza: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Egiaztagiriei buruzko argibideak</a> - + Change current password Aldatu oraingo sarhitza - Use alternative Web UI - Erabili aukerazko Web EI + Erabili aukerazko Web EI - + Files location: Agirien kokalekua: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Segurtasuna - + Enable clickjacking protection Gaitu clickjacking babesa - + Enable Cross-Site Request Forgery (CSRF) protection Gaitu Cross-Site Request Forgery (CSRF) babesa - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Gaitu Hostalari idazburu balioztapena - + Add custom HTTP headers Gehitu norbere HTTP idazburuak - + Header: value pairs, one per line Idazburua: balio pareak, bat lerroko - + Enable reverse proxy support Gaitu alderantzizko proxy bateragarritasuna - + Trusted proxies list: Proxy fidagarrien zerrenda: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Zerbitzua: - + Register Izena eman - + Domain name: Domeinu izena: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Aukera hauek gaituz, <strong>atzerabiderik gabe galdu</strong> ditzakezu zure .torrent agiriak! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Bigarren aukera gaitzen baduzu (&ldquo;Baita gehitzea ezeztatutakoan&rdquo;) .torrent agiria <strong>ezabatu egingo da</strong> baita &ldquo;<strong>Ezeztatu</strong>&rdquo; sakatzen baduzu ere &ldquo;Gehitu torrenta&rdquo; elkarrizketan - + Select qBittorrent UI Theme file Hautatu qBittorrent EI Azalgai agiria - + Choose Alternative UI files location Hautatu EI agiri kokaleku alternatiboa - + Supported parameters (case sensitive): Sostengatutako parametroak (hizki xehe-larriak bereiziz) - + Minimized - + Minimizatuta - + Hidden - + Ezkutatuta - + Disabled due to failed to detect system tray presence - + Desgaituta dago sistemaren erretiluaren presentzia detektatu ez delako - + No stop condition is set. Ez da gelditze-egoerarik ezarri. - + Torrent will stop after metadata is received. Torrent gelditu egingo da metadatuak jaso ondoren. - - Torrents that have metadata initially aren't affected. - Ez du eraginik dagoeneko metadatuak dituzten torrent-etan. - - - + Torrent will stop after files are initially checked. Torrent-a gelditu egingo da fitxategiak aztertu ondoren. - + This will also download metadata if it wasn't there initially. - + Honek metadatuak deskargatu ditu ez bazeuden hasieratik. - + %N: Torrent name %N: Torrentaren izena - + %L: Category %L: Kategoria - + %F: Content path (same as root path for multifile torrent) %F: Eduki helburua (torrent anitzerako erro helburua bezala) - + %R: Root path (first torrent subdirectory path) %R: Erro helburua (lehen torrent azpizuzenbide helburua) - + %D: Save path %D: Gordetze helburua - + %C: Number of files %C: Agiri zenbatekoa - + %Z: Torrent size (bytes) %Z: Torrentaren neurria (byte) - + %T: Current tracker %T: Oraingo aztarnaria - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Aholkua: Enkapsulatu parametroa adartxo artean idazkia zuriune batekin ebakia izatea saihesteko (adib., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Bat ere ez) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent bat astirotzat hartuko da bere jeitsiera eta igoera neurriak balio hauen azpitik badaude "Torrent jardungabe denboragailu" segunduz - + Certificate Egiaztagiria - + Select certificate Hautatu egiaztagiria - + Private key Giltza pribatua - + Select private key Hautatu giltza pribatua - + + WebUI configuration failed. Reason: %1 + WebUI konfigurazioak huts egin du. Arrazoia: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Hautatu monitorizatzeko agiritegia - + Adding entry failed Hutsegitea sarrera gehitzean - - Location Error - Kokaleku Akatsa + + The WebUI username must be at least 3 characters long. + WebUI erabiltzaile-izenak 3 karaktere izan behar ditu gutxienez. + + + + The WebUI password must be at least 6 characters long. + WebUI pasahitzak 6 karaktere izan behar ditu gutxienez. - - The alternative Web UI files location cannot be blank. - Web EI agiri kokaleku alternatiboa ezin da hutsik egon. + + Location Error + Kokaleku Akatsa - - + + Choose export directory Hautatu esportatzeko zuzenbidea - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Aukera hauek gaitzen direnean, qBittorent-ek .torrent agiriak <strong>ezabatuko</strong> ditu beren jeitsiera lerrora ongi (lehen aukera) edo ez (bigarren aukera) gehitutakoan. Hau <strong>ez da bakarrik</strong> &ldquo;Gehitu torrenta&rdquo; menu ekintzaren bidez irekitako agirietan ezarriko, baita <strong>agiri mota elkarketa</strong> bidez irekitakoetan ere. - + qBittorrent UI Theme file (*.qbtheme config.json) - + qBittorrent UI gaiaren fitxategia (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiketak (kakotxaz bananduta) - + %I: Info hash v1 (or '-' if unavailable) - + %I: info hash v1 (edo '-' erabilgarri ez badago) - + %J: Info hash v2 (or '-' if unavailable) - + %J: info hash v2 (edo '-' erabilgarri ez badago) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - + %K: Torrent IDa (sha-1 info hash v1 torrenterako edo sha-256 info hash moztua v2/hybrid torrenterako) - - - + + + Choose a save directory Hautatu gordetzeko zuzenbide bat - + + Torrents that have metadata initially will be added as stopped. + Hasieran metadatuak dituzten torrentak geldituta gehituko dira. + + + Choose an IP filter file Hautatu IP iragazki agiri bat - + All supported filters Sostengatutako iragazki guztiak - + + The alternative WebUI files location cannot be blank. + Ordezko WebUIaren fitxategien kokalekua ezin da hutsik egon. + + + Parsing error Azterketa akatsa - + Failed to parse the provided IP filter Hutsegitea emandako IP iragazkia aztertzerakoan - + Successfully refreshed Ongi berrituta - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Emandako IP iragazkia ongi aztertu da: %1 araua ezarri dira. - + Preferences Hobespenak - + Time Error Ordu Akatsa - + The start time and the end time can't be the same. Hasiera ordua eta amaiera ordua ezin dira berdinak izan. - - + + Length Error Luzera Akatsa - - - The Web UI username must be at least 3 characters long. - Web EI erabiltzaile-izenak gutxienez 3 hizkirriko luzera izan behar du. - - - - The Web UI password must be at least 6 characters long. - Web EI sarhitzak gutxienez 6 hizkirriko luzera izan behar du. - PeerInfo - + Unknown Ezezaguna - + Interested (local) and choked (peer) - + Interesatua (bertakoa) eta itota (parekoa) - + Interested (local) and unchoked (peer) - + Interesatua (bertakoa) eta ito gabea (parekoa) - + Interested (peer) and choked (local) - + Interesatua (parekidea) eta itota (bertakoa) - + Interested (peer) and unchoked (local) - + Interesatua (parekidea) eta ito gabea (bertakoa) - + Not interested (local) and unchoked (peer) - + Ez interesatua (bertakoa) eta ito gabea (parekidea) - + Not interested (peer) and unchoked (local) - + Ez interesatua (parekidea) eta ito gabea (bertakoa) - + Optimistic unchoke Itogabetze optimista - + Peer snubbed - + Hartzailea baztertuta - + Incoming connection Sarrerako konexioa - + Peer from DHT DHTko parekoa - + Peer from PEX PEXeko parekoa - + Peer from LSD LSDko parekoa - + Encrypted traffic Trafiko enkriptatua - + Encrypted handshake Enkriptatutako eskuematea + + + Peer is using NAT hole punching + + PeerListWidget @@ -7436,7 +7913,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Helbidea @@ -7463,7 +7940,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer ID Client i.e.: Client resolved from Peer ID - + Parekidearen bezeroaren ID-a @@ -7552,22 +8029,22 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Cannot add peers to a private torrent - + Ezin dira parekideak gehitu torrent pribatu batera Cannot add peers when the torrent is checking - + Ezin dira parekideak gehitu torrenta egiaztatzen ari denean Cannot add peers when the torrent is queued - + Ezin dira parekideak gehitu torrenta ilaran dagoenean No peer was selected - + Ez da parekiderik hautatu @@ -7580,7 +8057,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not "%1" hartzailea eskuz eragotzia - + N/A E/G @@ -7603,7 +8080,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Gehitzeko hartzaileen zerrenda (IP bat lerroko): - + Format: IPv4:port / [IPv6]:port Heuskarria: IPv4:ataka / [IPv6]:ataka @@ -7644,27 +8121,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Atal honetako agiriak: - + File in this piece: - + Fitxategia atal honetan: - + File in these pieces: - + Fitxategia atal hauetan: - + Wait until metadata become available to see detailed information Itxaron metadatuak eskuragarri egon arte argibide xehetuak ikusteko - + Hold Shift key for detailed information Sakatu Aldatu tekla argibide xeheak ikusteko @@ -7677,58 +8154,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Bilatu pluginak - + Installed search plugins: Ezarritako bilaketa pluginak: - + Name Izena - + Version Bertsioa - + Url Url-a - - + + Enabled Gaituta - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Kontuz: Zihurtatu zure herrialdeko kopia-eskubide legeak betetzen dituzula torrentak jeisterakoan bilaketa gailu hauen bidez. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Bilatzaileen plugin berriak lor ditzakezu hemen: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Ezarri berri bat - + Check for updates Egiaztatu eguneraketarik dagoen - + Close Itxi - + Uninstall Kendu @@ -7848,17 +8325,17 @@ Plugin hauek ezgaituta daude. Pluginaren iturburua - + Search plugin source: Bilatu pluginaren iturburua: - + Local file Tokiko agiria - + Web link Web lotura @@ -7876,70 +8353,70 @@ Plugin hauek ezgaituta daude. Power management found suitable D-Bus interface. Interface: %1 - + Energia-kudeaketak D-Bus interfaze egokia aurkitu du. Interfazea: %1 Power management error. Did not found suitable D-Bus interface. - + Energia-kudeaketako errorea. Ez da aurkitu D-Bus interfaze egokia. Power management error. Action: %1. Error: %2 - + Energia-kudeaketa errorea. Ekintza: %1. Errorea: %2 Power management unexpected error. State: %1. Error: %2 - + Energia-kudeaketan ustekabeko errorea. Egoera: %1. Errorea: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: "%1" torrenteko hurrengo agiriek aurreikuspena sostengatzen dute, mesedez hautatu bat: - + Preview Aurreikuspena - + Name Izena - + Size Neurria - + Progress Garapena - + Preview impossible Aurreikuspena ezinezkoa - + Sorry, we can't preview this file: "%1". Barkatu, ezin dugu agiri honen aurreikuspenik egin: "%1" - + Resize columns Zutabeen tamaina aldatu - + Resize all non-hidden columns to the size of their contents Ezkutatu gabeko zutabeen tamaina haien edukien tamainara aldatu @@ -7952,29 +8429,29 @@ Plugin hauek ezgaituta daude. Private::FileLineEdit - + Path does not exist - + Bide-izena ez da existitzen - + Path does not point to a directory - + Bide-izenak ez du direktorio batera seinalatzen - + Path does not point to a file - + Bide-izenak ez du fitxategi batera seinalatzen - + Don't have read permission to path - + Ez daukazu bide-izen honetan irakurtzeko baimenik - + Don't have write permission to path - + Ez daukazu bide-izen honetan idazteko baimenik @@ -8013,12 +8490,12 @@ Plugin hauek ezgaituta daude. PropertiesWidget - + Downloaded: Jeitsita: - + Availability: Eskuragarritasuna: @@ -8033,53 +8510,53 @@ Plugin hauek ezgaituta daude. Eskualdaketa - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Denbora Ekinean: - + ETA: UED: - + Uploaded: Igota: - + Seeds: Emaleak: - + Download Speed: Jeisketa Abiadura: - + Upload Speed: Igoera Abiadura: - + Peers: Hartzaileak: - + Download Limit: Jeisketa Muga: - + Upload Limit: Igoera Muga: - + Wasted: Alperrik: @@ -8089,193 +8566,249 @@ Plugin hauek ezgaituta daude. Elkarketak: - + Information Argibideak - + Info Hash v1: Info hash v1: - + Info Hash v2: Info hash v2: - + Comment: Aipamena: - + Select All Hautatu Denak - + Select None Ez Hautatu Ezer - + Share Ratio: Elkarbanatze Maila: - + Reannounce In: Berriragarpena: - + Last Seen Complete: Azken Ikusaldia Osorik: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Neurria Guztira: - + Pieces: Atalak: - + Created By: Sortzailea: - + Added On: Gehituta: - + Completed On: Osatuta: - + Created On: Sortua: - + + Private: + + + + Save Path: Gordetze Helburua: - + Never Inoiz ez - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ditu %3) - - + + %1 (%2 this session) %1 (%2 saio honetan) - - + + + N/A E/G - + + Yes + Bai + + + + No + Ez + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (emarituta %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 geh) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 guztira) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 bat.-best.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Web emaritza berria + Web emaritza berria - Remove Web seed - Kendu Web emaritza + Kendu Web emaritza - Copy Web seed URL - Kopiatu Web emaritza URL-a + Kopiatu Web emaritza URL-a - Edit Web seed URL - Editatu Web emaritza URL-a + Editatu Web emaritza URL-a - + Filter files... Iragazi agiriak... - - Speed graphs are disabled + + Add web seed... - - You can enable it in Advanced Options + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... - + + Speed graphs are disabled + Abiadura grafikoak desgaituta daude + + + + You can enable it in Advanced Options + Aukera aurreratuetan gaitu dezakezu + + New URL seed New HTTP source - URL emaritza berria + URL emaritza berria - New URL seed: - URL emaritza berria: + URL emaritza berria: - - This URL seed is already in the list. - URL emaritza hau jadanik zerrendan dago. + URL emaritza hau jadanik zerrendan dago. - + Web seed editing Web emaritza editatzen - + Web seed URL: Web emaritza URL-a: @@ -8294,22 +8827,22 @@ Plugin hauek ezgaituta daude. Ezin dira RSS Berez-Jeistzaile datuak gorde hemen: %1. Akatsa: %2 - + Invalid data format Datu heuskarri baliogabea - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + '%1' RSS artikulua '%2' arauak onartzen du. Torrenta gehitzen saiatzen... - + Failed to read RSS AutoDownloader rules. %1 - + RSS deskarga automatikoko arauak irakurtzeak huts egin du. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Ezin da RSS Berez-Jeistzailea arauak gertatu. Zergaitia: %1 @@ -8317,22 +8850,22 @@ Plugin hauek ezgaituta daude. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Hutsegitea RSS jarioa '%1'-ra jeistean. Zergaitia: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS jarioa '%1' eguneratuta. Gehituta %2 artikulu berri. - + Failed to parse RSS feed at '%1'. Reason: %2 Hutsegitea RSS jarioa aztertzean '%1'. Zergaitia: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS jarioa '%1' ongi jeitsi da. Aztertzea abiatzen. @@ -8342,12 +8875,12 @@ Plugin hauek ezgaituta daude. Failed to read RSS session data. %1 - + RSS saioaren datuak irakurtzeak huts egin du. %1 Failed to save RSS feed in '%1', Reason: %2 - + Ezin izan da RSS jarioa gorde '%1'-n, Arrazoia: %2 @@ -8368,12 +8901,12 @@ Plugin hauek ezgaituta daude. RSS::Private::Parser - + Invalid RSS feed. RSS harpidetza baliogabea. - + %1 (line: %2, column: %3, offset: %4). %1 (lerroa: %2, zutabea: %3, oreka: %4). @@ -8381,99 +8914,99 @@ Plugin hauek ezgaituta daude. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Ezin izan da RSS saioaren konfigurazioa gorde. Fitxategia: "%1". Errorea: "% 2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - + Ezin izan dira RSS saioko datuak gorde. Fitxategia: "%1". Errorea: "%2" - - + + RSS feed with given URL already exists: %1. Jadanik badago emandako URL-arekin RSS harpidetza bat: %1 - + Feed doesn't exist: %1. - + Jarioa ez da existitzen: %1. - + Cannot move root folder. Ezin da erro agiritegia mugitu. - - + + Item doesn't exist: %1. Gaia ez dago: %1 - + Couldn't move folder into itself. - + Ezin izan da karpeta bere burura mugitu. - + Cannot delete root folder. Ezin da erro agiritegia ezabatu. - + Failed to read RSS session data. %1 - + RSS saioaren datuak irakurtzeak huts egin du. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + RSS saioko datuak analizatzeak huts egin du. Fitxategia: "%1". Errorea: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Ezin izan dira RSS saioko datuak kargatu. Fitxategia: "%1". Errorea: "Datu formatu baliogabea." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Ezin izan da RSS jarioa kargatu. Jarioa: "%1". Arrazoia: URLa beharrezkoa da. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Ezin izan da RSS jarioa kargatu. Jarioa: "%1". Arrazoia: UIDa baliogabea da. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + RSS jario bikoiztua aurkitu da. UID: "%1". Errorea: konfigurazioa hondatuta dagoela dirudi. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Ezin izan da RSS elementua kargatu. Elementua: "%1". Datu-formatu baliogabea. - + Corrupted RSS list, not loading it. - + RSS zerrenda hondatua, ez da kargatzen. - + Incorrect RSS Item path: %1. RSS gai helburu okerra: %1. - + RSS item with given path already exists: %1. Jadanik badago RSS gaia emandako helburuarekin: %1 - + Parent folder doesn't exist: %1. Gaineko agiritegia ez dago: %1 @@ -8497,8 +9030,8 @@ Plugin hauek ezgaituta daude. - - + + Mark items read Markatu gaiak irakurritzat @@ -8523,132 +9056,132 @@ Plugin hauek ezgaituta daude. Torrentak: (klik-bikoitza jeisteko) - - + + Delete Ezabatu - + Rename... Berrizendatu... - + Rename Berrizendatu - - + + Update Eguneratu - + New subscription... Harpidetza berria... - - + + Update all feeds Eguneratu jario guztiak - + Download torrent Jeitsi torrenta - + Open news URL Ireki URL berriak - + Copy feed URL Kopiatu harpidetza URL-a - + New folder... Agiritegi berria... - + Edit feed URL... - + Editatu jarioaren URL-a... - + Edit feed URL - + Editatu jarioaren URL-a - + Please choose a folder name Mesedez hautatu agiritegi izen bat - + Folder name: Agiritegi izena: - + New folder Agiritegi berria - - + + Please type a RSS feed URL Mesedez idatzi RSS jario URL bat - - + + Feed URL: Kopiatu harpidetza URL-a - + Deletion confirmation Ezabatze baieztapena - + Are you sure you want to delete the selected RSS feeds? Zihur zaude hautaturiko RSS jarioak ezabatzea nahi dituzula? - + Please choose a new name for this RSS feed Mesedez hautatu izen berri bat RSS harpidetza honentzat - + New feed name: Harpidetza berriaren izena: - + Rename failed Berrizendatze hutsegitea - + Date: Eguna: - + Feed: - + Jarioa: - + Author: Egilea: @@ -8656,38 +9189,38 @@ Plugin hauek ezgaituta daude. SearchController - + Python must be installed to use the Search Engine. Python ezarrita egon behar da Bilaketa Gailua erabiltzeko. - + Unable to create more than %1 concurrent searches. Ezinezkoa %1 baino bilaketa gehiago sortzea. - - + + Offset is out of range Oreka mailaz kanpo dago - + All plugins are already up to date. Plugin guztiak daude eguneratuta. - + Updating %1 plugins %1 plugin eguneratzen - + Updating plugin %1 %1 plugin eguneratzen - + Failed to check for plugin updates: %1 Hutsegitea plugin eguneraketak egiaztatzean: %1 @@ -8712,32 +9245,32 @@ Plugin hauek ezgaituta daude. Set minimum and maximum allowed number of seeders - + Ezarri baimendutako emaile-kopuru minimo eta maximoa Minimum number of seeds - + Gutxieneko hazi kopurua Maximum number of seeds - + Gehienezko hazi kopurua Set minimum and maximum allowed size of a torrent - + Ezarri baimendutako gutxieneko eta gehienezko torrent baten tamaina Minimum torrent size - + Torrentaren tamaina minimoa Maximum torrent size - + Torrentaren tamaina maximoa @@ -8762,132 +9295,146 @@ Plugin hauek ezgaituta daude. Neurria: - + Name i.e: file name Izena - + Size i.e: file size Neurria - + Seeders i.e: Number of full sources Emaleak - + Leechers i.e: Number of partial sources Izainak - Search engine - Bilaketa gailua + Bilaketa gailua - + Filter search results... Iragazi bilaketa emaitzak... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Emaitzak (erakusten <i>%1</i> -> <i>%2</i>-tik): - + Torrent names only Torrentaren izena bakarrik - + Everywhere Edonon - + Use regular expressions Erabili adierazpen arruntak - + Open download window - + Ireki deskarga-leihoa - + Download Jeitsi - + Open description page Ireki azalpen orrialdera - + Copy Kopiatu - + Name Izena - + Download link Jeitsiera lotura - + Description page URL Azalpen orrialdearen URL-a - + Searching... Bilatzen... - + Search has finished Bilaketa amaitu da - + Search aborted Bilaketa utzita - + An error occurred during search... Akats bat gertatu da bilaketan... - + Search returned no results Bilaketak ez du emaitzik itzuli - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Zutabe ikusgarritasuna - + Resize columns Zutabeen tamaina aldatu - + Resize all non-hidden columns to the size of their contents Ezkutatu gabeko zutabeen tamaina haien edukien tamainara aldatu @@ -8895,104 +9442,104 @@ Plugin hauek ezgaituta daude. SearchPluginManager - + Unknown search engine plugin file format. Bilaketa gailu plugin agiri heuskarri ezezaguna. - + Plugin already at version %1, which is greater than %2 Plugina jadanik %1 bertsioan dago, zeina %2 baino berriagoa den - + A more recent version of this plugin is already installed. Jadanik ezarrita dago plugin honen bertsio berriago bat. - + Plugin %1 is not supported. %1 plugina ez dago sostengatua - - + + Plugin is not supported. Plugina ez dago sostengatua - + Plugin %1 has been successfully updated. %1 plugina ongi eguneratu da. - + All categories Kategoria guztiak - + Movies Filmak - + TV shows Telesailak - + Music Musika - + Games Jokoak - + Anime Animazioa - + Software Softwarea - + Pictures Argazkiak - + Books Liburuak - + Update server is temporarily unavailable. %1 Eguneraketa zerbitzaria aldibatez eskuraezina dago. %1 - - + + Failed to download the plugin file. %1 Hutsegitea plugin agiria jeisterakoan. %1 - + Plugin "%1" is outdated, updating to version %2 "%1" plugina ez dago eguneratuta, %2 bertsiora eguneratzen - + Incorrect update info received for %1 out of %2 plugins. Eguneraketa argibide okerrak jaso dira %1-rako %2 pluginetik. - + Search plugin '%1' contains invalid version string ('%2') '%1' bilaketa pluginak bertsio kate baliogabea du ('%2') @@ -9002,114 +9549,153 @@ Plugin hauek ezgaituta daude. - - - - Search Bilaketa - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Ez dago bilaketa pluginik ezarrita Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait ezartzeko. - + Search plugins... Bilatu pluginak... - + A phrase to search for. Bilatzeko esaldi bat. - + Spaces in a search term may be protected by double quotes. Bilaketa hitzen arteko tarteak adartxo bikoitzekin babestu daitezke. - + Example: Search phrase example Adibidea: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;joan etorri&quot;</b>: bilatu <b>joan etorri</b> - + All plugins Plugin guztiak - + Only enabled Gaituak bakarrik - + + + Invalid data format. + Datu heuskarri baliogabea + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>joan etorri</b>: bilatu <b>joan</b> eta <b>etorri</b> - + + Refresh + + + + Close tab Itxi erlaitza - + Close all tabs Itxi erlaitz guztiak - + Select... Hautatu... - - - + + Search Engine Bilaketa Gailua - + + Please install Python to use the Search Engine. Mesedez ezarri Python Bilaketa Gailua erabiltzeko. - + Empty search pattern Bilaketa eredua hutsik - + Please type a search pattern first Mesedez idatzi bilaketa eredua lehenik - + + Stop Gelditu - Search has finished - Bilaketa amaitu da + Bilaketa amaitu da - Search has failed - Bilaketak huts egin du + Bilaketak huts egin du + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9222,34 +9808,34 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e - + Upload: Igoera: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Jeitsiera: - + Alternative speed limits Aukerazko abiadura mugak @@ -9441,32 +10027,32 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e Bataz-besteko denbora lerroan: - + Connected peers: Elkartutako hartzaileak: - + All-time share ratio: Elkarbanatze maila orotara: - + All-time download: Jeitsiera orotara: - + Session waste: Saio hondakina: - + All-time upload: Igoera orotara: - + Total buffer size: Buffer neurria guztira: @@ -9481,12 +10067,12 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e Lerrokatutako S/I lanak: - + Write cache overload: Idazketa katxe gainzama: - + Read cache overload: Irakurketa katxe gainzama: @@ -9505,51 +10091,67 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e StatusBar - + Connection status: Elkarketa egoera: - - + + No direct connections. This may indicate network configuration problems. Ez dago zuzeneko elkarketarik. Honek adierazi dezake sare itxurapen arazoak daudela. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 elkargune - + qBittorrent needs to be restarted! qBittorrentek berrabiaraztea behar du! - - - + + + Connection Status: Elkarketa Egoera: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Lineaz-kanpo. Honek arrunt esanahi du qBittorrentek huts egin duela hautatutako barrurako elkarketen atakan aditzean. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klikatu beste abiadura muga batera aldatzeko - + Click to switch to regular speed limits Klikatu abiadura muga arruntera aldatzeko @@ -9578,14 +10180,22 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e Osatuta (0) - Resumed (0) - Berrekinda (0) + Berrekinda (0) - Paused (0) - Pausatuta (0) + Pausatuta (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9620,7 +10230,7 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e Moving (0) - + Mugitzen (0) @@ -9647,35 +10257,51 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e Completed (%1) Osatuta (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pausatuta (%1) + Pausatuta (%1) Moving (%1) - + Mugitzen (%1) - Resume torrents - Berrekin torrentak + Berrekin torrentak - Pause torrents - Pausatu torrentak + Pausatu torrentak Remove torrents - + Kendu torrentak - Resumed (%1) - Berrekinda (%1) + Berrekinda (%1) @@ -9716,17 +10342,17 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e TagFilterModel - + Tags Etiketak - + All Guztiak - + Untagged Etiketagabea @@ -9734,52 +10360,64 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e TagFilterWidget - + Add tag... Gehitu etiketa... - + Remove tag Kendu kategoria - + Remove unused tags Kendu erabili gabeko etiketak - Resume torrents - Berrekin torrentak + Berrekin torrentak - Pause torrents - Pausatu torrentak + Pausatu torrentak - + Remove torrents - + Kendu torrentak - New Tag - Etiketa Berria + Etiketa Berria - + + Start torrents + + + + + Stop torrents + + + + Tag: Etiketa: - + + Add tag + + + + Invalid tag name Etiketa izen baliogabea - + Tag name '%1' is invalid '%1' etiketa izena baliogabea da @@ -9809,7 +10447,7 @@ Klikatu "Bilatu pluginak..." botoia leihoaren behe eskuinean zenbait e Save path for incomplete torrents: - + Gordetze bide-izena osatu gabeko torrentetarako: @@ -9919,32 +10557,32 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TorrentContentModel - + Name Izena - + Progress Garapena - + Download Priority Jeitsiera Lehentasuna - + Remaining Gelditzen da - + Availability Eskuragarritasuna - + Total Size Tamaina guztira @@ -9989,102 +10627,120 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TorrentContentWidget - + Rename error Berrizendatze akatsa - + Renaming Berrizendapena - + New name: Izen berria: - + Column visibility Zutabearen ikusgaitasuna - + Resize columns Zutabeen tamaina aldatu - + Resize all non-hidden columns to the size of their contents Ezkutatu gabeko zutabeen tamaina haien edukien tamainara aldatu - + Open Ireki - + Open containing folder - + Ireki edukiaren karpeta - + Rename... Berrizendatu... - + Priority Lehentasuna - - + + Do not download Ez jeitsi - + Normal Arrunta - + High Handia - + Maximum Gehiena - + By shown file order Erakutsitako fitxategi ordenaz - + Normal priority Lehentasun normala - + High priority Lehentasun altua - + Maximum priority Lehentasun maximoa - + Priority by shown file order Lehentasuna erakutsitako fitxategi ordenaz + + TorrentCreatorController + + + Too many active tasks + Zeregin aktibo gehiegi + + + + Torrent creation is still unfinished. + Torrentaren sorrera amaitu gabe dago oraindik. + + + + Torrent creation failed. + Torrenta sortzeak huts egin du. + + TorrentCreatorDialog @@ -10109,13 +10765,13 @@ Mesedez hautatu beste izen bat eta saiatu berriro. - + Select file Hautatu agiria - + Select folder Hautatu agiritegia @@ -10140,58 +10796,10 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Atal neurria: - + Auto Berez - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10238,92 +10846,83 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Eremuak - + You can separate tracker tiers / groups with an empty line. Lerro huts batekin banandu ditzakezu aztarnari mailak / taldeak. - + Web seed URLs: Web emaritza URL-ak: - + Tracker URLs: Aztarnari URL-ak: - + Comments: Aipamenak: - + Source: Iturburua: - + Progress: Garapena: - + Create Torrent Sortu Torrenta - - + + Torrent creation failed Torrent sortze hutsegitea - + Reason: Path to file/folder is not readable. Zergaitia: Agiri/agiritegi helburua ez da irakurgarria. - + Select where to save the new torrent Hautatu non gorde torrent berria - + Torrent Files (*.torrent) Torrent Agiriak (*.torrent) - - Reason: %1 - Zergaitia: %1 - - - + Add torrent to transfer list failed. - + Torrenta transferentzia-zerrendara gehitzeak huts egin du. - + Reason: "%1" - + Arrazoia: "%1" - + Add torrent failed - + Torrenta gehitzeak huts egin du - Reason: Created torrent is invalid. It won't be added to download list. - Zergaitia: Sortutako torrent agiria baliogabea da. Ezin da jeisketa zerrendara gehitu. - - - + Torrent creator Torrent sortzailea - + Torrent created: Torrentaren sortzea: @@ -10331,60 +10930,60 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Ikusitako karpeten konfigurazioa kargatzeak huts egin du. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + %1-(e)tik ikusitako karpeten konfigurazioa analizatzeak huts egin du. Errorea: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + %1-tik ikusitako karpeten konfigurazioa kargatzeak huts egin du. Errorea: "Datu formatu baliogabea." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Ezin izan da ikusitako karpeten konfigurazioa %1-en gorde. Errorea: %2 - + Watched folder Path cannot be empty. - + Ikusitako karpeta bide-izena ezin da hutsik egon. - + Watched folder Path cannot be relative. - + Ikusitako karpeta bide-izena ezin da erlatiboa izan. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet URI baliogabea. URI: %1. Arrazoia: %2 - + Magnet file too big. File: %1 - + Magnet fitxategia handiegia. Fitxategia: %1 - + Failed to open magnet file: %1 Ezin izan da magnet fitxategia ireki: %1 - + Rejecting failed torrent file: %1 - + Huts egin duen torrent fitxategia baztertzen: %1 - + Watching folder: "%1" Karpeta begiratzen: "%1" @@ -10392,14 +10991,12 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Fitxategia irakurtzean memoria esleitzeak huts egin du. Fitxategia: "%1". Errorea: "%2" - Invalid metadata - Metadatu baliogabeak + Metadatu baliogabeak @@ -10430,279 +11027,374 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Erabili beste bide-izena bukatu gabeko torrententzat - + Category: Kategoria: - + + Torrent Share Limits + + + Torrent speed limits - Torrentaren abiadura mugak + Torrentaren abiadura mugak - + Download: Jeitsiera: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Honek ez ditu muga orokorrak gaindituko - + Upload: Igoera: - Torrent share limits - Torrentaren elkarbanatze mugak + Torrentaren elkarbanatze mugak - Use global share limit - Erabili elkarbanatze muga orokorra + Erabili elkarbanatze muga orokorra - Set no share limit - Ezarri elkarbanatze mugarik gabe + Ezarri elkarbanatze mugarik gabe - Set share limit to - Ezarri elkarbanatze muga honela + Ezarri elkarbanatze muga honela - ratio - maila + maila - total minutes - + minutuak guztira - inactive minutes - + minutu inaktibo - + Disable DHT for this torrent Desgaitu DHT torrent honentzat - + Download in sequential order Deskargatu orden sekuentzialean - + Disable PeX for this torrent Desgaitu PeX torrent honentzat - + Download first and last pieces first Deskargatu lehen eta azken atalak lehenik - + Disable LSD for this torrent Desgaitu LSD torrent honentzat - + Currently used categories - + Unean erabilitako kategoriak - - + + Choose save path Aukeratu gordetzeko bide-izena - + Not applicable to private torrents Ez da ezartzen torrent pribatuei - No share limit method selected - Ez da elkarbanatze muga metodorik hautatu + Ez da elkarbanatze muga metodorik hautatu - Please select a limit method first - Mesedez hautatu muga metodo bat lehenik + Mesedez hautatu muga metodo bat lehenik - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - + + + + + Default + Berezkoa - - New Tag - Etiketa Berria + + + + Unlimited + Mugagabea - - Tag: - Etiketa: + + + + Set to + Ezarri honetara - - Invalid tag name - Etiketa izen baliogabea + + Seeding time: + Emaritza denbora: - - Tag name '%1' is invalid. - + + + + + + + min + minutes + min - - Tag exists - Etiketa badago + + Inactive seeding time: + Denbora inaktiboa emaritzen: - - Tag name already exists. - Etiketa izena badago jadanik. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Akatsa: '%1' ez da baliozko torrent agiria. + + Stop torrent + - + + Remove torrent + Kendu torrenta + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Gaitu gain emaritza torrentarentzat + + + + Ratio: + Proportzioa: + + + + TorrentTagsDialog + + + Torrent Tags + Torrent etiketak + + + New Tag + Etiketa Berria + + + + Add tag + + + + + Tag: + Etiketa: + + + + Invalid tag name + Etiketa izen baliogabea + + + + Tag name '%1' is invalid. + '%1' etiketaren izena baliogabea da. + + + + Tag exists + Etiketa badago + + + + Tag name already exists. + Etiketa izena badago jadanik. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Akatsa: '%1' ez da baliozko torrent agiria. + + + Priority must be an integer Lehetasuna zenbaki oso bat izan behar da - + Priority is not valid Lehentasuna ez da baliozkoa - + Torrent's metadata has not yet downloaded Torrentaren metadatuak ez dira jeitsi oraindik - + File IDs must be integers Agiri ID-ak zenbaki osoak izan behar dute - + File ID is not valid Agiri ID-a ez da baliozkoa - - - - + + + + Torrent queueing must be enabled Torrent lerrokapena gaituta egon behar da - - + + Save path cannot be empty Gordetze helburua ezin da hutsik egon - - + + Cannot create target directory - + Ezin da helburuko direktorioa sortu - - + + Category cannot be empty Kategoria ezin da hutsik egon - + Unable to create category Ezinezkoa kategoria sortzea - + Unable to edit category Ezinezkoa kategoria editatzea - + Unable to export torrent file. Error: %1 - + Ezin da torrent fitxategia esportatu. Errorea: %1 - + Cannot make save path Ezin da gordetze helburua egin - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sort' parametroa baliogabea da. - - "%1" is not a valid file index. + + "%1" is not an existing URL - + + "%1" is not a valid file index. + "%1" ez da baliozko fitxategi-indizea. + + + Index %1 is out of bounds. %1 indizea mugetatik kanpo dago. - - + + Cannot write to directory Ezin da zuzenbidera idatzi - + WebUI Set location: moving "%1", from "%2" to "%3" WebEI Ezarpen kokalekua: mugitzen "%1", hemendik "%2" hona "%3" - + Incorrect torrent name Torrent izen okerra - - + + Incorrect category name Kategoria izen okerra @@ -10733,257 +11425,215 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TrackerListModel - - + Working - Lanean + Lanean - + Disabled - Ezgaituta + Ezgaituta - + Disabled for this torrent - Desgaituta torrent honentzat + Desgaituta torrent honentzat - + This torrent is private - Torrent hau pribatua da + Torrent hau pribatua da - + N/A - E/G + E/G - + Updating... - Eguneratzen... + Eguneratzen... - + Not working - Lan gabe + Lan gabe - + Tracker error - + Aztarnari-errorea - + Unreachable - + Iristezina - + Not contacted yet - Elkartu gabe oraindik + Harremandu gabe oraindik - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Egoera baliogabea! + + + URL/Announce endpoint + URL/Iragarpen konexio-puntua + Tier + Maila + + Protocol - + Protokoloa - + Status - Egoera + Egoera - + Peers - Hartzaileak + Hartzaileak - + Seeds - Emaritzak + Emaritzak - + Leeches - Izainak + Izainak - + Times Downloaded - Zenbat aldiz deskargatuta: + Zenbat aldiz deskargatuta: - + Message - Mezua + Mezua - Next announce - + Hurrengo iragarpena - Min announce - + Iragarpen min - v%1 - + v%1 TrackerListWidget - Working - Lanean - - - Disabled - Ezgaituta - - - Disabled for this torrent - Desgaituta torrent honentzat - - - + This torrent is private Torrent hau pribatua da - Updating... - Eguneratzen... - - - Not working - Lan gabe - - - Not contacted yet - Elkartu gabe oraindik - - - N/A - E/G - - - + Tracker editing Aztarnari edizioa - + Tracker URL: Aztarnari URL-a: - - + + Tracker editing failed Aztarnari edizio hutsegitea - + The tracker URL entered is invalid. Sartutako aztarnari URL-a baliogabea da. - + The tracker URL already exists. Aztarnari URL-a jadanik badago. - + Edit tracker URL... Editatu aztarnari URL-a - + Remove tracker Kendu aztarnaria - + Copy tracker URL Kopiatu aztarnari URL-a - + Force reannounce to selected trackers Behartu hautaturiko aztarnarien ber-iragarpena - + Force reannounce to all trackers Behartu aztarnari guztien ber-iragarpena - Tier - Tier - - - URL - URL-a - - - Status - Egoera - - - Seeds - Emaritzak - - - Times Downloaded - Zenbat aldiz deskargatuta: - - - + Resize columns Zutabeen tamaina aldatu - + Resize all non-hidden columns to the size of their contents Ezkutatu gabeko zutabeen tamaina haien edukien tamainara aldatu - Peers - Hartzaileak - - - + Add trackers... - + Gehitu aztarnariak... - Leeches - Izainak - - - Message - Mezua - - - + Column visibility Zutabe ikusgarritasuna @@ -10993,7 +11643,7 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Add trackers - + Gehitu aztarnariak @@ -11001,121 +11651,108 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Gehitzeko aztarnarien zerrenda (bat lerroko): - + µTorrent compatible list URL: µTorrentekin bateragarria den zerrenda URL-a: - + Download trackers list - + Deskargatu aztarnarien zerrenda - + Add Gehitu - + Trackers list URL error - + Aztarnarien zerrendako URL errorea - + The trackers list URL cannot be empty - + Aztarnarien zerrendaren URLa ezin da hutsik egon - + Download trackers list error - + Aztarnarien zerrendaren deskarga errorea - + Error occurred when downloading the trackers list. Reason: "%1" - + Errore bat gertatu da aztarnarien zerrenda deskargatzean. Arrazoia: "%1" TrackersFilterWidget - All (0) - this is for the tracker filter - Denak (0) - - - Trackerless (0) - Aztarnarigabe (0) - - - Error (0) - Akatsa (0) - - - Warning (0) - Kontuz (0) - - - Error (%1) - Akatsa (%1) - - - + Warning (%1) Kontuz (%1) - + Trackerless (%1) Aztarnarigabe (%1) - + Tracker error (%1) - + Aztarnari-errorea (%1) - + Other error (%1) - + Bestelako errorea (%1) - + Remove tracker - Kendu aztarnaria + Kendu aztarnaria + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Berrekin torrentak + Berrekin torrentak - Pause torrents - Pausatu torrentak + Pausatu torrentak - + Remove torrents - + Kendu torrentak - + Removal confirmation - + Kentze berrespena - + Are you sure you want to remove tracker "%1" from all torrents? - + Ziur "%1" aztarnaria kendu nahi duzula torrent guztietatik? - + Don't ask me again. - + Ez galdetu berriro - + All (%1) this is for the tracker filter Denak (%1) @@ -11124,9 +11761,9 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TransferController - + 'mode': invalid argument - + 'mode': argumentu baliogabea @@ -11217,9 +11854,8 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Berrekite datuak egiaztatzen - Paused - Pausatuta + Pausatuta @@ -11244,220 +11880,262 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Akastuna - + Name i.e: torrent name Izena - + Size i.e: torrent size Neurria - + Progress % Done Garapena - Status Torrent status (e.g. downloading, seeding, paused) - Egoera + Egoera - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Egoera + + + Seeds i.e. full sources (often untranslated) Emaritzak - + Peers i.e. partial sources (often untranslated) Hartzaileak - + Down Speed i.e: Download speed Jeitsiera Abiadura - + Up Speed i.e: Upload speed Igoera Abiadura - + Ratio Share ratio Maila - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left UED - + Category Kategoria - + Tags Etiketak - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Gehituta - + Completed On Torrent was completed on 01/01/2010 08:00 Osatuta - + Tracker Aztarnaria - + Down Limit i.e: Download limit Jeitsiera Muga - + Up Limit i.e: Upload limit Igoera Muga - + Downloaded Amount of data downloaded (e.g. in MB) Jeitsita - + Uploaded Amount of data uploaded (e.g. in MB) Igota - + Session Download Amount of data downloaded since program open (e.g. in MB) Saio Jeitsiera - + Session Upload Amount of data uploaded since program open (e.g. in MB) Saio Igoera - + Remaining Amount of data left to download (e.g. in MB) Gelditzen da - + + Time Active + Time (duration) the torrent is active (not stopped) + Denbora Ekinean + + + + Yes + Bai + + + + No + Ez + + Time Active Time (duration) the torrent is active (not paused) - Denbora Ekinean + Denbora Ekinean - + Save Path Torrent save path - + Gordetze bide-izena - + Incomplete Save Path Torrent incomplete save path - + Gordetze helburu osatugabea - + Completed Amount of data completed (e.g. in MB) Osatuta - + Ratio Limit Upload share ratio limit Maila Muga - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Azken Ikusaldia Osorik - + Last Activity Time passed since a chunk was downloaded/uploaded Azken Jarduera - + Total Size i.e. Size including unwanted data Neurria Guztira - + Availability The number of distributed copies of the torrent Eskuragarritasuna - + Info Hash v1 i.e: torrent info hash v1 - Info hash v2: {1?} + Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 - Info hash v2: {2?} + Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Berriragarri + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A E/G - + %1 ago e.g.: 1h 20m ago duela %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (emarituta %2) @@ -11466,334 +12144,358 @@ Mesedez hautatu beste izen bat eta saiatu berriro. TransferListWidget - + Column visibility Zutabe ikusgarritasuna - + Recheck confirmation Berregiaztatu baieztapena - + Are you sure you want to recheck the selected torrent(s)? Zihur zaude hautaturiko torrenta(k) berregiaztatzea nahi d(it)uzula? - + Rename Berrizendatu - + New name: Izen berria: - + Choose save path Hautatu gordetzeko helburua - Confirm pause - + Berretsi pausa - Would you like to pause all torrents? - + Torrent guztiak pausatu nahi dituzu? - Confirm resume - + Berretsi berrekitea - Would you like to resume all torrents? - + Torrent guztiak berrekin nahi dituzu? - + Unable to preview Ezinezkoa aurreikuspena - + The selected torrent "%1" does not contain previewable files "%1" hautaturiko torrentak ez du agiri aurreikusgarririk - + Resize columns Zutabeen tamaina aldatu - + Resize all non-hidden columns to the size of their contents Ezkutatu gabeko zutabeen tamaina haien edukien tamainara aldatu - + Enable automatic torrent management - + Gaitu torrent kudeaketa automatikoa - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - + Ziur torrent kudeaketa automatikoa gaitu nahi duzula hautatutako torrente(t)an? Lekuz alda daitezke. - Add Tags - Gehitu Etiketak + Gehitu Etiketak - + Choose folder to save exported .torrent files - + Aukeratu karpeta esportatutako .torrent fitxategiak gordetzeko - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + .torrent fitxategia esportatzeak huts egin du. Torrenta: "%1". Biltegia: "%2". Arrazoia: "%3" - + A file with the same name already exists - + Badago izen bereko fitxategi bat - + Export .torrent file error - + .torrent fitxategiaren esportazio errorea - + Remove All Tags Kendu Etiketa Guztiak - + Remove all tags from selected torrents? Kendu etiketa guztiak hautatutako torrentetatik? - + Comma-separated tags: Kakotxaz-banandutako etiketak: - + Invalid tag Etiketa baliogabea - + Tag name: '%1' is invalid Etiketa izena: '%1' baliogabea da - &Resume Resume/start the torrent - &Berrekin + &Berrekin - &Pause Pause the torrent - &Pausatu + &Pausatu - Force Resu&me Force Resume/start the torrent - + Behartu Berre&kitea - + Pre&view file... - + &Aurreikusi fitxategia... - + Torrent &options... - + Torrentaren au&kerak... - + Open destination &folder - + Ireki helburuko &karpeta - + Move &up i.e. move up in the queue - + Mugitu &gora - + Move &down i.e. Move down in the queue - + Mugitu &behera - + Move to &top i.e. Move to top of the queue - + Mugitu &goraino - + Move to &bottom i.e. Move to bottom of the queue - + Mugitu &beheraino - + Set loc&ation... - + Ezarri koka&lekua - + Force rec&heck - + Behartu berr&egiaztapena - + Force r&eannounce - + Behartu berr&iragarpena - + &Magnet link - + &Magnet esteka - + Torrent &ID - + Torrent I&D - + + &Comment + &Iruzkina + + + &Name - + &Izena - + Info &hash v1 - + Info &hash v1 - + Info h&ash v2 - + Info h&ash v2 - + Re&name... - + Berrize&ndatu... - + Edit trac&kers... - + Editatu az&tarnariak... - + E&xport .torrent... E&sportatu .torrent... - + Categor&y Kategor&ia - + &New... New category... &Berria... - + &Reset Reset category Be&rrezarri - + Ta&gs &Etiketak - + &Add... Add / assign multiple tags... &Gehitu... - + &Remove All Remove all tags K&endu guztiak - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Ilara - + &Copy &Kopiatu - + Exported torrent is not necessarily the same as the imported - + Esportatutako torrenta ez da zertan inportatutakoaren berdina izan - + Download in sequential order Jeitsi sekuentzialki - - Errors occurred when exporting .torrent files. Check execution log for details. + + Add tags + + + Errors occurred when exporting .torrent files. Check execution log for details. + Erroreak gertatu dira .torrent fitxategiak esportatzean. Egiaztatu exekuzio erregistroa xehetasunetarako. + + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + &Kendu - + Download first and last pieces first Jeitsi lehen eta azken atalak lehenik - + Automatic Torrent Management Berezgaitasunezko Torrent Kudeaketa - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Modu automatikoan hainbat torrent ezaugarri (adib. gordetze bide-izena) kategoriaren bidez erabakiko dira - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - + Ezin da berriro iragarpena behartu torrenta Pausa/Geldi/Ilaran/Errorea/Egiaztatzen badagoen - + Super seeding mode Gain emaritza modua @@ -11803,71 +12505,76 @@ Mesedez hautatu beste izen bat eta saiatu berriro. UI Theme Configuration - + UI gaiaren konfigurazioa Colors - + Koloreak Color ID - + Kolorearen IDa Light Mode - + Modu argia Dark Mode - + Modu iluna Icons - + Ikonoak Icon ID - + Ikonoaren ID-a - + UI Theme Configuration. - + UI gaiaren konfigurazioa. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Ezin izan dira UI gaiaren aldaketak guztiz aplikatu. Xehetasunak erregistroan aurki daitezke. - + Couldn't save UI Theme configuration. Reason: %1 - + Ezin izan da UI gaiaren konfigurazioa gorde. Arrazoia: %1 - - + + Couldn't remove icon file. File: %1. - + Ezin izan da ikono-fitxategia kendu. Fitxategia: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Ezin izan da kopiatu ikono-fitxategia. Iturria: %1. Helmuga: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Hutsegitea EI azalgaia agiritik gertatzerakoan: "%1" @@ -11877,12 +12584,12 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Couldn't parse UI Theme configuration file. Reason: %1 - + Ezin izan da UI gaiaren konfigurazio fitxategia analizatu. Arrazoia: %1 UI Theme configuration file has invalid format. Reason: %1 - + UI gaiaren konfigurazio fitxategiak formatu baliogabea du. Arrazoia: %1 @@ -11898,91 +12605,84 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Hutsegitea hobespenak migratzean: WebEI https, agiria: "%1", akatsa: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migratutako hobespenak: WebEI https, esportatuta datuak agirira:: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". - + Balio baliogabea aurkitu da konfigurazio-fitxategian, lehenespenera itzultzen da. Gakoa: "%1". Balio baliogabea: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python ez da atzeman, exekutagarri izena: '%1', bertsioa: %2 - - - Python not detected - Python ez da atzeman - Found Python executable. Name: "%1". Version: "%2" - + Python exekutagarria aurkitu da. Izena: "%1". Bertsioa: "%2" Failed to find Python executable. Path: "%1". - + Python exekutagarria aurkitzeak huts egin du. Bide-izena: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + `python3` exekutagarria PATH ingurune-aldagaian aurkitzeak huts egin du. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + `python` exekutagarria PATH ingurune-aldagaian aurkitzeak huts egin du. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Ezin izan da aurkitu `python` exekutagarria Windows Erregistroan. Failed to find Python executable - + Ezin izan da Python exekutagarria aurkitu Utils::IO - + File open error. File: "%1". Error: "%2" - + Errorea fitxategia irekitzean. Fitxategia: "%1". Errorea: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + Fitxategiaren tamainak muga gainditzen du. Fitxategia: "%1". Fitxategiaren tamaina: %2. Tamaina muga: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Fitxategiaren tamainak datuen tamainaren muga gainditzen du. Fitxategia: "%1". Fitxategiaren tamaina: %2. Array muga: %3 - + File read error. File: "%1". Error: "%2" - + Errorea fitxategia irakurtzean. Fitxategia: "%1". Errorea: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - + Irakurritako tamaina desegokia. Fitxategia: "%1". Esperotakoa: %2. Benetakoa: %3 @@ -11995,12 +12695,12 @@ Mesedez hautatu beste izen bat eta saiatu berriro. <html><head/><body><p>Will watch the folder and all its subfolders. In Manual torrent management mode it will also add subfolder name to the selected Save path.</p></body></html> - + <html><head/><body><p>Karpeta eta bere azpikarpeta guztiak ikusiko ditu. Eskuzko torrent kudeaketa moduan, hautatutako gordetze bide-izenari azpikarpetaren izena ere gehituko dio.</p></body></html> Recursive mode - + Modu errekurtsiboa @@ -12018,17 +12718,17 @@ Mesedez hautatu beste izen bat eta saiatu berriro. Watched folder path cannot be empty. - + Ikusitako karpetaren bide-izena ezin da hutsik egon. Watched folder path cannot be relative. - + Ikusitako karpetaren bide-izena ezin da erlatiboa izan. Folder '%1' is already in watch list. - + '%1' karpeta dagoeneko ikusitako zerrendan dago. @@ -12044,72 +12744,72 @@ Mesedez hautatu beste izen bat eta saiatu berriro. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Saioko cookie-izen onartezina zehaztu da: '%1'. Lehenetsitako bat erabiltzen da. - + Unacceptable file type, only regular file is allowed. Agiri mota onartezina, ohiko agiriak bakarrik ahalbidetzen dira. - + Symlinks inside alternative UI folder are forbidden. Symloturak EI alternatiboaren agiritegiaren barne eragotzita daude. - - Using built-in Web UI. - Barne-bildutako Web EI erabiltzen. + + Using built-in WebUI. + WebUI integratua erabiltzen. - - Using custom Web UI. Location: "%1". - Norbere Web EI erabiltzen. Kokalekua: "%1". + + Using custom WebUI. Location: "%1". + WebUI pertsonalizatua erabiltzen. Kokalekua: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Ongi gertatu da hautaturiko hizkuntzarako (%1) Web EI itzulpena. + + WebUI translation for selected locale (%1) has been successfully loaded. + Hautatutako tokiko (%1) WebUI itzulpena behar bezala kargatu da. - - Couldn't load Web UI translation for selected locale (%1). - Ezin da gertatu hautaturiko hizkuntzarako (%1) Web EI itzulpena. + + Couldn't load WebUI translation for selected locale (%1). + Ezin izan da kargatu WebUI-aren itzulpena hautatutako hizkuntzarako (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Ez dago ':' banantzailea WebEI-ko norbere HTTP idazburuan: "%1" - + Web server error. %1 - + Web zerbitzariaren errorea. %1 - + Web server error. Unknown error. - + Web zerbitzariaren errorea. Errore ezezaguna. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebEI: Jatorri idazburua eta Etiketa jatorria ez datoz bat! Iturburu IP-a: '%1'. Jatorri idazburua: '%2'. Xede jatorria: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebEI: Jatorri idazburua eta Etiketa jatorria ez datoz bat! Iturburu IP-a: '%1'. Jatorri idazburua: '%2'. Xede jatorria: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebEI: Hostalari idazburu baliogabea, ataka ez dator bat! Eskera Iturburu IP-a: '%1'. Zerbitzari ataka: '%2'. Jasotako Hostalar idazburua: '%3'. - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebEI: Hostalari idazburu baliogabea. Eskaturiko iturburu IP-a: '%1'. Jasotako Hostalari idazburua: '%2' @@ -12117,143 +12817,136 @@ Mesedez hautatu beste izen bat eta saiatu berriro. WebUI - - Web UI: HTTPS setup successful - Web EI: HTTPS ezarpena ongi egin da + + Credentials are not set + Kredentzialak ez daude ezarrita + + + + WebUI: HTTPS setup successful + WebUI: HTTPS konfigurazioa ongi egin da - - Web UI: HTTPS setup failed, fallback to HTTP - Web EI: HTTPS ezarpen hutsegitea, HTTP-ra itzultzen + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS konfigurazioak huts egin du, HTTP-ra itzultzen - - Web UI: Now listening on IP: %1, port: %2 - Web EI: Orain aditzen IP-an: %1, ataka: %2 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Unean IP honetan entzuten: %1, ataka: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web EI: Ezinezkoa IP-ra lotzea: %1, ataka: %2. Zergaitia: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Ezin da IParekin lotu: %1, ataka: %2. Arrazoia: %3 + + + + fs + + + Unknown error + akats ezezaguna misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1o %2m + %1o %2m - + %1d %2h e.g: 2 days 10 hours - %1e %2o + %1e %2o - + %1y %2d e.g: 2 years 10 days - %1u %2e - - - %1h %2m - e.g: 3hours 5minutes - %1o %2m - - - %1d %2h - e.g: 2days 10hours - %1e %2o - - - %1y %2d - e.g: 2years 10days - %1u %2e + %1u %2e - - + + Unknown Unknown (size) Ezezaguna - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent-ek orain ordenagailua itzaliko du jeisketa guztiak osatu direlako. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_fa.ts b/src/lang/qbittorrent_fa.ts index c338d193845e..bd6f33a07316 100644 --- a/src/lang/qbittorrent_fa.ts +++ b/src/lang/qbittorrent_fa.ts @@ -14,75 +14,75 @@ درباره - + Authors - نویسندگان + توسعه‌دهندگان - + Current maintainer نگهدارنده کنونی - + Greece یونان - - + + Nationality: ملیت: - - + + E-mail: رایانامه: - - + + Name: نام: - + Original author سازنده اصلی - + France فرانسه - + Special Thanks سپاس ویژه - + Translators مترجمین - + License اجازه نامه - + Software Used نرم‌افزارهای استفاده شده - + qBittorrent was built with the following libraries: کیوبیت‌تورنت با استفاده از کتابخانه های زیر ساخته شده است: - + Copy to clipboard @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - + Copyright %1 2006-2024 The qBittorrent project + کپی رایت %1 2006-2024 - پروژه کیوبیت‌تورنت @@ -166,14 +166,13 @@ ذخیره در - + Never show again دیگر نمایش نده - Torrent settings - تنضیمات تورنت + تنضیمات تورنت @@ -191,12 +190,12 @@ شروع تورنت - + Torrent information اطلاعات تورنت - + Skip hash check هش فایل‌ها بررسی نشود @@ -205,6 +204,11 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ شرط توقف: - - + + None هیچ‌کدام - - + + Metadata received متادیتا دریافت شد - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked فایل‌ها بررسی شد - + Add to top of queue به ابتدای صف اضافه شود - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: چینش محتوا: - + Original اصلی - + Create subfolder ایجاد زیرشاخه - + Don't create subfolder ایجاد نکردن زیرشاخه - + Info hash v1: هش اطلاعات v1: - + Size: حجم: - + Comment: نظر: - + Date: تاریخ: @@ -324,205 +333,150 @@ آخرین محل ذخیره استفاده شده را به یاد بسپار - + Do not delete .torrent file فایل .torrent را پاک نکن - + Download in sequential order دانلود با ترتیب پی در پی - + Download first and last pieces first ابتدا بخش های اول و آخر را دانلود کن - + Info hash v2: هش اطلاعات v2: - + Select All انتخاب همه - + Select None هیچ‌کدام - + Save as .torrent file... ذخیره به عنوان فایل .torrent - + I/O Error خطای ورودی/خروجی - Invalid torrent - تورنت نامعتبر - - - + Not Available This comment is unavailable در دسترس نیست - + Not Available This date is unavailable در دسترس نیست - + Not available در دسترس نیست - Invalid magnet link - لینک آهنربایی نامعتبر - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - بارگیری تورنت ناموفق بود: %1 -خطا: %2 - - - This magnet link was not recognized - این لینک آهنربایی به رسمیت شناخته نمی شود - - - + Magnet link لینک آهنربایی - + Retrieving metadata... درحال دریافت متادیتا... - - + + Choose save path انتخاب مسیر ذخیره - Torrent is already present - تورنت از قبل وجود دارد - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - تورنت '%1' از قبل در لیبست انتقال وجود دارد. ترکر ها هنوز ادغام نشده اند چون این یک تورنت خصوصی است. - - - Torrent is already queued for processing. - تورنت از قبل در لیست پردازش قرار گرفته است. - - - + No stop condition is set. هیچ شرط توقفی تنظیم نشده است. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A غیر قابل دسترس - Magnet link is already queued for processing. - لینک مگنت از قبل در لیست پردازش قرار گرفته است. - - - + %1 (Free space on disk: %2) %1 (فضای خالی دیسک: %2) - + Not available This size is unavailable. در دسترس نیست - + Torrent file (*%1) فایل تورنت (*%1) - + Save as torrent file ذخیره به عنوان فایل تورنت - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - Cannot download '%1': %2 - نمی توان '%1' را دانلود کرد : %2 - - - + Filter files... صافی کردن فایلها... - + Parsing metadata... بررسی متادیتا... - + Metadata retrieval complete دریافت متادیتا انجام شد - - Failed to load from URL: %1. -Error: %2 - بارگیری از URL ناموفق بود: %1. -خطا: %2 - - - Download Error - خطای دانلود - AddTorrentManager @@ -537,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -640,72 +594,77 @@ Error: %2 هش فایل‌ها بررسی نشود - - - Choose save path - انتخاب مسیر ذخیره سازی + + Torrent share limits + - - - - - - - Default - پیش فرض + + + Choose save path + انتخاب مسیر ذخیره سازی + + + - Yes - بله + Default + پیش فرض + Yes + بله + + + + + No نه - + Manual دستی - + Automatic خودکار - + Original اصلی - + Create subfolder ایجاد زیر پوشه - + Don't create subfolder زیر پوشه ایجاد نکن - + None هیچ‌کدام - + Metadata received متادیتا دریافت شد - + Files checked فایل‌ها بررسی شد @@ -713,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB مبی بایت - + Recheck torrents on completion بررسی مجدد تورنت ها بعد از دانلود - - + + ms milliseconds میلی ثانیه - + Setting تنظیمات - + Value Value set for this setting مقدار - + (disabled) (غیرفعال) - + (auto) (خودکار) - + + min minutes کمترین - + All addresses تمام آدرسها - + qBittorrent Section بخش کیو بیت تورنت - - + + Open documentation باز کردن مستندات - + All IPv4 addresses تمام آدرسهای IPv4 - + All IPv6 addresses تمام آدرسهای IPv6 - + libtorrent Section بخش لیب تورنت - + Fastresume files - + SQLite database (experimental) پایگاه داده SQLite (آزمایشی) - + Resume data storage type (requires restart) - + Normal معمولی - + Below normal کمتر از معمولی - + Medium متوسط - + Low کم - + Very low خیلی کم - - Process memory priority (Windows >= 8 only) - اولولیت حافظه برنامه (فقط ویندوز 8 یا جدید تر) - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads ترد های ناهمگام I/O - + Hashing threads ترد های هش - + File pool size حجم مخزن فایل - + Outstanding memory when checking torrents میزان حافظه معوق هنگام بررسی تورنت ها - + Disk cache کش دیسک - - - - + + + + s seconds s - + Disk cache expiry interval دوره انقضا حافظه نهان دیسک - + Disk queue size - - + + Enable OS cache فعال کردن حافظه نهان سیستم عامل - + Coalesce reads & writes میزان خواندن و نوشتن های درهم آمیخته - + Use piece extent affinity - + Send upload piece suggestions پیشنهادات تکه های آپلود را بفرست - - - - + + + + + 0 (disabled) 0 (غیرفعال) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB کیبی‌بایت - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default پیش فرض - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP TCP ترجیح داده شود - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address چند اتصال از طرف یک آدرس آی‌پی مجاز است - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names نمایش نام میزبان پییر ها - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus فعال کردن آیکون در منوها - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + ثانیه + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications اعلان‌ها نمایش داده شود - + Display notifications for added torrents اعلان‌ها برای تورنت‌های اضافه شده نمایش داده شود - + Download tracker's favicon - + Save path history length - + Enable speed graphs فعال‌سازی گراف های سرعت - + Fixed slots جایگاه های ثابت - + Upload rate based - + Upload slots behavior - + Round-robin نوبت‌گردشی - + Fastest upload سریعترین آپلود - + Anti-leech ضد لیچ - + Upload choking algorithm - + Confirm torrent recheck تایید دوباره توررنت - + Confirm removal of all tags حذف همه برچسب‌ها را تایید کنید - + Always announce to all trackers in a tier همیشه همه ترکر های در یک سطح را باخبر کن - + Always announce to all tiers همیشه همه ردیف‌ها را باخبر کن - + Any interface i.e. Any network interface هر رابطی - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries نمایش کشور پییر ها - + Network interface رابط شبکه - + Optional IP address to bind to آدرس آی‌پی اختیاری برای متصل کردن به - + Max concurrent HTTP announces - + Enable embedded tracker فعال کردن ترکر تعبیه شده - + Embedded tracker port پورت ترکر تعبیه شده - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - کیو بیت تورنت %1 شروع به کار کرد + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 مسیر پیکرپندی مورد استفاده: %1 - + Torrent name: %1 نام تورنت: %1 - + Torrent size: %1 سایز تورنت: %1 - + Save path: %1 مسیر ذخیره سازی: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds این تورنت در %1 بارگیری شد. - + + Thank you for using qBittorrent. با تشکر از شما برای استفاده از کیوبیت‌تورنت. - + Torrent: %1, sending mail notification تورنت: %1، در حال ارسال اعلان از طریق ایمیل - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit خروج - + I/O Error i.e: Input/Output Error خطای ورودی/خروجی - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1448,121 +1525,110 @@ Error: %2 - Error - خطا - - - Failed to add torrent: %1 - تورنت اضافه نشد: %1 - - - + Torrent added تورنت اضافه شد - + '%1' was added. e.g: xxx.avi was added. '%1' اضافه شده. - + Download completed - + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + + + + + This is a test email. + + + + + Test email + + + + '%1' has finished downloading. e.g: xxx.avi has finished downloading. بارگیری '%1' به پایان رسید. - + Information اطلاعات - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - نام کاربری مدیر رابط کاربری وب: %1 + + Exit + - - The Web UI administrator password has not been changed from the default: %1 + + Recursive download confirmation - - This is a security risk, please change your password in program preferences. + + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Application failed to start. - خطا در اجرای نرم‌افزار + + Never + هرگز - - Exit - - - - - Recursive download confirmation - - - - - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - - - - Never - هرگز - - - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... ذخیره کردن پیشرفت تورنت... - + qBittorrent is now ready to exit @@ -1570,7 +1636,7 @@ Error: %2 AsyncFileStorage - + Could not create directory '%1'. مسیر '%1' ایجاد نشد @@ -1578,22 +1644,22 @@ Error: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 ورود به رابط کاربری وب ناموفق بود. دلیل: آی پی بسته شده است. آی پی: %1، نام کاربری: %2 - + Your IP address has been banned after too many failed authentication attempts. IP شما پس از تعداد بیش از حد احراز هویت ناموفق، بسته شد. - + WebAPI login success. IP: %1 ورود موفقیت آمیز به رابط کاربری وب. آی پی: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 ورود ناموفق به رابط کاربری وب. دلیل: مشخصات نامعتبر، تعداد تلاش ها؛ %1، آی پی: %2، نام کاربری: %3 @@ -1641,12 +1707,12 @@ Error: %2 - + Must Not Contain: نباید شامل باشد: - + Episode Filter: فیلتر قسمت: @@ -1698,263 +1764,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &صدور... - + Matches articles based on episode filter. - + Example: مثال: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: قوانین فیلتر قسمت: - + Season number is a mandatory non-zero value شماره فصل، اجباری و یک عدد غیر صفر است. - + Filter must end with semicolon قالب باید با یک نقطه ویرگول به پایان برسد - + Three range types for episodes are supported: سه نوع دامنه برای قسمت ها پشتیبانی می‌شود: - + Single number: <b>1x25;</b> matches episode 25 of season one یک عدد: <b>1x25;</b> با قسمت ۲۵ فصل اول تطبیق دارد. - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value شماره قسمت یک عدد اجباری مثبت است - + Rules قوانین - + Rules (legacy) قوانین (قدیمی) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago آخرین تطابق: %1 روز پیش - + Last Match: Unknown آخرین تطابق: ناشناس - + New rule name نام قانون جدید - + Please type the name of the new download rule. لطفا نام قانون جدید دانلود را بنویسید. - - + + Rule name conflict ناسازگاری نام قانون - - + + A rule with this name already exists, please choose another name. یک قانون با این نام از قبل وجود دارد. لطفا نام دیگری انتخاب کنید. - + Are you sure you want to remove the download rule named '%1'? ایا از حذف قانون دانلود با نام '%1' مطمئن هستید؟ - + Are you sure you want to remove the selected download rules? ایا از حذف قانون های دانلود انتخاب شده مطمئن هستید؟ - + Rule deletion confirmation تایید حذف قانون - + Invalid action این عمل نامعتبر است - + The list is empty, there is nothing to export. این لیست خالی است ، چیزی برای خروجی گرفتن وجود ندارد. - + Export RSS rules خروجی گرفتن قوانین آراس‌اس - + I/O Error خطای I/O - + Failed to create the destination file. Reason: %1 ایجاد فایل مقصد ناموفق بود. دلیل: %1 - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Add new rule... اضافه کردن قانون جدید ... - + Delete rule حذف قانون - + Rename rule... تغییر نام قانون - + Delete selected rules حذف قانون های انتخاب شده - + Clear downloaded episodes... پاکسازی قسمت های دانلود شده... - + Rule renaming - + Please type the new rule name لطفا نام قانون جدید را وارد کنید - + Clear downloaded episodes پاکسازی قسمت های دانلود شده - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 موقعیت %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1996,53 +2062,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 امکان ذخیره داده به '%1' وجود ندارد. خطا: %2 @@ -2050,38 +2121,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2089,22 +2160,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2112,474 +2183,520 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON روشن - - - - - - - - - + + + + + + + + + OFF خاموش - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED اجبار شده - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. - - UPnP/NAT-PMP support: OFF + + Removing torrent. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Removing torrent and deleting its content. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent stopped. - ONLINE - آنلاین + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + + + + + UPnP/NAT-PMP support: OFF + + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - OFFLINE - آفلاین + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. فیلتر آی‌پی - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 غیرفعال است - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 غیرفعال است - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2587,62 +2704,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On روشن - + Off خاموش - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2663,184 +2785,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: - + [options] [(<filename> | <url>)...] - + Options: تنظیمات: - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port پورت - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen غیرفعال کردن آرم آغازین - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" مسیر - + Store configuration files in <dir> - - + + name نام - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path مسیر - + Torrent save path مسیر ذخیره سازی تورنت - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check هش فایل‌ها بررسی نشود - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first ابتدا قطعه های اول و آخر را بارگیری کن - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help کمک @@ -2848,17 +2975,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories دسته بندی‌ ها - + All همه - + Uncategorized دسته بندی نشده @@ -2892,32 +3019,45 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - ادامه دانلود تورنتها + Start torrents + + Stop torrents + + + + Resume torrents + ادامه دانلود تورنتها + + Pause torrents - توقف دانلود تورنتها + توقف دانلود تورنتها Remove torrents - + حذف تورنت‌‌ها ColorWidget - + Edit... - + Reset بازنشانی + + + System + + CookiesDialog @@ -2958,12 +3098,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2971,7 +3111,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -2990,23 +3130,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove حذف @@ -3019,12 +3159,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Add torrent links افزودن لینک های تورنت - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3034,12 +3174,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also بارگیری - + No URL entered آدرسی وارد نشده است - + Please type at least one URL. لطفا حداقل یک URL تایپ کنید @@ -3199,24 +3339,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - تورنت از قبل وجود دارد + تورنت از قبل وجود دارد + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3224,38 +3387,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. - + Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 - + Unsupported IP version: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3263,17 +3426,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3314,36 +3477,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... مرور... - + Reset بازنشانی - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + اطلاعات قانونی + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned @@ -3352,90 +3543,63 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - اطلاعات قانونی - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + You cannot use %1: qBittorrent is already running. - - No further notices will be issued. + + Another qBittorrent instance is already running. - - Press %1 key to accept and continue... + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + Error when daemonizing. Reason: "%1". Error code: %2. - - - Legal notice - اطلاعات قانونی - - - - Cancel - لغو - - - - I Agree - موافقم - MainWindow @@ -3445,604 +3609,693 @@ No further notices will be issued. ویرایش - + &Tools ابزارها - + &File پرونده - + &Help راهنما - + On Downloads &Done - + &View نمایش - + &Options... تنظیمات... - &Resume - ادامه + ادامه - + &Remove - + Torrent &Creator تورنت ساز - - + + Alternative Speed Limits - + &Top Toolbar نوار ابزار بالا - + Display Top Toolbar نمایش نوارابزار بالا - + Status &Bar نوار وضعیت - + Filters Sidebar - + S&peed in Title Bar - + Show Transfer Speed in Title Bar نمایش سرعت انتقال در نوار عنوان - + &RSS Reader - + Search &Engine موتور جستجو - + L&ock qBittorrent قفل کردن کیوبیت‌تورنت - + Do&nate! حمایت مالی! - + + Sh&utdown System + + + + &Do nothing - + Close Window بستن پنجره - R&esume All - ادامه همه + ادامه همه - + Manage Cookies... مدیریت کوکی‌ها... - + Manage stored network cookies - + Normal Messages پیغام‌های معمولی - + Information Messages - + Warning Messages - + Critical Messages - + پیام‌های بحرانی - + &Log گزارش - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue انتهای صف - + Move to the bottom of the queue انتقال به انتهای صف - + Top of Queue بالای صف - + Move to the top of the queue انتقال به اول صف - + Move Down Queue به عقب بردن در صف - + Move down in the queue انتقال به انتهای صف - + Move Up Queue جلو بردن صف - + Move up in the queue جلو بردن در صف - + &Exit qBittorrent خروج از کیوبیت‌تورنت - + &Suspend System - + &Hibernate System - - S&hutdown System - - - - + &Statistics آمار - + Check for Updates جستجو برای به‌روز رسانی ها - + Check for Program Updates جستجو برای به‌روز رسانی نرم‌افزار - + &About درباره - &Pause - توقف + توقف - P&ause All - توقف همه + توقف همه - + &Add Torrent File... افزودن فایل تورنت... - + Open باز کردن - + E&xit خروج - + Open URL بازکردن آدرس - + &Documentation مستندات - + Lock قفل - - - + + + Show نمایش دادن - + Check for program updates جستجو برای به‌روز رسانی نرم‌افزار - + Add Torrent &Link... افزودن لینک تورنت... - + If you like qBittorrent, please donate! اگر به qBittorrent علاقه دارید، لطفا کمک مالی کنید! - - + + Execution Log - + Clear the password گذزواژه را حذف کن - + &Set Password تعیین گذرواژه - + Preferences تنظیمات - + &Clear Password حذف گذرواژه - + Transfers جابه‌جایی‌ها - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only فقط آیکون‌ها - + Text Only فقط متن - + Text Alongside Icons متن در کنار آیکون‌ها - + Text Under Icons متن زیر آیگون‌ها - + Follow System Style دنبال کردن سبک سیستم - - + + UI lock password کلمه عبور قفل رابط کاربری - - + + Please type the UI lock password: لطفا کلمه عبور برای قفل کردن رابط کاربری را وارد کنید: - + Are you sure you want to clear the password? از حذف گذرواژه مطمئن هستید؟ - + Use regular expressions استفاده از عبارات با قاعده - + + + Search Engine + موتور جستجو + + + + Search has failed + جستجو ناموفق بود + + + + Search has finished + جستجو به پایان رسید + + + Search جستجو - + Transfers (%1) جابه‌جایی‌ها (%1) - Never - هرگز - - - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + &No &نه - + &Yes &بله - + &Always Yes &همواره بله - + Options saved. - - + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime ران‌تایم پایتون پیدا نشد - + qBittorrent Update Available به‌روزرسانی‌ای برای کیوبیت‌ تورنت موجود است - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime ران‌تایم قدیمی پایتون - + A new version is available. یک نسخه جدید موجود است. - + Do you want to download %1? آیا می‌خواهید %1 دانلود شود؟ - + Open changelog... باز کردن لیست تغییرات... - + No updates available. You are already using the latest version. به روزرسانی‌ای در دسترس نیست. شما هم اکنون از آخرین نسخه استفاده می‌کنید - + &Check for Updates &بررسی به روز رسانی‌های جدید - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + متوقف شده + + + Checking for Updates... در حال بررسی برای به روزرسانی ... - + Already checking for program updates in the background هم اکنون درحال بررسی برای به‌روزرسانی جدید در پس زمینه هستیم - - Download error - خطا در بارگیری + + Python installation in progress... + - - Python setup could not be downloaded, reason: %1. -Please install it manually. + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". - - + + Download error + خطا در بارگیری + + + + Invalid password رمز عبور نامعتبر - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) آراس‌اس (%1) - + The password is invalid کلمه عبور نامعتبر است - + DL speed: %1 e.g: Download speed: 10 KiB/s سرعت بارگیری: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s سرعت بارگذاری: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - - - - + Hide پنهان کردن - + Exiting qBittorrent در حال خروج از کیوبیت‌تورنت - + Open Torrent Files - + Torrent Files پرونده‌های تورنت @@ -4103,133 +4356,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) - + The operation was canceled - + The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out - + SSL/TLS handshake failed - + The remote server refused the connection - + The connection to the proxy server was refused - + The proxy server closed the connection prematurely - + The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known - + The requested operation is invalid for this protocol - + An unknown network-related error was detected - + An unknown proxy-related error was detected - + An unknown error related to the remote content was detected - + A breakdown in protocol was detected - + Unknown error خطای ناشناخته @@ -4237,7 +4490,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5609,476 +5867,512 @@ Please install it manually. بیت‌تورنت - + RSS RSS - Web UI - رابط کاربری وب + رابط کاربری وب - + Advanced پیشرفته - + Customize UI Theme... - + Transfer List لیست انتقال - + Confirm when deleting torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always همیشه - - Paused torrents only - - - - + Action on double-click - + Downloading torrents: - - Start / Stop Torrent - آغاز / توقف تورنت + آغاز / توقف تورنت - - + + Open destination folder باز کردن پوشه مقصد - - + + No action - + Completed torrents: تورنت‌های به پایان رسیده: - + Auto hide zero status filters - + Desktop دسکتاپ - + Start qBittorrent on Windows start up اجرای کیوبیت‌تورنت در حین شروع به کار ویندوز - + Show splash screen on start up نمایش صفحه معرفی در هنگام اجرای نرم‌افزار - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB کیبی‌بایت - + Torrent content layout: چینش محتوای تورنت: - + Original اصلی - + Create subfolder ایجاد زیر پوشه - + Don't create subfolder زیر پوشه ایجاد نکن - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue به ابتدای صف اضافه شود - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... افزودن... - + Options.. - + Remove حذف - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: + + + + + Any - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time از : - + To: To end time به : - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption رمزگذاری مجاز است - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader RSS خوان - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: - - - + + + min minutes حداقل - + Seeding Limits - Pause torrent - توقف تورنت + توقف تورنت - + Remove torrent پاک کردن تورنت - + Remove torrent and its files تورنت و فایل‌های مرتبط همگی پاک شوند - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + آدرس: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents فعال کردن بارگیری خودکار تورنت‌های RSS - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: فیلترها: - + Web User Interface (Remote control) - + IP address: آدرس آی‌پی: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never هرگز - + ban for: دلیل مسدودی: - + Session timeout: - + Disabled غیرفعال شده - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6087,441 +6381,486 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area - + + Search + جستجو + + + + WebUI + + + + Interface - + Language: زبان: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal نرمال - + File association - + Use qBittorrent for .torrent files - + Use qBittorrent for magnet links - + Check for program updates جستجو برای به‌روز رسانی نرم‌افزار - + Power Management مدیریت انرژی - + + &Log Files + + + + Save path: مسیر ذخیره سازی: - + Backup the log file after: - + Delete backup logs older than: - - When adding a torrent + + Show external IP in status bar - + + When adding a torrent + هنگام افزودن تورنت جدید + + + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management مدیریت ذخیره سازی - + Default Torrent Management Mode: - + Manual دستی - + Automatic خودکار - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + مکان ذخیره‌سازی پیش‌فرض: - + Copy .torrent files to: کپی فایل های .torrent به: - + Show &qBittorrent in notification area - &Log file - فایل گزارش + فایل گزارش - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files - + Use custom UI Theme استفاده از قالب دلخواه - + UI Theme file: فایل قالب: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days روز - + months Delete backup logs older than 10 months ماه - + years Delete backup logs older than 10 years سال - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None هیچ‌کدام - - + + Metadata received متادیتا دریافت شد - - + + Files checked فایل‌ها بررسی شد - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6538,841 +6877,902 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver گیرنده - + To: To receiver به: - + SMTP server: سرور SMTP - + Sender ارسال کننده - + From: From sender از: - + This server requires a secure connection (SSL) - - + + Authentication احراز هویت - - - - + + + + Username: نام کاربری: - - - - + + + + Password: کلمه عبور: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP TCP و μTP - + Listening Port - + Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Random بختانه - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits محدودیت‌های اتصال - + Maximum number of connections per torrent: حداکثر تعداد اتصال در هر تورنت: - + Global maximum number of connections: - + Maximum number of upload slots per torrent: - + Global maximum number of upload slots: - + Proxy Server سرور پروکسی - + Type: نوع: - + SOCKS4 ساکس4 - + SOCKS5 ساکس5 - + HTTP HTTP - - + + Host: میزبان: - - - + + + Port: پورت: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted اطلاعات: کلمه عبور بدون رمزگذاری ذخیره شده - + Filter path (.dat, .p2p, .p2b): - + Reload the filter بارگذاری دوباره فیلتر - + Manually banned IP addresses... - + Apply to trackers - + Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s کیبی‌بایت/ثانیه - - + + Upload: بارگذاری: - - + + Download: بارگیری: - + Alternative Rate Limits - + Start time زمان شروع - + End time زمان پایان - + When: چه زمانی: - + Every day هر روز - + Weekdays روزهای هفته - + Weekends آخر هفته‌ها - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy حریم خصوصی - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: نوع رمزگذاری: - + Require encryption نیاز به رمزگذاری است - + Disable encryption رمزگذاری غیرفعال شود - + Enable when using a proxy or a VPN connection - + Enable anonymous mode فعال کردن حالت ناشناس - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds ثانیه - + Torrent inactivity timer: زمان سنج غیر فعال بودن تورنت: - + then سپس - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: گواهینامه: - + Key: کلید: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password تغییر گذرواژه فعلی - - Use alternative Web UI - - - - + Files location: محل فایل ها: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security امنیت - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + افزودن هدرهای HTTP سفارشی - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: سرویس: - + Register ثبت نام - + Domain name: نام دامنه: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. هیچ شرط توقفی تنظیم نشده است. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name - + %L: Category - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files - + %Z: Torrent size (bytes) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (هیچ کدام) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate گواهینامه - + Select certificate انتخاب گواهینامه - + Private key کلید خصوصی - + Select private key انتخاب کلید خصوصی - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory انتخاب مسیر برای خروجی گرفتن - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters همه فیلترهای پشتیبانی شده - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences تنظیمات - + Time Error خطا در زمان - + The start time and the end time can't be the same. - - + + Length Error خطا در طول - - - The Web UI username must be at least 3 characters long. - - - - - The Web UI password must be at least 6 characters long. - - PeerInfo - + Unknown ناشناس - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7528,7 +7928,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A در دسترس نیست @@ -7551,7 +7951,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Format: IPv4:port / [IPv6]:port @@ -7592,27 +7992,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: فایل‌ها در این قسمت - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information برای دیدن اطلاعات دقیق تا آماده شدن متادیتا صبر کنید - + Hold Shift key for detailed information برای اطلاعات جامع کلید شیفت را نگه دارید @@ -7625,58 +8025,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not جستجوی افزونه‌ها - + Installed search plugins: افزونه‌ی جستجوی نصب شده: - + Name نام - + Version نسخه - + Url آدرس - - + + Enabled فعال شده - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. هشدار: هنگام بارگیری تورنت از هر یک از این موتورهای جستجو ، حتماً از قوانین کپی رایت کشور خود پیروی کنید. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one نصب یک نمونه جدید - + Check for updates بررسی به روز رسانی‌های جدید - + Close بستن - + Uninstall پاک کردن @@ -7796,17 +8196,17 @@ Those plugins were disabled. منبع افزونه - + Search plugin source: منبع افزونه جستجو: - + Local file پرونده محلی - + Web link پیوند وب @@ -7847,47 +8247,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview پیش نمایش - + Name نام - + Size سایز - + Progress پیشرفت - + Preview impossible پیش نمایش غیر ممکن است - + Sorry, we can't preview this file: "%1". متاسفانه قادر به پیش‌نمایش این فایل نیستیم: "%1" - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7900,27 +8300,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -7961,12 +8361,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: دانلود شده: - + Availability: در دسترس: @@ -7981,53 +8381,53 @@ Those plugins were disabled. جابه‌جایی - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) مدت زمان فعال بودن: - + ETA: زمان حدودی اتمام: - + Uploaded: آپلود شده: - + Seeds: سید ها: - + Download Speed: سرعت دانلود: - + Upload Speed: سرعت آپلود: - + Peers: - + Download Limit: محدودیت دانلود: - + Upload Limit: محدودیت آپلود: - + Wasted: هدر رفت: @@ -8037,193 +8437,220 @@ Those plugins were disabled. اتصالات: - + Information اطلاعات - + Info Hash v1: - + Info Hash v2: - + Comment: نظر: - + Select All انتخاب همه - + Select None هیچ‌کدام - + Share Ratio: نسبت اشتراک گذاری: - + Reannounce In: اعلام دوباره در: - + Last Seen Complete: آخرین بار کامل دیده شده - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: سایز نهایی: - + Pieces: قطعات: - + Created By: ساخته شده توسط: - + Added On: اضافه شده در: - + Completed On: کامل شده در: - + Created On: ساخته شده در: - + + Private: + + + + Save Path: مسیر ذخیره سازی: - + Never هرگز - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - - + + %1 (%2 this session) - - + + + N/A در دسترس نیست - + + Yes + بله + + + + No + نه + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) - - New Web seed - - - - - Remove Web seed + + Add web seed + Add HTTP source - - Copy Web seed URL + + Add web seed: - - Edit Web seed URL + + + This web seed is already in the list. - + Filter files... صافی کردن فایلها... - - Speed graphs are disabled + + Add web seed... - - You can enable it in Advanced Options + + Remove web seed + + + + + Copy web seed URL - - New URL seed - New HTTP source + + Edit web seed URL... - - New URL seed: + + Speed graphs are disabled - - - This URL seed is already in the list. + + You can enable it in Advanced Options - + Web seed editing - + Web seed URL: @@ -8242,22 +8669,22 @@ Those plugins were disabled. - + Invalid data format فرمت داده نامعتبر است. - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8265,22 +8692,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8316,12 +8743,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. فید آراس‌اس نامعتبر است. - + %1 (line: %2, column: %3, offset: %4). @@ -8329,99 +8756,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. پوشه ریشه را نمی‌توان جابجا کرد. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. پوشه ریشه را نمی‌توان پاک کرد. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8445,8 +8872,8 @@ Those plugins were disabled. - - + + Mark items read موارد به صورت خوانده شده علامت گذاری شود @@ -8471,132 +8898,132 @@ Those plugins were disabled. - - + + Delete پاک کردن - + Rename... تغییر نام ... - + Rename تغییر نام - - + + Update به‌روزرسانی - + New subscription... اشتراک جدید... - - + + Update all feeds به‌روزرسانی همه‌ی فیدها - + Download torrent دانلود تورنت - + Open news URL بازکردن آدرس خبر - + Copy feed URL کپی آدرس فید - + New folder... پوشه جدید ... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name لطفا یک نام برای پوشه انتخاب کنید - + Folder name: نام پوشه: - + New folder پوشه جدید - - + + Please type a RSS feed URL لطفا آدرس فید را تایپ کنید - - + + Feed URL: آدرس فید: - + Deletion confirmation تأیید حذف - + Are you sure you want to delete the selected RSS feeds? برای حذف فید آراس‌اس انتخاب شده مطمئن هستید؟ - + Please choose a new name for this RSS feed لطفا یک نام جدید برای این فید آراس‌اس انتخاب کنید - + New feed name: نام فید جدید: - + Rename failed تغییر نام با شکست مواجه شد - + Date: تاریخ: - + Feed: - + Author: مولف: @@ -8604,38 +9031,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. برای استفاده از موتور جستجو باید پایتون نصب باشد. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins در حال به‌روزرسانی %1 افزونه - + Updating plugin %1 به‌روزرسانی افزونه %1 - + Failed to check for plugin updates: %1 @@ -8710,132 +9137,146 @@ Those plugins were disabled. حجم: - + Name i.e: file name نام - + Size i.e: file size سایز - + Seeders i.e: Number of full sources - + Leechers i.e: Number of partial sources - Search engine - موتور جستجو + موتور جستجو - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only فقط نام های تورنت - + Everywhere همه جا - + Use regular expressions استفاده از عبارات با قاعده - + Open download window - + Download بارگیری - + Open description page باز کردن صفحه توضیحات - + Copy کپی - + Name نام - + Download link لینک بارگیری - + Description page URL لینک صفحه توضیحات - + Searching... در حال جستجو... - + Search has finished جستجو به پایان رسید - + Search aborted جستجو به پایان نرسید - + An error occurred during search... جستجو با یک خطا مواجه شد... - + Search returned no results جستجو نتیجه ای نداشت - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility نمایش ستون - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8843,104 +9284,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. یک ویرایش تازه تر این افزونه از پیش نصب شده. - + Plugin %1 is not supported. افزونه %1 پشتیبانی نمی‌شود. - - + + Plugin is not supported. افزونه پشتیبانی نمی‌شود. - + Plugin %1 has been successfully updated. افزونه %1 با موفقیت بروزرسانی شد - + All categories همه دسته‌ها - + Movies فیلم - + TV shows برنامه های تلویزیونی - + Music موزیک - + Games بازی - + Anime انیمه - + Software نرم‌افزار - + Pictures عکس - + Books کتاب - + Update server is temporarily unavailable. %1 سرور بروزرسانی موقتا در دسترس نیست. %1 - - + + Failed to download the plugin file. %1 بارگیری فایل افزونه ناموفق بود. %1 - + Plugin "%1" is outdated, updating to version %2 افزونه "%1" قدیمی است، در حال بروزرسانی به نسخه %2 - + Incorrect update info received for %1 out of %2 plugins. اطلاعات نادرست بروزرسانی برای %1 از %2 افزونه دریافت شد. - + Search plugin '%1' contains invalid version string ('%2') @@ -8950,113 +9391,152 @@ Those plugins were disabled. - - - - Search جستجو - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... جستجوی افزونه ها... - + A phrase to search for. یک عبارت برای جستجو. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example مثال: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins همه افزونه‌ها - + Only enabled فقط فعال شده - + + + Invalid data format. + فرمت داده نامعتبر است. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab بستن زبانه - + Close all tabs بستن همه زبانه‌ها - + Select... انتخاب... - - - + + Search Engine موتور جستجو - + + Please install Python to use the Search Engine. لطفا برای استفاده از موتور جستجو، پایتون را نصب کنید. - + Empty search pattern الگوی جستجوی خالی - + Please type a search pattern first لطفا ابتدا یک الگوی جستجو را وارد کنید - + + Stop توقف - Search has finished - جستجو به پایان رسید + جستجو به پایان رسید - Search has failed - جستجو ناموفق بود + جستجو ناموفق بود + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9169,34 +9649,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: آپلود: - - - + + + - - - + + + KiB/s کیبی‌بایت/ثانیه - - + + Download: دانلود: - + Alternative speed limits @@ -9388,32 +9868,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: @@ -9428,12 +9908,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -9452,51 +9932,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: وضعیت اتصال: - - + + No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes - + qBittorrent needs to be restarted! کیوبیت‌تورنت نیاز به راه اندازی مجدد دارد! - - - + + + Connection Status: وضعیت اتصال: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online برخط - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9526,12 +10022,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resumed (0) + Running (0) - Paused (0) + Stopped (0) @@ -9594,10 +10090,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) کامل شده (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - متوقف شده (%1) + متوقف شده (%1) @@ -9605,24 +10120,21 @@ Click the "Search plugins..." button at the bottom right of the window - Resume torrents - ادامه دانلود تورنتها + ادامه دانلود تورنتها - Pause torrents - توقف دانلود تورنتها + توقف دانلود تورنتها Remove torrents - + حذف تورنت‌‌ها - Resumed (%1) - ادامه دانلود (%1) + ادامه دانلود (%1) @@ -9663,17 +10175,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags برچسب‌ها - + All همه - + Untagged بدون برچسب @@ -9681,52 +10193,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... افزودن برچسب... - + Remove tag خذف برچسب - + Remove unused tags حذف برچسب‌های استفاده نشده - Resume torrents - ادامه دانلود تورنتها + ادامه دانلود تورنتها - Pause torrents - توقف دانلود تورنتها + توقف دانلود تورنتها - + Remove torrents - + حذف تورنت‌‌ها - New Tag - برچسب جدید + برچسب جدید + + + + Start torrents + + + + + Stop torrents + - + Tag: برچسب‌: - + + Add tag + + + + Invalid tag name نام برچسب نامعتبر است - + Tag name '%1' is invalid نام برچسب '%1' نامعتبر است @@ -9863,32 +10387,32 @@ Please choose a different name and try again. TorrentContentModel - + Name نام - + Progress پیشرفت - + Download Priority اولویت دانلود - + Remaining باقیمانده - + Availability در دسترس - + Total Size سایز نهایی @@ -9933,102 +10457,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error خطا در تغییر نام - + Renaming در حال تغییر نام - + New name: نام جدید: - + Column visibility نمایش ستون - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open باز کردن - + Open containing folder - + Rename... تغییر نام ... - + Priority اولویت - - + + Do not download دانلود نکن - + Normal معمولی - + High بالا - + Maximum حداکثر - + By shown file order - + Normal priority اولویت عادی - + High priority اولویت بالا - + Maximum priority اولویت بیشینه - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10053,13 +10595,13 @@ Please choose a different name and try again. - + Select file انتخاب فایل - + Select folder انتخاب پوشه @@ -10084,58 +10626,10 @@ Please choose a different name and try again. اندازه قطعه: - + Auto خودکار - - 16 KiB - 16 کیبی بایت - - - 32 KiB - 32 کیبی بایت - - - 64 KiB - 64 کیبی بایت - - - 128 KiB - 128 کیبی بایت - - - 256 KiB - 256 کیبی بایت - - - 512 KiB - 512 کیبی بایت - - - 1 MiB - 1 مبی بایت - - - 2 MiB - 2 مبی بایت - - - 4 MiB - 4 مبی بایت - - - 8 MiB - 8 مبی بایت - - - 16 MiB - 16 مبی بایت - - - 32 MiB - 32 مبی بایت - Calculate number of pieces: @@ -10182,88 +10676,83 @@ Please choose a different name and try again. زمینه‌ها - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: آدرس‌های ترکر: - + Comments: نظرات: - + Source: منبع: - + Progress: پیشرفت: - + Create Torrent ساختن تورنت - - + + Torrent creation failed ساختن تورنت با شکست مواجه شد - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) فایل های تورنت (*.torrent) - - Reason: %1 - علت: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Torrent creator سازنده تورنت - + Torrent created: تورنت ایجاد شد: @@ -10271,32 +10760,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10304,27 +10793,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10332,14 +10821,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - متادیتا نامعتبر + متادیتا نامعتبر @@ -10370,127 +10853,179 @@ Please choose a different name and try again. - + Category: دسته بندی: - - Torrent speed limits + + Torrent Share Limits - + Download: بارگیری: - - + + - - + + Torrent Speed Limits + + + + + KiB/s کیبی‌بایت/ثانیه - + These will not exceed the global limits - + Upload: بارگذاری: - - Torrent share limits - + Set share limit to + تنظیم مقدار اشتراک گذاری به - - Use global share limit - + ratio + نسبت - - Set no share limit + + Disable DHT for this torrent - - Set share limit to - تنظیم مقدار اشتراک گذاری به + + Download in sequential order + بارگیری به ترتیب پی در پی - - ratio - نسبت + + Disable PeX for this torrent + + + + + Download first and last pieces first + ابتدا قطعه های اول و آخر را بارگیری کن - - total minutes + + Disable LSD for this torrent - - inactive minutes + + Currently used categories - - Disable DHT for this torrent + + + Choose save path + انتخاب مسیر ذخیره سازی + + + + Not applicable to private torrents - - Download in sequential order - بارگیری به ترتیب پی در پی + No share limit method selected + هیچ روشی برای محدودیت به اشتراک گذاری انتخاب نشده است - - Disable PeX for this torrent + Please select a limit method first + لطفا ابتدا یک روش محدودیت گذاری انتخاب کنید + + + + TorrentShareLimitsWidget + + + + + + Default + پیش فرض + + + + + + Unlimited - - Download first and last pieces first - ابتدا قطعه های اول و آخر را بارگیری کن + + + + Set to + - - Disable LSD for this torrent + + Seeding time: - - Currently used categories + + + + + + + min + minutes + حداقل + + + + Inactive seeding time: - - - Choose save path - انتخاب مسیر ذخیره سازی + + Action when the limit is reached: + - - Not applicable to private torrents + + Stop torrent - - No share limit method selected - هیچ روشی برای محدودیت به اشتراک گذاری انتخاب نشده است + + Remove torrent + پاک کردن تورنت - - Please select a limit method first - لطفا ابتدا یک روش محدودیت گذاری انتخاب کنید + + Remove torrent and its content + + + + + Enable super seeding for torrent + + + + + Ratio: + @@ -10501,32 +11036,36 @@ Please choose a different name and try again. - New Tag - برچسب جدید + برچسب جدید + Add tag + + + + Tag: برچسب‌: - + Invalid tag name نام برچسب نامعتبر است - + Tag name '%1' is invalid. - + Tag exists برچسب وجود دارد - + Tag name already exists. نام برچسب از قبل وجود دارد @@ -10534,115 +11073,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. خطا: '%1' فایل تورنت معتبری نمی‌باشد. - + Priority must be an integer اولویت باید یک عدد صحیح باشد - + Priority is not valid اولویت نامعتبر است - + Torrent's metadata has not yet downloaded - + File IDs must be integers شناسه فایل ها باید یک عدد صحیح باشد - + File ID is not valid شناسه فایل نامعتبر است - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty محل ذخیره نمی‌تواند خالی باشد - - + + Cannot create target directory - - + + Category cannot be empty دسته بندی نمی‌تواند خالی باشد - + Unable to create category نمی‌توان دسته بندی را ایجاد کرد - + Unable to edit category نمی‌توان دسته بندی را ویرایش کرد - + Unable to export torrent file. Error: %1 - + Cannot make save path نمی توان محل ذخیره‌سازی را ایجاد کرد - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid پارامتر 'مرتب‌سازی' نامعتبر است - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name نام تورنت نادرست است - - + + Incorrect category name نام دسته‌بندی نادرست است @@ -10668,245 +11222,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - در حال کار + در حال کار - + Disabled - غیرفعال شده + غیرفعال شده - + Disabled for this torrent - + This torrent is private - این تورنت خصوصی است + این تورنت خصوصی است - + N/A - + در دسترس نیست - + Updating... - در حال بروزرسانی... + در حال بروزرسانی... - + Not working - کار نمی‌کند + کار نمی‌کند - + Tracker error - + Unreachable - + Not contacted yet - هنوز تماس حاصل نشده است + هنوز تماس حاصل نشده است - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol - - Protocol + + Next Announce - - Status - وضعیت + + Min Announce + + + + + Tier + - Peers - پییرها + Status + وضعیت - Seeds - سیدها + Peers + پییرها - Leeches - لیچ‌ها + Seeds + سیدها - Times Downloaded - + Leeches + لیچ‌ها - Message - پیام - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + پیام TrackerListWidget - Working - در حال کار - - - Disabled - غیرفعال شده - - - + This torrent is private این تورنت خصوصی است - Updating... - در حال بروزرسانی... - - - Not working - کار نمی‌کند - - - Not contacted yet - هنوز تماس حاصل نشده است - - - N/A - در دسترس نیست - - - + Tracker editing ویرایش ترکر - + Tracker URL: آدرس ترکر: - - + + Tracker editing failed ویرایش ترکر با شکست مواجه شد - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... - + Remove tracker پاک کردن ترکر - + Copy tracker URL - + Force reannounce to selected trackers - + Force reannounce to all trackers - URL - آدرس - - - Status - وضعیت - - - Seeds - سیدها - - - + Resize columns - + Resize all non-hidden columns to the size of their contents - Peers - پییرها - - - + Add trackers... - Leeches - لیچ‌ها - - - Message - پیام - - - + Column visibility نمایش ستون @@ -10924,37 +11424,37 @@ Please choose a different name and try again. - + µTorrent compatible list URL: - + Download trackers list - + Add افزودن - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10962,83 +11462,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - همه (0) - - - Trackerless (0) - بدون ترکر (0) - - - Error (0) - خطا (0) - - - Warning (0) - هشدار (0) - - - Error (%1) - خطای (%1) - - - + Warning (%1) اخطار (%1) - + Trackerless (%1) بدون ترکر (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - پاک کردن ترکر + پاک کردن ترکر + + + + Start torrents + + + + + Stop torrents + - Resume torrents - ادامه دانلود تورنتها + ادامه دانلود تورنتها - Pause torrents - توقف دانلود تورنتها + توقف دانلود تورنتها - + Remove torrents - + حذف تورنت‌‌ها - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter همه (%1) @@ -11047,7 +11534,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11140,9 +11627,8 @@ Please choose a different name and try again. - Paused - متوقف شده + متوقف شده @@ -11167,220 +11653,262 @@ Please choose a different name and try again. خطا داده شد - + Name i.e: torrent name نام - + Size i.e: torrent size سایز - + Progress % Done پیشرفت - Status Torrent status (e.g. downloading, seeding, paused) - وضعیت + وضعیت - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + وضعیت + + + Seeds i.e. full sources (often untranslated) سیدها - + Peers i.e. partial sources (often untranslated) پییرها - + Down Speed i.e: Download speed سرعت بارگیری - + Up Speed i.e: Upload speed سرعت بارگذاری - + Ratio Share ratio نسبت - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left زمان تقریبی - + Category دسته بندی - + Tags برچسب‌ها - + Added On Torrent was added to transfer list on 01/01/2010 08:00 اضافه شده در - + Completed On Torrent was completed on 01/01/2010 08:00 کامل شده در - + Tracker ترکر - + Down Limit i.e: Download limit حد بارگیری - + Up Limit i.e: Upload limit حد بارگذاری - + Downloaded Amount of data downloaded (e.g. in MB) بارگیری شده - + Uploaded Amount of data uploaded (e.g. in MB) بارگذاری شده - + Session Download Amount of data downloaded since program open (e.g. in MB) بارگیری در این نشست - + Session Upload Amount of data uploaded since program open (e.g. in MB) بارگذاری در این نشست - + Remaining Amount of data left to download (e.g. in MB) باقیمانده - + + Time Active + Time (duration) the torrent is active (not stopped) + مدت زمان فعال بودن + + + + Yes + بله + + + + No + نه + + Time Active Time (duration) the torrent is active (not paused) - مدت زمان فعال بودن + مدت زمان فعال بودن - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) کامل شده - + Ratio Limit Upload share ratio limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Activity Time passed since a chunk was downloaded/uploaded آخرین فعالیت - + Total Size i.e. Size including unwanted data سایز نهایی - + Availability The number of distributed copies of the torrent در دسترس - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A در دسترس نیست - + %1 ago e.g.: 1h 20m ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) @@ -11389,334 +11917,333 @@ Please choose a different name and try again. TransferListWidget - + Column visibility نمایش ستون - + Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? - + Rename تغییر نام - + New name: نام جدید: - + Choose save path انتخاب مسیر ذخیره سازی - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - افزودن تگ + افزودن تگ - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags حذف تمامی تگها - + Remove all tags from selected torrents? - + Comma-separated tags: - + Invalid tag تگ نامعتبر - + Tag name: '%1' is invalid نام برچسب '%1' نامعتبر است - &Resume Resume/start the torrent - ادامه + ادامه - &Pause Pause the torrent - توقف - - - - Force Resu&me - Force Resume/start the torrent - + توقف - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order بارگیری به ترتیب پی در پی - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first ابتدا قطعه های اول و آخر را بارگیری کن - + Automatic Torrent Management مدیریت خودکار تورنت - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode حالت به اشتراک‌گذاری فوق‌العاده @@ -11761,28 +12288,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11790,7 +12317,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11821,30 +12353,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python not detected - پایتون پیدا نشد - Found Python executable. Name: "%1". Version: "%2" @@ -11879,27 +12408,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11963,72 +12492,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. نوع فایل غیرقابل قبول، فقط فایل معمولی مجاز است. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. - در حال استفاده از Web UI داخلی برنامه. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - در حال استفاده از Web UI داخلی برنامه. محل: "%1" + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12036,120 +12565,133 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + خطای ناشناخته + + misc - + B bytes ‌بایت - + KiB kibibytes (1024 bytes) کیبی‌بایت - + MiB mebibytes (1024 kibibytes) مبی‌بایت - + GiB gibibytes (1024 mibibytes) گیبی‌بایت - + TiB tebibytes (1024 gibibytes) تبی‌بایت - + PiB pebibytes (1024 tebibytes) پبی‌بایت - + EiB exbibytes (1024 pebibytes) اگزبی‌بایت - + /s per second /s - + %1s e.g: 10 seconds - + %1m e.g: 10 minutes - + %1h %2m e.g: 3 hours 5 minutes - + %1d %2h e.g: 2 days 10 hours - + %1y %2d e.g: 2 years 10 days - - + + Unknown Unknown (size) ناشناس - + qBittorrent will shutdown the computer now because all downloads are complete. کیوبیت‌تورنت اکنون رایانه را خاموش می‌کند چون تمامی بارگیری‌ها به اتمام رسیده اند. - + < 1m < 1 minute diff --git a/src/lang/qbittorrent_fi.ts b/src/lang/qbittorrent_fi.ts index 1a5d6b68475d..90c339959525 100644 --- a/src/lang/qbittorrent_fi.ts +++ b/src/lang/qbittorrent_fi.ts @@ -14,77 +14,77 @@ Yleistä - + Authors Kehittäjät - + Current maintainer Nykyinen ylläpitäjä - + Greece Kreikka - - + + Nationality: Kansallisuus: - - + + E-mail: Sähköposti: - - + + Name: Nimi: - + Original author Alkuperäinen kehittäjä - + France Ranska - + Special Thanks Erityiskiitokset - + Translators Kääntäjät - + License Lisenssi - + Software Used Käytetyt ohjelmistot - + qBittorrent was built with the following libraries: qBittorrent rakennettiin käyttäen seuraavia kirjastoja: - + Copy to clipboard - + Kopioi leikepöydälle @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Tekijänoikeus %1 2006-2023 qBittorrent -hanke + Copyright %1 2006-2024 The qBittorrent project + Tekijänoikeus %1 2006-2024 qBittorrent -hanke @@ -166,14 +166,13 @@ Tallennuskohde - + Never show again Älä näytä tätä uudelleen - Torrent settings - Torrentin asetukset + Torrentin asetukset @@ -191,12 +190,12 @@ Aloita torrent - + Torrent information Torrentin tiedot - + Skip hash check Ohita tarkistussumman laskeminen @@ -205,10 +204,15 @@ Use another path for incomplete torrent Käytä keskeneräisille torrenteille eri sijaintia + + + Torrent options + + Tags: - + Tunnisteet: @@ -218,7 +222,7 @@ Add/remove tags - + Lisää/poista tunnisteita @@ -231,70 +235,75 @@ Pysäytysehto: - - + + None Ei mitään - - + + Metadata received Metatiedot vastaanotettu - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked Tiedostot tarkastettu - + Add to top of queue - Lisää jonon alkuun + Lisää jonon kärkeen - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Kun valittu, .torrent-tiedostoa ei poisteta "Lataukset"-sivun asetuksista riippumatta - + Content layout: Sisällön asettelu: - + Original Alkuperäinen - + Create subfolder Luo alikansio - + Don't create subfolder Älä luo alikansiota - + Info hash v1: Infotarkistussumma v1: - + Size: Koko: - + Comment: Kommentti: - + Date: Päiväys: @@ -324,243 +333,180 @@ Muista viimeksi käytetty tallennussijainti - + Do not delete .torrent file Älä poista .torrent-tiedostoa - + Download in sequential order Lataa järjestyksessä - + Download first and last pieces first Lataa ensin ensimmäinen ja viimeinen osa - + Info hash v2: Infotarkistussumma v2: - + Select All Valitse kaikki - + Select None Älä valitse mitään - + Save as .torrent file... Tallenna .torrent-tiedostona... - + I/O Error I/O-virhe - Invalid torrent - Virheellinen torrent - - - + Not Available This comment is unavailable Ei saatavilla - + Not Available This date is unavailable Ei saatavilla - + Not available Ei saatavilla - Invalid magnet link - Virheellinen magnet-linkki - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Torrentin lataaminen epäonnistui: %1 -Virhe: %2 - - - This magnet link was not recognized - Tätä magnet-linkkiä ei tunnistettu - - - + Magnet link Magnet-linkki - + Retrieving metadata... Noudetaan metatietoja... - - + + Choose save path Valitse tallennussijainti - Torrent is already present - Torrent on jo olemassa - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' on jo siirtolistalla. Seurantapalvelimia ei ole yhdistetty, koska kyseessä on yksityinen torrent. - - - Torrent is already queued for processing. - Torrent on jo käsittelyjonossa. - - - + No stop condition is set. Pysäytysehtoa ei ole määritetty. - + Torrent will stop after metadata is received. Torrent pysäytetään, kun metatiedot on vastaanotettu. - - Torrents that have metadata initially aren't affected. - Ei koske torrenteja, joihin metatiedot sisältyvät jo valmiiksi. - - - + Torrent will stop after files are initially checked. Torrent pysäytetään, kun tiedostojen alkutarkastus on suoritettu. - + This will also download metadata if it wasn't there initially. Tämä myös lataa metatiedot, jos niitä ei alunperin ollut. - - + + N/A Ei saatavilla - Magnet link is already queued for processing. - Magnet-linkki on jo käsittelyjonossa. - - - + %1 (Free space on disk: %2) %1 (Vapaata levytilaa: %2) - + Not available This size is unavailable. Ei saatavilla - + Torrent file (*%1) Torrent-tiedosto (*%1) - + Save as torrent file Tallenna torrent-tiedostona - + Couldn't export torrent metadata file '%1'. Reason: %2. Torrentin siirtäminen epäonnistui: '%1'. Syy: %2 - + Cannot create v2 torrent until its data is fully downloaded. Ei voida luoda v2 -torrentia ennen kuin sen tiedot on saatu kokonaan ladattua. - Cannot download '%1': %2 - Ei voi ladata '%1': %2 - - - + Filter files... Suodata tiedostoja... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' on jo siirtolistalla. Seurantapalvelimia ei voi yhdistää, koska kyseessä on yksityinen torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' on jo siirtolistalla. Haluatko yhdistää seurantapalvelimet uudesta lähteestä? - - - + Parsing metadata... Jäsennetään metatietoja... - + Metadata retrieval complete Metatietojen noutaminen valmis - - Failed to load from URL: %1. -Error: %2 - Lataus epäonnistui URL-osoitteesta: %1. -Virhe: %2 - - - Download Error - Latausvirhe - AddTorrentManager Downloading torrent... Source: "%1" - + Ladataan torrent... Lähde: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Torrentin lisääminen epäonnistui. Lähde: "%1". Syy: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Seurantapalvelimia ei voida yhdistää, koska torrent on yksityinen - + Trackers are merged from new source @@ -605,7 +551,7 @@ Virhe: %2 Tags: - + Tunnisteet: @@ -615,7 +561,7 @@ Virhe: %2 Add/remove tags - + Lisää/poista tunnisteita @@ -640,7 +586,7 @@ Virhe: %2 Add to top of queue: - + Lisää jonon kärkeen: @@ -648,72 +594,77 @@ Virhe: %2 Ohita hajautusarvon tarkistus - - - Choose save path - Valitse tallennussijainti + + Torrent share limits + Torrentin jakorajoitukset - - - - - - - Default - Oletus + + + Choose save path + Valitse tallennussijainti + + + - Yes - Kyllä + Default + Oletus + Yes + Kyllä + + + + + No Ei - + Manual Manuaalinen - + Automatic - Automaattinen: + Automaattinen - + Original Alkuperäinen - + Create subfolder Luo alikansio - + Don't create subfolder Älä luo alikansiota - + None Ei mitään - + Metadata received Metatiedot vastaanotettu - + Files checked Tiedostot tarkastettu @@ -721,734 +672,852 @@ Virhe: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Tarkista torrentit uudelleen niiden valmistuttua - - + + ms milliseconds ms - + Setting Asetus - + Value Value set for this setting Arvo - + (disabled) (ei käytössä) - + (auto) (autom.) - + + min minutes min - + All addresses Kaikki osoitteet - + qBittorrent Section qBittorrentin asetukset - - + + Open documentation Avaa dokumentaatio - + All IPv4 addresses Kaikki IPv4-osoitteet - + All IPv6 addresses Kaikki IPv6-osoitteet - + libtorrent Section libtorrentin asetukset - + Fastresume files Pikajatka tiedostoja - + SQLite database (experimental) SQLite-tietokanta (kokeellinen) - + Resume data storage type (requires restart) Jatka data-säilötyyppi (vaatii uudelleenkäynnistyksen) - + Normal Normaali - + Below normal Alle normaali - + Medium Keskitaso - + Low Matala - + Very low Erittäin matala - - Process memory priority (Windows >= 8 only) - Prosessin muistiprioriteetti (vain Windows >= 8) - - - + Physical memory (RAM) usage limit Fyysisen muistin (RAM) käytön rajoitus - + Asynchronous I/O threads Asynkroniset I/O-säikeet - + Hashing threads Tunnisteketjut - + File pool size Tiedostokertymäkoko - + Outstanding memory when checking torrents Muistin varaus tarkistettaessa torrent-tiedostoja - + Disk cache Levyn välimuisti - - - - + + + + s seconds s - + Disk cache expiry interval Levyn välimuistin päättymisväli - + Disk queue size Levyjonon koko - - + + Enable OS cache Ota käyttöön käyttöjärjestelmän välimuisti - + Coalesce reads & writes Yhdistä luku- ja kirjoitustoimet - + Use piece extent affinity Käytä palasjatkeiden mieluisuustoimintoa - + Send upload piece suggestions Välitä tiedostonlähetysehdotukset - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer Yksittäiselle vertaiselle lähetettyjen odottavien pyyntöjen enimmäismäärä - - - - - + + + + + KiB KiB - + (infinite) - + (system default) + (järjestelmän oletus) + + + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode - + This option is less effective on Linux Valinnalla on vähemmän vaikutusta Linux-käyttöjärjestelmässä - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default Oletus - + Memory mapped files Muistikartoitettu tiedosto - + POSIX-compliant POSIX-määritysten mukainen - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Levyn IO-tyyppi (vaatii uudelleenkäynnistyksen) - - + + Disable OS cache Älä käytä käyttöjärjestelmän välimuistia - + Disk IO read mode Tallennusmedian IO-lukutila - + Write-through Write through on tallennustapa, jossa tiedot kirjoitetaan välimuistiin ja vastaavaan päämuistipaikkaan samanaikaisesti. - + Disk IO write mode Tallennusmedian IO-kirjoitustila - + Send buffer watermark Välitä puskurivesileima - + Send buffer low watermark Välitä alemmantason puskurivesileima - + Send buffer watermark factor Välitä puskurivesileiman määre - + Outgoing connections per second Lähteviä yhteyksiä per sekunti - - + + 0 (system default) - + 0 (järjestelmän oletus) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Kantakirjausalueen koko - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + .torrent-tiedoston kokoraja + + + Type of service (ToS) for connections to peers Palvelun malli (Type of Service / ToS) yhteyksille vertaiskäyttäjiä ajatellen - + Prefer TCP Suosi TCP:tä - + Peer proportional (throttles TCP) Vertaissuhteutus (TCP-kiihdytys) - + Support internationalized domain name (IDN) Kansainvälistetty domain-nimituki (IDN) - + Allow multiple connections from the same IP address Salli useita yhteyksiä samasta IP-osoitteesta - + Validate HTTPS tracker certificates Vahvista HTTPS-trakkereiden varmenteet - + Server-side request forgery (SSRF) mitigation Pyyntötyöstön helpotusmenetelmä palvelinpuolella - (Server-side request forgery / SSRF) - + Disallow connection to peers on privileged ports Evää vertaisyhteydet ensisijaistettuihin portteihin - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates Määrittää sisäisen tilapäivitystiheyden, joka puolestaan vaikuttaa käyttöliittymän päivittymiseen. - + Refresh interval Päivitystiheys - + Resolve peer host names Selvitä vertaisten isäntänimet - + IP address reported to trackers (requires restart) Selonteko IP-osoitteesta seurantatyökaluille (vaatii uudelleenkäynnistyksen) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Julkaise kaikki seurantapalvelimet uudelleen kun IP-osoite tai portti muuttuu - + Enable icons in menus Näytä kuvakkeet valikoissa - + Enable port forwarding for embedded tracker Käytä porttiohjausta sisäiselle trakkerille - - (Auto detect if empty) + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Havaitse automaattisesti jos tyhjä) + + + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + s + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage Vertaiskierron katkaisuprosentuaali - + Peer turnover threshold percentage Vertaiskierron kynnysprosentuaali - + Peer turnover disconnect interval Vertaiskierron katkaisuväliaika - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Näytä ilmoitukset - + Display notifications for added torrents Näytä ilmoitukset lisätyille torrenteille - + Download tracker's favicon Lataa seurantapalvelimen favicon - + Save path history length Tallennussijaintihistorian pituus - + Enable speed graphs Käytä nopeuskaavioita - + Fixed slots Kiinteät paikat - + Upload rate based Lähetysnopeuteen perustuva - + Upload slots behavior Lähetyspaikkojen käyttäytyminen - + Round-robin Kiertovuorottelu - + Fastest upload Nopein lähetys - + Anti-leech Pelkän latauksen vastainen - + Upload choking algorithm Lähetyksen kuristusalgoritmi - + Confirm torrent recheck Vahvista torrentin uudelleentarkistus - + Confirm removal of all tags Vahvista kaikkien tunnisteiden poisto - + Always announce to all trackers in a tier Julkaise aina kaikille seuraimille tasollisesti - + Always announce to all tiers Julkaise aina kaikille tasoille - + Any interface i.e. Any network interface Mikä tahansa liitäntä - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP sekoitetun mallin algoritmi - + Resolve peer countries Selvitä vertaisten maat - + Network interface Verkkosovitin - + Optional IP address to bind to Vaihtoehtoinen IP-osoite, johon sitoutua - + Max concurrent HTTP announces Samanaikaisten HTTP-julkistusten enimmäismäärä - + Enable embedded tracker Ota käyttöön upotettu seurantapalvelin - + Embedded tracker port Upotetun seurantapalvelimen portti - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 käynnistyi + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Käytetään kanettavassa tilassa. Profiilikansion sijainniksi tunnistettiin automaattisesti: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Havaittiin tarpeeton komentorivin lippu: "%1". Kannettava tila viittaa suhteelliseen pikajatkoon. - + Using config directory: %1 Käytetään asetuskansiota: %1 - + Torrent name: %1 Torrentin nimi: %1 - + Torrent size: %1 Torrentin koko: %1 - + Save path: %1 Tallennussijainti: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrentin lataus kesti %1. - + + Thank you for using qBittorrent. Kiitos kun käytit qBittorrentia. - + Torrent: %1, sending mail notification Torrentti: %1, lähetetään sähköposti-ilmoitus - + Add torrent failed - + Torrentin lisääminen epäonnistui - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` Suoritetaan uilkoista sovellusta. Torrent: "%1". Komento: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Torrentin "%1" lataus on valmistunut - + WebUI will be started shortly after internal preparations. Please wait... Verkkokäyttöliittymä käynnistyy pian sisäisten valmistelujen jälkeen. Odota... - - + + Loading torrents... Torrenteja ladataan... - + E&xit Sulje - + I/O Error i.e: Input/Output Error I/O-virhe - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Virhe: %2 Syy: %2 - Error - Virhe - - - Failed to add torrent: %1 - Seuraavan torrentin lisäys epäonnistui: %1 - - - + Torrent added Torrent lisättiin - + '%1' was added. e.g: xxx.avi was added. "% 1" lisättiin. - + Download completed Lataus on valmis - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - "%1" lataus on valmis. - - - URL download error - Virhe ladattaessa URL-osoitetta. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - URL-osoitteesta "%1" ei voitu ladata tiedostoa, koska: %2. + + This is a test email. + - Torrent file association - Torrent-tiedostomuodon kytkentä + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent ei ole torrent-tiedostojen tai Magnet-linkkien oletussovellus. -Haluatko määrittää qBittorrentin näiden oletukseksi? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + "%1" lataus on valmis. - + Information Tiedot - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 Avaa selainkäyttöliittymä ohjataksesi qBittorrentia: %1 - - The Web UI administrator username is: %1 - Selainkäyttöliittymän ylläpitäjän käyttäjätunnus: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Selainkäytön ylläpitäjän salasanaa ei ole vaihdettu oletuksesta: %1 - - - - This is a security risk, please change your password in program preferences. - Tämä on turvallisuusriski. Vaihda salasana sovelluksen asetuksista. - - - Application failed to start. - Sovelluksen käynnistyminen epäonnistui. - - - + Exit Sulje - + Recursive download confirmation - Rekursiivisen latauksen vahvistus + Rekursiivisen latauksen vahvistus - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrentti '%1' sisältää .torrent-tiedostoja, haluatko jatkaa niiden latausta? + Torrentti '%1' sisältää .torrent-tiedostoja, haluatko jatkaa niiden latausta? - + Never - Ei koskaan + Ei koskaan - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrentin sisältämän .torrent-tiedoston rekursiivinen lataus. Lähdetorrent: "%1". Tiedosto: "%2" + Torrentin sisältämän .torrent-tiedoston rekursiivinen lataus. Lähdetorrent: "%1". Tiedosto: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Fyysisen muistin (RAM) rajoituksen asetus epäonnistui. Virhekoodi: %1. Virheviesti: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated qBittorentin sulku on aloitettu - + qBittorrent is shutting down... qBittorrentia suljetaan... - + Saving torrent progress... Tallennetaan torrentin edistymistä... - + qBittorrent is now ready to exit qBittorrent on valmis suljettavaksi @@ -1597,7 +1637,7 @@ Haluatko määrittää qBittorrentin näiden oletukseksi? AsyncFileStorage - + Could not create directory '%1'. Ei voitu luoda kansiota '%1'. @@ -1605,22 +1645,22 @@ Haluatko määrittää qBittorrentin näiden oletukseksi? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI-kirjautumisvirhe. Syy: IP on estetty, IP: %1, käyttäjätunnus: %2 - + Your IP address has been banned after too many failed authentication attempts. IP-osoitteesi on estetty liian monen epäonnistuneen tunnistautumisyrityksen vuoksi. - + WebAPI login success. IP: %1 WebAPI-kirjautuminen onnistui. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI-kirjautumisvirhe. Syy: virheelliset kirjautumistiedot, yrityskerta: %1, IP: %2, käyttäjätunnus: %3 @@ -1665,15 +1705,15 @@ Haluatko määrittää qBittorrentin näiden oletukseksi? Priority: - + Tärkeysaste: - + Must Not Contain: Ei saa sisältää: - + Episode Filter: Jaksosuodatin: @@ -1726,263 +1766,263 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo &Vie... - + Matches articles based on episode filter. Täsmää nimikkeisiin jotka perustuvat jaksosuodattimeen. - + Example: Esimerkki: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match poimii 2, 5, 8 ja läpi 15, 30 sekä jaksot siitä eteenpäin kaudesta yksi - + Episode filter rules: Jaksosuodattimen säännöt: - + Season number is a mandatory non-zero value Tuotantokauden numero on oltava enemmän kuin nolla - + Filter must end with semicolon Suodattimen on päätyttävä puolipisteeseen - + Three range types for episodes are supported: Jaksoille tuetaan kolmea aluetyyppiä: - + Single number: <b>1x25;</b> matches episode 25 of season one Yksi numero: <b>1x25;</b> vastaa ensimmäisen kauden jaksoa 25 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normaali jakauma: <b>1x25-40;</b> vastaa ensimmäisen kauden jaksoja 25-40 - + Episode number is a mandatory positive value Jakson numero on oltava positiivinen arvo - + Rules Säännöt - + Rules (legacy) Säännöt (perinteiset) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Rajoittamaton alue: <b>1x25-;</b> poimii jaksot 25 ja siitä ylöspäin kaudesta yksi, myös kaikki jaksot myöhemmistä kausista - + Last Match: %1 days ago Viimeisin täsmäys: %1 päivää sitten - + Last Match: Unknown Viimeisin täsmäys: ei tiedossa - + New rule name Uuden säännön nimi - + Please type the name of the new download rule. Anna uuden lataussäännön nimi. - - + + Rule name conflict Ristiriita säännön nimessä - - + + A rule with this name already exists, please choose another name. Samalla nimellä oleva sääntö on jo olemassa, valitse toinen nimi. - + Are you sure you want to remove the download rule named '%1'? Haluatko varmasti poistaa lataussäännön '%1'? - + Are you sure you want to remove the selected download rules? Haluatko varmasti poistaa valitut lataussäännöt? - + Rule deletion confirmation Säännön poistamisen vahvistus - + Invalid action Virheellinen toiminto - + The list is empty, there is nothing to export. Luettelo on tyhjä, ei mitään vietävää. - + Export RSS rules Vie RSS-säännöt - + I/O Error I/O-virhe - + Failed to create the destination file. Reason: %1 Kohdetiedoston luominen epäonnistui. Syy: %1 - + Import RSS rules Tuo RSS-säännöt - + Failed to import the selected rules file. Reason: %1 Valitun sääntöluettelon tuonti epäonnistui. Syy: %1 - + Add new rule... Lisää uusi sääntö... - + Delete rule Poista sääntö - + Rename rule... Nimeä sääntö uudelleen... - + Delete selected rules Poista valitut säännöt - + Clear downloaded episodes... Tyhjennä ladatut jaksot... - + Rule renaming Säännön nimeäminen uudelleen - + Please type the new rule name - Anna uuden säännön nimi + Anna uusi säännön nimi - + Clear downloaded episodes Tyhjennä ladatut jaksot - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Oletko varma että haluat tyhjentää ladattujen jaksojen luettelon valitulle säännölle? - + Regex mode: use Perl-compatible regular expressions Regex-tila: käytä Perl-yhteensopivia säännöllisiä lausekkeita - - + + Position %1: %2 Sijainti %1: %2 - + Wildcard mode: you can use Jokerimerkkitila: voit käyttää - - + + Import error - + Failed to read the file. %1 - + Tiedoston lukeminen epäonnistui. %1 - + ? to match any single character ? vastaamaan mitä tahansa yksittäistä merkkiä - + * to match zero or more of any characters * vastaamaan nolla tai enemmän mitä tahansa merkkiä - + Whitespaces count as AND operators (all words, any order) Tyhjät välit lasketaan JA toimintoina (kaikki sanat, mikä tahansa järjestys) - + | is used as OR operator | käytetään OR-operaattorina - + If word order is important use * instead of whitespace. Jos sanajärjestys on tärkeä, käytä * välilyönnin sijaan. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Pyyntö tyhjällä %1 lausekkeella (esim. %2) - + will match all articles. tulee täsmäämään kaikkien nimikkeiden kanssa. - + will exclude all articles. Sulkee pois kaikki artikkelit. @@ -2024,53 +2064,58 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Torrentin jatkokansiota ei voitu luoda: "%1" - + Cannot parse resume data: invalid format Jatkotietoja ei voida jäsentää: virheellinen muoto - - + + Cannot parse torrent info: %1 Torrentin tietoja ei voida jäsentää: %1 - + Cannot parse torrent info: invalid format Torrentin tietoja ei voida jäsentää: virheellinen muoto - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Torrentin sisäisdataa ei saatu tallennettua '%1'. Virhe: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Torrentin jatkotietoja ei voitu tallentaa kohteeseen '%1'. Virhe: %2. - + Couldn't load torrents queue: %1 Torrent-jonoa ei voitu ladata: %1 - + Cannot parse resume data: %1 Jatkotietoja ei voida jäsentää: %1 - + Resume data is invalid: neither metadata nor info-hash was found Jatkotiedot ovat virheelliset: metatietoja tai tietojen hajautusarvoa ei löytynyt - + Couldn't save data to '%1'. Error: %2 Dataa ei saatu tallennettua '%1'. Virhe: %2 @@ -2078,38 +2123,38 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo BitTorrent::DBResumeDataStorage - + Not found. Ei löydy. - + Couldn't load resume data of torrent '%1'. Error: %2 Torrentin '%1' jatkotietoja ei voitu ladata. Virhe: %2 - - + + Database is corrupted. Tietokanta on turmeltunut. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Write-Ahead Logging (WAL) -päiväkirjaustilaa ei voitu ottaa käyttöön. Virhe: %1. - + Couldn't obtain query result. Kyselyn tulosta ei voitu saada. - + WAL mode is probably unsupported due to filesystem limitations. WAL-tilaa ei luultavasti tueta tiedostojärjestelmän rajoitusten vuoksi. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Torrentin sisäistä dataa ei saatu tallennettua. Virhe: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Torrentin '%1' jatkotietoja ei voitu säilyttää. Virhe: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Torrentin '%1' jatkotietoja ei voitu tallentaa. Virhe: %2 - + Couldn't store torrents queue positions. Error: %1 Torrent-jonopaikkoja ei saatu säilytettyä. Virhe: %1 @@ -2140,574 +2185,616 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Distributed Hash Table (DHT) -tuki: %1 - - - - - - - - - + + + + + + + + + ON KÄYTÖSSÄ - - - - - - - - - + + + + + + + + + OFF EI KÄYTÖSSÄ - - + + Local Peer Discovery support: %1 Local Peer Discovery -tuki: %1 - + Restart is required to toggle Peer Exchange (PeX) support Peer Exchange (PeX) -tuen kytkentä edellyttää uudelleenkäynnistystä - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrentin jatko epäonnistui. Torrent: "%1". Syy: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Torrentin jatko epäonnistui: havaittiin yhteensopimaton torrentin ID. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Havaittiin yhteensopimattomia tietoja: kategoria puuttuu asetustiedostosta. Kategoria palautetaan, mutta sen asetukset palautetaan oletuksiin. Torrent: "%1". Kategoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Havaittiin yhteensopimattomia tietoja: virheellinen kategoria. Torrent: "%1". Kategoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Palautetun kategorian ja torrentin nykyisen tallennussijainnin välillä havaittiin ristiriita. Torrent on nyt vaihdettu manuaaliseen tilaan. Torrent: "%1". Kategoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Havaittiin yhteensopimattomia tietoja: tunniste puuttuu asetustiedostosta. Tunniste palautetaan. Torrent: "%1". Tunniste: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Havaittiin yhteensopimattomia tietoja: virheellinen tunniste. Torrent: "%1". Tunniste: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" Vertais-ID: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Peer Exchange (PeX) -tuki: %1 - - + + Anonymous mode: %1 Nimetön tila: %1 - - + + Encryption support: %1 Salauksen tuki: %1 - - + + FORCED PAKOTETTU - + Could not find GUID of network interface. Interface: "%1" Verkkosovittimen GUID-tunnistetta ei löytynyt. Sovitin: "%1" - + Trying to listen on the following list of IP addresses: "%1" Pyritään kuuntelemaan seuraavaa IP-osoiteluetteloa: "%1" - + Torrent reached the share ratio limit. Torrent saavutti jakosuhderajoituksen. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent poistettiin. + Torrent poistettiin. - - - Removed torrent and deleted its content. - Torrent sisältöineen poistettiin. + Torrent sisältöineen poistettiin. - - - Torrent paused. - Torrent tauotettiin. + Torrent tauotettiin. - - - + Super seeding enabled. Superlähetys käynnissä. - + Torrent reached the seeding time limit. Torrent saavutti jakoaikarajoituksen. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" Torrentin lataus epäonnistui. Syy: "%1" - + I2P error. Message: "%1". + I2P-virhe. Viesti: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP-/NAT-PMP-tuki: KÄYTÖSSÄ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Torrentia ladataan, odota... Lähde: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Torrentin lataus epäonnistui. Lähde: "%1". Syy: "%2" + + Session shutdown timed out. + - - UPnP/NAT-PMP support: ON - UPnP-/NAT-PMP-tuki: KÄYTÖSSÄ + + Removing torrent. + - - UPnP/NAT-PMP support: OFF - UPnP-/NAT-PMP-tuki: EI KÄYTÖSSÄ + + Removing torrent and deleting its content. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Torrentin vienti epäonnistui. Torrent: "%1". Kohde: "%2". Syy: "%3" + + Torrent stopped. + - - Aborted saving resume data. Number of outstanding torrents: %1 - Jatkotietojen tallennus keskeutettiin. Jäljellä olevien torrentien määrä: %1 + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + - System network status changed to %1 - e.g: System network status changed to ONLINE - Järjestelmän verkon tila vaihtui tilaan %1 + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + Seurantapalvelimia ei voida yhdistää, koska torrent on yksityinen + + + + Trackers are merged from new source + - ONLINE - YHDISTETTY + + UPnP/NAT-PMP support: OFF + UPnP-/NAT-PMP-tuki: EI KÄYTÖSSÄ - OFFLINE - EI YHTEYTTÄ + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Torrentin vienti epäonnistui. Torrent: "%1". Kohde: "%2". Syy: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Verkkoasetukset %1 on muuttunut, istunnon sidos päivitetään + + Aborted saving resume data. Number of outstanding torrents: %1 + Jatkotietojen tallennus keskeutettiin. Jäljellä olevien torrentien määrä: %1 - + The configured network address is invalid. Address: "%1" Määritetty verkko-osoite on virheellinen. Osoite: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Kuuntelemaan määritettyä verkko-osoitetta ei löytynyt. Osoite 1" - + The configured network interface is invalid. Interface: "%1" Määritetty verkkosovitin on virheellinen. Sovitin: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Virheellinen IP-osoite hylättiin sovellettaessa estettyjen IP-osoitteiden listausta. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Torrentille lisättiin seurantapalvelin. Torrentti: %1". Seurantapalvelin: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Torrentilta poistettiin seurantapalvelin. Torrentti: %1". Seurantapalvelin: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Torrentille lisättiin URL-jako. Torrent: %1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Torrentilta poistettiin URL-jako. Torrent: %1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent tauotettiin. Torrent: "%1" + Torrent tauotettiin. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrentia jatkettiin. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrentin lataus valmistui. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrentin siirto peruttiin: Torrent: "%1". Lähde: "%2". Kohde: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Torrentin siirron lisäys jonoon epäonnistui. Torrent: "%1". Lähde: "%2". Kohde: "%3". Syy: torrentia siirretään kohteeseen parhaillaan - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Torrentin siirron lisäys jonoon epäonnistui. Torrent: "%1". Lähde: "%2" Kohde: "%3". Syy: molemmat tiedostosijainnit osoittavat samaan kohteeseen - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrentin siirto lisättiin jonoon. Torrent: "%1". Lähde: "%2". Kohde: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Torrentin siirto aloitettiin. Torrent: "%1". Kohde: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Kategoriamääritysten tallennus epäonnistui. Tiedosto: "%1". Virhe: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Kategoriamääritysten jäsennys epäonnistui. Tiedosto: "%1". Virhe: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrentin sisältämän .torrent-tiedoston rekursiivinen lataus. Lähdetorrent: "%1". Tiedosto: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Torrentin sisältämän .torrent-tiedoston lataus epäonnistui. Lähdetorrent: "%1". Tiedosto: "%2". Virhe: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP-suodatintiedoston jäsennys onnistui. Sovellettujen sääntöjen määrä: %1 - + Failed to parse the IP filter file IP-suodatintiedoston jäsennys epäonnistui - + Restored torrent. Torrent: "%1" Torrent palautettiin. Torrent: "%1" - + Added new torrent. Torrent: "%1" Uusi torrent lisättiin. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent kohtasi virheen. Torrent: "%1". Virhe: "%2" - - Removed torrent. Torrent: "%1" - Torrent poistettiin. Torrent: "%1" + Torrent poistettiin. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent sisältöineen poistettiin. Torrent: "%1" + Torrent sisältöineen poistettiin. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Varoitus tiedostovirheestä. Torrent: "%1". Tiedosto: "%2". Syy: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP-/NAT-PMP-porttien määritys epäonnistui. Viesti: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP-/NAT-PMP-porttien määritys onnistui. Viesti: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP-suodatin - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + suodatettu portti (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 sekoitetun mallin rajoitukset - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 ei ole käytössä - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 ei ole käytössä - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL-jaon DNS-selvitys epäonnistui. Torrent: "%1". URL: "%2". Virhe: "%3" + URL-jaon DNS-selvitys epäonnistui. Torrent: "%1". URL: "%2". Virhe: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" URL-jaolta vastaanotettiin virheilmoitus. Torrent: "%1". URL: "%2". Viesti: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" IP-osoitteen kuuntelu onnistui. IP: "%1". Portti: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" IP-osoitteen kuuntelu epäonnistui. IP: "%1". Portti: "%2/%3". Syy: "%4" - + Detected external IP. IP: "%1" Havaittiin ulkoinen IP-osoite. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Virhe: Sisäinen hälytysjono on täynnä ja hälytyksiä tulee lisää, jonka seurauksena voi ilmetä heikentynyttä suorituskykyä. Halytyksen tyyppi: "%1". Viesti: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrentin siirto onnistui. Torrent: "%1". Kohde: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Torrentin siirto epäonnistui. Torrent: "%1". Lähde: "%2". Kohde: "%3". Syy: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Toimenpide keskeytetty - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Uuden torrent-tiedoston luonti epäonnistui. Syy: %1. + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Toimenpide keskeytetty + Toimenpide keskeytettiin + + Create new torrent file failed. Reason: %1. - Uuden torrent-tiedoston luonti epäonnistui. Syy: %1. + Uuden torrent-tiedoston luonti epäonnistui. Syy: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Vertaisen "%1" lisäys torrentille "%2" epäonnistui. Syy: %3 - + Peer "%1" is added to torrent "%2" Vertainen "%1" lisättiin torrentille "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Tiedostoa ei voitu tallentaa. Syy: "%1". Torrent on nyt "vain lähetys" -tilassa. - + Download first and last piece first: %1, torrent: '%2' Lataa ensimmäinen ja viimeinen osa ensin: %1, torrent: '%2' - + On Päällä - + Off Pois päältä - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Jatkotietojen luonti epäonnistui. Torrent: "%1". Syy: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Torrentin palautus epäonnistui. Tiedostot on luultavasti siirretty tai tallennusmedia ei ole käytettävissä. Torrent: "%1". Syy: "%2" - + Missing metadata Metatietoja puuttuu - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Tiedoston nimeäminen uudelleen epäonnistui. Torrent: "%1", tiedosto: "%2", syy: "%3" - + Performance alert: %1. More info: %2 Suorituskykyvaroitus: %1. Lisätietoja: %2 @@ -2728,184 +2815,193 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: Käyttö: - + [options] [(<filename> | <url>)...] - + Options: Valinnat: - + Display program version and exit Näytä sovellusversio ja sulje - + Display this help message and exit Näytä tämä ohjeviesti ja sulje - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port portti - - Change the Web UI port - Vaihda selainkäytön portti + + Change the WebUI port + - + Change the torrenting port - + Disable splash screen Poista aloituskuva käytöstä - + Run in daemon-mode (background) Suorita daemon-tilassa (taustalla) - + dir Use appropriate short form or abbreviation of "directory" kansio - + Store configuration files in <dir> - - + + name nimi - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Murtaudu libtorrentin pikajatkotiedostoihin ja suhteuta tiedostopolut proffilikansioon - + files or URLs tiedostoja tai URL-osoitteita - + Download the torrents passed by the user - + Options when adding new torrents: Valinnat uusia torrenteja lisätessä: - + path sijainti - + Torrent save path Torrentin tallennussijainti - + + Add torrents as running or stopped + + + Add torrents as started or paused - Lisää torrent käynnistettynä tai pysäytettynä + Lisää torrent käynnistettynä tai pysäytettynä - + Skip hash check Ohita hajautusarvon tarkistus - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order Lataa tiedostot järjestyksessä - + Download first and last pieces first Lataa ensin ensimmäinen ja viimeinen osa - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Ohje @@ -2913,17 +3009,17 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo CategoryFilterModel - + Categories Kategoriat - + All Kaikki - + Uncategorized Ilman kategoriaa @@ -2957,13 +3053,21 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo - Resume torrents - Jatka torrentteja + Start torrents + + Stop torrents + + + + Resume torrents + Jatka torrentteja + + Pause torrents - Pysäytä torrentit + Pysäytä torrentit @@ -2974,15 +3078,20 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo ColorWidget - + Edit... - + Muokkaa... - + Reset Palauta + + + System + + CookiesDialog @@ -3023,12 +3132,12 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3036,7 +3145,7 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3055,23 +3164,27 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo + Also remove the content files + + + Also permanently delete the files - Poista myös tiedostot pysyvästi + Poista myös tiedostot pysyvästi - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Haluatko varmasti poistaa torrentin '%1' siirtolistalta? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Haluatko varmasti poistaa nämä %1 torrentia siirtolistalta? - + Remove Poista @@ -3084,12 +3197,12 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo Lataa URL-osoitteista - + Add torrent links Lisää torrent-linkit - + One link per line (HTTP links, Magnet links and info-hashes are supported) Yksi linkki riviä kohden (tuetaan HTTP-linkkejä, Magnet-linkkejä ja infotarkistussummia) @@ -3099,12 +3212,12 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo Lataa - + No URL entered Et antanut verkko-osoitetta - + Please type at least one URL. Anna vähintään yksi verkko-osoite. @@ -3263,64 +3376,91 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo Jäsennysvirhe: Suodatintiedosto ei ole kelvollinen PeerGuardian P2B -tiedosto. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Ladataan torrent... Lähde: "%1" - Trackers cannot be merged because it is a private torrent - + Seurantapalvelimia ei voida yhdistää, koska torrent on yksityinen - + Torrent is already present - Torrent on jo olemassa + Torrent on jo olemassa + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' on jo siirtolistalla. Haluatko yhdistää seurantapalvelimet uudesta lähteestä? + Torrent '%1' on jo siirtolistalla. Haluatko yhdistää seurantapalvelimet uudesta lähteestä? GeoIPDatabase - - + + Unsupported database file size. Ei-tuettu tietokannan tiedostokoko. - + Metadata error: '%1' entry not found. Metatietovirhe: merkintää "%1" ei löydy. - + Metadata error: '%1' entry has invalid type. Metatietovirhe: merkinnän "%1" tyyppi on virheellinen. - + Unsupported database version: %1.%2 Ei-tuettu tietokannan versio: %1.%2 - + Unsupported IP version: %1 Ei-tuettu IP-osoitteen versio: %1 - + Unsupported record size: %1 Ei.tuettu tietueen koko: %1 - + Database corrupted: no data section found. Tietokanta on vioittunut: tietoaluetta ei löydy. @@ -3328,17 +3468,17 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP-pyynnön koko ylittää rajoituksen, socket suljetaan. Rajoitus: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Virheellinen HTTP-pyyntö, socket suljetaan. IP: %1 @@ -3379,36 +3519,64 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo IconWidget - + Browse... Selaa... - + Reset Palauta - + Select icon - + Valitse kuvake - + Supported image files + Tuetut kuvatiedostot + + + + LegalNotice + + + Legal Notice + Oikeudellinen huomautus + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + No further notices will be issued. + Muita ilmoituksia ei anneta. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + Paina 'Enter' jatkaaksesi... + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 estettiin. Syy: %2. - + %1 was banned 0.0.0.0 was banned %1 estettiin @@ -3417,714 +3585,770 @@ Nämä muodot ovat tuetut: S01E01, 1x1, 2017.12.31 ja 31.12.2017 (päiväysmuodo Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 on tuntematon komentoriviparametri. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - Et voi käyttää %1: qBittorrent on jo käynnissä tälle käyttäjälle. - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Oikeudellinen huomautus + + You cannot use %1: qBittorrent is already running. + - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + Another qBittorrent instance is already running. - - No further notices will be issued. - Muita ilmoituksia ei anneta. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - Press %1 key to accept and continue... - Hyväksy ja jatka painamalla %1... + + Error when daemonizing. Reason: "%1". Error code: %2. + - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent on tiedostonjako-ohjelma. Kun torrent on käynnissä, sen tiedot ovat muiden saatavilla. Olet vastuussa kaikesta jakamastasi. - -Muita varoituksia ei anneta. - - - - Legal notice - Oikeudellinen huomautus - - - - Cancel - Peruuta - - - - I Agree - Hyväksyn - - - - MainWindow + + + MainWindow &Edit &Muokkaa - + &Tools &Työkalut - + &File &Tiedosto - + &Help &Ohje - + On Downloads &Done Latausten &valmistuttua... - + &View &Näytä - + &Options... &Asetukset... - &Resume - &Jatka + &Jatka - + &Remove &Poista - + Torrent &Creator Luo uusi &torrent... - - + + Alternative Speed Limits Vaihtoehtoiset nopeusrajoitukset - + &Top Toolbar &Työkalupalkki - + Display Top Toolbar Näytä työkalupalkki - + Status &Bar Tila&palkki - + Filters Sidebar Suodattimien sivupalkki - + S&peed in Title Bar No&peudet otsikkorivillä - + Show Transfer Speed in Title Bar Näytä siirtonopeudet otsikkorivillä - + &RSS Reader &RSS-lukija - + Search &Engine Haku&kone - + L&ock qBittorrent L&ukitse qBittorrent - + Do&nate! La&hjoita! - + + Sh&utdown System + + + + &Do nothing &Älä tee mitään - + Close Window Sulje ikkuna - R&esume All - J&atka kaikkia + J&atka kaikkia - + Manage Cookies... Evästeiden hallinta... - + Manage stored network cookies Hallinnoi tallennettuja verkkoevästeitä - + Normal Messages Normaalit viestit - + Information Messages Tiedotusviestit - + Warning Messages Varoitusviestit - + Critical Messages Kriittiset viestit - + &Log &Loki - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Määritä järjestelmänlaajuiset nopeusrajoitukset... - + Bottom of Queue Jonon viimeiseksi - + Move to the bottom of the queue Siirrä jonon viimeiseksi - + Top of Queue Jonon kärkeen - + Move to the top of the queue Siirrä jonon kärkeen - + Move Down Queue Siirrä alas jonossa - + Move down in the queue Siirrä alas jonossa - + Move Up Queue Siirrä ylös jonossa - + Move up in the queue Siirrä ylös jonossa - + &Exit qBittorrent &Sulje qBittorrent - + &Suspend System &Aseta tietokone lepotilaan - + &Hibernate System &Aseta tietokone horrostilaan - S&hutdown System - &Sammuta tietokone + &Sammuta tietokone - + &Statistics &Tilastot - + Check for Updates Tarkista päivitykset - + Check for Program Updates Tarkista ohjelmapäivitykset - + &About &Tietoja - &Pause - &Pysäytä + &Pysäytä - P&ause All - Py&säytä kaikki + Py&säytä kaikki - + &Add Torrent File... &Lisää torrent... - + Open Avaa - + E&xit Lo&peta - + Open URL Avaa osoite - + &Documentation &Dokumentaatio - + Lock Lukitse - - - + + + Show Näytä - + Check for program updates Tarkista sovelluspäivitykset - + Add Torrent &Link... Avaa torrent &osoitteesta... - + If you like qBittorrent, please donate! Jos pidät qBittorrentista, lahjoita! - - + + Execution Log Suoritusloki - + Clear the password Poista salasana - + &Set Password &Aseta salasana - + Preferences Asetukset - + &Clear Password &Poista salasana - + Transfers Siirrot - - + + qBittorrent is minimized to tray qBittorrent on pienennetty ilmoitusalueelle - - - + + + This behavior can be changed in the settings. You won't be reminded again. Tätä toimintaa voi muuttaa asetuksista. Sinua ei muistuteta uudelleen. - + Icons Only Vain kuvakkeet - + Text Only Vain teksti - + Text Alongside Icons Teksti kuvakkeiden vieressä - + Text Under Icons Teksti kuvakkeiden alla - + Follow System Style Seuraa järjestelmän tyyliä - - + + UI lock password Käyttöliittymän lukitussalasana - - + + Please type the UI lock password: Anna käyttöliittymän lukitussalasana: - + Are you sure you want to clear the password? Haluatko varmasti poistaa salasanan? - + Use regular expressions Käytä säännöllisiä lausekkeita - - Search - Etsi + + + Search Engine + Hakukone - - Transfers (%1) - Siirrot (%1) + + Search has failed + Haku epäonnistui - Recursive download confirmation - Rekursiivisen latauksen vahvistus + + Search has finished + - Never - Ei koskaan + + Search + Etsi + + + + Transfers (%1) + Siirrot (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent päivitettiin juuri ja se on käynnistettävä uudelleen, jotta muutokset tulisivat voimaan. - + qBittorrent is closed to tray qBittorrent on suljettu ilmoitusalueelle - + Some files are currently transferring. Joitain tiedostosiirtoja on vielä meneillään. - + Are you sure you want to quit qBittorrent? Haluatko varmasti lopettaa qBittorrentin? - + &No &Ei - + &Yes &Kyllä - + &Always Yes &Aina kyllä - + Options saved. Valinnat tallennettu. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Puuttuva Python-suoritusympäristö - + qBittorrent Update Available qBittorrentin päivitys saatavilla - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Käyttääksesi hakukonetta, sinun täytyy asentaa Python. Haluatko asentaa sen nyt? - + Python is required to use the search engine but it does not seem to be installed. Käyttääksesi hakukonetta, sinun täytyy asentaa Python. - - + + Old Python Runtime Vanha Python-suoritusympäristö - + A new version is available. Uusi versio on saatavilla. - + Do you want to download %1? Haluatko ladata %1? - + Open changelog... Avaa muutosloki... - + No updates available. You are already using the latest version. Päivityksiä ei ole saatavilla. Käytät jo uusinta versiota. - + &Check for Updates &Tarkista päivitykset - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Käyttämäsi Python-versio (%1) on vanhentunut. Vähimmäisvaatimus: %2. Haluatko asentaa uudemman version nyt? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Keskeytetty + + + Checking for Updates... Tarkistetaan päivityksiä... - + Already checking for program updates in the background Sovelluspäivityksiä tarkistetaan jo taustalla - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Lataamisvirhe - Python setup could not be downloaded, reason: %1. Please install it manually. - Python-asennuksen lataaminen epäonnistui, syy: %1. + Python-asennuksen lataaminen epäonnistui, syy: %1. Python täytyy asentaa manuaalisesti. - - + + Invalid password Virheellinen salasana - + Filter torrents... - + Suodata torrentteja... - + Filter by: - + Suodatin: - + The password must be at least 3 characters long Salasanan tulee olla vähintään 3 merkkiä pitkä - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrentti '%1' sisältää .torrent-tiedostoja, haluatko jatkaa niiden latausta? - - - + The password is invalid Salasana on virheellinen - + DL speed: %1 e.g: Download speed: 10 KiB/s Latausnopeus: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Lähetysnopeus: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [Lataus: %1, Lähetys: %2] qBittorrent %3 - - - + Hide Piilota - + Exiting qBittorrent Suljetaan qBittorrent - + Open Torrent Files Avaa torrent-tiedostot - + Torrent Files Torrent-tiedostot @@ -4185,133 +4409,133 @@ Python täytyy asentaa manuaalisesti. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O-virhe: %1 - + The file size (%1) exceeds the download limit (%2) Tiedoston koko (%1) ylittää latausrajan (%2) - + Exceeded max redirections (%1) Uudelleenohjausten enimmäismäärä saavutettiin (%1) - + Redirected to magnet URI Uudelleenohjattu magnet-URI:in - + The remote host name was not found (invalid hostname) Etäpalvelimen osoitetta ei löytynyt (virheellinen osoite) - + The operation was canceled Toiminto peruutettiin - + The remote server closed the connection prematurely, before the entire reply was received and processed Etäpalvelin katkaisi yhteyden ennenaikaisesti, ennen vastauksen vastaanottoa ja käsittelyä - + The connection to the remote server timed out Yhteys etäpalvelimeen aikakatkaistiin - + SSL/TLS handshake failed SSL-/TLS-kättely epäonnistui - + The remote server refused the connection Etäpalvelin kieltäytyi yhteydestä - + The connection to the proxy server was refused Yhteys välityspalvelimeen kiellettiin - + The proxy server closed the connection prematurely Välityspalvelin sulki yhteyden ennenaikaisesti - + The proxy host name was not found Välityspalvelimen verkkonimeä ei löytynyt - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Yhteys välityspalvelimen aikakatkaistiin tai välityspalvelin ei vastannut ajoissa lähetettyyn pyyntöön - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) Pääsy etäsisältöön estettiin (401) - + The operation requested on the remote content is not permitted Etäsisältöön kohdistettu toimintopyyntö ei ole sallittu - + The remote content was not found at the server (404) Etäsisältöä ei löytynyt palvelimelta (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Etäpalvelin vaatii tunnistautumisen sisällön jakamista varten, mutta annettua käyttäjätunnusta ja salanaa ei hyväksytty - + The Network Access API cannot honor the request because the protocol is not known Verkkoyhteyden käyttöliittymä ei voi noudattaa pyyntöä, koska protokollaa ei tunneta - + The requested operation is invalid for this protocol Pyydetty toiminto on virheellinen tälle protokollalle - + An unknown network-related error was detected Havaittiin tuntematon verkkoon liittyvä virhe - + An unknown proxy-related error was detected Havaittiin tuntematon välityspalvelimeen liittyvä virhe - + An unknown error related to the remote content was detected Havaittiin etäsisältöön liittyvä tuntematon virhe - + A breakdown in protocol was detected - + Unknown error Tuntematon virhe @@ -4319,7 +4543,12 @@ Python täytyy asentaa manuaalisesti. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ohitetaan SSL-virhe, URL: "%1", virheet: "%2" @@ -5691,294 +5920,295 @@ Python täytyy asentaa manuaalisesti. BitTorrent - + RSS RSS - Web UI - Selainkäyttö + Selainkäyttö - + Advanced Lisäasetukset - + Customize UI Theme... - + Transfer List Siirtolista - + Confirm when deleting torrents Vahvista torrentin poisto - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Käytä vaihtelevia rivivärejä - + Hide zero and infinity values Piilota nolla- ja äärettömyysarvot - + Always Aina - Paused torrents only - Vain pysäytetyt torrentit + Vain pysäytetyt torrentit - + Action on double-click Toiminta kaksoisnapsautuksella - + Downloading torrents: Torrentteja ladatessa: - - Start / Stop Torrent - Aloita / pysäytä torrent + Aloita / pysäytä torrent - - + + Open destination folder Avaa kohdekansio - - + + No action Ei toimintoa - + Completed torrents: Valmistuneet torrentit: - + Auto hide zero status filters - + Desktop Työpöytä - + Start qBittorrent on Windows start up Käynnistä qBittorrent Windowsin käynnistyessä - + Show splash screen on start up Näytä aloituskuva käynnistettäessä - + Confirmation on exit when torrents are active Vahvista ohjelman sulku kun torrenteja on käynnissä - + Confirmation on auto-exit when downloads finish Vahvista automaattinen lopetus kun lataukset ovat valmiita - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB Kt - + Torrent content layout: Torrentin sisällön asettelu: - + Original Alkuperäinen - + Create subfolder Luo alikansio - + Don't create subfolder Älä luo alikansiota - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue Lisää jonon kärkeen - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Lisää... - + Options.. Asetukset... - + Remove Poista - + Email notification &upon download completion Sähköposti-ilmoitus latauksen valmistuttua - - Peer connection protocol: - Vertaisyhteyksien protokolla: + + Send test email + - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + Peer connection protocol: + Vertaisyhteyksien protokolla: + + + + Any - + + I2P (experimental) + I2P (kokeellinen) + + + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + RSS-syötteet käyttävät välityspalvelinta - + Use proxy for RSS purposes - + Käytä välityspalvelinta RSS-tarkoituksiin - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering &IP-suodatus - + Schedule &the use of alternative rate limits Aseta aikataulu vaihtoehtoisille nopeusrajoituksille - + From: From start time Alkaa: - + To: To end time Päättyy: - + Find peers on the DHT network Etsi vertaisia DHT-verkosta - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5987,140 +6217,188 @@ Vaadi salaus: Yhdistä vain salattua protokollaa käyttäviin vertaisiin Älä käytä salausta: Yhdistä vain vertaisiin, jotka eivät käytä salattua protokollaa - + Allow encryption Salli salaus - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Lisätietoja</a>) - + Maximum active checking torrents: - + &Torrent Queueing Torrentien &jonotus - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - Lisää nämä seurantapalvelimet uusille latauksille automaattisesti: + Lisää nämä seurantapalvelimet uusille latauksille automaattisesti: - + RSS Reader RSS-lukija - + Enable fetching RSS feeds Ota käyttöön RSS-syötteiden haku - + Feeds refresh interval: RSS-syötteen päivitystiheys: - + + Same host request delay: + + + + Maximum number of articles per feed: Artikkeleiden enimmäismäärä syötettä kohden: - - - + + + min minutes min - + Seeding Limits Jakorajoitukset - Pause torrent - Pysäytä torrent + Pysäytä torrent - + Remove torrent Poista torrentti - + Remove torrent and its files Poista torrentti ja sen tiedostot - + Enable super seeding for torrent Käytä torrentille superjakoa - + When ratio reaches Jakosuhteen muuttuessa - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS-torrenttien automaattinen lataaja - + Enable auto downloading of RSS torrents Ota käyttöön RSS-torrenttien automaattinen lataus - + Edit auto downloading rules... Muokkaa automaattisten latausten sääntöjä... - + RSS Smart Episode Filter Älykäs RSS-jaksosuodatin - + Download REPACK/PROPER episodes Lataa REPACK/PROPER-jaksot - + Filters: Suodattimet: - + Web User Interface (Remote control) Web-käyttöliittymä (Etäohjaus) - + IP address: IP-osoite: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6128,42 +6406,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv Määritä IPv4- tai IPv6-osoite. Voit käyttää '0.0.0.0' kaikille IPv4-, '::' kaikille IPv6- tai '*' kaikille iPV4- ja IPv6-osoitteille. - + Ban client after consecutive failures: Estä asiakas perättäisistä epäonnistumissista: - + Never Ei koskaan - + ban for: eston kesto: - + Session timeout: Istunnon aikakatkaisu: - + Disabled Ei käytössä - Enable cookie Secure flag (requires HTTPS) - Käytä evästeen Secure-lippua (vaatii HTTPS:n) + Käytä evästeen Secure-lippua (vaatii HTTPS:n) - + Server domains: Palvelimen verkkotunnukset: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6172,442 +6449,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP Käytä HTTPS:ää HTTP:n sijaan - + Bypass authentication for clients on localhost Ohita tunnistautuminen localhostista saapuvien asiakkaiden kohdalla - + Bypass authentication for clients in whitelisted IP subnets Ohita tunnistautuminen valkolistattujen IP-aliverkkojen asiakkaiden kohdalla - + IP subnet whitelist... IP-aliverkkojen valkolista... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Päivitä dynaamisen verkkotunnukseni nimi - + Minimize qBittorrent to notification area Pienennä qBittorrent ilmoitusalueelle - + + Search + Etsi + + + + WebUI + + + + Interface Käyttöliittymä - + Language: Kieli: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Ilmaisinalueen kuvakkeen tyyli: - - + + Normal Normaali - + File association Tiedostosidonnaisuudet - + Use qBittorrent for .torrent files Käytä qBittorrenttia .torrent-tiedostoihin - + Use qBittorrent for magnet links Käytä qBittorrenttia magnet-linkkeihin - + Check for program updates Tarkista sovelluksen päivitykset - + Power Management Virranhallinta - + + &Log Files + + + + Save path: Tallennussijainti: - + Backup the log file after: Ota lokista varmuuskopio, kun sen koko ylittää: - + Delete backup logs older than: Poista varmuuskopiot, jotka ovat vanhempia kuin: - + + Show external IP in status bar + + + + When adding a torrent Kun lisätään torrent-tiedostoa - + Bring torrent dialog to the front Tuo torrent-ikkuna päällimmäiseksi - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Poista myös torrent-tiedostot, joiden lisääminen peruutettiin - + Also when addition is cancelled Myös silloin, kun lisäys peruutetaan - + Warning! Data loss possible! Varoitus! Tietojen menetys on mahdollista! - + Saving Management Tallennuksen hallinta - + Default Torrent Management Mode: Torrentien oletusarvoinen hallintatila: - + Manual Manuaalinen - + Automatic Automaattinen - + When Torrent Category changed: Kun torrentin kategoria muutetaan: - + Relocate torrent Uudelleensijoita torrentti - + Switch torrent to Manual Mode Vaihda torrent manuaaliseen tilaan - - + + Relocate affected torrents Uudelleensijoita vaikuttuneet torrentit - - + + Switch affected torrents to Manual Mode Vaihda vaikuttuneet torrentit manuaaliseen tilaan - + Use Subcategories Käytä alikategorioita - + Default Save Path: Tallennuksen oletussijainti: - + Copy .torrent files to: Kopioi .torrent-tiedostot kohteeseen: - + Show &qBittorrent in notification area Näytä &qBittorrent ilmoitusalueella - &Log file - &Lokitiedosto + &Lokitiedosto - + Display &torrent content and some options Näytä &torrentin sisältö ja joitakin valintoja - + De&lete .torrent files afterwards Poista .torrent-tiedostot &lisäämisen jälkeen - + Copy .torrent files for finished downloads to: Kopioi valmistuneiden latausten .torrent-tiedostot kohteeseen: - + Pre-allocate disk space for all files Varaa kaikille tiedostoille levytila ennakkoon - + Use custom UI Theme Käytä mukautettua käyttöliittymän teemaa - + UI Theme file: Käyttöliittymäteeman tiedosto: - + Changing Interface settings requires application restart Käyttöliittymän asetusten muuttaminen vaatii sovelluksen uudelleenkäynnistyksen - + Shows a confirmation dialog upon torrent deletion Näyttää vahvistusikkunan torrentia poistaessa - - + + Preview file, otherwise open destination folder Esikatsele tiedosto, muuten avaa kohdekansio - - Show torrent options - Näytä torrent-valinnat + Näytä torrentin asetukset - + Shows a confirmation dialog when exiting with active torrents Näyttää vahvistusikkunan sovellusta suljettaessa kun torrentteja on käynnissä - + When minimizing, the main window is closed and must be reopened from the systray icon Pienennettäessä, pääikkuna suljetaan ja on avattavissa uudelleen tehtäväpalkin ilmoitusalueen kuvakkeesta - + The systray icon will still be visible when closing the main window Tehtäväpalkin ilmoitusalueen kuvake pysyy näkyvissä myös suljettaessa pääikkuna - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Sulje qBittorrent ilmoitusalueelle - + Monochrome (for dark theme) Harmaasävy (tummille teemoille) - + Monochrome (for light theme) Harmaasävy (vaaleille teemoille) - + Inhibit system sleep when torrents are downloading Estä järjestelmän lepotila, kun torrentteja on latautumassa - + Inhibit system sleep when torrents are seeding Estä järjestelmän lepotila, kun torrentteja jaetaan - + Creates an additional log file after the log file reaches the specified file size Luo uuden tiedoston, kun nykyinen lokitiedosto ylittää tietyn tiedostokoon - + days Delete backup logs older than 10 days päivää - + months Delete backup logs older than 10 months kuukautta - + years Delete backup logs older than 10 years vuotta - + Log performance warnings Lokita suorituskykyvaroitukset - The torrent will be added to download list in a paused state - Torrent lisätään latauksiin pysäytetynä + Torrent lisätään latauksiin pysäytetynä - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Älä aloita lataamista automaattisesti - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Varaa tiedostojen vaatima tallennustila ennen latauksen aloitusta levyn pirstaloitumisen vähentämiseksi. Hyödyllinnen vain mekaanisille kiintolevyille. - + Append .!qB extension to incomplete files Lisää .!qB pääte keskeneräisille tiedostoille - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Kun torrentti on ladattu, ehdota sen sisältämien .torrent-tiedostojen lisäystä - + Enable recursive download dialog Käytä rekursiivista latausikkunaa - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automaattinen: Monet torrenttien määritykset, kuten tallennussijainti, asetetaan liitetyn kategorian perusteella Manuaalinen: Monet torrenttien määritykset, kuten tallennussijainti, on asetettava manuaalisesti - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: Kategorian tallennussijainnin muuttuessa: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one Selvitä suhteellinen tallennussijainti tallennuksen oletussijainnin sijaan sopivan kategorian sijainnilla - + Use icons from system theme Käytä järjestelmäteeman kuvakkeita - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: Torrentin pysäytysehto: - - + + None Ei mitään - - + + Metadata received Metatiedot vastaanotettu - - + + Files checked Tiedostot tarkastettu - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: Käytä keskeneräisille torrenteille eri sijaintia: - + Automatically add torrents from: Lisää torrentit automaattisesti kohteesta: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6624,841 +6954,914 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Vastaanottaja - + To: To receiver Vastaanottaja: - + SMTP server: SMTP-palvelin: - + Sender Lähettäjä - + From: From sender Lähettäjä: - + This server requires a secure connection (SSL) Tämä palvelin vaatii suojatun yhteyden (SSL) - - + + Authentication Tunnistautuminen - - - - + + + + Username: Käyttäjänimi: - - - - + + + + Password: Salasana: - + Run external program Suorita ulkoinen ohjelma - Run on torrent added - Suorita kun torrent lisätään + Suorita kun torrent lisätään - Run on torrent finished - Suorita kun torrent valmistuu + Suorita kun torrent valmistuu - + Show console window Näytä konsoli-ikkuna - + TCP and μTP TCP ja μTP - + Listening Port Kuunteluportti - + Port used for incoming connections: Portti sisääntuleville yhteyksille: - + Set to 0 to let your system pick an unused port - + Random Satunnainen - + Use UPnP / NAT-PMP port forwarding from my router Käytä UPnP-/NAT-PMP-portinohjausta reitittimeltä - + Connections Limits Yhteyksien rajat - + Maximum number of connections per torrent: Yhteyksien enimmäismäärä torrenttia kohden: - + Global maximum number of connections: Kaikkien yhteyksien enimmäismäärä: - + Maximum number of upload slots per torrent: Lähetyspaikkojen enimmäismäärä torrentia kohden: - + Global maximum number of upload slots: Kaikkien lähetyspaikkojen enimmäismäärä: - + Proxy Server Välityspalvelin - + Type: Tyyppi: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Isäntä: - - - + + + Port: Portti: - + Otherwise, the proxy server is only used for tracker connections Muussa tapauksessa välityspalvelinta käytetään vain seurantapalvelimen yhteyksiin - + Use proxy for peer connections Käytä välityspalvelinta vertaisyhteyksille - + A&uthentication T&unnistautuminen - + Info: The password is saved unencrypted Tärkeää: Salasana tallennetaan salaamattomana - + Filter path (.dat, .p2p, .p2b): Suodatustiedoston sijainti (.dat, .p2p, p2b): - + Reload the filter Lataa suodatin uudelleen - + Manually banned IP addresses... Manuaalisesti estetyt IP-osoitteet... - + Apply to trackers Käytä seurantapalvelimille - + Global Rate Limits Yleiset nopeusrajoitukset - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s Kt/s - - + + Upload: Lähetys: - - + + Download: Lataus: - + Alternative Rate Limits Vaihtoehtoiset nopeusrajoitukset - + Start time Aloitusaika - + End time Päättymisaika - + When: Ajankohta: - + Every day Joka päivä - + Weekdays Arkisin - + Weekends Viikonloppuisin - + Rate Limits Settings Nopeusrajoitusasetukset - + Apply rate limit to peers on LAN Käytä nopeusrajoitusta paikallisverkossa (LAN) oleviin vertaisiin - + Apply rate limit to transport overhead Käytä nopeusrajoitusta siirron rasiteliikenteelle - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Käytä nopeusrajoitusta µTP-protokollaan - + Privacy Yksityisyys - + Enable DHT (decentralized network) to find more peers Käytä vertaishakuun hajautettua DHT (distributed hash table) -protokollaa - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Vaihda vertaisia yhteensopivien BitTorrent-päätteiden (µTorrent, Vuze...) kanssa - + Enable Peer Exchange (PeX) to find more peers Käytä vertaishakuun PeX (Peer Exchange) -protokollaa - + Look for peers on your local network Etsi vertaisia lähiverkosta - + Enable Local Peer Discovery to find more peers Käytä vertaishakuun Local Peer Discovery -protokollaa - + Encryption mode: Salaustila: - + Require encryption Vaadi salaus - + Disable encryption Ei salausta - + Enable when using a proxy or a VPN connection Ota käyttöön välityspalvelinta tai VPN-yhteyttä käytettäessä - + Enable anonymous mode Käytä anonyymitilaa - + Maximum active downloads: Aktiivisia latauksia enintään: - + Maximum active uploads: Aktiivisia lähetyksiä enintään: - + Maximum active torrents: Aktiivisia torrentteja enintään: - + Do not count slow torrents in these limits Älä laske hitaita torrenteja näihin rajoituksiin - + Upload rate threshold: Lähetysnopeuden raja: - + Download rate threshold: Latausnopeuden raja: - - - + + + + sec seconds s - + Torrent inactivity timer: - + then sitten - + Use UPnP / NAT-PMP to forward the port from my router Käytä UPnP:tä / NAT-PMP:tä porttiohjaukseen reitittimeltä - + Certificate: Varmenne: - + Key: Avain: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Tietoa varmenteista</a> - + Change current password Vaihda nykyinen salasana - Use alternative Web UI - Käytä vaihtoehtoista selainkäyttölittymän ulkoasua + Käytä vaihtoehtoista selainkäyttölittymän ulkoasua - + Files location: Tiedostojen sijainti: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Tietoturva - + Enable clickjacking protection Käytä clickjacking-suojausta - + Enable Cross-Site Request Forgery (CSRF) protection Käytä Cross-Site Request Forgery (CSRF) -suojausta - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Käytä Host-otsakkeen validointia - + Add custom HTTP headers Lisää mukautetut HTTP-otsakkeet - + Header: value pairs, one per line - + Enable reverse proxy support Käytä käänteisen välityspalvelimen tukea - + Trusted proxies list: - - Service: - Palvelu: + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + + Service: + Palvelu: - + Register Rekisteröidy - + Domain name: Verkkotunnuksen nimi: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Ottamalla nämä asetukset käyttöön, voit <strong>peruuttamattomasti menettää</strong> torrent-tiedostosi! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file Valitse qBittorrentin käyttöliittymäteeman tiedosto - + Choose Alternative UI files location - + Supported parameters (case sensitive): Tuetut parametrit (kirjainkoolla on merkitystä): - + Minimized Pienennetty - + Hidden Piilotettu - + Disabled due to failed to detect system tray presence - + No stop condition is set. Pysäytysehtoa ei ole määritetty. - + Torrent will stop after metadata is received. Torrent pysäytetään, kun metatiedot on vastaanotettu. - - Torrents that have metadata initially aren't affected. - Ei koske torrenteja, joihin metatiedot sisältyvät jo valmiiksi. - - - + Torrent will stop after files are initially checked. Torrent pysäytetään, kun tiedostojen alkutarkastus on suoritettu. - + This will also download metadata if it wasn't there initially. Tämä myös lataa metatiedot, jos niitä ei alunperin ollut. - + %N: Torrent name %N: Torrentin nimi - + %L: Category %L: Kategoria - + %F: Content path (same as root path for multifile torrent) %F: Sisällön sijainti (vastaa monitiedostoisen torrentin juurikansiota) - + %R: Root path (first torrent subdirectory path) %R: Juurisijainti (torrentin ensimmäisen alihakemiston polku) - + %D: Save path %D: Tallennussijainti - + %C: Number of files %C: Tiedostojen määrä - + %Z: Torrent size (bytes) %Z: Torrenin koko (tavua) - + %T: Current tracker %T: Nykyinen seurantapalvelin - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Ei mikään) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrentti tulkitaan hitaaksi, jos sen lataus- ja lähetysnopeudet pysyvät "Torrentin passiivisuusaika" -arvojen alla - + Certificate Varmenne - + Select certificate Valitse varmenne - + Private key Yksityinen avain - + Select private key Valitse yksityinen avain - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Valitse valvottava kansio - + Adding entry failed Merkinnän llsääminen epäonnistui - - Location Error - Sijaintivirhe + + The WebUI username must be at least 3 characters long. + - - The alternative Web UI files location cannot be blank. - Vaihtoehtoisen ulkoasun tiedostosijainti ei voi olla tyhjä. + + The WebUI password must be at least 6 characters long. + + + + + Location Error + Sijaintivirhe - - + + Choose export directory Valitse vientihakemisto - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Kun nämä asetukset ovat käytössä, qBittorrent <strong>poistaa</strong>.torrent-tiedostot sen jälkeen kun niiden lisäys latausjonoon onnistui (ensimmäinen valinta) tai ei onnistunut (toinen valinta). Tätä <strong>ei käytetä pelkästään</strong> &rdquo;Lisää torrentti&rdquo; -valinnan kautta avattuihin tiedostoihin, vaan myös <strong>tiedostotyypin kytkennän</strong> kautta avattuihin teidostoihin. - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrentin käyttöliittymän teematiedosto (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Tunnisteet (pilkuin eroteltuna) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Valitse tallennushakemisto - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Valitse IP-suodatustiedosto - + All supported filters Kaikki tuetut suodattimet - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Jäsennysvirhe - + Failed to parse the provided IP filter Annetun IP-suodattimen jäsentäminen epäonnistui - + Successfully refreshed Päivitetty onnistuneesti - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Annetun IP-suodattimen jäsentäminen onnistui: %1 sääntöä otettiin käyttöön. - + Preferences Asetukset - + Time Error Aikavirhe - + The start time and the end time can't be the same. Aloitus- ja päättymisaika eivät voi olla samoja. - - + + Length Error Pituusvirhe - - - The Web UI username must be at least 3 characters long. - Selainkäytön käyttäjätunnuksen tulee sisältää vähintään 3 merkkiä. - - - - The Web UI password must be at least 6 characters long. - Selainkäytön salasanan tulee sisältää vähintään 6 merkkiä. - PeerInfo - + Unknown Tuntematon - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection Saapuva yhteys - + Peer from DHT Vertainen DHT:stä - + Peer from PEX Vertainen PEX:istä - + Peer from LSD Vertainen LSD:stä - + Encrypted traffic Salattu liikenne - + Encrypted handshake Salattu kättely + + + Peer is using NAT hole punching + + PeerListWidget @@ -7470,7 +7873,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Osoite @@ -7497,7 +7900,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer ID Client i.e.: Client resolved from Peer ID - + Vertaisen asiakassovelluksen tunniste @@ -7614,7 +8017,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Vertainen "%1" on estetty manuaalisesti - + N/A Ei saatavilla @@ -7637,7 +8040,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Lista lisättävistä vertaisista (yksi IP riviä kohden): - + Format: IPv4:port / [IPv6]:port Muoto: IPv4:portti / [IPv6]:portti @@ -7678,27 +8081,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Tässä osassa olevat tiedostot: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information Odota kunnes metatiedot tulevat saataville nähdäksesi tarkemmat tiedot - + Hold Shift key for detailed information Pidä Vaihto-näppäintä pohjassa saadaksesi yksityiskohtaista tietoa @@ -7711,58 +8114,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Hakuliitännäiset - + Installed search plugins: Asennetut hakuliitännäiset: - + Name Nimi - + Version Versio - + Url Url - - + + Enabled Käytössä - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Varoitus: Muista noudattaa maasi tekijänoikeuslakeja, kun lataat torrentteja mistä tahansa näistä hakukoneista. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Asenna uusi - + Check for updates Tarkista päivitykset - + Close Sulje - + Uninstall Poista @@ -7882,17 +8285,17 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Liitännäisen lähde - + Search plugin source: Hakuliitännäisen lähde: - + Local file Paikallinen tiedosto - + Web link Web-linkki @@ -7933,47 +8336,47 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Seuraavat tiedostot torrentista "%1" tukevat esikatselua, valitse yksi niistä: - + Preview Esikatsele - + Name Nimi - + Size Koko - + Progress Edistyminen - + Preview impossible Esikatselu ei onnistu - + Sorry, we can't preview this file: "%1". Valitettavasti tätä tiedostoa ei voi esikatsella: "%1". - + Resize columns Muuta sarakkeiden kokoa - + Resize all non-hidden columns to the size of their contents Sovita kaikkien piilottamattomien sarakkeiden koko niiden sisältöön @@ -7986,27 +8389,27 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Private::FileLineEdit - + Path does not exist Polkua ei ole olemassa - + Path does not point to a directory - + Path does not point to a file Polku ei osoita tiedostoon - + Don't have read permission to path Ei lukuoikeutta polkuun - + Don't have write permission to path Ei kirjoitusoikeutta polkuun @@ -8047,12 +8450,12 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. PropertiesWidget - + Downloaded: Ladattu: - + Availability: Saatavuus: @@ -8067,53 +8470,53 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Siirto - + Time Active: - Time (duration) the torrent is active (not paused) - Käynnissä: + Time (duration) the torrent is active (not stopped) + Aktiivisena - + ETA: Aika: - + Uploaded: Lähetetty: - + Seeds: Jakajia: - + Download Speed: Latausnopeus: - + Upload Speed: Lähetysnopeus: - + Peers: Vertaisia: - + Download Limit: Latausraja: - + Upload Limit: Lähetysraja: - + Wasted: Hukattu: @@ -8123,193 +8526,249 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Yhteydet: - + Information Tiedot - + Info Hash v1: - + Info Hash v2: - + Comment: Kommentti: - + Select All Valitse kaikki - + Select None Poista valinnat - + Share Ratio: Jakosuhde: - + Reannounce In: Julkaise uudelleen: - + Last Seen Complete: Viimeksi nähty valmistuneen: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Koko yhteensä: - + Pieces: Osia: - + Created By: Luonut: - + Added On: Lisätty: - + Completed On: Valmistunut: - + Created On: Luotu: - + + Private: + + + + Save Path: Tallennussijainti: - + Never Ei koskaan - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (hallussa %3) - - + + %1 (%2 this session) %1 (tässä istunnossa %2) - - + + + N/A Ei saatavilla - + + Yes + Kyllä + + + + No + Ei + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (jaettu %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (enintään %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 yhteensä) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (keskimäärin %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Uusi web-jako + Uusi web-jako - Remove Web seed - Poista web-jako + Poista web-jako - Copy Web seed URL - Kopioi web-jaon URL-osoite + Kopioi web-jaon URL-osoite - Edit Web seed URL - Muokkaa web-jaon URL-osoitetta + Muokkaa web-jaon URL-osoitetta - + Filter files... Suodata tiedostot... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - Uusi URL-jako + Uusi URL-jako - New URL seed: - Uusi URL-jako: + Uusi URL-jako: - - This URL seed is already in the list. - URL-jako on jo listalla. + URL-jako on jo listalla. - + Web seed editing Web-jaon muokkaus - + Web seed URL: Web-jaon URL-osoite @@ -8328,22 +8787,22 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. - + Invalid data format Virheellinen tietomuoto - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Rss-artikkeli '%1' on hyväksytty säännöllä '%2'. Yritetään lisätä torrenttia... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8351,24 +8810,24 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS-syötteen lataaminen osoitteesta '%1' epäonnistui. Syy: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + RSS-syöte päivitetty osoitteesta '%1'. Lisättiin %2 uutta artikkelia. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS-syötteen jäsentäminen osoitteesta '%1' epäonnistui. Syy: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. - + RSS-syötteen lataaminen osoitteesta '%1' onnistui. Aloitetaan sen jäsentäminen. @@ -8381,7 +8840,7 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Failed to save RSS feed in '%1', Reason: %2 - + RSS-syötteen tallentaminen osoitteesta '%1' epäonnistui, Syy: %2 @@ -8402,12 +8861,12 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. RSS::Private::Parser - + Invalid RSS feed. Virheellinen RSS-syöte. - + %1 (line: %2, column: %3, offset: %4). @@ -8415,99 +8874,99 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. Annetulla URL-osoitteella on jo olemassa RSS-syöte: %1. - + Feed doesn't exist: %1. - + Syötettä ei ole olemassa: %1 - + Cannot move root folder. Juurikansiota ei voi siirtää. - - + + Item doesn't exist: %1. Tietuetta ei ole olemassa: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. Juurikansiota ei voi poistaa. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + RSS-syötettä ei voitu ladata. Syöte: "%1". Syy: osoite vaaditaan. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + RSS-syötettä ei voitu ladata. Syöte: "%1". Syy: Virheellinen UID. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Väärä RSS-kohteen sijainti: %1. - + RSS item with given path already exists: %1. RSS-kohde ilmoitetulla sijainnilla on jo olemassa: %1. - + Parent folder doesn't exist: %1. Ylemmän tason kansiota ei ole olemassa: %1. @@ -8531,8 +8990,8 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. - - + + Mark items read Merkitse kohteet luetuiksi @@ -8557,132 +9016,132 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Torrentit: (kaksoisnapsauta ladataksesi) - - + + Delete Poista - + Rename... Nimeä uudelleen... - + Rename Nimeä uudelleen - - + + Update Päivitä - + New subscription... Uusi tilaus... - - + + Update all feeds Päivitä kaikki syötteet - + Download torrent Lataa torrentti - + Open news URL Avaa uutisten osoite - + Copy feed URL Kopioi syötteen osoite - + New folder... Uusi kansio... - + Edit feed URL... - + Muokkaa syötteen osoitetta... - + Edit feed URL - + Muokkaa syötteen osoitetta - + Please choose a folder name Valitse kansion nimi - + Folder name: Kansion nimi: - + New folder Uusi kansio - - + + Please type a RSS feed URL Anna RSS-syötteen verkko-osoite. - - + + Feed URL: Syötteen osoite: - + Deletion confirmation Poistamisen vahvistus - + Are you sure you want to delete the selected RSS feeds? Haluatko varmasti poistaa valitut RSS-syötteet? - + Please choose a new name for this RSS feed Valitse uusi nimi tälle RSS-syötteelle - + New feed name: Uusi syötteen nimi: - + Rename failed Uudelleennimeäminen epäonnistui - + Date: Päiväys: - + Feed: - + Syöte: - + Author: Tekijä: @@ -8690,38 +9149,38 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. SearchController - + Python must be installed to use the Search Engine. Python tulee olla asennettu, jotta hakukonetta voi käyttää. - + Unable to create more than %1 concurrent searches. Ei voi luoda enempää kuin %1 samanaikaista hakua. - - + + Offset is out of range - + All plugins are already up to date. Kaikki liitännäiset ovat jo ajan tasalla. - + Updating %1 plugins Päivitetään %1 liitännäistä - + Updating plugin %1 Päivitetään liitännäinen %1 - + Failed to check for plugin updates: %1 Liitännäisten päivitysten tarkistaminen epäonnistui: %1 @@ -8796,132 +9255,146 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. Koko: - + Name i.e: file name Nimi - + Size i.e: file size Koko - + Seeders i.e: Number of full sources Jakoja - + Leechers i.e: Number of partial sources Lataajia - Search engine - Hakukone + Hakukone - + Filter search results... Suodata hakutulokset... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Tulokset (näytetään <i>%1</i>/<i>%2</i>): - + Torrent names only Vain torrentin nimestä - + Everywhere Kaikkialta - + Use regular expressions Käytä säännöllisiä lausekkeita - + Open download window Avaa latausikkuna - + Download Lataa - + Open description page Avaa kuvaussivu - + Copy Kopioi - + Name Nimi - + Download link Lataa linkki - + Description page URL Kuvaussivun osoite - + Searching... Haetaan... - + Search has finished Haku on päättynyt - + Search aborted - Haku keskeytetty + Haku keskeytettiin - + An error occurred during search... Haun aikana tapahtui virhe... - + Search returned no results Haku ei palauttanut tuloksia - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Sarakkeen näkyvyys - + Resize columns Muuta sarakkeiden kokoa - + Resize all non-hidden columns to the size of their contents Sovita kaikkien piilottamattomien sarakkeiden koko niiden sisältöön @@ -8929,104 +9402,104 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. SearchPluginManager - + Unknown search engine plugin file format. Tuntematon hakukoneliitännäisen tiedostomuoto. - + Plugin already at version %1, which is greater than %2 Liitännäinen on jo versiossa %1, mikä on suurempi kuin %2 - + A more recent version of this plugin is already installed. Uudempi versio tästä liitännäisestä on jo asennettu. - + Plugin %1 is not supported. Liitännäinen %1 ei ole tuettu. - - + + Plugin is not supported. Liitännäinen ei ole tuettu. - + Plugin %1 has been successfully updated. Liitännäinen %1 on päivitetty onnistuneesti. - + All categories Kaikki kategoriat - + Movies Elokuvat - + TV shows TV-ohjelmat - + Music Musiikki - + Games Pelit - + Anime Anime - + Software Ohjelmat - + Pictures Kuvat - + Books Kirjat - + Update server is temporarily unavailable. %1 Päivityspalvelin ei ole juuri nyt käytettävissä. %1 - - + + Failed to download the plugin file. %1 Liitännäistiedoston lataus epäonnistui. %1 - + Plugin "%1" is outdated, updating to version %2 Liitännäinen "%1" on vanhentunut, päivitetään versioon %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -9036,114 +9509,153 @@ Valitut alkuperäisliitännäiset ovat poistettu käytöstä. - - - - Search Etsi - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Hakuliitännäisiä ei ole asennettu. Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta asentaaksesi liitännäisiä. - + Search plugins... Hakuliitännäiset - + A phrase to search for. Haku fraasi. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example Esimerkki: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins Kaikki liitännäiset - + Only enabled Vain käytössä olevat - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab Sulje välilehti - + Close all tabs Sulje kaikki välilehdet - + Select... Valitse... - - - + + Search Engine Hakukone - + + Please install Python to use the Search Engine. Asenna Python käyttääksesi hakukonetta. - + Empty search pattern Tyhjä hakulauseke - + Please type a search pattern first Kirjoita ensin hakulauseke - + + Stop Pysäytä - Search has finished - Haku valmis + Haku valmis - Search has failed - Haku epäonnistui + Haku epäonnistui + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9256,34 +9768,34 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta - + Upload: Lähetys: - - - + + + - - - + + + KiB/s Kt/s - - + + Download: Lataus: - + Alternative speed limits Vaihtoehtoiset nopeusrajoitukset @@ -9293,7 +9805,7 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Total Upload - Lähetetty kaikkiaan + Lähetys yhteensä @@ -9376,7 +9888,7 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Total Upload - Lähetys kaikkiaan + Lähetys yhteensä @@ -9475,32 +9987,32 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Keskimääräinen aika jonossa: - + Connected peers: Yhdistetyt vertaiset: - + All-time share ratio: Jakosuhde yhteensä: - + All-time download: - Yhteensä ladattu: + Ladattu yhteensä: - + Session waste: Hukattu tässä istunnossa: - + All-time upload: - Lähetetty kaikkiaan: + Lähetetty yhteensä: - + Total buffer size: Puskurien koko yhteensä: @@ -9515,12 +10027,12 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Jonoon asetetut I/O-työt: - + Write cache overload: Kirjoitusvälimuistin ylikuormitus: - + Read cache overload: Lukuvälimuistin ylikuormitus: @@ -9539,51 +10051,67 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta StatusBar - + Connection status: Yhteyden tila: - - + + No direct connections. This may indicate network configuration problems. Ei suoria yhteyksiä. Tämä voi olla merkki verkko-ongelmista. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 solmua - + qBittorrent needs to be restarted! qBittorrent pitää käynnistää uudelleen! - - - + + + Connection Status: Yhteyden tila: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Ei yhteyttä. Yleensä tämä tarkoittaa, että qBittorrent ei pystynyt kuuntelemaan sisääntulevien yhteyksien porttia. - + Online Verkkoyhteydessä - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Napsauta vaihtaaksesi vaihtoehtoisiin nopeusrajoituksiin - + Click to switch to regular speed limits Napsauta vaihtaaksesi tavallisiin nopeusrajoituksiin @@ -9612,39 +10140,47 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Valmistunut (0) - Resumed (0) - Jatkettu (0) + Jatkettu (0) - Paused (0) - Pysäytetty (0) + Pysäytetty (0) + + + + Running (0) + + + + + Stopped (0) + Active (0) - Käynnissä (0) + Aktiivinen (0) Inactive (0) - Ei käynnissä (0) + Passiivinen (0) Stalled (0) - Pysähtynyt (0) + Viivästynyt (0) Stalled Uploading (0) - Pysähtynyt lähetys (0) + Viivästynyt lähetys (0) Stalled Downloading (0) - Pysähtynyt lataus (0) + Viivästynyt lataus (0) @@ -9681,10 +10217,29 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Completed (%1) Valmistunut (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pysäytetty (%1) + Pysäytetty (%1) @@ -9692,14 +10247,12 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Siirretään (%1) - Resume torrents - Käynnistä torrentit + Käynnistä torrentit - Pause torrents - Keskeytä torrentit + Pysäytä torrentit @@ -9707,34 +10260,33 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta Poista torrentit - Resumed (%1) - Jatkettu (%1) + Jatkettu (%1) Active (%1) - Käynnissä (%1) + Aktiivinen (%1) Inactive (%1) - Ei käynnissä (%1) + Passiivinen (%1) Stalled (%1) - Pysähtynyt (%1) + Viivästynyt (%1) Stalled Uploading (%1) - Pysähtynyt lähetys (%1) + Viivästynyt lähetys (%1) Stalled Downloading (%1) - Pysähtynyt lataus (%1) + Viivästynyt lataus (%1) @@ -9750,17 +10302,17 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta TagFilterModel - + Tags Tunnisteet - + All Kaikki - + Untagged Ilman tunnistetta @@ -9768,52 +10320,64 @@ Napsauta "Hakuliitännäiset"-painiketta ikkunan oikeasta alakulmasta TagFilterWidget - + Add tag... Lisää tunniste... - + Remove tag Poista tunniste - + Remove unused tags Poista käyttämättömät tunnisteet - Resume torrents - Käynnistä torrentit + Käynnistä torrentit - Pause torrents - Pysäytä torrentit + Pysäytä torrentit - + Remove torrents Poista torrentit - New Tag - Uusi tunniste + Uusi tunniste + + + + Start torrents + + + + + Stop torrents + - + Tag: Tunniste: - + + Add tag + + + + Invalid tag name Virheellinen tunniste nimi - + Tag name '%1' is invalid Tunnisteen nimi '%1' ei kelpaa @@ -9951,32 +10515,32 @@ Valitse toinen nimi ja yritä uudelleen. TorrentContentModel - + Name Nimi - + Progress Edistyminen - + Download Priority Latauksen tärkeysaste - + Remaining Jäljellä - + Availability Saatavuus - + Total Size Koko yhteensä @@ -10021,102 +10585,120 @@ Valitse toinen nimi ja yritä uudelleen. TorrentContentWidget - + Rename error Virhe nimettäessä uudelleen - + Renaming Nimetään uudelleen - + New name: Uusi nimi: - + Column visibility Sarakkeen näkyvyys - + Resize columns Muuta sarakkeiden kokoa - + Resize all non-hidden columns to the size of their contents Sovita kaikkien piilottamattomien sarakkeiden koko niiden sisältöön - + Open Avaa - + Open containing folder Avaa sisältävä kansio - + Rename... Nimeä uudelleen... - + Priority Tärkeysaste - - + + Do not download Älä lataa - + Normal Normaali - + High Korkea - + Maximum Maksimi - + By shown file order Näkyvien tiedostojen järjestysmallissa - + Normal priority Normaali tärkeysaste - + High priority Korkea tärkeysaste - + Maximum priority Maksimi tärkeysaste - + Priority by shown file order Ensisijaisuus näkyvän tiedoston järjestyksessä + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + Torrentin luonti epäonnistui. + + TorrentCreatorDialog @@ -10141,13 +10723,13 @@ Valitse toinen nimi ja yritä uudelleen. - + Select file Valitse tiedosto - + Select folder Valitse kansio @@ -10172,77 +10754,29 @@ Valitse toinen nimi ja yritä uudelleen. Osakoko: - + Auto Automaattinen - 16 KiB - 16 Kt - - - 32 KiB - 32 Kt + + Calculate number of pieces: + Laske osien määrä: - 64 KiB - 64 Kt + + Private torrent (Won't distribute on DHT network) + Yksityinen torrent (Ei jaeta DHT-verkossa) - 128 KiB - 128 Kt + + Start seeding immediately + Käynnistä jako välittömästi - 256 KiB - 256 Kt - - - 512 KiB - 512 Kt - - - 1 MiB - 1 Mt - - - 2 MiB - 2 Mt - - - 4 MiB - 4 Mt - - - 8 MiB - 8 Mt - - - 16 MiB - 16 Mt - - - 32 MiB - 32 Mt - - - - Calculate number of pieces: - Laske osien määrä: - - - - Private torrent (Won't distribute on DHT network) - Yksityinen torrent (Ei jaeta DHT-verkossa) - - - - Start seeding immediately - Käynnistä jako välittömästi - - - - Ignore share ratio limits for this torrent - Älä huomioi jakorajoituksia tämän torrentin kohdalla + + Ignore share ratio limits for this torrent + Ohita jakosuhderajoitukset tämän torrentin osalta @@ -10270,92 +10804,83 @@ Valitse toinen nimi ja yritä uudelleen. Kentät - + You can separate tracker tiers / groups with an empty line. Voit erottaa seurantapalvelinten tasot/ryhmät tyhjällä rivillä - + Web seed URLs: Web-jaot: - + Tracker URLs: Seurantapalvelimien osoitteet: - + Comments: Kommentit: - + Source: Lähde: - + Progress: Edistyminen: - + Create Torrent Luo torrent - - + + Torrent creation failed Torrentin luonti epäonnistui - + Reason: Path to file/folder is not readable. Syy: Tiedoston/kansion sijainti ei ole luettavissa. - + Select where to save the new torrent Valitse minne uusi torrent tallennetaan - + Torrent Files (*.torrent) Torrent-tiedostot (*.torrent) - - Reason: %1 - Syy: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Syy: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Syy: Luotu torrent on virheellinen, sitä ei lisätä latausluetteloon. + Torrentin lisääminen epäonnistui - + Torrent creator Torrentin luonti - + Torrent created: Torrent luotu: @@ -10363,32 +10888,32 @@ Valitse toinen nimi ja yritä uudelleen. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. Seurantun kansion sijainti ei voi olla tyhjä. - + Watched folder Path cannot be relative. Seurantun kansion sijainti ei voi olla suhteellinen. @@ -10396,27 +10921,27 @@ Valitse toinen nimi ja yritä uudelleen. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10424,14 +10949,8 @@ Valitse toinen nimi ja yritä uudelleen. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Virheellinen metadata + Virheellinen metadata @@ -10439,7 +10958,7 @@ Valitse toinen nimi ja yritä uudelleen. Torrent Options - + Torrentin asetukset @@ -10462,126 +10981,194 @@ Valitse toinen nimi ja yritä uudelleen. Käytä keskeneräisille torrenteille eri sijaintia - + Category: Kategoria: - + + Torrent Share Limits + + + Torrent speed limits - Torrentin nopeusrajoitukset + Torrentin nopeusrajoitukset - + Download: Lataus: - - + + - - + + Torrent Speed Limits + + + + + KiB/s Kt/s - + These will not exceed the global limits - + Upload: Lähetys: - Torrent share limits - Torrentin jakorajoitukset + Torrentin jakorajoitukset - Use global share limit - Käytä yleistä jako rajoitusta + Käytä yleistä jako rajoitusta - Set no share limit - Älä aseta jakorajoitusta + Älä aseta jakorajoitusta - Set share limit to - Aseta jakorajoitukseksi + Aseta jakorajoitukseksi - ratio - Jakosuhde + Jakosuhde - total minutes - + yhteensä minuutteja - inactive minutes - + Passiiviset minuutit - + Disable DHT for this torrent Poista DHT käytöstä tältä torrentilta - + Download in sequential order Lataa järjestyksessä - + Disable PeX for this torrent Poista PeX käytöstä tältä torrentilta - + Download first and last pieces first Lataa ensin ensimmäinen ja viimeinen osa - + Disable LSD for this torrent Poista LSD käytöstä tältä torrentilta - + Currently used categories - - + + Choose save path Valitse tallennussijainti - + Not applicable to private torrents + + + TorrentShareLimitsWidget - - No share limit method selected + + + + + Default + Oletus + + + + + + Unlimited - - Please select a limit method first + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Poista torrentti + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Käytä torrentille superjakoa + + + + Ratio: @@ -10590,35 +11177,39 @@ Valitse toinen nimi ja yritä uudelleen. Torrent Tags - + Torrentin tunnisteet - New Tag - Uusi tunniste + Uusi tunniste + Add tag + + + + Tag: Tunniste: - + Invalid tag name Virheellinen tunniste nimi - + Tag name '%1' is invalid. - + Tag exists Tunniste on olemassa - + Tag name already exists. Tunnisteen nimi on jo olemassa @@ -10626,115 +11217,130 @@ Valitse toinen nimi ja yritä uudelleen. TorrentsController - + Error: '%1' is not a valid torrent file. Virhe: '%1' ei ole kelvollinen torrent-tiedosto. - + Priority must be an integer Ensisijaisuuden on oltava kokonaisluku - + Priority is not valid Ensisijaisuus on virheellinen - + Torrent's metadata has not yet downloaded Torrentin metatietoja ei ole vielä ladattu - + File IDs must be integers Tiedoston ID:n on oltava kokonaisluku - + File ID is not valid Tiedoston ID on virheellinen - - - - + + + + Torrent queueing must be enabled Torrentien jonotus tulee olla käytössä - - + + Save path cannot be empty Tallennussijainti ei voi olla tyhjä - - + + Cannot create target directory - - + + Category cannot be empty Kategoria ei voi olla tyhjä - + Unable to create category Kategorian luominen ei onnistu - + Unable to edit category Kategorian muokkaaminen ei onnistu - + Unable to export torrent file. Error: %1 - + Cannot make save path Tallennusijainnin luonti ei onnistu - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sort'-parametri on virheellinen - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Kansioon ei voi kirjoittaa - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name Torrentin nimi on virheellinen - - + + Incorrect category name Väärä kategorian nimi @@ -10760,249 +11366,191 @@ Valitse toinen nimi ja yritä uudelleen. TrackerListModel - - + Working - Toiminnassa + Toiminnassa - + Disabled - Ei käytössä + Pois käytöstä - + Disabled for this torrent - + This torrent is private - Torrent on yksityinen + Torrent on yksityinen - + N/A - Ei saatavilla + Ei saatavilla - + Updating... - Päivitetään... + Päivitetään... - + Not working - Ei toiminnassa + Ei toimi - + Tracker error - + Seurantapalvelimen virhe - + Unreachable - + Ei saavutettavissa - + Not contacted yet - Ei yhteyttä vielä + Ei yhteyttä vielä - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Taso + + BT Protocol + - - Protocol + + Next Announce - - Status - Tila + + Min Announce + + + + + Tier + Taso - Peers - Vertaisia + Status + Tila - Seeds - Jaot + Peers + Käyttäjät - Leeches - Lataajat + Seeds + Jakajia - Times Downloaded - + Leeches + Lataajat - Message - Viesti + Times Downloaded + Latauskerrat - Next announce - - - - - Min announce - - - - - v%1 - + Message + Viesti TrackerListWidget - Working - Toiminnassa - - - Disabled - Ei käytössä - - - + This torrent is private Torrent on yksityinen - Updating... - Päivitetään... - - - Not working - Ei toiminnassa - - - Not contacted yet - Ei yhteyttä vielä - - - N/A - Ei saatavilla - - - + Tracker editing Seurantapalvelimen muokkaus - + Tracker URL: Seurantapalvelimen osoite: - - + + Tracker editing failed Seurantapalvelimen muokkaaminen epäonnistui - + The tracker URL entered is invalid. Kirjoitettu seurantapalvelimen osoite on virheellinen. - + The tracker URL already exists. Seurantapalvelimen osoite on jo olemassa. - + Edit tracker URL... Muokkaa seurantapalvelimen osoitetta... - + Remove tracker Poista seurantapalvelin - + Copy tracker URL Kopioi seurantapalvelimen osoite - + Force reannounce to selected trackers Pakota uudelleenjulkaisu valituille seurantapalvelimille - + Force reannounce to all trackers Pakota uudelleenjulkaisu kaikille seurantapalvelimille - Tier - Taso - - - URL - Verkko-osoite - - - Status - Tila - - - Seeds - Jaot - - - + Resize columns Muuta sarakkeiden kokoa - + Resize all non-hidden columns to the size of their contents Sovita kaikkien piilottamattomien sarakkeiden koko niiden sisältöön - Peers - Vertaisia - - - + Add trackers... Lisää seurantapalvelimia... - Leeches - Lataajat - - - Message - Viesti - - - + Column visibility Sarakkeen näkyvyys @@ -11020,37 +11568,37 @@ Valitse toinen nimi ja yritä uudelleen. Lisättävät seurantapalvelimet (yksi per rivi): - + µTorrent compatible list URL: µTorrent-yhteensopivan listan osoite: - + Download trackers list - + Add Lisää - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11058,83 +11606,70 @@ Valitse toinen nimi ja yritä uudelleen. TrackersFilterWidget - All (0) - this is for the tracker filter - Kaikki (0) - - - Trackerless (0) - Ei seurantapalvelinta (0) - - - Error (0) - Virhe (0) - - - Warning (0) - Varoitus (0) - - - Error (%1) - Virhe (%1) - - - + Warning (%1) Varoitus (%1) - + Trackerless (%1) Ei seurantapalvelinta (%1) - + Tracker error (%1) - + Seurantapalvelimen virhe (%1) - + Other error (%1) - + Muu virhe (%1) - + Remove tracker - Poista seurantapalvelin + Poista seurantapalvelin + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Jatka torrentteja + Jatka torrentteja - Pause torrents - Keskeytä torrentit + Pysäytä torrentit - + Remove torrents Poista torrentit - + Removal confirmation - + Poistovahvistus - + Are you sure you want to remove tracker "%1" from all torrents? - + Haluatko varmasti poistaa seurantapalvelimen "%1" kaikista torrenteista? - + Don't ask me again. - + Älä kysy uudelleen. - + All (%1) this is for the tracker filter Kaikki (%1) @@ -11143,7 +11678,7 @@ Valitse toinen nimi ja yritä uudelleen. TransferController - + 'mode': invalid argument @@ -11182,7 +11717,7 @@ Valitse toinen nimi ja yritä uudelleen. Stalled Torrent is waiting for download to begin - Pysähtynyt + Viivästynyt @@ -11236,9 +11771,8 @@ Valitse toinen nimi ja yritä uudelleen. Tarkistetaan jatkotietoja - Paused - Keskeytetty + Keskeytetty @@ -11263,220 +11797,262 @@ Valitse toinen nimi ja yritä uudelleen. Virhe - + Name i.e: torrent name Nimi - + Size i.e: torrent size Koko - + Progress % Done Edistyminen - Status Torrent status (e.g. downloading, seeding, paused) - Tila + Tila - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Tila + + + Seeds i.e. full sources (often untranslated) Jaot - + Peers i.e. partial sources (often untranslated) Vertaisia - + Down Speed i.e: Download speed Latausnopeus - + Up Speed i.e: Upload speed Lähetysnopeus - + Ratio Share ratio Jakosuhde - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Aika - + Category Kategoria - + Tags Tunnisteet - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Lisätty - + Completed On Torrent was completed on 01/01/2010 08:00 Valmistunut - + Tracker Seurantapalvelin - + Down Limit i.e: Download limit Latausraja - + Up Limit i.e: Upload limit Lähetysraja - + Downloaded Amount of data downloaded (e.g. in MB) Ladattu - + Uploaded Amount of data uploaded (e.g. in MB) Lähetetty - + Session Download Amount of data downloaded since program open (e.g. in MB) Ladattu tässä istunnossa - + Session Upload Amount of data uploaded since program open (e.g. in MB) Lähetetty tässä istunnossa - + Remaining Amount of data left to download (e.g. in MB) Jäljellä - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktiivisena + + + + Yes + Kyllä + + + + No + Ei + + Time Active Time (duration) the torrent is active (not paused) - Käynnissä + Aktiivisena - + Save Path Torrent save path - + Tallennussijainti - + Incomplete Save Path Torrent incomplete save path - + Keskeneräisen tallennussijainti - + Completed Amount of data completed (e.g. in MB) Valmistunut - + Ratio Limit Upload share ratio limit Jakosuhteen raja - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Viimeksi nähty valmistuneen - + Last Activity Time passed since a chunk was downloaded/uploaded Viimeisin toiminta - + Total Size i.e. Size including unwanted data Koko yhteensä - + Availability The number of distributed copies of the torrent Saatavuus - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Ei saatavilla - + %1 ago e.g.: 1h 20m ago %1 sitten - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (jaettu %2) @@ -11485,334 +12061,354 @@ Valitse toinen nimi ja yritä uudelleen. TransferListWidget - + Column visibility Sarakkeen näkyvyys - + Recheck confirmation Uudelleentarkistuksen vahvistus - + Are you sure you want to recheck the selected torrent(s)? Haluatko varmasti tarkistaa uudelleen valitut torrentit? - + Rename Nimeä uudelleen - + New name: Uusi nimi: - + Choose save path Valitse tallennussijainti - Confirm pause - Vahvista keskeytys + Vahvista pysäytys - Would you like to pause all torrents? - Haluatko keskeyttää kaikki torrentit? + Haluatko pysäyttää kaikki torrentit? - Confirm resume - Vahvista jatkaminen + Vahvista jatkaminen - Would you like to resume all torrents? - Haluatko jatkaa kaikkia torrenteja? + Haluatko jatkaa kaikkia torrenteja? - + Unable to preview Esikatselu ei onnistu - + The selected torrent "%1" does not contain previewable files Valittu torrent "%1" ei sisällä esikatseluun soveltuvia tiedostoja - + Resize columns Muuta sarakkeiden kokoa - + Resize all non-hidden columns to the size of their contents Sovita kaikkien piilottamattomien sarakkeiden koko niiden sisältöön - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Lisää tunnisteita + Lisää tunnisteita - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Tiedosto samalla nimellä on jo olemassa - + Export .torrent file error - + Remove All Tags Poista kaikki tunnisteet - + Remove all tags from selected torrents? Poistetaanko valituista torrenteista kaikki tunnisteet? - + Comma-separated tags: Pilkulla erotetut tunnisteet: - + Invalid tag Virheellinen tunniste - + Tag name: '%1' is invalid Tunnisteen nimi '%1' ei kelpaa - &Resume Resume/start the torrent - &Jatka + &Jatka - &Pause Pause the torrent - &Keskeytä + &Pysäytä - Force Resu&me Force Resume/start the torrent - + Pakota jatka&minen - + Pre&view file... &Esikatsele tiedosto... - + Torrent &options... - + Torrentin &asetukset... - + Open destination &folder - + Avaa kohde&kansio - + Move &up i.e. move up in the queue - + Siirrä &ylös - + Move &down i.e. Move down in the queue - + Siirrä &alas - + Move to &top i.e. Move to top of the queue - + Siirrä &kärkeen - + Move to &bottom i.e. Move to bottom of the queue - + Siirrä &viimeiseksi - + Set loc&ation... Aseta sij&ainti... - + Force rec&heck - + Pakota uudelleen&tarkastus - + Force r&eannounce - + Pakota uudelleen&julkaisu - + &Magnet link - + &Magnet-linkki - + Torrent &ID - + + &Comment + &Kommentti + + + &Name &Nimi - + Info &hash v1 - + Info h&ash v2 - + Re&name... Ni&meä uudelleen... - + Edit trac&kers... Muokkaa seuranta&palvelimia - + E&xport .torrent... &Vie .torrent... - + Categor&y - + Kategori&a - + &New... New category... &Uusi... - + &Reset Reset category - + &Palauta - + Ta&gs - + &Tunnisteet - + &Add... Add / assign multiple tags... &Lisää... - + &Remove All Remove all tags &Poista kaikki - - &Queue + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + + &Queue + &Jono + + + &Copy &Kopioi - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Lataa järjestyksessä - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Poista - + Download first and last pieces first Lataa ensin ensimmäinen ja viimeinen osa - + Automatic Torrent Management Automaattinen torrentien hallintatila - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automaattisessa tilassa monet torrenttien määritykset, kuten tallennussijainti, asetetaan liitetyn kategorian perusteella - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Superjako-tila @@ -11822,12 +12418,12 @@ Valitse toinen nimi ja yritä uudelleen. UI Theme Configuration - + Käyttöliittymän teeman määritys Colors - + Värit @@ -11838,18 +12434,18 @@ Valitse toinen nimi ja yritä uudelleen. Light Mode - + Vaalea tila Dark Mode - + Tumma tila Icons - + kuvakkeet @@ -11857,28 +12453,28 @@ Valitse toinen nimi ja yritä uudelleen. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11886,7 +12482,12 @@ Valitse toinen nimi ja yritä uudelleen. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Ulkoasun lataus tiedostosta epäonnistui: "%1" @@ -11917,43 +12518,36 @@ Valitse toinen nimi ja yritä uudelleen. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python havaittu, suoritettavan tiedoston nimi: '%1', versio: %2 - - - Python not detected - Pythonia ei havaittu - Found Python executable. Name: "%1". Version: "%2" - + Python-suoritustiedosto löydetty. Nimi: "%1". Versio: "%2" Failed to find Python executable. Path: "%1". - + Python-suoritustiedoston paikantaminen epäonnistui. Polku: "%1". @@ -11973,33 +12567,33 @@ Valitse toinen nimi ja yritä uudelleen. Failed to find Python executable - + Python-suoritustiedoston paikantaminen epäonnistui Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12063,72 +12657,72 @@ Valitse toinen nimi ja yritä uudelleen. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Epäkelpo tiedostotyyppi. Vain tavallinen tiedosto sallitaan. - + Symlinks inside alternative UI folder are forbidden. Symboliset linkit ovat kiellettyjä vaihtoehtoisen UI:n kansiossa. - - Using built-in Web UI. - Käytetään sisäänrakennettua selainkäyttöä. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Käytetään sisäänrakennettua selainkäyttöä. Sijainti: '%1'. + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Selainkäytön käännös valitulle lokalisoinnille (%1) on ladattu. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Selainkäytön käännöstä ei voitu ladata valitulle lokalisoinnille (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" Verkkokäyttöliittymän mukautetusta HTTP-otsikosta puuttuu ':'-erotin: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12136,143 +12730,136 @@ Valitse toinen nimi ja yritä uudelleen. WebUI - - Web UI: HTTPS setup successful - Selainkäyttö: HTTPS-määritys onnistui + + Credentials are not set + Kirjautumistietoja ei ole asetettu + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - Selainkäyttö: HTTPS-määritys epäonnistui, HTTP-varmistus + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Selainkäyttö: kuunnellaan IP-osoitetta %1 portissa %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Selainkäyttö: ei voida sitoa IP-osoitteeseen %1 portissa %2. Syy: %3 + + Unknown error + Tuntematon virhe misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 min {1s?} + - + %1m e.g: 10 minutes - %1 min + %1 min - + %1h %2m e.g: 3 hours 5 minutes - %1 h %2 min + %1 h %2 min - + %1d %2h e.g: 2 days 10 hours - %1 d %2 h + %1 d %2 h - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1 h %2 min - - - %1d %2h - e.g: 2days 10hours - %1 d %2 h - - - %1y %2d - e.g: 2years 10days - %1y %2d + %1y %2d - - + + Unknown Unknown (size) Tuntematon - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent sammuttaa tietokoneen nyt, koska kaikki lataukset ovat valmistuneet. - + < 1m < 1 minute alle minuutti - - %1m - e.g: 10minutes - %1 min - diff --git a/src/lang/qbittorrent_fr.ts b/src/lang/qbittorrent_fr.ts index 4dd20fd14ca2..d2555db10621 100644 --- a/src/lang/qbittorrent_fr.ts +++ b/src/lang/qbittorrent_fr.ts @@ -14,77 +14,77 @@ À propos - + Authors Auteurs - + Current maintainer Responsable actuel - + Greece Grèce - - + + Nationality: Nationalité : - - + + E-mail: Courriel : - - + + Name: Nom : - + Original author Auteur original - + France France - + Special Thanks Remerciements - + Translators Traducteurs - + License Licence - + Software Used Logiciels utilisés - + qBittorrent was built with the following libraries: qBittorrent a été conçu à l'aide des bibliothèques logicielles suivantes : - + Copy to clipboard - + Copier dans le presse-papier @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 Le projet qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 Le projet qBittorrent @@ -123,7 +123,7 @@ The old path is invalid: '%1'. - L'ancien chemin est invalide : « %1 ». + L'ancien chemin est invalide : '%1'. @@ -145,7 +145,7 @@ No such file: '%1'. - Aucun fichier de ce type : '%1'. + Fichier introuvable : '%1'. @@ -155,7 +155,7 @@ No such folder: '%1'. - Aucun dossier de ce type : '%1'. + Dossier introuvable : '%1'. @@ -166,14 +166,13 @@ Sauvegarder sous - + Never show again Ne plus afficher - Torrent settings - Paramètres du torrent + Paramètres du torrent @@ -191,12 +190,12 @@ Démarrer le torrent - + Torrent information Informations sur le torrent - + Skip hash check Ne pas vérifier les données du torrent @@ -205,6 +204,11 @@ Use another path for incomplete torrent Utiliser un autre répertoire pour un torrent incomplet + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Condition d'arrêt : - - + + None Aucun - - + + Metadata received Métadonnées reçues - - + + Torrents that have metadata initially will be added as stopped. + Les torrents qui ont initialement des métadonnées seront ajoutés comme arrêtés. + + + + Files checked Fichiers vérifiés - + Add to top of queue Ajouter en haut de la file d'attente - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Lorsque coché, le fichier .torrent ne sera pas supprimé malgré les paramètres de la page « Téléchargements » des Options - + Content layout: Agencement du contenu : - + Original Original - + Create subfolder Créer un sous-dossier - + Don't create subfolder Ne pas créer de sous-dossier - + Info hash v1: Info hash v1 : - + Size: Taille : - + Comment: Commentaire : - + Date: Date : @@ -324,245 +333,182 @@ Se souvenir du dernier répertoire de destination utilisé - + Do not delete .torrent file Ne pas supprimer le fichier .torrent - + Download in sequential order Télécharger en ordre séquentiel - + Download first and last pieces first Télécharger les premiers et derniers morceaux en premier - + Info hash v2: Info hash v2 : - + Select All Tout sélectionner - + Select None Ne rien sélectionner - + Save as .torrent file... Enregistrer le fichier .torrent sous… - + I/O Error Erreur E/S - Invalid torrent - Torrent invalide - - - + Not Available This comment is unavailable Non disponible - + Not Available This date is unavailable Non disponible - + Not available Non disponible - Invalid magnet link - Lien magnet invalide - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Erreur lors du chargement du torrent « %1 ». -Erreur : %2 - - - This magnet link was not recognized - Ce lien magnet n'a pas été reconnu - - - + Magnet link Lien magnet - + Retrieving metadata... Récupération des métadonnées… - - + + Choose save path Choisir un répertoire de destination - Torrent is already present - Le torrent existe déjà - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Le torrent '%1' est déjà dans la liste de transfert. Les trackers n'ont pas été regroupés car il s'agit d'un torrent privé. - - - Torrent is already queued for processing. - Le torrent est déjà en file d'attente de traitement. - - - + No stop condition is set. Aucune condition d'arrêt n'est définie. - + Torrent will stop after metadata is received. Le torrent s'arrêtera après la réception des métadonnées. - - Torrents that have metadata initially aren't affected. - Les torrents qui ont initialement des métadonnées ne sont pas affectés. - - - + Torrent will stop after files are initially checked. Le torrent s'arrêtera après la vérification initiale des fichiers. - + This will also download metadata if it wasn't there initially. Cela téléchargera également les métadonnées si elles n'y étaient pas initialement. - - + + N/A N/D - Magnet link is already queued for processing. - Le lien magnet est déjà en attente de traitement. - - - + %1 (Free space on disk: %2) %1 (Espace libre sur le disque : %2) - + Not available This size is unavailable. Non disponible - + Torrent file (*%1) Fichier torrent (*%1) - + Save as torrent file Enregistrer le fichier torrent sous - + Couldn't export torrent metadata file '%1'. Reason: %2. Impossible d'exporter le fichier de métadonnées du torrent '%1'. Raison : %2. - + Cannot create v2 torrent until its data is fully downloaded. Impossible de créer un torrent v2 tant que ses données ne sont pas entièrement téléchargées. - Cannot download '%1': %2 - Impossible de télécharger '%1': %2 - - - + Filter files... Filtrer les fichiers… - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Le torrent '%1' est déjà dans la liste des transferts. Les trackers ne peuvent pas être regroupés, car il s'agit d'un torrent privé. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Le torrent '%1' est déjà dans la liste des transferts. Voulez-vous fusionner les trackers de la nouvelle source ? - - - + Parsing metadata... Analyse syntaxique des métadonnées... - + Metadata retrieval complete Récuperation des métadonnées terminée - - Failed to load from URL: %1. -Error: %2 - Échec du chargement à partir de l'URL : %1. -Erreur : %2 - - - Download Error - Erreur de téléchargement - AddTorrentManager Downloading torrent... Source: "%1" - + Téléchargement du torrent ... Source : "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Échec de l'ajout du torrent. Source : "%1". Raison : "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Détection d'une tentative d'ajouter un torrent en double. Source : %1. Torrent existant : %2. Résultat : %3 - + Merging of trackers is disabled - + fusion de trackers désactivé - + Trackers cannot be merged because it is a private torrent - + Les trackers ne peuvent pas être fusionnés car le torrent est privé - + Trackers are merged from new source - + Les trackers ont fusionné depuis la nouvelle source @@ -648,72 +594,77 @@ Erreur : %2 Sauter la vérification du hachage - - - Choose save path - Choisir le répertoire de destination + + Torrent share limits + Limites de partage du torrent - - - - - - - Default - Par défaut + + + Choose save path + Choisir le répertoire de destination + + + - Yes - Oui + Default + Par défaut + Yes + Oui + + + + + No Non - + Manual Manuel - + Automatic Automatique - + Original Original - + Create subfolder Créer un sous-dossier - + Don't create subfolder Ne pas créer de sous-dossier - + None Aucun - + Metadata received Métadonnées reçues - + Files checked Fichiers vérifiés @@ -721,734 +672,852 @@ Erreur : %2 AdvancedSettings - - - - + + + + MiB Mio - + Recheck torrents on completion Revérifier les torrents lorsqu'ils sont terminés - - + + ms milliseconds ms - + Setting Paramètre - + Value Value set for this setting Valeur - + (disabled) (désactivé) - + (auto) (automatique) - + + min minutes min - + All addresses Toutes les adresses - + qBittorrent Section Section qBittorrent - - + + Open documentation Ouvrir la documentation - + All IPv4 addresses Toutes les adresses IPv4 - + All IPv6 addresses Toutes les adresses IPv6 - + libtorrent Section Section libtorrent - + Fastresume files Fichiers de reprise rapide - + SQLite database (experimental) Base de données SQLite (expérimental) - + Resume data storage type (requires restart) Type de stockage des données de reprise (redémarrage requis) - + Normal Normale - + Below normal Sous la normale - + Medium Moyenne - + Low Basse - + Very low Très basse - - Process memory priority (Windows >= 8 only) - Priorité mémoire du processus (Windows >= 8 seulement) - - - + Physical memory (RAM) usage limit Limite d’utilisation de la mémoire physique (RAM) - + Asynchronous I/O threads Fils d'E/S asynchrones - + Hashing threads Fils de hachage - + File pool size Taille du pool de fichiers - + Outstanding memory when checking torrents Mémoire en suspens lors de la vérification des torrents : - + Disk cache Cache disque - - - - + + + + s seconds s - + Disk cache expiry interval Intervalle de l'expiration du cache disque - + Disk queue size Taille de la file d’attente du disque - - + + Enable OS cache Activer le cache du système d’exploitation - + Coalesce reads & writes Fusionner les lectures et écritures - + Use piece extent affinity Utiliser l'affinité par extension de morceau - + Send upload piece suggestions Envoyer des suggestions de morceaux de téléversement - - - - + + + + + 0 (disabled) 0 (désactivé) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Intervalle de sauvegarde des données de reprise [0: désactivé] - + Outgoing ports (Min) [0: disabled] - Ports de sortie (Mini) [0: désactivé] + Ports de sortie (Min.) [0: désactivé] - + Outgoing ports (Max) [0: disabled] - Ports de sortie (Maxi) [0: désactivé] + Ports de sortie (Max.) [0: désactivé] - + 0 (permanent lease) 0 (allocation permanente) - + UPnP lease duration [0: permanent lease] Durée de l'allocation UPnP [0: allocation permanente] - + Stop tracker timeout [0: disabled] - Timeout lors de l’arrêt du tracker [0: désactivé] + Délai d'attente lors de l’arrêt du tracker [0: désactivé] - + Notification timeout [0: infinite, -1: system default] Délai de notification [0 : infini, -1 : valeur par défaut] - + Maximum outstanding requests to a single peer Requêtes en suspens maximales vers un seul pair - - - - - + + + + + KiB Kio - + (infinite) (infini) - + (system default) (valeur par défaut) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Cette option est moins efficace sous Linux - + + Process memory priority + Priorité de la mémoire de processus + + + Bdecode depth limit - Limite de profondeur pour Bdecode + Limite de la profondeur pour Bdecode - + Bdecode token limit - Limite de jeton pour Bdecode + Limite de jetons pour Bdecode - + Default Par défaut - + Memory mapped files Fichiers mappés en mémoire - + POSIX-compliant Compatible POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Type d'E/S du disque (redémarrage requis) - - + + Disable OS cache Désactiver le cache du système d’exploitation - + Disk IO read mode Mode de lecture des E/S du disque - + Write-through Double écriture - + Disk IO write mode Mode d'écriture des E/S du disque - + Send buffer watermark Filigrane pour le tampon d'envoi - + Send buffer low watermark Filigrane faible pour le tampon d'envoi - + Send buffer watermark factor Facteur du filigrane pour le tampon d'envoi - + Outgoing connections per second Connexions sortantes par seconde - - + + 0 (system default) 0 (valeur par défaut) - + Socket send buffer size [0: system default] Taille du cache d'envoi au Socket [0: valeur par défaut] - + Socket receive buffer size [0: system default] Taille du cache de réception du Socket [0: valeur par défaut] - + Socket backlog size Taille de la liste des tâches du socket - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Limite de la taille d'un fichier .torrent - + Type of service (ToS) for connections to peers Type de service (ToS) pour les connexions aux pairs - + Prefer TCP Préférer les connexions TCP - + Peer proportional (throttles TCP) Proportionnel par pair (limite les connexions TCP) - + Support internationalized domain name (IDN) Support des noms de domaines internationalisés (IDN) - + Allow multiple connections from the same IP address Permettre des connexions multiples depuis la même adresse IP - + Validate HTTPS tracker certificates Valider les certificats HTTPS des trackers - + Server-side request forgery (SSRF) mitigation Atténuation de la falsification des demandes côté serveur (SSRF) - + Disallow connection to peers on privileged ports Interdire la connexion à des pairs sur des ports privilégiés - + + It appends the text to the window title to help distinguish qBittorent instances + Cela ajoute le texte au titre de la fenêtre pour aider à distinguer les instances de qBittorent + + + + Customize application instance name + Personnaliser le nom de l'instance d'application + + + It controls the internal state update interval which in turn will affect UI updates Ceci contrôle l'intervalle de mise à jour de l'état interne qui, à son tour, affectera les mises à jour de l'IU - + Refresh interval Intervalle d'actualisation - + Resolve peer host names Afficher le nom d'hôte des pairs - + IP address reported to trackers (requires restart) Adresse IP annoncée aux trackers (redémarrage requis) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Réannoncer à tous les trackers lorsque l'IP ou le port a changé - + Enable icons in menus Activer les icônes dans les menus - + Enable port forwarding for embedded tracker Activer la redirection de port pour le tracker intégré - - (Auto detect if empty) + + Enable quarantine for downloaded files + Activer la quarantaine pour les fichiers téléchargés + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Activer Mark-of-the-Web (MOTW) pour les fichiers téléchargés + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Détection automatique si vide) + + + Python executable path (may require restart) + Chemin de l’exécutable Python (peut nécessiter un redémarrage) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec. + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirmer le retrait du tracker de tous les torrents + + + Peer turnover disconnect percentage Pourcentage de déconnexion par roulement de pair - + Peer turnover threshold percentage Pourcentage de seuil de roulement de pair - + Peer turnover disconnect interval Intervalle de déconnexion par roulement de pair - + Resets to default if empty - + Réinitialise aux valeurs par défaut si vide - + DHT bootstrap nodes - + Nœud d’amorçage DHT - + I2P inbound quantity Quantité entrante sur I2P - + I2P outbound quantity Quantité sortante sur I2P - + I2P inbound length Longueur entrante sur I2P - + I2P outbound length Longueur sortante sur I2P - + Display notifications Afficher les notifications - + Display notifications for added torrents Afficher les notifications pour les torrents ajoutés - + Download tracker's favicon Télécharger les favicon des trackers - + Save path history length Enregistrer la longueur de l'historique des répertoires - + Enable speed graphs Activer les graphiques de vitesse - + Fixed slots Emplacements fixes - + Upload rate based Basé sur la vitesse d'envoi - + Upload slots behavior Comportement des emplacements d'envoi - + Round-robin Répartition de charge - + Fastest upload Envoi le plus rapide - + Anti-leech Anti-leech - + Upload choking algorithm Envoyer l'algorithme d'étouffement - + Confirm torrent recheck Confirmer la revérification du torrent - + Confirm removal of all tags Confirmer la suppression de toutes les étiquettes - + Always announce to all trackers in a tier Toujours annoncer à tous les trackers d'un niveau - + Always announce to all tiers Toujours annoncer à tous les niveaux - + Any interface i.e. Any network interface N'importe quelle interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - Algorithme mode mixte %1-TCP + Algorithme du mode mixte %1-TCP - + Resolve peer countries - Retrouver les pays des pairs + Déterminer les pays des pairs - + Network interface Interface réseau - + Optional IP address to bind to Adresse IP optionnelle à laquelle se relier - + Max concurrent HTTP announces - Maximum d'annonces HTTP parallèles + Nombre maximal d'annonces HTTP simultanées - + Enable embedded tracker Activer le tracker intégré - + Embedded tracker port Port du tracker intégré - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 démarré. + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Fonctionnement en mode portable. Dossier de profil détecté automatiquement : %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Indicateur de ligne de commandes redondant détecté : « %1 ». Le mode portable implique une reprise relativement rapide. - + Using config directory: %1 Utilisation du dossier de configuration : %1 - + Torrent name: %1 Nom du torrent : %1 - + Torrent size: %1 Taille du torrent : %1 - + Save path: %1 Répertoire de destination : %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Le torrent a été téléchargé dans %1. - + + Thank you for using qBittorrent. Merci d'utiliser qBittorrent. - + Torrent: %1, sending mail notification Torrent : %1, envoi du courriel de notification - + Add torrent failed - + Échec de l'ajout du torrent - + Couldn't add torrent '%1', reason: %2. - + N'a pas pu ajouter le torrent "%1", raison : %2 + + + + The WebUI administrator username is: %1 + Le nom d'utilisateur de l'administrateur de l'IU Web est : %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Le mot de passe de l'administrateur de l'IU Web n'a pas été défini. Un mot de passe temporaire est fourni pour cette session : %1 + + + + You should set your own password in program preferences. + Vous devriez définir votre propre mot de passe dans les préférences du programme. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + L'interface web est désactivée ! Pour activer l'interface web, éditer le fichier de configuration manuellement. - + Running external program. Torrent: "%1". Command: `%2` Exécution d'un programme externe en cours. Torrent : « %1 ». Commande : `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Échec de l’exécution du programme externe. Torrent : « %1 ». Commande : '%2' - + Torrent "%1" has finished downloading Le téléchargement du torrent « %1 » est terminé - + WebUI will be started shortly after internal preparations. Please wait... L'IU Web sera lancé peu de temps après les préparatifs internes. Veuillez patienter… - - + + Loading torrents... Chargement des torrents en cours… - + E&xit &Quitter - + I/O Error i.e: Input/Output Error Erreur d'E/S - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Erreur : %2 Raison : %2 - Error - Erreur - - - Failed to add torrent: %1 - Échec de l'ajout du torrent : %1 - - - + Torrent added Torrent ajouté - + '%1' was added. e.g: xxx.avi was added. '%1' a été ajouté. - + Download completed - Téléchargement terminé + Téléchargement complété - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Le téléchargement du torrent '%1' est terminé. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 a démarré. ID de processus : %2 - URL download error - Erreur de téléchargement URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Impossible de télécharger le fichier à l'adresse '%1', raison : %2. + + Test email + - Torrent file association - Association aux fichiers torrents + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Le téléchargement du torrent '%1' est terminé. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent n'est pas l'application par défaut pour ouvrir des fichiers torrents ou des liens magnets. -Voulez-vous faire de qBittorrent l'application par défaut pour ceux-ci ? - - - + Information Information - + To fix the error, you may need to edit the config file manually. - + Pour réparer cette erreur, vous aurez peut-être besoin d'éditer le fichier de configuration manuellement. - + To control qBittorrent, access the WebUI at: %1 Pour contrôler qBittorrent, accédez à l’IU Web à : %1 - - The Web UI administrator username is: %1 - Le nom d'utilisateur de l'administrateur de l'IU Web est : %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Le mot de passe administrateur de l'IU Web n'a pas été modifié par rapport à la valeur par défaut : %1 - - - - This is a security risk, please change your password in program preferences. - Ceci est un risque de sécurité, veuillez modifier votre mot de passe dans les préférences du programme. - - - Application failed to start. - Échec du démarrage de l'application. - - - + Exit Quitter - + Recursive download confirmation - Confirmation pour téléchargement récursif + Confirmation pour téléchargement récursif - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Le torrent « %1 » contient des fichiers .torrent, voulez-vous poursuivre avec leurs téléchargements? + Le torrent « %1 » contient des fichiers .torrent, voulez-vous poursuivre avec leurs téléchargements? - + Never - Jamais + Jamais - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Téléchargement récursif du fichier .torrent dans le torrent. Torrent source : « %1 ». Fichier : « %2 » + Téléchargement récursif du fichier .torrent dans le torrent. Torrent source : « %1 ». Fichier : « %2 » - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Échec lors de la définition de la limite d’utilisation de la mémoire physique (RAM). Code d'erreur : %1. Message d'erreur : « %2 » - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Échec lors de la définition de la limite d’utilisation de la mémoire physique (RAM). Taille demandée : %1. Limite du système : %2. Code d’erreur : %3. Message d’erreur : « %4 » - + qBittorrent termination initiated Arrêt de qBittorrent initié - + qBittorrent is shutting down... qBittorrent s'arrête… - + Saving torrent progress... Sauvegarde de l'avancement du torrent. - + qBittorrent is now ready to exit qBittorrent est maintenant prêt à quitter @@ -1597,7 +1637,7 @@ Voulez-vous faire de qBittorrent l'application par défaut pour ceux-ci ? AsyncFileStorage - + Could not create directory '%1'. Impossible de créer le dossier '%1'. @@ -1605,22 +1645,22 @@ Voulez-vous faire de qBittorrent l'application par défaut pour ceux-ci ? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Échec d'authentification à l'API Web. Raison : l'IP est bannie, IP : %1, nom d'utilisateur : %2 - + Your IP address has been banned after too many failed authentication attempts. Votre adresse IP a été bannie après trop de tentatives d'authentification infructueuses. - + WebAPI login success. IP: %1 Authentification à l'API Web réussie. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Échec d'authentification à l'API Web. Raison : identifiants invalides, nombre de tentatives : %1, IP : %2, nom d'utilisateur : %3 @@ -1645,7 +1685,7 @@ Voulez-vous faire de qBittorrent l'application par défaut pour ceux-ci ? Use Smart Episode Filter - Utiliser le filtre d'épisodes intelligent + Utiliser le filtre d'épisode intelligent @@ -1668,12 +1708,12 @@ Voulez-vous faire de qBittorrent l'application par défaut pour ceux-ci ?Priorité : - + Must Not Contain: Ne doit pas contenir : - + Episode Filter: Filtre d'épisode : @@ -1681,7 +1721,7 @@ Voulez-vous faire de qBittorrent l'application par défaut pour ceux-ci ? Smart Episode Filter will check the episode number to prevent downloading of duplicates. Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also support - as a separator) - Le filtre d'épisodes intelligent vérifiera le numéro de l'épisode afin d'éviter le téléchargement de doublons. + Le filtre d'épisode intelligent vérifiera le numéro de l'épisode afin d'éviter le téléchargement de doublons. Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date supportent également - comme séparateur) @@ -1726,263 +1766,263 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date &Exporter... - + Matches articles based on episode filter. Articles correspondants basés sur le filtrage épisode - + Example: Exemple : - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match correspondra aux épisodes 2, 5, 8 et 15-30 et supérieurs de la saison 1 - + Episode filter rules: Règles de filtrage d'épisodes : - + Season number is a mandatory non-zero value Le numéro de saison est une valeur obligatoire différente de zéro - + Filter must end with semicolon Le filtre doit se terminer avec un point-virgule - + Three range types for episodes are supported: Trois types d'intervalles d'épisodes sont pris en charge : - + Single number: <b>1x25;</b> matches episode 25 of season one Nombre simple : <b>1×25;</b> correspond à l'épisode 25 de la saison 1 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Intervalle standard : <b>1×25-40;</b> correspond aux épisodes 25 à 40 de la saison 1 - + Episode number is a mandatory positive value Le numéro d'épisode est une valeur obligatoire positive - + Rules Règles - + Rules (legacy) Règles (héritées) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Intervalle infini : <b>1x25-;</b> correspond aux épisodes 25 et suivants de la saison 1, et tous les épisodes des saisons postérieures - + Last Match: %1 days ago Dernière correspondance : il y a %1 jours - + Last Match: Unknown Dernière correspondance : inconnu - + New rule name Nouveau nom pour la règle - + Please type the name of the new download rule. Veuillez entrer le nom de la nouvelle règle de téléchargement. - - + + Rule name conflict Conflit dans les noms de règle - - + + A rule with this name already exists, please choose another name. Une règle avec ce nom existe déjà, veuillez en choisir un autre. - + Are you sure you want to remove the download rule named '%1'? Êtes vous certain de vouloir supprimer la règle de téléchargement '%1' - + Are you sure you want to remove the selected download rules? Voulez-vous vraiment supprimer les règles sélectionnées ? - + Rule deletion confirmation Confirmation de la suppression - + Invalid action Action invalide - + The list is empty, there is nothing to export. La liste est vide, il n'y a rien à exporter. - + Export RSS rules Exporter les règles RSS - + I/O Error Erreur d'E/S - + Failed to create the destination file. Reason: %1 Erreur lors de la création du fichier de destination. Raison : %1 - + Import RSS rules Importer des règles RSS - + Failed to import the selected rules file. Reason: %1 Impossible d'importer le fichier sélectionné des règles. Raison : %1 - + Add new rule... Ajouter une nouvelle règle… - + Delete rule Supprimer la règle - + Rename rule... Renommer la règle… - + Delete selected rules Supprimer les règles sélectionnées - + Clear downloaded episodes... Effacer les épisodes téléchargés… - + Rule renaming Renommage de la règle - + Please type the new rule name Veuillez enter le nouveau nom pour la règle - + Clear downloaded episodes Effacer les épisodes téléchargés - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Êtes-vous sûr de vouloir effacer la liste des épisodes téléchargés pour la règle sélectionnée ? - + Regex mode: use Perl-compatible regular expressions Mode Regex : utiliser des expressions régulières compatibles à celles de Perl - - + + Position %1: %2 Position %1 : %2 - + Wildcard mode: you can use Mode caractère de remplacement : vous pouvez utiliser - - + + Import error Erreur d'importation - + Failed to read the file. %1 Échec de lecture du fichier : %1 - + ? to match any single character ? pour correspondre à n'importe quel caractère - + * to match zero or more of any characters * pour correspondre à aucun caractère ou davantage - + Whitespaces count as AND operators (all words, any order) Les espaces comptent comme des opérateurs ET (tous les mots, dans n'importe quel ordre) - + | is used as OR operator | est utilisé comme opérateur OU - + If word order is important use * instead of whitespace. Si l'ordre des mots est important, utilisez * au lieu d'un espace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Une expression avec une clause vide %1 (p. ex. %2) - + will match all articles. va correspondre à tous les articles. - + will exclude all articles. va exclure tous les articles. @@ -2024,53 +2064,58 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Impossible de créer le dossier de reprise du torrent : « %1 » - + Cannot parse resume data: invalid format Impossible d'analyser les données de reprise : format invalide - - + + Cannot parse torrent info: %1 Impossible d'analyser l'information du torrent : %1 - + Cannot parse torrent info: invalid format Impossible d'analyser l'information du torrent : format invalide - + + Mismatching info-hash detected in resume data + Info hash incompatible détecté dans les données de reprise + + + Couldn't save torrent metadata to '%1'. Error: %2. Impossible d'enregistrer les métadonnées du torrent dans '%1'. Erreur : %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Impossible d'enregistrer les données de reprise du torrent vers '%1'. Erreur : %2. - + Couldn't load torrents queue: %1 Impossible de charger la file d'attente des torrents : %1 - + Cannot parse resume data: %1 Impossible d'analyser les données de reprise : %1 - + Resume data is invalid: neither metadata nor info-hash was found Les données de reprise sont invalides : ni les métadonnées ni l'info-hash n'ont été trouvés - + Couldn't save data to '%1'. Error: %2 Impossible d’enregistrer les données dans '%1'. Erreur : %2 @@ -2078,38 +2123,38 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date BitTorrent::DBResumeDataStorage - + Not found. Introuvable. - + Couldn't load resume data of torrent '%1'. Error: %2 Impossible de charger les données de reprise du torrent « %1 ». Erreur : %2 - - + + Database is corrupted. La base de données est corrompue. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Impossible d'activer le mode de journalisation Write-Ahead Logging (WAL). Erreur : %1. - + Couldn't obtain query result. Impossible d'obtenir le résultat de la requête. - + WAL mode is probably unsupported due to filesystem limitations. Le mode WAL n'est probablement pas pris en charge en raison des limitations du système de fichiers. - + Couldn't begin transaction. Error: %1 Début de transaction impossible. Erreur: %1 @@ -2117,22 +2162,22 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Impossible d'enregistrer les métadonnées du torrent. Erreur : %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Impossible de stocker les données de reprise pour le torrent « %1 ». Erreur : %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Impossible de supprimer les données de reprise du torrent « %1 ». Erreur : %2 - + Couldn't store torrents queue positions. Error: %1 Impossible de stocker les positions de la file d’attente des torrents. Erreur : %1 @@ -2140,586 +2185,620 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Prise en charge de la table de hachage distribuée (DHT) : %1 - - - - - - - - - + + + + + + + + + ON ACTIVÉE - - - - - - - - - + + + + + + + + + OFF DÉSACTIVÉE - - + + Local Peer Discovery support: %1 Prise en charge de la découverte de pairs sur le réseau local : %1 - + Restart is required to toggle Peer Exchange (PeX) support Un redémarrage est nécessaire pour basculer la prise en charge des échanges entre pairs (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Échec de la reprise du torrent. Torrent : « %1 ». Raison : « %2 » - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Échec de la reprise du torrent : un ID de torrent incohérent a été détecté. Torrent : « %1 » - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Données incohérentes détectées : la catégorie est absente du fichier de configuration. La catégorie sera récupérée, mais ses paramètres seront réinitialisés par défaut. Torrent : « %1 ». Catégorie : « %2 » - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Données incohérentes détectées : catégorie invalide. Torrent : « %1 ». Catégorie : « %2 » - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Incompatibilité détectée entre les répertoires de destination de la catégorie récupérée et le répertoire de destination actuel du torrent. Le torrent est maintenant passé en mode manuel. Torrent : « %1 ». Catégorie : « %2 » - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Données incohérentes détectées : l'étiquette est manquante dans le fichier de configuration. L'étiquette sera restaurée. Torrent : « %1 ». Étiquette : « %2 » - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Données incohérentes détectées : étiquette invalide. Torrent : « %1 ». Étiquette : « %2 » - + System wake-up event detected. Re-announcing to all the trackers... Événement de réveil du système détecté. Réannonce à tous les trackers en cours… - + Peer ID: "%1" ID du pair : « %1 » - + HTTP User-Agent: "%1" Agent utilisateur HTTP : « %1 » - + Peer Exchange (PeX) support: %1 Prise en charge des échanges entre pairs (PeX) : %1 - - + + Anonymous mode: %1 Mode anonyme : %1 - - + + Encryption support: %1 Prise en charge du chiffrement : %1 - - + + FORCED FORCÉE - + Could not find GUID of network interface. Interface: "%1" Impossible de trouver le GUID de l’interface réseau. Interface : « %1 » - + Trying to listen on the following list of IP addresses: "%1" Tentative d’écoute sur la liste d’adresses IP suivante : « %1 » - + Torrent reached the share ratio limit. Le torrent a atteint la limite du ratio de partage. - - - + Torrent: "%1". Torrent : « %1 ». - - - Removed torrent. - Torrent retiré. + Torrent retiré. - - - Removed torrent and deleted its content. - Torrent retiré et son contenu supprimé. + Torrent retiré et son contenu supprimé. - - - Torrent paused. - Torrent mis en pause. + Torrent mis en pause. - - - + Super seeding enabled. Super partage activé. - + Torrent reached the seeding time limit. Le torrent a atteint la limite de temps de partage. - + Torrent reached the inactive seeding time limit. Le torrent a atteint la limite de temps de partage inactif. - + Failed to load torrent. Reason: "%1" Échec du chargement du torrent. Raison : « %1 » - + I2P error. Message: "%1". + Erreur I2P. Message : "%1". + + + + UPnP/NAT-PMP support: ON + Prise en charge UPnP/NAT-PMP : ACTIVÉE + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Téléchargement du torrent en cours, veuillez patienter… Source : « %1 » + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Échec du chargement du torrent. Source : « %1 ». Raison : « %2 » + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Détection d’une tentative d’ajout d’un torrent doublon. La fusion des trackers est désactivée. Torrent : %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Détection d’une tentative d’ajout d’un torrent doublon. Les trackers ne peuvent pas être fusionnés, car il s’agit d’un torrent privé. Torrent : %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Détection d’une tentative d’ajout d’un torrent doublon. Les trackers sont fusionnés à partir d’une nouvelle source. Torrent : %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Prise en charge UPnP/NAT-PMP : ACTIVÉE + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Prise en charge UPnP/NAT-PMP : DÉSACTIVÉE + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Échec de l’exportation du torrent. Torrent : « %1 ». Destination : « %2 ». Raison : « %3 » + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Annulation de l’enregistrement des données de reprise. Nombre de torrents en suspens : %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + fusion de trackers désactivé + + + + Trackers cannot be merged because it is a private torrent + Les trackers ne peuvent pas être fusionnés car le torrent est privé - System network status changed to %1 - e.g: System network status changed to ONLINE - L'état du réseau système a été remplacé par %1 + + Trackers are merged from new source + Les trackers ont fusionné depuis la nouvelle source - ONLINE - EN LIGNE + + UPnP/NAT-PMP support: OFF + Prise en charge UPnP/NAT-PMP : DÉSACTIVÉE - OFFLINE - HORS LIGNE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Échec de l’exportation du torrent. Torrent : « %1 ». Destination : « %2 ». Raison : « %3 » - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - La configuration réseau de %1 a changé, actualisation de la liaison de session en cours... + + Aborted saving resume data. Number of outstanding torrents: %1 + Annulation de l’enregistrement des données de reprise. Nombre de torrents en suspens : %1 - + The configured network address is invalid. Address: "%1" L’adresse réseau configurée est invalide. Adresse : « %1 » - - + + Failed to find the configured network address to listen on. Address: "%1" Échec de la recherche de l’adresse réseau configurée pour l’écoute. Adresse : « %1 » - + The configured network interface is invalid. Interface: "%1" L’interface réseau configurée est invalide. Interface : « %1 » - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Adresse IP invalide rejetée lors de l’application de la liste des adresses IP bannies. IP : « %1 » - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Tracker ajouté au torrent. Torrent : « %1 ». Tracker : « %2 » - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Tracker retiré du torrent. Torrent : « %1 ». Tracker : « %2 » - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Ajout de l'URL de la source au torrent. Torrent : « %1 ». URL : « %2 » - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Retrait de l'URL de la source au torrent. Torrent : « %1 ». URL : « %2 » - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent mis en pause. Torrent : « %1 » + Torrent mis en pause. Torrent : « %1 » - + Torrent resumed. Torrent: "%1" Reprise du torrent. Torrent : « %1 » - + Torrent download finished. Torrent: "%1" Téléchargement du torrent terminé. Torrent : « %1 » - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Déplacement du torrent annulé. Torrent : « %1 ». Source : « %2 ». Destination : « %3 » - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Échec de la mise en file d’attente du déplacement du torrent. Torrent : « %1 ». Source : « %2 ». Destination : « %3 ». Raison : le torrent est actuellement en cours de déplacement vers la destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Échec de la mise en file d’attente du déplacement du torrent. Torrent : « %1 ». Source : « %2 ». Destination : « %3 ». Raison : les deux chemins pointent vers le même emplacement - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Mise en file d’attente du déplacement du torrent. Torrent : « %1 ». Source : « %2 ». Destination : « %3 ». - + Start moving torrent. Torrent: "%1". Destination: "%2" Démarrer le déplacement du torrent. Torrent : « %1 ». Destination : « %2 » - + Failed to save Categories configuration. File: "%1". Error: "%2" Échec de l’enregistrement de la configuration des catégories. Fichier : « %1 ». Erreur : « %2 » - + Failed to parse Categories configuration. File: "%1". Error: "%2" Échec de l’analyse de la configuration des catégories. Fichier : « %1 ». Erreur : « %2 » - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Téléchargement récursif du fichier .torrent dans le torrent. Torrent source : « %1 ». Fichier : « %2 » - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Impossible de charger le fichier .torrent dans le torrent. Torrent source : « %1 ». Fichier : « %2 ». Erreur : « %3 » - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Analyse réussie du fichier de filtre IP. Nombre de règles appliquées : %1 - + Failed to parse the IP filter file Échec de l’analyse du fichier de filtre IP - + Restored torrent. Torrent: "%1" Torrent restauré. Torrent : « %1 » - + Added new torrent. Torrent: "%1" Ajout d’un nouveau torrent. Torrent : « %1 » - + Torrent errored. Torrent: "%1". Error: "%2" Torrent erroné. Torrent : « %1 ». Erreur : « %2 » - - Removed torrent. Torrent: "%1" - Torrent retiré. Torrent : « %1 » + Torrent retiré. Torrent : « %1 » - Removed torrent and deleted its content. Torrent: "%1" - Torrent retiré et son contenu supprimé. Torrent : « %1 » + Torrent retiré et son contenu supprimé. Torrent : « %1 » + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Des paramètres SSL dans le torrent sont manquants. Torrent : « %1 ». Message : « %2 » - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Alerte d’erreur d’un fichier. Torrent : « %1 ». Fichier : « %2 ». Raison : « %3 » - + UPnP/NAT-PMP port mapping failed. Message: "%1" Échec du mappage du port UPnP/NAT-PMP. Message : « %1 » - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Le mappage du port UPnP/NAT-PMP a réussi. Message : « %1 » - + IP filter this peer was blocked. Reason: IP filter. Filtre IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). port filtré (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). port privilégié (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + La session BitTorrent a rencontré une erreur sérieuse. Raison : "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Erreur du proxy SOCKS5. Adresse : %1. Message : « %2 ». - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restrictions du mode mixte - + Failed to load Categories. %1 Échec du chargement des Catégories : %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Échec du chargement de la configuration des Catégories. Fichier : « %1 ». Erreur : « Format de données invalide » - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent supprimé, mais la suppression de son contenu et/ou de ses fichiers .parts a échoué. Torrent : « %1 ». Erreur : « %2 » + Torrent supprimé, mais la suppression de son contenu et/ou de ses fichiers .parts a échoué. Torrent : « %1 ». Erreur : « %2 » - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 est désactivé - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 est désactivé - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Échec de la recherche DNS de l’URL de la source. Torrent : « %1 ». URL : « %2 ». Erreur : « %3 » + Échec de la recherche DNS de l’URL de la source. Torrent : « %1 ». URL : « %2 ». Erreur : « %3 » - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Message d’erreur reçu de l’URL de la source. Torrent : « %1 ». URL : « %2 ». Message : « %3 » - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Écoute réussie sur l’IP. IP : « %1 ». Port : « %2/%3 » - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Échec de l’écoute sur l’IP. IP : « %1 ». Port : « %2/%3 ». Raison : « %4 » - + Detected external IP. IP: "%1" IP externe détectée. IP : « %1 » - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Erreur : la file d’attente d’alertes internes est pleine et des alertes sont supprimées, vous pourriez constater une dégradation des performances. Type d'alerte supprimée : « %1 ». Message : « %2 » - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Déplacement du torrent réussi. Torrent : « %1 ». Destination : « %2 » - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Échec du déplacement du torrent. Torrent : « %1 ». Source : « %2 ». Destination : « %3 ». Raison : « %4 » - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - Opération annulée - - - - - Create new torrent file failed. Reason: %1. - Échec de la création d'un nouveau fichier torrent. Raison : %1. + + Failed to start seeding. + Échec au démarrage du partage. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Opération annulée + Opération annulée + + Create new torrent file failed. Reason: %1. - Échec de la création d'un nouveau fichier torrent. Raison : %1. + Échec de la création d'un nouveau fichier torrent. Raison : %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Échec de l'ajout du pair « %1 » au torrent « %2 ». Raison : %3 - + Peer "%1" is added to torrent "%2" Le pair « %1 » est ajouté au torrent « %2 » - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Données inattendues détectées. Torrent : %1. Données : total_recherché=%2 total_recherché_terminé=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Échec de l'écriture dans le fichier. Raison : « %1 ». Le torrent est maintenant en mode « envoi seulement ». - + Download first and last piece first: %1, torrent: '%2' Télécharger d'abord le premier et le dernier morceau : %1, torrent : %2 - + On Activé - + Off Désactivé - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Échec du rechargement du torrent. Torrent : « %1 ». Raison : « %2 » + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Échec de la génération des données de reprise. Torrent : « %1 ». Raison : « %2 » - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Échec de la restauration du torrent. Les fichiers ont probablement été déplacés ou le stockage n’est pas accessible. Torrent : « %1 ». Raison : « %2 » - + Missing metadata Métadonnées manquantes - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Renommage du fichier échoué. Torrent : « %1 », fichier : « %2 », raison : « %3 » - + Performance alert: %1. More info: %2 Alerte de performance : %1. Plus d’informations : %2 @@ -2740,184 +2819,198 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Le paramètre '%1' doit suivre la syntaxe '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Le paramètre '%1' doit suivre la syntaxe '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Nombre entier attendu dans la variable d'environnement '%1', mais '%2' reçu - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Le paramètre '%1' doit suivre la syntaxe '%1=%2' + Le paramètre '%1' doit suivre la syntaxe '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' %1 attendu dans la variable d'environnement '%2', mais '%3' reçu - - + + %1 must specify a valid port (1 to 65535). %1 doit spécifier un port valide (1 à 65535). - + Usage: Utilisation : - + [options] [(<filename> | <url>)...] [options] [(<filename> | <url>)…] - + Options: Options - + Display program version and exit Afficher la version du programme et quitter - + Display this help message and exit Afficher ce message d'aide et quitter - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Le paramètre '%1' doit suivre la syntaxe '%1=%2' + + + + Confirm the legal notice + Confirmer les mentions légales + + + + port port - - Change the Web UI port + + Change the WebUI port Changer le port de l'IU Web - + Change the torrenting port Changer le port des torrents - + Disable splash screen Désactiver l'écran de démarrage - + Run in daemon-mode (background) - Exécuter en tâche de fond + Exécuter en mode daemon (arrière-plan) - + dir Use appropriate short form or abbreviation of "directory" dossier - + Store configuration files in <dir> Stocker les fichiers de configuration sous <dir> - - + + name nom - + Store configuration files in directories qBittorrent_<name> Stocker les fichiers de configuration dans les répertoires qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hacke les fichiers fastresume de libtorrent et rend les chemins des fichiers relatifs au répertoire du profil - + files or URLs fichiers ou URLs - + Download the torrents passed by the user Télécharger les torrents transmis par l'utilisateur - + Options when adding new torrents: Options lors de l'ajout d'un nouveau torrent : - + path chemin - + Torrent save path Répertoire de destination du torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Ajouter les torrents comme démarrés ou mis en pause + Ajouter les torrents comme démarrés ou mis en pause - + Skip hash check Sauter la vérification du hachage - + Assign torrents to category. If the category doesn't exist, it will be created. Affecter des torrents à la catégorie. Si la catégorie n'existe pas, elle sera créée. - + Download files in sequential order Télécharger les fichiers en ordre séquentiel - + Download first and last pieces first Télécharger les premiers et derniers morceaux en premier - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Préciser si la fenêtre « Ajouter un nouveau torrent » s'ouvre lors de l'ajout d'un torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Les valeurs des options peuvent être renseignées par les variables d'environnement. Pour une option nommée 'parameter-name', le nom de la variable d'environnement est 'QBT_PARAMETER_NAME' (en majuscules, en remplaçant '-' par '_'). Pour renseigner une valeur sentinelle, réglez la variable sur '1' ou 'TRUE'. Par exemple, pour désactiver l'écran d’accueil : - + Command line parameters take precedence over environment variables Les paramètres de la ligne de commande ont priorité sur les variables d'environnement - + Help Aide @@ -2925,17 +3018,17 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date CategoryFilterModel - + Categories Catégories - + All Toutes - + Uncategorized Sans catégorie @@ -2969,13 +3062,21 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date - Resume torrents - Reprendre les torrents + Start torrents + + Stop torrents + + + + Resume torrents + Reprendre les torrents + + Pause torrents - Mettre les torrents en pause + Mettre les torrents en pause @@ -2986,15 +3087,20 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date ColorWidget - + Edit... Éditer… - + Reset Réinitialiser + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date CustomThemeSource - + Failed to load custom theme style sheet. %1 Échec du chargement de la feuille de style du thème personnalisé. %1 - + Failed to load custom theme colors. %1 Échec du chargement des couleurs du thème personnalisé. %1 @@ -3048,7 +3154,7 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date DefaultThemeSource - + Failed to load default theme colors. %1 Échec du chargement des couleurs du thème par défaut. %1 @@ -3067,23 +3173,27 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date + Also remove the content files + + + Also permanently delete the files - Supprimer également les fichiers de manière définitive + Supprimer également les fichiers de manière définitive - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Voulez-vous vraiment retirer '%1' de la liste des transferts ? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Êtes-vous sûr de vouloir retirer ces %1 torrents de la liste des transferts ? - + Remove Retirer @@ -3096,12 +3206,12 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date Télécharger depuis des URLs - + Add torrent links Ajouter des liens torrents - + One link per line (HTTP links, Magnet links and info-hashes are supported) Un lien par ligne (les liens HTTP, les liens magnet et les info-hashes sont supportés) @@ -3111,12 +3221,12 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date Télécharger - + No URL entered Aucune URL saisie - + Please type at least one URL. Veuillez saisir au moins une URL. @@ -3275,64 +3385,91 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date Erreur d'analyse : le fichier de filtrage n'est pas un fichier P2B PeerGuardian valide. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Téléchargement du torrent ... Source : "%1" - Trackers cannot be merged because it is a private torrent - + Les trackers ne peuvent pas être fusionnés car le torrent est privé - + Torrent is already present - Le torrent existe déjà + Le torrent existe déjà + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Le torrent '%1' est déjà dans la liste des transferts. Voulez-vous fusionner les trackers de la nouvelle source ? + Le torrent '%1' est déjà dans la liste des transferts. Voulez-vous fusionner les trackers de la nouvelle source ? GeoIPDatabase - - + + Unsupported database file size. Taille du ficher de base de données non supporté. - + Metadata error: '%1' entry not found. Erreur des métadonnées : '%1' non trouvé. - + Metadata error: '%1' entry has invalid type. Erreur des métadonnées : le type de '%1' est invalide. - + Unsupported database version: %1.%2 Version de base de données non supportée : %1.%2 - + Unsupported IP version: %1 Version IP non supportée : %1 - + Unsupported record size: %1 Taille du registre non supportée : %1 - + Database corrupted: no data section found. Base de données corrompue : section data introuvable. @@ -3340,17 +3477,17 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Taille de requête HTTP trop grande, fermeture du socket. Limite: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Mauvaise méthode de requête HTTP, fermeture du socket. IP : %1. Méthode : « %2 » - + Bad Http request, closing socket. IP: %1 Mauvaise requête HTTP, fermeture du socket. IP : %1 @@ -3391,36 +3528,64 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date IconWidget - + Browse... Parcourir… - + Reset Réinitialiser - + Select icon Sélectionner une icône - + Supported image files Formats d'image supportés + + LegalNotice + + + Legal Notice + Information légale + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent est un logiciel de partage de fichiers. Lorsque vous ajoutez un torrent, ses données sont mises à la disposition des autres pour leur envoyer. Tout contenu que vous partagez est de votre unique responsabilité. + + + + No further notices will be issued. + Ce message d'avertissement ne sera plus affiché. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Si vous avez lu les mentions légales, vous pouvez utiliser l'option de ligne de commande `--confirm-legal-notice` pour supprimer ce message. + + + + Press 'Enter' key to continue... + Appuyez sur la touche « Entrée » pour continuer... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 a été bloqué. Raison : %2. - + %1 was banned 0.0.0.0 was banned %1 a été banni @@ -3429,91 +3594,62 @@ Les formats supportés : S01E01, 1x1, 2017.12.31 et 31.12.2017 (les formats date Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 est un paramètre de ligne de commande inconnu. - - + + %1 must be the single command line parameter. %1 doit être le paramètre de ligne de commande unique. - - You cannot use %1: qBittorrent is already running for this user. - Vous ne pouvez pas utiliser% 1: qBittorrent est déjà en cours d'exécution pour cet utilisateur. - - - + Run application with -h option to read about command line parameters. Exécuter le programme avec l'option -h pour afficher les paramètres de ligne de commande. - + Bad command line Mauvaise ligne de commande - + Bad command line: Mauvaise ligne de commande : - + An unrecoverable error occurred. - + Une erreur irrécupérable a été rencontrée. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Information légale - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent est un logiciel de partage de fichiers. Lorsque vous ajoutez un torrent, ses données sont mises à la disposition des autres pour leur envoyer. Tout contenu que vous partagez est de votre unique responsabilité. - - - - No further notices will be issued. - Ce message d'avertissement ne sera plus affiché. + qBittorrent a rencontré une erreur irrécupérable. - - Press %1 key to accept and continue... - Appuyez sur la touche %1 pour accepter et continuer… + + You cannot use %1: qBittorrent is already running. + Vous ne pouvez pas utiliser %1 : qBittorrent est déjà en cours d'exécution. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent est un logiciel de partage de fichiers. Lors de l'ajout d'un torrent, les données que vous téléchargez sont mises à disposition des autres utilisateurs. Vous êtes responsable du contenu que vous partagez. - -Ce message d'avertissement ne sera plus affiché. - - - - Legal notice - Information légale + + Another qBittorrent instance is already running. + Une autre instance de qBittorrent est déjà en cours d'exécution. - - Cancel - Annuler + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Instance qBittorrent inattendue trouvée. Fermeture de cette instance. ID de processus actuel : %1. - - I Agree - J'accepte + + Error when daemonizing. Reason: "%1". Error code: %2. + Erreur lors de la daemonisation. Raison : « %1 ». Code d'erreur : %2. @@ -3524,621 +3660,706 @@ Ce message d'avertissement ne sera plus affiché. &Édition - + &Tools Ou&tils - + &File &Fichier - + &Help &Aide - + On Downloads &Done Action lorsque les téléchargements sont &terminés - + &View A&ffichage - + &Options... &Options... - &Resume - &Démarrer + &Démarrer - + &Remove &Retirer - + Torrent &Creator &Créateur de torrent - - + + Alternative Speed Limits Limites de vitesse alternatives - + &Top Toolbar Barre d'ou&tils - + Display Top Toolbar Afficher la barre d'outils - + Status &Bar &Barre d'état - + Filters Sidebar Barre latérale des filtres - + S&peed in Title Bar &Vitesse dans le titre de la fenêtre - + Show Transfer Speed in Title Bar Afficher la vitesse dans le titre de la fenêtre - + &RSS Reader Lecteur &RSS - + Search &Engine &Moteur de recherche - + L&ock qBittorrent &Verrouiller qBittorrent - + Do&nate! Faire un do&n ! - + + Sh&utdown System + + + + &Do nothing &Ne rien faire - + Close Window Fermer la fenêtre - R&esume All - Tout Dé&marrer + Tout Dé&marrer - + Manage Cookies... Gérer les cookies… - + Manage stored network cookies Gérer les cookies réseau stockées - + Normal Messages Messages normaux - + Information Messages Messages d'information - + Warning Messages Messages d'avertissement - + Critical Messages Messages critiques - + &Log &Journal - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Définir les limites de vitesse globale… - + Bottom of Queue Bas de la file d'attente - + Move to the bottom of the queue Déplacer au bas de la file d’attente - + Top of Queue Haut de la file d'attente - + Move to the top of the queue Déplacer au haut de la file d'attente - + Move Down Queue Descendre dans la file d’attente - + Move down in the queue Descendre dans la file d'attente - + Move Up Queue Monter dans la file d’attente - + Move up in the queue Monter dans la file d'attente - + &Exit qBittorrent &Quitter qBittorrent - + &Suspend System &Mettre en veille le système - + &Hibernate System &Mettre en veille prolongée le système - S&hutdown System - É&teindre le système + É&teindre le système - + &Statistics &Statistiques - + Check for Updates Vérifier les mises à jour - + Check for Program Updates Vérifier les mises à jour du programm - + &About &À propos - &Pause - Mettre en &pause + Mettre en &pause - P&ause All - Tout &mettre en pause + Tout &mettre en pause - + &Add Torrent File... &Ajouter un fichier torrent… - + Open Ouvrir - + E&xit &Quitter - + Open URL Ouvrir URL - + &Documentation &Documentation - + Lock Verrouiller - - - + + + Show Afficher - + Check for program updates Vérifier la disponibilité de mises à jour du logiciel - + Add Torrent &Link... Ajouter &lien vers un torrent… - + If you like qBittorrent, please donate! Si vous aimez qBittorrent, faites un don ! - - + + Execution Log Journal d'exécution - + Clear the password Effacer le mot de passe - + &Set Password &Définir le mot de pass - + Preferences Préférences - + &Clear Password &Supprimer le mot de pass - + Transfers Transferts - - + + qBittorrent is minimized to tray qBittorrent est réduit dans la barre des tâches - - - + + + This behavior can be changed in the settings. You won't be reminded again. Ce comportement peut être modifié dans les réglages. Il n'y aura plus de rappel. - + Icons Only Icônes seulement - + Text Only Texte seulement - + Text Alongside Icons Texte à côté des Icônes - + Text Under Icons Texte sous les Icônes - + Follow System Style Suivre le style du système - - + + UI lock password Mot de passe de verrouillage - - + + Please type the UI lock password: Veuillez entrer le mot de passe de verrouillage : - + Are you sure you want to clear the password? Êtes vous sûr de vouloir effacer le mot de passe ? - + Use regular expressions Utiliser les expressions régulières - - Search - Recherche + + + Search Engine + Moteur de recherche - - Transfers (%1) - Transferts (%1) + + Search has failed + La recherche a échoué - Recursive download confirmation - Confirmation pour téléchargement récursif + + Search has finished + - Never - Jamais + + Search + Recherche - + + Transfers (%1) + Transferts (%1) + + + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent vient d'être mis à jour et doit être redémarré pour que les changements soient pris en compte. - + qBittorrent is closed to tray qBittorrent est fermé dans la barre des tâches - + Some files are currently transferring. Certains fichiers sont en cours de transfert. - + Are you sure you want to quit qBittorrent? Êtes-vous sûr de vouloir quitter qBittorrent ? - + &No &Non - + &Yes &Oui - + &Always Yes &Oui, toujours - + Options saved. Options enregistrées. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [R : %1, E : %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime L'environnement d'exécution Python est manquant - + qBittorrent Update Available Mise à jour de qBittorrent disponible - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python est nécessaire afin d'utiliser le moteur de recherche mais il ne semble pas être installé. Voulez-vous l'installer maintenant ? - + Python is required to use the search engine but it does not seem to be installed. Python est nécessaire afin d'utiliser le moteur de recherche mais il ne semble pas être installé. - - + + Old Python Runtime L'environnement d'exécution Python est obsolète - + A new version is available. Une nouvelle version est disponible. - + Do you want to download %1? Voulez-vous télécharger %1 ? - + Open changelog... Ouvrir le journal des modifications… - + No updates available. You are already using the latest version. Pas de mises à jour disponibles. Vous utilisez déjà la dernière version. - + &Check for Updates &Vérifier les mises à jour - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Votre version de Python (%1) est obsolète. Configuration minimale requise : %2. Voulez-vous installer une version plus récente maintenant ? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Votre version de Python (%1) est obsolète. Veuillez la mettre à niveau à la dernière version pour que les moteurs de recherche fonctionnent. Configuration minimale requise : %2. - + + Paused + En pause + + + Checking for Updates... Vérification des mises à jour… - + Already checking for program updates in the background Recherche de mises à jour déjà en cours en tâche de fond - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Erreur de téléchargement - Python setup could not be downloaded, reason: %1. Please install it manually. - L’installateur Python ne peut pas être téléchargé pour la raison suivante : %1. + L’installateur Python ne peut pas être téléchargé pour la raison suivante : %1. Veuillez l’installer manuellement. - - + + Invalid password Mot de passe invalide - + Filter torrents... Filtrer les torrents… - + Filter by: Filtrer par: - + The password must be at least 3 characters long Le mot de passe doit comporter au moins 3 caractères - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Le torrent « %1 » contient des fichiers .torrent, voulez-vous poursuivre avec leurs téléchargements? - - - + The password is invalid Le mot de passe fourni est invalide - + DL speed: %1 e.g: Download speed: 10 KiB/s Vitesse de réception : %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Vitesse d'envoi : %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [R : %1, E : %2] qBittorrent %3 - - - + Hide Cacher - + Exiting qBittorrent Fermeture de qBittorrent - + Open Torrent Files Ouvrir fichiers torrent - + Torrent Files Fichiers torrent @@ -4199,133 +4420,133 @@ Veuillez l’installer manuellement. Net::DownloadHandlerImpl - - + + I/O Error: %1 Erreur d'E/S : %1 - + The file size (%1) exceeds the download limit (%2) La taille du fichier (%1) dépasse la limite de téléchargement (%2) - + Exceeded max redirections (%1) Nombre maximal de redirections dépassé (%1) - + Redirected to magnet URI Redirigé vers l'URI du magnet - + The remote host name was not found (invalid hostname) Le nom d'hôte distant est introuvable (nom d'hôte invalide) - + The operation was canceled L'opération a été annulée - + The remote server closed the connection prematurely, before the entire reply was received and processed Le serveur distant a fermé la connexion prématurément, avant que l'intégralité de la réponse n'ait été reçue et traitée - + The connection to the remote server timed out La connexion au serveur distant a expiré - + SSL/TLS handshake failed Échec de l'établissement d'une liaison SSL/TLS - + The remote server refused the connection Le serveur distant a refusé la connexion - + The connection to the proxy server was refused La connexion au serveur proxy a été refusée - + The proxy server closed the connection prematurely Le serveur proxy a fermé la connexion prématurément - + The proxy host name was not found Le nom d'hôte du proxy est introuvable - + The connection to the proxy timed out or the proxy did not reply in time to the request sent La connexion au proxy a expiré ou le proxy n'a pas répondu à temps à la requête envoyée - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Le proxy requiert une authentification afin d'honorer la requête, mais n'a accepté aucun identifiant proposé - + The access to the remote content was denied (401) L'accès au contenu distant a été refusé (401) - + The operation requested on the remote content is not permitted L'opération demandée sur le contenu distant n'est pas autorisée - + The remote content was not found at the server (404) Le contenu distant n'a pas été trouvé sur le serveur (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Le serveur distant exige une authentification afin de distribuer le contenu, mais les identifiants fournis n'ont pas été acceptés - + The Network Access API cannot honor the request because the protocol is not known L'API d'accès réseau ne peut pas honorer la requête car le protocole n'est pas connu - + The requested operation is invalid for this protocol L'opération demandée est invalide pour ce protocole - + An unknown network-related error was detected Une erreur inconnue relative au réseau a été détectée - + An unknown proxy-related error was detected Une erreur inconnue relative au proxy a été détectée - + An unknown error related to the remote content was detected Une erreur inconnue relative au contenu distant a été détectée - + A breakdown in protocol was detected Une rupture de protocole a été détectée - + Unknown error Erreur inconnue @@ -4333,7 +4554,12 @@ Veuillez l’installer manuellement. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Erreur SSL ignorée, URL : « %1 », erreurs : « %2 » @@ -5386,7 +5612,7 @@ Veuillez l’installer manuellement. Vietnam - Vietnam + Viêt Nam @@ -5705,294 +5931,307 @@ Veuillez l’installer manuellement. BitTorrent - + RSS RSS - Web UI - IU Web + IU Web - + Advanced Avancées - + Customize UI Theme... Personnaliser le thème de l'interface… - + Transfer List Liste des transferts - + Confirm when deleting torrents Confirmer la suppression des torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - Affiche une boîte de dialogue de confirmation lors de la pause/reprise de tous les torrents + Affiche une boîte de dialogue de confirmation lors de la pause/reprise de tous les torrents - Confirm "Pause/Resume all" actions - Confirmer les actions "Suspendre/Reprendre tout" + Confirmer les actions "Suspendre/Reprendre tout" - + Use alternating row colors In table elements, every other row will have a grey background. Utiliser des couleurs de ligne alternées - + Hide zero and infinity values Cacher les valeurs zéro et infini - + Always Toujours - Paused torrents only - Seulement les torrents en pause + Seulement les torrents en pause - + Action on double-click Action du double-clic - + Downloading torrents: Torrents en téléchargement : - - Start / Stop Torrent - Démarrer/Arrêter le torrent + Démarrer/Arrêter le torrent - - + + Open destination folder Ouvrir le répertoire de destination - - + + No action Aucune action - + Completed torrents: Torrents téléchargés: - + Auto hide zero status filters Cacher automatiquement les filtres dont le résultat est zéro - + Desktop Bureau - + Start qBittorrent on Windows start up Démarrer qBittorrent au démarrage de windows - + Show splash screen on start up Afficher l'écran de démarrage - + Confirmation on exit when torrents are active Confirmer la fermeture lorsque des torrents sont actifs - + Confirmation on auto-exit when downloads finish Confirmation de l'auto-extinction à la fin des téléchargements - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Pour définir qBittorrent comme programme par défaut pour les fichiers .torrent et/ou les liens Magnet<br/>vous pouvez utiliser la page<span style=" font-weight:600;">Applications par défaut</span> des <span style=" font-weight:600;">Paramêtres</span>.</p></body></html> - + KiB Kio - + Torrent content layout: Agencement du contenu du torrent : - + Original Original - + Create subfolder Créer un sous-dossier - + Don't create subfolder Ne pas créer de sous-dossier - + The torrent will be added to the top of the download queue Le torrent sera ajouté en haut de la file d'attente de téléchargement - + Add to top of queue The torrent will be added to the top of the download queue Ajouter en haut de la file d'attente - + When duplicate torrent is being added Lorsqu'un torrent doublon est ajouté - + Merge trackers to existing torrent Fusionner les trackers avec le torrent existant - + + Keep unselected files in ".unwanted" folder + Conserver les fichiers non sélectionnés dans le dossier « .unwanted » + + + Add... Ajouter… - + Options.. Options.. - + Remove Retirer - + Email notification &upon download completion - Notification par courriel &une fois le téléchargement terminé + Notifier par courriel &une fois le téléchargement complété + + + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + - + Peer connection protocol: Protocole de connexion au pair : - + Any N'importe quel - + I2P (experimental) - I2P (expérimental) + Activer I2P (expérimental) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Si &quot;mode mixe&quot; est activé, les torrents I2P sont autorisés a obtenir des pairs venant d'autres sources que le tracker et a se connecter à des IPs classiques sans fournir d'anonymisation. Cela peut être utile si l'utilisateur n'est pas intéressé par l'anonymisation de I2P mais veux tout de même être capable de se connecter à des pairs I2P.</p></body></html> + <html><head/><body><p>Si &quot;mode mixte&quot; est activé, les torrents I2P sont autorisés a obtenir des pairs venant d'autres sources que le tracker et a se connecter à des IPs classiques sans fournir d'anonymisation. Cela peut être utile si l'utilisateur n'est pas intéressé par l'anonymisation de I2P mais veux tout de même être capable de se connecter à des pairs I2P.</p></body></html> - + Mixed mode - Mode mixe + Mode mixte - + Some options are incompatible with the chosen proxy type! Certaines options sont incompatibles avec le type de proxy choisi ! - + If checked, hostname lookups are done via the proxy Si cochée, les recherches de nom d'hôte sont effectuées via le proxy - + Perform hostname lookup via proxy Recherche du nom d'hôte via un proxy - + Use proxy for BitTorrent purposes Utiliser un proxy à des fins BitTorrent - + RSS feeds will use proxy Les flux RSS utiliseront un proxy - + Use proxy for RSS purposes Utiliser un proxy à des fins RSS - + Search engine, software updates or anything else will use proxy Le moteur de recherche, les mises à jour logicielles ou toute autre chose utiliseront le proxy - + Use proxy for general purposes Utiliser un proxy à des fins générales - + IP Fi&ltering Fi&ltrage IP - + Schedule &the use of alternative rate limits Planifier &l'utilisation des limites de vitesse alternatives - + From: From start time De : - + To: To end time À : - + Find peers on the DHT network Trouver des pairs sur le réseau DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Exiger le chiffrement : Se connecter uniquement aux pairs avec protocole de chif Désactiver le chiffrement : Se connecter uniquement aux pairs sans protocole de chiffrement - + Allow encryption Autoriser le chiffrement - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Plus d'informations</a>) - + Maximum active checking torrents: Torrents actifs maximum en vérification : - + &Torrent Queueing - Priorisation des &torrents + File d'attente des &torrents - + When total seeding time reaches Lorsque la durée totale de partage atteint - + When inactive seeding time reaches Lorsque la durée de partage inactif atteint - A&utomatically add these trackers to new downloads: - Ajo&uter automatiquement ces trackers aux nouveaux téléchargements : + Ajo&uter automatiquement ces trackers aux nouveaux téléchargements : - + RSS Reader Lecteur RSS - + Enable fetching RSS feeds Active la réception de flux RSS - + Feeds refresh interval: Intervalle de rafraîchissement des flux : - + + Same host request delay: + Délai de la requête au même hôte : + + + Maximum number of articles per feed: Nombre maximum d'articles par flux : - - - + + + min minutes min - + Seeding Limits Limites de partage - Pause torrent - Mettre en pause le torrent + Mettre en pause le torrent - + Remove torrent Retirer le torrent - + Remove torrent and its files Retirer le torrent et ses fichiers - + Enable super seeding for torrent Activer le super partage pour ce torrent - + When ratio reaches Lorsque le ratio atteint - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL : + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Téléchargeur automatique de torrents RSS - + Enable auto downloading of RSS torrents Active le téléchargement automatique des torrents par RSS - + Edit auto downloading rules... Éditer les règles de téléchargement automatique… - + RSS Smart Episode Filter - Filtre d'épisode intelligent RSS + Filtre d'épisode intelligent par RSS - + Download REPACK/PROPER episodes Télécharger les épisodes REPACK/PROPER - + Filters: Filtres : - + Web User Interface (Remote control) - Interface utilisateur Web (contrôle distant) + Activer l'interface utilisateur Web (contrôle distant) - + IP address: Adresse IP : - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Renseignez une adresse IPv4 ou IPv6. Vous pouvez renseigner « 0.0.0.0 » pour n « :: » pour n'importe quelle adresse IPv6, ou bien « * » pour l'IPv4 et l'IPv6. - + Ban client after consecutive failures: Bannir le client suite à des échecs consécutifs : - + Never Jamais - + ban for: Banni pour : - + Session timeout: Expiration de la session : - + Disabled Désactivé - Enable cookie Secure flag (requires HTTPS) - Activer l'indicateur de sécurité des cookies (nécessite HTTPS) + Activer l'indicateur de sécurité des cookies (nécessite HTTPS) - + Server domains: Domaines de serveur : - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6190,442 +6476,495 @@ Afin de se défendre contre les attaques par DNS rebinding, vous devez consigner Utiliser ';' pour diviser plusieurs entrées. Le caractère générique '*' peut être utilisé. - + &Use HTTPS instead of HTTP &Utiliser HTTPS au lieu de HTTP - + Bypass authentication for clients on localhost Ignorer l'authentification pour les clients locaux - + Bypass authentication for clients in whitelisted IP subnets Ignorer l'authentification pour les clients de sous-réseaux en liste blanche - + IP subnet whitelist... Liste blanche des sous-réseaux IP… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Spécifier les adresses IP du proxy inverse (ou les sous-réseaux, p. ex. 0.0.0.0/24) afin d'utiliser l'adresse client transférée (attribut X-Forwarded-For). Utiliser ';' pour séparer plusieurs entrées. - + Upda&te my dynamic domain name Met&tre à jour mon nom de domaine dynamique - + Minimize qBittorrent to notification area Réduire qBittorrent dans la zone de notification - + + Search + + + + + WebUI + + + + Interface Interface - + Language: Langue : - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Style d'icône de la barre des tâches : - - + + Normal Normal - + File association Association des fichiers - + Use qBittorrent for .torrent files Utiliser qBittorrent pour les fichiers .torrent - + Use qBittorrent for magnet links - Utiliser qBittorrent pour les liens magnets + Utiliser qBittorrent pour les liens magnet - + Check for program updates Vérifier la disponibilité de mises à jour du logiciel - + Power Management Gestion d'alimentation - + + &Log Files + + + + Save path: Chemin de sauvegarde : - + Backup the log file after: Sauvegarder le Log après : - + Delete backup logs older than: Supprimer les journaux antérieurs à : - + + Show external IP in status bar + + + + When adding a torrent À l'ajout d'un torrent - + Bring torrent dialog to the front Mettre la boite de dialogue du torrent en avant-plan - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Supprimer également les fichiers .torrent dont l'ajout a été annulé - + Also when addition is cancelled Aussi quand l'ajout est annulé - + Warning! Data loss possible! - Attention ! Perte de données possible ! + Avertissement ! Perte de données possible ! - + Saving Management Gestion de la sauvegarde - + Default Torrent Management Mode: Mode de gestion de torrent par défaut : - + Manual Manuel - + Automatic Automatique - + When Torrent Category changed: Quand la catégorie du torrent change : - + Relocate torrent Relocaliser le torrent - + Switch torrent to Manual Mode Basculer le torrent en mode manuel - - + + Relocate affected torrents Relocaliser les torrents affectés - - + + Switch affected torrents to Manual Mode Basculer les torrents affectés en mode manuel - + Use Subcategories Utiliser les sous-catégories - + Default Save Path: Chemin de sauvegarde par défaut : - + Copy .torrent files to: Copier les fichiers .torrent dans : - + Show &qBittorrent in notification area Afficher l'icône de &qBittorrent dans la zone de notification - &Log file - Fichier journa&l + Créer un fichier journa&l - + Display &torrent content and some options Afficher le contenu du &torrent et quelques options - + De&lete .torrent files afterwards Supprimer &les fichiers .torrent par la suite - + Copy .torrent files for finished downloads to: Copier les fichiers .torrent des téléchargements terminés dans : - + Pre-allocate disk space for all files Préallouer l'espace disque pour tous les fichiers - + Use custom UI Theme Utiliser un thème d'IU personnalisé - + UI Theme file: Fichier de thème d'IU : - + Changing Interface settings requires application restart Modifier des paramètres de l'interface requiert un redémarrage de l'application - + Shows a confirmation dialog upon torrent deletion Afficher une fenêtre de confirmation lors de la suppression d'un torrent - - + + Preview file, otherwise open destination folder Afficher un aperçu du fichier, sinon ouvrir le dossier de destination - - Show torrent options - Afficher les options du torrent + Afficher les options du torrent - + Shows a confirmation dialog when exiting with active torrents Affiche une fenêtre de confirmation lors de la fermeture avec des torrents actifs - + When minimizing, the main window is closed and must be reopened from the systray icon Lors de la réduction, la fenêtre principale sera fermée et devra être réouverte via l’icône dans la barre des tâches - + The systray icon will still be visible when closing the main window L’icône dans la barre des tâches restera visible lorsque la fenêtre principale est fermée - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Conserver dans la zone de notification à la fermeture - + Monochrome (for dark theme) Monochrome (pour le thème sombre) - + Monochrome (for light theme) Monochrome (pour le thème clair) - + Inhibit system sleep when torrents are downloading Empêcher la mise en veille du système lorsque des torrents sont en téléchargement - + Inhibit system sleep when torrents are seeding Empêcher la mise en veille du système lorsque des torrents sont en partage - + Creates an additional log file after the log file reaches the specified file size Génère un fichier journal supplémentaire lorsque le fichier journal atteint la taille spécifiée - + days Delete backup logs older than 10 days jours - + months Delete backup logs older than 10 months mois - + years Delete backup logs older than 10 years années - + Log performance warnings Journaliser les avertissements de performances - The torrent will be added to download list in a paused state - Le torrent sera ajouté à la file de téléchargement en état de pause + Le torrent sera ajouté à la file de téléchargement en état de pause - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ne pas démarrer le téléchargement automatiquement - + Whether the .torrent file should be deleted after adding it Si le fichier .torrent devrait être supprimé après l'avoir ajouté - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Allouer les tailles entières des fichiers sur le disque avant de commencer les téléchargements, afin de minimiser la fragmentation. Utile uniquement pour les disques durs HDDs. - + Append .!qB extension to incomplete files Ajouter l'extension .!qB aux noms des fichiers incomplets - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Lorsqu'un torrent est téléchargé, proposer d'ajouter les torrents depuis les fichiers .torrent trouvés à l'intérieur de celui-ci - + Enable recursive download dialog Activer les fenêtres de téléchargement récursif - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatique : Certaines propriétés du torrent (p. ex. le répertoire de destination) seront décidées par la catégorie associée Manuel : Certaines propriétés du torrent (p. ex. le répertoire de destination) devront être saisies manuellement - + When Default Save/Incomplete Path changed: Lorsque le répertoire de destination/incomplet par défaut a été modifié : - + When Category Save Path changed: Lorsque le répertoire de destination de la catégorie change : - + Use Category paths in Manual Mode Utiliser les chemins des catégories en mode manuel - + Resolve relative Save Path against appropriate Category path instead of Default one Résoudre le répertoire de destination relatif par rapport au chemin de la catégorie approprié au lieu de celui par défaut - + Use icons from system theme Utiliser les icônes du thème système - + Window state on start up: État de la fenêtre au démarrage : - + qBittorrent window state on start up État de la fenêtre qBittorrent au démarrage - + Torrent stop condition: Condition d'arrêt du torrent : - - + + None Aucun - - + + Metadata received Métadonnées reçues - - + + Files checked Fichiers vérifiés - + Ask for merging trackers when torrent is being added manually Demander une fusion des trackers lorsque le torrent est ajouté manuellement - + Use another path for incomplete torrents: Utiliser un autre répertoire pour les torrents incomplets : - + Automatically add torrents from: Ajouter automatiquement les torrents présents sous : - + Excluded file names - Noms de fichiers exclus + Exclure les noms de fichiers - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6654,841 +6993,914 @@ readme.txt : filtre le nom exact du fichier. readme[0-9].txt : filtre 'readme1.txt' et 'readme2.txt', mais pas 'readme10.txt'. - + Receiver Destinataire - + To: To receiver À : - + SMTP server: Serveur SMTP : - + Sender Émetteur - + From: From sender De : - + This server requires a secure connection (SSL) - Ce serveur nécessite une connexion sécurisée (SSL) + Nécessite une connexion sécurisée (SSL) - - + + Authentication Authentification - - - - + + + + Username: Nom d'utilisateur : - - - - + + + + Password: Mot de passe : - + Run external program Exécuter un programme externe - Run on torrent added - Exécuter à l'ajout d'un torrent + Exécuter à l'ajout d'un torrent - Run on torrent finished - Exécuter à la complétion d'un torrent + Exécuter à la complétion d'un torrent - + Show console window Afficher la fenêtre de la console - + TCP and μTP TCP et μTP - + Listening Port Port d'écoute - + Port used for incoming connections: Port pour les connexions entrantes : - + Set to 0 to let your system pick an unused port Régler sur 0 pour laisser votre système choisir un port inutilisé - + Random Aléatoire - + Use UPnP / NAT-PMP port forwarding from my router Utiliser la redirection de port sur mon routeur via UPnP/NAT-PMP - + Connections Limits Limites de connexions - + Maximum number of connections per torrent: Nombre maximum de connexions par torrent : - + Global maximum number of connections: Nombre maximum global de connexions : - + Maximum number of upload slots per torrent: Nombre maximum d'emplacements d'envoi par torrent : - + Global maximum number of upload slots: Nombre maximum global d'emplacements d'envoi : - + Proxy Server Serveur proxy - + Type: Type : - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Hôte : - - - + + + Port: Port : - + Otherwise, the proxy server is only used for tracker connections Dans le cas contraire, le proxy sera uniquement utilisé pour contacter les trackers - + Use proxy for peer connections Utiliser le proxy pour se connecter aux pairs - + A&uthentication A&uthentification - + Info: The password is saved unencrypted Info : le mot de passe est enregistré en texte clair - + Filter path (.dat, .p2p, .p2b): Chemin du filtre (.dat, .p2p, .p2b) : - + Reload the filter Recharger le filtre - + Manually banned IP addresses... Adresses IP bannies manuellement… - + Apply to trackers Appliquer aux trackers - + Global Rate Limits Limites de vitesse globales - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s Kio/s - - + + Upload: Envoi : - - + + Download: Réception : - + Alternative Rate Limits Limites de vitesse alternatives - + Start time Heure de début - + End time Heure de fin - + When: Quand : - + Every day Tous les jours - + Weekdays Jours ouvrés - + Weekends Week-ends - + Rate Limits Settings Paramètres des limites de vitesse - + Apply rate limit to peers on LAN Appliquer les limites de vitesse sur le réseau local - + Apply rate limit to transport overhead Appliquer les limites de vitesse au surplus généré par le protocole - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Appliquer les limites de vitesse au protocole µTP - + Privacy Vie privée - + Enable DHT (decentralized network) to find more peers Activer le DHT (réseau décentralisé) pour trouver plus de pairs - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Échanger des pairs avec les applications compatibles (µTorrent, Vuze…) - + Enable Peer Exchange (PeX) to find more peers Activer l'échange de pairs (PeX) avec les autres utilisateurs - + Look for peers on your local network Rechercher des pairs sur votre réseau local - + Enable Local Peer Discovery to find more peers Activer la découverte de sources sur le réseau local - + Encryption mode: Mode de chiffrement : - + Require encryption Chiffrement requis - + Disable encryption Chiffrement désactivé - + Enable when using a proxy or a VPN connection Activer lors de l'utilisation d'un proxy ou d'une connexion VPN - + Enable anonymous mode Activer le mode anonyme - + Maximum active downloads: Nombre maximum de téléchargements actifs : - + Maximum active uploads: Nombre maximum d'envois actifs : - + Maximum active torrents: Nombre maximum de torrents actifs : - + Do not count slow torrents in these limits Ne pas compter les torrents lents dans ces limites - + Upload rate threshold: Limite de vitesse d'envoi : - + Download rate threshold: Limite de vitesse de téléchargement : - - - + + + + sec seconds sec. - + Torrent inactivity timer: Minuterie d'inactivité du torrent : - + then alors - + Use UPnP / NAT-PMP to forward the port from my router Utiliser la redirection de port sur mon routeur via UPnP/NAT-PMP - + Certificate: Certificat : - + Key: Clé : - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information sur les certificats</a> - + Change current password Changer le mot de passe actuel - Use alternative Web UI - Utiliser l'IU Web alternative + Utiliser l'IU Web alternative - + Files location: Emplacement des fichiers : - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Sécurité - + Enable clickjacking protection Activer la protection contre le détournement de clic - + Enable Cross-Site Request Forgery (CSRF) protection Activer la protection contre la falsification de requêtes intersites (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Activer la validation de l'en-tête hôte - + Add custom HTTP headers Ajouter des en-têtes HTTP personnalisées - + Header: value pairs, one per line - En-tête : paires de valeurs, une par ligne + En-tête : paires clé-valeur, une par ligne - + Enable reverse proxy support Activer la prise en charge du proxy inverse - + Trusted proxies list: Liste des proxys de confiance : - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Service : - + Register S'inscrire - + Domain name: Nom de domaine : - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! En activant ces options, vous pouvez <strong>perdre à tout jamais</strong> vos fichiers .torrent ! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Si vous activez la seconde option (&ldquo;également lorsque l'ajout est annulé&rdquo;) le fichier .torrent <strong>sera supprimé</strong> même si vous pressez &ldquo;<strong>Annuler</strong>&rdquo; dans la boîte de dialogue &ldquo;Ajouter un torrent&rdquo; - + Select qBittorrent UI Theme file Sélectionner le fichier de thème d'lU qBittorrent - + Choose Alternative UI files location Choisir l'emplacement des fichiers d'IU alternatives - + Supported parameters (case sensitive): Paramètres supportés (sensible à la casse) : - + Minimized Réduite - + Hidden Cachée - + Disabled due to failed to detect system tray presence Désactivé en raison de l'échec de la détection d'une présence dans la barre des tâches - + No stop condition is set. Aucune condition d'arrêt n'est définie. - + Torrent will stop after metadata is received. Le torrent s'arrêtera après la réception des métadonnées. - - Torrents that have metadata initially aren't affected. - Les torrents qui ont initialement des métadonnées ne sont pas affectés. - - - + Torrent will stop after files are initially checked. Le torrent s'arrêtera après la vérification initiale des fichiers. - + This will also download metadata if it wasn't there initially. Cela téléchargera également les métadonnées si elles n'y étaient pas initialement. - + %N: Torrent name %N : Nom du torrent - + %L: Category %L : Catégorie - + %F: Content path (same as root path for multifile torrent) %F : Répertoire du contenu (le même que le répertoire racine pour les torrents composés de plusieurs fichiers) - + %R: Root path (first torrent subdirectory path) %R : Répertoire racine (premier répertoire du sous-dossier du torrent) - + %D: Save path %D : Répertoire de destination - + %C: Number of files %C : Nombre de fichiers - + %Z: Torrent size (bytes) %Z : Taille du torrent (en octets) - + %T: Current tracker %T : Tracker actuel - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Astuce : Encapsuler le paramètre entre guillemets pour éviter que le texte soit coupé au niveau des espaces (p. ex. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Aucun) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Un torrent sera considéré comme lent si ses vitesses de réception et d'envoi restent en dessous des valeurs en secondes du « Minuteur d'inactivité du torrent » - + Certificate Certificat - + Select certificate Sélectionner un certificat - + Private key Clé privée - + Select private key Sélectionner une clé privée - + + WebUI configuration failed. Reason: %1 + La configuration de l'IU Web a échoué. Raison : %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Sélectionner un dossier à surveiller - + Adding entry failed Impossible d'ajouter l'entrée - - Location Error - Erreur d'emplacement + + The WebUI username must be at least 3 characters long. + Le nom d'utilisateur pour l'IU Web doit comporter au moins 3 caractères. - - The alternative Web UI files location cannot be blank. - L'emplacement des fichiers pour l'IU Web alternative ne peut pas être vide. + + The WebUI password must be at least 6 characters long. + Le mot de passe pour l'IU Web doit comporter au moins 6 caractères. + + + + Location Error + Erreur d'emplacement - - + + Choose export directory Choisir un dossier pour l'exportation - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Lorsque ces options sont actives, qBittorrent va <strong>supprimer</strong> les fichiers .torrent après qu'ils aient été ajoutés à la file d’attente de téléchargement avec succès (première option) ou non (seconde option). Ceci sera appliqué <strong>non seulement</strong> aux fichiers ouverts via l'action du menu &ldquo;Ajouter un torrent&rdquo; mais également à ceux ouverts via <strong>l'association de types de fichiers</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Fichier de thème d'IU qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G : Étiquettes (séparées par des virgules) - + %I: Info hash v1 (or '-' if unavailable) %I : Info hash v1 (ou '-' si indisponible) - + %J: Info hash v2 (or '-' if unavailable) %J : info hash v2 (ou '-' si indisponible) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K : ID du torrent (soit l'info hash SHA-1 pour un torrent v1 ou l'info hash tronquée SHA-256 pour un torrent v2/hybride) - - - + + + Choose a save directory Choisir un dossier de sauvegarde - + + Torrents that have metadata initially will be added as stopped. + Les torrents qui ont initialement des métadonnées seront ajoutés comme arrêtés. + + + Choose an IP filter file Choisissez un fichier de filtre IP - + All supported filters Tous les filtres supportés - + + The alternative WebUI files location cannot be blank. + L'emplacement des fichiers pour l'IU Web alternative ne peut pas être vide. + + + Parsing error Erreur lors de l'analyse syntaxique - + Failed to parse the provided IP filter Impossible de charger le filtre IP fourni - + Successfully refreshed Actualisation réussie - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Le filtre IP a été correctement chargé : %1 règles ont été appliquées. - + Preferences Préférences - + Time Error Erreur de temps - + The start time and the end time can't be the same. Les heures de début et de fin ne peuvent pas être identiques. - - + + Length Error Erreur de longueur - - - The Web UI username must be at least 3 characters long. - Le nom d'utilisateur pour l'IU Web doit être au moins de 3 caractères de long. - - - - The Web UI password must be at least 6 characters long. - Le mot de passe pour l'IU Web doit être au moins de 6 caractères de long. - PeerInfo - + Unknown Inconnue - + Interested (local) and choked (peer) Intéressé (local) et engorgé (pair) - + Interested (local) and unchoked (peer) intéressé (local) et non engorgé (pair) - + Interested (peer) and choked (local) intéressé (pair) et engorgé (local) - + Interested (peer) and unchoked (local) Intéressé (pair) et non engorgé (local) - + Not interested (local) and unchoked (peer) Non intéressé (local) et non engorgé (pair) - + Not interested (peer) and unchoked (local) Non intéressé (pair) et non engorgé (local) - + Optimistic unchoke Non-engorgement optimiste - + Peer snubbed Pair snobé - + Incoming connection Connexion entrante - + Peer from DHT Pair issu du DHT - + Peer from PEX Pair issu des PEX - + Peer from LSD Pair issu du LSD - + Encrypted traffic Trafic chiffré - + Encrypted handshake Établissement de liaison chiffrée + + + Peer is using NAT hole punching + + PeerListWidget @@ -7644,7 +8056,7 @@ readme[0-9].txt : filtre 'readme1.txt' et 'readme2.txt', mai Le pair « %1 » est banni manuellement - + N/A N/D @@ -7667,7 +8079,7 @@ readme[0-9].txt : filtre 'readme1.txt' et 'readme2.txt', mai Liste des pairs à ajouter (une IP par ligne) : - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7708,27 +8120,27 @@ readme[0-9].txt : filtre 'readme1.txt' et 'readme2.txt', mai PiecesBar - + Files in this piece: Fichiers dans ce morceau : - + File in this piece: Fichier dans ce morceau : - + File in these pieces: Fichier dans ces morceaux : - + Wait until metadata become available to see detailed information Attendre que les métadonnées soient disponibles pour voir les informations détaillées - + Hold Shift key for detailed information Maintenir la touche Maj. pour les informations détaillées @@ -7741,58 +8153,58 @@ readme[0-9].txt : filtre 'readme1.txt' et 'readme2.txt', mai Greffons de recherche - + Installed search plugins: Greffons de recherche installés : - + Name Nom - + Version Version - + Url URL - - + + Enabled Activé - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Avertissement : assurez-vous d'être en conformité avec les lois sur le droit d'auteur de votre pays lorsque vous téléchargez des torrents à partir d'un de ces moteurs de recherche. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Vous pouvez obtenir de nouveaux greffons de recherche ici : <a href="https://plugins.qbittorrent.org">https://plugins.qbittorent.org</a> - + Install a new one Installer un nouveau - + Check for updates Vérifier les mises à jour - + Close Fermer - + Uninstall Désinstaller @@ -7911,17 +8323,17 @@ Those plugins were disabled. Source du greffon - + Search plugin source: Source du greffon de recherche : - + Local file Fichier local - + Web link Lien Web @@ -7939,70 +8351,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + La gestion de l'alimentation a trouvé une interface D-Bus approprié. Interface : %1 Power management error. Did not found suitable D-Bus interface. - + Erreur de la gestion de l'alimentation. Interface D-Bus appropriée non trouvée. Power management error. Action: %1. Error: %2 - + Erreur de la gestion de l'alimentation. Action : %1. Erreur : %2 Power management unexpected error. State: %1. Error: %2 - + Erreur Inattendue de la gestion de l'alimentation. Etat : %1. Erreur : %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Les fichiers suivants du torrent « %1 » permettent l'affichage d'un aperçu, veuillez en sélectionner un : - + Preview Prévisualiser - + Name Nom - + Size Taille - + Progress Progression - + Preview impossible Prévisualisation impossible - + Sorry, we can't preview this file: "%1". Désolé, nous ne pouvons pas prévisualiser ce fichier : « %1 ». - + Resize columns Redimensionner les colonnes - + Resize all non-hidden columns to the size of their contents Redimensionner toutes les colonnes non masquées à la taille de leur contenu @@ -8015,27 +8427,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Le chemin n'existe pas - + Path does not point to a directory Le chemin ne pointe pas vers un répertoire - + Path does not point to a file Le chemin ne pointe pas vers un fichier - + Don't have read permission to path N'a pas l'autorisation de lire dans le chemin - + Don't have write permission to path N'a pas l'autorisation d'écrire dans le chemin @@ -8076,12 +8488,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Téléchargé : - + Availability: Disponibilité : @@ -8096,53 +8508,53 @@ Those plugins were disabled. Transfert - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Actif pendant : - + ETA: Temps restant : - + Uploaded: Envoyé : - + Seeds: Sources : - + Download Speed: Vitesse de téléchargement : - + Upload Speed: Vitesse d'émission : - + Peers: Pairs : - + Download Limit: Limite de téléchargement : - + Upload Limit: Limite d'envoi : - + Wasted: Gaspillé : @@ -8152,193 +8564,249 @@ Those plugins were disabled. Connexions : - + Information Informations - + Info Hash v1: Info hash v1 : - + Info Hash v2: Info hash v2 : - + Comment: Commentaire : - + Select All Tout sélectionner - + Select None Ne rien sélectionner - + Share Ratio: Ratio de partage : - + Reannounce In: Annoncer dans : - + Last Seen Complete: Dernière fois vu complet : - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Taille totale : - + Pieces: Morceaux : - + Created By: Créé par : - + Added On: Ajouté le : - + Completed On: Complété le : - + Created On: Créé le : - + + Private: + + + + Save Path: Chemin de sauvegarde : - + Never Jamais - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 × %2 (a %3) - - + + %1 (%2 this session) %1 (%2 cette session) - - + + + N/A N/D - + + Yes + Oui + + + + No + Non + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (partagé pendant %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maximum) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 en moyenne) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nouvelle source web + Nouvelle source web - Remove Web seed - Supprimer la source web + Supprimer la source web - Copy Web seed URL - Copier l'URL de la source web + Copier l'URL de la source web - Edit Web seed URL - Modifier l'URL de la source web + Modifier l'URL de la source web - + Filter files... Filtrer les fichiers… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Les graphiques de vitesse sont désactivés - + You can enable it in Advanced Options Vous pouvez l'activer sous Options Avancées - New URL seed New HTTP source - Nouvelle source URL + Nouvelle source URL - New URL seed: - Nouvelle source URL : + Nouvelle source URL : - - This URL seed is already in the list. - Cette source URL est déjà sur la liste. + Cette source URL est déjà sur la liste. - + Web seed editing Modification de la source web - + Web seed URL: URL de la source web : @@ -8357,22 +8825,22 @@ Those plugins were disabled. Impossible d'enregistrer les données de téléchargement automatique RSS vers %1. Erreur : %2 - + Invalid data format Format de données invalide - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... Le flux RSS '%1' est accepté par la règle '%2'. Tentative d'ajout du torrent en cours... - + Failed to read RSS AutoDownloader rules. %1 Échec de la lecture des règles de téléchargement automatique RSS. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Impossible de charger les règles de téléchargement automatique RSS. Raison : %1 @@ -8380,22 +8848,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Échec de téléchargement du flux RSS à '%1'. Raison : %2 - + RSS feed at '%1' updated. Added %2 new articles. Flux RSS à '%1' mis à jour. %2 nouveaux articles ajoutés. - + Failed to parse RSS feed at '%1'. Reason: %2 Échec de l'analyse du flux RSS à '%1'. Raison : %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Le flux RSS %1 a été téléchargé avec succès. Lancement de l'analyse. @@ -8431,12 +8899,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Flux RSS invalide. - + %1 (line: %2, column: %3, offset: %4). %1 (ligne : %2, colonne : %3, décalage : %4). @@ -8444,99 +8912,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Impossible d’enregistrer la configuration de la session RSS. Fichier : « %1 ». Erreur : « %2 » - + Couldn't save RSS session data. File: "%1". Error: "%2" Impossible d’enregistrer les données de la session RSS. Fichier : « %1 ». Erreur : « %2 » - - + + RSS feed with given URL already exists: %1. - Le flux RSS avec le chemin donné existe déjà : %1. + Le flux RSS avec l'URL donnée existe déjà : %1. - + Feed doesn't exist: %1. Flux inexistant : %1. - + Cannot move root folder. Ne peut pas déplacer le dossier racine. - - + + Item doesn't exist: %1. L'élément n'existe pas : %1. - + Couldn't move folder into itself. Impossible de déplacer le dossier vers lui-même. - + Cannot delete root folder. Ne peut pas supprimer le dossier racine. - + Failed to read RSS session data. %1 Échec de la lecture des données de session RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Échec de l'analyse des données de session RSS. Fichier : « %1 ». Erreur : « %2 » - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Échec du chargement des données de session RSS. Fichier : « %1 ». Erreur : « Format de données invalide. » - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Impossible de charger le flux RSS. Flux : « %1 ». Raison : l’URL est requise. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Impossible de charger le flux RSS. Flux : « %1 ». Raison : l’UID est invalide. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Doublon du flux RSS trouvé. UID : « %1 ». Erreur : La configuration semble être corrompue. - + Couldn't load RSS item. Item: "%1". Invalid data format. Impossible de charger l’élément RSS. Élément : « %1 ». Format de données invalide. - + Corrupted RSS list, not loading it. Liste RSS corrompue, chargement annulé. - + Incorrect RSS Item path: %1. Chemin d'article RSS Incorrect : %1. - + RSS item with given path already exists: %1. L'article RSS avec le chemin donné existe déjà : %1. - + Parent folder doesn't exist: %1. Le dossier parent n'existe pas : %1. @@ -8560,8 +9028,8 @@ Those plugins were disabled. - - + + Mark items read Marquer comme lu @@ -8586,132 +9054,132 @@ Those plugins were disabled. Torrents : (double-clic pour télécharger) - - + + Delete Supprimer - + Rename... Renommer… - + Rename Renommer - - + + Update Mettre à jour - + New subscription... Nouvel abonnement… - - + + Update all feeds Mettre à jour tous les flux - + Download torrent Télécharger le torrent - + Open news URL Ouvrir une nouvelle URL - + Copy feed URL Copier l'URL du flux - + New folder... Nouveau dossier… - + Edit feed URL... Éditer l'URL du flux… - + Edit feed URL Éditer l'URL du flux - + Please choose a folder name Veuillez choisir un nouveau nom de dossier - + Folder name: Nom du dossier : - + New folder Nouveau dossier - - + + Please type a RSS feed URL Veuillez entrer une URL de flux RSS - - + + Feed URL: URL du flux : - + Deletion confirmation Confirmation de la suppression - + Are you sure you want to delete the selected RSS feeds? Voulez-vous vraiment supprimer les flux RSS sélectionnés ? - + Please choose a new name for this RSS feed Veuillez choisir un nouveau nom pour ce flux RSS - + New feed name: Nouveau nom du flux : - + Rename failed Échec du renommage - + Date: Date : - + Feed: - + Flux : - + Author: Auteur : @@ -8719,38 +9187,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Python doit être installé afin d'utiliser le moteur de recherche. - + Unable to create more than %1 concurrent searches. - Impossible de lancer plus de %1 recherches en parallèles. + Impossible d'effectuer plus de %1 recherches simultanées. - - + + Offset is out of range Offset hors plage - + All plugins are already up to date. Tous les greffons sont déjà à jour. - + Updating %1 plugins Mise à jour de %1 greffons - + Updating plugin %1 Mise à jour du greffon %1 - + Failed to check for plugin updates: %1 Échec de la recherche de mise à jour pour le greffon : %1 @@ -8825,132 +9293,146 @@ Those plugins were disabled. Taille : - + Name i.e: file name Nom - + Size i.e: file size Taille - + Seeders i.e: Number of full sources Sources complètes - + Leechers i.e: Number of partial sources Sources partielles - Search engine - Moteur de recherche + Moteur de recherche - + Filter search results... Filtrer les résultats… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Résultats (affiche <i>%1</i> sur <i>%2</i>) : - + Torrent names only Noms de torrents seulement - + Everywhere Partout - + Use regular expressions Utiliser les expressions régulières - + Open download window Ouvrir la fenêtre de téléchargement - + Download - Téléchargement + Télécharger - + Open description page Ouvrir la page de description - + Copy Copier - + Name Nom - + Download link Lien de téléchargement - + Description page URL URL de la page de description - + Searching... Recherche en cours… - + Search has finished La recherche est terminée - + Search aborted Recherche annulée - + An error occurred during search... Une erreur s'est produite lors de la recherche… - + Search returned no results La recherche n'a retourné aucun résultat - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilité de la colonne - + Resize columns Redimensionner les colonnes - + Resize all non-hidden columns to the size of their contents Redimensionner toutes les colonnes non masquées à la taille de leur contenu @@ -8958,104 +9440,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Format de fichier du greffon de recherche inconnu. - + Plugin already at version %1, which is greater than %2 Le greffon est déjà à la version %1, qui est plus récente que la %2 - + A more recent version of this plugin is already installed. Une version plus récente de ce greffon est déjà installée. - + Plugin %1 is not supported. Le greffon %1 n'est pas supporté. - - + + Plugin is not supported. Greffon non supporté. - + Plugin %1 has been successfully updated. Le greffon %1 a été correctement mis à jour. - + All categories Toutes les catégories - + Movies Films - + TV shows Émissions de télévision - + Music Musique - + Games Jeux - + Anime Animes - + Software Logiciels - + Pictures Photos - + Books Livres - + Update server is temporarily unavailable. %1 Serveur de mise à jour temporairement indisponible. %1 - - + + Failed to download the plugin file. %1 Échec du téléchargement du fichier du greffon. %1 - + Plugin "%1" is outdated, updating to version %2 Le greffon « %1 » est obsolète, mise à jour vers la version %2 - + Incorrect update info received for %1 out of %2 plugins. Informations de mise à jour incorrectes reçues de %1 greffons sur %2. - + Search plugin '%1' contains invalid version string ('%2') Le numéro de version ('%2') du greffon de recherche '%1' est invalide @@ -9065,114 +9547,153 @@ Those plugins were disabled. - - - - Search Recherche - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Il n'y a aucun greffon de recherche installé. Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fenêtre pour en installer. - + Search plugins... Greffons de recherche... - + A phrase to search for. Une phrase à rechercher. - + Spaces in a search term may be protected by double quotes. Les espaces dans un terme de recherche peuvent être protégés par des guillemets. - + Example: Search phrase example Exemple : - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b> : rechercher <b>foo bar</b> - + All plugins Tous les greffons - + Only enabled Greffons activés - + + + Invalid data format. + Format de données invalide. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: rechercher <b>foo</b> et <b>bar</b> - + + Refresh + + + + Close tab Fermer l'onglet - + Close all tabs Fermer tous les onglets - + Select... Sélectionner… - - - + + Search Engine Moteur de recherche - + + Please install Python to use the Search Engine. Veuillez installer Python afin d'utiliser le moteur de recherche. - + Empty search pattern Motif de recherche vide - + Please type a search pattern first Veuillez entrer un motif de recherche - + + Stop Arrêter - Search has finished - Recherche terminée + Recherche terminée - Search has failed - La recherche a échoué + La recherche a échoué + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9285,34 +9806,34 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen - + Upload: Envoi : - - - + + + - - - + + + KiB/s Kio/s - - + + Download: Téléchargement : - + Alternative speed limits Limites de vitesse alternatives @@ -9504,32 +10025,32 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Temps moyen passé en file d'attente : - + Connected peers: Clients connectés : - + All-time share ratio: Total du ratio de partage : - + All-time download: Total téléchargé : - + Session waste: Gaspillé durant la session : - + All-time upload: Total envoyé : - + Total buffer size: Taille totale du tampon : @@ -9544,12 +10065,12 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Actions d'E/S en file d'attente : - + Write cache overload: Surcharge du tampon d'écriture : - + Read cache overload: Surcharge du tampon de lecture : @@ -9568,51 +10089,67 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen StatusBar - + Connection status: Statut de la connexion : - - + + No direct connections. This may indicate network configuration problems. Aucune connexion directe. Ceci peut être signe d'une mauvaise configuration réseau. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT : %1 nœuds - + qBittorrent needs to be restarted! qBittorrent doit être redémarré ! - - - + + + Connection Status: État de la connexion : - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Hors ligne. Ceci signifie généralement que qBittorrent s'a pas pu se mettre en écoute sur le port défini pour les connexions entrantes. - + Online Connecté - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Cliquez ici pour utiliser les limites de vitesse alternatives - + Click to switch to regular speed limits Cliquez ici pour utiliser les limites de vitesse normales @@ -9638,17 +10175,25 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Completed (0) - Terminés (0) + Complétés (0) - Resumed (0) - Repris (0) + Repris (0) - Paused (0) - En pause (0) + En pause (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9663,17 +10208,17 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Stalled (0) - Bloqué (0) + Bloqués (0) Stalled Uploading (0) - Bloqué en envoi (0) + Bloqués en envoi (0) Stalled Downloading (0) - Bloqué en téléchargement (0) + Bloqués en réception (0) @@ -9688,7 +10233,7 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Errored (0) - Erreur (0) + Erronés (0) @@ -9708,12 +10253,31 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Completed (%1) - Terminés (%1) + Complétés (%1) + + + + Running (%1) + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - En pause (%1) + En pause (%1) @@ -9721,14 +10285,12 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen En déplacement (%1) - Resume torrents - Reprendre les torrents + Reprendre les torrents - Pause torrents - Mettre en pause les torrents + Mettre en pause les torrents @@ -9736,9 +10298,8 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Retirer les torrents - Resumed (%1) - Repris (%1) + Repris (%1) @@ -9763,7 +10324,7 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Stalled Downloading (%1) - Bloqués en téléchargement (%1) + Bloqués en réception (%1) @@ -9773,23 +10334,23 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen Errored (%1) - Erreur (%1) + Erronés (%1) TagFilterModel - + Tags Étiquettes - + All Toutes - + Untagged Sans étiquette @@ -9797,52 +10358,64 @@ Cliquez sur le bouton « Recherche de greffons… » en bas à droite de la fen TagFilterWidget - + Add tag... Ajouter une étiquette… - + Remove tag Retirer l'étiquette - + Remove unused tags Retirer les étiquettes inutilisées - Resume torrents - Reprendre les torrents + Reprendre les torrents - Pause torrents - Mettre en pause les torrents + Mettre en pause les torrents - + Remove torrents Retirer les torrents - New Tag - Nouvelle étiquette + Nouvelle étiquette - + + Start torrents + + + + + Stop torrents + + + + Tag: Étiquette : - + + Add tag + + + + Invalid tag name Nom de tag invalide - + Tag name '%1' is invalid Le nom de l'étiquette '%1' est invalide @@ -9982,32 +10555,32 @@ Veuillez en choisir un autre. TorrentContentModel - + Name Nom - + Progress Progression - + Download Priority Priorité de téléchargement - + Remaining Restant - + Availability Disponibilité - + Total Size Taille totale @@ -10052,102 +10625,120 @@ Veuillez en choisir un autre. TorrentContentWidget - + Rename error Erreur de renommage - + Renaming Renommage - + New name: Nouveau nom : - + Column visibility Visibilité de la colonne - + Resize columns Redimensionner les colonnes - + Resize all non-hidden columns to the size of their contents Redimensionner toutes les colonnes non masquées à la taille de leur contenu - + Open Ouvrir - + Open containing folder Ouvrir le dossier contenant - + Rename... Renommer… - + Priority Priorité - - + + Do not download Ne pas télécharger - + Normal Normale - + High Haute - + Maximum Maximale - + By shown file order Par ordre de fichier affiché - + Normal priority Priorité normale - + High priority Haute priorité - + Maximum priority Priorité maximale - + Priority by shown file order Priorité par ordre de fichier affiché + + TorrentCreatorController + + + Too many active tasks + Trop de tâches actives + + + + Torrent creation is still unfinished. + La création de torrent est encore inachevée. + + + + Torrent creation failed. + Échec de la création du torrent. + + TorrentCreatorDialog @@ -10172,13 +10763,13 @@ Veuillez en choisir un autre. - + Select file Sélectionner un fichier - + Select folder Sélectionner un dossier @@ -10203,58 +10794,10 @@ Veuillez en choisir un autre. Taille des morceaux : - + Auto Auto - - 16 KiB - 16 Kio - - - 32 KiB - 32 Kio - - - 64 KiB - 64 Kio - - - 128 KiB - 128 Kio - - - 256 KiB - 256 Kio - - - 512 KiB - 512 Kio - - - 1 MiB - 1 Mio - - - 2 MiB - 2 Mio - - - 4 MiB - 4 Mio - - - 8 MiB - 8 Mio - - - 16 MiB - 16 Mio - - - 32 MiB - 32 Mio - Calculate number of pieces: @@ -10301,92 +10844,83 @@ Veuillez en choisir un autre. Champs - + You can separate tracker tiers / groups with an empty line. Vous pouvez séparer les groupes / niveaux de trackers avec une ligne vide. - + Web seed URLs: URL des sources Web : - + Tracker URLs: URL des trackers : - + Comments: Commentaires : - + Source: Source : - + Progress: Progression : - + Create Torrent Créer le torrent - - + + Torrent creation failed Échec de la création du torrent - + Reason: Path to file/folder is not readable. - Raison : L'emplacement du fichier/dossier n'est pas accessible en lecture. + Raison : Le chemin vers le fichier/dossier n'est pas accessible en lecture. - + Select where to save the new torrent Sélectionner où enregistrer le nouveau torrent - + Torrent Files (*.torrent) Fichiers torrents (*.torrent) - - Reason: %1 - Raison : %1 - - - + Add torrent to transfer list failed. - + Échec de l'ajout du torrent dans la liste de transfert. - + Reason: "%1" - + Raison : "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Raison : Le torrent créé est invalide. Il ne sera pas ajouté à la liste de téléchargement. + Échec de l'ajout du torrent - + Torrent creator Créateur de torrent - + Torrent created: Torrent créé : @@ -10394,32 +10928,32 @@ Veuillez en choisir un autre. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Échec du chargement de la configuration des dossiers surveillés. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Échec de l'analyse de la configuration des dossiers surveillés à partir de %1. Erreur : « %2 » - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Échec du chargement de la configuration des dossiers surveillés à partir de %1. Erreur : « Format de données invalide. » - + Couldn't store Watched Folders configuration to %1. Error: %2 Impossible de stocker la configuration des dossiers surveillés dans %1. Erreur : %2 - + Watched folder Path cannot be empty. Le chemin du dossier surveillé ne peut pas être vide. - + Watched folder Path cannot be relative. Le chemin du dossier surveillé ne peut pas être relatif. @@ -10427,27 +10961,27 @@ Veuillez en choisir un autre. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI du Magnet invalide. URI : %1. Raison : %2 - + Magnet file too big. File: %1 Fichier magnet trop volumineux. Fichier : %1 - + Failed to open magnet file: %1 Échec de l'ouverture du fichier magnet : %1 - + Rejecting failed torrent file: %1 Échec du rejet du fichier torrent : %1 - + Watching folder: "%1" Dossier de surveillance : %1 @@ -10455,14 +10989,12 @@ Veuillez en choisir un autre. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Impossible d'allouer de la mémoire lors de la lecture du fichier. Fichier : « %1 ». Erreur : « %2 » + Impossible d'allouer de la mémoire lors de la lecture du fichier. Fichier : « %1 ». Erreur : « %2 » - Invalid metadata - Métadonnées invalides + Métadonnées invalides @@ -10493,279 +11025,374 @@ Veuillez en choisir un autre. Utiliser un autre répertoire pour un torrent incomplet - + Category: Catégorie : - + + Torrent Share Limits + + + Torrent speed limits - Limites de vitesse du torrent + Limites de vitesse du torrent - + Download: Téléchargement : - - + + - - + + Torrent Speed Limits + + + + + KiB/s Kio/s - + These will not exceed the global limits Celles-ci ne dépasseront pas les limites globales - + Upload: Envoi : - Torrent share limits - Limites de partage du torrent + Limites de partage du torrent - Use global share limit - Utiliser la limite de partage globale + Utiliser la limite de partage globale - Set no share limit - Définir aucune limite de partage + Définir aucune limite de partage - Set share limit to - Définir la limite de partage à + Définir la limite de partage à - ratio - ratio + ratio - total minutes - minutes totales + minutes totales - inactive minutes - minutes inactives + minutes inactives - + Disable DHT for this torrent Désactiver le DHT pour ce torrent - + Download in sequential order Télécharger dans l'ordre séquentiel - + Disable PeX for this torrent Désactiver les PeX pour ce torrent - + Download first and last pieces first Télécharger les premiers et derniers morceaux en premier - + Disable LSD for this torrent Désactiver le LSD pour ce torrent - + Currently used categories Catégories actuellement utilisées - - + + Choose save path Choisir le répertoire de destination - + Not applicable to private torrents Non applicable aux torrents privés - No share limit method selected - Aucune méthode de limite de partage sélectionnée + Aucune méthode de limite de partage sélectionnée - Please select a limit method first - Merci de sélectionner d'abord un méthode de limite + Merci de sélectionner d'abord un méthode de limite - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Étiquettes du torrent + + + + + Default + Par défaut - - New Tag - Nouvelle étiquette + + + + Unlimited + Illimité - - Tag: - Étiquette : + + + + Set to + Définit à - - Invalid tag name - Nom de l’étiquette invalide + + Seeding time: + Temps en partage : - - Tag name '%1' is invalid. - Le nom de l’étiquette '%1' est invalide. + + + + + + + min + minutes + min - - Tag exists - L'étiquette existe déjà + + Inactive seeding time: + Temps en partage inactif : - - Tag name already exists. - Le nom de l'étiquette existe déjà. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Erreur : '%1' n'est pas un fichier torrent valide. + + Stop torrent + - - Priority must be an integer - La priorité doit être un nombre + + Remove torrent + Retirer le torrent - - Priority is not valid - Priorité invalide + + Remove torrent and its content + + + + + Enable super seeding for torrent + Activer le super partage pour ce torrent + + + + Ratio: + Ratio : + + + + TorrentTagsDialog + + + Torrent Tags + Étiquettes du torrent + + + New Tag + Nouvelle étiquette + + + + Add tag + + + + + Tag: + Étiquette : - + + Invalid tag name + Nom de l’étiquette invalide + + + + Tag name '%1' is invalid. + Le nom de l’étiquette '%1' est invalide. + + + + Tag exists + L'étiquette existe déjà + + + + Tag name already exists. + Le nom de l'étiquette existe déjà. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Erreur : '%1' n'est pas un fichier torrent valide. + + + + Priority must be an integer + La priorité doit être un nombre + + + + Priority is not valid + Priorité invalide + + + Torrent's metadata has not yet downloaded Les métadonnées du torrent n’ont pas encore été téléchargées - + File IDs must be integers Les identifiants de fichier doivent être des entiers - + File ID is not valid L'ID du fichier n'est pas valide - - - - + + + + Torrent queueing must be enabled La mise en file d'attente du torrent doit être activée - - + + Save path cannot be empty Le répertoire de destination ne peut être vide - - + + Cannot create target directory Impossible de créer le répertoire cible - - + + Category cannot be empty La catégorie ne peut être vide - + Unable to create category Impossible de créer la catégorie - + Unable to edit category Impossible d'éditer la catégorie - + Unable to export torrent file. Error: %1 Échec de l’exportation du fichier torrent. Erreur : %1 - + Cannot make save path Impossible de créer le répertoire de destination - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Le paramètre de tri 'sort' est invalide - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. « %1 » n’est pas un index de fichier valide. - + Index %1 is out of bounds. L’index %1 est hors limites. - - + + Cannot write to directory Impossible d'écrire dans le répertoire - + WebUI Set location: moving "%1", from "%2" to "%3" Définir l'emplacement de l'IU Web: déplacement de « %1 », de « %2 » vers « %3 » - + Incorrect torrent name Nom de torrent incorrect - - + + Incorrect category name Nom de catégorie incorrect @@ -10796,257 +11423,215 @@ Veuillez en choisir un autre. TrackerListModel - - + Working - En fonction + Fonctionnel - + Disabled - Désactivé + Désactivé - + Disabled for this torrent - Désactivé pour ce torrent + Désactivé pour ce torrent - + This torrent is private - Ce torrent est privé + Ce torrent est privé - + N/A - + N/D - + Updating... - Mise à jour en cours… + Mise à jour en cours… - + Not working - Ne fonctionne pas + Non fonctionnel - + Tracker error - + Erreur du tracker - + Unreachable - + Injoignable - + Not contacted yet - Pas encore contacté + Pas encore contacté - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Niveau + + BT Protocol + - - Protocol + + Next Announce - - Status + + Min Announce + + Invalid status! + État invalide ! + + + URL/Announce endpoint + URL/Terminaison de l'annonce + + + + Tier + Niveau + + + Protocol + Protocole + - Peers - Pairs + Status + État - Seeds - Sources + Peers + Pairs - Leeches - Téléchargeurs + Seeds + Sources - Times Downloaded - Nombre de fois téléchargé + Leeches + Téléchargeurs - Message - Message + Times Downloaded + Nombre de fois téléchargé + Message + Message + + Next announce - + Annonce suivante - Min announce - + Annonce minimum - v%1 - + v%1 TrackerListWidget - Working - En fonction - - - Disabled - Désactivé - - - Disabled for this torrent - Désactivé pour ce torrent - - - + This torrent is private Ce torrent est privé - Updating... - Mise à jour en cours… - - - Not working - Ne fonctionne pas - - - Not contacted yet - Pas encore contacté - - - N/A - N/A - - - + Tracker editing Édition du tracker - + Tracker URL: URL du tracker : - - + + Tracker editing failed Échec de l’édition du tracker - + The tracker URL entered is invalid. L'URL du tracker saisie est invalide. - + The tracker URL already exists. L'URL du tracker existe déjà. - + Edit tracker URL... Éditer l'URL du tracker… - + Remove tracker Retirer le tracker - + Copy tracker URL Copier l'URL du tracker - + Force reannounce to selected trackers Forcer la réannonce aux trackers sélectionnés - + Force reannounce to all trackers Forcer la réannonce à tous les trackers - Tier - Niveau - - - URL - URL - - - Status - État - - - Seeds - Sources - - - Times Downloaded - Nombre de fois téléchargé - - - + Resize columns Redimensionner les colonnes - + Resize all non-hidden columns to the size of their contents Redimensionner toutes les colonnes non masquées à la taille de leur contenu - Peers - Pairs - - - + Add trackers... Ajouter des trackers… - Leeches - Téléchargeurs - - - Message - Message - - - + Column visibility Visibilité de la colonne @@ -11064,37 +11649,37 @@ Veuillez en choisir un autre. Liste des trackers à ajouter (un par ligne) : - + µTorrent compatible list URL: URL de la liste compatible µTorrent : - + Download trackers list Télécharger la liste des trackers - + Add Ajouter - + Trackers list URL error Erreur d'URL de la liste des trackers - + The trackers list URL cannot be empty L'URL de la liste des trackers ne peut pas être vide - + Download trackers list error Erreur lors du téléchargement de la liste des trackers - + Error occurred when downloading the trackers list. Reason: "%1" Une erreur s'est produite lors du téléchargement de la liste des trackers. Raison : « %1 » @@ -11102,87 +11687,70 @@ Veuillez en choisir un autre. TrackersFilterWidget - All (0) - this is for the tracker filter - Tous (0) - - - Trackerless (0) - Sans tracker (0) - - - Error (0) - Erreur (0) - - - Warning (0) - Alerte (0) + + Warning (%1) + Avertissements (%1) - Trackerless - Sans tracker + + Trackerless (%1) + Sans tracker (%1) - Error (%1) - Erreur (%1) + + Tracker error (%1) + Erreur du tracker (%1) - Warning (%1) - Alerte (%1) + Other error (%1) + Autre erreur (%1) - - Trackerless (%1) - Sans tracker (%1) + + Remove tracker + Retirer le tracker - - Tracker error (%1) + + Start torrents - - Other error (%1) + + Stop torrents - - Remove tracker - Retirer le tracker - - - Resume torrents - Démarrer les torrents + Démarrer les torrents - Pause torrents - Mettre en pause les torrents + Mettre en pause les torrents - + Remove torrents Retirer les torrents - + Removal confirmation - + Confirmation du retrait - + Are you sure you want to remove tracker "%1" from all torrents? - + Êtes-vous sûr de vouloir supprimer le tracker "%1" de tous les torrents ? - + Don't ask me again. - + Ne pas me redemander. - + All (%1) this is for the tracker filter Tous (%1) @@ -11191,7 +11759,7 @@ Veuillez en choisir un autre. TransferController - + 'mode': invalid argument 'mode' : argument invalide @@ -11284,14 +11852,13 @@ Veuillez en choisir un autre. Vérification des données de reprise - Paused - En pause + En pause Completed - Terminé + Complété @@ -11308,223 +11875,265 @@ Veuillez en choisir un autre. Errored Torrent status, the torrent has an error - Erreur + Erroné - + Name i.e: torrent name Nom - + Size i.e: torrent size Taille - + Progress % Done Progression - Status Torrent status (e.g. downloading, seeding, paused) - État + État - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + + + + Seeds i.e. full sources (often untranslated) Sources - + Peers i.e. partial sources (often untranslated) Pairs - + Down Speed i.e: Download speed Réception - + Up Speed i.e: Upload speed Envoi - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Temps restant estimé - + Category Catégorie - + Tags Étiquettes - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Ajouté le - + Completed On Torrent was completed on 01/01/2010 08:00 - Terminé le + Complété le - + Tracker Tracker - + Down Limit i.e: Download limit Limite de réception - + Up Limit i.e: Upload limit Limite d'envoi - + Downloaded Amount of data downloaded (e.g. in MB) Téléchargé - + Uploaded Amount of data uploaded (e.g. in MB) Envoyé - + Session Download Amount of data downloaded since program open (e.g. in MB) Téléchargé durant la session - + Session Upload Amount of data uploaded since program open (e.g. in MB) Envoi durant la session - + Remaining Amount of data left to download (e.g. in MB) Restant - + + Time Active + Time (duration) the torrent is active (not stopped) + Actif pendant + + + + Yes + Oui + + + + No + Non + + Time Active Time (duration) the torrent is active (not paused) - Actif pendant + Actif pendant - + Save Path Torrent save path Répertoire de destination - + Incomplete Save Path Torrent incomplete save path Répertoire de destination incomplet - + Completed Amount of data completed (e.g. in MB) - Terminé + Complété - + Ratio Limit Upload share ratio limit Limite du ratio - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Dernière fois vu complet - + Last Activity Time passed since a chunk was downloaded/uploaded Dernière activité - + Total Size i.e. Size including unwanted data Taille totale - + Availability The number of distributed copies of the torrent Disponibilité - + Info Hash v1 i.e: torrent info hash v1 Info hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Réannonce dans + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/D - + %1 ago e.g.: 1h 20m ago Il y a %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (partagé pendant %2) @@ -11533,334 +12142,358 @@ Veuillez en choisir un autre. TransferListWidget - + Column visibility Visibilité des colonnes - + Recheck confirmation Revérifier la confirmation - + Are you sure you want to recheck the selected torrent(s)? Êtes-vous sur de vouloir revérifier le ou les torrent(s) sélectionné(s) ? - + Rename Renommer - + New name: Nouveau nom : - + Choose save path Choix du répertoire de destination - Confirm pause - Confirmer la mise en pause + Confirmer la mise en pause - Would you like to pause all torrents? - Souhaitez-vous mettre en pause tous les torrents ? + Souhaitez-vous mettre en pause tous les torrents ? - Confirm resume - Confirmer la reprise + Confirmer la reprise - Would you like to resume all torrents? - Souhaitez-vous reprendre tous les torrents ? + Souhaitez-vous reprendre tous les torrents ? - + Unable to preview Impossible de prévisualiser - + The selected torrent "%1" does not contain previewable files Le torrent sélectionné « %1 » ne contient pas de fichier prévisualisable - + Resize columns Redimensionner les colonnes - + Resize all non-hidden columns to the size of their contents Redimensionner toutes les colonnes non masquées à la taille de leur contenu - + Enable automatic torrent management Activer la gestion de torrent automatique - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Êtes-vous certain de vouloir activer la gestion de torrent automatique pour le(s) torrent(s) sélectionné(s) ? Ils pourraient être déplacés. - Add Tags - Ajouter des étiquettes + Ajouter des étiquettes - + Choose folder to save exported .torrent files Choisir le dossier pour enregistrer les fichiers .torrent exportés - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Échec de l'exportation du fichier .torrent. Torrent : « %1 ». Répertoire de destination : « %2 ». Raison : « %3 » - + A file with the same name already exists Un fichier du même nom existe déjà - + Export .torrent file error Erreur d’exportation du fichier .torrent - + Remove All Tags Retirer toutes les étiquettes - + Remove all tags from selected torrents? Retirer toutes les étiquettes des torrents sélectionnés ? - + Comma-separated tags: Étiquettes séparées par des virgules : - + Invalid tag Étiquette invalide - + Tag name: '%1' is invalid Nom d'étiquette : '%1' est invalide - &Resume Resume/start the torrent - &Reprendre + &Reprendre - &Pause Pause the torrent - Mettre en &pause + Mettre en &pause - Force Resu&me Force Resume/start the torrent - &Forcer la reprise + &Forcer la reprise - + Pre&view file... Pré&visualiser le fichier… - + Torrent &options... &Options du torrent… - + Open destination &folder Ouvrir le répertoire de &destination - + Move &up i.e. move up in the queue Déplacer vers le &haut - + Move &down i.e. Move down in the queue Déplacer vers le &bas - + Move to &top i.e. Move to top of the queue Déplacer au hau&t - + Move to &bottom i.e. Move to bottom of the queue Déplacer au &bas - + Set loc&ation... Définir l’emp&lacement… - + Force rec&heck For&cer une revérification - + Force r&eannounce Forcer une réannonc&e - + &Magnet link Lien &magnet - + Torrent &ID &ID du torrent - + + &Comment + &Commentaire + + + &Name &Nom - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Re&nommer… - + Edit trac&kers... Éditer les trac&kers… - + E&xport .torrent... E&xporter le .torrent… - + Categor&y Catégor&ie - + &New... New category... &Nouvelle… - + &Reset Reset category &Réinitialiser - + Ta&gs Éti&quettes - + &Add... Add / assign multiple tags... &Ajouter… - + &Remove All Remove all tags &Retirer tout - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &File d’attente - + &Copy &Copier - + Exported torrent is not necessarily the same as the imported Le torrent exporté n'est pas nécessairement le même que celui importé - + Download in sequential order Télécharger dans l'ordre séquentiel - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Des erreurs se sont produites lors de l’exportation des fichiers .torrent. Consultez le journal d’exécution pour plus de détails. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Retirer - + Download first and last pieces first Télécharger les premiers et derniers morceaux en premier - + Automatic Torrent Management Gestion de torrent automatique - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Le mode automatique signifie que diverses propriétés du torrent (p. ex. le répertoire de destination) seront décidées par la catégorie associée - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Impossible de forcer la réannonce si le torrent est en pause / file d’attente / erreur / cours de vérification + Impossible de forcer la réannonce si le torrent est en pause / file d’attente / erroné / cours de vérification - + Super seeding mode Mode de super-partage @@ -11905,28 +12538,28 @@ Veuillez en choisir un autre. ID de l’icône - + UI Theme Configuration. Configuration du thème de l'interface. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - Les changements du thème de l'interface n'ont pas pu être pleinement appliqués. Les détails peuvent être trouvés dans les logs. + Les changements du thème de l'interface n'ont pas pu être pleinement appliqués. Les détails peuvent être trouvés dans le fichier journal. - + Couldn't save UI Theme configuration. Reason: %1 La configuration du thème de l'interface n'a pas pu être sauvegardé. Raison: %1 - - + + Couldn't remove icon file. File: %1. Le fichier d'icône n'a pas pu être retiré. Fichier: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Le fichier d'icône n'a pas pu être copié. Source: %1. Destination: %2. @@ -11934,7 +12567,12 @@ Veuillez en choisir un autre. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Échec du chargement du thème de l'IU à partir du fichier : « %1 » @@ -11965,89 +12603,82 @@ Veuillez en choisir un autre. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Échec de la migration des préférences : IU Web HTTPS, fichier : « %1 », erreur : « %2 » - + Migrated preferences: WebUI https, exported data to file: "%1" Échec de la migration des préférences : IU Web HTTPS, données exportées vers le fichier : « %1 » - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Valeur invalide trouvée dans le fichier de configuration, rétablissement de sa valeur par défaut. Clé : « %1 ». Valeur invalide : « %2 ». Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python détecté, nom de l'exécutable : '%1', version : %2 - - - Python not detected - Python non détecté - Found Python executable. Name: "%1". Version: "%2" - + Exécutable Python trouvé. Nom : "%1". Version : "%2" Failed to find Python executable. Path: "%1". - + Exécutable Python non trouvé. Chemin : "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Exécutable 'python3' non trouvé dans la variable d'environnement PATH. PATH : "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Exécutable 'python' non trouvé dans la variable d'environnement PATH. PATH : "%1" Failed to find `python` executable in Windows Registry. - + Exécutable 'python' non trouvé dans le registre Windows. Failed to find Python executable - + Exécutable Python non trouvé Utils::IO - + File open error. File: "%1". Error: "%2" Erreur à l’ouverture du fichier. Fichier : « %1 ». Erreur : « %2 » - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 La taille du fichier dépasse la limite. Fichier : « %1 ». Taille du fichier : %2. Taille limite : %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + La taille du fichier dépasse la taille limite. Fichier : "%1". Taille du fichier : "%2". Limite : "%3" - + File read error. File: "%1". Error: "%2" Erreur de lecture d'un fichier. Fichier : « %1 ». Erreur : « %2 » - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Disparité de la taille lors de la lecture. Fichier : « %1 ». Attendu : %2. Réelle : %3 @@ -12111,72 +12742,72 @@ Veuillez en choisir un autre. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Un nom de cookie de session inacceptable est spécifié : '%1'. Celui par défaut est utilisé. - + Unacceptable file type, only regular file is allowed. Type de fichier inacceptable, seul un fichier normal est autorisé. - + Symlinks inside alternative UI folder are forbidden. Les liens symboliques sont interdits dans les dossiers d'IU alternatives. - - Using built-in Web UI. + + Using built-in WebUI. Utilisation de l'IU Web intégrée. - - Using custom Web UI. Location: "%1". - Utilisation d'une IU Web personnalisée. Emplacement: « %1 ». + + Using custom WebUI. Location: "%1". + Utilisation d'une IU Web personnalisée. Emplacement : « %1 ». - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. La traduction de l'IU Web pour les paramètres régionaux sélectionnés (%1) a été chargée avec succès. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). Impossible de charger la traduction de l'IU Web pour les paramètres régionaux sélectionnés (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Séparateur ':' manquant dans l'en-tête HTTP personnalisé de l'IU Web : « %1 » - + Web server error. %1 Erreur du serveur Web. %1 - + Web server error. Unknown error. Erreur de serveur Web. Erreur inconnue. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' IU Web : Disparité entre l'en-tête d'origine et l'origine de la cible ! IP source : '%1'. En-tête d'origine : '%2'. Origine de la cible : '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' IU Web : Disparité entre l'en-tête du référent et l'origine de la cible ! IP source : '%1'. En-tête du référent : '%2'. Origine de la cible : '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' IU Web : En-tête d'hôte invalide, non-concordance du port. IP source de la requête : '%1'. Port du serveur : '%2'. En-tête d'hôte reçu : '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' IU Web : En-tête d'hôte invalide. IP source de la requête : '%1'. En-tête d'hôte reçu : '%2' @@ -12184,143 +12815,136 @@ Veuillez en choisir un autre. WebUI - - Web UI: HTTPS setup successful - IU Web : configuration HTTPS réussie + + Credentials are not set + Les informations d'identification ne sont pas définies + + + + WebUI: HTTPS setup successful + IU Web : Configuration HTTPS réussie - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP IU Web : Échec de la configuration HTTPS, retour à HTTP - - Web UI: Now listening on IP: %1, port: %2 - IU Web : En écoute sur IP : %1, port : %2 + + WebUI: Now listening on IP: %1, port: %2 + IU Web : En écoute sur l'adresse IP : %1, port : %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + IU Web : Impossible de se lier à l'adresse IP : %1, port : %2. Raison : %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - IU Web : Impossible de se relier à l'adresse IP : %1, port : %2. Raison : %3 + + Unknown error + Erreur inconnue misc - + B bytes Oct - + KiB kibibytes (1024 bytes) Kio - + MiB mebibytes (1024 kibibytes) Mio - + GiB gibibytes (1024 mibibytes) Gio - + TiB tebibytes (1024 gibibytes) Tio - + PiB pebibytes (1024 tebibytes) Pio - + EiB exbibytes (1024 pebibytes) Eio - + /s per second /s - + %1s e.g: 10 seconds - %1min {1s?} + %1s - + %1m e.g: 10 minutes - %1min + %1 min - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1 h %2 min - + %1d %2h e.g: 2 days 10 hours - %1j %2h + %1j %2h - + %1y %2d e.g: 2 years 10 days - %1 a %2 j + %1 a %2 j - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1j %2h - - - %1y %2d - e.g: 2years 10days - %1 a %2 j - - - - + + Unknown Unknown (size) Inconnue - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent va maintenant éteindre l'ordinateur car tous les téléchargements sont terminés. - + < 1m < 1 minute < 1min - - %1m - e.g: 10minutes - %1min - diff --git a/src/lang/qbittorrent_gl.ts b/src/lang/qbittorrent_gl.ts index 551f0c0d689c..a35d756ba2da 100644 --- a/src/lang/qbittorrent_gl.ts +++ b/src/lang/qbittorrent_gl.ts @@ -14,77 +14,77 @@ Sobre - + Authors Autores - + Current maintainer Responsábel actual - + Greece Grecia - - + + Nationality: Nacionalidade: - - + + E-mail: Correo-e: - - + + Name: Nome: - + Original author Autor orixinal - + France Francia - + Special Thanks Grazas especiais a - + Translators Tradutores - + License Licenza - + Software Used Software usado - + qBittorrent was built with the following libraries: qBittorrent construiuse coas seguintes bibliotecas: - + Copy to clipboard - + Copiar no portapapeis @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Dereitos de autor %1 ©2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Dereitos de autor %1 ©2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Gardar como - + Never show again Non mostrar de novo - Torrent settings - Opcións torrent + Opcións torrent @@ -191,12 +190,12 @@ Iniciar o torrent - + Torrent information Información do torrent - + Skip hash check Saltar a comprobación hash @@ -205,20 +204,25 @@ Use another path for incomplete torrent Usar outra ruta para os torrents incompletos + + + Torrent options + + Tags: - + Etiquetas: Click [...] button to add/remove tags. - + Fai clic no botón [...] para engadir/eliminar etiquetas. Add/remove tags - + Engadir/eliminar etiquetas @@ -228,73 +232,78 @@ Stop condition: - + Condición de parada: - - + + None - + Ningún - - + + Metadata received - + Metadatos recibidos + + + + Torrents that have metadata initially will be added as stopped. + Os torrents que teñan metadatos inicialmente engadiranse como parados. - - + + Files checked - + Ficheiros comprobados - + Add to top of queue - + Engadir á parte superior da cola - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Se está marcado, o ficheiro .torrent non se eliminará a pesar dos axustes na páxina «Descargas» do diálogo de opcións - + Content layout: Disposición do contido: - + Original Orixinal - + Create subfolder Crear subcartafol - + Don't create subfolder Non crear subcartafol - + Info hash v1: Info hash v1: - + Size: Tamaño: - + Comment: Comentario: - + Date: Data: @@ -324,245 +333,182 @@ Lembrar a última ruta usada para gardar - + Do not delete .torrent file Non eliminar o ficheiro .torrent - + Download in sequential order Descargar en orde secuencial - + Download first and last pieces first Descargar primeiro os anacos inicial e final - + Info hash v2: Información do hash v2: - + Select All Seleccionar todo - + Select None Non seleccionar nada - + Save as .torrent file... Gardar como ficheiro .torrent... - + I/O Error Erro de E/S - Invalid torrent - Torrent incorrecto - - - + Not Available This comment is unavailable Non dispoñíbel - + Not Available This date is unavailable Non dispoñíbel - + Not available Non dispoñíbel - Invalid magnet link - Ligazón magnet incorrecta - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Produciuse un fallo cargando o torrent: %1. -Erro: %2 - - - This magnet link was not recognized - Non se recoñeceu esta ligazón magnet - - - + Magnet link Ligazón magnet - + Retrieving metadata... Recuperando os metadatos... - - + + Choose save path Seleccionar a ruta onde gardar - Torrent is already present - O torrent xa existe - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - O torrent «%1» xa está na lista de transferencias. Non se combinaron os localizadores porque é un torrent privado. - - - Torrent is already queued for processing. - O torrent xa está na cola para ser procesado. - - - + No stop condition is set. - + Non se establece ningunha condición de parada. - + Torrent will stop after metadata is received. - - - - - Torrents that have metadata initially aren't affected. - + O torrent deterase despois de recibir os metadatos. - + Torrent will stop after files are initially checked. - + O torrent deterase despois de que se comproben inicialmente os ficheiros. - + This will also download metadata if it wasn't there initially. - + Isto tamén descargará metadatos se non estaban alí inicialmente. - - + + N/A N/D - Magnet link is already queued for processing. - A ligazón magnet xa está na cola para ser procesada. - - - + %1 (Free space on disk: %2) %1 (espazo libre no disco: %2) - + Not available This size is unavailable. Non dispoñíbel - + Torrent file (*%1) Ficheiro torrent (*%1) - + Save as torrent file Gardar como ficheiro torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Non foi posíbel exportar os metadatos do torrent: «%1». Razón: %2. - + Cannot create v2 torrent until its data is fully downloaded. Non é posíbel crear torrent v2 ata que se descarguen todos os datos. - Cannot download '%1': %2 - Non é posíbel descargar «%1»: %2 - - - + Filter files... Filtrar ficheiros... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - O torrent «%1» xa está na lista de transferencias. Non se combinaron os localizadores porque é un torrent privado. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - O torrent «%1» xa está na lista de transferencias. Quere combinar os localizadores da nova fonte? - - - + Parsing metadata... Analizando os metadatos... - + Metadata retrieval complete Completouse a recuperación dos metadatos - - Failed to load from URL: %1. -Error: %2 - Produciuse un fallo cargando desde o URL: %1. -Erro: %2 - - - Download Error - Erro de descarga - AddTorrentManager Downloading torrent... Source: "%1" - + Descargando torrent... Fonte: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Produciuse un erro ao engadir o torrent. Fonte: "%1". Motivo: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Detectouse un intento de engadir un torrent duplicado. Fonte: %1. Torrent existente: %2. Resultado: %3 - + Merging of trackers is disabled - + A combinación de rastrexadores está desactivada - + Trackers cannot be merged because it is a private torrent - + Non se poden combinar os rastrexadores porque é un torrent privado - + Trackers are merged from new source - + Os rastreadores combínanse desde unha nova fonte @@ -590,7 +536,7 @@ Erro: %2 Note: the current defaults are displayed for reference. - + Nota: os valores predeterminados actuais móstranse como referencia. @@ -605,17 +551,17 @@ Erro: %2 Tags: - + Etiquetas: Click [...] button to add/remove tags. - + Fai clic no botón [...] para engadir/eliminar etiquetas. Add/remove tags - + Engadir/eliminar etiquetas @@ -625,7 +571,7 @@ Erro: %2 Start torrent: - + Iniciar torrent: @@ -635,12 +581,12 @@ Erro: %2 Stop condition: - + Condición de parada: Add to top of queue: - + Engadir á parte superior da cola: @@ -648,807 +594,930 @@ Erro: %2 Saltar a comprobación hash - - - Choose save path - Seleccionar unha ruta onde gardar + + Torrent share limits + Límites de compartición do torrent - - - - - - - Default - Predeterminado + + + Choose save path + Seleccionar unha ruta onde gardar + + + - Yes - Si + Default + Predeterminado + Yes + Si + + + + + No Non - + Manual Manual - + Automatic Automático - + Original Orixinal - + Create subfolder Crear subcartafol - + Don't create subfolder Non crear subcartafol - + None - + Ningún - + Metadata received - + Metadatos recibidos - + Files checked - + Ficheiros comprobados AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Volver comprobar os torrents ao rematar - - + + ms milliseconds ms - + Setting Configuración - + Value Value set for this setting Valor - + (disabled) (desactivado) - + (auto) (auto) - + + min minutes min. - + All addresses Todos os enderezos - + qBittorrent Section Sección qBittorrent - - + + Open documentation Abrir a documentación - + All IPv4 addresses Todos os enderezos IPv4 - + All IPv6 addresses Todos os enderezos IPv6 - + libtorrent Section Sección libtorrent - + Fastresume files Ficheiros de continuación rápida - + SQLite database (experimental) Base de datos SQLite (experimental) - + Resume data storage type (requires restart) Tipo de almacenaxe dos datos de continuación (necesita reiniciar) - + Normal Normal - + Below normal Inferior ao normal - + Medium Medio - + Low Baixo - + Very low Moi baixo - - Process memory priority (Windows >= 8 only) - Prioridade da memoria do proceso (Só en Windows >= 8) - - - + Physical memory (RAM) usage limit Límite de uso de memoria física (RAM) - + Asynchronous I/O threads Supbrocesos de E/S asíncronos - + Hashing threads Fíos do hash - + File pool size Tamaño da agrupación de ficheiros - + Outstanding memory when checking torrents Memoria adicional na comprobación dos torrents - + Disk cache Caché do disco - - - - + + + + s seconds s - + Disk cache expiry interval Intervalo de caducidade da caché do disco - + Disk queue size Tamaño da cola en disco - - + + Enable OS cache Activar a caché do SO - + Coalesce reads & writes Fusionar lecturas e escrituras - + Use piece extent affinity Usar similitude no tamaño dos anacos - + Send upload piece suggestions Enviar suxestións de anacos para subida - - - - + + + + + 0 (disabled) - + 0 (desactivado) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Intervalo de gardado de datos de reanudación [0: desactivado] - + Outgoing ports (Min) [0: disabled] - + Portos de saída (mínimo) [0: desactivado] - + Outgoing ports (Max) [0: disabled] - + Portos de saída (máx.) [0: desactivado] - + 0 (permanent lease) - + 0 (concesión permanente) - + UPnP lease duration [0: permanent lease] - + Duración da concesión UPnP [0: concesión permanente] - + Stop tracker timeout [0: disabled] - + Deter o tempo de espera do rastrexador [0: desactivado] - + Notification timeout [0: infinite, -1: system default] - + Tempo de espera da notificación [0: infinito, -1: predeterminado do sistema] - + Maximum outstanding requests to a single peer Límite de peticións extraordinarias por par - - - - - + + + + + KiB KiB - + (infinite) - + (infinito) - + (system default) + (predeterminado do sistema) + + + + Delete files permanently + + + + + Move files to trash (if possible) - + + Torrent content removing mode + + + + This option is less effective on Linux Esta opción é menos importante en Linux - + + Process memory priority + Prioridade da memoria do proceso + + + Bdecode depth limit - + Límite de profundidade de Bdecode - + Bdecode token limit - + Límite de token Bdecode - + Default Predeterminado - + Memory mapped files Ficheiros cargados en memoria - + POSIX-compliant Compatible coa POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipo de E/S de disco (precisarase reiniciar) - - + + Disable OS cache Desactivar a caché do SO - + Disk IO read mode Modo de lectura en disco - + Write-through Escritura simultánea - + Disk IO write mode Modo de escritura en disco - + Send buffer watermark Nivel do búfer de envío - + Send buffer low watermark Nivel baixo do búfer de envío - + Send buffer watermark factor Factor do nivel do búfer de envío - + Outgoing connections per second Conexións saíntes por segundo - - + + 0 (system default) - + 0 (predeterminado do sistema) - + Socket send buffer size [0: system default] - + Tamaño do búfer de envío do socket [0: predeterminado do sistema] - + Socket receive buffer size [0: system default] - + Tamaño do búfer de recepción do socket [0: predeterminado do sistema] - + Socket backlog size Tamaño dos traballos pendentes do socket - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + Límite de tamaño do ficheiro .torrent + + + Type of service (ToS) for connections to peers Tipo de servizo (TdS) para as conexións cos pares - + Prefer TCP Preferir TCP - + Peer proportional (throttles TCP) Par proporcional (compensa a velocidade do TCP) - + Support internationalized domain name (IDN) Admisión de nomes de dominio internacionalizados (IDN) - + Allow multiple connections from the same IP address Permitir múltiples conexións desde a mesma IP - + Validate HTTPS tracker certificates Validar os certificados HTTPS dos localizadores - + Server-side request forgery (SSRF) mitigation Mitigación da falsificación de solicitudes do lado do servidor (SSRF) - + Disallow connection to peers on privileged ports Non permitir conexións con pares en portos privilexiados - + + It appends the text to the window title to help distinguish qBittorent instances + Engade o texto ao título da xanela para axudar a distinguir as instancias de qBittorent + + + + Customize application instance name + Personaliza o nome da instancia da aplicación + + + It controls the internal state update interval which in turn will affect UI updates Controla a frecuencia de actualización do estado interno, o que afecta a frecuencia de actualización da interface - + Refresh interval Intervalo de actualización - + Resolve peer host names Mostrar os servidores dos pares - + IP address reported to trackers (requires restart) Enderezo IP informada aos localizadores (necesita reiniciar) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Anunciar de novo a todos os localizadores cando a IP ou o porto cambien - + Enable icons in menus Activar iconas nos menús - + Enable port forwarding for embedded tracker + Activa o reenvío de portos para o rastrexador incorporado + + + + Enable quarantine for downloaded files + Activar corentena para os ficheiros descargados + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Activa a marca da web (MOTW) para os ficheiros descargados + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - - (Auto detect if empty) + + Ignore SSL errors - + + (Auto detect if empty) + (Detección automática se está baleiro) + + + Python executable path (may require restart) + Camiño do executable de Python (pode requirir reinicio) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + s + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirmar a eliminación do rastrexador de todos os torrents + + + Peer turnover disconnect percentage Porcentaxe de desconexión da rotación de pares - + Peer turnover threshold percentage Porcentaxe límite de desconexión da rotación de pares - + Peer turnover disconnect interval Intervalo de desconexión da rotación de pares - + Resets to default if empty - + Restablece aos valores predeterminados se está baleiro - + DHT bootstrap nodes - + Nodos de arranque DHT - + I2P inbound quantity - + Cantidade de conexións entrantes I2P - + I2P outbound quantity - + Cantidade de conexións saintes I2P - + I2P inbound length - + Duración das conexións entrantes I2P - + I2P outbound length - + Duración das conexións saintes I2P - + Display notifications Mostrar as notificacións - + Display notifications for added torrents Mostrar as notificacións dos torrents engadidos - + Download tracker's favicon Descargar iconas dos localizadores - + Save path history length Gardar o tamaño do historial de rutas - + Enable speed graphs Activar gráficos de velocidade - + Fixed slots Slots fixos - + Upload rate based Baseado na velocidade de envío - + Upload slots behavior Comportamento dos slots de envío - + Round-robin Round-robin - + Fastest upload Envío máis rápido - + Anti-leech Anti-samesugas - + Upload choking algorithm Algoritmo de rexeitamento de envíos - + Confirm torrent recheck Confirmar nova comprobación do torrent - + Confirm removal of all tags Confirmar a eliminación de todas as etiquetas - + Always announce to all trackers in a tier Anunciar sempre a todos os localizadores dun nivel - + Always announce to all tiers Anunciar sempre a todos os niveis - + Any interface i.e. Any network interface Calquera interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritmo modo mixto %1-TCP - + Resolve peer countries Mostrar os países dos pares - + Network interface Interface de rede - + Optional IP address to bind to Enderezo IP opcional ao que ligar - + Max concurrent HTTP announces Anuncios HTTP simultáneos máximos - + Enable embedded tracker Activar o localizador integrado - + Embedded tracker port Porto do localizador integrado - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - Iniciouse o qBittorrent %1 + + + Invalid directory path + - - Running in portable mode. Auto detected profile folder at: %1 + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + + Running in portable mode. Auto detected profile folder at: %1 Executándose en modo portátil. Cartafol do perfil detectado automaticamente en: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Detectouse unha marca en liña de ordes redundante: «%1». O modo portátil implica continuacións rápidas relativas. - + Using config directory: %1 Usando o cartafol de configuración: %1 - + Torrent name: %1 Nome do torrent: %1 - + Torrent size: %1 Tamaño do torrent: %1 - + Save path: %1 Ruta onde gardar: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds O torrent descargouse en %1. - + + Thank you for using qBittorrent. Grazas por usar o qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, enviando notificación por correo electrónico - + Add torrent failed - + Engadir torrent fallou - + Couldn't add torrent '%1', reason: %2. - + Non se puido engadir o torrent '%1', razón: %2. + + + + The WebUI administrator username is: %1 + O nome de usuario do administrador da WebUI é: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Non se fixou un contrasinal para o administrador da WebUI. Proporcionase un contrasinal temporal para esta sesión: %1 + + + + You should set your own password in program preferences. + Deberías establecer o teu propio contrasinal nas preferencias do programa. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + A WebUI (interface de usuario web) está desactivada! Para habilitar a WebUI, edita manualmente o ficheiro de configuración. - + Running external program. Torrent: "%1". Command: `%2` Executar programa externo. Torrent: «%1». Orde: «%2» - + Failed to run external program. Torrent: "%1". Command: `%2` - + Fallou ao executar o programa externo. Torrent: '%1'. Comando: `%2` - + Torrent "%1" has finished downloading Rematou a descarga do torrent «%1» - + WebUI will be started shortly after internal preparations. Please wait... A interface web iniciarase tras unha breve preparación. Agarde... - - + + Loading torrents... Cargando torrents... - + E&xit &Saír - + I/O Error i.e: Input/Output Error Fallo de E/S - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Erro: %2 Razón: %2 - Error - Fallo - - - Failed to add torrent: %1 - Non se puido engadir o torrent %1 - - - + Torrent added Engadiuse o torrent - + '%1' was added. e.g: xxx.avi was added. Engadiuse «%1». - + Download completed Descarga completada - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Rematou a descarga de «%1» - - - URL download error - Non se puido descargar mediante a URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 iniciado. Identificador do proceso: %2 - Couldn't download file at URL '%1', reason: %2. - Non foi posíbel descargar o ficheiro dende a URL: %1, razón: %2. + + This is a test email. + - Torrent file association - Acción asociada aos ficheiros torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent non é o aplicativo predefinido para abrir os ficheiros torrent nin as ligazóns Magnet -Desexa facer do qBittorrent o aplicativo predeterminado para estes ficheiros? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Rematou a descarga de «%1» - + Information Información - + To fix the error, you may need to edit the config file manually. - + Para solucionar o erro, pode que necesites editar manualmente o ficheiro de configuración. - + To control qBittorrent, access the WebUI at: %1 Para controlar o qBittorrent, acceda á interface web en : %1 - - The Web UI administrator username is: %1 - Nome do usuario administrador da interface web é: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - O contrasinal do administrador da interface web non se cambiou do predefinido: %1 - - - - This is a security risk, please change your password in program preferences. - Isto é un risco de seguranza, debería cambiar o seu contrasinal nas preferencias do programa. - - - Application failed to start. - Produciuse un fallo iniciando o aplicativo - - - + Exit Saír - + Recursive download confirmation - Confirmación de descarga recursiva + Confirmación de descarga recursiva - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + O torrent '%1' contén arquivos .torrent. Queres continuar coas súas descargas? - + Never - Nunca + Nunca - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Descarga recursiva dun ficheiro .torrent dentro do torrent. Torrent fonte: '%1'. Ficheiro: '%2' - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Non se puido limitar o uso de memoria física (RAM). Código de fallo: %1. Mensaxe de fallo: «%2» - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Fallou ao establecer o límite máximo de uso de memoria física (RAM). Tamaño solicitado: %1. Límite máximo do sistema: %2. Código de erro: %3. Mensaxe de erro: '%4' - + qBittorrent termination initiated Inicializado qBittorrent - + qBittorrent is shutting down... O qBittorrent vai pechar... - + Saving torrent progress... Gardando o progreso do torrent... - + qBittorrent is now ready to exit qBittorrent está preparado para o apagado @@ -1597,7 +1637,7 @@ Desexa facer do qBittorrent o aplicativo predeterminado para estes ficheiros?
    AsyncFileStorage - + Could not create directory '%1'. Non foi posíbel crear o cartafol «%1». @@ -1605,22 +1645,22 @@ Desexa facer do qBittorrent o aplicativo predeterminado para estes ficheiros? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Produciuse un fallo no inicio de sesión da WebAPI. Razón: o IP foi bloqueado, IP: %1, nome do usuario: %2 - + Your IP address has been banned after too many failed authentication attempts. A súa IP foi bloqueada despois de varios fallos de autenticación. - + WebAPI login success. IP: %1 A sesión iniciouse correctamente na WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Produciuse un fallo no inicio de sesión da WebAPI. Razón: credenciais incorrectas, número de intentos: %1, IP: %2, nome do usuario: %3 @@ -1660,20 +1700,20 @@ Desexa facer do qBittorrent o aplicativo predeterminado para estes ficheiros? Rename selected rule. You can also use the F2 hotkey to rename. - + Renomea a regra seleccionada. Tamén podes usar a tecla de atallo F2 para renomear. Priority: - + Prioridade: - + Must Not Contain: Non debe conter: - + Episode Filter: Filtro de episodios: @@ -1726,263 +1766,263 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d &Exportar... - + Matches articles based on episode filter. Resultados co filtro de episodios. - + Example: Exemplo: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match son os episodios 2, 5 e 8 até o 15, e do 30 en adiante da primeira tempada - + Episode filter rules: Regras do filtro de episodios: - + Season number is a mandatory non-zero value O número da tempada non pode ser cero - + Filter must end with semicolon O filtro debe rematar con punto e coma - + Three range types for episodes are supported: Acéptanse tres tipos de intervalo para os episodios: - + Single number: <b>1x25;</b> matches episode 25 of season one Número simple: <b>1x25;</b> é o episodio 25 da primeira tempada - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Intervalo normal: <b>1x25-40;</b> son os episodios 25 ao 40 da primeira tempada - + Episode number is a mandatory positive value O número de episodio debe ser un número positivo - + Rules Regras - + Rules (legacy) Regras (herdadas) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Intervalo infinito: <b>1x25-;</b> son os episodios do 25 en diante da primeira tempada e todos os episodios das tempadas seguintes - + Last Match: %1 days ago Último resultado: hai %1 días - + Last Match: Unknown Último resultado: descoñecido - + New rule name Nome da regra nova - + Please type the name of the new download rule. Escriba o nome da regra de descarga nova. - - + + Rule name conflict Conflito co nome da regra - - + + A rule with this name already exists, please choose another name. Xa existe unha regra con este nome. Escolla un diferente. - + Are you sure you want to remove the download rule named '%1'? Confirma a eliminación da regra de descarga chamada %1? - + Are you sure you want to remove the selected download rules? Confirma a eliminación das regras de descarga seleccionadas? - + Rule deletion confirmation Confirmación de eliminación da regra - + Invalid action Acción non válida - + The list is empty, there is nothing to export. A lista está baleira, non hai nada que exportar. - + Export RSS rules Exportar regras do RSS - + I/O Error Erro de E/S - + Failed to create the destination file. Reason: %1 Produciuse un fallo creando o ficheiro de destino. Razón: %1 - + Import RSS rules Importar regras do RSS - + Failed to import the selected rules file. Reason: %1 Produciuse un fallo ao importar o ficheiro de regras seleccionado. Razón: %1 - + Add new rule... Engadir unha regra nova... - + Delete rule Eliminar a regra - + Rename rule... Cambiar o nome da regra... - + Delete selected rules Eliminar as regras seleccionadas - + Clear downloaded episodes... Limpar episodios descargados... - + Rule renaming Cambio do nome da regra - + Please type the new rule name Escriba o nome da regra nova - + Clear downloaded episodes Limpar episodios descargados - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Confirma a eliminación da lista de episodios descargados pola regra seleccionada? - + Regex mode: use Perl-compatible regular expressions Modo Regex: usar expresións regulares compatíbeis con Perl - - + + Position %1: %2 Posición %1: %2 - + Wildcard mode: you can use Modo comodín: pode usar - - + + Import error - + Erro ao importar - + Failed to read the file. %1 - + Produciuse un erro ao ler o ficheiro. %1 - + ? to match any single character ? para substituír calquera carácter - + * to match zero or more of any characters * para substituír cero ou máis caracteres calquera - + Whitespaces count as AND operators (all words, any order) Os espazos en branco contan como operadores AND (todas as palabras, en calquera orde) - + | is used as OR operator | úsase como operador OR - + If word order is important use * instead of whitespace. Se a orde das palabras importa, use * no canto dun espazo en branco. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Unha expresión cunha condición baleira %1 (p.e.: %2) - + will match all articles. incluirá todos os artigos. - + will exclude all articles. excluirá todos os artigos. @@ -2024,53 +2064,58 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Non é posíbel crear o cartafol de continuación do torrent: «%1» - + Cannot parse resume data: invalid format Non se puideron entender os datos de continuación: formato inválido - - + + Cannot parse torrent info: %1 Non se puido entender a información do torrent: %1 - + Cannot parse torrent info: invalid format Non se puido entender a información do torrent: formato inválido - + + Mismatching info-hash detected in resume data + Detectouse un info-hash non coincidente nos datos de reanudación + + + Couldn't save torrent metadata to '%1'. Error: %2. Non foi posíbel gardar os metadatos do torrent en «%1». Erro: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Non foi posíbel gardar os datos de continuación do torrent en «%1». Erro: %2. - + Couldn't load torrents queue: %1 Non se puido cargar a cola de torrents: %1 - + Cannot parse resume data: %1 Non se puideron entender os datos de continuación: %1 - + Resume data is invalid: neither metadata nor info-hash was found Os datos de retorno son inválidos: non se atoparon nin metadatos nin hash de información - + Couldn't save data to '%1'. Error: %2 Non foi posíbel gardar os datos en «%1». Erro: %2 @@ -2078,61 +2123,61 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d BitTorrent::DBResumeDataStorage - + Not found. Non atopado - + Couldn't load resume data of torrent '%1'. Error: %2 Non foi posíbel cargar os datos de continuación do torrent «%1». Erro: %2 - - + + Database is corrupted. A base de datos está corrompida. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Non se puido activar o modo de rexistro de rexistro de escritura anticipada (WAL). Erro: %1. - + Couldn't obtain query result. - + Non se puido obter o resultado da consulta. - + WAL mode is probably unsupported due to filesystem limitations. - + O modo WAL probablemente non sexa compatible debido ás limitacións do sistema de ficheiros. - + Couldn't begin transaction. Error: %1 - + Non se puido comezar a transacción. Erro: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Non foi posíbel gardar os metadatos do torrent. Erro: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Non foi posíbel gardar os datos de continuación do torrent «%1». Erro: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Non foi posíbel eliminar os datos de continuación do torrent «%1». Erro: %2 - + Couldn't store torrents queue positions. Error: %1 Non foi posíbel gardar as posicións na cola de torrents. Erro: %1 @@ -2140,560 +2185,622 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Compatible con Táboa de Hash Distribuída (DHT): %1 - - - - - - - - - + + + + + + + + + ON ACTIVADO - - - - - - - - - + + + + + + + + + OFF DESACTIVADO - - + + Local Peer Discovery support: %1 Compatible coa busca de pares locais: %1 - + Restart is required to toggle Peer Exchange (PeX) support Precísase reiniciar para activar ou desactivar o intercambio de pares (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Non se puido continuar co torrent. Torrent: «%1». Motivo: «%2» - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Non se puido continuar co torrent: Detectado identificador do torrent inconsistente. Torrent: «%1» - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Detectados datos inconsistentes: non hai categoría no ficheiro de configuración. Recuperarase a categoría, pero coa configuración predeterminada. Torrent: «%1». Categoría: «%2» - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Detectados datos inconsistentes: categoría inválida. Torrent: «%1». Categoría: «%2» - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" A ruta onde gardar o torrent actual e o da categoría recuperada non coinciden. O torrent pasará a modo Manual. Torrent: «%1». Categoría: «%2» - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Datos inconsistentes: non se atopou etiqueta no ficheiro de configuración. A etiqueta recuperarase. Torrent: «%1». Etiqueta: «%2» - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + Detectáronse datos incoherentes: etiqueta non válida. Torrent: "%1". Etiqueta: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Detectouse un evento de activación do sistema. Volve a anunciar a todos os rastrexadores... - + Peer ID: "%1" - + ID do par: "%1" - + HTTP User-Agent: "%1" - + Axente de usuario HTTP: "%1" - + Peer Exchange (PeX) support: %1 - + Soporte para intercambio de pares (PeX): %1 - - + + Anonymous mode: %1 Modo anónimo: %1 - - + + Encryption support: %1 Compatibilidade co cifrado: %1 - - + + FORCED FORZADO - + Could not find GUID of network interface. Interface: "%1" Non foi posíbel atopar o GUID da interface de rede. Interface: «%1» - + Trying to listen on the following list of IP addresses: "%1" - + Tentando escoitar a seguinte lista de enderezos IP: "%1" - + Torrent reached the share ratio limit. - + O torrent alcanzou o límite de proporción de compartición. - - - + Torrent: "%1". Torrent: «%1». - - - Removed torrent. - Torrent retirado. + Torrent retirado. - - - Removed torrent and deleted its content. - + Eliminouse o torrent e o seu contido. - - - Torrent paused. - Torrent detido + Torrent detido - - - + Super seeding enabled. Modo super-sementeira activado. - + Torrent reached the seeding time limit. - + Torrent chegou ao límite de tempo de sementeira. - + Torrent reached the inactive seeding time limit. - + Torrent alcanzou o límite de tempo de semente inactivo. - + Failed to load torrent. Reason: "%1" - + Produciuse un erro ao cargar o torrent. Motivo: "%1" - + I2P error. Message: "%1". - + Erro I2P. Mensaxe: "%1". - + UPnP/NAT-PMP support: ON + Soporte UPnP/NAT-PMP: ACTIVADO + + + + Saving resume data completed. - - UPnP/NAT-PMP support: OFF + + BitTorrent session successfully finished. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Session shutdown timed out. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Removing torrent. - System network status changed to %1 - e.g: System network status changed to ONLINE - O estado da rede do sistema cambiou a %1 + + Removing torrent and deleting its content. + - ONLINE - EN LIÑA + + Torrent stopped. + - OFFLINE - FÓRA DE LIÑA + + Torrent content removed. Torrent: "%1" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - A configuración da rede de %1 cambiou, actualizando as vinculacións da sesión + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - The configured network address is invalid. Address: "%1" + + Torrent removed. Torrent: "%1" - - - Failed to find the configured network address to listen on. Address: "%1" + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 - + + Merging of trackers is disabled + A combinación de rastrexadores está desactivada + + + + Trackers cannot be merged because it is a private torrent + Non se poden combinar os rastrexadores porque é un torrent privado + + + + Trackers are merged from new source + Os rastreadores combínanse desde unha nova fonte + + + + UPnP/NAT-PMP support: OFF + Soporte UPnP/NAT-PMP: DESACTIVADO + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Produciuse un erro ao exportar o torrent. Torrent: "%1". Destino: "%2". Motivo: "%3" + + + + Aborted saving resume data. Number of outstanding torrents: %1 + Cancelouse o gardado dos datos de reanudación. Número de torrents pendentes: %1 + + + + The configured network address is invalid. Address: "%1" + O enderezo de rede configurado non é válido. Enderezo: "%1" + + + + + Failed to find the configured network address to listen on. Address: "%1" + Produciuse un erro ao atopar o enderezo de rede configurado para escoitar. Enderezo: "%1" + + + The configured network interface is invalid. Interface: "%1" + A interface de rede configurada non é válida. Interface: "%1" + + + + Tracker list updated - - Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + + Failed to update tracker list. Reason: "%1" - + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + Rexeitouse unha dirección IP non válida ao aplicar a lista de enderezos IP bloqueados. IP: "%1" + + + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Engadiuse un rastrexador ao torrent. Torrent: "%1". Rastrexador: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Eliminouse o rastrexador do torrent. Torrent: "%1". Rastrexador: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Engadiuse a semente de URL ao torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" + Eliminouse a semente URL do torrent. Torrent: "%1". URL: "%2" + + + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - Torrent paused. Torrent: "%1" - + Torrent en pausa. Torrent: "%1" - + Torrent resumed. Torrent: "%1" - + Torrent reanudado. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Rematou a descarga do torrent. Torrent: "% 1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" + Cancelouse o traslado do torrent. Torrent: "%1". Orixe: "%2". Destino: "%3" + + + + Torrent stopped. Torrent: "%1" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Fallou ao engadir o traslado do torrent á cola. Torrent: "%1". Orixe: "%2". Destino: "%3". Razón: o torrent está actualmente en proceso de traslado ao destino - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Fallou ao engadir o traslado do torrent á cola. Torrent: "%1". Orixe: "%2". Destino: "%3". Razón: ambos camiños apuntan á mesma ubicación - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Traslado do torrent engadido á cola. Torrent: "%1". Orixe: "%2". Destino: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Comezar a mover o torrent. Torrent: "%1". Destino: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Produciuse un erro ao gardar a configuración das categorías. Ficheiro: "%1". Erro: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Produciuse un erro ao analizar a configuración das categorías. Ficheiro: "%1". Erro: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Analizouse correctamente o ficheiro de filtro IP. Número de regras aplicadas: %1 - + Failed to parse the IP filter file - + Produciuse un erro ao analizar o ficheiro do filtro IP - + Restored torrent. Torrent: "%1" - + Torrent restaurado. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Engadiuse un novo torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - + Erro no torrent. Torrent: "%1". Erro: "%2" - - Removed torrent. Torrent: "%1" - + Eliminouse o torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - + Eliminouse o torrent e o seu contido. Torrent: "% 1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Faltan parámetros SSL ao torrent. Torrent: "%1". Mensaxe: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + Alerta de erro do ficheiro. Torrent: "%1". Ficheiro: "%2". Motivo: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + Produciuse un erro na asignación de portos UPnP/NAT-PMP. Mensaxe: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + A asignación de portos UPnP/NAT-PMP realizouse correctamente. Mensaxe: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtro IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + porto filtrado (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). + porto privilexiado (%1) + + + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + BitTorrent session encountered a serious error. Reason: "%1" - + A sesión de BitTorrent atopou un erro grave. Motivo: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + Erro de proxy SOCKS5. Enderezo: %1. Mensaxe: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. Restricións no modo mixto %1 - + Failed to load Categories. %1 - + Produciuse un erro ao cargar as categorías. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Produciuse un erro ao cargar a configuración das categorías. Ficheiro: "%1". Erro: "Formato de datos non válido" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Eliminouse o torrent pero fallou ao intentar borrar o seu contido e/ou ficheiro de parte. Torrent: "%1". Erro: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 está desactivado - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 está desactivado - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + Produciuse un erro na busca de DNS de semente de URL. Torrent: "%1". URL: "%2". Erro: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Recibiuse unha mensaxe de erro da semente de URL. Torrent: "%1". URL: "%2". Mensaxe: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Escoitando con éxito en IP. IP: "%1". Porto: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Produciuse un erro ao escoitar en IP. IP: "%1". Porto: "%2/%3". Motivo: "%4" - + Detected external IP. IP: "%1" - + IP externa detectada. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Erro: a cola de alertas internas está chea e as alertas quítanse, é posible que vexa un rendemento degradado. Tipo de alerta eliminada: "%1". Mensaxe: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Moveuse o torrent correctamente. Torrent: "%1". Destino: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - + Produciuse un erro ao mover o torrent. Torrent: "%1". Orixe: "%2". Destino: "%3". Motivo: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operación cancelada - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Fallou a creación dun novo ficheiro torrent. Razón: %1. + + Failed to start seeding. + Non se puido comezar a sementar. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operación cancelada + Operación cancelada + + Create new torrent file failed. Reason: %1. - Fallou a creación dun novo ficheiro torrent. Razón: %1. + Fallou a creación dun novo ficheiro torrent. Razón: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Produciuse un fallo engadindo o par «%1» ao torrent «%2». Razón: %3 - + Peer "%1" is added to torrent "%2" Par «1%» engadido ao torrent «%2» - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Detectaronse datos inesperados. Torrent: %1. Datos: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Non se puido escribir no ficheiro. Razón: "%1". O torrent agora está en modo "só carga". - + Download first and last piece first: %1, torrent: '%2' Descargar primeiro os anacos inicial e final: %1, torrent: «%2» - + On Activado - + Off Desactivado - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Fallou ao recargar o torrent. Torrent: %1. Razón: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Fallou ao xerar datos de reanudación. Torrent: "%1". Razón: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Fallou ao restaurar o torrent. Probablemente, os ficheiros foron movidos ou o almacenamento non está accesible. Torrent: "%1". Razón: "%2" - + Missing metadata - + Faltan metadatos - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Produciuse un fallo renomeando o ficheiro. Torrent: «%1», ficheiro: «%2», razón: «%3» - + Performance alert: %1. More info: %2 - + Alerta de rendemento: %1. Máis información: %2 @@ -2712,184 +2819,198 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' O parámetro «%1» deber seguir a sintaxe «%1=%2» - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' O parámetro «%1» deber seguir a sintaxe «%1=%2» - + Expected integer number in environment variable '%1', but got '%2' Agardábase un número enteiro na variábel de contorno «%1» pero obtívose o «%2» - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - O parámetro «%1» deber seguir a sintaxe «%1=%2» + O parámetro «%1» deber seguir a sintaxe «%1=%2» - + Expected %1 in environment variable '%2', but got '%3' Agardábase %1 na variábel de contorno «%2» pero obtívose «%3» - - + + %1 must specify a valid port (1 to 65535). %1 debe especificar un porto válido (1 a 65535). - + Usage: Utilización: - + [options] [(<filename> | <url>)...] - + [Opcións] [(<filename> | <url>)...] - + Options: Opcións: - + Display program version and exit Mostrar a versión do programa e saír - + Display this help message and exit Mostrar esta axuda e saír - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + O parámetro «%1» deber seguir a sintaxe «%1=%2» + + + + Confirm the legal notice + Confirme o aviso legal + + + + port porto - - Change the Web UI port - Cambiar o porto da interface web + + Change the WebUI port + Cambia o porto WebUI - + Change the torrenting port - + Cambia o porto de torrenting - + Disable splash screen Desactivar a pantalla de inicio - + Run in daemon-mode (background) Executar no modo daemon (en segundo plano) - + dir Use appropriate short form or abbreviation of "directory" cart. - + Store configuration files in <dir> Gardar os ficheiros de configuración en <dir> - - + + name nome - + Store configuration files in directories qBittorrent_<name> Gardar os ficheiros de configuración en cartafoles qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Acceder aos ficheiros co resumo rápido de libtorrent e facer rutas de ficheiros relativas ao cartafol do perfil - + files or URLs ficheiros ou URL - + Download the torrents passed by the user Descargar os torrents pasados polo usuario - + Options when adding new torrents: Opcións cando se engaden torrents novos: - + path ruta - + Torrent save path Ruta onde gardar os torrents - + + Add torrents as running or stopped + + + Add torrents as started or paused - Engadir torrents como iniciados ou detidos + Engadir torrents como iniciados ou detidos - + Skip hash check Saltar a comprobación hash - + Assign torrents to category. If the category doesn't exist, it will be created. Asignar torrents a unha categoría. Se a categoría non existe, crearase. - + Download files in sequential order Descargar ficheiros en orde secuencial - + Download first and last pieces first Descargar primeiro os anacos inicial e final - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Especificar se o diálogo de «Engadir novo torrent» se abre ao engadir un torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Os valores pódense subministrar vía variábeis do contorno. Para a opción chamada «nome do parámetro», o nome da variábel de contorno é «QBT_PARAMETER_NAME» (en maiúsculas, o «-» substitúese por «_»). Para pasar os valores das marcas, estabeleza a variábel a «1» ou «TRUE». Por exemplo, para desactivar a pantalla de presentación: - + Command line parameters take precedence over environment variables Os parámetros da liña de ordes teñen prioridade sobre a variabeis de contorno - + Help Axuda @@ -2897,17 +3018,17 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d CategoryFilterModel - + Categories Categorías - + All Todo - + Uncategorized Sen categoría @@ -2941,32 +3062,45 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d - Resume torrents - Continuar os torrents + Start torrents + - Pause torrents - Deter os torrents + Stop torrents + - + Resume torrents + Continuar os torrents + + + Pause torrents + Deter os torrents + + + Remove torrents - + Eliminar torrents ColorWidget - + Edit... - + Editar... - + Reset Restabelecer + + + System + + CookiesDialog @@ -3007,22 +3141,22 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Produciuse un erro ao cargar a folla de estilo do tema personalizado. %1 - + Failed to load custom theme colors. %1 - + Produciuse un erro ao cargar as cores do tema personalizado. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Produciuse un erro ao cargar as cores predeterminadas do tema. %1 @@ -3030,7 +3164,7 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d Remove torrent(s) - + Eliminar torrent(s) @@ -3039,23 +3173,27 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d - Also permanently delete the files + Also remove the content files - + Also permanently delete the files + Tamén elimina permanentemente os ficheiros + + + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Estás seguro de que queres eliminar "%1" da lista de transferencias? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Estás seguro de que queres eliminar estes %1 torrents da lista de transferencias? - + Remove Eliminar @@ -3068,12 +3206,12 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d Descargar desde URL - + Add torrent links Engadir ligazóns torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Unha ligazón por liña (acepta ligazóns HTTP, magnet e info-hashes) @@ -3083,12 +3221,12 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d Descargar - + No URL entered Non se introduciu ningún URL - + Please type at least one URL. Escriba polo menos un URL. @@ -3247,64 +3385,91 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d Erro de análise: o ficheiro de filtros non é un ficheiro Peer Guardian P2B correcto. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Descargando torrent... Fonte: "% 1" - Trackers cannot be merged because it is a private torrent - + Non se poden combinar os rastrexadores porque é un torrent privado - + Torrent is already present - O torrent xa existe + O torrent xa existe - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - O torrent «%1» xa está na lista de transferencias. Quere combinar os localizadores da nova fonte? + O torrent «%1» xa está na lista de transferencias. Quere combinar os localizadores da nova fonte? GeoIPDatabase - - + + Unsupported database file size. Tamaño do ficheiro da base de datos non aceptado - + Metadata error: '%1' entry not found. Erro nos metadatos: non se atopou a entrada «%1». - + Metadata error: '%1' entry has invalid type. Erro nos metadatos: a entrada «%1» ten un tipo incorrecto. - + Unsupported database version: %1.%2 Versión da base de datos non aceptada: %1.%2 - + Unsupported IP version: %1 Versión de IP non aceptada: %1 - + Unsupported record size: %1 Tamaño de rexistro no aceptado: %1 - + Database corrupted: no data section found. Base de datos corrompida: non se atopou a sección dos datos. @@ -3312,17 +3477,17 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 O tamaño da petición http excede o límite, péchase o socket. Límite: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Método de solicitude Http incorrecto, pechando o socket. IP: %1. Método: "%2" - + Bad Http request, closing socket. IP: %1 Mala petición Http, péchase o socket. IP: %1 @@ -3363,36 +3528,64 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d IconWidget - + Browse... Explorar... - + Reset Restabelecer - + Select icon - + Seleccione a icona - + Supported image files - + Ficheiros de imaxe compatibles + + + + LegalNotice + + + Legal Notice + Aviso legal + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent é un programa para compartir ficheiros. Cando executa un torrent, os seus datos están dispoñíbeis para que outros os reciban. Calquera contido que comparta é da súa única responsabilidade. + + + + No further notices will be issued. + Non se emitirán máis avisos. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Se liches o aviso legal, podes usar a opción de liña de comandos `--confirm-legal-notice` para suprimir esta mensaxe. + + + + Press 'Enter' key to continue... + Preme a tecla "Intro" para continuar... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 foi bloqueado. Razón: %2. - + %1 was banned 0.0.0.0 was banned %1 foi expulsado @@ -3401,91 +3594,62 @@ Compatíbel cos formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (os formatos da d Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 é un parámetro descoñecido para a liña de ordes. - - + + %1 must be the single command line parameter. %1 debe ser o parámetro único para a liña de ordes. - - You cannot use %1: qBittorrent is already running for this user. - Non pode usar %1: qBittorrent xa está en execución por este usuario. - - - + Run application with -h option to read about command line parameters. Executar o aplicativo coa opción -h para saber os parámetros da liña de ordes. - + Bad command line Liña de ordes incorrecta - + Bad command line: Liña de ordes incorrecta: - + An unrecoverable error occurred. - + Produciuse un erro irrecuperable. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Aviso legal - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent é un programa para compartir ficheiros. Cando executa un torrent, os seus datos están dispoñíbeis para que outros os reciban. Calquera contido que comparta é da súa única responsabilidade. - - - - No further notices will be issued. - Non se emitirán máis avisos. - - - - Press %1 key to accept and continue... - Prema a tecla %1 para aceptar e continuar... + qBittorrent atopou un erro irrecuperable. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent é un programa para compartir ficheiros. Cando descarga un torrent os seus datos son visíbeis para outros . Calquera contido que comparta é da súa única responsabilidade. - -Non se mostrarán máis avisos. + + You cannot use %1: qBittorrent is already running. + Non pode usar %1: qBittorrent xa está en execución. - - Legal notice - Aviso legal + + Another qBittorrent instance is already running. + Xa se está a executar outra instancia de qBittorrent. - - Cancel - Cancelar + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Atopouse unha instancia de qBittorrent inesperada. Saíndo desta instancia. ID do proceso actual: %1. - - I Agree - Acepto + + Error when daemonizing. Reason: "%1". Error code: %2. + Erro ao tentar converter en servizo. Razón: "%1". Código de erro: %2. @@ -3496,617 +3660,706 @@ Non se mostrarán máis avisos. &Editar - + &Tools Ferramen&tas - + &File &Ficheiro - + &Help &Axuda - + On Downloads &Done Ao rematar as &descargas - + &View &Ver - + &Options... &Opcións... - &Resume - Continua&r + Continua&r - + &Remove - + Elimina&r - + Torrent &Creator &Creador de torrents - - + + Alternative Speed Limits Límites alternativos de velocidade - + &Top Toolbar Barra &superior - + Display Top Toolbar Mostrar a barra superior - + Status &Bar &Barra de estado - + Filters Sidebar - + Barra lateral de filtros - + S&peed in Title Bar &Velocidade na barra do título - + Show Transfer Speed in Title Bar Mostrar a velocidade de transferencia na barra do título - + &RSS Reader Lector &RSS - + Search &Engine &Buscador - + L&ock qBittorrent Bl&oquear o qBittorrent - + Do&nate! D&oar! - + + Sh&utdown System + + + + &Do nothing Non facer na&da - + Close Window Pechar xanela - R&esume All - Co&ntinuar todo + Co&ntinuar todo - + Manage Cookies... Xestión das cookies... - + Manage stored network cookies Xestionar as cookies de rede gardadas - + Normal Messages Mensaxes ordinarias - + Information Messages Mensaxes informativas - + Warning Messages Mensaxes de aviso - + Critical Messages Mensaxes críticas - + &Log &Rexistro - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Estabelecer os límites globais de velocidade... - + Bottom of Queue Final da cola - + Move to the bottom of the queue Mover ao final da cola - + Top of Queue Principio da cola - + Move to the top of the queue Mover ao principio da cola - + Move Down Queue Mover abaixo na cola - + Move down in the queue Mover abaixo na cola - + Move Up Queue Mover arriba na cola - + Move up in the queue Mover arriba na cola - + &Exit qBittorrent Saír do qBittorr&ent - + &Suspend System &Suspender o sistema - + &Hibernate System &Hibernar o sistema - S&hutdown System - Pe&char o sistema + Pe&char o sistema - + &Statistics E&stadísticas - + Check for Updates Buscar actualizacións - + Check for Program Updates Buscar actualizacións do programa - + &About &Sobre - &Pause - &Deter + &Deter - P&ause All - D&eter todo + D&eter todo - + &Add Torrent File... Eng&adir un ficheiro torrent... - + Open Abrir - + E&xit &Saír - + Open URL Abrir URL - + &Documentation &Documentación - + Lock Bloquear - - - + + + Show Mostrar - + Check for program updates Buscar actualizacións do programa - + Add Torrent &Link... Engadir &ligazón torrent... - + If you like qBittorrent, please donate! Se lle gusta o qBittorrent, por favor faga unha doazón! - - + + Execution Log Rexistro de execución - + Clear the password Limpar o contrasinal - + &Set Password E&stabelecer o contrasinal - + Preferences Preferencias - + &Clear Password &Limpar o contrasinal - + Transfers Transferencias - - + + qBittorrent is minimized to tray O qBittorrent está minimizado na bandexa - - - + + + This behavior can be changed in the settings. You won't be reminded again. Pode cambiar este comportamento nos axustes. Non será avisado de novo. - + Icons Only Só iconas - + Text Only Só texto - + Text Alongside Icons Texto e iconas - + Text Under Icons Texto debaixo das iconas - + Follow System Style Seguir o estilo do sistema - - + + UI lock password Contrasinal de bloqueo da interface - - + + Please type the UI lock password: Escriba un contrasinal para bloquear a interface: - + Are you sure you want to clear the password? Confirma a eliminación do contrasinal? - + Use regular expressions Usar expresións regulares - - Search - Buscar + + + Search Engine + Buscador - - Transfers (%1) - Transferencias (%1) + + Search has failed + A busca fallou - Recursive download confirmation - Confirmación de descarga recursiva + + Search has finished + A busca rematou - Never - Nunca + + Search + Buscar + + + + Transfers (%1) + Transferencias (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. O qBittorrent foi actualizado e necesita reiniciarse para que os cambios sexan efectivos. - + qBittorrent is closed to tray O qBittorrent está pechado na bandexa - + Some files are currently transferring. Neste momento estanse transferindo algúns ficheiros. - + Are you sure you want to quit qBittorrent? Confirma que desexa saír do qBittorrent? - + &No &Non - + &Yes &Si - + &Always Yes &Sempre si - + Options saved. Opcións gardadas. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Falta o tempo de execución do Python - + qBittorrent Update Available Hai dipoñíbel unha actualización do qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Precísase Python para usar o motor de busca pero non parece que estea instalado. Desexa instalalo agora? - + Python is required to use the search engine but it does not seem to be installed. Precísase Python para usar o motor de busca pero non parece que estea instalado. - - + + Old Python Runtime Tempo de execución de Python antigo - + A new version is available. Hai dispoñíbel unha nova versión. - + Do you want to download %1? Desexa descargar %1? - + Open changelog... Abrir o rexistro de cambios... - + No updates available. You are already using the latest version. Non hai actualizacións dispoñíbeis. Xa usa a última versión. - + &Check for Updates Buscar a&ctualizacións - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? A versión do Python (%1) non está actualizada. Requerimento mínimo: %2 Desexa instalar unha versión máis recente? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. A súa versión de Python (%1) non está actualizada. Anove á última versión para que os motores de busca funcionen. Requirimento mínimo: %2. - + + Paused + Detidos + + + Checking for Updates... Buscando actualizacións... - + Already checking for program updates in the background Xa se están buscando actualizacións do programa en segundo plano - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Erro de descarga - Python setup could not be downloaded, reason: %1. Please install it manually. - Non foi posíbel descargar a configuración de Python, razón:%1. + Non foi posíbel descargar a configuración de Python, razón:%1. Instálea manualmente. - - + + Invalid password Contrasinal incorrecto - + Filter torrents... - + Filtrar torrents... - + Filter by: - + Filtrar por: - + The password must be at least 3 characters long O contrasinal debe ter polo menos 3 caracteres. - - - + + + RSS (%1) RSS (%1) - + The password is invalid O contrasinal é incorrecto - + DL speed: %1 e.g: Download speed: 10 KiB/s Vel. de descarga: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Vel. de envío: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, E: %2] qBittorrent %3 - - - + Hide Ocultar - + Exiting qBittorrent Saíndo do qBittorrent - + Open Torrent Files Abrir os ficheiros torrent - + Torrent Files Ficheiros torrent @@ -4136,12 +4389,12 @@ Instálea manualmente. Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Erro de DNS dinámico: qBittorrent foi incluído na lista negra do servizo, envíe un informe de erro en https://bugs.qbittorrent.org. Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Erro de DNS dinámico: %1 foi devolto polo servizo, envíe un informe de erro en https://bugs.qbittorrent.org. @@ -4167,133 +4420,133 @@ Instálea manualmente. Net::DownloadHandlerImpl - - + + I/O Error: %1 E/O Erro: %1 - + The file size (%1) exceeds the download limit (%2) O tamaño do ficheiro (%1) supera o límite de descarga (%2) - + Exceeded max redirections (%1) Superouse o número máximo de redireccións (%1) - + Redirected to magnet URI Redireccionado a un URI magnet - + The remote host name was not found (invalid hostname) Non se encontrou o nome do servidor remoto (nome incorrecto) - + The operation was canceled Cancelouse a operación - + The remote server closed the connection prematurely, before the entire reply was received and processed O servidor remoto pechou a conexión prematuramente, antes de que se recibise e procesase a resposta completa - + The connection to the remote server timed out Excedeuse o tempo de conexión ao servidor remoto - + SSL/TLS handshake failed Produciuse un fallo no saúdo do SSL/TLS - + The remote server refused the connection O servidor remoto rexeitou a conexion - + The connection to the proxy server was refused O servidor proxy rexeitou a conexión - + The proxy server closed the connection prematurely O servidor proxy pechou a conexión prematuramente - + The proxy host name was not found Non se encontrou o nome do servidor proxy - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Excedeuse o tempo para conectar co proxy ou este non respondeu en tempo á solicitude enviada - + The proxy requires authentication in order to honor the request but did not accept any credentials offered O proxy require autenticación para satisfacer a solicitude pero non aceptou as credenciais ofrecidas - + The access to the remote content was denied (401) Denegouse o acceso ao contido remoto (401) - + The operation requested on the remote content is not permitted Non se permite a operación solicitada no contido remoto - + The remote content was not found at the server (404) Non se encontrou o contido remoto no servidor (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted O servidor remoto require autenticacion para servir o contido pero non aceptou as credenciais enviadas - + The Network Access API cannot honor the request because the protocol is not known A API de acceso á rede non pode responder á solicitude porque o protocolo é descoñecido - + The requested operation is invalid for this protocol A operación solicitada é incorrecta para este protocolo - + An unknown network-related error was detected Detectouse un erro descoñecido relacionado coa rede - + An unknown proxy-related error was detected Detectouse un erro descoñecido relacionado co proxy - + An unknown error related to the remote content was detected Detectouse un erro descoñecido relacionado co contido remoto - + A breakdown in protocol was detected Detectouse unha ruptura no protocolo - + Unknown error Erro descoñecido @@ -4301,7 +4554,12 @@ Instálea manualmente. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorando erro SSL, URL: «%1», erros: «%2» @@ -5597,47 +5855,47 @@ Instálea manualmente. Connection failed, unrecognized reply: %1 - + Fallou a conexión, resposta non recoñecida: %1 Authentication failed, msg: %1 - + Fallou a autenticación, mensaxe: %1 <mail from> was rejected by server, msg: %1 - + <mail from> foi rexeitado polo servidor, mensaxe: %1 <Rcpt to> was rejected by server, msg: %1 - + <Rcpt to> foi rexeitado polo servidor, mensaxe: %1 <data> was rejected by server, msg: %1 - + <data> foi rexeitado polo servidor, mensaxe: %1 Message was rejected by the server, error: %1 - + O servidor rexeitou a mensaxe, erro: %1 Both EHLO and HELO failed, msg: %1 - + Tanto EHLO como HELO fallaron, mensaxe: %1 The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 - + Parece que o servidor SMTP non admite ningún dos modos de autenticación que admitimos [CRAM-MD5|PLAIN|LOGIN], omitindo a autenticación, sabendo que é probable que falle... Modos de autenticación do servidor: %1 Email Notification Error: %1 - + Erro de notificación por correo electrónico: %1 @@ -5673,294 +5931,307 @@ Instálea manualmente. BitTorrent - + RSS RSS - Web UI - Interface web + Interface web - + Advanced Avanzado - + Customize UI Theme... - + Personalizar o tema da IU... - + Transfer List Lista de transferencias - + Confirm when deleting torrents Confirmar a eliminación dos torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - + Mostra un diálogo de confirmación ao pausar/retomar todos os torrents - Confirm "Pause/Resume all" actions - + Confirmar as accións de "Pausar/Reanudar todo" - + Use alternating row colors In table elements, every other row will have a grey background. Alternar as cores das filas - + Hide zero and infinity values Ocultar os valores cero e infinito - + Always Sempre - Paused torrents only - Só os torrents detidos + Só os torrents detidos - + Action on double-click Acción co dobre clic - + Downloading torrents: Descargando os torrents: - - Start / Stop Torrent - Iniciar / Parar o torrent + Iniciar / Parar o torrent - - + + Open destination folder Abrir o cartafol de destino - - + + No action Sen acción - + Completed torrents: Torrents completados: - + Auto hide zero status filters - + Ocultar automaticamente filtros de estado cero - + Desktop Escritorio - + Start qBittorrent on Windows start up Iniciar qBittorrent cando se inicie Windows - + Show splash screen on start up Mostrar a pantalla de presentación ao iniciar - + Confirmation on exit when torrents are active Confirmar a saída cando haxa torrents activos - + Confirmation on auto-exit when downloads finish Confirmación de saída automática ao rematar as descargas - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Para establecer qBittorrent como programa predeterminado para ficheiros .torrent e/ou ligazóns Magnet<br/>pode usar o diálogo <span style=" font-weight:600;">Programas predeterminados</span> do <span style=" font-weight:600;">Panel de control</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Disposición do contido torrent: - + Original Orixinal - + Create subfolder Crear subcartafol - + Don't create subfolder Non crear subcartafol - + The torrent will be added to the top of the download queue - + O torrent será engadido á parte superior da cola de descargas - + Add to top of queue The torrent will be added to the top of the download queue - + Engadir á parte superior da cola - + When duplicate torrent is being added - + Cando se engade torrent duplicado - + Merge trackers to existing torrent - + Combina rastrexadores co torrent existente - + + Keep unselected files in ".unwanted" folder + Manteña os ficheiros non seleccionados no cartafol ".unwanted". + + + Add... Engadir... - + Options.. Opcións... - + Remove Eliminar - + Email notification &upon download completion Enviar unha notificación por &correo-e ao rematar a descarga - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protocolo de conexión de pares: - + Any Calquera - + I2P (experimental) - + I2P (experimental) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + <html><head/><body><p>Se o &quot;modo mixto&quot; está activado. Os torrents I2P tamén poden obter pares doutras fontes que non sexan o rastrexador e conectarse a IPs habituais, sen proporcionar ningún anonimato. Isto pode ser útil se o usuario non está interesado na anonimización de I2P, pero aínda así quere poder conectarse a pares I2P.</p></body></html> - + Mixed mode - + Modo mixto - + Some options are incompatible with the chosen proxy type! - + Algunhas opcións son incompatibles co tipo de proxy escollido! - + If checked, hostname lookups are done via the proxy - + Se está marcado, as buscas de nomes de host realízanse a través do proxy - + Perform hostname lookup via proxy - + Realizar a busca do nome de host a través do proxy - + Use proxy for BitTorrent purposes - + Use proxy para propósitos de BitTorrent - + RSS feeds will use proxy - + As fontes RSS usarán un proxy - + Use proxy for RSS purposes - + Use proxy para propósitos RSS - + Search engine, software updates or anything else will use proxy - + O buscador, as actualizacións de software ou calquera outra cousa usarán proxy - + Use proxy for general purposes - + Use proxy para fins xerais - + IP Fi&ltering Fi&ltrado de IPs - + Schedule &the use of alternative rate limits Programar o uso de lími&tes alternativos de velocidade - + From: From start time De: - + To: To end time A: - + Find peers on the DHT network Buscar pares na rede DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5969,140 +6240,188 @@ Requirir cifrado: conectarse só cos pares con protocolo de cifrado. Desactivar cifrado: conectarse só cos pares sen protocolo de cifrado. - + Allow encryption Permitir cifrado - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Máis información</a>) - + Maximum active checking torrents: - + Número máximo de torrents en comprobación activa: - + &Torrent Queueing &Cola de torrents - + When total seeding time reaches - + Cando o tempo total de compartición alcance - + When inactive seeding time reaches - + Cando o tempo de compartición inactiva alcance - A&utomatically add these trackers to new downloads: - Engadir &automaticamente estes localizadores ás novas descargas: + Engadir &automaticamente estes localizadores ás novas descargas: - + RSS Reader Lector RSS - + Enable fetching RSS feeds Activar a busca de fontes RSS - + Feeds refresh interval: Intervalo de actualización de fontes: - + + Same host request delay: + Retraso na solicitude ao mesmo anfitrión: + + + Maximum number of articles per feed: Número máximo de artigos por fonte: - - - + + + min minutes min. - + Seeding Limits Límites da sementeira - Pause torrent - Deter o torrent + Deter o torrent - + Remove torrent Retirar o torrent - + Remove torrent and its files Eliminar o torrent e os ficheiros - + Enable super seeding for torrent Activar a supersementeira para o torrent - + When ratio reaches Cando a taxa alcance - - RSS Torrent Auto Downloader - Xestor de descargas automático de torrents por RSS + + Stop torrent + - - Enable auto downloading of RSS torrents - Activar a descarga automática dos torrents do RSS + + A&utomatically append these trackers to new downloads: + - - Edit auto downloading rules... - Editar as regras da descarga automática... + + Automatically append trackers from URL to new downloads: + - - RSS Smart Episode Filter - Filtro intelixente de episodios RSS + + URL: + URL: - - Download REPACK/PROPER episodes - Descargar episodios con novas versións + + Fetched trackers + - - Filters: - Filtros: + + Search UI + - - Web User Interface (Remote control) - Interface de usuario web (control remoto) + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + + RSS Torrent Auto Downloader + Xestor de descargas automático de torrents por RSS + + + + Enable auto downloading of RSS torrents + Activar a descarga automática dos torrents do RSS + + + + Edit auto downloading rules... + Editar as regras da descarga automática... + + + + RSS Smart Episode Filter + Filtro intelixente de episodios RSS + + + + Download REPACK/PROPER episodes + Descargar episodios con novas versións + + + + Filters: + Filtros: + + + + Web User Interface (Remote control) + Interface de usuario web (control remoto) - + IP address: Enderezo IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6112,42 +6431,41 @@ Especificar un enderezo IPv4 ou IPv6. Pode especificar «0.0.0.0» IPv6 ou «*» para ambos os IPv4 e IPv6. - + Ban client after consecutive failures: Prohibir clientes despois de fallos sucesivos: - + Never Nunca - + ban for: prohibir durante: - + Session timeout: Tempo límite da sesión: - + Disabled Desactivado - Enable cookie Secure flag (requires HTTPS) - Activar o indicador de seguranza para cookies (require HTTPS) + Activar o indicador de seguranza para cookies (require HTTPS) - + Server domains: Dominios do servidor: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6160,442 +6478,495 @@ deberia poñer nomes de dominios usados polo servidor WebUI. Usar «;» para dividir entradas múltiples. Pode usar o comodín «*». - + &Use HTTPS instead of HTTP &Usar HTTPS no canto de HTTP - + Bypass authentication for clients on localhost Omitir autenticación para clientes no servidor local - + Bypass authentication for clients in whitelisted IP subnets Omitir a autenticación para clientes nas subredes con IP incluídas na lista branca - + IP subnet whitelist... Lista branca de subredes con IP... - - Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + Use alternative WebUI - + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + Especifica as IPs do proxy inverso (ou subredes, por exemplo, 0.0.0.0/24) para usar a dirección do cliente reencamiñada (cabeceira X-Forwarded-For). Usa ';' para separar varias entradas. + + + Upda&te my dynamic domain name Actualizar o no&me do dominio dinámico - + Minimize qBittorrent to notification area Minimizar o qBittorrent á area de notificacións - + + Search + Buscar + + + + WebUI + + + + Interface Interface - + Language: Idioma: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Estilo da icona da bandexa: - - + + Normal Normal - + File association Asociación de ficheiros - + Use qBittorrent for .torrent files Usar o qBittorrent para ficheiros .torrent - + Use qBittorrent for magnet links Usar o qBittorrent para ligazóns magnet - + Check for program updates Buscar actualizacións do programa - + Power Management Xestión de enerxía - + + &Log Files + + + + Save path: Ruta onde gardar: - + Backup the log file after: Facer copia do ficheiro do rexistro despois de: - + Delete backup logs older than: Eliminar rexistros das copias de seguranza con máis de: - + + Show external IP in status bar + + + + When adding a torrent Cando engada un torrent - + Bring torrent dialog to the front Traer ao primeiro plano o diálogo torrent - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Eliminar tamén os ficheiros .torrent cando se cancele a adición - + Also when addition is cancelled Tamén cando se cancele a adición - + Warning! Data loss possible! Aviso! É posíbel que se perdan datos. - + Saving Management Xestión de gardar no disco - + Default Torrent Management Mode: Modo de xestión de torrents predeterminado: - + Manual Manual - + Automatic Automático - + When Torrent Category changed: Cando a categoría do torrent cambiou: - + Relocate torrent Mover o torrent - + Switch torrent to Manual Mode Cambiar o torrent a modo manual - - + + Relocate affected torrents Mover os torrents afectados - - + + Switch affected torrents to Manual Mode Cambiar os torrents afectados ao modo manual - + Use Subcategories Usar subcategorías - + Default Save Path: Ruta de gardado predeterminada: - + Copy .torrent files to: Copiar os ficheiros torrent a: - + Show &qBittorrent in notification area Mostrar o &qBittorrent na área de notificacións - &Log file - &Ficheiro do rexistro + &Ficheiro do rexistro - + Display &torrent content and some options Mostrar o contido do &torrent e algunhas opcións - + De&lete .torrent files afterwards E&liminar os ficheiros .torrent despois - + Copy .torrent files for finished downloads to: Copiar os ficheiros torrent das descargas rematadas a: - + Pre-allocate disk space for all files Pre-asignar espazo no disco a todos os ficheiros - + Use custom UI Theme Usar tema personalizado para a interface - + UI Theme file: Ficheiro co tema da interface: - + Changing Interface settings requires application restart Cambiar os axustes da interface require reiniciar a aplicación - + Shows a confirmation dialog upon torrent deletion Mostra unha pregunta de confirmación para eliminar un torrent - - + + Preview file, otherwise open destination folder Previsualizar ficheiro, do contrario abrir o cartafol de destino - - Show torrent options - Mostrar as opcións de torrent + Mostrar as opcións de torrent - + Shows a confirmation dialog when exiting with active torrents Mostra unha pregunta de confirmación para saír se hai torrents activos - + When minimizing, the main window is closed and must be reopened from the systray icon Ao minimizar, a xanela principal péchase e deberá abrirse de novo desde a icona da bandexa do sistema - + The systray icon will still be visible when closing the main window A icona da bandexa do sistema será visíbel incluso coa xanela principal pechada - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Pechar o qBittorrent á área de notificacións - + Monochrome (for dark theme) Monocromo (para tema escuro) - + Monochrome (for light theme) Monocromo (para tema claro) - + Inhibit system sleep when torrents are downloading Inhibir a suspensión do sistema cando se está descargando algún torrent - + Inhibit system sleep when torrents are seeding Inhibir a suspensión do sistema cando haxa torrents sementando - + Creates an additional log file after the log file reaches the specified file size Crea un ficheiro de rexistro adicional cando o o anterior alcanza o tamaño especificado - + days Delete backup logs older than 10 days días - + months Delete backup logs older than 10 months meses - + years Delete backup logs older than 10 years anos - + Log performance warnings - + Rexistrar avisos de rendemento - The torrent will be added to download list in a paused state - O torrent engadirase á lista e descarga en estado detido + O torrent engadirase á lista e descarga en estado detido - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Non iniciar a descarga automaticamente - + Whether the .torrent file should be deleted after adding it Indica se se debe eliminar o ficheiro .torrent despois de engadilo - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Asignar os tamaños completos dos ficheiros no disco antes de iniciar as descargas para minimizar así a fragmentación. Só útil para HDD. - + Append .!qB extension to incomplete files Anexar a extensión !qB aos nomes dos ficheiros incompletos - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Descargado un torrent, ofrecer engadir torrents de calquera ficheiro .torrent atopado dentro del. - + Enable recursive download dialog Activar o diálogo de descarga recursiva - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automático: varias propiedades do torrent (p.e: a ruta de gardado) serán decididas pola categoría asociada. Manual: varias propiedades do torrent (p.e: a ruta de gardado) deben asignarse manualmente. - + When Default Save/Incomplete Path changed: - + Cando se cambie a Ruta de Gardado/ Incompleta por Defecto: - + When Category Save Path changed: Cando a ruta de gardado da categoría cambiou: - + Use Category paths in Manual Mode Usar as rutas de Categoría no modo manual - + Resolve relative Save Path against appropriate Category path instead of Default one Determinar a Ruta Onde Gardar relativa segundo a ruta da Categoría apropiada no canto da predeterminada. - + Use icons from system theme - + Usa iconas do tema do sistema - + Window state on start up: - + Estado da xanela ao inicio: - + qBittorrent window state on start up - + Estado da xanela de qBittorrent ao iniciar - + Torrent stop condition: - + Condición de parada do torrent: - - + + None - + Ningún - - + + Metadata received - + Metadatos recibidos - - + + Files checked - + Ficheiros comprobados - + Ask for merging trackers when torrent is being added manually - + Solicitar a combinación de rastrexadores cando se engade o torrent manualmente - + Use another path for incomplete torrents: Usar outra ruta para os torrents incompletos: - + Automatically add torrents from: Engadir automaticamente os torrents desde: - + Excluded file names - + Nomes de ficheiros excluídos - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6609,844 +6980,929 @@ Examples readme.txt: filter exact file name. ?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - + Lista negra de nomes de ficheiros filtrados para que se descarguen de torrent(s). +Os ficheiros que coincidan con calquera dos filtros desta lista terán a súa prioridade automaticamente configurada como "Non descargar". + +Use novas liñas para separar varias entradas. Pode usar comodíns como se indica a continuación. +*: coincide con cero ou máis de calquera carácter. +?: coincide con calquera carácter. +[...]: os conxuntos de caracteres pódense representar entre corchetes. + +Exemplos +*.exe: extensión de ficheiro de filtro ".exe". +readme.txt: filtra o nome do ficheiro exacto. +?.txt: filtra 'a.txt', 'b.txt' pero non 'aa.txt'. +readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt' pero non 'readme10.txt'. - + Receiver Receptor - + To: To receiver A: - + SMTP server: Servidor SMTP: - + Sender Remitente - + From: From sender De: - + This server requires a secure connection (SSL) Este servidor require unha conexión segura (SSL) - - + + Authentication Autenticación - - - - + + + + Username: Nome do usuario: - - - - + + + + Password: Contrasinal: - + Run external program - + Executar programa externo - Run on torrent added - + Executar ao engadir o torrent - Run on torrent finished - + Executar ao rematar o torrent - + Show console window Mostrar a xanela da consola - + TCP and μTP TCP e μTP - + Listening Port Porto de escoita - + Port used for incoming connections: Porto usado para as conexións entrantes: - + Set to 0 to let your system pick an unused port Estabelézao en 0 para que o seu sistema escolla un porto non utilizado - + Random Aleatorio - + Use UPnP / NAT-PMP port forwarding from my router Usar un porto UPnP / NAT-PMP para reencamiñar desde o router - + Connections Limits Límites da conexión - + Maximum number of connections per torrent: Número máximo de conexións por torrent: - + Global maximum number of connections: Número máximo global de conexións: - + Maximum number of upload slots per torrent: Número máximo de slots de envío por torrent: - + Global maximum number of upload slots: Número máximo global de slots de envío: - + Proxy Server Servidor proxy - + Type: Tipo: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Servidor: - - - + + + Port: Porto: - + Otherwise, the proxy server is only used for tracker connections Doutro xeito, o servidor proxy usarase unicamente para conexións co localizador - + Use proxy for peer connections Usar o proxy para conexións cos pares - + A&uthentication A&utenticación - + Info: The password is saved unencrypted Información: o contrasinal gárdase sen cifrar - + Filter path (.dat, .p2p, .p2b): Ruta do filtro (.dat, .p2p, .p2b): - + Reload the filter Recargar o filtro - + Manually banned IP addresses... Enderezos IP bloqueados manualmente... - + Apply to trackers Aplicar aos localizadores - + Global Rate Limits Límites globais de velocidade - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Enviar: - - + + Download: Descargar: - + Alternative Rate Limits Límites alternativos de velocidade - + Start time Hora de inicio - + End time Hora de remate - + When: Cando: - + Every day Todos os días - + Weekdays Entresemana - + Weekends Fins de semana - + Rate Limits Settings Axustes dos límites de velocidade - + Apply rate limit to peers on LAN Aplicar o límite de velocidade aos pares da LAN - + Apply rate limit to transport overhead Aplicar os límites de velocidade ás sobrecargas do transporte - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Aplicar o límite de velocidade ao protocolo uTP - + Privacy Confidencialidade - + Enable DHT (decentralized network) to find more peers Activar o DHT (rede descentralizada) para encontrar máis pares - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Clientes de bittorrent compatíbeis co intercambio de pares (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Activar o intercambio de pares (PeX) para buscar máis pares - + Look for peers on your local network Buscar pares na súa rede local - + Enable Local Peer Discovery to find more peers Activar a busca de pares locais (LPD) para encontrar máis pares - + Encryption mode: Modo cifrado: - + Require encryption Precisa cifrado - + Disable encryption Desactivar o cifrado - + Enable when using a proxy or a VPN connection Activar cando se use unha conexión proxy ou VPN - + Enable anonymous mode Activar o modo anónimo - + Maximum active downloads: Descargas activas máximas: - + Maximum active uploads: Envíos activos máximos: - + Maximum active torrents: Torrents activos máximos: - + Do not count slow torrents in these limits Non ter en conta os torrents lentos nestes límites - + Upload rate threshold: Límite da velocidade de envío: - + Download rate threshold: Límite da velocidade de descarga: - - - + + + + sec seconds s - + Torrent inactivity timer: Temporizador de inactividade do torrent: - + then despois - + Use UPnP / NAT-PMP to forward the port from my router Usar un porto UPnP / NAT-PMP para reencamiñar desde o router - + Certificate: Certificado: - + Key: Chave: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Información sobre certificados</a> - + Change current password Cambiar o contrasinal actual - Use alternative Web UI - Usar a interface web alternativa + Usar a interface web alternativa - + Files location: Localización dos ficheiros: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Seguranza - + Enable clickjacking protection Activar a protección contra clics enganosos - + Enable Cross-Site Request Forgery (CSRF) protection Activar a protección contra falsificacións de peticións entre sitios web (CSRF). - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Activar a validación da cabeceira do servidor - + Add custom HTTP headers Engadir cabeceiras HTTP personalizadas - + Header: value pairs, one per line Cabeceira: pares de valores, un por liña - + Enable reverse proxy support Activar a compatibilidade co proxy inverso - + Trusted proxies list: Lista de proxys de confiaza: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servizo: - + Register Rexistro - + Domain name: Nome do dominio: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Activando estas opcións, pode <strong>perder definitivamente</strong> os seus ficheiros .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Se activa a segunda opción (&ldquo;Tamén cando se cancele a edición&rdquo;) o ficheiro .torrent <strong>eliminarase</strong> incluso se vostede preme &ldquo;<strong>Cancelar</strong>&rdquo; no diálogo &ldquo;Engadir torrent&rdquo; - + Select qBittorrent UI Theme file Seleccionar o tema da interface para qBittorrent - + Choose Alternative UI files location Seleccione localización alternativa dos ficheiros da interface de usuario - + Supported parameters (case sensitive): Parámetros aceptados (sensíbel ás maiúsc.) - + Minimized - + Minimizado - + Hidden - + Oculto - + Disabled due to failed to detect system tray presence - + Desactivado debido a que non se puido detectar a presenza da bandexa do sistema - + No stop condition is set. - + Non se establece ningunha condición de parada. - + Torrent will stop after metadata is received. - + O torrent deterase despois de recibir os metadatos. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + O torrent deterase despois de que se comproben inicialmente os ficheiros. - + This will also download metadata if it wasn't there initially. - + Isto tamén descargará metadatos se non estaban alí inicialmente. - + %N: Torrent name %N: Nome do torrent - + %L: Category %L: Categoría - + %F: Content path (same as root path for multifile torrent) %F: Ruta ao contido (igual á ruta raíz pero para torrents de varios ficheiros) - + %R: Root path (first torrent subdirectory path) %R: Ruta raíz (ruta ao subcartafol do primeiro torrent) - + %D: Save path %D: Ruta onde gardar - + %C: Number of files %C: Número de ficheiros - + %Z: Torrent size (bytes) %Z: Tamaño do torrent (bytes) - + %T: Current tracker %T: Localizador actual - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Consello: escriba o parámetro entre comiñas para evitar que o texto se corte nos espazos en branco (p.e: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Ningún) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Un torrent considerarase lento se a descarga e o envío se manteñen por debaixo dos valores do «Temporizador de inactividade do torrent» en segundos. - + Certificate Certificado - + Select certificate Seleccionar certificado - + Private key Chave privada - + Select private key Seleccionar a chave privada - + + WebUI configuration failed. Reason: %1 + Fallou a configuración da WebUI. Motivo: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Seleccionar o cartafol a monitorizar - + Adding entry failed Produciuse un fallo engadindo a entrada - - Location Error - Erro de localización + + The WebUI username must be at least 3 characters long. + O nome de usuario da WebUI debe ter polo menos 3 caracteres. - - The alternative Web UI files location cannot be blank. - A localización alternativa dos ficheiros da interface de usuario non pode quedar baleira. + + The WebUI password must be at least 6 characters long. + O contrasinal da WebUI debe ter polo menos 6 caracteres. + + + + Location Error + Erro de localización - - + + Choose export directory Seleccionar un cartafol de exportación - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Cando estas opcións están activadas, o qBittorent <strong>elimina</strong> os ficheiros .torrent despois de seren engadidos correctamente (primeira opción) ou non (segunda opción) á cola de descargas. Isto aplicarase <strong>non só</strong> aos ficheiros abertos desde o menú &ldquo;Engadir torrent&rdquo; senón tamén a aqueles abertos vía <strong>asociación co tipo de ficheiro</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Ficheiro co tema da interface do qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiquetas (separadas por coma) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (ou '-' se non está dispoñíbel) - + %J: Info hash v2 (or '-' if unavailable) %I: Info hash v2 (ou '-' se non está dispoñíbel) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) % K: ID do torrent (hash de información sha-1 para torrent v1 ou hash de información sha-256 truncado para v2 / torrent híbrido) - - - + + + Choose a save directory Seleccionar un cartafol onde gardar - + + Torrents that have metadata initially will be added as stopped. + Os torrents que teñan metadatos inicialmente engadiranse como parados. + + + Choose an IP filter file Seleccionar un ficheiro cos filtros de ip - + All supported filters Todos os ficheiros compatíbeis - + + The alternative WebUI files location cannot be blank. + A localización alternativa dos ficheiros WebUI non pode estar en branco. + + + Parsing error Erro de análise - + Failed to parse the provided IP filter Produciuse un fallo ao analizar o filtro Ip indicado - + Successfully refreshed Actualizado correctamente - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Analizouse correctamente o filtro IP indicado: aplicáronse %1 regras. - + Preferences Preferencias - + Time Error Erro de hora - + The start time and the end time can't be the same. A hora de inicio e de remate teñen que ser distintas. - - + + Length Error Erro de lonxitude - - - The Web UI username must be at least 3 characters long. - O nome de usuario da interface web debe ter polo menos 3 caracteres. - - - - The Web UI password must be at least 6 characters long. - O contrasinal da interface web debe ter polo menos 6 caracteres. - PeerInfo - + Unknown Descoñecido - + Interested (local) and choked (peer) interesado (local) e rexeitado (par) - + Interested (local) and unchoked (peer) interesado (local) e aceptado (par) - + Interested (peer) and choked (local) interesado (par) e rexeitado (local) - + Interested (peer) and unchoked (local) Interesado (par) e aceptado (local) - + Not interested (local) and unchoked (peer) Non interesado (local) e aceptado (par) - + Not interested (peer) and unchoked (local) Non interesado (par) e aceptado (local) - + Optimistic unchoke Aceptado optimista - + Peer snubbed Par desbotado - + Incoming connection Conexión entrante - + Peer from DHT Par de DHT - + Peer from PEX Par de PEX - + Peer from LSD Par de LSD - + Encrypted traffic Tráfico cifrado - + Encrypted handshake Handshake cifrado + + + Peer is using NAT hole punching + + PeerListWidget @@ -7458,7 +7914,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Enderezo @@ -7485,7 +7941,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer ID Client i.e.: Client resolved from Peer ID - + Cliente de identificación de pares @@ -7602,7 +8058,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not O par «%1» está expulsado manualmente - + N/A N/D @@ -7625,7 +8081,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Lista de pares a engadir (unha IP por liña): - + Format: IPv4:port / [IPv6]:port Formato: IPv4:porto / [IPv6]:porto @@ -7666,27 +8122,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Ficheiros neste anaco: - + File in this piece: - + Ficheiro nesta parte: - + File in these pieces: - + Ficheiro nestas partes: - + Wait until metadata become available to see detailed information Agarde a que estean dispoñíbeis os metadatos para ter información máis detallada - + Hold Shift key for detailed information Manter premida a tecla Maiús. para obter máis información @@ -7699,58 +8155,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Engadidos de busca - + Installed search plugins: Engadidos de busca instalados: - + Name Nome - + Version Versión - + Url Url - - + + Enabled Activado - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Aviso: asegúrese de cumprir as leis sobre dereitos de autor do seu país cando descargue torrents con calquera destes motores de busca. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Podes obter novos complementos de buscadores aquí: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instalar un novo - + Check for updates Buscar actualizacións - + Close Pechar - + Uninstall Desinstalar @@ -7871,17 +8327,17 @@ Desactiváronse estes engadidos. Fonte do engadido - + Search plugin source: Fonte do engadido de busca: - + Local file Ficheiro local - + Web link Ligazón web @@ -7899,70 +8355,70 @@ Desactiváronse estes engadidos. Power management found suitable D-Bus interface. Interface: %1 - + A xestión de enerxía atopou a interface D-Bus adecuada. Interface: %1 Power management error. Did not found suitable D-Bus interface. - + Erro de xestión de enerxía. Non se atopou a interface D-Bus adecuada. Power management error. Action: %1. Error: %2 - + Erro de xestión de enerxía. Acción: %1. Erro: %2 Power management unexpected error. State: %1. Error: %2 - + Erro inesperado na xestión de enerxía. Estado: %1. Erro: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Os seguintes ficheiros do torrent «%1» admiten a vista previa, seleccione un deles: - + Preview Previsualizar - + Name Nome - + Size Tamaño - + Progress Progreso - + Preview impossible A previsualización non é posíbel - + Sorry, we can't preview this file: "%1". Sentímolo, non é posíbel previsualizar este ficheiro: «%1». - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as columnas visíbeis ao tamaño dos contidos @@ -7975,29 +8431,29 @@ Desactiváronse estes engadidos. Private::FileLineEdit - + Path does not exist - + O camiño non existe - + Path does not point to a directory - + O camiño non apunta a un directorio - + Path does not point to a file - + O camiño non apunta a un ficheiro - + Don't have read permission to path - + Non tes permiso de lectura para o camiño - + Don't have write permission to path - + Non tes permiso de escritura para o camiño @@ -8036,12 +8492,12 @@ Desactiváronse estes engadidos. PropertiesWidget - + Downloaded: Descargado: - + Availability: Dispoñíbel: @@ -8056,53 +8512,53 @@ Desactiváronse estes engadidos. Transferencia - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Tempo en activo: - + ETA: Tempo restante: - + Uploaded: Enviado: - + Seeds: Sementes: - + Download Speed: Velocidade de descarga: - + Upload Speed: Velocidade de envío: - + Peers: Pares: - + Download Limit: Límite da descarga: - + Upload Limit: Límite do envío: - + Wasted: Desbotado: @@ -8112,193 +8568,249 @@ Desactiváronse estes engadidos. Conexións: - + Information Información - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Comentario: - + Select All Seleccionar todo - + Select None Non seleccionar nada - + Share Ratio: Taxa de compartición: - + Reannounce In: Anunciar de novo en: - + Last Seen Complete: Visto completo por última vez: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Tamaño total: - + Pieces: Anacos: - + Created By: Creado por: - + Added On: Engadido o: - + Completed On: Completado o: - + Created On: Creado o: - + + Private: + + + + Save Path: Ruta: - + Never Nunca - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ten %3) - - + + %1 (%2 this session) %1 (%2 nesta sesión) - - + + + N/A N/D - + + Yes + Si + + + + No + Non + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sementou durante %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 máx.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 de media) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nova semente web + Nova semente web - Remove Web seed - Retirar semente web + Retirar semente web - Copy Web seed URL - Copiar URL da semente web + Copiar URL da semente web - Edit Web seed URL - Editar URL da semente web + Editar URL da semente web - + Filter files... Ficheiros dos filtros... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Os gráficos de velocidade están desactivados - + You can enable it in Advanced Options Pode activalo nas opcións avanzadas - New URL seed New HTTP source - Nova semente desde unha url + Nova semente desde unha url - New URL seed: - Nova semente desde unha url: + Nova semente desde unha url: - - This URL seed is already in the list. - Esta semente desde unha url xa está na lista. + Esta semente desde unha url xa está na lista. - + Web seed editing Edición da semente web - + Web seed URL: URL da semente web: @@ -8317,22 +8829,22 @@ Desactiváronse estes engadidos. Non foi posíbel gardar os datos do descargador automátido de RSS en %1. Erro: %2 - + Invalid data format O formato dos datos non é válido - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + O artigo RSS '%1' é aceptado pola regra '%2'. Tentando engadir torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Produciuse un erro ao ler as regras de descarga automática de RSS. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Non foi posíbel cargar as regras do descargador automático de RSS. Razón: %1 @@ -8340,22 +8852,22 @@ Desactiváronse estes engadidos. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Produciuse un fallo descargando a fonte RSS en: %1. Razón: %2 - + RSS feed at '%1' updated. Added %2 new articles. Actualizouse a fonte RSS de «%1». Engadidos %2 artigos novos. - + Failed to parse RSS feed at '%1'. Reason: %2 Produciuse un fallo analizando a fonte RSS de «%1». Razón: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Descargouse correctamente a fonte RSS en «%1». Iniciando a análise. @@ -8365,12 +8877,12 @@ Desactiváronse estes engadidos. Failed to read RSS session data. %1 - + Produciuse un erro ao ler os datos da sesión RSS. %1 Failed to save RSS feed in '%1', Reason: %2 - + Produciuse un erro ao gardar a fonte RSS en '%1', Razón: %2 @@ -8391,12 +8903,12 @@ Desactiváronse estes engadidos. RSS::Private::Parser - + Invalid RSS feed. Fonte RSS incorrecta. - + %1 (line: %2, column: %3, offset: %4). %1 (liña: %2, columna: %3, compensación: %4). @@ -8404,99 +8916,99 @@ Desactiváronse estes engadidos. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Non se puido gardar a configuración da sesión RSS. Ficheiro: "%1". Erro: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - + Non se puideron gardar os datos da sesión RSS. Ficheiro: "%1". Erro: "%2" - - + + RSS feed with given URL already exists: %1. Xa existe unha fonte RSS con esa URL: %1 - + Feed doesn't exist: %1. - + O feed non existe: %1. - + Cannot move root folder. Non é posíbel mover o cartafol raíz. - - + + Item doesn't exist: %1. O elemento non existe: %1. - + Couldn't move folder into itself. - + Non se puido mover o cartafol dentro de si mesmo. - + Cannot delete root folder. Non é posíbel eliminar o cartafol raíz. - + Failed to read RSS session data. %1 - + Produciuse un erro ao ler os datos da sesión RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Produciuse un erro ao analizar os datos da sesión RSS. Ficheiro: "%1". Erro: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Produciuse un erro ao cargar os datos da sesión RSS. Ficheiro: "%1". Erro: "Formato de datos non válido". - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Non se puido cargar o feed RSS. Feed: "%1". Motivo: o URL é necesario. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Non se puido cargar o feed RSS. Feed: "%1". Motivo: o UID non é válido. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Atopouse un feed RSS duplicado. UID: "%1". Erro: a configuración parece estar danada. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Non se puido cargar o elemento RSS. Elemento: "%1". Formato de datos non válido. - + Corrupted RSS list, not loading it. - + Lista RSS danada, sen cargala. - + Incorrect RSS Item path: %1. Ruta incorrecta ao elemento do RSS: %1 - + RSS item with given path already exists: %1. Xa existe un elemento RSS con esa ruta: %1 - + Parent folder doesn't exist: %1. O cartafol pai non existe: %1. @@ -8520,8 +9032,8 @@ Desactiváronse estes engadidos. - - + + Mark items read Marcar como lidos @@ -8546,132 +9058,132 @@ Desactiváronse estes engadidos. Torrents: (dobre clic para descargar) - - + + Delete Eliminar - + Rename... Cambiar o nome... - + Rename Cambiar o nome - - + + Update Actualizar - + New subscription... Subscrición nova... - - + + Update all feeds Actualizar todas as fontes - + Download torrent Descargar o torrent - + Open news URL Abrir a URL das novas - + Copy feed URL Copiar a URL da fonte - + New folder... Cartafol novo... - + Edit feed URL... - + Editar URL do feed... - + Edit feed URL - + Editar URL do feed - + Please choose a folder name Seleccione un nome de cartafol - + Folder name: Nome do cartafol: - + New folder Cartafol novo - - + + Please type a RSS feed URL Escriba unha URL de fonte RSS - - + + Feed URL: URL da fonte: - + Deletion confirmation Confirmación da eliminación - + Are you sure you want to delete the selected RSS feeds? Confirma a eliminación das fontes RSS seleccionadas? - + Please choose a new name for this RSS feed Escolla un nome novo para esta fonte RSS - + New feed name: Nome novo da fonte: - + Rename failed O cambio de nome fallou - + Date: Data: - + Feed: - + Feed: - + Author: Autor: @@ -8679,38 +9191,38 @@ Desactiváronse estes engadidos. SearchController - + Python must be installed to use the Search Engine. Debe instalar Python para usar o motor de buscas. - + Unable to create more than %1 concurrent searches. Non é posíbel crear máis de %1 buscas simultáneas. - - + + Offset is out of range A compensación está fóra dos límites - + All plugins are already up to date. Xa están actualizados todos os engadidos. - + Updating %1 plugins Actualizando %1 engadidos - + Updating plugin %1 Actualizando o engadido %1 - + Failed to check for plugin updates: %1 Produciuse un fallo na busca de actualizacións dos engadidos: %1 @@ -8735,32 +9247,32 @@ Desactiváronse estes engadidos. Set minimum and maximum allowed number of seeders - + Establecer o número mínimo e máximo permitido de sementadoras Minimum number of seeds - + Número mínimo de sementes Maximum number of seeds - + Número máximo de sementes Set minimum and maximum allowed size of a torrent - + Establece o tamaño mínimo e máximo permitido dun torrent Minimum torrent size - + Tamaño mínimo do torrent Maximum torrent size - + Tamaño máximo do torrent @@ -8785,132 +9297,146 @@ Desactiváronse estes engadidos. Tamaño: - + Name i.e: file name Nome - + Size i.e: file size Tamaño - + Seeders i.e: Number of full sources Sementadores - + Leechers i.e: Number of partial sources Pares incompletos - Search engine - Motor de busca + Motor de busca - + Filter search results... Filtrar resultados da busca... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultados (mostrando <i>%1</i> de <i>%2</i>): - + Torrent names only Só nos nomes dos torrents - + Everywhere En todo - + Use regular expressions Usar expresións regulares - + Open download window Abrir a xanela de descargas - + Download Descargar - + Open description page Abrir a páxina da descrición - + Copy Copiar - + Name Nome - + Download link Descargar ligazón - + Description page URL URL da descrición - + Searching... Buscando... - + Search has finished A busca rematou - + Search aborted Busca cancelada - + An error occurred during search... Produciuse un erro durante a busca... - + Search returned no results A busca non obtivo resultados - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilidade da columna - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as columnas visíbeis ao tamaño dos contidos @@ -8918,104 +9444,104 @@ Desactiváronse estes engadidos. SearchPluginManager - + Unknown search engine plugin file format. Formato descoñecido do ficheiro co engadido do motor de busca. - + Plugin already at version %1, which is greater than %2 O engadido xa está na versión %1, a cal é máis recente que %2 - + A more recent version of this plugin is already installed. Xa está instalada unha versión máis recente do engadido. - + Plugin %1 is not supported. Engadido: %1 non é compatíbel. - - + + Plugin is not supported. O engadido non é compatíbel. - + Plugin %1 has been successfully updated. O engadido %1 actualizouse correctamente. - + All categories Todas as categorías - + Movies Películas - + TV shows Programas de TV - + Music Música - + Games Xogos - + Anime Anime - + Software Software - + Pictures Imaxes - + Books Libros - + Update server is temporarily unavailable. %1 O servidor de actualizacións non está dispoñíbel temporalmente. %1 - - + + Failed to download the plugin file. %1 Produciuse un fallo ao descargar o ficheiro do engadido. %1 - + Plugin "%1" is outdated, updating to version %2 O engadido «%1» non está actualizado, actualizando á versión %2 - + Incorrect update info received for %1 out of %2 plugins. A información recibida sobre a actualización é incorrecta para %1 dos %2 engadidos. - + Search plugin '%1' contains invalid version string ('%2') O engadido de busca «%1» contén unha cadea incorrecta da versión («%2») @@ -9025,114 +9551,153 @@ Desactiváronse estes engadidos. - - - - Search Buscar - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Non hai engadidos de busca instalados. Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela para instalar algún. - + Search plugins... Engadidos de busca - + A phrase to search for. Unha frase que buscar. - + Spaces in a search term may be protected by double quotes. Os espazos nos termos de busca poden protexerse con comiñas. - + Example: Search phrase example Exemplo: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: buscar <b>foo bar</b> - + All plugins Todos os engadidos - + Only enabled Activados - + + + Invalid data format. + O formato dos datos non é válido. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: buscar <b>foo</b> e <b>bar</b> - + + Refresh + + + + Close tab Pechar lapela - + Close all tabs Pechar todas as lapelas - + Select... Seleccionar... - - - + + Search Engine Buscador - + + Please install Python to use the Search Engine. Instale Python para usar o motor de busca. - + Empty search pattern Patrón de busca baleiro - + Please type a search pattern first Escriba primeiro o patrón de busca - + + Stop Parar - Search has finished - A busca rematou + A busca rematou - Search has failed - A busca fallou + A busca fallou + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9245,34 +9810,34 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa - + Upload: Enviar: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Descargar: - + Alternative speed limits Límites alternativos de velocidade @@ -9464,32 +10029,32 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa Tempo medio na cola: - + Connected peers: Pares conectados: - + All-time share ratio: Taxa de compartición total: - + All-time download: Descarga total: - + Session waste: Desbotado na sesión: - + All-time upload: Envío total: - + Total buffer size: Tamaño total do búfer: @@ -9504,12 +10069,12 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa Traballos na cola E/S: - + Write cache overload: Sobrecarga da caché de escritura: - + Read cache overload: Sobrecarga da caché de lectura: @@ -9528,51 +10093,67 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa StatusBar - + Connection status: Estado da conexión: - - + + No direct connections. This may indicate network configuration problems. Non hai conexións directas. Isto pode significar que hai problemas na configuración da rede. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodos - + qBittorrent needs to be restarted! É necesario reiniciar o qBittorrent - - - + + + Connection Status: Estado da conexión: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Desconectado. Isto significa, normalmente, que o programa fallou ao escoitar o porto seleccionado para conexións entrantes. - + Online Conectado - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Prema para cambiar aos límites alternativos de velocidade - + Click to switch to regular speed limits Prema para cambiar aos límites normais de velocidade @@ -9601,14 +10182,22 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa Completados (0) - Resumed (0) - Continuado (0) + Continuado (0) - Paused (0) - Detidos (0) + Detidos (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9643,7 +10232,7 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa Moving (0) - + Movendo (0) @@ -9670,35 +10259,51 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa Completed (%1) Completados (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Detidos (%1) + Detidos (%1) Moving (%1) - + Movendo (%1) - Resume torrents - Continuar os torrents + Continuar os torrents - Pause torrents - Deter os torrents + Deter os torrents Remove torrents - + Eliminar torrents - Resumed (%1) - Retomados (%1) + Retomados (%1) @@ -9739,17 +10344,17 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa TagFilterModel - + Tags Etiquetas - + All Todos - + Untagged Sen etiquetar @@ -9757,52 +10362,64 @@ Prema no botón «Engadidos de busca...» na parte inferior dereita da xanela pa TagFilterWidget - + Add tag... Engadir unha etiqueta... - + Remove tag Eliminar etiqueta - + Remove unused tags Eliminar as etiquetas non usadas - Resume torrents - Continuar os torrents + Continuar os torrents - Pause torrents - Deter os torrents + Deter os torrents - + Remove torrents - + Eliminar torrents - New Tag - Etiqueta nova + Etiqueta nova + + + + Start torrents + + + + + Stop torrents + - + Tag: Etiqueta: - + + Add tag + + + + Invalid tag name O nome da etiqueta non é correcto - + Tag name '%1' is invalid O nome da etiqueta «%1» non é válido @@ -9942,32 +10559,32 @@ Seleccione un nome diferente e ténteo de novo. TorrentContentModel - + Name Nome - + Progress Progreso - + Download Priority Prioridade da descarga - + Remaining Restante - + Availability Dispoñíbilidade - + Total Size Tamaño total @@ -10012,102 +10629,120 @@ Seleccione un nome diferente e ténteo de novo. TorrentContentWidget - + Rename error Erro ao cambiar o nome - + Renaming Cambiar o nome - + New name: Nome novo: - + Column visibility Visibilidade das columnas - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as columnas visíbeis ao tamaño dos contidos - + Open Abrir - + Open containing folder - + Abrir cartafol contedor - + Rename... Cambiar o nome... - + Priority Prioridade - - + + Do not download Non descargar - + Normal Normal - + High Alta - + Maximum Máxima - + By shown file order Por orde de ficheiro mostrado - + Normal priority Prioridade normal - + High priority Prioridade alta - + Maximum priority Prioridade máxima - + Priority by shown file order Prioridade pola orde dos ficheiros mostrados + + TorrentCreatorController + + + Too many active tasks + Demasiadas tarefas activas + + + + Torrent creation is still unfinished. + A creación do torrente aínda está sen rematar. + + + + Torrent creation failed. + Produciuse un erro ao crear o torrent. + + TorrentCreatorDialog @@ -10132,13 +10767,13 @@ Seleccione un nome diferente e ténteo de novo. - + Select file Seleccionar ficheiro - + Select folder Seleccionar cartafol @@ -10163,58 +10798,10 @@ Seleccione un nome diferente e ténteo de novo. Tamaño do anaco: - + Auto Automático - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10261,92 +10848,83 @@ Seleccione un nome diferente e ténteo de novo. Campos - + You can separate tracker tiers / groups with an empty line. Pode separar os grupos / tiers de localizadores cunha liña en branco. - + Web seed URLs: URLs da semente web: - + Tracker URLs: URLs do localizador: - + Comments: Comentarios: - + Source: Fonte: - + Progress: Progreso: - + Create Torrent Crear torrent - - + + Torrent creation failed Produciuse un fallo na creación do torrent - + Reason: Path to file/folder is not readable. Razón: non é posíbel ler a ruta ao cartafol/ficheiro. - + Select where to save the new torrent Seleccionar onde gardar o torrent novo - + Torrent Files (*.torrent) Ficheiros torrent (*.torrent) - - Reason: %1 - Razón: %1 - - - + Add torrent to transfer list failed. - + Produciuse un erro en engadir torrent á lista de transferencias. - + Reason: "%1" - + Motivo: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Razón: o ficheiro torrent creado non é válido. Non será engadido á lista de descargas. + Engadir torrent fallou - + Torrent creator Creador de torrents - + Torrent created: Creouse o torrent: @@ -10354,32 +10932,32 @@ Seleccione un nome diferente e ténteo de novo. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Produciuse un erro ao cargar a configuración dos cartafoles vixiados. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Produciuse un erro ao analizar a configuración dos cartafois vixiados de %1. Erro: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Produciuse un erro ao cargar a configuración dos cartafois vixiados desde %1. Erro: "Formato de datos non válido". - + Couldn't store Watched Folders configuration to %1. Error: %2 Non foi posíbel gardar os axustes dos cartafoles observados en %1. Erro: %2 - + Watched folder Path cannot be empty. A ruta ao cartafol observado non pode estar baleira. - + Watched folder Path cannot be relative. A ruta do cartafol observado non pode ser relativa. @@ -10387,27 +10965,27 @@ Seleccione un nome diferente e ténteo de novo. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI Magnet non válida. URI: %1. Motivo: %2 - + Magnet file too big. File: %1 - + O ficheiro magnet é demasiado grande. Ficheiro: %1 - + Failed to open magnet file: %1 Produciuse un fallo abrindo o ficheiro magnet: %1 - + Rejecting failed torrent file: %1 Rexeitando o ficheiro torrent con fallos: %1 - + Watching folder: "%1" Cartafol observado: «%1» @@ -10415,14 +10993,12 @@ Seleccione un nome diferente e ténteo de novo. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Produciuse un erro ao asignar memoria ao ler o ficheiro. Ficheiro: "%1". Erro: "%2" - Invalid metadata - Metadatos incorrectos + Metadatos incorrectos @@ -10453,127 +11029,203 @@ Seleccione un nome diferente e ténteo de novo. Usar outra ruta para os torrents incompletos - + Category: Categoría: - + + Torrent Share Limits + + + Torrent speed limits - Límites de velocidade do torrent + Límites de velocidade do torrent - + Download: Descargar: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Estes non superarán os límites globais - + Upload: Enviar: - Torrent share limits - Límites de compartición do torrent + Límites de compartición do torrent - Use global share limit - Usar o límite de compartición global + Usar o límite de compartición global - Set no share limit - Non estabelecer límite + Non estabelecer límite - Set share limit to - Estabelecer o límite de compartición en + Estabelecer o límite de compartición en - ratio - taxa + taxa - total minutes - + minutos totais - inactive minutes - + minutos inactivos - + Disable DHT for this torrent Desactivar o DHT neste torrent - + Download in sequential order Descargar en orde secuencial - + Disable PeX for this torrent Desactivar o PeX neste torrent - + Download first and last pieces first Descargar primeiro os anacos inicial e final - + Disable LSD for this torrent Desactivar o LSD neste torrent - + Currently used categories Categorías usadas actualmente - - + + Choose save path Seleccionar a ruta onde gardar - + Not applicable to private torrents Non aplicábel a torrents privados - No share limit method selected - Non se seleccionou ningún método de límite de compartición + Non se seleccionou ningún método de límite de compartición - Please select a limit method first - Seleccione primeiro un método para os límites + Seleccione primeiro un método para os límites + + + + TorrentShareLimitsWidget + + + + + + Default + Predeterminado + + + + + + Unlimited + Ilimitado + + + + + + Set to + Establecer en + + + + Seeding time: + Tempo de sementeira: + + + + + + + + + min + minutes + min. + + + + Inactive seeding time: + Tempo de sementeira inactivo: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Retirar o torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Activar a supersementeira para o torrent + + + + Ratio: + Ratio: @@ -10581,35 +11233,39 @@ Seleccione un nome diferente e ténteo de novo. Torrent Tags - + Etiquetas de torrent - New Tag - Etiqueta nova + Etiqueta nova + Add tag + + + + Tag: Etiqueta: - + Invalid tag name O nome da etiqueta non é correcto - + Tag name '%1' is invalid. - + O nome da etiqueta '%1' non é válido. - + Tag exists A etiqueta xa existe - + Tag name already exists. O nome da etiqueta xa existe. @@ -10617,115 +11273,130 @@ Seleccione un nome diferente e ténteo de novo. TorrentsController - + Error: '%1' is not a valid torrent file. Erro: «%1» non é un ficheiro torrent correcto. - + Priority must be an integer A prioridade debe ser un enteiro - + Priority is not valid A prioridade non é correcta - + Torrent's metadata has not yet downloaded Aínda non se descargaron os metadatos do torrent - + File IDs must be integers Os identificadores de ficheiro deben ser enteiros - + File ID is not valid O identificador de ficheiro non é correcto - - - - + + + + Torrent queueing must be enabled A cola de torrents debe estar activada - - + + Save path cannot be empty A ruta de gardado non pode estar baleira - - + + Cannot create target directory Non é posíbel crear o cartafol de destino - - + + Category cannot be empty A categoría non pode estar baleira - + Unable to create category Non é posíbel crear unha categoría - + Unable to edit category Non é posíbel editar a categoría - + Unable to export torrent file. Error: %1 - + Non se puido exportar o ficheiro torrent. Erro: %1 - + Cannot make save path Non é posíbel facer unha ruta de gardado - - 'sort' parameter is invalid - O parámetro «sort» é incorrecto + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + - + + 'sort' parameter is invalid + O parámetro «sort» é incorrecto + + + + "%1" is not an existing URL + + + + "%1" is not a valid file index. «%1» non é un índice de ficheiro correcto. - + Index %1 is out of bounds. O índice %1 está fóra dos límites. - - + + Cannot write to directory Non é posíbel escribir no cartafol - + WebUI Set location: moving "%1", from "%2" to "%3" Localización da interface web: movendo «%1» de «%2» a «%3» - + Incorrect torrent name Nome incorrecto de torrent - - + + Incorrect category name Nome incorrecto de categoría @@ -10756,253 +11427,215 @@ Seleccione un nome diferente e ténteo de novo. TrackerListModel - - + Working - Funcionando + Funcionando - + Disabled - Desactivado + Desactivado - + Disabled for this torrent - Desactivar este torrent + Desactivar este torrent - + This torrent is private - Este torrent é privado + Este torrent é privado - + N/A - N/D + N/D - + Updating... - Actualizando... + Actualizando... - + Not working - Inactivo + Non está funcionando - + Tracker error - + Erro do rastreador - + Unreachable - + Inalcanzable - + Not contacted yet - Aínda sen contactar + Aínda sen contactar - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Nivel + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Estado non válido! + + + URL/Announce endpoint + URL/Anunciar punto final + Tier + Nivel + + Protocol - + Protocolo - + Status - Estado + Estado - + Peers - Pares + Pares - + Seeds - Sementes + Sementes - + Leeches - Samesugas + Samesugas - + Times Downloaded - + Veces descargado - + Message - Mensaxe + Mensaxe - Next announce - + Seguinte anuncio - Min announce - + Anuncio mínimo - v%1 - + v%1 TrackerListWidget - Working - Funcionando - - - Disabled - Desactivado - - - Disabled for this torrent - Desactivar este torrent - - - + This torrent is private Este torrent é privado - Updating... - Actualizando... - - - Not working - Inactivo - - - Not contacted yet - Aínda sen contactar - - - N/A - N/D - - - + Tracker editing Edición do localizador - + Tracker URL: URL do localizador: - - + + Tracker editing failed Fallou a edición do localizador - + The tracker URL entered is invalid. A URL introducida para o localizador non é correcta. - + The tracker URL already exists. A URL do localizador xa existe. - + Edit tracker URL... Editar URL do localizador - + Remove tracker Eliminar o localizador - + Copy tracker URL Copiar url dos localizadores - + Force reannounce to selected trackers Forzar outro anuncio nos localizadores seleccionados - + Force reannounce to all trackers Forzar outro anuncio en todos os localizadores - Tier - Nivel - - - URL - URL - - - Status - Estado - - - Seeds - Sementes - - - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as columnas visíbeis ao tamaño dos contidos - Peers - Pares - - - + Add trackers... - - - - Leeches - Samesugas - - - Message - Mensaxe + Engadir rastrexadores... - + Column visibility Visibilidade da columna @@ -11012,7 +11645,7 @@ Seleccione un nome diferente e ténteo de novo. Add trackers - + Engadir rastrexadores @@ -11020,121 +11653,108 @@ Seleccione un nome diferente e ténteo de novo. Lista de localizadores a engadir (un por liña): - + µTorrent compatible list URL: URL da lista compatíbel con µTorrent: - + Download trackers list - + Descargar lista de rastrexadores - + Add Engadir - + Trackers list URL error - + Erro de URL da lista de rastrexadores - + The trackers list URL cannot be empty - + O URL da lista de rastrexadores non pode estar baleiro - + Download trackers list error - + Erro da lista de rastrexadores de descarga - + Error occurred when downloading the trackers list. Reason: "%1" - + Produciuse un erro ao descargar a lista de rastrexadores. Motivo: "%1" TrackersFilterWidget - All (0) - this is for the tracker filter - Todos (0) - - - Trackerless (0) - Sen localizador (0) - - - Error (0) - Erros (0) - - - Warning (0) - Avisos (0) - - - Error (%1) - Erros (%1) - - - + Warning (%1) Avisos (%1) - + Trackerless (%1) Sen localizador (%1) - + Tracker error (%1) - + Erro do rastrexador (%1) - + Other error (%1) - + Outro erro (%1) - + Remove tracker - Eliminar o localizador + Eliminar o localizador + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Continuar os torrents + Continuar os torrents - Pause torrents - Deter os torrents + Deter os torrents - + Remove torrents - + Eliminar torrents - + Removal confirmation - + Confirmación de eliminación - + Are you sure you want to remove tracker "%1" from all torrents? - + Estás seguro de que queres eliminar o rastrexador "%1" de todos os torrents? - + Don't ask me again. - + Non me volvas preguntar. - + All (%1) this is for the tracker filter Todos (%1) @@ -11143,9 +11763,9 @@ Seleccione un nome diferente e ténteo de novo. TransferController - + 'mode': invalid argument - + 'mode': argumento non válido @@ -11236,9 +11856,8 @@ Seleccione un nome diferente e ténteo de novo. Comprobando os datos de continuación - Paused - Detidos + Detidos @@ -11263,220 +11882,262 @@ Seleccione un nome diferente e ténteo de novo. Con erros - + Name i.e: torrent name Nome - + Size i.e: torrent size Tamaño - + Progress % Done Progreso - Status Torrent status (e.g. downloading, seeding, paused) - Estado + Estado - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Estado + + + Seeds i.e. full sources (often untranslated) Sementes - + Peers i.e. partial sources (often untranslated) Pares - + Down Speed i.e: Download speed Vel. de descarga - + Up Speed i.e: Upload speed Vel. de envío - + Ratio Share ratio Taxa - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Tempo restante - + Category Categoría - + Tags Etiquetas - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Engadido o - + Completed On Torrent was completed on 01/01/2010 08:00 Completado o - + Tracker Localizador - + Down Limit i.e: Download limit Límite de descarga - + Up Limit i.e: Upload limit Límite de envío - + Downloaded Amount of data downloaded (e.g. in MB) Descargado - + Uploaded Amount of data uploaded (e.g. in MB) Enviado - + Session Download Amount of data downloaded since program open (e.g. in MB) Desc. na sesión - + Session Upload Amount of data uploaded since program open (e.g. in MB) Env. na sesión - + Remaining Amount of data left to download (e.g. in MB) Restante - + + Time Active + Time (duration) the torrent is active (not stopped) + Tempo en activo + + + + Yes + Si + + + + No + Non + + Time Active Time (duration) the torrent is active (not paused) - Tempo en activo + Tempo en activo - + Save Path Torrent save path - + Gardar camiño - + Incomplete Save Path Torrent incomplete save path - + Ruta de gardado incompleta - + Completed Amount of data completed (e.g. in MB) Completado - + Ratio Limit Upload share ratio limit Límite da taxa - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Visto completo por última vez - + Last Activity Time passed since a chunk was downloaded/uploaded Última actividade - + Total Size i.e. Size including unwanted data Tamaño total - + Availability The number of distributed copies of the torrent Dispoñíbilidade - + Info Hash v1 i.e: torrent info hash v1 - Info Hash v2: {1?} + Hash de información v1 - + Info Hash v2 i.e: torrent info hash v2 - Info Hash v2: {2?} + Hash de información v2 - + Reannounce In Indicates the time until next trackers reannounce + Reanunciar en + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/D - + %1 ago e.g.: 1h 20m ago Hai %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sementou durante %2) @@ -11485,334 +12146,358 @@ Seleccione un nome diferente e ténteo de novo. TransferListWidget - + Column visibility Visibilidade da columna - + Recheck confirmation Confirmación da nova comprobación - + Are you sure you want to recheck the selected torrent(s)? Desexa unha nova comprobación dos torrents seleccionados? - + Rename Cambiar o nome - + New name: Nome novo: - + Choose save path Seleccionar unha ruta onde gardar - Confirm pause - + Confirmar pausa - Would you like to pause all torrents? - + Queres poñer en pausa todos os torrents? - Confirm resume - + Confirmar reanudación - Would you like to resume all torrents? - + Queres retomar todos os torrents? - + Unable to preview Non é posíbel a previsualización - + The selected torrent "%1" does not contain previewable files O torrent «%1» seleccionado non contén ficheiros previsualizábeis - + Resize columns Redimensionar columnas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as columnas visíbeis ao tamaño dos contidos - + Enable automatic torrent management Activar a xestión automática dos torrents - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Confirma a activación do Xestor Automático de Torrents para os torrents seleccionado(s)? Poden ser resituados. - Add Tags - Engadir etiquetas + Engadir etiquetas - + Choose folder to save exported .torrent files - + Escolla o cartafol para gardar os ficheiros .torrent exportados - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + Produciuse un erro ao exportar o ficheiro .torrent. Torrente: "%1". Gardar o camiño: "%2". Motivo: "%3" - + A file with the same name already exists - + Xa existe un ficheiro co mesmo nome - + Export .torrent file error - + Erro ao exportar o ficheiro .torrent - + Remove All Tags Eliminar todas as etiquetas - + Remove all tags from selected torrents? Desexa eliminar todas as etiquetas dos torrents seleccionados? - + Comma-separated tags: Etiquetas separadas por comas: - + Invalid tag Etiqueta incorrecta - + Tag name: '%1' is invalid O nome da etiqueta: «%1» non é válido - &Resume Resume/start the torrent - Continua&r + Continua&r - &Pause Pause the torrent - &Deter + &Deter - Force Resu&me Force Resume/start the torrent - + Forzar reanudació&n - + Pre&view file... - + Pre&visualizar ficheiro... - + Torrent &options... - + &Opcións de torrent... - + Open destination &folder - + Abre o &cartafol de destino - + Move &up i.e. move up in the queue - + Mover &arriba - + Move &down i.e. Move down in the queue - + Mover a&baixo - + Move to &top i.e. Move to top of the queue - + Mover o &comezo - + Move to &bottom i.e. Move to bottom of the queue - + Mover ao &derradeiro - + Set loc&ation... - + Definir loc&alización... - + Force rec&heck - + Forzar a rec&omprobación - + Force r&eannounce - + Forzar r&eanunciar - + &Magnet link - + Enlace &Magnet - + Torrent &ID - + &ID do torrent - + + &Comment + &Comentario + + + &Name - + &Nome - + Info &hash v1 - + &Hash de información v1 - + Info h&ash v2 - + H&ash de información v2 - + Re&name... - + Re&nomear... - + Edit trac&kers... - + Editar ras&trexadores... - + E&xport .torrent... - + E&xportar .torrent... - + Categor&y - + Categor&ía - + &New... New category... - + &Novo... - + &Reset Reset category - + &Restablecer - + Ta&gs - + Eti&quetas - + &Add... Add / assign multiple tags... - + &Engadir... - + &Remove All Remove all tags + &Eliminar todo + + + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + &Queue - + C&ola - + &Copy - + &Copia - + Exported torrent is not necessarily the same as the imported - + O torrent exportado non é necesariamente o mesmo co importado - + Download in sequential order Descargar en orde secuencial - - Errors occurred when exporting .torrent files. Check execution log for details. + + Add tags + + + Errors occurred when exporting .torrent files. Check execution log for details. + Producíronse erros ao exportar ficheiros .torrent. Consulte o rexistro de execución para obter máis detalles. + + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Elimina&r - + Download first and last pieces first Descargar primeiro os anacos inicial e final - + Automatic Torrent Management Xestión automática dos torrents - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category O modo automático significa que varias propiedades dos torrents (p.e: ruta onde gardar) decidiraas a categoría asociada - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - + Non se pode forzar a reanunciar se o torrent está en pausa/en cola/erro/comprobando - + Super seeding mode Modo super-sementeira @@ -11822,71 +12507,76 @@ Seleccione un nome diferente e ténteo de novo. UI Theme Configuration - + Configuración do tema da IU Colors - + Cores Color ID - + ID da cor Light Mode - + Modo Claro Dark Mode - + Modo Escuro Icons - + Iconas Icon ID - + ID da icona - + UI Theme Configuration. - + Configuración do tema da IU. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Non se puideron aplicar completamente os cambios no tema da IU. Os detalles pódense atopar no rexistro. - + Couldn't save UI Theme configuration. Reason: %1 - + Non se puido gardar a configuración do tema da IU. Motivo: %1 - - + + Couldn't remove icon file. File: %1. - + Non se puido eliminar o ficheiro de icona. Ficheiro: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Non se puido copiar o ficheiro de icona. Fonte: %1. Destino: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Produciuse un fallo ao cargar o tema da interface de usuario: «%1» @@ -11896,12 +12586,12 @@ Seleccione un nome diferente e ténteo de novo. Couldn't parse UI Theme configuration file. Reason: %1 - + Non se puido analizar o ficheiro de configuración do tema da IU. Motivo: %1 UI Theme configuration file has invalid format. Reason: %1 - + O ficheiro de configuración do tema da IU non ten un formato válido. Motivo: %1 @@ -11917,92 +12607,85 @@ Seleccione un nome diferente e ténteo de novo. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Produciuse un fallo migrando as preferencias: WebUI htttps, ficheiro: «%1», erro: «%2» - + Migrated preferences: WebUI https, exported data to file: "%1" Preferencias migradas: WebUI https, os datos exportáronse ao ficheiro: «%1» - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Encontrouse un valor incorrecto no ficheiro de comprobación, volvendo ao predeterminado. Clave: «%1». Valor incorrecto: «%2». Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Detectouse Python, nome do executábel: «%1», versión: %2 - - - Python not detected - Non se detectou Python - Found Python executable. Name: "%1". Version: "%2" - + Atopouse o executable de Python. Nome: "%1". Versión: "%2" Failed to find Python executable. Path: "%1". - + Produciuse un erro ao atopar o executable de Python. Camiño: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Non se atendeu o executábel `python3` na variable de entorno PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Non se atendeu o executábel `python` na variable de entorno PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Produciuse un erro ao atopar o executable `python` no Rexistro de Windows. Failed to find Python executable - + Produciuse un erro ao atopar o executable de Python Utils::IO - + File open error. File: "%1". Error: "%2" - + Erro ao abrir o ficheiro. Ficheiro: "%1". Erro: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + O tamaño do ficheiro supera o límite. Ficheiro: "%1". Tamaño do ficheiro: %2. Límite de tamaño: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + O tamaño do ficheiro supera o límite de tamaño de datos. Ficheiro: "%1". Tamaño do ficheiro: %2. Límite de matriz: %3 - + File read error. File: "%1". Error: "%2" - + Erro de lectura do ficheiro. Ficheiro: "%1". Erro: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - + O tamaño de lectura non coincide. Ficheiro: "%1". Esperábase: %2. Actual: %3 @@ -12064,73 +12747,73 @@ erro: «%2» WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Especificouse un nome de cookie de sesión inaceptable: '%1'. Úsase un predeterminado. - + Unacceptable file type, only regular file is allowed. Tipo de ficheiro non permitido, só se permite o ficheiro normal. - + Symlinks inside alternative UI folder are forbidden. As ligazóns simbólicas están prohibidas dentro do cartafol da interface de usuario alternativa. - - Using built-in Web UI. - Usando a interface web integrada + + Using built-in WebUI. + Usando WebUI incorporado. - - Using custom Web UI. Location: "%1". - Usando a interface web de ususario personalizada: «%1». + + Using custom WebUI. Location: "%1". + Usando WebUI personalizado. Localización: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - A tradución da interface web de usuario para o idioma seleccionado (%1) cargouse correctamente. + + WebUI translation for selected locale (%1) has been successfully loaded. + A tradución da WebUI para a configuración rexional seleccionada (%1) foi cargada correctamente. - - Couldn't load Web UI translation for selected locale (%1). - Non foi posíbel cargar a tradución da interface web no idioma solicitado (%1). + + Couldn't load WebUI translation for selected locale (%1). + Non se puido cargar a tradución da WebUI para a configuración rexional seleccionada (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1"   Falta o separador «:» na cabeceira HTTP personalizada de WebUI: «% 1» - + Web server error. %1 - + Erro do servidor web. %1 - + Web server error. Unknown error. - + Erro do servidor web. Erro descoñecido. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Interface web: a cabeceira da orixe e do destino non coinciden. IP da orixe: «%1». Cabeceira da orixe: «%2». Orixe do destino: «%3» - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Interface web: a cabeceira do referente e a orixe do destino non coinciden. IP da orixe: «%1». Cabeceira do referente: «%2». Orixe do destino: «%3» - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Interface web: a cabeceira do servidor e o porto non coinciden. IP da orixe da petición: «%1». Porto do servidor: «%2». Cabeceira do servidor: «%3» - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Interface web: A cabeceira do servidor non é válida. IP da orixe da petición: «%1». Cabeceira recibida do servidor: «%2» @@ -12138,143 +12821,136 @@ Falta o separador «:» na cabeceira HTTP personalizada de WebUI: «% 1» WebUI - - Web UI: HTTPS setup successful - Interface web: o HTTPS configurouse correctamente + + Credentials are not set + As credenciais non están definidas - - Web UI: HTTPS setup failed, fallback to HTTP - Interface web: produciuse un fallo na configuración do HTTPS, vólvese ao HTTP + + WebUI: HTTPS setup successful + WebUI: configuración HTTPS correcta - - Web UI: Now listening on IP: %1, port: %2 - Interface web: agora está escoitando na IP: %1, porto %2 + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: fallou a configuración de HTTPS, volveuse a HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Interface web: non é posíbel ligar á IP: %1, porto: %2. Razón: %3 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: agora escoitando a IP: %1, porto: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Non foi posíbel vincular a IP: %1, porto: %2. Motivo: %3 + + + + fs + + + Unknown error + Erro descoñecido misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 m {1s?} + %1s - + %1m e.g: 10 minutes - %1 m + %1 m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Descoñecido - + qBittorrent will shutdown the computer now because all downloads are complete. O qBittorrent vai apagar o computador porque remataron todas as descargas. - + < 1m < 1 minute < 1 m - - %1m - e.g: 10minutes - %1 m - diff --git a/src/lang/qbittorrent_he.ts b/src/lang/qbittorrent_he.ts index 62b33478f1e4..1a727f3628b8 100644 --- a/src/lang/qbittorrent_he.ts +++ b/src/lang/qbittorrent_he.ts @@ -14,77 +14,77 @@ אודות - + Authors מחברים - + Current maintainer מתחזק נוכחי - + Greece יוון - - + + Nationality: לאום: - - + + E-mail: דוא״ל: - - + + Name: שם: - + Original author מחבר מקורי - + France צרפת - + Special Thanks תודות מיוחדות - + Translators מתרגמים - + License רישיון - + Software Used תוכנות בשימוש - + qBittorrent was built with the following libraries: qBittorrent נבנה עם הסיפריות הבאות: - + Copy to clipboard - + העתקה ללוח העריכה @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - זכויות יוצרים %1 2006-2023 מיזם qBittorrent + Copyright %1 2006-2024 The qBittorrent project + זכויות יוצרים %1 2006-2024 מיזם qBittorrent @@ -166,14 +166,13 @@ שמור ב - + Never show again אל תראה שוב אף פעם - Torrent settings - הגדרות טורנט + הגדרות טורנט @@ -191,12 +190,12 @@ התחל טורנט - + Torrent information מידע על טורנט - + Skip hash check דלג על בדיקת גיבוב @@ -205,6 +204,11 @@ Use another path for incomplete torrent השתמש בנתיב אחר עבור טורנט בלתי שלם + + + Torrent options + + Tags: @@ -213,7 +217,7 @@ Click [...] button to add/remove tags. - + לחץ על הכפתור […] כדי להוסיף/להסיר תגיות. @@ -228,73 +232,78 @@ Stop condition: - + תנאי עצירה : - - + + None ללא - - + + Metadata received + מטא־נתונים התקבלו + + + + Torrents that have metadata initially will be added as stopped. - - + + Files checked - + קבצים שנבדקו - + Add to top of queue - + הוספה לראש התור - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog כאשר מסומן, קובץ הטורנט לא יימחק בלי קשר אל ההגדרות בדף הורדה של הדו־שיח אפשרויות. - + Content layout: סידור תוכן: - + Original מקורי - + Create subfolder צור תת־תיקייה - + Don't create subfolder אל תיצור תת־תיקייה - + Info hash v1: גיבוב מידע גרסה 1: - + Size: גודל: - + Comment: הערה: - + Date: תאריך: @@ -324,212 +333,157 @@ זכור נתיב שמירה אחרון שהיה בשימוש - + Do not delete .torrent file אל תמחק קובץ טורנט - + Download in sequential order הורד בסדר עוקב - + Download first and last pieces first הורד חתיכה ראשונה ואחרונה תחילה - + Info hash v2: גיבוב מידע גרסה 2: - + Select All בחר הכול - + Select None בחר כלום - + Save as .torrent file... שמור כקובץ torrent… - + I/O Error שגיאת ק/פ - Invalid torrent - טורנט בלתי תקף - - - + Not Available This comment is unavailable לא זמין - + Not Available This date is unavailable לא זמין - + Not available לא זמין - Invalid magnet link - קישור מגנט בלתי תקף - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - כישלון בטעינת הטורנט: %1. -שגיאה: %2 - - - This magnet link was not recognized - קישור מגנט זה לא זוהה - - - + Magnet link קישור מגנט - + Retrieving metadata... מאחזר מטא־נתונים… - - + + Choose save path בחירת נתיב שמירה - Torrent is already present - טורנט נוכח כבר - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - הטורנט '%1' קיים כבר ברשימת ההעברות. עוקבנים לא התמזגו מפני שזה טורנט פרטי. - - - Torrent is already queued for processing. - הטורנט נמצא בתור כבר עבור עיבוד. - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A לא זמין - Magnet link is already queued for processing. - קישור המגנט נמצא בתור כבר עבור עיבוד. - - - + %1 (Free space on disk: %2) %1 (שטח פנוי בדיסק: %2) - + Not available This size is unavailable. לא זמין - + Torrent file (*%1) קובץ טורנט (*%1) - + Save as torrent file שמור כקובץ טורנט - + Couldn't export torrent metadata file '%1'. Reason: %2. לא היה ניתן לייצא קובץ מטא־נתונים של טורנט '%1'. סיבה: %2. - + Cannot create v2 torrent until its data is fully downloaded. לא ניתן ליצור טורנט גרסה 2 עד שהנתונים שלו מוקדים באופן מלא. - Cannot download '%1': %2 - לא ניתן להוריד את '%1': %2 - - - + Filter files... סנן קבצים… - + Parsing metadata... מאבחן מטא־נתונים… - + Metadata retrieval complete אחזור מטא־נתונים הושלם - - Failed to load from URL: %1. -Error: %2 - כישלון בטעינה ממען: %1. -שגיאה: %2 - - - Download Error - שגיאת הורדה - AddTorrentManager Downloading torrent... Source: "%1" - + מוריד טורנט… מקור: "%1" @@ -537,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + ניסיון להוסיף טורנט כפול התגלה. מקור: %1. טורנט קיים: %2. תוצאה: %3 - + Merging of trackers is disabled - + מיזוג עוקבנים מושבת - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -602,7 +556,7 @@ Error: %2 Click [...] button to add/remove tags. - + לחץ על הכפתור […] כדי להוסיף/להסיר תגיות. @@ -617,7 +571,7 @@ Error: %2 Start torrent: - + התחל טורנט: @@ -627,12 +581,12 @@ Error: %2 Stop condition: - + תנאי עצירה : Add to top of queue: - + הוסף לראש התור: @@ -640,807 +594,930 @@ Error: %2 דלג על בדיקת גיבוב - - - Choose save path - בחר נתיב שמירה + + Torrent share limits + מגבלות שיתוף של טורנט - - - - - - - Default - ברירת מחדל + + + Choose save path + בחר נתיב שמירה + + + - Yes - כן + Default + ברירת מחדל + Yes + כן + + + + + No לא - + Manual ידני - + Automatic אוטומטי - + Original מקורי - + Create subfolder צור תת־תיקייה - + Don't create subfolder אל תיצור תת־תיקייה - + None ללא - + Metadata received - + מטא־נתונים התקבלו - + Files checked - + קבצים שנבדקו AdvancedSettings - - - - + + + + MiB מ״ב - + Recheck torrents on completion בדוק מחדש טורנטים בעת השלמה - - + + ms milliseconds מילי שנייה - + Setting הגדרה - + Value Value set for this setting ערך - + (disabled) (מושבת) - + (auto) (אוטומטי) - + + min minutes דק' - + All addresses כל הכתובות - + qBittorrent Section קטע qBittorrent - - + + Open documentation פתח תיעוד - + All IPv4 addresses כל כתובות IPv4 - + All IPv6 addresses כל כתובות IPv6 - + libtorrent Section קטע libtorrent - + Fastresume files קבצי המשכה מהירה - + SQLite database (experimental) מסד נתונים SQLite (ניסיוני) - + Resume data storage type (requires restart) סוג אחסון של נתוני המשכה (דורש הפעלה מחדש) - + Normal רגילה - + Below normal מתחת לרגילה - + Medium בינונית - + Low נמוכה - + Very low נמוכה מאוד - - Process memory priority (Windows >= 8 only) - עדיפות זיכרון תהליך (Windows >= 8 בלבד) - - - + Physical memory (RAM) usage limit מגבלת שימוש בזיכרון פיזי (RAM) - + Asynchronous I/O threads תהליכוני ק/פ אי־סינכרוניים - + Hashing threads תהליכוני גיבוב - + File pool size גודל בריכת קבצים - + Outstanding memory when checking torrents זיכרון חריג בעת בדיקת טורנטים - + Disk cache מטמון דיסק - - - - + + + + s seconds ש' - + Disk cache expiry interval מרווח תפוגת מטמון דיסק - + Disk queue size גודל תור בדיסק - - + + Enable OS cache אפשר מטמון מערכת הפעלה - + Coalesce reads & writes לכד קריאות וכתיבות - + Use piece extent affinity השתמש במידת קירבה של חתיכות - + Send upload piece suggestions שלח הצעות של חתיכות העלאה - - - - + + + + + 0 (disabled) - + 0 (מושבת) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer בקשות חריגות מרביות אל עמית יחיד - - - - - + + + + + KiB ק״ב - + (infinite) - + (אין־סופי) - + (system default) + (ברירת מחדל) + + + + Delete files permanently + + + + + Move files to trash (if possible) - + + Torrent content removing mode + + + + This option is less effective on Linux אפשרות זו פחות יעילה על Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default ברירת מחדל - + Memory mapped files קבצים ממופי זיכרון - + POSIX-compliant תואם POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) סוג ק/פ של דיסק (דורש הפעלה מחדש) - - + + Disable OS cache השבת מטמון OS - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark שלח סימן מים של חוצץ - + Send buffer low watermark שלח סימן מים נמוך של חוצץ - + Send buffer watermark factor שלח גורם סימן מים של חוצץ - + Outgoing connections per second חיבורים יוצאים לשנייה - - + + 0 (system default) - + 0 (ברירת מחדל) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size גודל מצבור תושבת - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + מגבלת גודל של קובץ טורנט + + + Type of service (ToS) for connections to peers סוג של שירות (ToS) עבור חיבורים אל עמיתים - + Prefer TCP העדף TCP - + Peer proportional (throttles TCP) יַחֲסִי עמית (משנקי TCP) - + Support internationalized domain name (IDN) תמוך בשם בינלאומי של תחום (IDN) - + Allow multiple connections from the same IP address התר חיבורים רבים מאותה כתובת IP - + Validate HTTPS tracker certificates וודא תעודות עוקבן מסוג HTTPS - + Server-side request forgery (SSRF) mitigation שיכוך של זיוף בקשות צד־שרת (SSRF) - + Disallow connection to peers on privileged ports אל תתיר חיבור אל עמיתים על פתחות בעלות זכויות - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval מרווח ריענון - + Resolve peer host names פתור שמות מארחי עמיתים - + IP address reported to trackers (requires restart) כתובת IP דווחה אל עוקבנים (דורש הפעלה מחדש) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed הכרז מחדש אל כל העוקבנים כאשר IP או פתחה השתנו - + Enable icons in menus אפשר איקונים בתפריטים - + Enable port forwarding for embedded tracker - - (Auto detect if empty) + + Enable quarantine for downloaded files + אפשר הסגר עבור קבצים מורדים + + + + Enable Mark-of-the-Web (MOTW) for downloaded files - + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + + (Auto detect if empty) + (גילוי אוטומטי אם ריק) + + + Python executable path (may require restart) - - Confirm removal of tracker from all torrents + + Start BitTorrent session in paused state + + + + + sec + seconds + שניות + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + אפשר הסרה של עוקבן מכל הטורנטים + + + Peer turnover disconnect percentage אחוז של ניתוק תחלופת עמיתים - + Peer turnover threshold percentage אחוז של סף תחלופת עמיתים - + Peer turnover disconnect interval מרווח ניתוק תחלופת עמיתים - + Resets to default if empty - + מתאפס אל ברירת מחדל אם זה ריק - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications הצג התראות - + Display notifications for added torrents הצג התראות עבור טורנטים שהתווספו - + Download tracker's favicon הורד איקון של עוקבן - + Save path history length אורך היסטורית שמירת נתיבים - + Enable speed graphs אפשר גרפי מהירות - + Fixed slots חריצים מקובעים - + Upload rate based מבוסס קצב העלאה - + Upload slots behavior העלה התנהגות חריצים - + Round-robin סבב־רובין - + Fastest upload ההעלאה הכי מהירה - + Anti-leech נגד־עלוקה - + Upload choking algorithm אלגוריתם מחנק העלאה - + Confirm torrent recheck אשר בדיקה מחדש של טורנט - + Confirm removal of all tags אשר הסרת כל התגיות - + Always announce to all trackers in a tier הכרז תמיד לכל העוקבנים בנדבך - + Always announce to all tiers הכרז תמיד לכל הנדבכים - + Any interface i.e. Any network interface כל ממשק שהוא - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm אלגוריתם של מצב מעורבב %1-TCP - + Resolve peer countries פתור מדינות עמיתים - + Network interface ממשק רשת - + Optional IP address to bind to כתובת IP רשותית לחבור אליה - + Max concurrent HTTP announces הכרזות HTTP מרביות במקביל - + Enable embedded tracker אפשר עוקבן משובץ - + Embedded tracker port פתחת עוקבן משובץ - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 הותחל + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 מריץ במצב נייד. תיקיית פרופילים מזוהה־אוטומטית ב: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. דגל עודף של שורת הפקודה התגלה: "%1". מצב נייד מרמז על המשכה מהירה קשורה. - + Using config directory: %1 משתמש בתיקיית תיצור: %1 - + Torrent name: %1 שם טורנט: %1 - + Torrent size: %1 גודל טורנט: %1 - + Save path: %1 נתיב שמירה: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds הטורנט ירד תוך %1 - + + Thank you for using qBittorrent. תודה על השימוש ב־qBittorrent. - + Torrent: %1, sending mail notification טורנט: %1, שולח התראת דוא״ל - + Add torrent failed - + הוספת טורנט נכשלה - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... טוען טורנטים… - + E&xit &צא - + I/O Error i.e: Input/Output Error שגיאת ק/פ - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1449,139 +1526,110 @@ Error: %2 סיבה: %2 - Error - שגיאה - - - Failed to add torrent: %1 - כישלון בהוספת טורנט: %1 - - - + Torrent added טורנט התווסף - + '%1' was added. e.g: xxx.avi was added. '%1' התווסף. - + Download completed הורדה הושלמה - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - ההורדה של %1 הסתיימה. - - - URL download error - שגיאה בכתובת ההורדה + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - לא היה ניתן להוריד את הקובץ בכתובת '%1', סיבה: %2. + + This is a test email. + - Torrent file association - שיוך קבצי טורנט + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent אינו יישום ברירת המחדל עבור פתיחה של קבצי טורנט או קישורי מגנט. -האם אתה רוצה לעשות את qBittorrent יישום ברירת המחדל עבורם? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + ההורדה של %1 הסתיימה. - + Information מידע - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 כדי לשלוט ב־qBittorrent, השג גישה אל WebUI ב: %1 - - The Web UI administrator username is: %1 - שם המשתמש של מינהלן ממשק־משתמש הרשת הוא: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - סיסמת מנהלן של ממשק משתמש הרשת לא השתנתה מברירת המחדל: %1 - - - - This is a security risk, please change your password in program preferences. - זהו סיכון אבטחה, אנא שנה את הסיסמה שלך בהעדפות התוכנית. - - - Application failed to start. - התחלת היישום נכשלה. - - - + Exit צא - + Recursive download confirmation - אישור הורדה נסיגתית + אישור הורדה נסיגתית - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - הטורנט '%1' מכיל קבצי טורנט, האם אתה רוצה להמשיך עם הורדותיהם? + הטורנט '%1' מכיל קבצי טורנט, האם אתה רוצה להמשיך עם הורדותיהם? - + Never - אף פעם + אף פעם - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - הורדה נסיגתית של קובץ .torrent בתוך טורנט. טורנט מקור: "%1". קובץ: "%2" + הורדה נסיגתית של קובץ .torrent בתוך טורנט. טורנט מקור: "%1". קובץ: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" הגדרת מגבלת שימוש בזיכרון פיזי (RAM) נכשלה. קוד שגיאה: %1. הודעת שגיאה: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... qBittorrent מתכבה… - + Saving torrent progress... שומר התקדמות טורנט… - + qBittorrent is now ready to exit @@ -1589,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. לא היה ניתן ליצור את התיקייה '%1'. @@ -1597,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 כישלון התחברות WebAPI. סיבה: IP הוחרם, IP: %1, שם משתמש: %2 - + Your IP address has been banned after too many failed authentication attempts. כתובת ה־IP שלך הוחרמה לאחר יותר מדי ניסיונות אימות כושלים. - + WebAPI login success. IP: %1 הצלחת התחברות WebAPI. כתובת IP היא: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 כישלון התחברות WebAPI. סיבה: אישורים בלתי תקפים, ספירת ניסיונות: %1, IP: %2, שם משתמש: %3 @@ -1657,15 +1705,15 @@ Do you want to make qBittorrent the default application for these? Priority: - + עדיפות: - + Must Not Contain: חייב לא להכיל: - + Episode Filter: מסנן פרקים: @@ -1718,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &ייצא… - + Matches articles based on episode filter. מתאים מאמרים על סמך מסנן פרקים. - + Example: דוגמה: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match יתאים את פרקים 2, 5, 8 עד 15, 30 והלאה של עונה ראשונה - + Episode filter rules: כללי מסנן פרקים: - + Season number is a mandatory non-zero value מספר עונה הוא ערך בלתי אפסי הכרחי - + Filter must end with semicolon מסנן חייב להסתיים בנקודה ופסיק - + Three range types for episodes are supported: שלושה סוגי טווח נתמכים עבור פרקים: - + Single number: <b>1x25;</b> matches episode 25 of season one מספר יחיד: <b>1x25;</b> מתאים פרק 25 של עונה ראשונה - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one טווח רגיל: <b>1x25-40;</b> מתאים פרקים 25 עד 40 של עונה ראשונה - + Episode number is a mandatory positive value מספר פרק הוא ערך חיובי הכרחי - + Rules כללים - + Rules (legacy) כללים (מורשת) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons טווח אינסופי: <b>1x25-;</b> מתאים פרקים 25 ומעלה של עונה ראשונה, וכל הפרקים של העונות הבאות - + Last Match: %1 days ago התאמה אחרונה: לפני %1 ימים - + Last Match: Unknown התאמה אחרונה: בלתי ידוע - + New rule name שם של כלל חדש - + Please type the name of the new download rule. אנא הקלד את השם של כלל ההורדה החדש. - - + + Rule name conflict סתירת שם כלל - - + + A rule with this name already exists, please choose another name. כלל עם שם זה כבר קיים, אנא בחר שם אחר. - + Are you sure you want to remove the download rule named '%1'? האם אתה בטוח שאתה רוצה למחוק את כלל ההורדה בשם '%1'? - + Are you sure you want to remove the selected download rules? האם אתה בטוח שאתה רוצה להסיר את כללי ההורדה הנבחרים? - + Rule deletion confirmation אישור מחיקת כלל - + Invalid action פעולה בלתי תקפה - + The list is empty, there is nothing to export. הרשימה ריקה, אין מה לייצא. - + Export RSS rules ייצא כללי RSS - + I/O Error שגיאת ק/פ - + Failed to create the destination file. Reason: %1 יצירת קובץ היעד נכשלה. סיבה: %1 - + Import RSS rules ייבא כללי RSS - + Failed to import the selected rules file. Reason: %1 יבוא קובץ הכללים הנבחר נכשל. סיבה: %1 - + Add new rule... הוסף כלל חדש… - + Delete rule מחק כלל - + Rename rule... שנה שם כלל… - + Delete selected rules מחק כללים נבחרים - + Clear downloaded episodes... נקה פרקים שירדו… - + Rule renaming שינוי שם כלל - + Please type the new rule name אנא הקלד את השם של הכלל החדש - + Clear downloaded episodes נקה פרקים שירדו - + Are you sure you want to clear the list of downloaded episodes for the selected rule? האם אתה בטוח שאתה רוצה לנקות את רשימת הפרקים שירדו עבור הכלל הנבחר? - + Regex mode: use Perl-compatible regular expressions מצב Regex: השתמש בביטויים רגולריים תואמי Perl - - + + Position %1: %2 מיקום %1: %2 - + Wildcard mode: you can use מצב תו כללי: אתה יכול להשתמש ב - - + + Import error - + שגיאת יבוא - + Failed to read the file. %1 - + כישלון בקריאת הקובץ. %1 - + ? to match any single character ? כדי להתאים תו יחיד כלשהו - + * to match zero or more of any characters * כדי להתאים אפס או יותר מתווים כלשהם - + Whitespaces count as AND operators (all words, any order) רווחים לבנים נחשבים כאופרטורי AND (כל המילים, כל סדר שהוא) - + | is used as OR operator | משמש כאופרטור OR - + If word order is important use * instead of whitespace. אם סדר מילים חשוב, השתמש ב־* במקום רווח לבן. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) ביטוי עם סעיף %1 ריק (לדוגמה %2) - + will match all articles. יתאים את כל המאמרים. - + will exclude all articles. יחריג את כל המאמרים. @@ -2016,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" לא ניתן ליצור תיקיית המשכת טורנטים: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. לא היה ניתן לשמור מטא־נתונים של טורנט אל '%1'. שגיאה: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. לא היה ניתן לשמור נתוני המשכה של טורנט אל '%1'. שגיאה: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 לא היה ניתן לשמור נתונים אל '%1'. שגיאה: %2 @@ -2070,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. לא נמצא. - + Couldn't load resume data of torrent '%1'. Error: %2 לא היה ניתן לטעון נתוני המשכה של הטורנט '%1'. שגיאה: %2 - - + + Database is corrupted. בסיס הנתונים פגום. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2109,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. לא היה ניתן לשמור מטא־נתונים של טורנט. שגיאה: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 לא היה ניתן לאחסן נתוני המשכה עבור הטורנט '%1'. שגיאה: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 לא היה ניתן למחוק נתוני המשכה של הטורנט '%1'. שגיאה: %2 - + Couldn't store torrents queue positions. Error: %1 לא היה ניתן לאחסן מיקומי תור של טורנטים. שגיאה: %1 @@ -2132,574 +2185,616 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 תמיכה בטבלת גיבוב מבוזרת (DHT): %1 - - - - - - - - - + + + + + + + + + ON מופעל - - - - - - - - - + + + + + + + + + OFF כבוי - - + + Local Peer Discovery support: %1 תמיכה בגילוי עמיתים מקומיים: %1 - + Restart is required to toggle Peer Exchange (PeX) support הפעלה מחדש נדרשת כדי לעורר תמיכה בחילוף עמיתים (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" המשכת טורנט נכשלה: זהות טורנט אי־עקבית התגלתה. טורנט: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" נתונים בלתי עקביים התגלו: קטגוריה חסרה בקובץ התצורה. הקטגוריה תושב אבל ההגדרות שלה יאופסו אל ברירת מחדל. טורנט: "%1". קטגוריה: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" נתונים בלתי עקביים התגלו: קטגוריה בלתי תקפה. טורנט: "%1". קטגוריה: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" אי־התאמה התגלתה בין נתיבי השמירה של הקטגוריה המושבת ונתיב השמירה הנוכחי של הטורנט. הטורנט מוחלף כעת אל מצב ידני. טורנט: "%1". קטגוריה: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" זהות עמית: "%1" - + HTTP User-Agent: "%1" סוכן־משתמש HTTP: "%1" - + Peer Exchange (PeX) support: %1 תמיכה בחילוף עמיתים (PeX): %1 - - + + Anonymous mode: %1 מצב אלמוני: %1 - - + + Encryption support: %1 תמיכה בהצפנה: %1 - - + + FORCED מאולץ - + Could not find GUID of network interface. Interface: "%1" לא היה ניתן למצוא GUID של ממשק רשת. ממשק: "%1" - + Trying to listen on the following list of IP addresses: "%1" מנסה להאזין על הרשימה הבאה של כתובת IP: "%1" - + Torrent reached the share ratio limit. טורנט הגיע אל מגבלת יחס השיתוף. - - - + Torrent: "%1". טורנט: "%1". - - - Removed torrent. - טורנט הוסר. + טורנט הוסר. - - - Removed torrent and deleted its content. - טורנט הוסר ותוכנו נמחק. + טורנט הוסר ותוכנו נמחק. - - - Torrent paused. - טורנט הושהה. + טורנט הושהה. - - - + Super seeding enabled. זריעת־על אופשרה. - + Torrent reached the seeding time limit. טורנט הגיע אל מגבלת יחס הזריעה. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" טעינת טורנט נכשלה. סיבה: "%1" - + I2P error. Message: "%1". - Downloading torrent, please wait... Source: "%1" - מוריד טורנט, אנא המתן… מקור: "%1" + + UPnP/NAT-PMP support: ON + תמיכה ב־UPnP/NAT-PMP: מופעלת - Failed to load torrent. Source: "%1". Reason: "%2" - טעינת טורנט נכשלה. מקור: "%1". סיבה: "%2" + + Saving resume data completed. + - - UPnP/NAT-PMP support: ON - תמיכה ב־UPnP/NAT-PMP: מופעלת + + BitTorrent session successfully finished. + - - UPnP/NAT-PMP support: OFF - תמיכה ב־UPnP/NAT-PMP: כבויה + + Session shutdown timed out. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - יצוא טורנט נכשל. טורנט: "%1". יעד: "%2". סיבה: "%3" + + Removing torrent. + - - Aborted saving resume data. Number of outstanding torrents: %1 - שמירת נתוני המשכה בוטלה. מספר של טורנטים חריגים: %1 + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + מיזוג עוקבנים מושבת + + + + Trackers cannot be merged because it is a private torrent + - System network status changed to %1 - e.g: System network status changed to ONLINE - מעמד הרשת של המערכת שונה אל %1 + + Trackers are merged from new source + - ONLINE - מקוון + + UPnP/NAT-PMP support: OFF + תמיכה ב־UPnP/NAT-PMP: כבויה - OFFLINE - לא מקוון + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + יצוא טורנט נכשל. טורנט: "%1". יעד: "%2". סיבה: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - תצורת רשת של %1 השתנתה, מרענן קשירת שיחים + + Aborted saving resume data. Number of outstanding torrents: %1 + שמירת נתוני המשכה בוטלה. מספר של טורנטים חריגים: %1 - + The configured network address is invalid. Address: "%1" הכתובת המתוצרת של הרשת בלתי תקפה. כתובת: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" כישלון במציאה של כתובת מתוצרת של רשת להאזין עליה. כתובת: "%1" - + The configured network interface is invalid. Interface: "%1" ממשק הרשת המתוצר בלתי תקף. ממשק: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" כתובת IP בלתי תקפה סורבה בזמן החלת הרשימה של כתובות IP מוחרמות. IP הוא: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" עוקבן התווסף אל טורנט. טורנט: "%1". עוקבן: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" עוקבן הוסר מטורנט. טורנט: "%1". עוקבן: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" מען זריעה התווסף אל טורנט. טורנט: "%1". מען: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" מען זריעה הוסר מטורנט. טורנט: "%1". מען: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - טורנט הושהה. טורנט: "%1" + טורנט הושהה. טורנט: "%1" - + Torrent resumed. Torrent: "%1" טורנט הומשך. טורנט: "%1" - + Torrent download finished. Torrent: "%1" הורדת טורנט הסתיימה. טורנט: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" העברת טורנט בוטלה. טורנט: "%1". מקור: "%2". יעד: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination הוספה אל תור של העברת טורנט נכשלה. טורנט: "%1". מקור: "%2". יעד: "%3". סיבה: הטורנט מועבר כרגע אל היעד - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location הוספה אל תור של העברת טורנט נכשלה. טורנט: "%1". מקור: "%2". יעד: "%3". סיבה: שני הנתיבים מצביעים על אותו מיקום - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" העברת טורנט התווספה אל תור. טורנט: "%1". מקור: "%2". יעד: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" העברת טורנט התחילה. טורנט: "%1". יעד: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" שמירת תצורת קטגוריות נכשלה. קובץ: "%1". שגיאה: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" ניתוח תצורת קטגוריות נכשל. קובץ: "%1". שגיאה: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - הורדה נסיגתית של קובץ .torrent בתוך טורנט. טורנט מקור: "%1". קובץ: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - כישלון בטעינת קובץ טורנט בתוך טורנט. טורנט מקור: "%1". קובץ: "%2". שגיאה: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 ניתוח של קובץ מסנני IP הצליח. מספר של כללים מוחלים: %1 - + Failed to parse the IP filter file ניתוח של קובץ מסנני IP נכשל - + Restored torrent. Torrent: "%1" טורנט שוחזר. טורנט: "%1" - + Added new torrent. Torrent: "%1" טורנט חדש התווסף. טורנט: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" טורנט נתקל בשגיאה: "%1". שגיאה: "%2" - - Removed torrent. Torrent: "%1" - טורנט הוסר. טורנט: "%1" + טורנט הוסר. טורנט: "%1" - Removed torrent and deleted its content. Torrent: "%1" - טורנט הוסר ותוכנו נמחק. טורנט: "%1" + טורנט הוסר ותוכנו נמחק. טורנט: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" התרעת שגיאת קובץ. טורנט: "%1". קובץ: "%2". סיבה: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" מיפוי פתחת UPnP/NAT-PMP נכשל. הודעה: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" מיפוי פתחת UPnP/NAT-PMP הצליח. הודעה: "%1" - + IP filter this peer was blocked. Reason: IP filter. מסנן IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 מגבלות מצב מעורבב - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 מושבת - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 מושבת - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - חיפוש מען DNS של זריעה נכשל. טורנט: "%1". מען: "%2". שגיאה: "%3" + חיפוש מען DNS של זריעה נכשל. טורנט: "%1". מען: "%2". שגיאה: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" הודעת שגיאה התקבלה ממען זריעה. טורנט: "%1". מען: "%2". הודעה: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" מאזין בהצלחה על כתובת IP. כתובת IP: "%1". פתחה: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" האזנה על IP נכשלה. IP הוא: "%1". פתחה: "%2/%3". סיבה: "%4" - + Detected external IP. IP: "%1" IP חיצוני זוהה. IP הוא: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" שגיאה: התרעה פנימית של תור מלא והתרעות מושמטות, ייתכן שתחווה ביצוע ירוד. סוג התרעה מושמטת: "%1". הודעה: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" טורנט הועבר בהצלחה. טורנט: "%1". יעד: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" העברת טורנט נכשלה. טורנט: "%1". מקור: "%2". יעד: "%3". סיבה: "%4" - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - הפעולה בוטלה - - - - - Create new torrent file failed. Reason: %1. - יצירת קובץ חדש של טורנט נכשלה. סיבה: %1. + + Failed to start seeding. + כישלון בהתחלת זריעה. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - הפעולה בוטלה + הפעולה בוטלה + + Create new torrent file failed. Reason: %1. - יצירת קובץ חדש של טורנט נכשלה. סיבה: %1. + יצירת קובץ חדש של טורנט נכשלה. סיבה: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 כישלון בהוספת העמית "%1" אל הטורנט "%2". סיבה: %3 - + Peer "%1" is added to torrent "%2" העמית "%1" מתווסף אל הטורנט "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. לא היה ניתן לכתוב אל קובץ. סיבה: "%1". הטורנט נמצא עכשיו במצב "העלאה בלבד". - + Download first and last piece first: %1, torrent: '%2' הורד חתיכה ראשונה ואחרונה תחילה: %1, טורנט: '%2' - + On מופעל - + Off כבוי - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" כישלון בשחזור טורנט. הקבצים כנראה הועברו או האחסון בלתי נגיש. טורנט: "%1". סיבה: "%2" - + Missing metadata מטא־נתונים חסרים - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" שינוי שם קובץ נכשל. טורנט: "%1", קובץ: "%2", סיבה: "%3" - + Performance alert: %1. More info: %2 התרעת ביצוע: %1. עוד מידע: %2 @@ -2720,184 +2815,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' הפרמטר '%1' חייב לעקוב אחר התחביר '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' הפרמטר '%1' חייב לעקוב אחר התחביר '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' מספר שלם צפוי במשתנה סביבה '%1', אך התקבל '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - הפרמטר '%1' חייב לעקוב אחר התחביר '%1=%2' + הפרמטר '%1' חייב לעקוב אחר התחביר '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' צפוי %1 במשתנה סביבה '%2', אך התקבל '%3' - - + + %1 must specify a valid port (1 to 65535). %1 חייב לציין פתחה תקפה (1 עד 65535). - + Usage: שימוש: - + [options] [(<filename> | <url>)...] [options] [(<filename> | <url>)...] - + Options: אפשרויות: - + Display program version and exit מציג גרסת תוכנית ויוצא - + Display this help message and exit מציג הודעה זו של עזרה ויוצא - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + הפרמטר '%1' חייב לעקוב אחר התחביר '%1=%2' + + + + Confirm the legal notice + אשר את ההודעה המשפטית + + + + port פתחה - - Change the Web UI port - שנה את פתחת ממשק הרשת + + Change the WebUI port + - + Change the torrenting port - + Disable splash screen השבת מסך מתז - + Run in daemon-mode (background) הרץ במצב דימון (רקע) - + dir Use appropriate short form or abbreviation of "directory" סיפרייה - + Store configuration files in <dir> אחסן קבצי תצורה ב<dir> - - + + name שם - + Store configuration files in directories qBittorrent_<name> אחסן קבצי תצורה בתיקיות qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory פרוץ לתוך קבצי המשכה מהירה של libtorrent ועשה נתיבי קבצים קשורי משפחה אל תיקיית הפרופיל - + files or URLs קבצים או כתובות - + Download the torrents passed by the user מוריד את הטורנטים שדולגו ע״י המשתמש - + Options when adding new torrents: אפשרויות בעת הוספת טורנטים חדשים: - + path נתיב - + Torrent save path נתיב שמירת טורנט - + + Add torrents as running or stopped + + + Add torrents as started or paused - הוסף טורנטים כמותחלים או מושהים + הוסף טורנטים כמותחלים או מושהים - + Skip hash check דלג על בדיקת גיבוב - + Assign torrents to category. If the category doesn't exist, it will be created. הקצה טורנטים אל קטגוריה. אם הקטגוריה אינה קיימת, היא תיווצר. - + Download files in sequential order הורד קבצים בסדר עוקב - + Download first and last pieces first הורד חתיכה ראשונה ואחרונה תחילה - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. מציין האם הדו־שיח "הוספת טורנט חדש" נפתח בעת הוספת טורנט. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: ערכי אפשרות יכולים להיות מסופקים באמצעות משתני סביבה. לאפשרות בשם 'parameter-name', שם משתנה סביבה הוא 'QBT_PARAMETER_NAME' (ברישיות גדולה, '-' מוחלף עם '_'). כדי לחלוף על ערכי דגל, הגדר את המשתנה אל '1' או 'TRUE'. לדוגמה, כדי להשבית את מסך המתז: - + Command line parameters take precedence over environment variables פרמטרי שורת פקודה לוקחים קדימות על משתני סביבה - + Help עזרה @@ -2905,17 +3014,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories קטגוריות - + All הכול - + Uncategorized בלתי מקוטגר @@ -2949,13 +3058,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - המשך טורנטים + Start torrents + + Stop torrents + + + + Resume torrents + המשך טורנטים + + Pause torrents - השהה טורנטים + השהה טורנטים @@ -2966,15 +3083,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + ערוך… - + Reset אפס + + + System + + CookiesDialog @@ -3015,12 +3137,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3028,7 +3150,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3047,23 +3169,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - בנוסף מחק את הקבצים לצמיתות + בנוסף מחק את הקבצים לצמיתות - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? האם אתה בטוח שאתה רוצה להסיר את '%1' מרשימת ההעברות? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? האם אתה בטוח שאתה רוצה להסיר %1 טורנטים אלו מרשימת ההעברות? - + Remove הסר @@ -3076,12 +3202,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also הורד מכתובות - + Add torrent links הוסף קישורי טורנט - + One link per line (HTTP links, Magnet links and info-hashes are supported) קישור אחד לשורה (קישורי HTTP, קישורי מגנט ומידע־גיבובים נתמכים). @@ -3091,12 +3217,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also הורד - + No URL entered לא הוכנסה כתובת - + Please type at least one URL. אנא הקלד לפחת כתובת אחת. @@ -3134,7 +3260,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Copy - העתק + העתקה @@ -3256,24 +3382,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text - + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + מוריד טורנט… מקור: "%1" + + + Torrent is already present - טורנט נוכח כבר + טורנט נוכח כבר - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3281,38 +3430,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. גודל בלתי נתמך של קובץ מסד־נתונים. - + Metadata error: '%1' entry not found. שגיאת מטא־נתונים: הכניסה '%1' לא נמצאה. - + Metadata error: '%1' entry has invalid type. שגיאת מטא־נתונים: לכניסה '%1' יש סוג בלתי תקף. - + Unsupported database version: %1.%2 גרסת מסד־נתונים בלתי נתמכת: %1.%2 - + Unsupported IP version: %1 גרסת IP בלתי נתמכת: %1 - + Unsupported record size: %1 גודל רשומה בלתי נתמך: %1 - + Database corrupted: no data section found. מסד־נתונים פגום: לא נמצא קטע נתונים. @@ -3320,17 +3469,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 גודל בקשת HTTP חורג מגבלה, סוגר תושבת. מגבלה: %1, IP שכתובותו: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 בקשת HTTP רעה, סוגר תושבת. IP שכתובתו: %1 @@ -3371,36 +3520,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... עיין… - + Reset אפס - + Select icon - + בחר איקון - + Supported image files + קבצי תמונה נתמכים + + + + LegalNotice + + + Legal Notice + הודעת חוקיות + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent הוא תוכנית שיתוף קבצים. כאשר אתה מריץ טורנט, נתוניו יהפכו לזמינים לאחרים באמצעות העלאה. כל תוכן שהוא שאתה משתף הוא באחריותך הבלעדית. + + + + No further notices will be issued. + התראות נוספות לא יונפקו. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 נחסם. סיבה: %2. - + %1 was banned 0.0.0.0 was banned %1 הוחרם @@ -3409,716 +3586,772 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 הוא פרמטר בלתי ידוע של שורת הפקודה. - - + + %1 must be the single command line parameter. %1 חייב להיות הפרמטר היחיד של שורת הפקודה. - - You cannot use %1: qBittorrent is already running for this user. - אינך יכול להשתמש ב־%1: התוכנית qBittorrent רצה כבר עבור משתמש זה. - - - + Run application with -h option to read about command line parameters. הרץ יישום עם אפשרות -h כדי לקרוא על פרמטרי שורת הפקודה. - + Bad command line שורת פקודה גרועה - + Bad command line: שורת פקודה גרועה: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - התראה משפטית + + You cannot use %1: qBittorrent is already running. + - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent הוא תוכנית שיתוף קבצים. כאשר אתה מריץ טורנט, נתוניו יהפכו לזמינים לאחרים באמצעות העלאה. כל תוכן שהוא שאתה משתף הוא באחריותך הבלעדית. + + Another qBittorrent instance is already running. + - - No further notices will be issued. - התראות נוספות לא יונפקו. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - Press %1 key to accept and continue... - לחץ על מקש %1 כדי להסכים ולהמשיך… + + Error when daemonizing. Reason: "%1". Error code: %2. + + + + MainWindow - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent הוא תוכנית שיתוף קבצים. כאשר אתה מריץ טורנט, נתוניו יהפכו לזמינים לאחרים על ידי העלאה. כל תוכן שאתה משתף הוא באחריותך הבלעדית. - -לא יונפקו התראות נוספות. + + &Edit + ע&ריכה - - Legal notice - התראה משפטית - - - - Cancel - בטל - - - - I Agree - אני מסכים - - - - MainWindow - - - &Edit - ע&ריכה - - - + &Tools &כלים - + &File &קובץ - + &Help &עזרה - + On Downloads &Done ב&סיום הורדות - + &View &תצוגה - + &Options... &אפשרויות… - &Resume - &המשך + &המשך - + &Remove &הסר - + Torrent &Creator יו&צר הטורנטים - - + + Alternative Speed Limits מגבלות מהירות חלופיות - + &Top Toolbar &סרגל כלים עליון - + Display Top Toolbar הצג סרגל כלים עליון - + Status &Bar שורת מעמד - + Filters Sidebar סרגל צד של מסננים - + S&peed in Title Bar מ&הירות בשורת הכותרת - + Show Transfer Speed in Title Bar הראה מהירות העברה בשורת הכותרת - + &RSS Reader קורא &RSS - + Search &Engine &מנוע חיפוש - + L&ock qBittorrent &נעל את qBittorrent - + Do&nate! ת&רום! - + + Sh&utdown System + + + + &Do nothing &אל תעשה דבר - + Close Window סגור חלון - R&esume All - ה&משך הכול + ה&משך הכול - + Manage Cookies... נהל עוגיות… - + Manage stored network cookies נהל עוגיות רשת מאוחסנות - + Normal Messages הודעות רגילות - + Information Messages הודעות מידע - + Warning Messages הודעות אזהרה - + Critical Messages הודעות חשובות - + &Log &יומן - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... קבע מגבלות מהירות כלליות… - + Bottom of Queue תחתית התור - + Move to the bottom of the queue הזז אל תחתית התור - + Top of Queue ראש התור - + Move to the top of the queue הזז אל ראש התור - + Move Down Queue הזז למטה בתור - + Move down in the queue הזז למטה בתור - + Move Up Queue הזז למעלה בתור - + Move up in the queue הזז למעלה בתור - + &Exit qBittorrent &צא מ־qBittorrent - + &Suspend System &השעה מערכת - + &Hibernate System &חרוף מערכת - S&hutdown System - &כבה מערכת + &כבה מערכת - + &Statistics &סטטיסטיקה - + Check for Updates בדוק אחר עדכונים - + Check for Program Updates בדוק אחר עדכוני תוכנה - + &About &אודות - &Pause - ה&שהה + ה&שהה - P&ause All - השהה ה&כל + השהה ה&כל - + &Add Torrent File... הוסף קובץ &טורנט… - + Open פתח - + E&xit &צא - + Open URL פתח כתובת - + &Documentation &תיעוד - + Lock נעל - - - + + + Show הראה - + Check for program updates בדוק אחר עדכוני תוכנה - + Add Torrent &Link... הוסף &קישור טורנט… - + If you like qBittorrent, please donate! אם אתה אוהב את qBittorrent, אנא תרום! - - + + Execution Log דוח ביצוע - + Clear the password נקה את הסיסמה - + &Set Password &הגדר סיסמה - + Preferences העדפות - + &Clear Password &נקה סיסמה - + Transfers העברות - - + + qBittorrent is minimized to tray qBittorrent ממוזער למגש - - - + + + This behavior can be changed in the settings. You won't be reminded again. התנהגות זו יכולה להשתנות דרך ההגדרות. לא תתוזכר שוב. - + Icons Only צלמיות בלבד - + Text Only מלל בלבד - + Text Alongside Icons מלל לצד צלמיות - + Text Under Icons מלל מתחת לצלמיות - + Follow System Style עקוב אחר סגנון מערכת - - + + UI lock password סיסמת נעילת UI - - + + Please type the UI lock password: אנא הקלד את סיסמת נעילת ה־UI: - + Are you sure you want to clear the password? האם אתה בטוח שאתה רוצה לנקות את הסיסמה? - + Use regular expressions השתמש בביטויים רגולריים - - Search - חיפוש + + + Search Engine + מנוע חיפוש - - Transfers (%1) - העברות (%1) + + Search has failed + החיפוש נכשל - Recursive download confirmation - אישור הורדה נסיגתית + + Search has finished + החיפוש הסתיים - Never - אף פעם + + Search + חיפוש + + + + Transfers (%1) + העברות (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent עודכן כרגע וצריך להיפעל מחדש כדי שהשינויים יחולו. - + qBittorrent is closed to tray qBittorrent סגור למגש - + Some files are currently transferring. מספר קבצים מועברים כרגע. - + Are you sure you want to quit qBittorrent? האם אתה בטוח שאתה רוצה לצאת מ־qBittorrent? - + &No &לא - + &Yes &כן - + &Always Yes &תמיד כן - + Options saved. אפשרויות נשמרו. - %1/s - s is a shorthand for seconds - %1/ש + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [הורדה: %1, העלאה: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime זמן ריצה חסר של פייתון - + qBittorrent Update Available זמין qBittorent עדכון - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? פייתון נדרש כדי להשתמש במנוע החיפוש אבל נראה שהוא אינו מותקן. האם אתה רוצה להתקין אותו כעת? - + Python is required to use the search engine but it does not seem to be installed. פייתון נדרש כדי להשתמש במנוע החיפוש אבל נראה שהוא אינו מותקן. - - + + Old Python Runtime זמן ריצה ישן של פייתון - + A new version is available. גרסה חדשה זמינה. - + Do you want to download %1? האם אתה רוצה להוריד את %1? - + Open changelog... - פתח יומן שינויים… + פתיחת יומן השינויים… - + No updates available. You are already using the latest version. אין עדכונים זמינים. אתה משתמש כבר בגרסה האחרונה. - + &Check for Updates &בדוק אחר עדכונים - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? גרסת פייתון שלך (%1) אינה עדכנית. דרישת מיזער: %2. האם אתה רוצה להתקין גרסה חדשה יותר עכשיו? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. גרסת פייתון שלך (%1) אינה עדכנית. אנא שדרג אל הגרסה האחרונה כדי שמנועי חיפוש יעבדו. דרישת מיזער: %2. - + + Paused + מושהה + + + Checking for Updates... בודק אחר עדכונים… - + Already checking for program updates in the background בודק כבר אחר עדכוני תוכנה ברקע - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error שגיאת הורדה - Python setup could not be downloaded, reason: %1. Please install it manually. - התקנת פייתון לא יכלה לרדת, סיבה: %1. + התקנת פייתון לא יכלה לרדת, סיבה: %1. אנא התקן אותו באופן ידני. - - + + Invalid password סיסמה בלתי תקפה - + Filter torrents... - + סנן טורנטים… - + Filter by: - + סנן לפי: - + The password must be at least 3 characters long הסיסמה חייבת להיות באורך 3 תווים לפחות - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - הטורנט '%1' מכיל קבצי טורנט, האם אתה רוצה להמשיך עם הורדותיהם? - - - + The password is invalid הסיסמה אינה תקפה - + DL speed: %1 e.g: Download speed: 10 KiB/s מהירות הורדה: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s מהירות העלאה: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [הור: %1, העל: %2] qBittorrent %3 - - - + Hide הסתר - + Exiting qBittorrent יוצא מ־qBittorrent - + Open Torrent Files פתיחת קבצי טורנט - + Torrent Files קבצי טורנט @@ -4179,133 +4412,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 שגיאת ק/פ: %1 - + The file size (%1) exceeds the download limit (%2) גודל הקובץ (%1) חורג ממגבלת ההורדה (%2) - + Exceeded max redirections (%1) חרג הפניות מרביות (%1) - + Redirected to magnet URI הופנה מחדש אל URI של מגנט - + The remote host name was not found (invalid hostname) השם של המארח המרוחק לא נמצא (שם מארח בלתי תקף) - + The operation was canceled הפעולה בוטלה - + The remote server closed the connection prematurely, before the entire reply was received and processed השרת המרוחק סגר את החיבור בטרם עת, לפני שהתשובה כולה התקבלה ועובדה - + The connection to the remote server timed out החיבור אל השרת המרוחק לקח פסק זמן - + SSL/TLS handshake failed לחיצת יד SSL/TLS נכשלה - + The remote server refused the connection השרת המרוחק דחה את החיבור - + The connection to the proxy server was refused החיבור אל שרת ייפוי הכוח נדחה - + The proxy server closed the connection prematurely שרת ייפוי הכוח סגר את החיבור בטרם עת - + The proxy host name was not found שם מארח ייפוי הכוח לא נמצא - + The connection to the proxy timed out or the proxy did not reply in time to the request sent החיבור אל ייפוי הכוח לקח פסק זמן או שייפיי הכוח לא השיב בזמן לבקשה שנשלחה - + The proxy requires authentication in order to honor the request but did not accept any credentials offered ייפוי הכוח דורש אימות על מנת לכבד את הבקשה אבל הוא לא קיבל אישורים מוצעים כלשהם - + The access to the remote content was denied (401) הגישה אל התוכן המרוחק נדחתה (401) - + The operation requested on the remote content is not permitted הפעולה שהתבקשה על התוכן המרוחק אינה מורשת - + The remote content was not found at the server (404) התוכן המרוחק לא נמצא בשרת (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted השרת המרוחק דורש אימות כדי להגיש את התוכן אבל האישורים שסופקו לא התקבלו - + The Network Access API cannot honor the request because the protocol is not known ה־API של גישת הרשת אינו יכול לכבד את הבקשה כי הפרוטוקול בלתי ידוע - + The requested operation is invalid for this protocol הפעולה המבוקשת אינה תקפה עבור פרוטוקול זה - + An unknown network-related error was detected שגיאה בלתי ידועה קשורת רשת התגלתה - + An unknown proxy-related error was detected שגיאה בלתי ידועה קשורת ייפוי כוח התגלתה - + An unknown error related to the remote content was detected שגיאה בלתי ידועה שקשורה אל התוכן המרוחק התגלתה - + A breakdown in protocol was detected תקלה בפרוטוקול התגלתה - + Unknown error שגיאה בלתי ידועה @@ -4313,7 +4546,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" מתעלם משגיאת SSL, כתובת: "%1", שגיאות: "%2" @@ -5685,294 +5923,295 @@ Please install it manually. ביטורנט - + RSS RSS - Web UI - ממשק רשת + ממשק רשת - + Advanced מתקדם - + Customize UI Theme... - + התאם אישית ערכת נושא… - + Transfer List רשימת העברות - + Confirm when deleting torrents אשר בעת מחיקת טורנטים - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. השתמש בצבעי שורות לסירוגין - + Hide zero and infinity values הסתר ערכים של אפס ואינסוף - + Always תמיד - Paused torrents only - טורנטים מושהים בלבד + טורנטים מושהים בלבד - + Action on double-click פעולה בלחיצה כפולה - + Downloading torrents: טורנטים בהורדה: - - Start / Stop Torrent - התחל / עצור טורנט + התחל / עצור טורנט - - + + Open destination folder פתח תיקיית יעד - - + + No action ללא פעולה - + Completed torrents: טורנטים שלמים: - + Auto hide zero status filters - + Desktop שולחן עבודה - + Start qBittorrent on Windows start up הפעל את qBittorrent בהזנק Windows - + Show splash screen on start up הראה מסך מתז בהזנק - + Confirmation on exit when torrents are active אישור ביציאה כאשר טורנטים פעילים - + Confirmation on auto-exit when downloads finish אישור ביציאה אוטומטית בעת סיום הורדות - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB ק״ב - + Torrent content layout: סידור תוכן של טורנט: - + Original מקורי - + Create subfolder צור תת־תיקייה - + Don't create subfolder אל תיצור תת־תיקייה - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + הוסף לראש התור - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... הוסף… - + Options.. אפשרויות… - + Remove הסר - + Email notification &upon download completion שלח בדוא״ל התראה בעת השלמת הורדה - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: פרוטוקול חיבור עמיתים: - + Any כל דבר - + I2P (experimental) - - - - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + I2P (ניסיוני) - + Mixed mode - + מצב מעורבב - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering &סינון IP - + Schedule &the use of alternative rate limits תזמן את ה&שימוש במגבלות קצב חלופיות - + From: From start time מן: - + To: To end time אל: - + Find peers on the DHT network מצא עמיתים על רשת DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5981,140 +6220,188 @@ Disable encryption: Only connect to peers without protocol encryption השבת הצפנה: התחבר רק אל עמיתים בלי הצפנת פרוטוקול - + Allow encryption התר הצפנה - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">עוד מידע</a>) - + Maximum active checking torrents: טורנטים נבדקים פעילים מרביים: - + &Torrent Queueing תור &טורנטים - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - הוסף באופן &אוטומטי עוקבנים אלו להורדות חדשות: + הוסף באופן &אוטומטי עוקבנים אלו להורדות חדשות: - + RSS Reader קורא RSS - + Enable fetching RSS feeds אפשר משיכת הזנות RSS - + Feeds refresh interval: מרווח ריענון הזנות: - + + Same host request delay: + + + + Maximum number of articles per feed: מספר מרבי של מאמרים להזנה: - - - + + + min minutes דק' - + Seeding Limits מגבלות זריעה - Pause torrent - השהה טורנט + השהה טורנט - + Remove torrent הסר טורנט - + Remove torrent and its files הסר טורנט ואת קבציו - + Enable super seeding for torrent אפשר זריעת־על עבור טורנט - + When ratio reaches כאשר יחס מגיע אל - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + כתובת: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader מורידן אוטומטי של טורנטי RSS - + Enable auto downloading of RSS torrents אפשר הורדה אוטומטית של טורנטי RSS - + Edit auto downloading rules... ערוך כללי הורדה אוטומטית… - + RSS Smart Episode Filter מסנן פרקים חכם RSS - + Download REPACK/PROPER episodes הורד פרקי REPACK/PROPER - + Filters: מסננים: - + Web User Interface (Remote control) ממשק משתמש של רשת (שלט רחוק) - + IP address: כתובת IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6122,42 +6409,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv ציין כתובת IPv4 או כתובת IPv6. אתה יכול לציין "0.0.0.0" עבור כתובת IPv4 כלשהי, "::" עבור כתובת IPv6 כלשהי, או "*" עבור IPv4 וגם IPv6. - + Ban client after consecutive failures: החרם לקוח לאחר כישלונות רצופים: - + Never אף פעם - + ban for: החרם למשך: - + Session timeout: פסק זמן של שיח: - + Disabled מושבת - Enable cookie Secure flag (requires HTTPS) - אפשר דגל של עוגייה מאובטחת (דורש HTTPS) + אפשר דגל של עוגייה מאובטחת (דורש HTTPS) - + Server domains: תחומי שרת: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6170,442 +6456,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &השתמש ב־HTTPS במקום ב־HTTP - + Bypass authentication for clients on localhost עקוף אימות עבור לקוחות על localhost - + Bypass authentication for clients in whitelisted IP subnets עקוף אימות עבור לקוחות אשר בתת־רשתות IP ברשימה לבנה - + IP subnet whitelist... רשימה לבנה של תת־רשתות IP… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name &עדכן את השם של התחום הדינמי שלי - + Minimize qBittorrent to notification area מזער את qBittorrent לאזור ההתראות - + + Search + + + + + WebUI + + + + Interface ממשק - + Language: שפה: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: סגנון איקון המגש: - - + + Normal רגיל - + File association שיוך קבצים - + Use qBittorrent for .torrent files השתמש ב־qBittorrent עבור קבצי torrent. - + Use qBittorrent for magnet links השתמש ב־qBittorrent עבור קישורי מגנט - + Check for program updates בדוק אחר עדכוני תוכנה - + Power Management ניהול צריכת חשמל - + + &Log Files + + + + Save path: נתיב שמירה: - + Backup the log file after: גבה את קובץ היומן לאחר: - + Delete backup logs older than: מחק יומני גיבוי שישנים יותר מן: - + + Show external IP in status bar + + + + When adding a torrent בעת הוספת טורנט - + Bring torrent dialog to the front הבא את דו שיח הטורנט לחזית - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled מחק גם קבצי טורנט שהוספתם בוטלה - + Also when addition is cancelled גם כאשר הוספה מבוטלת - + Warning! Data loss possible! אזהרה! אבדן נתונים אפשרי! - + Saving Management ניהול שמירה - + Default Torrent Management Mode: מצב ברירת מחדל של ניהול טורנטים: - + Manual ידני - + Automatic אוטומטי - + When Torrent Category changed: כאשר קטגורית טורנט השתנתה: - + Relocate torrent מקם מחדש טורנט - + Switch torrent to Manual Mode החלף טורנט למצב ידני - - + + Relocate affected torrents מקם מחדש טורנטים מושפעים - - + + Switch affected torrents to Manual Mode החלף טורנטים מושפעים למצב ידני - + Use Subcategories השתמש בתת־קטגוריות - + Default Save Path: נתיב ברירת מחדל של שמירה: - + Copy .torrent files to: העתק קבצי torrent. אל: - + Show &qBittorrent in notification area הראה את &qBittorrent באזור ההתראות - &Log file - קובץ &יומן + קובץ &יומן - + Display &torrent content and some options הצג תוכן &טורנט ומספר אפשרויות - + De&lete .torrent files afterwards מ&חק קבצי .torrent לאחר מכן - + Copy .torrent files for finished downloads to: העתק קבצי torrent. עבור הורדות שהסתיימו אל: - + Pre-allocate disk space for all files הקצה מראש מקום בכונן עבור כל הקבצים - + Use custom UI Theme השתמש בערכת נושא UI מותאמת אישית - + UI Theme file: קובץ ערכת נושא UI: - + Changing Interface settings requires application restart שינוי הגדרות ממשק דורש הפעלה מחדש של היישום - + Shows a confirmation dialog upon torrent deletion מראה דו־שיח אימות בעת מחיקת טורנט - - + + Preview file, otherwise open destination folder הצג מראש קובץ, אחרת פתח תיקיית יעד - - Show torrent options - הראה אפשרויות טורנט + הראה אפשרויות טורנט - + Shows a confirmation dialog when exiting with active torrents מראה דו־שיח אימות בעת יציאה עם טורנטים פעילים - + When minimizing, the main window is closed and must be reopened from the systray icon בעת מיזעור, החלון הראשי נסגר וחייב להיפתח מחדש מאיקון אזור ההתראות - + The systray icon will still be visible when closing the main window איקון אזור ההתראות ייראה בזמן סגירת החלון הראשי - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window סגור את qBittorrent לאזור ההתראות - + Monochrome (for dark theme) מונוכרום (עבור ערכת נושא כהה) - + Monochrome (for light theme) מונוכרום (עבור ערכת נושא בהירה) - + Inhibit system sleep when torrents are downloading עכב שינת מערכת כאשר טורנטים יורדים - + Inhibit system sleep when torrents are seeding עכב שינת מערכת כאשר טורנטים נזרעים - + Creates an additional log file after the log file reaches the specified file size יוצר קובץ יומן נוסף לאחר שקובץ היומן מגיע אל הגודל המצוין של הקובץ - + days Delete backup logs older than 10 days ימים - + months Delete backup logs older than 10 months חודשים - + years Delete backup logs older than 10 years שנים - + Log performance warnings כתוב ביומן אזהרות ביצוע - The torrent will be added to download list in a paused state - הטורנט יתווסף אל רשימת ההורדות במצב מושהה + הטורנט יתווסף אל רשימת ההורדות במצב מושהה - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state אל תתחיל את ההורדה באופן אוטומטי - + Whether the .torrent file should be deleted after adding it האם על קובץ הטורנט להימחק לאחר הוספתו - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. הקצה גדלי קובץ מלאים בכונן לפני התחלת הורדות, כדי למזער קיטוע. שימושי רק עבור כוננים קשיחים. - + Append .!qB extension to incomplete files הוסף סיומת .!qB אל קבצים בלתי שלמים - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it כאשר טורנט מורד, הצע להוסיף טורנטים מקבצי .torrent כלשהם שנמצאים בתוכו - + Enable recursive download dialog אפשר דו־שיח של הורדה נסיגתית - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually אוטומטי: קניניי טורנט שונים (לדוג' נתיב שמירה) יוחלטו ע״י הקטגוריה המשויכת ידני: קניניי טורנט שונים (לדוג' נתיב שמירה) חייבים להיקצות באופן ידני - + When Default Save/Incomplete Path changed: כאשר נתיב ברירת מחדל של שמירה/אי־שלמות השתנה: - + When Category Save Path changed: כאשר נתיב שמירת קטגוריה השתנה: - + Use Category paths in Manual Mode השתמש בנתיבי קטגוריה במצב ידני - + Resolve relative Save Path against appropriate Category path instead of Default one פתור נתיב שמירה קשור משפחה כנגד נתיב קטגוריה הולם במקום נתיב ברירת המחדל - + Use icons from system theme - + Window state on start up: - + מצב חלון בהזנק: - + qBittorrent window state on start up - + Torrent stop condition: - + תנאי עצירה : - - + + None (כלום) - - + + Metadata received - + מטא־נתונים התקבלו - - + + Files checked - + קבצים שנבדקו - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: השתמש בנתיב אחר עבור טורנטים בלתי שלמים: - + Automatically add torrents from: הוסף טורנטים באופן אוטומטי מן: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6622,841 +6961,906 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver מקבל - + To: To receiver אל: - + SMTP server: שרת SMTP: - + Sender שולח - + From: From sender מאת: - + This server requires a secure connection (SSL) שרת זה דורש חיבור מאובטח (SSL) - - + + Authentication אימות - - - - + + + + Username: שם משתמש: - - - - + + + + Password: סיסמה: - + Run external program הרץ תוכנית חיצונית - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window הראה חלון מסוף - + TCP and μTP TCP ו־μTP - + Listening Port פתחת האזנה - + Port used for incoming connections: פתחה המשמשת לחיבורים נכנסים: - + Set to 0 to let your system pick an unused port הגדר אל 0 כדי לתת למערכת שלך לבחור פתחה שאינה בשימוש - + Random אקראי - + Use UPnP / NAT-PMP port forwarding from my router השתמש בקידום פתחות UPnP / NAT-PMP מהנתב שלי - + Connections Limits מגבלות חיבורים - + Maximum number of connections per torrent: מספר מרבי של חיבורים לכל טורנט: - + Global maximum number of connections: מספר מרבי כללי של חיבורים: - + Maximum number of upload slots per torrent: מספר מרבי של חריצי העלאה לכל טורנט: - + Global maximum number of upload slots: מספר מרבי כללי של חריצי העלאה: - + Proxy Server שרת ייפוי כוח - + Type: סוג: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: מארח: - - - + + + Port: פתחה: - + Otherwise, the proxy server is only used for tracker connections אחרת, שרת ייפוי הכוח משמש רק לחיבורי עוקבנים - + Use proxy for peer connections השתמש בייפוי כוח עבור חיבורי עמיתים - + A&uthentication &אימות - + Info: The password is saved unencrypted מידע: הסיסמה נשמרת באופן בלתי מוצפן - + Filter path (.dat, .p2p, .p2b): נתיב מסנן (.dat, .p2p, .p2b): - + Reload the filter טען מחדש את המסנן - + Manually banned IP addresses... כתובות IP מוחרמות באופן ידני… - + Apply to trackers החל על עוקבנים - + Global Rate Limits מגבלות קצב כלליות - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s ק״ב/ש - - + + Upload: העלאה: - - + + Download: הורדה: - + Alternative Rate Limits מגבלות קצב חלופיות - + Start time זמן התחלה - + End time זמן סוף - + When: מתי: - + Every day כל יום - + Weekdays ימי חול - + Weekends סופי שבוע - + Rate Limits Settings הגדרות מגבלות קצב - + Apply rate limit to peers on LAN החל מגבלת קצב על עמיתים ב־LAN - + Apply rate limit to transport overhead החל מגבלת קצב על תקורת תעבורה - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol החל מגבלת קצב על פרוטוקול µTP - + Privacy פרטיות - + Enable DHT (decentralized network) to find more peers אפשר DHT (רשת מבוזרת) כדי למצוא יותר עמיתים - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) החלף עמיתים עם לקוחות ביטורנט תואמים (µTorrent, Vuze, …) - + Enable Peer Exchange (PeX) to find more peers אפשר החלפת עמיתים (PeX) כדי למצוא יותר עמיתים - + Look for peers on your local network חפש עמיתים על הרשת המקומית שלך - + Enable Local Peer Discovery to find more peers אפשר גילוי עמיתים מקומיים כדי למצוא יותר עמיתים - + Encryption mode: מצב הצפנה: - + Require encryption דרוש הצפנה - + Disable encryption השבת הצפנה - + Enable when using a proxy or a VPN connection אפשר בעת שימוש בחיבור ייפוי כוח או בחיבור VPN - + Enable anonymous mode אפשר מצב אלמוני - + Maximum active downloads: הורדות פעילות מרביות: - + Maximum active uploads: העלאות פעילות מרביות: - + Maximum active torrents: טורנטים פעילים מרביים: - + Do not count slow torrents in these limits אל תחשיב טורנטים איטיים במגבלות אלו - + Upload rate threshold: סף קצב העלאה: - + Download rate threshold: סף קצב הורדה: - - - + + + + sec seconds שניות - + Torrent inactivity timer: קוצב־זמן של אי־פעילות טורנט: - + then לאחר מכן - + Use UPnP / NAT-PMP to forward the port from my router השתמש ב־UPnP / NAT-PMP כדי להעביר הלאה את הפתחה מהנתב שלי - + Certificate: תעודה: - + Key: מפתח: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>מידע אודות תעודות</a> - + Change current password שנה סיסמה נוכחית - Use alternative Web UI - השתמש בממשק רשת חלופי + השתמש בממשק רשת חלופי - + Files location: מיקום קבצים: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security אבטחה - + Enable clickjacking protection אפשר הגנה מפני מחטף לחיצה - + Enable Cross-Site Request Forgery (CSRF) protection אפשר הגנה מפני זיוף בקשות חוצות־אתרים (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation אפשר תיקוף של כותרת מארח - + Add custom HTTP headers הוסף כותרות HTTP מותאמות אישית - + Header: value pairs, one per line כותרת: זוגות ערכים, אחד לשורה - + Enable reverse proxy support אפשר תמיכה בייפוי כוח מהופך - + Trusted proxies list: רשימת ייפויי כוח מהימנים: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: שירות: - + Register הירשם - + Domain name: שם תחום: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! על ידי אפשור אפשרויות אלו, אתה יכול <strong>לאבד בצורה בלתי הפיכה</strong> את קבצי הטורנט שלך! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog אם תאפשר את האפשרות השנייה (&ldquo;גם כאשר הוספה מבוטלת &rdquo;) קובץ הטורנט <strong>יימחק</strong> אפילו אם תלחץ על &ldquo;<strong>ביטול</strong>&rdquo; בדו־שיח &ldquo;הוספת טורנט&rdquo; - + Select qBittorrent UI Theme file בחר קובץ ערכת נושא UI של qBittorrent - + Choose Alternative UI files location בחר מיקום של קבצי ממשק חלופי - + Supported parameters (case sensitive): פרמטרים נתמכים (תלוי רישיות): - + Minimized - + ממוזער - + Hidden - + מוסתר - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: שם טורנט - + %L: Category %L: קטגוריה - + %F: Content path (same as root path for multifile torrent) %F: נתיב תוכן (זהה לנתיב שורש עבור טורנט מרובה קבצים) - + %R: Root path (first torrent subdirectory path) %R: נתיב שורש (תחילה נתיב תיקיית משנה של טורנט) - + %D: Save path %D: נתיב שמירה - + %C: Number of files %C: מספר קבצים - + %Z: Torrent size (bytes) %Z: גודל טורנט (בתים) - + %T: Current tracker %T: עוקבן נוכחי - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") עצה: תמצת פרמטר בעזרת סימני ציטוט כדי למנוע ממלל להיחתך בשטח לבן (לדוגמה, "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (כלום) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds טורנט ייחשב איטי אם הקצבים של הורדתו והעלאתו נשארים מתחת לערכים אלו עבור שניות "קוצב־זמן של אי־פעילות טורנט" - + Certificate תעודה - + Select certificate בחר תעודה - + Private key מפתח פרטי - + Select private key בחר מפתח פרטי - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor בחר תיקייה לניטור - + Adding entry failed הוספת כניסה נכשלה - - Location Error - שגיאת מיקום + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - המיקום החלופי של קבצי ממשק משתמש רשת אינו יכול להיות ריק. + + Location Error + שגיאת מיקום - - + + Choose export directory בחר תיקיית ייצוא - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well כאשר אפשרויות אלו מאופשרות, qBittorrent <strong>ימחק</strong> קבצי טורנט לאחר שהם התווספו בהצלחה (האפשרות הראשונה) או לא (האפשרות השנייה) לתור ההורדות. זה יחול <strong>לא רק</strong> על הקבצים שנפתחו דרך פעולת התפריט &ldquo;הוספת טורנט&rdquo; אלא גם על אלו שנפתחו דרך <strong>שיוך סוג קובץ</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI קובץ (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: תגיות (מופרדות ע״י פסיק) - + %I: Info hash v1 (or '-' if unavailable) %I: גיבוב מידע גרסה 1 (או '-' אם לא זמין) - + %J: Info hash v2 (or '-' if unavailable) %J: גיבוב מידע גרסה 2 (או '-' אם לא זמין) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: זהות טורנט (או גיבוב מידע SHA-1 עבור טורנט גרסה 1 או גיבוב מידע SHA-256 קטום עבור טורנט גרסה 2/היברידי) - - - + + + Choose a save directory בחירת תיקיית שמירה - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file בחר קובץ מסנן IP - + All supported filters כל המסננים הנתמכים - + + The alternative WebUI files location cannot be blank. + + + + Parsing error שגיאת ניתוח - + Failed to parse the provided IP filter ניתוח מסנן ה־IP שסופק נכשל. - + Successfully refreshed רוענן בהצלחה - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number ניתח בהצלחה את מסנן ה־IP שסופק: %1 כללים הוחלו. - + Preferences העדפות - + Time Error שגיאת זמן - + The start time and the end time can't be the same. זמן ההתחלה וזמן הסוף אינם יכולים להיות אותו הדבר. - - + + Length Error שגיאת אורך - - - The Web UI username must be at least 3 characters long. - שם המשתמש של ממשק הרשת חייב להיות באורך של 3 תוים לפחות. - - - - The Web UI password must be at least 6 characters long. - הסיסמה של ממשק הרשת חייבת להיות באורך של 6 תוים לפחות. - PeerInfo - + Unknown לא ידוע - + Interested (local) and choked (peer) מעוניין (מקומי) וחנוק (עמית) - + Interested (local) and unchoked (peer) מעוניין (מקומי) ולא חנוק (עמית) - + Interested (peer) and choked (local) מעוניין (עמית) וחנוק (מקומי) - + Interested (peer) and unchoked (local) מעוניין (עמית) ולא חנוק (מקומי) - + Not interested (local) and unchoked (peer) לא מעוניין (מקומי) ולא חנוק (עמית) - + Not interested (peer) and unchoked (local) לא מעוניין (עמית) ולא חנוק (מקומי) - + Optimistic unchoke לא חנוק אופטימי - + Peer snubbed עמית השתחצן - + Incoming connection חיבור נכנס - + Peer from DHT עמית מן DHT - + Peer from PEX עמית מן PEX - + Peer from LSD עמית מן LSD - + Encrypted traffic תעבורה מוצפנת - + Encrypted handshake לחיצת יד מוצפנת + + + Peer is using NAT hole punching + + PeerListWidget @@ -7468,7 +7872,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/כתובת @@ -7612,7 +8016,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not עמית "%1" מוחרם באופן ידני - + N/A לא זמין @@ -7635,7 +8039,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not רשימת עמיתים להוספה (IP אחד לשורה): - + Format: IPv4:port / [IPv6]:port תסדיר: IPv4:פתחה / [IPv6]:פתחה @@ -7676,27 +8080,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: קבצים בחתיכה זו: - + File in this piece: קובץ בחתיכה זו: - + File in these pieces: קובץ בחתיכות אלו: - + Wait until metadata become available to see detailed information המתן עד שמטא־נתונים יהפכו לזמינים כדי לראות מידע מפורט - + Hold Shift key for detailed information החזק את מקש Shift למידע מפורט @@ -7709,58 +8113,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not מתקעי חיפוש - + Installed search plugins: מתקעי חיפוש מותקנים: - + Name שם - + Version גרסה - + Url כתובת - - + + Enabled מאופשר - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. אזהרה: הייה בטוח להיענות לחוקי זכויות היוצרים של מדינתך בעת הורדת טורנטים מכל אחד ממנועי חיפוש אלו. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one התקן אחד חדש - + Check for updates בדוק אחר עדכונים - + Close סגור - + Uninstall הסר התקנה @@ -7880,17 +8284,17 @@ Those plugins were disabled. מקור מתקע - + Search plugin source: מקור מתקע חיפוש: - + Local file קובץ מקומי - + Web link קישור רשת @@ -7931,47 +8335,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: הקבצים הבאים מטורנט "%1" תומכים בהצגה מראש, אנא בחר אחד מהם: - + Preview הצג מראש - + Name שם - + Size גודל - + Progress התקדמות - + Preview impossible תצוגה מקדימה בלתי אפשרית - + Sorry, we can't preview this file: "%1". סליחה, בלתי ניתן להציג מראש קובץ זה: "%1". - + Resize columns שנה גודל עמודות - + Resize all non-hidden columns to the size of their contents שנה גודל של כל העמודות הבלתי מוסתרות אל הגודל של התכנים שלהן @@ -7984,27 +8388,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist נתיב אינו קיים - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8045,12 +8449,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: ירד: - + Availability: זמינות: @@ -8065,53 +8469,53 @@ Those plugins were disabled. העברה - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) משך זמן פעיל: - + ETA: זמן משוער שנותר: - + Uploaded: הועלה: - + Seeds: זורעים: - + Download Speed: מהירות הורדה: - + Upload Speed: מהירות העלאה: - + Peers: עמיתים: - + Download Limit: מגבלת הורדה: - + Upload Limit: מגבלת העלאה: - + Wasted: בוזבז: @@ -8121,193 +8525,249 @@ Those plugins were disabled. חיבורים: - + Information מידע - + Info Hash v1: גיבוב מידע גרסה 1: - + Info Hash v2: גיבוב מידע גרסה 2: - + Comment: הערה: - + Select All בחר הכול - + Select None אל תבחר כלום - + Share Ratio: יחס שיתוף: - + Reannounce In: הכרז מחדש בעוד: - + Last Seen Complete: נראה לאחרונה שלם: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: גודל כולל: - + Pieces: חתיכות: - + Created By: נוצר ע״י: - + Added On: התווסף ב: - + Completed On: הושלם ב: - + Created On: נוצר ב: - + + Private: + + + + Save Path: נתיב שמירה: - + Never אף פעם - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (יש %3) - - + + %1 (%2 this session) %1 (%2 שיח נוכחי) - - + + + N/A לא זמין - + + Yes + כן + + + + No + לא + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (נזרע למשך %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 מרב) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 סה״כ) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 ממוצע) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - זורע רשת חדש + זורע רשת חדש - Remove Web seed - הסר זורע רשת + הסר זורע רשת - Copy Web seed URL - העתק כתובת זורע רשת + העתק כתובת זורע רשת - Edit Web seed URL - ערוך כתובת זורע רשת + ערוך כתובת זורע רשת - + Filter files... סנן קבצים… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled גרפי מהירות מושבתים - + You can enable it in Advanced Options אתה יכול לאפשר את זה באפשרויות מתקדמות - New URL seed New HTTP source - זורע כתובת חדש + זורע כתובת חדש - New URL seed: - זורע כתובת חדש: + זורע כתובת חדש: - - This URL seed is already in the list. - זורע כתובת זה נמצא כבר ברשימה. + זורע כתובת זה נמצא כבר ברשימה. - + Web seed editing עריכת זורע רשת - + Web seed URL: כתובת זורע רשת: @@ -8326,22 +8786,22 @@ Those plugins were disabled. לא היה ניתן לשמור נתוני מורידן אוטומטי RSS ב־%1. שגיאה: %2 - + Invalid data format תסדיר נתונים בלתי תקף - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 לא היה ניתן לטעון כללי מורידן אוטומטי RSS. סיבה: %1 @@ -8349,22 +8809,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 כישלון בהורדת הזנת RSS ב־'%1'. סיבה: %2 - + RSS feed at '%1' updated. Added %2 new articles. הזנת RSS ב־'%1' עודכנה. %2 מאמרים חדשים התווספו. - + Failed to parse RSS feed at '%1'. Reason: %2 כישלון בניתוח הזנת RSS ב־'%1'. סיבה: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. הזנת RSS ב-'%1' ירדה בהצלחה. אבחון שלה מתחיל. @@ -8400,12 +8860,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. הזנת RSS בלתי תקפה. - + %1 (line: %2, column: %3, offset: %4). %1 (שורה: %2, עמודה: %3, קיזוז: %4). @@ -8413,99 +8873,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" לא היה ניתן לשמור תצורת שיח RSS. קובץ: "%1". שגיאה: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" לא היה ניתן לשמור נתוני שיח RSS. קובץ: "%1". שגיאה: "%2" - - + + RSS feed with given URL already exists: %1. הזנת RSS עם הכתובת שניתנה קיימת כבר: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. לא ניתן להעביר תיקיית שורש. - - + + Item doesn't exist: %1. פריט אינו קיים: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. לא ניתן למחוק תיקיית שורש. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. לא היה ניתן לטעון הזנת RSS. הזנה: "%1". סיבה: מען נדרש. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. לא היה ניתן לטעון הזנת RSS. הזנה: "%1". סיבה: מזהה משתמש בלתי תקף. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. הזנת RSS כפולה התגלתה. מזהה משתמש: "%1". שגיאה: התצורה נראית פגומה. - + Couldn't load RSS item. Item: "%1". Invalid data format. לא היה ניתן לטעון פריט RSS. פריט: "%1". תסדיר נתונים בלתי תקף. - + Corrupted RSS list, not loading it. רשימת RSS פגומה, בלתי אפשרי לטעון אותה. - + Incorrect RSS Item path: %1. נתיב שגוי של פריט RSS: %1. - + RSS item with given path already exists: %1. פריט RSS עם הנתיב שניתן קיים כבר: %1. - + Parent folder doesn't exist: %1. תיקיית הורה אינה קיימת: %1. @@ -8529,8 +8989,8 @@ Those plugins were disabled. - - + + Mark items read סמן פריטים כנקראו @@ -8555,132 +9015,132 @@ Those plugins were disabled. טורנטים: (לחיצה כפולה כדי להוריד) - - + + Delete מחק - + Rename... שנה שם… - + Rename שנה שם - - + + Update עדכן - + New subscription... מינוי חדש… - - + + Update all feeds עדכן את כל ההזנות - + Download torrent הורד טורנט - + Open news URL פתיחת כתובת חדשות - + Copy feed URL העתקת כתובת הזנה - + New folder... תיקייה חדשה… - + Edit feed URL... - + ערוך כתובת הזנה… - + Edit feed URL - + ערוך כתובת הזנה - + Please choose a folder name אנא בחר שם תיקייה - + Folder name: שם תיקייה: - + New folder תיקייה חדשה - - + + Please type a RSS feed URL אנא הקלד כתובת של הזנת RSS - - + + Feed URL: כתובת הזנה: - + Deletion confirmation אישור מחיקה - + Are you sure you want to delete the selected RSS feeds? האם אתה בטוח שאתה רוצה למחוק את הזנות ה־RSS הנבחרות? - + Please choose a new name for this RSS feed אנא בחר שם חדש עבור הזנת RSS זו - + New feed name: שם הזנה חדשה: - + Rename failed שינוי שם נכשל - + Date: תאריך: - + Feed: - + הזנה: - + Author: מחבר: @@ -8688,38 +9148,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. פייתון חייב להיות מותקן כדי להשתמש במנוע החיפוש. - + Unable to create more than %1 concurrent searches. לא היה ניתן ליצור יותר מן %1 חיפושים במקביל. - - + + Offset is out of range קיזוז מחוץ לטווח - + All plugins are already up to date. כל המתקעים כבר מעודכנים. - + Updating %1 plugins מעדכן %1 מתקעים - + Updating plugin %1 מעדכן מתקע %1 - + Failed to check for plugin updates: %1 כישלון בבדיקה אחר עדכוני מתקע: %1 @@ -8794,132 +9254,146 @@ Those plugins were disabled. גודל: - + Name i.e: file name שם - + Size i.e: file size גודל - + Seeders i.e: Number of full sources זורעים - + Leechers i.e: Number of partial sources עלוקות - Search engine - מנוע חיפוש + מנוע חיפוש - + Filter search results... סנן תוצאות חיפוש… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results תוצאות (מראה <i>%1</i> מתוך <i>%2</i>): - + Torrent names only שמות טורנט בלבד - + Everywhere בכל מקום - + Use regular expressions השתמש בביטויים רגולריים - + Open download window - פתח חלון הורדה + פתיחת חלון ההורדה - + Download הורד - + Open description page - פתח דף תיאור + פתיחת דף התיאור - + Copy - העתק + העתקה - + Name שם - + Download link קישור הורדה - + Description page URL כתובת של דף תיאור - + Searching... מחפש… - + Search has finished החיפוש הסתיים - + Search aborted החיפוש בוטל - + An error occurred during search... שגיאה התרחשה במהלך החיפוש… - + Search returned no results החיפוש לא הניב תוצאות - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility נראות עמודות - + Resize columns שנה גודל עמודות - + Resize all non-hidden columns to the size of their contents שנה גודל של כל העמודות הבלתי מוסתרות אל הגודל של התכנים שלהן @@ -8927,104 +9401,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. תסדיר בלתי ידוע של קובץ מתקע של מנוע חיפוש. - + Plugin already at version %1, which is greater than %2 מתקע כבר בגרסה %1, שהיא גדולה יותר מן %2 - + A more recent version of this plugin is already installed. גרסה חדשה יותר של מתקע זה מותקנת כבר. - + Plugin %1 is not supported. המתקע %1 אינו נתמך. - - + + Plugin is not supported. המתקע אינו נתמך. - + Plugin %1 has been successfully updated. המתקע %1 עודכן בהצלחה. - + All categories כל הקטגוריות - + Movies סרטים - + TV shows סדרות - + Music מוזיקה - + Games משחקים - + Anime אנימה - + Software תוכנות - + Pictures תמונות - + Books ספרים - + Update server is temporarily unavailable. %1 שרת העדכון אינו זמין זמנית. %1 - - + + Failed to download the plugin file. %1 כישלון בהורדת קובץ המתקע. %1 - + Plugin "%1" is outdated, updating to version %2 המתקע "%1" מיושן, מעדכן אל גרסה %2 - + Incorrect update info received for %1 out of %2 plugins. מידע שגוי של עדכון התקבל עבור %1 מתוך %2 מתקעים. - + Search plugin '%1' contains invalid version string ('%2') מתקע החיפוש '%1' מכיל מחרוזת של גרסה בלתי תקפה ('%2') @@ -9034,114 +9508,153 @@ Those plugins were disabled. - - - - Search חיפוש - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. אין מתקעי חיפוש כלשהם מותקנים. לחץ על הכפתור "חפש מתקעים…" בתחתית ימין החלון כדי להתקין כמה. - + Search plugins... מתקעי חיפוש… - + A phrase to search for. ביטוי לחפש אחריו. - + Spaces in a search term may be protected by double quotes. רווחים במונח חיפוש יכולים להתמגן ע״י מרכאות כפולות. - + Example: Search phrase example דוגמה: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: חפש אחר <b>foo bar</b> - + All plugins כל המתקעים - + Only enabled רק מאופשרים - + + + Invalid data format. + תסדיר נתונים בלתי תקף. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: חפש אחר <b>foo</b> ו־<b>bar</b> - + + Refresh + + + + Close tab סגור לשונית - + Close all tabs סגור את כל הלשוניות - + Select... בחר… - - - + + Search Engine מנוע חיפוש - + + Please install Python to use the Search Engine. אנא התקן פייתון כדי להשתמש במנוע החיפוש. - + Empty search pattern תבנית חיפוש ריקה - + Please type a search pattern first אנא הקלד תבנית חיפוש תחילה - + + Stop עצור - Search has finished - החיפוש הסתיים + החיפוש הסתיים - Search has failed - החיפוש נכשל + החיפוש נכשל + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9254,34 +9767,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: העלאה: - - - + + + - - - + + + KiB/s ק״ב/ש - - + + Download: הורדה: - + Alternative speed limits מגבלות מהירות חלופיות @@ -9473,32 +9986,32 @@ Click the "Search plugins..." button at the bottom right of the window זמן ממוצע בתור: - + Connected peers: עמיתים מחוברים: - + All-time share ratio: יחס שיתוף של כל הזמנים: - + All-time download: הורדה של כל הזמנים: - + Session waste: בזבוז שיח: - + All-time upload: העלאה של כל הזמנים: - + Total buffer size: סה״כ גודל מאגר: @@ -9513,12 +10026,12 @@ Click the "Search plugins..." button at the bottom right of the window משרות ק/פ בתור: - + Write cache overload: עומס יתר מטמון כתיבה: - + Read cache overload: עומס יתר מטמון קריאה: @@ -9537,51 +10050,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: מעמד חיבור: - - + + No direct connections. This may indicate network configuration problems. אין חיבורים ישירים. זה עלול להעיד על בעיות בתצורת הרשת. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 צמתים - + qBittorrent needs to be restarted! qBittorrent צריך להיפעל מחדש! - - - + + + Connection Status: מעמד חיבור: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. לא מקוון. זה אומר בד״כ ש־qBittorrent נכשל להאזין אל הפתחה הנבחרת עבור חיבורים נכנסים. - + Online מקוון - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits לחץ כדי להחליף אל מגבלות מהירות חלופיות - + Click to switch to regular speed limits לחץ כדי להחליף אל מגבלות מהירות רגילה @@ -9610,14 +10139,22 @@ Click the "Search plugins..." button at the bottom right of the window הושלם (0) - Resumed (0) - מומשך (0) + מומשך (0) - Paused (0) - מושהה (0) + מושהה (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9652,7 +10189,7 @@ Click the "Search plugins..." button at the bottom right of the window Moving (0) - + מעביר (0) @@ -9679,25 +10216,42 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) הושלם (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - מושהה (%1) + מושהה (%1) Moving (%1) - + מעביר (%1) - Resume torrents - המשך טורנטים + המשך טורנטים - Pause torrents - השהה טורנטים + השהה טורנטים @@ -9705,9 +10259,8 @@ Click the "Search plugins..." button at the bottom right of the window הסר טורנטים - Resumed (%1) - מומשך (%1) + מומשך (%1) @@ -9748,17 +10301,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags תגיות - + All הכול - + Untagged חסר־תגית @@ -9766,52 +10319,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... הוסף תגית… - + Remove tag הסר תגית - + Remove unused tags הסר תגיות שאינן בשימוש - Resume torrents - המשך טורנטים + המשך טורנטים - Pause torrents - השהה טורנטים + השהה טורנטים - + Remove torrents הסר טורנטים - New Tag - תגית חדשה + תגית חדשה + + + + Start torrents + - + + Stop torrents + + + + Tag: תגית: - + + Add tag + + + + Invalid tag name שם תגית בלתי תקף - + Tag name '%1' is invalid שם התגית '%1' אינו תקף @@ -9951,32 +10516,32 @@ Please choose a different name and try again. TorrentContentModel - + Name שם - + Progress התקדמות - + Download Priority עדיפות הורדה - + Remaining נותר - + Availability זמינות - + Total Size גודל כולל @@ -10021,102 +10586,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error שגיאת שינוי שם - + Renaming משנה שם - + New name: שם חדש: - + Column visibility נראות עמודות - + Resize columns שנה גודל עמודות - + Resize all non-hidden columns to the size of their contents שנה גודל של כל העמודות הבלתי מוסתרות אל הגודל של התכנים שלהן - + Open - פתח + פתיחה - + Open containing folder - פתח תיקייה מכילה + פתיחת התיקייה המכילה - + Rename... שנה שם… - + Priority עדיפות - - + + Do not download אל תוריד - + Normal רגיל - + High גבוהה - + Maximum מרבית - + By shown file order לפי סדר קבצים נראים - + Normal priority עדיפות רגילה - + High priority עדיפות גבוהה - + Maximum priority עדיפות מרבית - + Priority by shown file order עדיפות לפי סדר קבצים נראים + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10141,13 +10724,13 @@ Please choose a different name and try again. - + Select file בחר קובץ - + Select folder בחר תיקייה @@ -10172,67 +10755,19 @@ Please choose a different name and try again. גודל חתיכה: - + Auto אוטומטי - 16 KiB - 16 ק״ב - - - 32 KiB - 32 ק״ב + + Calculate number of pieces: + חשב מספר חתיכות: - 64 KiB - 64 ק״ב - - - 128 KiB - 128 ק״ב - - - 256 KiB - 256 ק״ב - - - 512 KiB - 512 ק״ב - - - 1 MiB - 1 מ״ב - - - 2 MiB - 2 מ״ב - - - 4 MiB - 4 מ״ב - - - 8 MiB - 8 מ״ב - - - 16 MiB - 16 מ״ב - - - 32 MiB - 32 מ״ב - - - - Calculate number of pieces: - חשב מספר חתיכות: - - - - Private torrent (Won't distribute on DHT network) - טורנט פרטי (לא יופץ על רשת DHT) + + Private torrent (Won't distribute on DHT network) + טורנט פרטי (לא יופץ על רשת DHT) @@ -10270,92 +10805,83 @@ Please choose a different name and try again. שדות - + You can separate tracker tiers / groups with an empty line. אתה יכול להפריד מדרגים/קבוצות של עוקבן באמצעות שורה ריקה. - + Web seed URLs: כתובות זורעי רשת: - + Tracker URLs: כתובות עוקבנים: - + Comments: הערות: - + Source: מקור: - + Progress: התקדמות: - + Create Torrent צור טורנט - - + + Torrent creation failed יצירת טורנט נכשלה - + Reason: Path to file/folder is not readable. סיבה: נתיב אל קובץ/תיקייה אינו קריא. - + Select where to save the new torrent בחר איפה לשמור את הטורנט החדש - + Torrent Files (*.torrent) קבצי טורנט (*.torrent) - - Reason: %1 - סיבה: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + סיבה: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - סיבה: קובץ הטורנט שנוצר אינו תקף. הוא לא ייתווסף אל רשימת ההורדות. + הוספת טורנט נכשלה - + Torrent creator יוצר הטורנטים - + Torrent created: טורנט נוצר: @@ -10363,32 +10889,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 לא היה ניתן לאחסן תצורה של תיקיות תחת מעקב אל %1. שגיאה: %2 - + Watched folder Path cannot be empty. נתיב של תיקייה תחת מעקב אינו יכול להיות ריק. - + Watched folder Path cannot be relative. נתיב של תיקייה תחת מעקב אינו יכול להיות קרוב משפחה. @@ -10396,27 +10922,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 כישלון בפתיחת קובץ מגנט: %1 - + Rejecting failed torrent file: %1 מסרב קובץ טורנט כושל: %1 - + Watching folder: "%1" מעקב אחר תיקייה: "%1" @@ -10424,14 +10950,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - מטא־נתונים בלתי תקפים + מטא־נתונים בלתי תקפים @@ -10462,127 +10982,195 @@ Please choose a different name and try again. השתמש בנתיב אחר עבור טורנט בלתי שלם - + Category: קטגוריה: - + + Torrent Share Limits + + + Torrent speed limits - מגבלות מהירות של טורנט + מגבלות מהירות של טורנט - + Download: הורדה: - - + + - - + + Torrent Speed Limits + + + + + KiB/s ק״ב/ש - + These will not exceed the global limits אלו לא יחרגו מהמגבלות הכלליות - + Upload: העלאה: - Torrent share limits - מגבלות שיתוף של טורנט + מגבלות שיתוף של טורנט - Use global share limit - השתמש במגבלת שיתוף כללית + השתמש במגבלת שיתוף כללית - Set no share limit - אל תגדיר מגבלת שיתוף + אל תגדיר מגבלת שיתוף - Set share limit to - הגדר מגבלת שיתוף אל + הגדר מגבלת שיתוף אל - ratio - יחס + יחס - - total minutes - - - - - inactive minutes - - - - + Disable DHT for this torrent השבת DHT עבור טורנט זה - + Download in sequential order הורד בסדר עוקב - + Disable PeX for this torrent השבת PeX עבור טורנט זה - + Download first and last pieces first הורד תחילה חתיכה ראשונה ואחרונה - + Disable LSD for this torrent השבת LSD עבור טורנט זה - + Currently used categories קטגוריות שנמצאות בשימוש כרגע - - + + Choose save path בחר נתיב שמירה - + Not applicable to private torrents בלתי ישים על טורנטים פרטיים - No share limit method selected - שיטת מגבלת שיתוף לא נבחרה + שיטת מגבלת שיתוף לא נבחרה - Please select a limit method first - אנא בחר תחילה שיטת מגבלה + אנא בחר תחילה שיטת מגבלה + + + + TorrentShareLimitsWidget + + + + + + Default + ברירת מחדל + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + דק' + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + הסר טורנט + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + אפשר זריעת־על עבור טורנט + + + + Ratio: + יחס: @@ -10593,32 +11181,36 @@ Please choose a different name and try again. - New Tag - תגית חדשה + תגית חדשה + Add tag + + + + Tag: תגית: - + Invalid tag name שם תגית בלתי תקף - + Tag name '%1' is invalid. - + Tag exists תגית קיימת - + Tag name already exists. שם תגית קיים כבר. @@ -10626,115 +11218,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. שגיאה: '%1' הוא אינו קובץ תקף של טורנט. - + Priority must be an integer עדיפות חייבת להיות מספר שלם - + Priority is not valid עדיפות אינה תקפה - + Torrent's metadata has not yet downloaded מטא־נתונים של טורנט עדין לא ירדו - + File IDs must be integers זהויות קובץ חייבות להיות מספר שלם - + File ID is not valid זהות קובץ אינה תקפה - - - - + + + + Torrent queueing must be enabled תור טורנטים חייב להיות מאופשר - - + + Save path cannot be empty נתיב שמירה אינו יכול להיות ריק - - + + Cannot create target directory לא ניתן ליצור תיקיית מטרה - - + + Category cannot be empty קטגוריה אינה יכולה להיות ריקה - + Unable to create category לא היה ניתן ליצור קטגוריה - + Unable to edit category לא היה ניתן לערוך קטגוריה - + Unable to export torrent file. Error: %1 לא היה ניתן לייצא קובץ טורנט. שגיאה: %1 - + Cannot make save path לא ניתן ליצור נתיב שמירה - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid הפרמטר 'מיון' בלתי תקף - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" אינו מדדן תקף של קובץ. - + Index %1 is out of bounds. הקשרים של מדדן %1 אזלו. - - + + Cannot write to directory לא ניתן לכתוב בתיקייה - + WebUI Set location: moving "%1", from "%2" to "%3" קביעת מיקום של ממשק רשת: מעביר את "%1" מן "%2" אל "%3" - + Incorrect torrent name שם לא נכון של טורנט - - + + Incorrect category name שם לא נכון של קטגוריה @@ -10765,257 +11372,199 @@ Please choose a different name and try again. TrackerListModel - - + Working - עובד + עובד - + Disabled - מושבת + מושבת - + Disabled for this torrent - מושבת עבור טורנט זה + מושבת עבור טורנט זה - + This torrent is private - הטורנט הזה פרטי + הטורנט הזה פרטי - + N/A - לא זמין + לא זמין - + Updating... - מעדכן… + מעדכן… - + Not working - לא עובד + לא עובד - + Tracker error - + שגיאת עוקבן - + Unreachable - + Not contacted yet - קשר לא נוצר עדין + קשר לא נוצר עדין - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - נדבך + + BT Protocol + - - Protocol + + Next Announce - - Status - מעמד + + Min Announce + + + + + Tier + נדבך + + + Protocol + פרוטוקול - Peers - עמיתים + Status + מיצב - Seeds - זורעים + Peers + עמיתים - Leeches - עלוקות + Seeds + זורעים - Times Downloaded - פעמים שהורד + Leeches + עלוקות - Message - הודעה + Times Downloaded + פעמים שהורד - Next announce - - - - - Min announce - + Message + הודעה - v%1 - + v%1 TrackerListWidget - Working - עובד - - - Disabled - מושבת - - - Disabled for this torrent - מושבת עבור טורנט זה - - - + This torrent is private הטורנט הזה פרטי - Updating... - מעדכן… - - - Not working - לא עובד - - - Not contacted yet - קשר לא נוצר עדין - - - N/A - לא זמין - - - + Tracker editing עריכת עוקבן - + Tracker URL: כתובת עוקבן: - - + + Tracker editing failed עריכת עוקבן נכשלה - + The tracker URL entered is invalid. כתובת העוקבן שהוכנסה אינה תקפה. - + The tracker URL already exists. כתובת העוקבן קיימת כבר. - + Edit tracker URL... ערוך כתובת עוקבן… - + Remove tracker הסר עוקבן - + Copy tracker URL - העתק כתובת עוקבן + העתקת כתובת העוקבן - + Force reannounce to selected trackers אלץ הכרזה מחדש אל עוקבנים נבחרים - + Force reannounce to all trackers אלץ הכרזה מחדש לכל העוקבנים - Tier - נדבך - - - URL - כתובת - - - Status - מעמד - - - Seeds - זורעים - - - Times Downloaded - פעמים שהורד - - - + Resize columns שנה גודל עמודות - + Resize all non-hidden columns to the size of their contents שנה גודל של כל העמודות הבלתי מוסתרות אל הגודל של התכנים שלהן - Peers - עמיתים - - - + Add trackers... הוסף עוקבנים… - Leeches - עלוקות - - - Message - הודעה - - - + Column visibility נראות עמודות @@ -11033,37 +11582,37 @@ Please choose a different name and try again. רשימת עוקבנים להוספה (אחד לשורה): - + µTorrent compatible list URL: כתובת של רשימה תואמת µTorrent: - + Download trackers list - + Add הוסף - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11071,87 +11620,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - הכול (0) - - - Trackerless (0) - חסר־עוקבנים (0) - - - Error (0) - שגיאה (0) - - - Warning (0) - אזהרה (0) - - - Trackerless - חסר־עוקבנים - - - Error (%1) - שגיאה (%1) - - - + Warning (%1) אזהרה (%1) - + Trackerless (%1) חסר־עוקבנים (%1) - + Tracker error (%1) - + שגיאת עוקבן (%1) - + Other error (%1) - + שגיאה אחרת (%1) - + Remove tracker - הסר עוקבן + הסר גשש + + + + Start torrents + + + + + Stop torrents + - Resume torrents - המשך טורנטים + המשך טורנטים - Pause torrents - השהה טורנטים + השהה טורנטים - + Remove torrents הסר טורנטים - + Removal confirmation - + אישור הסרה - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + אל תשאל אותי שוב - + All (%1) this is for the tracker filter הכול (%1) @@ -11160,7 +11692,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11253,9 +11785,8 @@ Please choose a different name and try again. בודק נתוני המשכה - Paused - מושהה + מושהה @@ -11280,220 +11811,262 @@ Please choose a different name and try again. נתקל בשגיאה - + Name i.e: torrent name שם - + Size i.e: torrent size גודל - + Progress % Done התקדמות - Status Torrent status (e.g. downloading, seeding, paused) - מעמד + מעמד - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + + + + Seeds i.e. full sources (often untranslated) זורעים - + Peers i.e. partial sources (often untranslated) עמיתים - + Down Speed i.e: Download speed מהירות הורדה - + Up Speed i.e: Upload speed מהירות העלאה - + Ratio Share ratio יחס - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left זמן משוער שנותר - + Category קטגוריה - + Tags תגיות - + Added On Torrent was added to transfer list on 01/01/2010 08:00 התווסף בתאריך - + Completed On Torrent was completed on 01/01/2010 08:00 הושלם בתאריך - + Tracker עוקבן - + Down Limit i.e: Download limit מגבלת הורדה - + Up Limit i.e: Upload limit מגבלת העלאה - + Downloaded Amount of data downloaded (e.g. in MB) ירד - + Uploaded Amount of data uploaded (e.g. in MB) הועלה - + Session Download Amount of data downloaded since program open (e.g. in MB) הורדה בשיח - + Session Upload Amount of data uploaded since program open (e.g. in MB) העלאה בשיח - + Remaining Amount of data left to download (e.g. in MB) נותר - + + Time Active + Time (duration) the torrent is active (not stopped) + משך זמן פעיל + + + + Yes + כן + + + + No + לא + + Time Active Time (duration) the torrent is active (not paused) - משך זמן פעיל + משך זמן פעיל - + Save Path Torrent save path - + נתיב שמירה - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) הושלם - + Ratio Limit Upload share ratio limit מגבלת יחס - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole נראה לאחרונה שלם - + Last Activity Time passed since a chunk was downloaded/uploaded פעילות אחרונה - + Total Size i.e. Size including unwanted data גודל כולל - + Availability The number of distributed copies of the torrent זמינות - + Info Hash v1 i.e: torrent info hash v1 - גיבוב מידע גרסה 2: {1?} + - + Info Hash v2 i.e: torrent info hash v2 - גיבוב מידע גרסה 2: {2?} + - + Reannounce In Indicates the time until next trackers reannounce + הכרז מחדש בעוד + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A לא זמין - + %1 ago e.g.: 1h 20m ago %1 קודם לכן - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (נזרע למשך %2) @@ -11502,334 +12075,350 @@ Please choose a different name and try again. TransferListWidget - + Column visibility נראות עמודות - + Recheck confirmation אישור בדיקה מחדש - + Are you sure you want to recheck the selected torrent(s)? האם אתה בטוח שאתה רוצה לבדוק מחדש את הטורנטים הנבחרים? - + Rename שינוי שם - + New name: שם חדש: - + Choose save path בחירת נתיב שמירה - - Confirm pause - - - - Would you like to pause all torrents? - + האם אתה רוצה לעצור את כל הטורנטים ? - - Confirm resume - - - - Would you like to resume all torrents? - + האם אתה רוצה להמשיך את כל הטורנטים ? - + Unable to preview לא היה ניתן להציג מראש - + The selected torrent "%1" does not contain previewable files הטורנט הנבחר "%1" אינו מכיל קבצים ברי־הצגה מראש - + Resize columns שנה גודל עמודות - + Resize all non-hidden columns to the size of their contents שנה גודל של כל העמודות הבלתי מוסתרות אל הגודל של התכנים שלהן - + Enable automatic torrent management אפשר ניהול טורנטים אוטומטי - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. האם אתה בטוח שאתה רוצה לאפשר ניהול טורנטים אוטומטי עבור הטורנטים הנבחרים? ייתכן שהם ימוקמו מחדש. - Add Tags - הוסף תגיות + הוסף תגיות - + Choose folder to save exported .torrent files בחר תיקייה לשמור קבצי טורנט מיוצאים - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" יצוא קובץ טורנט נכשל. טורנט: "%1". נתיב שמירה: "%2". סיבה: "%3" - + A file with the same name already exists קובץ עם אותו השם קיים כבר - + Export .torrent file error שגיאת יצוא קובץ טורנט - + Remove All Tags הסר את כל התגיות - + Remove all tags from selected torrents? האם להסיר את כל התגיות מהטורנטים הנבחרים? - + Comma-separated tags: תגיות מופרדות ע״י פסיקים: - + Invalid tag תגית בלתי תקפה - + Tag name: '%1' is invalid שם התגית: '%1' אינו תקף - &Resume Resume/start the torrent - &המשך + &המשך - &Pause Pause the torrent - ה&שהה + ה&שהה - Force Resu&me Force Resume/start the torrent - אלץ ה&משכה + אלץ ה&משכה - + Pre&view file... ה&צג מראש קובץ… - + Torrent &options... &אפשרויות טורנט… - + Open destination &folder - פתח &תיקיית יעד + פתיחת &תיקיית היעד - + Move &up i.e. move up in the queue הזז למ&עלה - + Move &down i.e. Move down in the queue הזז למ&טה - + Move to &top i.e. Move to top of the queue הזז ל&ראש - + Move to &bottom i.e. Move to bottom of the queue הזז ל&תחתית - + Set loc&ation... הגדר מי&קום… - + Force rec&heck אלץ &בדיקה חוזרת - + Force r&eannounce אלץ ה&כרזה מחדש - + &Magnet link קישור &מגנט - + Torrent &ID &זהות טורנט - + + &Comment + + + + &Name &שם - + Info &hash v1 &גיבוב מידע גרסה 1 - + Info h&ash v2 ג&יבוב מידע גרסה 2 - + Re&name... שנה &שם… - + Edit trac&kers... ערוך &עוקבנים… - + E&xport .torrent... יי&צא טורנט… - + Categor&y קטגור&יה - + &New... New category... &חדש… - + &Reset Reset category &אפס - + Ta&gs ת&גיות - + &Add... Add / assign multiple tags... &הוסף… - + &Remove All Remove all tags ה&סר הכול - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &תור - + &Copy ה&עתק - + Exported torrent is not necessarily the same as the imported - + Download in sequential order הורד בסדר עוקב - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &הסר - + Download first and last pieces first הורד חתיכה ראשונה ואחרונה תחילה - + Automatic Torrent Management ניהול טורנטים אוטומטי - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category מצב אוטומטי אומר שאפיוני טורנט שונים (למשל, נתיב שמירה) יוחלטו ע״י הקטגוריה המשויכת - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - לא יכול לאלץ הכרזה מחדש אם טורנט מושהה/בתור/מאולץ/נבדק + לא יכול לאלץ הכרזה מחדש אם טורנט מושהה/בתור/מאולץ/נבדק - + Super seeding mode מצב זריעת־על @@ -11844,58 +12433,58 @@ Please choose a different name and try again. Colors - + צבעים Color ID - + זהות צבע Light Mode - + מצב בהיר Dark Mode - + מצב כהה Icons - + איקונים Icon ID - + זהות איקון - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11903,7 +12492,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" כישלון בטעינת ערכת נושא UI מהקובץ: "%1" @@ -11934,34 +12528,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" שילוב העדפות נכשל. WebUI https, קובץ: "%1", שגיאה: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" העדפות שולבו: WebUI https, נתונים יוצאו אל קובץ: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". ערך בלתי תקף נמצא בקובץ התצורה, מחזיר אותו אל ברירת מחדל. מפתח: "%1". ערך בלתי תקף: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - פייתון התגלה, שם בר־ביצוע: '%1', גרסה: %2 - - - Python not detected - פייתון לא זוהה - Found Python executable. Name: "%1". Version: "%2" @@ -11996,27 +12583,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12080,72 +12667,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. סוג בלתי קביל של קובץ, רק קובץ רגיל מותר. - + Symlinks inside alternative UI folder are forbidden. קישורים סמליים בתוך תיקיית ממשק חלופי הם אסורים. - - Using built-in Web UI. - משתמש בממשק משתמש מובנה של אתר. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - משתמש בממשק משתמש מותאם אישית של אתר. מיקום: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - תרגום ממשק משתמש של אתר עבור המקמה נבחרת (%1) נטען בהצלחה. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - לא היה ניתן לטעון תרגום ממשק משתמש של אתר עבור המקמה נבחרת (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" חסר מפריד ':' בכותרת HTTP מותאמת אישית של ממשק רשת: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' ממשק רשת: כותרת מוצא ומוצא מטרה אינם תואמים! IP מקור: '%1'. כותרת מוצא: '%2'. מוצא מטרה: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' ממשק רשת: כותרת אזכור ומוצא מטרה אינם תואמים! IP מקור: '%1'. כותרת אזכור: '%2'. מוצא מטרה: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' ממשק רשת: כותרת מארח בלתי תקפה, פתחה בלתי תואמת. בקש IP מקור: '%1'. פתחת שרת: '%2'. התקבלה כותרת מארח: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' ממשק רשת: כותרת מארח בלתי תקפה. בקש IP מקור: '%1'. התקבלה כותרת מארח: '%2' @@ -12153,143 +12740,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - ממשק רשת: הכנת HTTPS הצליחה + + Credentials are not set + + + + + WebUI: HTTPS setup successful + - - Web UI: HTTPS setup failed, fallback to HTTP - ממשק רשת: תיצור HTTPS נכשל, החזרה אל HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: Now listening on IP: %1, port: %2 - ממשק רשת: מאזין כעת על IP: כתובת %1, פתחה: %2 + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - ממשק רשת: לא היה ניתן לקשר אל IP: כתובת %1, פתחה: %2. סיבה: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + + fs + + + Unknown error + שגיאה בלתי ידועה misc - + B bytes ב - + KiB kibibytes (1024 bytes) ק״ב - + MiB mebibytes (1024 kibibytes) מ״ב - + GiB gibibytes (1024 mibibytes) ג״ב - + TiB tebibytes (1024 gibibytes) ט״ב - + PiB pebibytes (1024 tebibytes) פ״ב - + EiB exbibytes (1024 pebibytes) ה״ב - + /s per second - + %1s e.g: 10 seconds - %1 דקות {1s?} + %1s - + %1m e.g: 10 minutes - %1 דקות + %1 דקות - + %1h %2m e.g: 3 hours 5 minutes - %1 ש' %2 ד' + %1 ש' %2 ד' - + %1d %2h e.g: 2 days 10 hours - %1 י' %2 ש' + %1 י' %2 ש' - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1 ש' %2 ד' - - - %1d %2h - e.g: 2days 10hours - %1 י' %2 ש' - - - %1y %2d - e.g: 2years 10days - %1y %2d + %1y %2d - - + + Unknown Unknown (size) לא ידוע - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent יכבה כעת את המחשב כי כל ההורדות שלמות. - + < 1m < 1 minute פחות מדקה - - %1m - e.g: 10minutes - %1 דקות - diff --git a/src/lang/qbittorrent_hi_IN.ts b/src/lang/qbittorrent_hi_IN.ts index 44117aabcb07..db37816b1bd6 100644 --- a/src/lang/qbittorrent_hi_IN.ts +++ b/src/lang/qbittorrent_hi_IN.ts @@ -14,77 +14,77 @@ बारे में - + Authors निर्माता - + Current maintainer वर्तमान अनुरक्षक - + Greece ग्रीस - - + + Nationality: नागरिकता : - - + + E-mail: ईमेल : - - + + Name: नाम : - + Original author मूल निर्माता - + France फ्रांस - + Special Thanks सादर आभार - + Translators अनुवादक - + License लाइसेंस - + Software Used प्रयुक्त सॉफ्टवेयर - + qBittorrent was built with the following libraries: क्यूबिटटाॅरेंट निम्नलिखित लाइब्रेरी द्वारा निर्मित है : - + Copy to clipboard - + कर्तनपट्टी पर टांकें @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - सर्वाधिकार %1 2006-2023 qBittorrent परियोजना + Copyright %1 2006-2024 The qBittorrent project + सर्वाधिकार %1 2006-2024 qBittorrent परियोजना @@ -166,14 +166,13 @@ यहाँ संचित करें - + Never show again पुनः कभी नहीं दिखायें - Torrent settings - टाॅरेंट सेटिंग्स + टाॅरेंट सेटिंग्स @@ -191,12 +190,12 @@ टाॅरेंट आरंभ करें - + Torrent information टौरेंट सूचना - + Skip hash check हैश जाँच निरस्त @@ -205,6 +204,11 @@ Use another path for incomplete torrent अपूर्ण टॉरेंट हेतु अन्य पथ का प्रयोग करें + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ रोकने की स्थिति - - + + None कोई नहीं - - + + Metadata received मेटाडाटा प्राप्त - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked जंची हुई फाइलें - + Add to top of queue - कतार में सबसे ऊपर रखा + कतार में सबसे ऊपर रखें - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog चेक किए जाने पर, विकल्प संवाद के "डाउनलोड" पृष्ठ पर सेटिंग्स की परवाह किए बिना .torrent फ़ाइल को हटाया नहीं जाएगा - + Content layout: सामग्री का अभिविन्यास : - + Original मूल - + Create subfolder उपफोल्डर बनायें - + Don't create subfolder उपफोल्डर न बनायें - + Info hash v1: जानकारी हैश v1 : - + Size: आकार : - + Comment: टिप्पणी : - + Date: दिनांक : @@ -324,212 +333,157 @@ अंतिम बार प्रयुक्त संचय पथ स्मरण करें - + Do not delete .torrent file .torrent फाइल न मिटाएं - + Download in sequential order क्रमबद्ध डाउनलोड करें - + Download first and last pieces first प्रथम व अंतिम खण्ड सबसे पहले डाउनलोड करें - + Info hash v2: जानकारी हैश v2 : - + Select All सभी चुनें - + Select None कुछ न चुनें - + Save as .torrent file... .torrent फाइल के रूप में संचित करें... - + I/O Error इनपुट/आउटपुट त्रुटि - Invalid torrent - अमान्य टाॅरेंट - - - + Not Available This comment is unavailable अनुपलब्ध - + Not Available This date is unavailable अनुपलब्ध - + Not available अनुपलब्ध - Invalid magnet link - अमान्य मैगनेट लिंक - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - टोरेंट लोड करना विफल : %1। -त्रुटि : %2 - - - This magnet link was not recognized - अज्ञात मैग्नेट लिंक - - - + Magnet link अज्ञात मैग्नेट लिंक - + Retrieving metadata... मेटाडाटा प्राप्ति जारी... - - + + Choose save path संचय पथ चुनें - Torrent is already present - टोरेंट पहले से मौजूद है - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - टोरेंट "%1" अंतरण सूची में पहले से मौजूद है। निजी टोरेंट होने के कारण ट्रैकर विलय नहीं हुआ। - - - Torrent is already queued for processing. - टोरेंट संसाधन हेतु पंक्तिबद्ध है। - - - + No stop condition is set. रुकने की स्थिति निर्धारित नहीं है। - + Torrent will stop after metadata is received. मेटाडेटा प्राप्त होने के बाद टॉरेंट बंद हो जाएगा। - - Torrents that have metadata initially aren't affected. - जिन टोरेंटों में मेटाडेटा होता है, वे शुरू में प्रभावित नहीं होते हैं। - - - + Torrent will stop after files are initially checked. फाइलों की प्रारंभिक जाँच के बाद टॉरेंट रुक जाएगा। - + This will also download metadata if it wasn't there initially. - - + + N/A लागू नहीं - Magnet link is already queued for processing. - मैग्नेट लिंक संसाधन हेतु पंक्तिबद्ध है। - - - + %1 (Free space on disk: %2) %1 (डिस्क पर अप्रयुक्त स्पेस : %2) - + Not available This size is unavailable. अनुपलब्ध - + Torrent file (*%1) टॉरेंट फाइल (*%1) - + Save as torrent file टोरेंट फाइल के रूप में संचित करें - + Couldn't export torrent metadata file '%1'. Reason: %2. टाॅरेंट मेटाडाटा फाइल '%1' का निर्यात नहीं हो सका। कारण : %2 - + Cannot create v2 torrent until its data is fully downloaded. जब तक इसका डेटा पूरी तरह से डाउनलोड नहीं हो जाता तब तक v2 टॉरेंट नहीं बना सकता। - Cannot download '%1': %2 - '%1' डाउनलोड विफल : %2 - - - + Filter files... फाइलें फिल्टर करें... - + Parsing metadata... मेटाडेटा प्राप्यता जारी... - + Metadata retrieval complete मेटाडेटा प्राप्ति पूर्ण - - Failed to load from URL: %1. -Error: %2 - यूआरएल से लोड करना विफल : %1। -त्रुटि : %2 - - - Download Error - डाउनलोड त्रुटि - AddTorrentManager Downloading torrent... Source: "%1" - + टॉरेंट डाउनलोड हो रहा है... स्रोत: "%1" @@ -537,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -632,7 +586,7 @@ Error: %2 Add to top of queue: - कतार में सबसे ऊपर करें: + कतार में सबसे ऊपर रखें: @@ -640,72 +594,77 @@ Error: %2 हैश की जाँच रहने दे - - - Choose save path - संचय पथ चुनें + + Torrent share limits + टाॅरेंट साझा करने की सीमाएं - - - - - - - Default - पूर्व निर्धारित + + + Choose save path + संचय पथ चुनें + + + - Yes - हाँ + Default + पूर्व निर्धारित + Yes + हाँ + + + + + No नहीं - + Manual स्वयं - + Automatic स्वतः - + Original मूल - + Create subfolder उपफोल्डर बनायें - + Don't create subfolder उपफोल्डर न बनायें - + None कोई नहीं - + Metadata received मेटाडाटा प्राप्त - + Files checked जंची हुई फाइलें @@ -713,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB एमबी - + Recheck torrents on completion पूर्ण होने पर टाॅरेंट पुनः जाँचें - - + + ms milliseconds मिलीसे० - + Setting सेटिंग - + Value Value set for this setting मान - + (disabled) (निष्क्रिय) - + (auto) (स्वत:) - + + min minutes मिनट - + All addresses सभी पते - + qBittorrent Section क्यूबिटटोरेंट खंड - - + + Open documentation शास्त्र खोलें - + All IPv4 addresses सभी आईपी4 पते - + All IPv6 addresses सभी आईपी6 पते - + libtorrent Section libtorrent खंड - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal सामान्य - + Below normal सामान्य से कम - + Medium मध्यम - + Low कम - + Very low सबसे कम - - Process memory priority (Windows >= 8 only) - प्रक्रिया मेमोरी प्राथमिकता (केवल विंडोज >=8 हेतु) - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads अतुल्यकालिक इनपुट/आउटपुट प्रक्रिया - + Hashing threads हैश प्रक्रिया - + File pool size फाइल पूल आकार - + Outstanding memory when checking torrents टोरेंट जाँच हेतु सक्रिय मेमोरी - + Disk cache डिस्क कैश - - - - + + + + s seconds से० - + Disk cache expiry interval डिस्क कैश मान्यता समाप्ति अंतराल - + Disk queue size - - + + Enable OS cache OS कैश चालू करें - + Coalesce reads & writes पढ़ना और लिखना सम्मिलित रूप से करें - + Use piece extent affinity - + Send upload piece suggestions खण्डों को अपलोड करने के सुझावों को भेजें - - - - + + + + + 0 (disabled) 0 (निष्क्रिय) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] नोटिफिकेशन काल [0: अनन्त, -1:सिस्टम निर्धारित] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB केबी - + (infinite) (अनन्त) - + (system default) (सिस्टम में पूर्व निर्धारित) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default पूर्व निर्धारित - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) 0 (सिस्टम में पूर्व निर्धारित) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent फाइल के आकार की सीमा - + Type of service (ToS) for connections to peers सहकर्मियों के कनेक्शानों के लिए सेवा का प्रकार (ToS) - + Prefer TCP TCP को वरीयता - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) अन्तर्राष्ट्रीय डोमेन नाम (IDN) समर्थन - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval ताजगी का अन्तराल - + Resolve peer host names सहकर्मी के होस्ट के नाम दिखायें - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus मेनू में चित्र दिखायें - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + सेक + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications नोटिफिकेशन दिखायें - + Display notifications for added torrents जोड़े गए टौरेंटों के लिए नोटिफिकेशन दिखायें - + Download tracker's favicon ट्रैकर का प्रतीक चित्र डाउनलोड करें - + Save path history length इतने सञ्चय पथ याद रखें - + Enable speed graphs गति के ग्राफ दिखायें - + Fixed slots निश्चित स्लॉट - + Upload rate based अपलोड दर पर आधारित - + Upload slots behavior अपलोड स्लॉटों का व्यवहार - + Round-robin राउंड-रॉबिन - + Fastest upload तीव्रतम अपलोड - + Anti-leech जोंकरोधी - + Upload choking algorithm अपलोड अवरुद्ध करने की विधि - + Confirm torrent recheck टाॅरेंट पुनर्जांच की पुष्टि करें - + Confirm removal of all tags सभी उपनामों को हटाने की पुष्टि करें - + Always announce to all trackers in a tier एक परत पर हमेशा सभी ट्रैकर्स को सूचित करें - + Always announce to all tiers हमेशा सभी परतो पर घोषणा करें - + Any interface i.e. Any network interface कोई भी पद्धति - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries सहकर्मी के देशों को दिखायें - + Network interface नेटवर्क पद्धति - + Optional IP address to bind to - + Max concurrent HTTP announces एकसाथ अधिकतम एचटीटीपी उद्घोषणाएं - + Enable embedded tracker सम्मिलित ट्रैकर सक्रिय करें - + Embedded tracker port सम्मिलित ट्रैकर का पोर्ट - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - क्यूबिटटोरेंट %1 आरंभ + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 टॉरेंट नाम : %1 - + Torrent size: %1 टॉरेंट आकार : %1 - + Save path: %1 संचय पथ : %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds टाॅरेंट %1 में डाउनलोड हुआ। - + + Thank you for using qBittorrent. क्यूबिटटोरेंट उपयोग करने हेतु धन्यवाद। - + Torrent: %1, sending mail notification टाॅरेंट : %1, मेल अधिसूचना भेज रहा है - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading टॉरेंट "%1" का डाउनलोड पूर्ण हो गया है - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... टॉरेंटों को लोड किया जा रहा है... - + E&xit बाहर निकलें (&X) - + I/O Error i.e: Input/Output Error I/O त्रुटि - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1449,133 +1526,110 @@ Error: %2 कारण : %2 - Error - त्रुटि - - - Failed to add torrent: %1 - टौरेंट : %1 को जोड़ने में विफल - - - + Torrent added टॉरेंट जोड़ा गया - + '%1' was added. e.g: xxx.avi was added. '%1' को जोड़ा गया। - + Download completed डाउनलोड हो गया - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' डाउनलोड हो चुका है। + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - युआरएल डाउनलोड में त्रुटि + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - URL '%1' पर उपलब्ध फाइल डाउनलोड नहीं हो पायी, कारण : %2। + + Test email + - Torrent file association - टॉरेंट फाइल हेतु प्रोग्राम + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' डाउनलोड हो चुका है। - + Information सूचना - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - वेब UI संचालक का यूजरनेम है : %1 + + Exit + निकास - - The Web UI administrator password has not been changed from the default: %1 - + + Recursive download confirmation + पुनरावर्ती डाउनलोड हेतु पुष्टि - - This is a security risk, please change your password in program preferences. - + + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? + टॉरेंट '%1' में .torrent फाइलें हैं, क्या आप इन्हें भी डाउनलोड करना चाहते हैं? - Application failed to start. - एप्लीकशन शुरू होने में असफल हुई। - - - - Exit - निकास - - - - Recursive download confirmation - पुनरावर्ती डाउनलोड हेतु पुष्टि - - - - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - टॉरेंट '%1' में .torrent फाइलें हैं, क्या आप इन्हें भी डाउनलोड करना चाहते हैं? - - - + Never - + कभी नहीं - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated क्यूबिटटाॅरेंट बन्द करने की प्रक्रिया शुरू हो गयी है - + qBittorrent is shutting down... क्यूबिटटाॅरेंट बन्द हो रहा है... - + Saving torrent progress... टाॅरेंट की प्रगति सञ्चित हो रही है - + qBittorrent is now ready to exit क्यूबिटटाॅरेंट बन्द होने के लिए तैयार है... @@ -1583,7 +1637,7 @@ Error: %2 AsyncFileStorage - + Could not create directory '%1'. फोल्डर '%1' नहीं बन सका| @@ -1591,22 +1645,22 @@ Error: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. आपके आईपी पता को कई असफल प्रमाणीकरण प्रयासों के बाद प्रतिबंधित कर दिया गया है. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1654,12 +1708,12 @@ Error: %2 प्राथमिकता: - + Must Not Contain: शामिल नहीं होना चाहिए : - + Episode Filter: एपिसोड फिल्टर : @@ -1712,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also निर्यात करें... (&E) - + Matches articles based on episode filter. लेखों का एपिसोड फिल्टर के आधार पर मिलान करता है। - + Example: उदाहरण : - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match सीजन एक के 2, 5, 8 से 15, 30 व आगे तक के एपिसोडों से मिलान करेगा - + Episode filter rules: एपिसोड फिल्टर के नियम : - + Season number is a mandatory non-zero value सीजन क्रमांक एक अनिवार्य व अशून्य संख्या है - + Filter must end with semicolon फिल्टर सेमीकोलन पर समाप्त होना चाहिए - + Three range types for episodes are supported: एपिसोडों के लिए तीन तरह की सीमाएं समर्थित हैं : - + Single number: <b>1x25;</b> matches episode 25 of season one एकल संख्या : <b>1x25;</b> सीजन एक के 25वें एपिसोड से मिलान करता है - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one सामान्य सीमा : <b>1x25-40;</b> सीजन एक के 25 से 40 तक एपिसोडों का मिलान करता है - + Episode number is a mandatory positive value सीजन क्रमांक एक अनिवार्य व अशून्य संख्या है - + Rules नियम - + Rules (legacy) नियम (पुराने) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons असीमित चाप : <b>1x25-;</b> सीजन एक के 25 से आगे के एपिसोडों का मिलान करता है - + Last Match: %1 days ago अन्तिम मिलान : %1 दिन पहले - + Last Match: Unknown अन्तिम मिलान : अज्ञात - + New rule name नए नियम का नाम - + Please type the name of the new download rule. नए डाउनलोड नियम का नाम टाइप करें। - - + + Rule name conflict नियम नाम विरुद्ध - - + + A rule with this name already exists, please choose another name. इस नाम का नियम पहले से मौजूद है, कृपया अन्य नाम उपयोग करें। - + Are you sure you want to remove the download rule named '%1'? क्या आप निश्चिंत है कि आप डाउनलोड नियम '%1' को हटाना चाहते हैं? - + Are you sure you want to remove the selected download rules? क्या आप निश्चित ही चयनित डाउनलोड नियम हटाना चाहते हैं? - + Rule deletion confirmation नियम हटाने हेतु पुष्टि - + Invalid action अमान्य चाल - + The list is empty, there is nothing to export. सूची खाली है, निर्यात करने के लिए कुछ भी नहीं है। - + Export RSS rules RSS नियमों को निर्यात करें - + I/O Error I/O त्रुटि - + Failed to create the destination file. Reason: %1 गंतव्य फाइल बनाने में असफल। कारण : %1 - + Import RSS rules RSS नियमों को आयात करें - + Failed to import the selected rules file. Reason: %1 चुनी हुई नियमों की फाइल आयात करने में असफल। कारण : %1 - + Add new rule... नया नियम जोड़ें… - + Delete rule नियम मिटायें - + Rename rule... नियम का नाम बदलें… - + Delete selected rules चयनित नियम हटाएँ - + Clear downloaded episodes... डाउनलोड किये हुए एपिसोडों को हटायें... - + Rule renaming नियम नाम परिवर्तन - + Please type the new rule name नए नियम का नाम टाइप करें - + Clear downloaded episodes डाउनलोड किये हुए एपिसोडों को हटायें - + Are you sure you want to clear the list of downloaded episodes for the selected rule? क्या आप निश्चित ही चयनित नियमों के डाउनलोड हो चुके एपिसोडों को सूची से हटाना चाहते हैं? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 स्थिति %1 : %2 - + Wildcard mode: you can use सर्वमृगया विधा : आप प्रयोग कर सकते हैं - - + + Import error आयात में त्रुटि - + Failed to read the file. %1 फाइल पढ़ने में असफल। %1 - + ? to match any single character केवल एक अक्षर का मिलान करने के लिए ? - + * to match zero or more of any characters शून्य या अधिक अक्षरों का मिलान करनें के लिए * - + Whitespaces count as AND operators (all words, any order) रिक्तता को (किसी भी क्रम में आने वाले सभी शब्दों के बीच) 'तथा' संक्रिया माना जाता है - + | is used as OR operator | का प्रयोग 'अथवा' संक्रिया के लिये किया जाता है - + If word order is important use * instead of whitespace. यदि शब्द क्रम महत्त्वपूर्ण है तो रिक्तता के स्थान पर * का प्रयोग कीजिये। - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) रिक्त %1 वाक्यांश वाली एक अभिव्यंजना (उदाहरण - %2) - + will match all articles. सभी लेखों से मिलान करेगा। - + will exclude all articles. किसी भी लेख से मिलान नहीं करेगा। @@ -2010,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 टॉरेंट की जानकारी ज्ञात पायी: %1 - + Cannot parse torrent info: invalid format टॉरेंट की जानकारी ज्ञात नहीं हो पायी: गलत स्वरुप - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. टॉरेंट मेटाडाटा का '%1' में सञ्चय नहीं हो सका। त्रुटि: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 टाॅरेंट पंक्ति लोड नहीं हो सकी। कारण: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 डाटा को '%1' में सञ्चित नहीं कर सके। त्रुटि : %2 @@ -2064,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. नहीं मिला। - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. डेटाबेस दूषित है। - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2103,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. टॉरेंट मेटाडाटा का सञ्चय नहीं हो सका। त्रुटि : %1 - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2126,554 +2185,616 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON खोलें - - - - - - - - - + + + + + + + + + OFF बंद करें - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" सहकर्मी की आईडी: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 अनाम रीति: %1 - - + + Encryption support: %1 गोपनीयकरण समर्थन : %1 - - + + FORCED बलपूर्वक - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. टॉरेंट वितरण अनुपात की सीमा को पार कर चुका है। - - - + Torrent: "%1". टॉरेंट: "%1". - - - Removed torrent. - टॉरेंट हटा दिया गया है। + टॉरेंट हटा दिया गया है। - - - Removed torrent and deleted its content. - टॉरेंट को हटा दिया व इसके सामान को मिटा दिया। + टॉरेंट को हटा दिया व इसके सामान को मिटा दिया। - - - Torrent paused. - टॉरेंट विरामित। + टॉरेंट विरामित। - - - + Super seeding enabled. महास्रोत सक्रिय कर दिया गया है। - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" टॉरेंट लोड नहीं हो सका। कारण: "%1" - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - - UPnP/NAT-PMP support: OFF + + Saving resume data completed. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + BitTorrent session successfully finished. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" - System network status changed to %1 - e.g: System network status changed to ONLINE - सिस्टम नेटवर्क स्थिति बदल कर %1 किया गया + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + - ONLINE - ऑनलाइन + + UPnP/NAT-PMP support: OFF + - OFFLINE - ऑफलाइन + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 का नेटवर्क विन्यास बदल गया है, सत्र बंधन ताजा किया जा रहा है + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" टॉरेंट से ट्रैकर हटा दिया। टॉरेंट: "%1"। ट्रैकर: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" टॉरेंट से बीज यूआरएल हटा दिया। टॉरेंट: "%1"। यूआरएल: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - टॉरेंट विरामित। टॉरेंट: "%1" + टॉरेंट विरामित। टॉरेंट: "%1" - + Torrent resumed. Torrent: "%1" टॉरेंट प्रारम्भ। टॉरेंट: "%1" - + Torrent download finished. Torrent: "%1" टॉरेंट डाउनलोड पूर्ण। टॉरेंट: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" नया टॉरेंट जोड़ा गया। टॉरेंट: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" टॉरेंट में त्रुटि। टॉरेंट: "%1"। त्रुटि: %2 - - Removed torrent. Torrent: "%1" - टॉरेंट हटाया गया। टॉरेंट: "%1" + टॉरेंट हटाया गया। टॉरेंट: "%1" - Removed torrent and deleted its content. Torrent: "%1" - टॉरेंट को हटा दिया व इसके सामान को मिटा दिया। टॉरेंट: "%1" + टॉरेंट को हटा दिया व इसके सामान को मिटा दिया। टॉरेंट: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP फिल्टर - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + टॉरेंट को हटा दिया व लेकिन इसके सामान को नहीं मिटा पाए। टॉरेंट: "%1"। त्रुटि: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 अक्षम है - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 अक्षम है - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + टोरेंट को स्थानांतरित करने में विफल। टोरेंट: "%1"। स्त्रोत: "%2"। गंतव्य: "%3"। कारण: "%4"। + + + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. BitTorrent::TorrentCreator - + Operation aborted - क्रिया को रोका गया + क्रिया को रोका गया - - + + Create new torrent file failed. Reason: %1. - - BitTorrent::TorrentCreatorThread - - Operation aborted - क्रिया को रोका गया - - BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 सहकर्मी "%1" को टाॅरेंट "%2" में जोड़ने में असफल। कारण : "%3" - + Peer "%1" is added to torrent "%2" सहकर्मी "%1" को टाॅरेंट "%2" में जोड़ा गया - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' पहले प्रथम व अन्तिम खण्ड को डाउनलोड करें : %1, टाॅरेंट : '%2' - + On खोलें - + Off बंद करें - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata मेटाडेटा नहीं मिला - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" फाइल का नाम बदलने में असफल। टाॅरेंट : "%1", फाइल : "%2", कारण : "%3" - + Performance alert: %1. More info: %2 @@ -2694,184 +2815,193 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). %1 को एक मान्य पोर्ट होना चाहिए (1 से 65535)। - + Usage: समुपयोग : - + [options] [(<filename> | <url>)...] [विकल्प] [(<filename>|<url>)...] - + Options: विकल्प : - + Display program version and exit प्रोग्राम संस्करण को प्रदर्शित करें और बाहर निकलें - + Display this help message and exit इस सहायता सन्देश को प्रदर्शित करें और बाहर निकलें - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port पोर्ट - - Change the Web UI port - वेब UI पोर्ट बदलें + + Change the WebUI port + - + Change the torrenting port - + Disable splash screen आरंभ स्क्रीन अक्षम करें - + Run in daemon-mode (background) डेमन-रीति में चलायें (पृष्ठभूमि) - + dir Use appropriate short form or abbreviation of "directory" फोल्डर - + Store configuration files in <dir> - - + + name नाम - + Store configuration files in directories qBittorrent_<name> विन्यास फाइलें इन डायरेक्टरी में संचित करें क्यूबिटटाॅरेंट_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs फाइलें व URL - + Download the torrents passed by the user - + Options when adding new torrents: नये टॉरेंट जोड़ते समय विकल्प : - + path पथ - + Torrent save path टॉरेंट संचय पथ - + + Add torrents as running or stopped + + + Add torrents as started or paused - टॉरेंट को आरम्भित या विरामित की तरह जोड़े + टॉरेंट को आरम्भित या विरामित की तरह जोड़े - + Skip hash check हैश की जाँच रहने दे - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order फाइलों को क्रम में डाउनलोड करें - + Download first and last pieces first प्रथम व अंतिम खण्ड सबसे पहले डाउनलोड करें - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help सहायता @@ -2879,17 +3009,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories श्रेणियाँ - + All सभी - + Uncategorized अश्रेणित @@ -2923,13 +3053,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - टौरेंटो को प्रारम्भ करें + Start torrents + + Stop torrents + + + + Resume torrents + टौरेंटो को प्रारम्भ करें + + Pause torrents - टौरेंटो को विराम दें + टौरेंटो को विराम दें @@ -2940,15 +3078,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... संशोधन करें... - + Reset मूल स्थिति में लाएं + + + System + + CookiesDialog @@ -2989,12 +3132,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3002,7 +3145,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3021,23 +3164,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Also permanently delete the files + फाइलों को भी मिटा दें + + + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? क्या आप निश्चित ही स्थानान्तरण सूची से '%1' को हटाना चाहते हैं? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? क्या आप निश्चित ही इन %1 टाॅरेंटों को स्थानान्तरण सूची से हटाना चाहते हैं? - + Remove हटायें @@ -3050,12 +3197,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also URLओं से डाउनलोड करें - + Add torrent links टौरेंट लिंकों को जोड़ें - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3065,12 +3212,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also डाउनलोड - + No URL entered कोई URL नहीं भरा गया - + Please type at least one URL. कम से कम एक URL भरें। @@ -3230,24 +3377,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + टॉरेंट डाउनलोड हो रहा है... स्रोत: "%1" + - + Torrent is already present - टोरेंट पहले से मौजूद है + टोरेंट पहले से मौजूद है + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3255,38 +3425,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. डाटाबेस फाइल का आकर असंगत है। - + Metadata error: '%1' entry not found. मेटाडाटा त्रुटि : प्रविष्टि '%1' नहीं मिली। - + Metadata error: '%1' entry has invalid type. मेटाडाटा त्रुटि : प्रविष्टि '%1' का प्रकार गलत है। - + Unsupported database version: %1.%2 असंगत डाटाबेस संस्करण : %1.%2 - + Unsupported IP version: %1 असंगत आईपी संस्करण : %1 - + Unsupported record size: %1 असंगत अभिलेख आकार : %1 - + Database corrupted: no data section found. खराब डाटाबेस : डाटा भाग नहीं मिला। @@ -3294,17 +3464,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3345,36 +3515,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... ब्राउज करें... - + Reset मूल स्थिति में लाएं - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + कानूनी सूचना + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + क्यूबिटटॉरेंट एक फाइल आदान-प्रदान करने का प्रोग्राम है। टॉरेंट आरंभ करने के उपरांत सम्मिलित डेटा अपलोड के माध्यम से अन्य व्यक्तियों को उपलब्ध होगा। जो भी सामग्री आप आदान-प्रदान करेंगे उसका उत्तरदायित्व केवल आपका है। + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 को अवरुद्धित किया। कारण : %2 - + %1 was banned 0.0.0.0 was banned %1 को प्रतिबन्धित किया @@ -3383,91 +3581,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 अज्ञात कमाण्ड लाइन शब्द है। - - + + %1 must be the single command line parameter. %1 एकल कमाण्ड लाइन शब्द हो। - - You cannot use %1: qBittorrent is already running for this user. - आप %1 का उपयोग नहीं कर सकते : इस प्रयोक्ता हेतु क्यूबिटटोरेंट पहले से सक्रिय है। - - - + Run application with -h option to read about command line parameters. कमाण्ड लाइन शब्दों के विषय में जानने के लिये एप्लीकेशन को -h विकल्प के साथ चलायें। - + Bad command line गलत कमाण्ड लाइन - + Bad command line: गलत कमाण्ड लाइन : - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - कानूनी सूचना - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - क्यूबिटटॉरेंट एक फाइल आदान-प्रदान करने का प्रोग्राम है। टॉरेंट आरंभ करने के उपरांत सम्मिलित डेटा अपलोड के माध्यम से अन्य व्यक्तियों को उपलब्ध होगा। जो भी सामग्री आप आदान-प्रदान करेंगे उसका उत्तरदायित्व केवल आपका है। - - - - No further notices will be issued. + + You cannot use %1: qBittorrent is already running. - - Press %1 key to accept and continue... - स्वीकार करने और जारी रखने के लिए %1 कुंजी दबाएँ... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - क्यूबिटटॉरेंट एक फाइल आदान-प्रदान करने का प्रोग्राम है। टॉरेंट आरंभ करने के उपरांत सम्मिलित डेटा अपलोड के माध्यम से अन्य व्यक्तियों को उपलब्ध होगा। जो भी सामग्री आप आदान-प्रदान करेंगे उसका उत्तरदायित्व केवल आपका है। - -इस विषय पर इसके बाद कोई और सूचना नहीं दी जायेगी। - - - - Legal notice - कानूनी सूचना + + Another qBittorrent instance is already running. + - - Cancel - रद्द करें + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - मै सहमत हूँ + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3478,619 +3647,704 @@ No further notices will be issued. संपादन (&E) - + &Tools साधन (&T) - + &File फाइल (&F) - + &Help सहायता (&H) - + On Downloads &Done डाउनलोडों के पूरा होने पर (&D) - + &View देंखे (&V) - + &Options... विकल्प… (&O) - &Resume - प्रारम्भ (&R) + प्रारम्भ (&R) - + &Remove हटायें (&R) - + Torrent &Creator टॉरेंट निर्माणक (&C) - - + + Alternative Speed Limits गति की वैकल्पिक सीमायें - + &Top Toolbar शीर्ष उपकरण पट्टी (&T) - + Display Top Toolbar शीर्ष उपकरण पट्टी दिखाएं - + Status &Bar स्थिति पट्टी (&B) - + Filters Sidebar छन्नी साइडबार - + S&peed in Title Bar शीर्षक पट्टी में गति (&P) - + Show Transfer Speed in Title Bar शीर्षक पट्टी में गति दिखायें - + &RSS Reader RSS पाठक (&R) - + Search &Engine खोज इन्जन (&E) - + L&ock qBittorrent क्यूबिटटॉरेंट लॉक करें (&O) - + Do&nate! दान करें! (&N) - + + Sh&utdown System + + + + &Do nothing कुछ न करें (&D) - + Close Window विंडो बंद करें - R&esume All - सभी आरंभ (&E) + सभी आरंभ (&E) - + Manage Cookies... कुकी प्रबन्धित करें... - + Manage stored network cookies संचित नेटवर्क कुकी प्रबंधन करें - + Normal Messages सामान्य सन्देश - + Information Messages सूचना सन्देश - + Warning Messages चेतावनी सन्देश - + Critical Messages जोखिम सन्देश - + &Log लॉग (&L) - - Set Global Speed Limits... - सार्वभौम गति सीमाएं निर्धारित करें... + + Sta&rt + - - Bottom of Queue - पंक्ति में अन्तिम + + Sto&p + - - Move to the bottom of the queue - पंक्ति में अन्तिम पर ले जाएं + + R&esume Session + + + + + Pau&se Session + + + + + Set Global Speed Limits... + सार्वभौम गति सीमाएं निर्धारित करें... + + + + Bottom of Queue + पंक्ति में अन्तिम + + + + Move to the bottom of the queue + पंक्ति में अन्तिम पर ले जाएं - + Top of Queue पंक्ति में प्रथम - + Move to the top of the queue पंक्ति में प्रथम पर ले जाएं - + Move Down Queue पंक्ति में पीछे ले जाएं - + Move down in the queue पंक्ति में पीछे ले जाएं - + Move Up Queue पंक्ति में आगे ले जाएं - + Move up in the queue पंक्ति में आगे ले जाएं - + &Exit qBittorrent क्यूबिटटॉरेंट बंद करें (&E) - + &Suspend System सिस्टम को निलंबित करें (&S) - + &Hibernate System सिस्टम को अतिसुप्त करें (&H) - S&hutdown System - सिस्टम बंद करें (&H) + सिस्टम बंद करें (&H) - + &Statistics आंकड़े (&S) - + Check for Updates अद्यतन के लिए जाँचे - + Check for Program Updates प्रोग्राम अद्यतन के लिए जाँच करें - + &About बारे में (&A) - &Pause - रोकें (&P) + रोकें (&P) - P&ause All - सभी रोकें (&A) + सभी रोकें (&A) - + &Add Torrent File... टॉरेंट फाइल जोड़ें... (&A) - + Open खोलें - + E&xit बाहर निकलें (&X) - + Open URL यूआरएल खोलें - + &Documentation शास्त्र (&D) - + Lock लॉक - - - + + + Show दिखाएँ - + Check for program updates कार्यक्रम अद्यतन के लिए जाँच करें - + Add Torrent &Link... टॉरेंट लिंक जोड़ें... (&L) - + If you like qBittorrent, please donate! यदि क्यूबिटटाॅरेंट आपके कार्यों हेतु उपयोगी हो तो कृपया दान करें! - - + + Execution Log निष्पादन वृतांत - + Clear the password पासवर्ड रद्द करें - + &Set Password पासवर्ड लगायें (&S) - + Preferences वरीयताएं - + &Clear Password पासवर्ड हटायें (&C) - + Transfers अंतरण - - + + qBittorrent is minimized to tray क्यूबिटटॉरेंट ट्रे आइकन रूप में संक्षिप्त - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only केवल चित्र - + Text Only केवल लेख - + Text Alongside Icons चित्र के बगल लेख - + Text Under Icons चित्र के नीचे लेख - + Follow System Style सिस्टम की शैली का पालन करें - - + + UI lock password उपयोक्ता अंतरफलक लॉक हेतु कूटशब्द - - + + Please type the UI lock password: उपयोक्ता अंतरफलक लॉक हेतु कूटशब्द दर्ज करें : - + Are you sure you want to clear the password? क्या आप निश्चित है कि आप पासवर्ड रद्द करना चाहते हैं? - + Use regular expressions रेगुलर एक्सप्रेसन्स का प्रयोग करें - - Search - खोजें + + + Search Engine + खोज इन्जन - - Transfers (%1) - अंतरण (%1) + + Search has failed + खोज असफल हुई - Recursive download confirmation - पुनरावर्ती डाउनलोड हेतु पुष्टि + + Search has finished + खोज समाप्त हुई - Never - कभी नहीँ + + Search + खोजें + + + + Transfers (%1) + अंतरण (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. क्यूबिटटोरेंट अपडेट किया गया व परिवर्तन लागू करने हेतु इसे पुनः आरंभ आवश्यक है। - + qBittorrent is closed to tray क्यूबिटटोरेंट ट्रे आइकन रूप में संक्षिप्त - + Some files are currently transferring. अभी कुछ फाइलों का स्थानान्तरण हो रहा है। - + Are you sure you want to quit qBittorrent? क्या आप निश्चित ही क्यूबिटटॉरेंट बंद करना चाहते हैं? - + &No नहीं (&N) - + &Yes हां (&Y) - + &Always Yes हमेशा हां (&A) - + Options saved. - %1/s - s is a shorthand for seconds - %1/से + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime पायथन रनटाइम अनुपस्थित है - + qBittorrent Update Available क्यूबिटटॉरेंट अपडेट उपलब्ध है - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? खोज इन्जन का उपगोय करने के लिए पायथन आवश्यक है लेकिन ये स्थापित नहीं है। क्या आप इसे अभी स्थापित करना चाहते हैं? - + Python is required to use the search engine but it does not seem to be installed. खोज इन्जन का उपगोय करने के लिए पायथन आवश्यक है लेकिन ये स्थापित नहीं है। - - + + Old Python Runtime पायथन रनटाइम पुराना है - + A new version is available. नया वर्जन उपलब्ध है| - + Do you want to download %1? क्या आप %1 को डाउनलोड करना चाहते हैं? - + Open changelog... परिवर्तनलॉग खोलें... - + No updates available. You are already using the latest version. अद्यतन उपलब्ध नहीं है। आप पहले से ही नवीनतम संस्करण प्रयोग कर रहे हैं। - + &Check for Updates अद्यतन के लिए जाँचे (&C) - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. आपका पायथन संस्करण (%1) पुराना है। खोज इन्जन के लिए सबसे नए संस्करण पर उन्नत करें। न्यूनतम आवश्यक: %2। - + + Paused + विरामित + + + Checking for Updates... अद्यतन के लिए जाँचा चल रही है... - + Already checking for program updates in the background कार्यक्रम अद्यतन की जाँच पहले से ही पृष्टभूमि में चल रही है - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error डाउनलोड त्रुटि - Python setup could not be downloaded, reason: %1. Please install it manually. - पायथन का सेटअप डाउनलोड नहीं हो सका, कारण : %1। + पायथन का सेटअप डाउनलोड नहीं हो सका, कारण : %1। इसे आप स्वयं स्थापित करें। - - + + Invalid password अमान्य कूटशब्द - + Filter torrents... टाॅरेंटों को छानें... - + Filter by: से छानें: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - टॉरेंट '%1' में .torrent फाइलें हैं, क्या आप इन्हें भी डाउनलोड करना चाहते हैं? - - - + The password is invalid यह कूटशब्द अमान्य है - + DL speed: %1 e.g: Download speed: 10 KiB/s ↓ गति : %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s ↑ गति : %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [↓ : %1, ↑ : %2] क्यूबिटटाॅरेंट %3 - - - + Hide अदृश्य करें - + Exiting qBittorrent क्यूबिटटाॅरेंट बंद हो रहा है - + Open Torrent Files टाॅरेंट फाइल खोलें - + Torrent Files टाॅरेंट फाइलें @@ -4151,133 +4405,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O त्रुटि: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) दूरस्थ मेजबाननाम नहीं मिला.(अमान्य मेजबाननाम) - + The operation was canceled क्रिया को रद्द कर दिया गया था - + The remote server closed the connection prematurely, before the entire reply was received and processed दूरस्थ सर्वर पूरा उत्तर प्राप्त और संसाधित करने के पहले कनेक्शन बंद कर दिया था - + The connection to the remote server timed out दूरस्थ सर्वर से कनेक्शन टाइम आउट हो गया - + SSL/TLS handshake failed SSL/TLS हैंडशेक असफल रहा - + The remote server refused the connection दूरस्थ सर्वर कनेक्शन से इनकार कर दिया - + The connection to the proxy server was refused प्रॉक्सी सर्वर के लिए कनेक्शन से इनकार कर दिया गया था - + The proxy server closed the connection prematurely प्रॉक्सी सर्वर समय से पहले कनेक्शन बंद कर दिया - + The proxy host name was not found प्रॉक्सी मेजबान नाम नहीं मिला - + The connection to the proxy timed out or the proxy did not reply in time to the request sent प्रॉक्सी के लिए कनेक्शन का समय समाप्त हो गया या प्रॉक्सी भेजे हुए अनुरोध का समय में जवाब नहीं दिया - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) दूरस्थ सामग्री के लिए प्रवेश निषेध किया गया था (401) - + The operation requested on the remote content is not permitted दूरस्थ सामग्री पर अनुरोध की गई कार्रवाई की अनुमति नहीं है - + The remote content was not found at the server (404) दूरस्थ सामग्री सर्वर पर नहीं मिला था (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted दूरस्थ सर्वर को सामग्री की सेवा के लिए प्रमाणीकरण की आवश्यकता है, लेकिन प्रदान की गई साख को स्वीकार नहीं किया गया - + The Network Access API cannot honor the request because the protocol is not known नेटवर्क प्रवेश API अनुरोध का सम्मान नहीं कर सकता क्योंकि प्रोटोकॉल ज्ञात नहीं है - + The requested operation is invalid for this protocol अनुरोध की गई कार्यवाही इस प्रोटोकॉल के लिए अमान्य है - + An unknown network-related error was detected एक अनजान नेटवर्क से संबंधित त्रुटि का पता चला था - + An unknown proxy-related error was detected एक अज्ञात प्रॉक्सी से संबंधित त्रुटि का पता चला था - + An unknown error related to the remote content was detected दूरस्थ सामग्री से संबंधित एक अज्ञात त्रुटि का पता चला था - + A breakdown in protocol was detected प्रोटोकॉल टूटने का पता चला था - + Unknown error अज्ञात त्रुटि @@ -4285,7 +4539,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5657,476 +5916,528 @@ Please install it manually. बिटटॉरेंट - + RSS RSS - Web UI - वेब UI + वेब UI - + Advanced उन्नत - + Customize UI Theme... - + UI रंगरूप स्वनिर्मित करें... - + Transfer List स्थानांतरण सूची - + Confirm when deleting torrents टाॅरेंट मिटाते समय पुष्टि करें - Shows a confirmation dialog upon pausing/resuming all the torrents - सभी टाॅरेंटों को विरामित या प्रारम्भ करने पर पुष्टि करने का डायलॉग दिखाता है + सभी टाॅरेंटों को विरामित या प्रारम्भ करने पर पुष्टि करने का डायलॉग दिखाता है - Confirm "Pause/Resume all" actions - "सभी को विरामित/प्रारम्भ करने" की क्रिया की पुष्टि करें + "सभी को विरामित/प्रारम्भ करने" की क्रिया की पुष्टि करें - + Use alternating row colors In table elements, every other row will have a grey background. पंक्तियों में एकांतरित रंगों का प्रयोग करें - + Hide zero and infinity values शुन्य व अनन्त को छुपायें - + Always हमेशा - Paused torrents only - केवल विरामित टॉरेंट + केवल विरामित टॉरेंट - + Action on double-click डबल-क्लिक पर क्रिया - + Downloading torrents: डाउनलोड हो रहे टाॅरेंट: - - Start / Stop Torrent - टाॅरेंट चालू / बन्द करें + टाॅरेंट चालू / बन्द करें - - + + Open destination folder गन्तव्य फोल्डर खोलें - - + + No action कोई कार्यवाही नहीं - + Completed torrents: पूर्ण हो चुके टाॅरेंट: - + Auto hide zero status filters - + Desktop डेस्कट‍ॉप - + Start qBittorrent on Windows start up विंडोज के साथ ही क्यूबिटटॉरेंट आरंभ करें - + Show splash screen on start up शुरू करते समय आरंभ स्क्रीन दिखायें - + Confirmation on exit when torrents are active टाॅरेंटों के सक्रिय होने पर बाहर निकलने की पुष्टि करें - + Confirmation on auto-exit when downloads finish डाउनलोडों के समाप्त होने पर स्वतः बाहर निकलने की पुष्टि - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB केबी - + Torrent content layout: टॉरेंट सामग्री का अभिविन्यास: - + Original मूल - + Create subfolder उपफोल्डर बनायें - + Don't create subfolder उपफोल्डर न बनायें - + The torrent will be added to the top of the download queue टॉरेंट को डाउनलोड पंक्ति में सबसे ऊपर जोड़ा जाएगा - + Add to top of queue The torrent will be added to the top of the download queue कतार में सबसे ऊपर रखा - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... जोड़ें... - + Options.. विकल्प... - + Remove हटायें - + Email notification &upon download completion डाउनलोड पूरा होने पर ईमेल अधिसूचना (&U) - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: सहकर्मी कनेक्शन की पद्धति : - + Any कोई भी - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode मिश्रित रीति - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering IP फिल्टर करना (&L) - + Schedule &the use of alternative rate limits दर की वैकल्पिक सीमाओं के लागू होने का समय निर्धारित करें (&T) - + From: From start time से : - + To: To end time को : - + Find peers on the DHT network DHT नेटवर्क पर सहकर्मी ढूँढे - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption गोपनीयता का प्रयोग करें - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">अधिक जानकारी</a>) - + Maximum active checking torrents: - + &Torrent Queueing टॉरेंट पंक्तिबद्धीकरण (&T) - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - इन ट्रैकरों को नए डाउनलोडों में स्वतः जोड़ दें (&U): + इन ट्रैकरों को नए डाउनलोडों में स्वतः जोड़ दें (&U): - + RSS Reader RSS पाठक - + Enable fetching RSS feeds RSS स्रोतों को लाना सक्षम करें - + Feeds refresh interval: स्रोतों को ताजा करने का अन्तराल : - + + Same host request delay: + + + + Maximum number of articles per feed: प्रति स्रोत अधिकतम लेखों की संख्या : - - - + + + min minutes न्यूनतम - + Seeding Limits स्रोत की सीमाएं - Pause torrent - टॉरेंट को विराम दें + टॉरेंट को विराम दें - + Remove torrent टॉरेंट को हटायें - + Remove torrent and its files टॉरेंट और उसकी फाइलों को हटायें - + Enable super seeding for torrent इसे महास्रोत बनायें - + When ratio reaches जब अनुपात तक पहुँचे - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS टाॅरेंट स्वतः डाउनलोडर - + Enable auto downloading of RSS torrents RSS टाॅरेंटों को स्वतः डाउनलोड करना सक्षम करें - + Edit auto downloading rules... स्वतः डाउनलोड के नियमों को बदलें... - + RSS Smart Episode Filter बुद्धिमान RSS एपिसोड फिल्टर - + Download REPACK/PROPER episodes REPACK/PROPER एपिसोडों को डाउनलोड करें - + Filters: छन्नियां: - + Web User Interface (Remote control) वेब यूजर इन्टरफेस (रिमोट कण्ट्रोल) - + IP address: IP पता : - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: लगातार विफलताओं के बाद क्लाइंट को प्रतिबंधित करें : - + Never कभी नहीं - + ban for: के लिए प्रतिबन्ध : - + Session timeout: सत्र का समयान्त : - + Disabled अक्षम - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: सर्वर डोमेन : - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6135,441 +6446,494 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP HTTP के स्थान पर HTTPS प्रयोग करें (&U) - + Bypass authentication for clients on localhost लोकलहोस्ट पर मौजूद प्रयोक्ताओं का प्रमाणीकरण रहने दें - + Bypass authentication for clients in whitelisted IP subnets आईपी सबनेटों की सज्जनसूची में आने वाले प्रयोक्ताओं का प्रमाणीकरण रहने दें - + IP subnet whitelist... आईपी सबनेट सज्जनसूची... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name मेरा परिवर्तनशील डोमेन नाम अद्यतित करें (&T) - + Minimize qBittorrent to notification area क्यूबिटटोरेंट को अधिसूचना क्षेत्र में संक्षिप्त करें - + + Search + + + + + WebUI + + + + Interface पद्धति - + Language: भाषा : - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: ट्रे चित्र की शैली : - - + + Normal सामान्य - + File association फाइल संगठन - + Use qBittorrent for .torrent files .torrent फाइल हेतु क्यूबिटटोरेंट उपयोग करें - + Use qBittorrent for magnet links मैग्नेट लिंक हेतु क्यूबिटटोरेंट उपयोग करें - + Check for program updates प्रोग्राम अद्यतन के लिए जाँच करें - + Power Management ऊर्जा प्रबन्धन - + + &Log Files + + + + Save path: संचय पथ : - + Backup the log file after: के बाद लॉग फाइल का बैकअप लें : - + Delete backup logs older than: इससे पुरानी बैकअप लॉग फाइलों को मिटा दें : - + + Show external IP in status bar + + + + When adding a torrent टॉरेंट जोड़ते समय - + Bring torrent dialog to the front टॉरेंट डायलॉग को सम्मुख लायें - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled .torrent फाइलें भी मिटा दें जिनका जोड़ना रद्द हो गया - + Also when addition is cancelled जोड़ना रद्द करने पर भी - + Warning! Data loss possible! चेतावनी! डाटा खो सकता है! - + Saving Management सञ्चय प्रबन्धन - + Default Torrent Management Mode: पूर्व निर्धारित टॉरेंट प्रबंधन मोड : - + Manual स्वयं - + Automatic स्वतः - + When Torrent Category changed: जब टॉरेंट की श्रेणी बदल जाए : - + Relocate torrent टाॅरेंट स्थानांतरित करें - + Switch torrent to Manual Mode टाॅरेंट को स्वयं प्रबन्धित करें - - + + Relocate affected torrents प्रभावित टाॅरेंटों को स्थानांतरित करें - - + + Switch affected torrents to Manual Mode प्रभावित टाॅरेंटों को स्वयं प्रबन्धित करें - + Use Subcategories उपश्रेणियाँ प्रयोग करें - + Default Save Path: पूर्व निर्धारित संचय पथ : - + Copy .torrent files to: .torrent फाइलों की नकल यहां करें : - + Show &qBittorrent in notification area क्यूबिटटोरेंट को अधिसूचना क्षेत्र में दिखाएँ (&Q) - &Log file - लॉग फाइल (&L) + लॉग फाइल (&L) - + Display &torrent content and some options टाॅरेंट सामग्री व कुछ विकल्प दिखायें (&T) - + De&lete .torrent files afterwards बाद में .torrent फाइलें मिटा दें (&L) - + Copy .torrent files for finished downloads to: पूरे हो चुके डाउनलोडों की .torrent फाइलों को यहां प्रतिलिपि करें : - + Pre-allocate disk space for all files सभी फाइलों के लिए डिस्क में स्थान पूर्व-निर्धारित करें - + Use custom UI Theme - + बाहरी रंगरूप का उपयोग करें - + UI Theme file: UI थीम फाइल : - + Changing Interface settings requires application restart इन्टरफेस की सेटिंग बदलने पर एप्लीकेशन को पुनः आरम्भ करना आवश्यक है - + Shows a confirmation dialog upon torrent deletion टाॅरेंट को मिटाने पर पुष्टि करने का डायलॉग दिखाता है - - + + Preview file, otherwise open destination folder - - Show torrent options - टाॅरेंट के विकल्प दिखायें + टाॅरेंट के विकल्प दिखायें - + Shows a confirmation dialog when exiting with active torrents जब टाॅरेंट सक्रिय हों तब बाहर जाने पर पुष्टि करने का डायलॉग दिखाता है - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window क्यूबिटटोरेंट को अधिसूचना क्षेत्र में बंद करें - + Monochrome (for dark theme) एकवर्णीय (गहरी थीम के लिए) - + Monochrome (for light theme) एकवर्णीय (हल्की थीम के लिए) - + Inhibit system sleep when torrents are downloading जब टाॅरेंट डाउनलोड हो रहे हों तब सिस्टम को सुप्त न होने दें - + Inhibit system sleep when torrents are seeding जब टाॅरेंट स्रोत बने हुए हों तब सिस्टम को सुप्त न होने दें - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days दिन - + months Delete backup logs older than 10 months माह - + years Delete backup logs older than 10 years वर्ष - + Log performance warnings - The torrent will be added to download list in a paused state - टौरेंट को सूची में विरामित अवस्था में जोड़ा जाएगा + टौरेंट को सूची में विरामित अवस्था में जोड़ा जाएगा - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state डाउनलोड स्वतः आरम्भ न करें - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files अपूर्ण फाइलों में .!qB एक्सटेंशन जोड़े - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: टाॅरेंट रोकने की स्थिति: - - + + None कोई नहीं - - + + Metadata received मेटाडाटा प्राप्त - - + + Files checked जंची हुई फाइलें - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: अपूर्ण टॉरेंट हेतु अन्य पथ का प्रयोग करें: - + Automatically add torrents from: यहाँ से टौरेंट स्वतः जोड़े : - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6586,842 +6950,907 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver प्राप्तकर्ता - + To: To receiver को : - + SMTP server: SMTP सर्वर : - + Sender प्रेषक - + From: From sender से : - + This server requires a secure connection (SSL) यह सर्वर एक सुरक्षित संपर्क (SSL) की अपेक्षा करता है - - + + Authentication प्रमाणीकरण - - - - + + + + Username: यूजरनेम : - - - - + + + + Password: कूटशब्द : - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP TCP व μTP - + Listening Port श्रवण पोर्ट - + Port used for incoming connections: आवक कनेक्शनों के लिए पत्तन : - + Set to 0 to let your system pick an unused port - + Random यादृच्छिक - + Use UPnP / NAT-PMP port forwarding from my router मेरे रूटर से UPnP / NAT-PMP पोर्ट अग्रेषण का प्रयोग करो - + Connections Limits कनेक्शन सीमायें - + Maximum number of connections per torrent: प्रति टॉरेंट अधिकतम संपर्कों की संख्या : - + Global maximum number of connections: सार्वभौम अधिकतम संपर्कों की संख्या : - + Maximum number of upload slots per torrent: प्रति टौरेंट अधिकतम अपलोड स्थानों की संख्या : - + Global maximum number of upload slots: अधिकतम सार्वभौम अपलोड स्थानों की संख्या : - + Proxy Server प्रॉक्सी सर्वर - + Type: प्रकार : - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: पोषद : - - - + + + Port: पत्तन : - + Otherwise, the proxy server is only used for tracker connections अन्यथा, प्रॉक्सी सर्वर को केवल ट्रैकर संपर्कों के लिये प्रयुक्त किया जाता है - + Use proxy for peer connections सहकर्मी कनेक्शनों के लिए प्रॉक्सी का उपयोग करें - + A&uthentication प्रमाणीकरण (&U) - + Info: The password is saved unencrypted सूचना : कूटशब्द को कूटबद्ध किये बिना संचित किया गया है - + Filter path (.dat, .p2p, .p2b): फिल्टर पथ (.dat, .p2p, .p2b) : - + Reload the filter फिल्टर पुनः लोड करें - + Manually banned IP addresses... आपके द्वारा प्रतिबन्धित किए गए IP पते... - + Apply to trackers ट्रैकरों पर लागू करें - + Global Rate Limits सीमाओं की सार्वभौम दर - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s केबी/से० - - + + Upload: अपलोड : - - + + Download: डाउनलोड : - + Alternative Rate Limits दर की वैकल्पिक सीमायें - + Start time आरम्भ का समय - + End time अन्त समय - + When: कब : - + Every day प्रत्येक दिन - + Weekdays कार्यदिवसों - + Weekends अवकाशदिवस - + Rate Limits Settings दर सीमा की सैटिंग - + Apply rate limit to peers on LAN LAN के सहकर्मियों पर दर सीमा लागू करें - + Apply rate limit to transport overhead अतिरिक्त के यातायात की दर की सीमा तय करें - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol µTP पद्धति पर दर सीमा लागू करें - + Privacy निजता - + Enable DHT (decentralized network) to find more peers ज्यादा सहकर्मियों को ढूँढने के लिए DHT (विकेन्द्रित नेटवर्क) सक्षम करें - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) संगत बिटटोरेंट साधन (µTorrent, Vuze, ...) से पीयर अंतरण - + Enable Peer Exchange (PeX) to find more peers ज्यादा सहकर्मियों को ढूँढने के लिए सहकर्मी आदान-प्रदान (PeX) सक्षम करें - + Look for peers on your local network अपने स्थानीय नेटवर्क पर सहकर्मीं ढूँढे - + Enable Local Peer Discovery to find more peers ज्यादा सहकर्मियों को ढूँढने के लिए स्थानीय सहकर्मी खोज सक्षम करें - + Encryption mode: गोपनीयकरण रीति : - + Require encryption गोपनीयकरण आवश्यक है - + Disable encryption गोपनीयकरण अक्षम करें - + Enable when using a proxy or a VPN connection प्रॉक्सी या VPN प्रयोग करते समय सक्षम करें - + Enable anonymous mode अनाम रीति सक्षम करें - + Maximum active downloads: अधिकतम सक्रिय डाउनलोड : - + Maximum active uploads: अधिकतम सक्रिय अपलोड : - + Maximum active torrents: अधिकतम सक्रिय टॉरेंट : - + Do not count slow torrents in these limits इन सीमाओं में धीमे टौरेंटों को न गिनें - + Upload rate threshold: अपलोड गति की दहलीज : - + Download rate threshold: डाउनलोड गति की दहलीज : - - - + + + + sec seconds सेक - + Torrent inactivity timer: - + then फिर - + Use UPnP / NAT-PMP to forward the port from my router मेरे रूटर से पोर्ट अग्रेषित करने के लिये UPnP / NAT-PMP का प्रयोग करो - + Certificate: प्रमाणपत्र : - + Key: कुँजी : - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>प्रमाणपत्रों के बारे में जानकारी</a> - + Change current password पासवर्ड बदलें - Use alternative Web UI - किसी अन्य वेब UI का प्रयोग करें + किसी अन्य वेब UI का प्रयोग करें - + Files location: फाइलों का स्थान : - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security सुरक्षा - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support रिवर्स प्रॉक्सी को सक्षम करें - + Trusted proxies list: विश्वसनीय प्रॉक्सियों की सूची : - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: सेवा : - + Register पंजीकृत हों - + Domain name: डोमेन का नाम : - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! ये विकल्प चालू करने के बाद आप अपनी .torrent फाइलों को <strong>स्थायी रूप से</strong> खो देंगे! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog यदि आप दूसरा विकल्प सक्रिय करते हैं (&ldquo;या जब जोड़ना रद्द किया जाता है&rdquo;) तो &ldquo;टॉरेंट जोड़ें&rdquo; डायलॉग में &ldquo;<strong>रद्द करें</strong>&rdquo; दबाने पर भी .torrent फाइल <strong>मिटा दी जायेगी</strong> - + Select qBittorrent UI Theme file क्यूबिटटोरेंट उपयोक्ता अंतरफलक थीम फाइल चयन - + Choose Alternative UI files location अन्य UI की फाइलों के स्थान को चुनें - + Supported parameters (case sensitive): समर्थित पैरामीटर (लघु-गुरू संवेदनशील) : - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. रुकने की स्थिति निर्धारित नहीं है। - + Torrent will stop after metadata is received. मेटाडेटा प्राप्त होने के बाद टोरेंट बंद हो जाएगा। - - Torrents that have metadata initially aren't affected. - जिन टोरेंटों में मेटाडेटा होता है, वे शुरू में प्रभावित नहीं होते हैं। - - - + Torrent will stop after files are initially checked. फाइलों की प्रारंभिक जाँच के बाद टॉरेंट रुक जाएगा। - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: टॉरेंट नाम - + %L: Category %L: श्रेणी - + %F: Content path (same as root path for multifile torrent) %F: विषय पथ (बहु-फाइल टॉरेंट के मूल पथ से समान) - + %R: Root path (first torrent subdirectory path) %R: मूल पथ (प्रथम टॉरेंट उपनिर्देशिका पथ) - + %D: Save path %D: संचय पथ - + %C: Number of files %C: फाइलों की संख्या - + %Z: Torrent size (bytes) %Z: टौरेंट आकर (बाइट्स) - + %T: Current tracker %T: निवर्तमान ट्रैकर - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") सुझाव : लेखन के बीच में आने वाली रिक्तता (उदाहरण - "%N") से होने वाली परेशानी से बचने के लिये मापदण्डों को उद्धरण चिह्नों से घेरिये - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (कोई नहीं) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate प्रमाणपत्र - + Select certificate प्रमाणपत्र चुनें - + Private key निजी कुँजी - + Select private key निजी कुँजी चुनें - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor निरीक्षण के लिए फोल्डर चुनें - + Adding entry failed प्रविष्टि जोड़ना में असफल - - Location Error - स्थान त्रुटि + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - अन्य UI की फाइलों का स्थान रिक्त नहीं छोड़ा जा सकता। + + Location Error + स्थान त्रुटि - - + + Choose export directory निर्यात के लिए फोल्डर चुनें - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well ये विकल्प सक्रिय होने पर क्यूबिटटोरेंट द्वारा डाउनलोड पंक्ति में सफलतापूर्वक जोड़ी गई (पहला विकल्प) या नहीं जोड़ी गई (दूसरा विकल्प) .torrent फाइलों को <strong>हटा</strong> दिया जाएगा। यह &ldquo;टोरेंट जोड़ें&rdquo; मेन्यू कार्य के <strong>साथ</strong> ही <strong>संलग्न फाइल प्रकार</strong> द्वारा प्रयुक्त फाइलों पर भी लागू होगा - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) %I: जानकारी हैश v1 (या '-' यदि अनुपलब्ध हो तो) - + %J: Info hash v2 (or '-' if unavailable) %J: जानकारी हैश v2 (या '-' यदि अनुपलब्ध हो तो) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory संचय फोल्डर चुनें - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file IP फिल्टर की फाइल चुनें - + All supported filters सभी समर्थित छन्नियां - + + The alternative WebUI files location cannot be blank. + + + + Parsing error समझने में त्रुटि - + Failed to parse the provided IP filter दिया गया IP फिल्टर समझ से बाहर - + Successfully refreshed ताजा कर दिया - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number दिए गए IP फिल्टर को समझ लिया : %1 नियमों को लागू किया। - + Preferences वरीयताएं - + Time Error समय त्रुटि - + The start time and the end time can't be the same. शुरुआत और अन्त का समय एक जैसे नहीं हो सकते। - - + + Length Error लम्बाई त्रुटि - - - The Web UI username must be at least 3 characters long. - वेब UI का पासवर्ड कम से कम 3 अक्षर का होना चाहिए। - - - - The Web UI password must be at least 6 characters long. - वेब UI पासवर्ड कम से कम 6 अक्षर का होना चाहिए. - PeerInfo - + Unknown अज्ञात - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT DHT का सहकर्मी - + Peer from PEX PEX का सहकर्मी - + Peer from LSD LSD का सहकर्मी - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7577,7 +8006,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not सहकर्मी "%1" को आपके द्वारा प्रतिबन्धित किया गया - + N/A लागू नहीं @@ -7600,7 +8029,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not जोड़ने के लिए सहकर्मियों की सूची (प्रति पंक्ति एक) : - + Format: IPv4:port / [IPv6]:port प्रारूप : IPv4:पोर्ट / [IPv6]:पोर्ट @@ -7641,27 +8070,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: इस खण्ड में फाइलें : - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information ज्यादा जानकारी देखने के लिए मेटाडाटा उपलब्ध होने की प्रतीक्षा करें - + Hold Shift key for detailed information सविस्तार जानकारी देखने के लिए शिफ्ट कुँजी दबाए रखें @@ -7674,58 +8103,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not खोज प्लगिन - + Installed search plugins: स्थापित खोज प्लगिनें : - + Name नाम - + Version संस्करण - + Url URL - - + + Enabled सक्षम - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. चेतावनी : इनमें से किसी भी खोज इन्जन से टाॅरेंटों को डाउनलोड करते समय अपने देश के कॉपीराइट नियमों का पालन करें। - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one नए की स्थापना करें - + Check for updates अद्यतन के लिए जाँचे - + Close बंद करें - + Uninstall अस्थापना करें @@ -7845,17 +8274,17 @@ Those plugins were disabled. प्लगिन स्रोत - + Search plugin source: प्लगिन स्रोत खोजें: - + Local file स्थानीय फाइल - + Web link वेब लिंक @@ -7896,47 +8325,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: टाॅरेंट %1 की निम्नलिखित फाइलों का पूर्वावलोकन किया जा सकता है, इनमें से किसी एक का चयन करें : - + Preview पूर्वदर्शन - + Name नाम - + Size आकार - + Progress प्रगति - + Preview impossible पूर्वावलोकन असंभव - + Sorry, we can't preview this file: "%1". क्षमा कीजिए, हम फाइल का पूर्वावलोकन नहीं करा सकते हैं : "%1"। - + Resize columns स्तंभों का आकार बदलें - + Resize all non-hidden columns to the size of their contents सभी गैर-ओझल स्तंभों का आकार उनकी अंतर्वस्तु के अनुसार बदलें @@ -7949,27 +8378,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8010,12 +8439,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: डाउनलोड : - + Availability: उपलब्धता : @@ -8030,53 +8459,53 @@ Those plugins were disabled. अंतरण - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) सक्रिय काल : - + ETA: शेष समय : - + Uploaded: अपलोड : - + Seeds: स्रोत : - + Download Speed: डाउनलोड गति : - + Upload Speed: अपलोड गति : - + Peers: सहकर्मीं : - + Download Limit: डाउनलोड सीमा : - + Upload Limit: अपलोड सीमा : - + Wasted: व्यर्थ : @@ -8086,193 +8515,249 @@ Those plugins were disabled. संपर्क : - + Information सूचना - + Info Hash v1: जानकारी हैश v1: - + Info Hash v2: जानकारी हैश v2: - + Comment: टिप्पणी : - + Select All सभी चुनें - + Select None कुछ न चुनें - + Share Ratio: अंश अनुपात : - + Reannounce In: के बाद पुनर्घोषणा: - + Last Seen Complete: अन्तिम बार पूर्ण देखा गया : - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: कुल आकार : - + Pieces: टुकड़े : - + Created By: निर्माता : - + Added On: जोड़ने का समय : - + Completed On: पूर्ण होने का समय : - + Created On: निर्माण का समय : - + + Private: + + + + Save Path: संचय पथ : - + Never कभी नहीं - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (हैं %3) - - + + %1 (%2 this session) %1 (%2 इस सत्र में) - - + + + N/A लागू नहीं - + + Yes + हाँ + + + + No + नहीं + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (स्रोत काल %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 अधिकतम) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 कुल) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 औसत) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - नया वेब स्रोत + नया वेब स्रोत - Remove Web seed - वेब स्रोत को हटाएँ + वेब स्रोत को हटाएँ - Copy Web seed URL - वेब स्रोत यूआरएल कॉपी करें + वेब स्रोत यूआरएल कॉपी करें - Edit Web seed URL - वेब स्रोत का यूआरएल संपादित करें + वेब स्रोत का यूआरएल संपादित करें - + Filter files... फाइलें फिल्टर करें... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - नया युआरएल स्रोत + नया युआरएल स्रोत - New URL seed: - नया URL स्रोत : + नया URL स्रोत : - - This URL seed is already in the list. - यह युआरएल स्रोत पहले से ही सूची में है। + यह युआरएल स्रोत पहले से ही सूची में है। - + Web seed editing वेब स्रोत का संपादन - + Web seed URL: वेब स्रोत URL : @@ -8291,22 +8776,22 @@ Those plugins were disabled. RSS स्वतः डाउनलोडर की जानकारी %1 में सञ्चित नहीं की जा सकी। त्रुटि : %2 - + Invalid data format अमान्य डाटा प्रारूप - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 RSS स्वतः डाउनलोडर के नियम लोड नहीं हो सके। कारण : %1 @@ -8314,22 +8799,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 RSS स्रोत '%1' को डाउनलोड करने में असफल। कारण : %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS स्रोत '%1' का अद्यतन हो गया। %2 नए लेख जोड़े। - + Failed to parse RSS feed at '%1'. Reason: %2 RSS स्रोत '%1' समझ से बाहर है। कारण : %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. '%1' के RSS स्रोत को डाउनलोड कर लिया है। इसे समझने की शुरुआत कर दी है। @@ -8365,12 +8850,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. RSS स्रोत अमान्य है। - + %1 (line: %2, column: %3, offset: %4). %1 (पंक्ति : %2, स्तंभ : %3, ऑफसेट : %4)। @@ -8378,99 +8863,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. दिए गए URL का RSS पहले से ही है : %1 - + Feed doesn't exist: %1. - + Cannot move root folder. मूल फोल्डर को स्थानान्तरित नहीं कर सकते। - - + + Item doesn't exist: %1. वस्तु अस्तित्व में नहीं है : %1। - + Couldn't move folder into itself. - + Cannot delete root folder. मूल फोल्डर को डिलीट नहीं कर सकते। - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. RSS वस्तु का पथ गलत है : %1 - + RSS item with given path already exists: %1. प्रदत्त पथ वाली RSS वस्तु पहले से मौजूद है : %1 - + Parent folder doesn't exist: %1. @@ -8494,8 +8979,8 @@ Those plugins were disabled. - - + + Mark items read वस्तुओं को पढ़ा हुआ चिन्हित करें @@ -8520,132 +9005,132 @@ Those plugins were disabled. टाॅरेंट : (डाउनलोड करने के लिए दो बार क्लिक करें) - - + + Delete मिटाएं - + Rename... नाम बदलें... - + Rename नाम बदलें - - + + Update अद्यतन - + New subscription... नयी सदस्यता... - - + + Update all feeds सभी स्रोत अद्यतित करें - + Download torrent डाउनलोड टौरेंट - + Open news URL समाचार यूआरएल खोलें - + Copy feed URL स्रोत URL की प्रतिलिपि बनायें - + New folder... नया फोल्डर - + Edit feed URL... - + Edit feed URL - + Please choose a folder name फोल्डर के नाम का चुनाव करें - + Folder name: फोल्डर का नाम : - + New folder नया फोल्डर - - + + Please type a RSS feed URL RSS स्रोत का URL भरें - - + + Feed URL: स्रोत URL: - + Deletion confirmation मिटाने की पुष्टि - + Are you sure you want to delete the selected RSS feeds? क्या आप निश्चित ही चुनें हुए RSS स्रोतों को मिटाना चाहते हैं? - + Please choose a new name for this RSS feed इस RSS स्रोत के लिए नया नाम चुनें - + New feed name: नया स्रोत नाम: - + Rename failed नाम बदलनें में असफल - + Date: दिनांक: - + Feed: - + Author: रचनाकार: @@ -8653,38 +9138,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. खोज इन्जन का उपगोय करने के लिए पायथन की स्थापना करें। - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. सभी प्लगिन पहले से ही आधुनिक हैं - + Updating %1 plugins %1 प्लगिनों को अद्यतित कर रहे हैं - + Updating plugin %1 प्लगिन %1 को अद्यतित कर रहे हैं - + Failed to check for plugin updates: %1 प्लगिन अद्यतन जाँचने में असफल: %1 @@ -8759,132 +9244,146 @@ Those plugins were disabled. आकार: - + Name i.e: file name नाम - + Size i.e: file size आकार - + Seeders i.e: Number of full sources स्रोतस्वामी - + Leechers i.e: Number of partial sources जोंके - Search engine - खोज इन्जन + खोज इन्जन - + Filter search results... खोज परिणाम फिल्टर करें... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results परिणाम (<i>%2</i> में से <i>%1</i> प्रदर्शित): - + Torrent names only केवल टौरेंटों के नाम - + Everywhere हर जगह - + Use regular expressions रेगुलर एक्सप्रेसन्स का प्रयोग करें - + Open download window - + Download डाउनलोड - + Open description page विवरण पृष्ठ खोलें - + Copy प्रतिलिपि बनाए - + Name नाम - + Download link डाउनलोड लिंक - + Description page URL विवरण पृष्ठ का यूआरएल - + Searching... खोज रहे हैं... - + Search has finished खोज समाप्त हुई - + Search aborted खोज रोक दी गयी - + An error occurred during search... खोज के दौरान एक त्रुटि घटी... - + Search returned no results खोज का कोई परिणाम नहीं मिला - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility स्तंभ दृश्यता - + Resize columns स्तंभों का आकार बदलें - + Resize all non-hidden columns to the size of their contents सभी गैर-ओझल स्तंभों का आकार उनकी अंतर्वस्तु के अनुसार बदलें @@ -8892,104 +9391,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. खोज इन्जन प्लगिन फाइल का प्रारूप अज्ञात है। - + Plugin already at version %1, which is greater than %2 प्लगिन पहले से ही संस्करण %1 पर है, जो %2 से आधुनिक है - + A more recent version of this plugin is already installed. इस प्लगिन का ज्यादा नया संस्करण पहले ही से स्थापित है। - + Plugin %1 is not supported. प्लगिन %1 समर्थित नहीं है। - - + + Plugin is not supported. प्लगिन समर्थित नहीं है। - + Plugin %1 has been successfully updated. प्लगिन %1 अद्यतित हो गयी है। - + All categories सभी श्रेणियाँ - + Movies फिल्में - + TV shows टीवी शो - + Music गानें - + Games गेम्स - + Anime एनीमे - + Software सॉफ्टवेयर - + Pictures फोटो - + Books किताबें - + Update server is temporarily unavailable. %1 अद्यतन सर्वर अभी काम नहीं कर रहा है। %1 - - + + Failed to download the plugin file. %1 प्लगिन फाइल डाउनलोड करने में असफल। %1 - + Plugin "%1" is outdated, updating to version %2 प्लगिन %1 पुरानी है, संस्करण %2 पर अद्यतित कर रहे हैं - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8999,114 +9498,153 @@ Those plugins were disabled. - - - - Search खोंजे - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. कोई भी खोज करने की प्लगिन स्थापित नहीं है। स्थापित करने के लिए नीचे की ओर दायीं तरफ "प्लगिनें खोजें..." बटन पर क्लिक करें। - + Search plugins... प्लगिनें खोजें... - + A phrase to search for. खोजने के लिए शब्द: - + Spaces in a search term may be protected by double quotes. डबल कोट द्वारा खोजपद में मौजूद रिक्तताओं की रक्षा की जा सकती है। - + Example: Search phrase example उदाहरण : - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;राम श्याम&quot;</b> : <b>राम श्याम</b> खोजें - + All plugins सभी प्लगिनें - + Only enabled केवल सक्षम - + + + Invalid data format. + अमान्य डाटा प्रारूप। + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>राम श्याम</b> : <b>राम</b> या <b>श्याम</b> खोजें - + + Refresh + + + + Close tab टैब बंद करें - + Close all tabs सभी टैबें बंद करें - + Select... चुनें... - - - + + Search Engine खोज इन्जन - + + Please install Python to use the Search Engine. खोज इन्जन का उपगोय करने के लिए पायथन की स्थापना करें। - + Empty search pattern रिक्त खोज पैटर्न - + Please type a search pattern first खोज पैटर्न भरें - + + Stop रोकें - Search has finished - खोज समाप्त हुई + खोज समाप्त हुई - Search has failed - खोज असफल हुई + खोज असफल हुई + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9219,34 +9757,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: अपलोड: - - - + + + - - - + + + KiB/s केबी/से० - - + + Download: डाउनलोड: - + Alternative speed limits गति की वैकल्पिक सीमायें @@ -9438,32 +9976,32 @@ Click the "Search plugins..." button at the bottom right of the window पंक्ति में औसत समय: - + Connected peers: जुड़े हुए सहकर्मीं: - + All-time share ratio: अब तक का वितरण अनुपात: - + All-time download: अब तक डाउनलोड: - + Session waste: सत्र में बर्बादी: - + All-time upload: अब तक अपलोड: - + Total buffer size: कुल बफर आकार: @@ -9478,12 +10016,12 @@ Click the "Search plugins..." button at the bottom right of the window पंक्तिबद्ध I/O कार्य: - + Write cache overload: लेखन द्रुतिका अतिभार: - + Read cache overload: पाठ्य द्रुतिका अतिभार: @@ -9502,51 +10040,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: संपर्क स्थिति: - - + + No direct connections. This may indicate network configuration problems. कोई प्रत्यक्ष कनेक्शन नहीं। नेटवर्क विन्यास समस्या संभव है। - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 नोड - + qBittorrent needs to be restarted! क्यूबिटटोरेंट पुनः आरंभ करना आवश्यक है! - - - + + + Connection Status: संपर्क स्थिति: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. ऑफलाइन। सदारणतः ऐसा तब होता है जब क्यूबिटटाॅरेंट आवक कनेक्शनों के लिए चयनित पोर्टों पर डाटा प्राप्त नहीं कर पाता है। - + Online ऑनलाइन - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits गति की वैकल्पिक सीमायें उपयोग करने हेतु क्लिक करें - + Click to switch to regular speed limits सामान्य गति सीमाएँ उपयोग करने हेतु क्लिक करें @@ -9575,14 +10129,22 @@ Click the "Search plugins..." button at the bottom right of the window पूर्ण (0) - Resumed (0) - प्रारम्भित(0) + प्रारम्भित(0) - Paused (0) - विरामित (0) + विरामित (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9644,10 +10206,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) पूर्ण (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - विरामित (%1) + विरामित (%1) @@ -9655,14 +10236,12 @@ Click the "Search plugins..." button at the bottom right of the window स्थानान्तरित हो रहे (%1) - Resume torrents - टौरेंटो को प्रारम्भ करें + टौरेंटो को प्रारम्भ करें - Pause torrents - टौरेंटो को विराम दें + टौरेंटो को विराम दें @@ -9670,9 +10249,8 @@ Click the "Search plugins..." button at the bottom right of the window टौरेंटो को हटायें - Resumed (%1) - प्रारम्भित(%1) + प्रारम्भित(%1) @@ -9713,17 +10291,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags उपनाम - + All सभी - + Untagged उपनाम रहित @@ -9731,52 +10309,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... उपनाम जोड़ें... - + Remove tag उपनाम हटायें - + Remove unused tags अनुपयोगी श्रेणियां हटायें - Resume torrents - टौरेंटो को प्रारम्भ करें + टौरेंटो को प्रारम्भ करें - Pause torrents - टौरेंटो को विराम दें + टौरेंटो को विराम दें - + Remove torrents टौरेंटो को हटायें - New Tag - नया चिह्न + नया चिह्न + + + + Start torrents + - + + Stop torrents + + + + Tag: उपनाम: - + + Add tag + + + + Invalid tag name अमान्य उपनाम - + Tag name '%1' is invalid उपनाम '%1' अमान्य है @@ -9914,32 +10504,32 @@ Please choose a different name and try again. TorrentContentModel - + Name नाम - + Progress प्रगति - + Download Priority डाउनलोड प्राथमिकता - + Remaining बचा हुआ - + Availability उपलब्धता - + Total Size कुल आकर @@ -9984,102 +10574,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error नाम बदलनें में त्रुटि - + Renaming पुनः नामकरण - + New name: नया नाम: - + Column visibility स्तंभ दृश्यता - + Resize columns स्तंभों का आकार बदलें - + Resize all non-hidden columns to the size of their contents सभी गैर-ओझल स्तंभों का आकार उनकी अंतर्वस्तु के अनुसार बदलें - + Open खोलें - + Open containing folder धारक फोल्डर को खोलें - + Rename... नाम बदलें... - + Priority प्राथमिकता - - + + Do not download डाउनलोड न करें - + Normal सामान्य - + High उच्च - + Maximum सर्वोच्च - + By shown file order फ़ाइल अनुक्रम में दिखाया गया है - + Normal priority सामान्य वरीयता - + High priority उच्च वरीयता - + Maximum priority सर्वोच्च वरीयता - + Priority by shown file order दृश्य फाइल क्रमानुसार प्राथमिकता + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10104,13 +10712,13 @@ Please choose a different name and try again. - + Select file फाइल चुनें - + Select folder फोल्डर चुनें @@ -10135,58 +10743,10 @@ Please choose a different name and try again. टुकड़े का आकर: - + Auto स्वतः - - 16 KiB - 16 केबी - - - 32 KiB - 32 केबी - - - 64 KiB - 64 केबी - - - 128 KiB - 128 केबी - - - 256 KiB - 256 केबी - - - 512 KiB - 512 केबी - - - 1 MiB - 1 एमबी - - - 2 MiB - 2 एमबी - - - 4 MiB - 4 एमबी - - - 8 MiB - 8 एमबी - - - 16 MiB - 16 एमबी - - - 32 MiB - 32 एमबी - Calculate number of pieces: @@ -10233,92 +10793,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. आप ट्रैकर्स के समूह को एक खाली पंक्ति के साथ अलग कर सकतें हैं. - + Web seed URLs: वेब स्रोत URL : - + Tracker URLs: ट्रैकर URL : - + Comments: टिप्पणियाँ : - + Source: स्रोत : - + Progress: प्रगति : - + Create Torrent टाॅरेंट बनायें - - + + Torrent creation failed टाॅरेंट बनाने में असफलता - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent नया टौरेंट संचित करने के स्थान को चुनें - + Torrent Files (*.torrent) टाॅरेंट फाइलें (*.torrent) - - Reason: %1 - कारण : %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - कारण : बनाया गया टाॅरेंट अमान्य है। इसे डाउनलोड सूची में नहीं जोड़ा जायेगा। - - - + Torrent creator टाॅरेंट निर्माणक - + Torrent created: टाॅरेंट निर्मित : @@ -10326,32 +10877,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10359,27 +10910,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 चुम्बकीय फाइल खोलने में असफल : %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10387,14 +10938,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - अमान्य मेटाडेटा + अमान्य मेटाडेटा @@ -10425,127 +10970,199 @@ Please choose a different name and try again. अपूर्ण टॉरेंट हेतु अन्य पथ का प्रयोग करें - + Category: श्रेणी : - - Torrent speed limits - टाॅरेंट गति सीमा + + Torrent Share Limits + - + Torrent speed limits + टाॅरेंट गति सीमा + + + Download: डाउनलोड : - - + + - - + + Torrent Speed Limits + + + + + KiB/s केबी/से० - + These will not exceed the global limits ये सार्वभौम सीमा को पार नहीं करेगा - + Upload: अपलोड : - Torrent share limits - टाॅरेंट साझा करने की सीमाएं + टाॅरेंट साझा करने की सीमाएं - Use global share limit - सीमाओं की सार्वभौम दर का प्रयोग करें + सीमाओं की सार्वभौम दर का प्रयोग करें - Set no share limit - साझा करने की कोई सीमा निर्धारित न करें + साझा करने की कोई सीमा निर्धारित न करें - Set share limit to - साझा करने की सीमा हो + साझा करने की सीमा हो - ratio - अनुपात + अनुपात - total minutes - + कुल मिनट - - inactive minutes - - - - + Disable DHT for this torrent इस टाॅरेंट के लिए DHT अक्षम करें - + Download in sequential order क्रमबद्ध डाउनलोड करें - + Disable PeX for this torrent - + Download first and last pieces first प्रथम व अंतिम खण्ड सबसे पहले डाउनलोड करें - + Disable LSD for this torrent इस टाॅरेंट के लिए LSD अक्षम करें - + Currently used categories - - + + Choose save path संचय पथ चुनें - + Not applicable to private torrents प्राइवेट टाॅरेंटों पर लागू नहीं है - No share limit method selected - असीमित वितरण अनुपात का चुना गया है + असीमित वितरण अनुपात का चुना गया है - Please select a limit method first - पहले सीमा की विधि का चयन करें + पहले सीमा की विधि का चयन करें + + + + TorrentShareLimitsWidget + + + + + + Default + पूर्व निर्धारित + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + न्यूनतम + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + टॉरेंट को हटायें + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + इसे महास्रोत बनायें + + + + Ratio: + @@ -10556,32 +11173,36 @@ Please choose a different name and try again. टाॅरेंट के उपनाम - New Tag - नया चिह्न + नया चिह्न + Add tag + + + + Tag: उपनाम: - + Invalid tag name अमान्य उपनाम - + Tag name '%1' is invalid. उपनाम का नाम '%1' अमान्य है। - + Tag exists उपनाम अस्तित्व में है - + Tag name already exists. उपनाम पहले से ही अस्तित्व में है। @@ -10589,115 +11210,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. त्रुटि : '%1' एक मान्य टाॅरेंट फाइल नहीं है। - + Priority must be an integer प्राथमिकता एक पूर्ण संख्या होनी चाहिए - + Priority is not valid यह प्राथमिकता अमान्य है - + Torrent's metadata has not yet downloaded टाॅरेंट का मेटाडाटा अभी डाउनलोड नहीं हुआ है - + File IDs must be integers - + File ID is not valid फाइल आईडी अमान्य है - - - - + + + + Torrent queueing must be enabled टौरेंट पंक्तिबद्धीकरण अवश्य ही सक्षम हो - - + + Save path cannot be empty सञ्चय पथ रिक्त नहीं हो सकता - - + + Cannot create target directory - - + + Category cannot be empty श्रेणी रिक्त नहीं हो सकती - + Unable to create category श्रेणी बनाने में अक्षम - + Unable to edit category श्रेणी संशोधित करने में अक्षम - + Unable to export torrent file. Error: %1 - + Cannot make save path सञ्चय पथ नहीं बन सका - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory फोल्डर पर नहीं लिख सके - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name टाॅरेंट का नाम गलत है - - + + Incorrect category name श्रेणी का नाम गलत है @@ -10723,253 +11359,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - काम कर रहा है + काम कर रहा है - + Disabled - अक्षम + अक्षम - + Disabled for this torrent - इस टाॅरेंट के लिए अक्षम है + इस टाॅरेंट के लिए अक्षम है - + This torrent is private - यह टाॅरेंट निजी है + यह टाॅरेंट निजी है - + N/A - लागू नहीं + लागू नहीं - + Updating... - अद्यतन कर रहा है... + अद्यतन कर रहा है... - + Not working - काम नहीं कर रहा है + काम नहीं कर रहा - + Tracker error - + Unreachable - + Not contacted yet - अभी तक संपर्क नहीं किया + अभी तक संपर्क नहीं किया - - Invalid status! + + Invalid state! + + + + + URL/Announce Endpoint - - URL/Announce endpoint + + BT Protocol - - Tier - परत + + Next Announce + - - Protocol + + Min Announce - - Status - स्थिति + + Tier + परत - Peers - सहकर्मीं + Status + स्थिति - Seeds - स्रोत + Peers + सहकर्मीं - Leeches - जोंके + Seeds + स्रोत - Times Downloaded - + Leeches + जोंके - Message - संदेश - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + संदेश TrackerListWidget - Working - काम कर रहा है - - - Disabled - अक्षम - - - Disabled for this torrent - इस टाॅरेंट के लिए अक्षम है - - - + This torrent is private यह टाॅरेंट निजी है - Updating... - अद्यतन कर रहा है... - - - Not working - काम नहीं कर रहा है - - - Not contacted yet - अभी तक संपर्क नहीं किया - - - N/A - लागू नहीं - - - + Tracker editing ट्रैकर संपादन - + Tracker URL: ट्रैकर URL : - - + + Tracker editing failed ट्रैकर संपादन विफल रहा - + The tracker URL entered is invalid. भरा गया ट्रैकर URL अमान्य है। - + The tracker URL already exists. यह टाॅरेंट URL पहले से ही है। - + Edit tracker URL... ट्रैकर URL संशोधित करें... - + Remove tracker ट्रैकर हटाएँ - + Copy tracker URL ट्रैकर URL की प्रतिलिपि बनायें - + Force reannounce to selected trackers चयनित ट्रैकर्स पर बलपूर्वक घोषणा करें - + Force reannounce to all trackers सभी ट्रैकर्स पर बलपूर्वक घोषणा करें - Tier - परत - - - URL - URL - - - Status - स्थिति - - - Seeds - स्रोत - - - + Resize columns स्तंभों का आकार बदलें - + Resize all non-hidden columns to the size of their contents सभी गैर-ओझल स्तंभों का आकार उनकी अंतर्वस्तु के अनुसार बदलें - Peers - सहकर्मीं - - - + Add trackers... - Leeches - जोंके - - - Message - संदेश - - - + Column visibility स्तंभ दृश्यता @@ -10987,37 +11561,37 @@ Please choose a different name and try again. जोड़ने के लिए ट्रैकर्स की सूची (प्रति पंक्ति एक) : - + µTorrent compatible list URL: µTorrent संगत URL सूची: - + Download trackers list - + Add जोड़ें - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11025,83 +11599,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - सभी (0) - - - Trackerless (0) - ट्रैकर रहित (0) - - - Error (0) - त्रुटि (0) - - - Warning (0) - चेतावनी (0) - - - Error (%1) - त्रुटि (%1) - - - + Warning (%1) चेतावनी (%1) - + Trackerless (%1) ट्रैकर रहित (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - ट्रैकर हटाएँ + ट्रैकर हटाएँ + + + + Start torrents + + + + + Stop torrents + - Resume torrents - टौरेंटो को प्रारम्भ करें + टौरेंटो को प्रारम्भ करें - Pause torrents - टौरेंटो को विराम दें + टौरेंटो को विराम दें - + Remove torrents टौरेंटो को हटायें - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter सभी (%1) @@ -11110,7 +11671,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11203,9 +11764,8 @@ Please choose a different name and try again. प्रारम्भ करनें की जानकारी को जांचा जा रहा है - Paused - विरामित + विरामित @@ -11230,220 +11790,262 @@ Please choose a different name and try again. त्रुटिपूर्ण - + Name i.e: torrent name नाम - + Size i.e: torrent size आकार - + Progress % Done प्रगति - Status Torrent status (e.g. downloading, seeding, paused) - स्थिति + स्थिति - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + स्थिति + + + Seeds i.e. full sources (often untranslated) स्रोत - + Peers i.e. partial sources (often untranslated) सहकर्मीं - + Down Speed i.e: Download speed डाउनलोड गति - + Up Speed i.e: Upload speed अपलोड गति - + Ratio Share ratio अनुपात - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left बचा हुआ समय - + Category श्रेणी - + Tags उपनाम - + Added On Torrent was added to transfer list on 01/01/2010 08:00 जोड़ने का समय - + Completed On Torrent was completed on 01/01/2010 08:00 पूर्ण होने का समय - + Tracker ट्रैकर - + Down Limit i.e: Download limit डाउनलोड सीमा - + Up Limit i.e: Upload limit अपलोड सीमा - + Downloaded Amount of data downloaded (e.g. in MB) डाउनलोड हो चुका - + Uploaded Amount of data uploaded (e.g. in MB) अपलोड - + Session Download Amount of data downloaded since program open (e.g. in MB) सत्र में डाउनलोड - + Session Upload Amount of data uploaded since program open (e.g. in MB) सत्र में अपलोड - + Remaining Amount of data left to download (e.g. in MB) बचा हुआ - + + Time Active + Time (duration) the torrent is active (not stopped) + सक्रिय काल + + + + Yes + हाँ + + + + No + नहीं + + Time Active Time (duration) the torrent is active (not paused) - सक्रिय काल + सक्रिय काल - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) पूर्ण - + Ratio Limit Upload share ratio limit अनुपात की सीमा - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole अन्तिम बार पूर्ण देखा गया - + Last Activity Time passed since a chunk was downloaded/uploaded अन्तिम गतिविधि - + Total Size i.e. Size including unwanted data कुल आकर - + Availability The number of distributed copies of the torrent उपलब्धता - + Info Hash v1 i.e: torrent info hash v1 - जानकारी हैश v2: {1?} + - + Info Hash v2 i.e: torrent info hash v2 - जानकारी हैश v2: {2?} + - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A लागू नहीं - + %1 ago e.g.: 1h 20m ago %1 पहले - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (स्रोत काल %2) @@ -11452,334 +12054,346 @@ Please choose a different name and try again. TransferListWidget - + Column visibility स्तंभ दृश्यता - + Recheck confirmation पुन: जाँच हेतु पु‍ष्टि - + Are you sure you want to recheck the selected torrent(s)? क्या आप निश्चित ही चयनित टोरेंट(ओं) को पुनः जाँचना चाहते हैं? - + Rename नाम बदलें - + New name: नया नाम : - + Choose save path संचय पथ चुनें - Confirm pause - विरामित करने की पुष्टि करें - - - - Would you like to pause all torrents? - + विरामित करने की पुष्टि करें - Confirm resume - प्रारम्भ करने की पुष्टि करें + प्रारम्भ करने की पुष्टि करें - - Would you like to resume all torrents? - - - - + Unable to preview पूर्वावलोकन करने में अक्षम - + The selected torrent "%1" does not contain previewable files - + Resize columns स्तंभों का आकार बदलें - + Resize all non-hidden columns to the size of their contents सभी गैर-ओझल स्तंभों का आकार उनकी अंतर्वस्तु के अनुसार बदलें - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - उपनाम जोड़ें + उपनाम जोड़ें - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags सभी उपनाम हटायें - + Remove all tags from selected torrents? चुनें हुए टाॅरेंटों से सभी उपनाम हटायें? - + Comma-separated tags: अल्पविराम द्वारा विभाजित उपनाम : - + Invalid tag अमान्य उपनाम - + Tag name: '%1' is invalid उपनाम : '%1' अमान्य है - &Resume Resume/start the torrent - प्रारम्भ (&R) + प्रारम्भ (&R) - &Pause Pause the torrent - रोकें (&P) + रोकें (&P) - Force Resu&me Force Resume/start the torrent - बलपूर्वक प्रारम्भ करें (&M) + बलपूर्वक प्रारम्भ करें (&M) - + Pre&view file... फाइल पूर्वावलोकन... (&V) - + Torrent &options... टाॅरेंट विकल्प... (&O) - + Open destination &folder गन्तव्य फोल्डर खोलें (&F) - + Move &up i.e. move up in the queue ऊपर करें (&U) - + Move &down i.e. Move down in the queue नीचे लाएँ (&D) - + Move to &top i.e. Move to top of the queue शीर्ष पर ले जाएँ (&T) - + Move to &bottom i.e. Move to bottom of the queue अंत में ले जाएँ (&B) - + Set loc&ation... स्थान चुनें... (&A) - + Force rec&heck बलपूर्वक पुनर्जांच करें (&H) - + Force r&eannounce बलपूर्वक पुनर्घोषणा (&E) - + &Magnet link चुम्बकीय लिंक (&M) - + Torrent &ID टाॅरेंट ID (&I) - + + &Comment + + + + &Name नाम (&N) - + Info &hash v1 जानकारी हैश v1 (&H) - + Info h&ash v2 जानकारी हैश v2 (&A) - + Re&name... नाम बदलें... (&N) - + Edit trac&kers... ट्रैकर संशोधित करें... (&K) - + E&xport .torrent... .torrent निर्यात करें (&X) - + Categor&y श्रेणी (&Y) - + &New... New category... नवीन... (&N) - + &Reset Reset category मूल स्थिति में लाएं (&R) - + Ta&gs उपनाम (&G) - + &Add... Add / assign multiple tags... जोड़ें... (&A) - + &Remove All Remove all tags सभी हटायें (&R) - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue पंक्ति (&Q) - + &Copy प्रतिलिपि बनाए (&C) - + Exported torrent is not necessarily the same as the imported - + Download in sequential order क्रमबद्ध डाउनलोड करें - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent हटायें (&R) - + Download first and last pieces first प्रथम व अंतिम खण्ड सबसे पहले डाउनलोड करें - + Automatic Torrent Management स्वतः टाॅरेंट प्रबन्धन - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode महास्रोत रीति @@ -11824,36 +12438,41 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. चित्र फाइल नहीं हटा पाये। फाइल: %1। - + Couldn't copy icon file. Source: %1. Destination: %2. - + आइकॉन फाइल की प्रतिलिपि नहीं बना पाये। स्त्रोत: %1। गंतव्य: %2। UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11884,34 +12503,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - पायथन का पता चला है। एग्जिक्युटेबल का नाम : '%1', संस्करण : '%2' - - - Python not detected - पायथन की उपस्तिथि का पता नहीं लगा - Found Python executable. Name: "%1". Version: "%2" @@ -11946,27 +12558,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12030,72 +12642,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. अन्य UI के फोल्डर में सिमलिंक वर्जित हैं। - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12103,143 +12715,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + अज्ञात त्रुटि + + misc - + B bytes बा० - + KiB kibibytes (1024 bytes) केबी - + MiB mebibytes (1024 kibibytes) एमबी - + GiB gibibytes (1024 mibibytes) जीबी - + TiB tebibytes (1024 gibibytes) टीबी - + PiB pebibytes (1024 tebibytes) पीबी - + EiB exbibytes (1024 pebibytes) ईबी - + /s per second /से० - + %1s e.g: 10 seconds - %1मिनट {1s?} + - + %1m e.g: 10 minutes - %1मिनट + %1मिनट - + %1h %2m e.g: 3 hours 5 minutes - %1घण्टे %2मिनट + %1घण्टे %2मिनट - + %1d %2h e.g: 2 days 10 hours - %1दिन %2घण्टे + %1दिन %2घण्टे - + %1y %2d e.g: 2 years 10 days - %1 वर्ष %2 दिन + %1 वर्ष %2 दिन - %1h %2m - e.g: 3hours 5minutes - %1घण्टे %2मिनट - - - %1d %2h - e.g: 2days 10hours - %1दिन %2घण्टे - - - %1y %2d - e.g: 2years 10days - %1 वर्ष %2 दिन - - - - + + Unknown Unknown (size) अज्ञात - + qBittorrent will shutdown the computer now because all downloads are complete. सभी डाउनलोड पूर्ण होने के कारण अब क्यूबिटटाॅरेंट द्वारा कंप्यूटर बंद किया जाएगा। - + < 1m < 1 minute < 1 मिनट - - %1m - e.g: 10minutes - %1मिनट - diff --git a/src/lang/qbittorrent_hr.ts b/src/lang/qbittorrent_hr.ts index 6ab70ab96d5c..2697eb6105e5 100644 --- a/src/lang/qbittorrent_hr.ts +++ b/src/lang/qbittorrent_hr.ts @@ -14,77 +14,77 @@ O programu - + Authors Autori - + Current maintainer Trenutni održavatelj - + Greece Grčka - - + + Nationality: Nacionalnost: - - + + E-mail: E-pošta: - - + + Name: Ime: - + Original author Izvorni autor - + France Francuska - + Special Thanks Posebne zahvale - + Translators Prevoditelji - + License Licenca - + Software Used Korišteni softver - + qBittorrent was built with the following libraries: qBittorrent je napravljen pomoću sljedećh biblioteka: - + Copy to clipboard - + Kopiraj u međuspremnik @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Autorsko pravo %1 2006-2023 qBittorrent projekt + Copyright %1 2006-2024 The qBittorrent project + Autorsko pravo %1 2006-2024 qBittorrent projekt @@ -166,14 +166,13 @@ Spremi na - + Never show again Ne pokazuj više - Torrent settings - Postavke torrenta + Postavke torrenta @@ -191,12 +190,12 @@ Započni torrent - + Torrent information Torrent informacije - + Skip hash check Preskoči hash provjeru @@ -205,6 +204,11 @@ Use another path for incomplete torrent Koristite drugu putanju za nepotpuni torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Uvjet zaustavljanja: - - + + None Nijedno - - + + Metadata received Metapodaci primljeni - - + + Torrents that have metadata initially will be added as stopped. + Torrenti koji inicijalno imaju metapodatke bit će dodani kao zaustavljeni. + + + + Files checked Provjerene datoteke - + Add to top of queue Dodaj na vrh reda čekanja - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Kada je označeno, .torrent datoteka neće biti obrisana bez obzira na postavke na stranici "Preuzimanje" dijaloškog okvira Opcija - + Content layout: Izgled sadržaja: - + Original Original - + Create subfolder Stvori podmapu - + Don't create subfolder Ne stvaraj podmapu - + Info hash v1: Info hash v1: - + Size: Veličina: - + Comment: Komentar: - + Date: Datum: @@ -324,244 +333,182 @@ Zapamti posljednju korištenu putanju spremanja - + Do not delete .torrent file Nemoj izbrisati .torrent datoteku - + Download in sequential order Preuzmi u sekvencijskom poretku - + Download first and last pieces first Preuzmi prve i zadnje dijelove prije ostalih. - + Info hash v2: Info hash v2: - + Select All Odaberi sve - + Select None Obrnuti odabir - + Save as .torrent file... Spremi kao .torrent datoteku... - + I/O Error I/O greška - Invalid torrent - Neispravan torrent - - - + Not Available This comment is unavailable Nije dostupno - + Not Available This date is unavailable Nije dostupno - + Not available Nije dostupan - Invalid magnet link - Neispravna magnet poveznica - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Neuspješno učitavanje torrenta: %1. Pogreška: %2 - - - This magnet link was not recognized - Ova magnet poveznica nije prepoznata - - - + Magnet link Magnet poveznica - + Retrieving metadata... Preuzimaju se metapodaci... - - + + Choose save path Izaberite putanju spremanja - Torrent is already present - Torrent je već prisutan - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent datoteka '%1' je već u popisu za preuzimanje. Trackeri nisu spojeni jer je ovo privatni torrent. - - - Torrent is already queued for processing. - Torrent je već poslan na obradu. - - - + No stop condition is set. Nije postavljen uvjet zaustavljanja. - + Torrent will stop after metadata is received. Torrent će se zaustaviti nakon što primi metapodatke. - - Torrents that have metadata initially aren't affected. - Torenti koji inicijalno imaju metapodatke nisu pogođeni. - - - + Torrent will stop after files are initially checked. Torrent će se zaustaviti nakon početne provjere datoteka. - + This will also download metadata if it wasn't there initially. Ovo će također preuzeti metapodatke ako nisu bili tu u početku. - - + + N/A N/A - Magnet link is already queued for processing. - Magnet poveznica je već u redu čekanja za obradu. - - - + %1 (Free space on disk: %2) %1 (Slobodni prostor na disku: %2) - + Not available This size is unavailable. Nije dostupno - + Torrent file (*%1) Torrent datoteka (*%1) - + Save as torrent file Spremi kao torrent datoteku - + Couldn't export torrent metadata file '%1'. Reason: %2. Nije moguće izvesti datoteku metapodataka torrenta '%1'. Razlog: %2. - + Cannot create v2 torrent until its data is fully downloaded. Ne može se stvoriti v2 torrent dok se njegovi podaci u potpunosti ne preuzmu. - Cannot download '%1': %2 - Nije moguće preuzeti '%1': %2 - - - + Filter files... Filter datoteka... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' je već na popisu prijenosa. Trackeri se ne mogu spojiti jer se radi o privatnom torrentu. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' je već na popisu prijenosa. Želite li spojiti trackere iz novog izvora? - - - + Parsing metadata... Razrješavaju se metapodaci... - + Metadata retrieval complete Preuzimanje metapodataka dovršeno - - Failed to load from URL: %1. -Error: %2 - Učitavanje s URL-a nije uspjelo: %1. -Pogreška: %2 - - - Download Error - Greška preuzimanja - AddTorrentManager Downloading torrent... Source: "%1" - + Preuzimanje torrenta... Izvor: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Dodavanje torrenta nije uspjelo. Izvor: "%1". Razlog: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Otkriven je pokušaj dodavanja duplikata torrenta. Izvor: %1. Postojeći torrent: %2. Rezultat: %3 - + Merging of trackers is disabled - + Spajanje trackera je onemogućeno - + Trackers cannot be merged because it is a private torrent - + Trackeri se ne mogu spojiti jer se radi o privatnom torrentu - + Trackers are merged from new source - + Trackeri su spojeni iz novog izvora @@ -647,72 +594,77 @@ Pogreška: %2 Preskoči provjeru hasha - - - Choose save path - Odaberi putanju spremanja + + Torrent share limits + Ograničenja dijeljenja torrenta - - - - - - - Default - Zadano + + + Choose save path + Odaberi putanju spremanja + + + - Yes - Da + Default + Zadano + Yes + Da + + + + + No Ne - + Manual Ručno - + Automatic Automatski - + Original Original - + Create subfolder Stvori podmapu - + Don't create subfolder Nemoj stvarati podmapu - + None Nijedno - + Metadata received Metapodaci primljeni - + Files checked Provjerene datoteke @@ -720,734 +672,852 @@ Pogreška: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Ponovno provjeri torrente pri dopunjavanju - - + + ms milliseconds ms - + Setting Postavka - + Value Value set for this setting Vrijednost - + (disabled) (onemogućeno) - + (auto) (auto) - + + min minutes min - + All addresses Sve adrese - + qBittorrent Section qBittorrent dio - - + + Open documentation Otvori dokumentaciju - + All IPv4 addresses Sve IPv4 adrese - + All IPv6 addresses Sve IPv6 adrese - + libtorrent Section libtorrent dio - + Fastresume files Fastresume datoteke - + SQLite database (experimental) SQLite baza podataka (experimentalno) - + Resume data storage type (requires restart) Nastavi vrstu pohrane podataka (zahtijeva ponovno pokretanje) - + Normal Normalno - + Below normal Ispod normale - + Medium Srednje - + Low Nisko - + Very low Jako nisko - - Process memory priority (Windows >= 8 only) - Prioritet memorije procesa (Windows >= samo 8) - - - + Physical memory (RAM) usage limit Ograničenje upotrebe fizičke memorije (RAM) - + Asynchronous I/O threads Asinkrone I/O niti - + Hashing threads Hashing niti - + File pool size Veličina pool datoteke - + Outstanding memory when checking torrents Izvanredna memorija pri provjeravanju torrenta - + Disk cache Predmemorija diska - - - - + + + + s seconds s - + Disk cache expiry interval Interval isteka predmemorije diska - + Disk queue size Veličina reda čekanja na disku - - + + Enable OS cache Omogući OS predmemoriju - + Coalesce reads & writes Spajati čitanje & pisanje - + Use piece extent affinity Koristite komade srodnosti opsega - + Send upload piece suggestions Pošaljite prijedloge komada za prijenos - - - - + + + + + 0 (disabled) 0 (onemogućeno) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Spremi interval podataka o nastavku [0: onemogućeno] - + Outgoing ports (Min) [0: disabled] Odlazni portovi (min.) [0: onemogućeno] - + Outgoing ports (Max) [0: disabled] Dolazni portovi (min.) [0: onemogućeno] - + 0 (permanent lease) 0 (trajni najam) - + UPnP lease duration [0: permanent lease] Trajanje UPnP najma [0: trajni najam] - + Stop tracker timeout [0: disabled] Istek vremena trackera [0: onemogućeno] - + Notification timeout [0: infinite, -1: system default] Istek obavijesti [0: beskonačno, -1: zadano za sustav] - + Maximum outstanding requests to a single peer Maksimalan broj neriješenih zahtjeva za jednog ravnopravnog korisnika - - - - - + + + + + KiB KiB - + (infinite) (beskonačno) - + (system default) (zadano za sustav) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Ova je opcija manje učinkovita na Linuxu - + + Process memory priority + Prioritet memorije procesa + + + Bdecode depth limit Bdecode ograničenje dubine - + Bdecode token limit Bdecode ograničenje tokena - + Default Zadano - + Memory mapped files Memorijski mapirane datoteke - + POSIX-compliant POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Vrsta IO diska (zahtijeva ponovno pokretanje) - - + + Disable OS cache Onemogući predmemoriju OS-a - + Disk IO read mode Disk IO način čitanja - + Write-through Pisanje-kroz - + Disk IO write mode Disk IO način pisanja - + Send buffer watermark Pošalji međuspremnik vodenog žiga - + Send buffer low watermark Pošalji međuspremnik niske razine vodenog žiga - + Send buffer watermark factor Pošalji faktor međuspremnika vodenog žiga - + Outgoing connections per second Odlazne veze u sekundi - - + + 0 (system default) 0 (zadano za sustav) - + Socket send buffer size [0: system default] Veličina međuspremnika za priključak slanja [0: zadano za sustav] - + Socket receive buffer size [0: system default] Veličina međuspremnika priključak primanja [0: zadano za sustav] - + Socket backlog size Veličina backlog zaostataka - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Ograničenje veličine .torrent datoteke - + Type of service (ToS) for connections to peers Vrsta usluge (ToS) za veze s peerovima - + Prefer TCP Preferiraj TCP - + Peer proportional (throttles TCP) Proporcionalno peer (prigušuje TCP) - + Support internationalized domain name (IDN) Podrška internacionaliziranom nazivu domene (IDN) - + Allow multiple connections from the same IP address Dopustite više veza s iste IP adrese - + Validate HTTPS tracker certificates Potvrdite certifikate HTTPS trackera - + Server-side request forgery (SSRF) mitigation Ublažavanje krivotvorenja zahtjeva na strani poslužitelja (SSRF). - + Disallow connection to peers on privileged ports Zabrani povezivanje s ravnopravnim uređajima na privilegiranim portovima - + + It appends the text to the window title to help distinguish qBittorent instances + Dodaje tekst u naslov prozora kako bi qBittorent lakše razlikovao instance + + + + Customize application instance name + Prilagodite naziv instance aplikacije + + + It controls the internal state update interval which in turn will affect UI updates Kontrolira interni interval ažuriranja stanja koji će zauzvrat utjecati na ažuriranja korisničkog sučelja - + Refresh interval Interval osvježavanja - + Resolve peer host names Razrješi nazive peer hostova - + IP address reported to trackers (requires restart) IP adresa prijavljena trackerima (zahtijeva ponovno pokretanje) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Ponovno najavite svim trackerima kada se IP ili port promijeni - + Enable icons in menus Omogućite ikone u izbornicima - + Enable port forwarding for embedded tracker Omogući prosljeđivanje priključka za ugrađeni alat za praćenje - - (Auto detect if empty) + + Enable quarantine for downloaded files + Omogući karantenu za preuzete datoteke + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Omogućite Mark-of-the-Web (MOTW) za preuzete datoteke + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Automatsko otkrivanje ako je prazno) + + + Python executable path (may require restart) + Python izvršna putanja (možda će biti potrebno ponovno pokretanje) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sek + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Potvrdite uklanjanje trackera sa svih torrenta + + + Peer turnover disconnect percentage Postotak prekida veze među peerovima - + Peer turnover threshold percentage Postotak praga fluktuacije među peerovima - + Peer turnover disconnect interval Interval isključenja peer prometa - + Resets to default if empty - + Vraća se na zadano ako je prazno - + DHT bootstrap nodes - + DHT čvorovi za pokretanje - + I2P inbound quantity I2P ulazna količina - + I2P outbound quantity I2P izlazna količina - + I2P inbound length I2P ulazna duljina - + I2P outbound length I2P izlazna duljina - + Display notifications Prikaži obavijesti - + Display notifications for added torrents Prikaži obavijesti za dodane torrente - + Download tracker's favicon Preuzmi ikonu trackera - + Save path history length Spremi putanju duljine povijesti - + Enable speed graphs Omogući grafikone brzine - + Fixed slots Fiksni slotovi - + Upload rate based Na temelju brzine prijenosa - + Upload slots behavior Ponašanje slota učitavanja - + Round-robin Okruglo - + Fastest upload Najbrže učitavanje - + Anti-leech Anti-leech - + Upload choking algorithm Učitaj algoritam za gušenje - + Confirm torrent recheck Potvrdi ponovnu provjeru torrenta - + Confirm removal of all tags Potvrdi uklanjanje svih oznaka - + Always announce to all trackers in a tier Uvijek najavi svim trackerima u nizu - + Always announce to all tiers Uvijek najavi svim razinama - + Any interface i.e. Any network interface Bilo koje sučelje - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP algoritam mješovitog načina rada - + Resolve peer countries Rješavanje zemalja peerova - + Network interface Mrežno sučelje - + Optional IP address to bind to Opcionalna IP adresa za povezivanje - + Max concurrent HTTP announces Maksimalan broj istodobnih HTTP najava - + Enable embedded tracker Omogući ugrađeni tracker - + Embedded tracker port Port ugrađenog trackera - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 pokrenut + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Radi u portabilnom načinu rada. Automatski otkrivena mapa profila na: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Otkrivena zastavica redundantnog naredbenog retka: "%1". Prijenosni način rada podrazumijeva relativno brz nastavak. - + Using config directory: %1 Korištenje konfiguracijskog direktorija: %1 - + Torrent name: %1 Ime torrenta: %1 - + Torrent size: %1 Veličina torrenta: %1 - + Save path: %1 Putanja spremanja: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent je preuzet za %1. - + + Thank you for using qBittorrent. Hvala što koristite qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, šaljem obavijest e-poštom - + Add torrent failed - + Dodavanje torrenta nije uspjelo - + Couldn't add torrent '%1', reason: %2. - + Nije moguće dodati torrent '%1', razlog: %2. + + + + The WebUI administrator username is: %1 + WebUI administratorsko korisničko ime je: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + WebUI administratorska lozinka nije postavljena. Za ovu sesiju dana je privremena lozinka: %1 + + + + You should set your own password in program preferences. + Trebali biste postaviti vlastitu lozinku u postavkama aplikacije. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI je onemogućen! Da biste omogućili WebUI, ručno uredite konfiguracijsku datoteku. - + Running external program. Torrent: "%1". Command: `%2` Pokretanje vanjskog programa. Torrent: "%1". Naredba: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Pokretanje vanjskog programa nije uspjelo. Torrent: "%1". Naredba: `%2` - + Torrent "%1" has finished downloading Torrent "%1" je završio s preuzimanjem - + WebUI will be started shortly after internal preparations. Please wait... WebUI će biti pokrenut ubrzo nakon internih priprema. Molimo pričekajte... - - + + Loading torrents... Učitavanje torrenta... - + E&xit I&zlaz - + I/O Error i.e: Input/Output Error I/O greška - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1455,138 +1525,110 @@ Pogreška: %2 Došlo je do I/O pogreške za torrent '%1'. Razlog: %2 - Error - Greška - - - Failed to add torrent: %1 - Nije uspjelo dodavanje torrenta: %1 - - - + Torrent added Torrent je dodan - + '%1' was added. e.g: xxx.avi was added. '%1' je dodan. - + Download completed Preuzimanje dovršeno - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' je završio preuzimanje. - - - URL download error - Pogreška preuzimanja URL-a + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 je pokrenut. ID procesa: %2 - Couldn't download file at URL '%1', reason: %2. - Nije moguće preuzeti datoteku na URL-u '%1', razlog: %2. + + This is a test email. + - Torrent file association - Pridruživanje torrent datoteke + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent nije zadana aplikacija za otvaranje torrent datoteka ili Magnet linkova. Želite li za njih qBittorrent postaviti kao zadanu aplikaciju? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' je završio preuzimanje. - + Information Informacija - + To fix the error, you may need to edit the config file manually. - + Da biste ispravili pogrešku, možda ćete morati ručno urediti konfiguracijsku datoteku. - + To control qBittorrent, access the WebUI at: %1 Za kontrolu qBittorrenta pristupite WebUI na: %1 - - The Web UI administrator username is: %1 - Korisničko ime administratora web sučelja je: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Lozinka administratora web sučelja nije promijenjena u odnosu na zadanu: %1 - - - - This is a security risk, please change your password in program preferences. - Ovo je sigurnosni rizik, molimo promijenite lozinku u postavkama programa. - - - Application failed to start. - Aplikacija se nije uspjela pokrenuti. - - - + Exit Izlaz - + Recursive download confirmation - Potvrda rekurzivnog preuzimanja + Potvrda rekurzivnog preuzimanja - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' sadrži .torrent datoteke, želite li nastaviti s njihovim preuzimanjem? + Torrent '%1' sadrži .torrent datoteke, želite li nastaviti s njihovim preuzimanjem? - + Never - + Nikada - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekurzivno preuzimanje .torrent datoteke unutar torrenta. Izvor torrenta: "%1". Datoteka: "%2" + Rekurzivno preuzimanje .torrent datoteke unutar torrenta. Izvor torrenta: "%1". Datoteka: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Postavljanje ograničenja upotrebe fizičke memorije (RAM) nije uspjelo. Šifra pogreške: %1. Poruka o pogrešci: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Neuspješno postavljanje ograničenja upotrebe fizičke memorije (RAM). Tražena veličina: %1. Čvrsto ograničenje sustava: %2. Šifra pogreške: %3. Poruka o pogrešci: "%4" - + qBittorrent termination initiated Pokrenuto prekidanje qBittorrenta - + qBittorrent is shutting down... qBittorrent se gasi... - + Saving torrent progress... Spremanje napretka torrenta... - + qBittorrent is now ready to exit qBittorrent je sada spreman za izlaz @@ -1594,7 +1636,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Nije moguće stvoriti direktorij '%1'. @@ -1602,22 +1644,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI prijava nije uspjela. Razlog: IP je zabranjen, IP: %1, korisničko ime: %2 - + Your IP address has been banned after too many failed authentication attempts. Vaša IP adresa je zabranjena nakon previše neuspjelih pokušaja autentifikacije. - + WebAPI login success. IP: %1 Uspješna prijava na WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI prijava nije uspjela. Razlog: nevažeće vjerodajnice, broj pokušaja: %1, IP: %2, korisničko ime: %3 @@ -1665,12 +1707,12 @@ Do you want to make qBittorrent the default application for these? Prioritet: - + Must Not Contain: Ne smije sadržavati: - + Episode Filter: Filter epizoda: @@ -1722,263 +1764,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Izv&ezi... - + Matches articles based on episode filter. Podudarnosti članaka su na osnovi epizodnog filtera. - + Example: Primjer: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match epizode 2, 5, 8 odgovaraju epizodama 15, 30 i sljedećim epizodama prve sezone - + Episode filter rules: Pravila za filtriranje epizoda: - + Season number is a mandatory non-zero value Broj sezone je neophodan - + Filter must end with semicolon Filter mora završavati točka-zarezom - + Three range types for episodes are supported: Podržane su tri vrste poretka epizoda: - + Single number: <b>1x25;</b> matches episode 25 of season one Pojedinačni broj:<b>1x25;</b> označava 25. epizodu prve sezone - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Uobičajen raspon: <b>1x25-40;</b> označava epizode od 25. do 40. prve sezone - + Episode number is a mandatory positive value Broj epizode je obavezna pozitivna vrijednost - + Rules Pravila - + Rules (legacy) Pravila (nasljeđena) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Beskonačni domet: 1x25-; odgovara epizodama 25 i više od prve sezone i svim epizodama kasnijih sezona - + Last Match: %1 days ago Posljednje podudaranje: prije %1 dan(a) - + Last Match: Unknown Posljednje podudaranje: Nepoznato - + New rule name Naziv novog pravila - + Please type the name of the new download rule. Upišite naziv novog pravila preuzimanja. - - + + Rule name conflict Konflikt naziva pravila - - + + A rule with this name already exists, please choose another name. Pravilo s tim nazivom već postoji. Izaberite drugi naziv. - + Are you sure you want to remove the download rule named '%1'? Sigurni ste da želite ukloniti pravilo preuzimanja naziva '%1'? - + Are you sure you want to remove the selected download rules? Jeste li sigurni da želite ukloniti odabrana pravila preuzimanja? - + Rule deletion confirmation Pravilo potvrđivanja brisanja - + Invalid action Neispravna radnja - + The list is empty, there is nothing to export. Popis je prazan. Nema se što izvesti. - + Export RSS rules Izvoz RSS pravila - + I/O Error I/O greška - + Failed to create the destination file. Reason: %1 Stvaranje odredišne ​​datoteke nije uspjelo. Razlog: %1 - + Import RSS rules Uvoz RSS pravila - + Failed to import the selected rules file. Reason: %1 Uvoz odabrane datoteke s pravilima nije uspio. Razlog: %1 - + Add new rule... Dodaj novo pravilo... - + Delete rule Ukloni pravilo - + Rename rule... Preimenuj pravilo... - + Delete selected rules Ukloni odabrana pravila - + Clear downloaded episodes... Obriši preuzete epizode... - + Rule renaming Preimenovanje pravila - + Please type the new rule name Upišite naziv novog pravila - + Clear downloaded episodes Brisanje preuzetih epizoda - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Jeste li sigurni da želite obrisati popis preuzetih epizoda za odabrano pravilo? - + Regex mode: use Perl-compatible regular expressions Regex mod: koristite Perl-kompatibilne regularne izraze - - + + Position %1: %2 Pozicija %1: %2 - + Wildcard mode: you can use Način zamjenskog znaka: možete koristiti - - + + Import error Pogreška uvoza - + Failed to read the file. %1 Čitanje datoteke nije uspjelo. %1 - + ? to match any single character ? odgovarati bilo kojem pojedinačnom znaku - + * to match zero or more of any characters * za podudaranje s nula ili više bilo kojih znakova - + Whitespaces count as AND operators (all words, any order) Razmaci se računaju kao operatori I (sve riječi, bilo kojim redoslijedom) - + | is used as OR operator | se koristi kao ILI operator - + If word order is important use * instead of whitespace. Ako je redoslijed riječi važan, koristite * umjesto razmaka. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Izraz s praznom klauzulom %1 (npr. %2) - + will match all articles. će odgovarati svim artiklima. - + will exclude all articles. isključit će sve artikle. @@ -2020,53 +2062,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nije moguće stvoriti mapu za nastavak torrenta: "%1" - + Cannot parse resume data: invalid format Nije moguće analizirati podatke nastavka: nevažeći format - - + + Cannot parse torrent info: %1 Ne mogu analizirati informacije o torrentu: %1 - + Cannot parse torrent info: invalid format Ne mogu analizirati podatke o torrentu: nevažeći format - + + Mismatching info-hash detected in resume data + U podatcima je otkriven nepodudarni hash informacija + + + Couldn't save torrent metadata to '%1'. Error: %2. Nije moguće spremiti metapodatke torrenta u '%1'. Pogreška: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Nije moguće spremiti podatke o nastavku torrenta u '%1'. Pogreška: %2. - + Couldn't load torrents queue: %1 Nije moguće učitati red čekanja torrenta: %1 - + Cannot parse resume data: %1 Nije moguće analizirati podatke o nastavku: %1 - + Resume data is invalid: neither metadata nor info-hash was found Podaci o nastavku nisu valjani: nisu pronađeni ni metapodaci ni hash informacija - + Couldn't save data to '%1'. Error: %2 Nije moguće spremiti podatke u '%1'. Pogreška: %2 @@ -2074,38 +2121,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Nije pronađeno. - + Couldn't load resume data of torrent '%1'. Error: %2 Nije moguće učitati podatke o nastavku torrenta '%1'. Pogreška: %2 - - + + Database is corrupted. Baza podataka je oštećena. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Nije moguće omogućiti način vođenja dnevnika Write-Ahead Logging (WAL). Pogreška: %1. - + Couldn't obtain query result. Nije moguće dobiti rezultat upita. - + WAL mode is probably unsupported due to filesystem limitations. WAL način rada vjerojatno nije podržan zbog ograničenja datotečnog sustava. - + Couldn't begin transaction. Error: %1 Nije moguće započeti transakciju. Pogreška: %1 @@ -2113,22 +2160,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Nije moguće spremiti metapodatke torrenta. Pogreška: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Nije moguće pohraniti podatke o nastavku za torrent '%1'. Pogreška: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Nije moguće izbrisati podatke o nastavku torrenta '%1'. Pogreška: %2 - + Couldn't store torrents queue positions. Error: %1 Nije moguće pohraniti položaje čekanja torrenta. Pogreška: %1 @@ -2136,586 +2183,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Podrška za distribuiranu hash tablicu (DHT): %1 - - - - - - - - - + + + + + + + + + ON UKLJ - - - - - - - - - + + + + + + + + + OFF ISKLJ - - + + Local Peer Discovery support: %1 Podrška za lokalno otkrivanje ravnopravnih korisnika: %1 - + Restart is required to toggle Peer Exchange (PeX) support Ponovno pokretanje potrebno je za uključivanje podrške za Peer Exchange (PeX). - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Nastavljanje torrenta nije uspjelo. Torrent: "%1". Razlog: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Nastavljanje torrenta nije uspjelo: otkriven je nedosljedan ID torrenta. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Otkriveni nedosljedni podaci: kategorija nedostaje u konfiguracijskoj datoteci. Kategorija će se vratiti, ali će se njezine postavke vratiti na zadane. Torrent: "%1". Kategorija: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Otkriveni nedosljedni podaci: nevažeća kategorija. Torrent: "%1". Kategorija: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Otkrivena nepodudarnost između staza spremanja oporavljene kategorije i trenutne staze spremanja torrenta. Torrent je sada prebačen u ručni način rada. Torrent: "%1". Kategorija: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Otkriveni nedosljedni podaci: oznaka nedostaje u konfiguracijskoj datoteci. Oznaka će biti oporavljena. Torrent: "%1". Oznaka: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Otkriveni nedosljedni podaci: nevažeća oznaka. Torrent: "%1". Oznaka: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Otkriven je događaj buđenja sustava. Ponovno javljanje svim trackerima... - + Peer ID: "%1" Peer ID: "%1" - + HTTP User-Agent: "%1" HTTP Korisnički-Agent: "%1" - + Peer Exchange (PeX) support: %1 Peer Exchange (PeX) podrška: %1 - - + + Anonymous mode: %1 Anonimni način rada: %1 - - + + Encryption support: %1 Podrška za šifriranje: %1 - - + + FORCED PRISILNO - + Could not find GUID of network interface. Interface: "%1" Nije moguće pronaći GUID mrežnog sučelja. Sučelje: "%1" - + Trying to listen on the following list of IP addresses: "%1" Pokušavam slušati sljedeći popis IP adresa: "%1" - + Torrent reached the share ratio limit. Torrent je dosegao ograničenje omjera dijeljenja. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Uklonjen torrent. + Uklonjen torrent. - - - Removed torrent and deleted its content. - Uklonjen torrent i izbrisan njegov sadržaj. + Uklonjen torrent i izbrisan njegov sadržaj. - - - Torrent paused. - Torrent je pauziran. + Torrent je pauziran. - - - + Super seeding enabled. Super dijeljenje omogućeno. - + Torrent reached the seeding time limit. Torrent je dosegao vremensko ograničenje dijeljenja. - + Torrent reached the inactive seeding time limit. Torrent je dosegao ograničenje vremena neaktivnog seedanja. - + Failed to load torrent. Reason: "%1" Neuspješno učitavanje torrenta. Razlog: "%1" - + I2P error. Message: "%1". + I2P greška. Poruka: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP podrška: UKLJ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Preuzimanje torrenta, pričekajte... Izvor: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Neuspješno učitavanje torrenta. Izvor: "%1". Razlog: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Otkriven je pokušaj dodavanja duplikata torrenta. Spajanje trackera je onemogućeno. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Otkriven je pokušaj dodavanja duplikata torrenta. Trackeri se ne mogu spojiti jer se radi o privatnom torrentu. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Otkriven je pokušaj dodavanja duplikata torrenta. Trackeri su spojeni iz novog izvora. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP podrška: UKLJ + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP podrška: ISKLJ + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Izvoz torrenta nije uspio. Torrent: "%1". Odredište: "%2". Razlog: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Prekinuto spremanje podataka o nastavku. Broj neizvršenih torrenta: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Spajanje trackera je onemogućeno - System network status changed to %1 - e.g: System network status changed to ONLINE - Status mreže sustava promijenjen je u %1 + + Trackers cannot be merged because it is a private torrent + Trackeri se ne mogu spojiti jer se radi o privatnom torrentu + + + + Trackers are merged from new source + Trackeri su spojeni iz novog izvora - ONLINE - NA MREŽI + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP podrška: ISKLJ - OFFLINE - VAN MREŽE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Izvoz torrenta nije uspio. Torrent: "%1". Odredište: "%2". Razlog: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Mrežna konfiguracija %1 je promijenjena, osvježava se povezivanje sesije + + Aborted saving resume data. Number of outstanding torrents: %1 + Prekinuto spremanje podataka o nastavku. Broj neizvršenih torrenta: %1 - + The configured network address is invalid. Address: "%1" Konfigurirana mrežna adresa nije važeća. Adresa: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Nije uspjelo pronalaženje konfigurirane mrežne adrese za slušanje. Adresa: "%1" - + The configured network interface is invalid. Interface: "%1" Konfigurirano mrežno sučelje nije važeće. Sučelje: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Odbijena nevažeća IP adresa tijekom primjene popisa zabranjenih IP adresa. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Dodan tracker torrentu. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Uklonjen tracker iz torrenta. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Torrentu je dodan URL dijeljenja. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Uklonjen URL dijeljenja iz torrenta. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent je pauziran. Torrent: "%1" + Torrent je pauziran. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent je nastavljen. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Preuzimanje torrenta završeno. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Premještanje torrenta otkazano. Torrent: "%1". Izvor: "%2". Odredište: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Premještanje torrenta u red čekanja nije uspjelo. Torrent: "%1". Izvor: "%2". Odredište: "%3". Razlog: torrent se trenutno kreće prema odredištu - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Premještanje torrenta u red čekanja nije uspjelo. Torrent: "%1". Izvor: "%2" Odredište: "%3". Razlog: obje staze pokazuju na isto mjesto - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Premještanje torrenta u red čekanja. Torrent: "%1". Izvor: "%2". Odredište: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Počnite pomicati torrent. Torrent: "%1". Odredište: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Spremanje konfiguracije kategorija nije uspjelo. Datoteka: "%1". Greška: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Nije uspjelo analiziranje konfiguracije kategorija. Datoteka: "%1". Greška: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekurzivno preuzimanje .torrent datoteke unutar torrenta. Izvor torrenta: "%1". Datoteka: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Nije uspjelo učitavanje .torrent datoteke unutar torrenta. Izvor torrenta: "%1". Datoteka: "%2". Greška: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Datoteka IP filtera uspješno je analizirana. Broj primijenjenih pravila: %1 - + Failed to parse the IP filter file Nije uspjelo analiziranje IP filtera datoteke - + Restored torrent. Torrent: "%1" Obnovljen torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Dodan novi torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Pogreška u torrentu. Torrent: "%1". Greška: "%2" - - Removed torrent. Torrent: "%1" - Uklonjen torrent. Torrent: "%1" + Uklonjen torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Uklonjen torrent i izbrisan njegov sadržaj. Torrent: "%1" + Uklonjen torrent i izbrisan njegov sadržaj. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentu nedostaju SSL parametri. Torrent: "%1". Poruka: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Torrent je uklonjen, ali nije uspio izbrisati njegov sadržaj. Torrent: "%1". Greška: "%2". Razlog: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP mapiranje porta nije uspjelo. Poruka: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP port mapping succeeded.Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtrirani port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). povlašteni port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent sesija naišla je na ozbiljnu pogrešku. Razlog: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 proxy pogreška. Adresa 1. Poruka: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 ograničenja mješovitog načina rada - + Failed to load Categories. %1 Učitavanje kategorija nije uspjelo. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Nije uspjelo učitavanje konfiguracije kategorija. Datoteka: "%1". Pogreška: "Nevažeći format podataka" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent je uklonjen, ali nije uspio izbrisati njegov sadržaj i/ili dio datoteke. Torrent: "%1". Greška: "%2" + Torrent je uklonjen, ali nije uspio izbrisati njegov sadržaj i/ili dio datoteke. Torrent: "%1". Greška: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 je onemogućen - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 je onemogućen - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL dijeljenje DNS pretraživanje nije uspjelo. Torrent: "%1". URL: "%2". Greška: "%3" + URL dijeljenje DNS pretraživanje nije uspjelo. Torrent: "%1". URL: "%2". Greška: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Primljena poruka o pogrešci od URL seeda. Torrent: "%1". URL: "%2". Poruka: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Uspješno slušanje IP-a. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Slušanje IP-a nije uspjelo. IP: "%1". Port: "%2/%3". Razlog: "%4" - + Detected external IP. IP: "%1" Otkriven vanjski IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Pogreška: Interni red čekanja upozorenja je pun i upozorenja su izostavljena, mogli biste vidjeti smanjene performanse. Vrsta ispuštenog upozorenja: "%1". Poruka: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent je uspješno premješten. Torrent: "%1". Odredište: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Premještanje torrenta nije uspjelo. Torrent: "%1". Izvor: "%2". Odredište: "%3". Razlog: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Postupak prekinut - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Stvaranje nove torrent datoteke nije uspjelo. Razlog: %1. + + Failed to start seeding. + Pokretanje seedanja nije uspjelo. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Postupak prekinut + Postupak prekinut + + Create new torrent file failed. Reason: %1. - Stvaranje nove torrent datoteke nije uspjelo. Razlog: %1. + Stvaranje nove torrent datoteke nije uspjelo. Razlog: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Nije uspjelo dodavanje peera "%1" u torrent "%2". Razlog: %3 - + Peer "%1" is added to torrent "%2" Peer "%1" dodan je torrentu "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Otkriveni su neočekivani podaci. Torrent: %1. Podaci: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Nije moguće pisati u datoteku. Razlog: "%1". Torrent je sada u načinu rada "samo slanje". - + Download first and last piece first: %1, torrent: '%2' Prvo preuzmite prvi i zadnji dio: %1, torrent: '%2' - + On Uklj - + Off Isklj - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Ponovno učitavanje torrenta nije uspjelo. Torrent: %1. Razlog: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Generiranje podataka nastavka nije uspjelo. Torrent: "%1". Razlog: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Vraćanje torrenta nije uspjelo. Datoteke su vjerojatno premještene ili pohrana nije dostupna. Torrent: "%1". Razlog: "%2" - + Missing metadata Nedostaju metapodaci - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Preimenovanje datoteke nije uspjelo. Torrent: "%1", datoteka: "%2", razlog: "%3" - + Performance alert: %1. More info: %2 Upozorenje o performansama: %1. Više informacija: %2 @@ -2736,184 +2817,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametar '%1' mora slijediti sintaksu '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametar '%1' mora slijediti sintaksu '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Očekivan cijeli broj u varijabli okoline '%1', ali dobiven je '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametar '%1' mora slijediti sintaksu '%1=%2' + Parametar '%1' mora slijediti sintaksu '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Očekivan %1 u varijabli okruženja '%2', ali dobiven je '%3' - - + + %1 must specify a valid port (1 to 65535). %1 mora navesti važeći port (1 do 65535). - + Usage: Upotreba: - + [options] [(<filename> | <url>)...] [options] [(<filename> | <url>)...] - + Options: Postavke: - + Display program version and exit Prikaz verzije programa i izlaz - + Display this help message and exit Prikaz ove poruke pomoći i izlaz - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametar '%1' mora slijediti sintaksu '%1=%2' + + + + Confirm the legal notice + Potvrdite pravnu obavijest + + + + port port - - Change the Web UI port - Promijenite port web sučelja + + Change the WebUI port + Promijenite WebUI port - + Change the torrenting port Promijenite port za torrentiranje - + Disable splash screen Onemogući najavni ekran - + Run in daemon-mode (background) Pokreni u pozadinskom načinu - + dir Use appropriate short form or abbreviation of "directory" mapa - + Store configuration files in <dir> Pohranite konfiguracijske datoteke u <dir> - - + + name naziv - + Store configuration files in directories qBittorrent_<name> Pohranite konfiguracijske datoteke u direktorije qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hakirajte datoteke libtorrent fastresume i napravite putanje datoteka relativnim prema direktoriju profila - + files or URLs datoteke ili URL-ovi - + Download the torrents passed by the user Preuzmite torrente koje je korisnik prenio - + Options when adding new torrents: Opcije pri dodavanju novih torrenta: - + path putanja - + Torrent save path Putanja za spremanje torrenta - + + Add torrents as running or stopped + + + Add torrents as started or paused - Dodajte torrente kao pokrenute ili pauzirane + Dodajte torrente kao pokrenute ili pauzirane - + Skip hash check Preskoči provjeru hasha - + Assign torrents to category. If the category doesn't exist, it will be created. Dodijelite torrente kategoriji. Ako kategorija ne postoji, bit će stvorena. - + Download files in sequential order Preuzmite datoteke redoslijedom - + Download first and last pieces first Preuzmi prve i zadnje dijelove prije drugih. - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Odredite hoće li se prilikom dodavanja torrenta otvoriti dijaloški okvir "Dodaj novi torrent". - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Vrijednosti opcija mogu se dostaviti putem varijabli okoline. Za opciju pod nazivom 'naziv-parametra', naziv varijable okruženja je 'QBT_PARAMETER_NAME' (u velikim slovima, '-' zamijenjeno s '_'). Za prijenos vrijednosti zastavice postavite varijablu na '1' ili 'TRUE'. Na primjer, da biste onemogućili početni ekran: - + Command line parameters take precedence over environment variables Parametri naredbenog retka imaju prednost nad varijablama okruženja - + Help Pomoć @@ -2921,17 +3016,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Kategorije - + All Sve - + Uncategorized Nekategorizirano @@ -2965,13 +3060,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Nastavi torrente + Start torrents + + Stop torrents + + + + Resume torrents + Nastavi torrente + + Pause torrents - Pauziraj torrente + Pauziraj torrente @@ -2982,15 +3085,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Uredi... - + Reset Poništi + + + System + + CookiesDialog @@ -3031,12 +3139,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 Nije uspjelo učitavanje lista stilova prilagođene teme. %1 - + Failed to load custom theme colors. %1 Učitavanje prilagođenih boja teme nije uspjelo. %1 @@ -3044,7 +3152,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 Učitavanje zadanih boja teme nije uspjelo. %1 @@ -3063,23 +3171,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Također trajno izbrišite datoteke + Također trajno izbrišite datoteke - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Jeste li sigurni da želite ukloniti '%1' s popisa prijenosa? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Jeste li sigurni da želite ukloniti ove %1 torrente s popisa prijenosa? - + Remove Ukloni @@ -3092,12 +3204,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Preuzimanje s URL-ova - + Add torrent links Dodajte torrent linkove - + One link per line (HTTP links, Magnet links and info-hashes are supported) Jedna veza po retku (podržani su HTTP linkovi, Magnet linkovi i info-hashovi) @@ -3107,12 +3219,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Preuzimanje - + No URL entered URL nije unesen - + Please type at least one URL. Unesite barem jedan URL. @@ -3271,64 +3383,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Greška analiziranja: Filter datoteka nije valjana PeerGuardian P2B datoteka. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Preuzimanje torrenta... Izvor: "%1" - Trackers cannot be merged because it is a private torrent - + Trackeri se ne mogu spojiti jer se radi o privatnom torrentu - + Torrent is already present - Torrent je već prisutan + Torrent je već prisutan + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' je već na popisu prijenosa. Želite li spojiti trackere iz novog izvora? + Torrent '%1' je već na popisu prijenosa. Želite li spojiti trackere iz novog izvora? GeoIPDatabase - - + + Unsupported database file size. Nepodržana veličina datoteke baze podataka. - + Metadata error: '%1' entry not found. Greška metapodataka: '%1' unos nije pronađen. - + Metadata error: '%1' entry has invalid type. Greška metapodataka: '%1' unos nije valjanog tipa. - + Unsupported database version: %1.%2 Nepodržana verzija baze podataka: %1.%2 - + Unsupported IP version: %1 Nepodržana IP verzija: %1 - + Unsupported record size: %1 Nepodržana veličina zapisa: %1 - + Database corrupted: no data section found. Korumpirana baza podataka: nije pronađen podatkovni dio. @@ -3336,17 +3475,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Veličina Http zahtjeva premašuje ograničenje, zatvara se priključak. Ograničenje: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Loša metoda Http zahtjeva, zatvaranje priključka. IP: %1. Metoda: "%2" - + Bad Http request, closing socket. IP: %1 Loš Http zahtjev, zatvara se priključak. IP: %1 @@ -3387,36 +3526,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Pretraži... - + Reset Poništi - + Select icon Odaberi ikonu - + Supported image files Podržane slikovne datoteke + + LegalNotice + + + Legal Notice + Pravna napomena + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent je program za dijeljenje datoteka. Kada pokrenete torrent, njegovi će podaci biti dostupni drugima putem prijenosa. Svaki sadržaj koji dijelite isključivo je vaša odgovornost. + + + + No further notices will be issued. + Daljnje obavijesti neće biti izdane. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Ako ste pročitali pravnu obavijest, možete upotrijebiti opciju naredbenog retka `--confirm-legal-notice` da potisnete ovu poruku. + + + + Press 'Enter' key to continue... + Pritisnite tipku 'Enter' za nastavak... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 je blokiran. Razlog: %2. - + %1 was banned 0.0.0.0 was banned %1 je zabranjen @@ -3425,91 +3592,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 je nepoznat parametar naredbenog retka. - - + + %1 must be the single command line parameter. %1 mora biti jedinstven parametar naredbenog retka. - - You cannot use %1: qBittorrent is already running for this user. - Nemoguće koristiti %1: qBittorrent je već pokrenut za ovog korisnika. - - - + Run application with -h option to read about command line parameters. Pokreni aplikaciju sa -h argumentom kako bi pročitali o parametrima naredbenog retka. - + Bad command line Loš naredbeni redak - + Bad command line: Loš naredbeni redak: - + An unrecoverable error occurred. - + Došlo je do nepopravljive pogreške. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Pravna obavijest - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent je program za dijeljenje datoteka. Kada pokrenete torrent, njegovi će podaci biti dostupni drugima putem prijenosa. Svaki sadržaj koji dijelite isključivo je vaša odgovornost. + qBittorrent je naišao na nepopravljivu pogrešku. - - No further notices will be issued. - Daljnje obavijesti neće biti izdane. - - - - Press %1 key to accept and continue... - Pritisnite %1 tipku da prihvatite i nastavite... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent je program za dijeljenje datoteka. Kada koristite torrent, njegovi podaci će biti dostupni drugima zbog slanja. Sav sadržaj koji dijelite je na vašu osobnu odgovornost. - -Više neće biti obavijesti o ovome. + + You cannot use %1: qBittorrent is already running. + Ne možete koristiti %1: qBittorrent je već pokrenut. - - Legal notice - Pravna obavijest + + Another qBittorrent instance is already running. + Još jedna instanca qBittorrenta je već pokrenuta. - - Cancel - Odustani + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Pronađena neočekivana instanca qBittorrenta. Izlaz iz ove instance. ID trenutnog procesa: %1. - - I Agree - Slažem se + + Error when daemonizing. Reason: "%1". Error code: %2. + Pogreška prilikom demoniziranja. Razlog: "%1". Šifra pogreške: %2. @@ -3520,619 +3658,704 @@ Više neće biti obavijesti o ovome. Ur&edi - + &Tools Ala&ti - + &File &Datoteka - + &Help &Pomoć - + On Downloads &Done Ka&d preuzimanje završi - + &View Po&gled - + &Options... &Opcije... - &Resume - Nastavi + Nastavi - + &Remove &Ukloni - + Torrent &Creator St&varač torrenta - - + + Alternative Speed Limits Alternativno ograničenje brzine - + &Top Toolbar Gornja alatna &traka - + Display Top Toolbar Prikaži gornju alatnu traku - + Status &Bar Tra&ka statusa - + Filters Sidebar Bočna traka filtera - + S&peed in Title Bar Brzina u &naslovnoj traci - + Show Transfer Speed in Title Bar Prikaži brzinu prijenosa u naslovnoj traci - + &RSS Reader &RSS čitač - + Search &Engine Pr&etraživač - + L&ock qBittorrent Zaključaj qBitt&orrent - + Do&nate! Do&niraj! - + + Sh&utdown System + + + + &Do nothing Ne čin&i ništa - + Close Window Zatvori prozor - R&esume All - Nastavi sve + Nastavi sve - + Manage Cookies... Upravljaj kolačićima... - + Manage stored network cookies Upravljaj spremljenim mrežnim kolačićima - + Normal Messages Normalne poruke - + Information Messages Informacijske poruke - + Warning Messages Poruke upozorenja - + Critical Messages Kritične poruke - + &Log &Dnevnik - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Postavi globalna ograničenja brzine... - + Bottom of Queue Dno reda čekanja - + Move to the bottom of the queue Pomaknite na dno reda čekanja - + Top of Queue Vrh reda čekanja - + Move to the top of the queue Pomaknite na vrh reda čekanja - + Move Down Queue Pomaknite dolje u redu čekanja - + Move down in the queue Pomaknite dolje u redu čekanja - + Move Up Queue Pomaknite gore u redu čekanja - + Move up in the queue Pomaknite gore u redu čekanja - + &Exit qBittorrent Izlaz iz qBittorr&enta - + &Suspend System &Suspendiraj sustav - + &Hibernate System &Hiberniraj sustav - S&hutdown System - U&gasi sustav + U&gasi sustav - + &Statistics &Statistika - + Check for Updates Provjeri ažuriranja - + Check for Program Updates Provjeri ažuriranje programa - + &About &O programu - &Pause - &Pauziraj + &Pauziraj - P&ause All - P&auziraj sve + P&auziraj sve - + &Add Torrent File... Dod&aj torrent datoteku... - + Open Otvori - + E&xit &Izlaz - + Open URL Otvori URL - + &Documentation &Dokumentacija - + Lock Zaključaj - - - + + + Show Prikaži - + Check for program updates Provjeri ažuriranja programa - + Add Torrent &Link... Dodaj torrent &poveznicu... - + If you like qBittorrent, please donate! Ako vam se sviđa qBittorrent donirajte! - - + + Execution Log Dnevnik izvršavanja - + Clear the password Izbriši lozinku - + &Set Password Namje&sti lozinku - + Preferences Postavke - + &Clear Password &Očisti lozinku - + Transfers Prijenosi - - + + qBittorrent is minimized to tray qBittorrent je minimiziran u traku - - - + + + This behavior can be changed in the settings. You won't be reminded again. Ovo se ponašanje može promijeniti u postavkama. Nećete više dobiti podsjetnik. - + Icons Only Samo ikone - + Text Only Samo tekst - + Text Alongside Icons Tekst uz ikone - + Text Under Icons Tekst ispod ikona - + Follow System Style Koristi stil sustava - - + + UI lock password Lozinka zaključavanja sučelja - - + + Please type the UI lock password: Upišite lozinku zaključavanja sučelja: - + Are you sure you want to clear the password? Želite li sigurno izbrisati lozinku? - + Use regular expressions Koristi uobičajene izraze - - Search - Traži + + + Search Engine + Dodaci za pretraživanje - - Transfers (%1) - Prijenosi (%1) + + Search has failed + Pretraga nije uspjela - Recursive download confirmation - Potvrda rekurzivnog preuzimanja + + Search has finished + Pretraga je završila - Never - Nikad + + Search + Traži + + + + Transfers (%1) + Prijenosi (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent je upravo ažuriran i potrebno ga je ponovno pokrenuti kako bi promjene bile učinkovite. - + qBittorrent is closed to tray qBittorrent je zatvoren u traku - + Some files are currently transferring. Neke datoteke se trenutno prenose. - + Are you sure you want to quit qBittorrent? Jeste li sigurni da želite napustiti qBittorrent? - + &No &Ne - + &Yes &Da - + &Always Yes Uvijek d&a - + Options saved. Opcije spremljene. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime Nedostaje Python Runtime - + qBittorrent Update Available qBittorrent ažuriranje dostupno - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python je potreban kako bi se koristili pretraživači, ali čini se da nije instaliran. Želite li ga sada instalirati? - + Python is required to use the search engine but it does not seem to be installed. Python je potreban kako bi se koristili pretraživači, ali čini se da nije instaliran. - - + + Old Python Runtime Stari Python Runtime - + A new version is available. Dostupna je nova verzija. - + Do you want to download %1? Želite li preuzeti %1? - + Open changelog... Otvori dnevnik promjena... - + No updates available. You are already using the latest version. Nema dostupnih ažuriranja. Već koristite posljednju verziju. - + &Check for Updates &Provjeri ažuriranja - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Vaša verzija Pythona (%1) je zastarjela. Minimalni zahtjev: %2. Želite li sada instalirati noviju verziju? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Vaša verzija Pythona (%1) je zastarjela. Nadogradite na najnoviju verziju kako bi tražilice radile. Minimalni zahtjev: %2. - + + Paused + Pauzirano + + + Checking for Updates... Provjeravanje ažuriranja... - + Already checking for program updates in the background Već se provjeravaju softverska ažuriranja u pozadini - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Greška pri preuzimanju - Python setup could not be downloaded, reason: %1. Please install it manually. - Python setup nije moguće preuzeti. Razlog: %1. + Python setup nije moguće preuzeti. Razlog: %1. Instalirajte ručno. - - + + Invalid password Neispravna lozinka - + Filter torrents... Filtrirajte torrente... - + Filter by: Filtrirati po: - + The password must be at least 3 characters long Lozinka mora imati najmanje 3 znaka - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' sadrži .torrent datoteke, želite li nastaviti s njihovim preuzimanjem? - - - + The password is invalid Lozinka nije ispravna - + DL speed: %1 e.g: Download speed: 10 KiB/s Brzina preuzimanja: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Brzina slanja: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [P: %1, S: %2] qBittorrent %3 - - - + Hide Sakrij - + Exiting qBittorrent Izlaz iz qBittorrenta - + Open Torrent Files Otvori torrent datoteke - + Torrent Files Torrent datoteke @@ -4193,133 +4416,133 @@ Instalirajte ručno. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O pogreška: %1 - + The file size (%1) exceeds the download limit (%2) Veličina datoteke (%1) premašuje ograničenje preuzimanja (%2) - + Exceeded max redirections (%1) Premašeno maksimalno preusmjeravanje (%1) - + Redirected to magnet URI Preusmjeren na magnet URI - + The remote host name was not found (invalid hostname) Naziv udaljenog glavnog računala nije pronađen (nevažeći naziv glavnog računala) - + The operation was canceled Postupak je otkazan - + The remote server closed the connection prematurely, before the entire reply was received and processed Udaljeni poslužitelj je prerano zatvorio vezu, prije nego što je cijeli odgovor primljen i obrađen - + The connection to the remote server timed out Veza s udaljenim poslužiteljem je istekla - + SSL/TLS handshake failed SSL/TLS rukovanje nije uspjelo - + The remote server refused the connection Udaljeni poslužitelj je odbio vezu - + The connection to the proxy server was refused Veza s proxy poslužiteljem je odbijena - + The proxy server closed the connection prematurely Proxy poslužitelj je prerano zatvorio vezu - + The proxy host name was not found Naziv proxy hosta nije pronađen - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Veza s proxyjem je istekla ili proxy nije na vrijeme odgovorio na poslani zahtjev - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy zahtijeva autentifikaciju kako bi ispunio zahtjev, ali nije prihvatio nijednu ponuđenu vjerodajnicu - + The access to the remote content was denied (401) Pristup udaljenom sadržaju je odbijen (401) - + The operation requested on the remote content is not permitted Traženi postupak na udaljenom sadržaju nije dopušten - + The remote content was not found at the server (404) Udaljeni sadržaj nije pronađen na poslužitelju (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Udaljeni poslužitelj zahtijeva provjeru autentičnosti za posluživanje sadržaja, ali navedene vjerodajnice nisu prihvaćene - + The Network Access API cannot honor the request because the protocol is not known API za mrežni pristup ne može ispuniti zahtjev jer protokol nije poznat - + The requested operation is invalid for this protocol Traženi postupak nije važeći za ovaj protokol - + An unknown network-related error was detected Otkrivena je nepoznata pogreška povezana s mrežom - + An unknown proxy-related error was detected Otkrivena je nepoznata pogreška povezana s proxyjem - + An unknown error related to the remote content was detected Otkrivena je nepoznata pogreška povezana s udaljenim sadržajem - + A breakdown in protocol was detected Otkriven je kvar u protokolu - + Unknown error Nepoznata greška @@ -4327,7 +4550,12 @@ Instalirajte ručno. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignoriranje SSL pogreške, URL: "%1", pogreške: "%2" @@ -5699,476 +5927,537 @@ Instalirajte ručno. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Napredno - + Customize UI Theme... Prilagodite temu korisničkog sučelja... - + Transfer List Popis prijenosa - + Confirm when deleting torrents Potvrdi prilikom brisanja torrenta - Shows a confirmation dialog upon pausing/resuming all the torrents - Prikazuje dijaloški okvir potvrde nakon pauziranja/nastavljanja svih torrenta + Prikazuje dijaloški okvir potvrde nakon pauziranja/nastavljanja svih torrenta - Confirm "Pause/Resume all" actions - Potvrdite radnje "Pauziraj/nastavi sve". + Potvrdite radnje "Pauziraj/nastavi sve". - + Use alternating row colors In table elements, every other row will have a grey background. Koristi alternativne boje redova - + Hide zero and infinity values Sakrij nulte i beskonačne vrijednosti - + Always Uvijek - Paused torrents only - Samo pauzirani torrenti + Samo pauzirani torrenti - + Action on double-click Radnja na dvostruki klik - + Downloading torrents: Preuzimanje torrenta: - - Start / Stop Torrent - Start / Stop Torrent + Start / Stop Torrent - - + + Open destination folder Otvori odredišnu mapu - - + + No action Bez radnje - + Completed torrents: Dovršeni torrenti: - + Auto hide zero status filters Automatsko skrivanje filtera nultog statusa - + Desktop Radna površina - + Start qBittorrent on Windows start up Pokreni qBittorrent pri pokretanju Windowsa - + Show splash screen on start up Prikaži početni zaslon pri pokretanju - + Confirmation on exit when torrents are active Potvrda pri izlasku kada su torrenti aktivni - + Confirmation on auto-exit when downloads finish Potvrda pri automatskom izlasku kada se preuzimanja završe - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Kako biste postavili qBittorrent kao zadani program za .torrent datoteke i/ili Magnet veze<br/>možete koristiti<span style=" font-weight:600;">Zadani programi</span> dijaloški okvir <span style=" font-weight:600;">na upravljačkoj ploči.</span>.</p></body></html> + - + KiB KiB - + Torrent content layout: Izgled sadržaja torrenta: - + Original Original - + Create subfolder Stvori podmapu - + Don't create subfolder Nemoj stvarati podmapu - + The torrent will be added to the top of the download queue Torrent će biti dodan na vrh čekanja za preuzimanje - + Add to top of queue The torrent will be added to the top of the download queue Dodaj na vrh reda čekanja - + When duplicate torrent is being added Kada se dodaje dvostruki torrent - + Merge trackers to existing torrent Spojite trackere na postojeći torrent - + + Keep unselected files in ".unwanted" folder + Držite neodabrane datoteke u mapi ".neželjeno" + + + Add... Dodaj... - + Options.. Mogućnosti.. - + Remove Ukloni - + Email notification &upon download completion Obavijest e-poštom &nakon završetka - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Peer protokol povezivanja: - + Any Bilo koje - + I2P (experimental) I2P (eksperimentalno) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Ako je omogućen "mješoviti način rada", I2P torrentima je dopušteno da također dobiju vršnjake iz drugih izvora osim trackera, i povezuju se na regularne IP adrese, ne pružajući nikakvu anonimizaciju. Ovo može biti korisno ako korisnik nije zainteresiran za anonimizaciju I2P-a, ali i dalje želi imati mogućnost povezivanja s I2P peerovima.</p></body></html> + <html><head/><body><p>Ako je omogućen "mješoviti način rada", I2P torrentima je dopušteno da također dobiju vršnjake iz drugih izvora osim trackera, i povezuju se na regularne IP adrese, ne pružajući nikakvu anonimizaciju. Ovo može biti korisno ako korisnik nije zainteresiran za anonimizaciju I2P-a, ali i dalje želi imati mogućnost povezivanja s I2P peerovima.</p></body></html> - + Mixed mode Mješoviti način rada - + Some options are incompatible with the chosen proxy type! Neke opcije nisu kompatibilne s odabranom vrstom proxyja! - + If checked, hostname lookups are done via the proxy Ako je označeno, traženje naziva hosta vrši se putem proxyja - + Perform hostname lookup via proxy Izvršite traženje naziva hosta putem proxyja - + Use proxy for BitTorrent purposes Koristite proxy za BitTorrent svrhe - + RSS feeds will use proxy RSS izvori će koristiti proxy - + Use proxy for RSS purposes Koristite proxy za RSS svrhe - + Search engine, software updates or anything else will use proxy Tražilica, ažuriranja softvera ili bilo što drugo koristit će proxy - + Use proxy for general purposes Koristite proxy za općenite svrhe - + IP Fi&ltering IP Fi&ltriranje - + Schedule &the use of alternative rate limits Raspored i korištenje alternativnih ograničenja brzine - + From: From start time Od: - + To: To end time Do: - + Find peers on the DHT network Pronađite peerove na DHT mreži - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption Dopusti enkripciju: Poveži se s peerovima bez obzira na postavku. Zahtijeva enkripciju: Poveži se samo s peerovima s enkripcijom protokola. Onemogući enkripciju: Poveži se samo s peerovima bez enkripcije protokola - + Allow encryption Dopusti enkripciju - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Više informacija</a>) - + Maximum active checking torrents: Najviše aktivnih torrenta: - + &Torrent Queueing Red čekanja &torrenta - + When total seeding time reaches Kada ukupno vrijeme seedanja dosegne - + When inactive seeding time reaches Kada neaktivno vrijeme seedanja dosegne - A&utomatically add these trackers to new downloads: - A&utomatski dodaj ove trackere za nova preuzimanja: + A&utomatski dodaj ove trackere za nova preuzimanja: - + RSS Reader RSS čitač - + Enable fetching RSS feeds Omogući dohvaćanje RSS izvora - + Feeds refresh interval: Interval osvježavanja feedova: - + + Same host request delay: + Odgoda zahtjeva istog hosta: + + + Maximum number of articles per feed: Najveći broj članaka po kanalu: - - - + + + min minutes min - + Seeding Limits Ograničenja dijeljenja - Pause torrent - Pauziraj torrente + Pauziraj torrente - + Remove torrent Ukloni torrent - + Remove torrent and its files Ukloni torrent i njegove datoteke - + Enable super seeding for torrent Omogući super dijeljenje za torrent - + When ratio reaches Kada se dosegne omjer - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents Omogući automatsko preuzimanje RSS torrenta - + Edit auto downloading rules... Uredi pravila automatskog preuzimanja... - + RSS Smart Episode Filter RSS pametni filtar epizoda - + Download REPACK/PROPER episodes Preuzmite REPACK/PROPER epizode - + Filters: Filteri: - + Web User Interface (Remote control) Web korisničko sučelje (daljinsko upravljanje) - + IP address: IP addresa: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. IP adresa na koju će se vezati web sučelje. Navedite IPv4 ili IPv6 adresu. Možete navesti "0.0.0.0" za bilo koju IPv4 adresu, "::" za bilo koju IPv6 adresu ili "*" za IPv4 i IPv6. - + Ban client after consecutive failures: Ban klijenta nakon uzastopnih neuspjeha: - + Never Nikad - + ban for: zabrana za: - + Session timeout: Istek sesije: - + Disabled Onemogućeno - Enable cookie Secure flag (requires HTTPS) - Omogući sigurnu oznaku kolačića (zahtijeva HTTPS) + Omogući sigurnu oznaku kolačića (zahtijeva HTTPS) - + Server domains: Domene poslužitelja: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6181,442 +6470,495 @@ trebali biste unijeti nazive domena koje koristi WebUI poslužitelj. Koristite ';' za razdvajanje više unosa. Možete koristiti zamjenski znak '*'. - + &Use HTTPS instead of HTTP &Koristite HTTPS umjesto HTTP-a - + Bypass authentication for clients on localhost Zaobilaženje autentifikacije za klijente na lokalnom hostu - + Bypass authentication for clients in whitelisted IP subnets Zaobilaženje autentifikacije za klijente u IP podmrežama na popisu dopuštenih - + IP subnet whitelist... Popis dopuštenih IP podmreža... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Navedite obrnute proxy IP adrese (ili podmreže, npr. 0.0.0.0/24) kako biste koristili prosljeđenu adresu klijenta (X-Prosljeđeno-Za zaglavlje). Koristite ';' za razdvajanje više unosa. - + Upda&te my dynamic domain name Ažuriraj &moj dinamički naziv domene - + Minimize qBittorrent to notification area Minimiziraj qBittorrent u prostor obavijesti - + + Search + Traži + + + + WebUI + + + + Interface Sučelje - + Language: Jezik: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Izgled ikone na sistemskoj traci: - - + + Normal Normalno - + File association Pridruživanje datoteka - + Use qBittorrent for .torrent files Koristi qBittorrent za .torrent datoteke - + Use qBittorrent for magnet links Koristi qBittorrent za magnetne poveznice - + Check for program updates Provjeri ažuriranja programa - + Power Management Upravljanje napajanjem - + + &Log Files + + + + Save path: Putanja spremanja: - + Backup the log file after: Sigurnosno kopiraj datoteku zapisa nakon: - + Delete backup logs older than: Izbriši sigurnosne zapisnike starije od: - + + Show external IP in status bar + + + + When adding a torrent Prilikom dodavanja torrenta - + Bring torrent dialog to the front Postavi dijalog torrenta ispred. - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Također izbrišite .torrent datoteke čije je dodavanje otkazano - + Also when addition is cancelled Također kada je dodavanje poništeno - + Warning! Data loss possible! Upozorenje! Moguć gubitak podataka! - + Saving Management Upravljanje spremanjem - + Default Torrent Management Mode: Zadani način upravljanja torrentom: - + Manual Ručno - + Automatic Automatski - + When Torrent Category changed: Kada se promjeni torrent kategorija: - + Relocate torrent Premjesti torrent - + Switch torrent to Manual Mode Prebaci torrent u ručni način rada - - + + Relocate affected torrents Premjestite pogođene torrente - - + + Switch affected torrents to Manual Mode Prebacite pogođene torrente u ručni način rada - + Use Subcategories Koristite potkategorije - + Default Save Path: Zadana putanja spremanja: - + Copy .torrent files to: Kopiraj .torrent datoteke u: - + Show &qBittorrent in notification area Prikaži &qBittorrent u području obavijesti - &Log file - &Datoteka zapisa + &Datoteka zapisa - + Display &torrent content and some options Prikaži &torrent sadržaj i neke opcije - + De&lete .torrent files afterwards Nakon &toga izbrišite .torrent datoteke - + Copy .torrent files for finished downloads to: Kopirajte .torrent datoteke za završena preuzimanja u: - + Pre-allocate disk space for all files Prethodno dodijelite prostor na disku za sve datoteke - + Use custom UI Theme Koristite prilagođenu temu korisničkog sučelja - + UI Theme file: Datoteka teme korisničkog sučelja: - + Changing Interface settings requires application restart Promjena postavki sučelja zahtijeva ponovno pokretanje aplikacije - + Shows a confirmation dialog upon torrent deletion Prikazuje dijaloški okvir za potvrdu nakon brisanja torrenta - - + + Preview file, otherwise open destination folder Pregledajte datoteku, ili otvorite odredišnu mapu - - Show torrent options - Prikaži opcije torrenta + Prikaži opcije torrenta - + Shows a confirmation dialog when exiting with active torrents Prikazuje dijaloški okvir za potvrdu pri izlasku s aktivnim torrentima - + When minimizing, the main window is closed and must be reopened from the systray icon Prilikom minimiziranja, glavni prozor se zatvara i mora se ponovno otvoriti iz ikone na traci - + The systray icon will still be visible when closing the main window Ikona sistemske trake i dalje će biti vidljiva kada zatvorite glavni prozor - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Zatvorite qBittorrent u područje obavijesti - + Monochrome (for dark theme) Jednobojno (za tamnu temu) - + Monochrome (for light theme) Jednobojno (za svjetlu temu) - + Inhibit system sleep when torrents are downloading Onemogući stanje mirovanja sustava kada se torrenti preuzimaju - + Inhibit system sleep when torrents are seeding Onemogući stanje mirovanja sustava kada se torrenti dijele - + Creates an additional log file after the log file reaches the specified file size Stvara dodatnu datoteku dnevnika nakon što datoteka dnevnika dosegne navedenu veličinu datoteke - + days Delete backup logs older than 10 days dana - + months Delete backup logs older than 10 months mjeseci - + years Delete backup logs older than 10 years godine - + Log performance warnings Zapis upozorenja o performansama - The torrent will be added to download list in a paused state - Torrent će biti dodan na popis preuzimanja u pauziranom stanju + Torrent će biti dodan na popis preuzimanja u pauziranom stanju - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Nemojte automatski pokretati preuzimanje - + Whether the .torrent file should be deleted after adding it Treba li .torrent datoteku izbrisati nakon dodavanja - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Dodijelite punu veličinu datoteke na disku prije početka preuzimanja kako biste smanjili fragmentaciju. Korisno samo za HDD. - + Append .!qB extension to incomplete files Dodajte ekstenziju .!qB nepotpunim datotekama - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Kada se torrent preuzme, ponudite dodavanje torrenta iz bilo koje .torrent datoteke koja se nalazi u njemu - + Enable recursive download dialog Omogući rekurzivni dijaloški okvir preuzimanja - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatski: Različita svojstva torrenta (npr. put spremanja) odlučit će pridružena kategorija Ručno: različita svojstva torrenta (npr. put spremanja) moraju se dodijeliti ručno - + When Default Save/Incomplete Path changed: Kada se promijeni zadana putanja spremanja/nepotpunog: - + When Category Save Path changed: Kada se putanja spremanja kategorije promijenila: - + Use Category paths in Manual Mode Koristite putanje kategorija u ručnom načinu rada - + Resolve relative Save Path against appropriate Category path instead of Default one Razriješi relativnu putanju spremanja s odgovarajućom putanjom kategorije umjesto zadane - + Use icons from system theme Koristite ikone iz teme sustava - + Window state on start up: Stanje prozora pri pokretanju: - + qBittorrent window state on start up Stanje prozora qBittorrent pri pokretanju - + Torrent stop condition: Uvjet zaustavljanja torrenta: - - + + None Nijedno - - + + Metadata received Metapodaci primljeni - - + + Files checked Provjerene datoteke - + Ask for merging trackers when torrent is being added manually Traži spajanje trackera kada se torrent dodaje ručno - + Use another path for incomplete torrents: Koristite drugu putanju za nepotpune torrente: - + Automatically add torrents from: Automatski dodaj torrente iz: - + Excluded file names Izuzeti nazivi datoteka - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6645,841 +6987,914 @@ readme.txt: filtrirajte točan naziv datoteke. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' ali ne i 'readme10.txt'. - + Receiver Primatelj - + To: To receiver Za: - + SMTP server: SMTP poslužitelj: - + Sender Pošiljatelj - + From: From sender Od: - + This server requires a secure connection (SSL) Ovaj poslužitelj zahtijeva sigurnu vezu (SSL) - - + + Authentication Autentifikacija - - - - + + + + Username: Korisničko ime: - - - - + + + + Password: Lozinka: - + Run external program Pokrenite vanjski program - Run on torrent added - Pokretanje na dodanom torrentu + Pokretanje na dodanom torrentu - Run on torrent finished - Pokretanje na završenom torrentu + Pokretanje na završenom torrentu - + Show console window Prikaži prozor konzole - + TCP and μTP TCP i μTP - + Listening Port Port za slušanje - + Port used for incoming connections: Port koji se koristi za dolazne veze: - + Set to 0 to let your system pick an unused port Postavite na 0 kako bi vaš sustav odabrao neiskorišteni port - + Random Nasumično - + Use UPnP / NAT-PMP port forwarding from my router Koristi UPnP / NAT-PMP prosljeđivanje portova s ​​mog usmjerivača - + Connections Limits Ograničenja veza - + Maximum number of connections per torrent: Maksimalan broj veza po torrentu: - + Global maximum number of connections: Ukupno najveći broj veza: - + Maximum number of upload slots per torrent: Maksimalan broj utora za učitavanje po torrentu: - + Global maximum number of upload slots: Globalno najveći broj slotova za učitavanje: - + Proxy Server Proxy poslužitelj - + Type: Vrsta: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Inače, proxy poslužitelj koristi se samo za veze s trackerom - + Use proxy for peer connections Koristite proxy za peer veze - + A&uthentication A&utentifikacija - + Info: The password is saved unencrypted Info: Lozinka je spremljena nekriptirana - + Filter path (.dat, .p2p, .p2b): Putanja filtera (.dat, .p2p, .p2b): - + Reload the filter Ponovno učitaj filter - + Manually banned IP addresses... Ručno zabranjene IP adrese... - + Apply to trackers Primjeni na trackere - + Global Rate Limits Globalno ograničenje brzine - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Slanje: - - + + Download: Preuzimanje: - + Alternative Rate Limits Alternativno ograničenje brzine - + Start time Vrijeme početka - + End time Vrijeme završetka - + When: Kada: - + Every day Svaki dan - + Weekdays Radni dani - + Weekends Vikend - + Rate Limits Settings Postavke ograničenja brzine - + Apply rate limit to peers on LAN Primijeni ograničenje brzine na peerove na LAN-u - + Apply rate limit to transport overhead Primijeni ograničenje stope na troškove prijenosa - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Primijeni ograničenje brzine na µTP protokol - + Privacy Privatnost - + Enable DHT (decentralized network) to find more peers Omogućite DHT (decentraliziranu mrežu) za pronalaženje više peerova - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Razmjena peerova s kompatibilnim Bittorrent klijentima (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Omogućite Peer Exchange (PeX) da pronađete više peerova - + Look for peers on your local network Potražite peerove na svojoj lokalnoj mreži - + Enable Local Peer Discovery to find more peers Omogućite Local Peer Discovery za pronalaženje više peerova - + Encryption mode: Način kriptiranja: - + Require encryption Zahtjevaj kriptiranje - + Disable encryption Onemogući kriptiranje - + Enable when using a proxy or a VPN connection Omogućite kada koristite proxy ili VPN vezu - + Enable anonymous mode Omogući anonimni način rada - + Maximum active downloads: Maksimalan broj aktivnih preuzimanja: - + Maximum active uploads: Maksimalan broj aktivnih slanja: - + Maximum active torrents: Maksimalni broj aktivnih torrenta: - + Do not count slow torrents in these limits Ne ubrajajte spore torrente u ova ograničenja - + Upload rate threshold: Prag brzine slanja: - + Download rate threshold: Prag brzine preuzimanja: - - - + + + + sec seconds sek - + Torrent inactivity timer: Odbrojavanje vremena neaktivnosti torrenta: - + then tada - + Use UPnP / NAT-PMP to forward the port from my router Koristite UPnP / NAT-PMP za prosljeđivanje porta s mog usmjerivača - + Certificate: Certifikat: - + Key: Ključ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informacije o certifikatima</a> - + Change current password Promjena trenutne lozinke - Use alternative Web UI - Koristite alternativno web sučelje + Koristite alternativno web sučelje - + Files location: Lokacija datoteka: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Sigurnost - + Enable clickjacking protection Omogući zaštitu od clickjackinga - + Enable Cross-Site Request Forgery (CSRF) protection Omogućite Cross-Site Request Forgery (CSRF) zaštitu - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Omogući provjeru valjanosti zaglavlja hosta - + Add custom HTTP headers Dodajte prilagođena HTTP zaglavlja - + Header: value pairs, one per line Zaglavlje: parovi vrijednosti, jedan po retku - + Enable reverse proxy support Omogući podršku za obrnuti proxy - + Trusted proxies list: Popis pouzdanih proxyja: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servis: - + Register Registar - + Domain name: Naziv domene: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Uključivanjem ovih opcija možete <strong>nepovratno izgubiti </strong>svoje .torrent datoteke! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Ako omogućite drugu opciju (“Također kada je dodavanje otkazano”), .torrent datoteka <strong>će biti izbrisana</strong> čak i ako pritisnete <strong>Odustani</strong> u dijaloškom okviru “Dodaj torrent” - + Select qBittorrent UI Theme file Odaberite datoteku teme korisničkog sučelja za qBittorrent - + Choose Alternative UI files location Odaberite lokaciju alternativnih datoteka korisničkog sučelja - + Supported parameters (case sensitive): Podržani parametri (razlikuje velika i mala slova): - + Minimized Minimizirano - + Hidden Skriveno - + Disabled due to failed to detect system tray presence Onemogućeno jer nije uspjelo otkriti prisutnost programske trake - + No stop condition is set. Nije postavljen uvjet zaustavljanja. - + Torrent will stop after metadata is received. Torrent će se zaustaviti nakon što primi metapodatke. - - Torrents that have metadata initially aren't affected. - Torenti koji inicijalno imaju metapodatke nisu pogođeni. - - - + Torrent will stop after files are initially checked. Torrent će se zaustaviti nakon početne provjere datoteka. - + This will also download metadata if it wasn't there initially. Ovo će također preuzeti metapodatke ako nisu bili tu na početku. - + %N: Torrent name %N: Ime torrenta - + %L: Category %L: Kategorija - + %F: Content path (same as root path for multifile torrent) %F: Putanja sadržaja (isto kao korijenska putanja za torrent s više datoteka) - + %R: Root path (first torrent subdirectory path) %R: korijenska putanja (putnja prvog torrent poddirektorija) - + %D: Save path %D: Putanja za spremanje - + %C: Number of files %C: Broj datoteka - + %Z: Torrent size (bytes) %Z: Veličina torrenta (bajtovi) - + %T: Current tracker %T: Trenutni tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Savjet: Enkapsulirajte parametar s navodnicima kako biste izbjegli odsijecanje teksta na razmaku (npr. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nijedno) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent će se smatrati sporim ako njegove stope preuzimanja i slanja ostaju ispod ovih vrijednosti za "Odbrojavanje vremena neaktivnosti torrenta" sekunde - + Certificate Certifikat - + Select certificate Odaberi certifikat - + Private key Privatni ključ - + Select private key Odaberi privatni ključ - + + WebUI configuration failed. Reason: %1 + WebUI konfiguracija nije uspjela. Razlog: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Odaberite mapu za praćenje - + Adding entry failed Dodavanje unosa nije uspjelo - - Location Error - Pogreška lokacije + + The WebUI username must be at least 3 characters long. + WebUI korisničko ime mora imati najmanje 3 znaka. + + + + The WebUI password must be at least 6 characters long. + WebUI lozinka mora imati najmanje 6 znakova. - - The alternative Web UI files location cannot be blank. - Alternativna lokacija datoteka web sučelja ne može biti prazna. + + Location Error + Pogreška lokacije - - + + Choose export directory Odaberite direktorij za izvoz - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Kada su ove opcije omogućene, qBittorrent će <strong>izbrisati</strong> .torrent datoteke nakon što su uspješno (prva opcija) ili ne (druga opcija) dodane u njegov red čekanja za preuzimanje. Ovo će se primijeniti <strong>ne samo</strong> na datoteke otvorene putem radnje izbornika "Dodaj torrent", već i na one otvorene putem <strong>povezivanja vrste datoteke</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Datoteka teme qBittorrent UI (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Oznake (odvojene zarezom) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (ili '-' ako nije dostupno) - + %J: Info hash v2 (or '-' if unavailable) %J: Info hash v2 (ili '-' ako nije dostupno) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID torrenta (ili sha-1 info hash za v1 torrent ili skraćeni sha-256 info hash za v2/hybrid torrent) - - - + + + Choose a save directory Izaberite direktorij za spremanje - + + Torrents that have metadata initially will be added as stopped. + Torrenti koji inicijalno imaju metapodatke bit će dodani kao zaustavljeni. + + + Choose an IP filter file Odaberi datoteku IP filtera - + All supported filters Svi podržani filteri - + + The alternative WebUI files location cannot be blank. + Alternativna lokacija WebUI datoteka ne može biti prazna. + + + Parsing error Greška razrješavanja - + Failed to parse the provided IP filter Razrješavanje danog IP filtera nije uspjelo - + Successfully refreshed Uspješno osvježeno - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Uspješno analiziran osigurani IP filter: %1 pravila su primijenjena. - + Preferences Postavke - + Time Error Vremenska pogreška - + The start time and the end time can't be the same. Vrijeme početka i vrijeme završetka ne može biti isto. - - + + Length Error Pogreška duljine - - - The Web UI username must be at least 3 characters long. - Korisničko ime web sučelja mora imati najmanje 3 znaka. - - - - The Web UI password must be at least 6 characters long. - Korisničko ime web sučelja mora imati najmanje 6 znakova. - PeerInfo - + Unknown Nepoznato - + Interested (local) and choked (peer) Zainteresiran (lokalno) i zagušen (peer) - + Interested (local) and unchoked (peer) Zainteresiran (lokalno) i nezagušen (peer) - + Interested (peer) and choked (local) Zainteresiran (peer) i zagušen (lokalno) - + Interested (peer) and unchoked (local) Zainteresiran (peer) i nezagušen (lokalno) - + Not interested (local) and unchoked (peer) Nezainteresiran (lokalni) i nezagušen (peer) - + Not interested (peer) and unchoked (local) Nezainteresiran (peer) i nezagušen (lokalno) - + Optimistic unchoke Optimističan nezagušen - + Peer snubbed Peer je prezreo - + Incoming connection Dolazna veza - + Peer from DHT Peer iz DHT-a - + Peer from PEX Peer iz PEX-a - + Peer from LSD Peer iz LSD-a - + Encrypted traffic Šifrirani promet - + Encrypted handshake kriptirano usklađivanje + + + Peer is using NAT hole punching + + PeerListWidget @@ -7635,7 +8050,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' ali ne Peer "%1" je ručno zabranjen - + N/A N/A @@ -7658,7 +8073,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' ali ne Popis peerova za dodavanje (jedan IP po retku): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7699,27 +8114,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' ali ne PiecesBar - + Files in this piece: Datoteke u ovom dijelu: - + File in this piece: Datoteka u ovom dijelu: - + File in these pieces: Datoteka u ovom dijelovima: - + Wait until metadata become available to see detailed information Pričekajte dok metapodaci ne postanu dostupni da biste vidjeli detaljne informacije - + Hold Shift key for detailed information Držite tipku Shift za detaljne informacije @@ -7732,59 +8147,59 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' ali ne Dodaci za pretraživanja - + Installed search plugins: Instalirani dodaci za pretraživanja: - + Name Naziv - + Version Verzija - + Url Url - - + + Enabled Omogućeno - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Upozorenje: Budite u skladu sa zakonima o autorskim pravima vaše zemlje kada preuzimate torrente s bilo koje od ovih tražilica. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Nove dodatke za tražilice možete preuzeti ovdje:<a href="https://plugins.qbittorrent.org"> https://plugins.qbittorrent.org</a> - + Install a new one Instalirajte novi - + Check for updates Provjerite ažuriranja - + Close Zatvori - + Uninstall Deinstalirajte @@ -7904,17 +8319,17 @@ Ti dodaci su onemogućeni. Izvor dodatka - + Search plugin source: Pretražite izvor dodatka: - + Local file Lokalna datoteka - + Web link Web link @@ -7932,70 +8347,70 @@ Ti dodaci su onemogućeni. Power management found suitable D-Bus interface. Interface: %1 - + Upravljanje napajanjem pronašlo je odgovarajuće D-Bus sučelje. Sučelje: %1 Power management error. Did not found suitable D-Bus interface. - + Pogreška upravljanja napajanjem. Nije pronađeno odgovarajuće D-Bus sučelje. Power management error. Action: %1. Error: %2 - + Pogreška upravljanja napajanjem. Radnja: %1. Pogreška: %2 Power management unexpected error. State: %1. Error: %2 - + Neočekivana pogreška upravljanja napajanjem. Stanje: %1. Pogreška: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Sljedeće datoteke iz torrenta "%1" podržavaju pretpregled, odaberite jednu od njih: - + Preview Pregled - + Name Naziv - + Size Veličina - + Progress Napredak - + Preview impossible Pregled nije moguć - + Sorry, we can't preview this file: "%1". Nažalost, ne možemo pregledati ovu datoteku: "%1". - + Resize columns Promjena veličine stupaca - + Resize all non-hidden columns to the size of their contents Promijenite veličinu svih neskrivenih stupaca na veličinu njihovog sadržaja @@ -8008,27 +8423,27 @@ Ti dodaci su onemogućeni. Private::FileLineEdit - + Path does not exist Putanja ne postoji. - + Path does not point to a directory Putanja ne pokazuje na direktorij - + Path does not point to a file Put ne pokazuje na datoteku - + Don't have read permission to path Nemate dopuštenje za čitanje putanje - + Don't have write permission to path Nemate dopuštenje za pisanje na putanju @@ -8069,12 +8484,12 @@ Ti dodaci su onemogućeni. PropertiesWidget - + Downloaded: Preuzeto: - + Availability: Dostupnost: @@ -8089,53 +8504,53 @@ Ti dodaci su onemogućeni. Prijenos - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktivno vrijeme: - + ETA: ETA: - + Uploaded: Poslano: - + Seeds: Seederi: - + Download Speed: Brzina preuzimanja: - + Upload Speed: Brzina slanja: - + Peers: Peerovi: - + Download Limit: Ograničenje preuzimanja: - + Upload Limit: Ograničenje slanja: - + Wasted: Izgubljeno: @@ -8145,193 +8560,249 @@ Ti dodaci su onemogućeni. Spajanja: - + Information Informacija - + Info Hash v1: Info hash v1: - + Info Hash v2: Info hash v2: - + Comment: Komentar: - + Select All Odaberi sve - + Select None Ne odaberi ništa - + Share Ratio: Omjer dijeljenja: - + Reannounce In: Ponovno najavi za: - + Last Seen Complete: Zadnje viđen završeni: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Ukupna veličina: - + Pieces: Dijelovi: - + Created By: Stvorio: - + Added On: Dodan: - + Completed On: Završen: - + Created On: Napravljan: - + + Private: + + + + Save Path: Putanja spremanja: - + Never Nikada - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ima %3) - - + + %1 (%2 this session) %1 (%2 ove sesije) - - + + + N/A N/A - + + Yes + Da + + + + No + Ne + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedano za %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 ukupno) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 prosj.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Novi web seed + Novi web seed - Remove Web seed - Ukloni web seed + Ukloni web seed - Copy Web seed URL - Kopiraj URL web seeda + Kopiraj URL web seeda - Edit Web seed URL - Uredi URL web seeda + Uredi URL web seeda - + Filter files... Filtriraj datoteke... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Grafikoni brzine su onemogućeni - + You can enable it in Advanced Options Možete omogućiti u naprednim opcijama - New URL seed New HTTP source - Novi seed URL + Novi seed URL - New URL seed: - Novi seed URL: + Novi seed URL: - - This URL seed is already in the list. - Ovaj URL seed je već u listi. + Ovaj URL seed je već u listi. - + Web seed editing Uređivanje web seeda - + Web seed URL: URL web seeda: @@ -8350,22 +8821,22 @@ Ti dodaci su onemogućeni. Nije moguće spremiti podatke RSS AutoDownloadera u %1. Pogreška: %2 - + Invalid data format Nevažeći format podataka - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS članak '%1' prihvaća pravilo '%2'. Pokušavam dodati torrent... - + Failed to read RSS AutoDownloader rules. %1 Neuspješno čitanje RSS AutoDownloader pravila. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Nije moguće učitati pravila RSS AutoDownloadera. Razlog: %1 @@ -8373,22 +8844,22 @@ Ti dodaci su onemogućeni. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Nije uspjelo preuzimanje RSS kanala na '%1'. Razlog: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS kanal je ažuriran na '%1'. Dodano %2 nova članka. - + Failed to parse RSS feed at '%1'. Reason: %2 Nije uspjelo analiziranje RSS kanala na '%1'. Razlog: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS kanal na '%1' je uspješno preuzet. Započeto analiziranje. @@ -8424,12 +8895,12 @@ Ti dodaci su onemogućeni. RSS::Private::Parser - + Invalid RSS feed. Nevažeći RSS kanal. - + %1 (line: %2, column: %3, offset: %4). %1 (redak: %2, stupac: %3, pomak: %4). @@ -8437,99 +8908,99 @@ Ti dodaci su onemogućeni. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Nije moguće spremiti konfiguraciju RSS sesije. Datoteka: "%1". Greška: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Nije moguće spremiti podatke RSS sesije. Datoteka: "%1". Greška: "%2" - - + + RSS feed with given URL already exists: %1. RSS kanal s danim URL-om već postoji: %1. - + Feed doesn't exist: %1. Feed ne postoji: %1. - + Cannot move root folder. Nije moguće premjestiti korijensku mapu. - - + + Item doesn't exist: %1. Stavka ne postoji: %1. - + Couldn't move folder into itself. Nije moguće premjestiti mapu u samu mapu. - + Cannot delete root folder. Nije moguće izbrisati korijensku mapu. - + Failed to read RSS session data. %1 Neuspješno čitanje RSS sesije podataka. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Nije uspjelo analiziranje podataka RSS sesije. Datoteka: "%1". Greška: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Nije uspjelo učitavanje podataka RSS sesije. Datoteka: "%1". Pogreška: "Nevažeći format podataka." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Nije moguće učitati RSS feed. Feed: "%1". Razlog: potreban je URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Nije moguće učitati RSS feed. Feed: "%1". Razlog: UID je nevažeći. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Duplicirani RSS feed pronađen. UID: "%1". Pogreška: Čini se da je konfiguracija oštećena. - + Couldn't load RSS item. Item: "%1". Invalid data format. Nije moguće učitati RSS stavku. Stavka: "%1". Nevažeći format podataka. - + Corrupted RSS list, not loading it. Oštećen RSS popis, ne učitava se. - + Incorrect RSS Item path: %1. Neispravna putanja RSS stavke: %1. - + RSS item with given path already exists: %1. RSS stavka s danom putanjom već postoji: %1. - + Parent folder doesn't exist: %1. Nadređena mapa ne postoji: %1. @@ -8553,8 +9024,8 @@ Ti dodaci su onemogućeni. - - + + Mark items read Označi stavke kao pročitane @@ -8579,132 +9050,132 @@ Ti dodaci su onemogućeni. Torrenti: (dupli klik za preuzimanje) - - + + Delete Ukloni - + Rename... Preimenuj... - + Rename Preimenovanje - - + + Update Ažuriraj - + New subscription... Nova pretplata... - - + + Update all feeds Ažuriraj sve kanale - + Download torrent Preuzimanje torrenta - + Open news URL Otvori URL vijesti - + Copy feed URL Kopiraj URL kanala - + New folder... Nova mapa... - + Edit feed URL... Uredi URL feeda... - + Edit feed URL Uredi URL feeda - + Please choose a folder name Izaberite naziv mape - + Folder name: Naziv mape: - + New folder Nova mapa - - + + Please type a RSS feed URL Molimo upišite URL RSS kanala - - + + Feed URL: URL kanala: - + Deletion confirmation Potvrda brisanja - + Are you sure you want to delete the selected RSS feeds? Jeste li sigurni da želite izbrisati odabrane RSS kanale? - + Please choose a new name for this RSS feed Odaberite novi naziv za ovaj RSS kanal - + New feed name: Novi naziv kanala: - + Rename failed Preimenovanje nije uspjelo - + Date: Datum: - + Feed: - + Feed: - + Author: Autor: @@ -8712,38 +9183,38 @@ Ti dodaci su onemogućeni. SearchController - + Python must be installed to use the Search Engine. Python mora biti instaliran za korištenje tražilice. - + Unable to create more than %1 concurrent searches. Nije moguće stvoriti više od %1 istodobnih pretraga. - - + + Offset is out of range Pomak je izvan raspona - + All plugins are already up to date. Svi dodaci su već ažurirani. - + Updating %1 plugins Ažuriranje %1 dodataka - + Updating plugin %1 Ažuriranje dodatka %1 - + Failed to check for plugin updates: %1 Provjera ažuriranja dodataka nije uspjela: %1 @@ -8818,132 +9289,146 @@ Ti dodaci su onemogućeni. Veličina: - + Name i.e: file name Ime - + Size i.e: file size Veličina - + Seeders i.e: Number of full sources Seederi - + Leechers i.e: Number of partial sources Leecheri - Search engine - Pretraživač + Pretraživač - + Filter search results... Filtriraj rezultate pretraživanja... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Rezultati (prikazano <i>%1</i> od <i>%2</i>): - + Torrent names only Samo nazivi torrenta - + Everywhere Svugdje - + Use regular expressions Koristite regularne izraze - + Open download window Otvori prozor za preuzimanje - + Download Preuzimanje - + Open description page Otvaranje stranice opisa - + Copy Kopiraj - + Name Ime - + Download link Link preuzimanja - + Description page URL URL stranice opisa - + Searching... Pretraživanje... - + Search has finished Pretraga je završila - + Search aborted Pretraga prekinuta - + An error occurred during search... Greška prilikom pretrage... - + Search returned no results Potraga vraćena bez rezultata - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Vidljivost stupca - + Resize columns Promjena veličine stupaca - + Resize all non-hidden columns to the size of their contents Promjena veličine svih neskrivenih stupaca na veličinu njihovog sadržaja @@ -8951,104 +9436,104 @@ Ti dodaci su onemogućeni. SearchPluginManager - + Unknown search engine plugin file format. Nepoznat format datoteke dodatka za pretraživanje - + Plugin already at version %1, which is greater than %2 Dodatak je već u verziji %1, koja je veća od %2 - + A more recent version of this plugin is already installed. Novija verzija ovog dodatka je već instalirana. - + Plugin %1 is not supported. Dodatak %1 nije podržan. - - + + Plugin is not supported. Dodatak nije podržan. - + Plugin %1 has been successfully updated. Dodatak %1 je uspješno ažuriran. - + All categories Sve kategorije - + Movies Filmovi - + TV shows TV serije - + Music Glazba - + Games Igre - + Anime Animirani - + Software Softver - + Pictures Slike - + Books Knjige - + Update server is temporarily unavailable. %1 Poslužitelj za ažuriranje je privremeno nedostupan. %1 - - + + Failed to download the plugin file. %1 Neuspjeh u preuzimanju datoteke dodatka. %1 - + Plugin "%1" is outdated, updating to version %2 Dodatak "%1" je zastario, ažurira se na verziju %2 - + Incorrect update info received for %1 out of %2 plugins. Primljene su netočne informacije o ažuriranju za %1 od %2 dodataka. - + Search plugin '%1' contains invalid version string ('%2') Dodatak za pretraživanje '%1' sadrži nevažeći niz verzije ('%2') @@ -9058,114 +9543,153 @@ Ti dodaci su onemogućeni. - - - - Search Traži - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Nema instaliranih dodataka za pretraživanje. Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da biste instalirali neke. - + Search plugins... Dodaci za pretraživanje... - + A phrase to search for. Izraz za pretraživanje. - + Spaces in a search term may be protected by double quotes. Razmaci u izrazu pretraživanja mogu biti zaštićeni sa duplim navodnicima. - + Example: Search phrase example Primjer: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: traži <b>foo bar</b> - + All plugins Svi dodaci - + Only enabled Samo omogućeno - + + + Invalid data format. + Nevažeći format podataka. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: traži <b>foo</b> i <b>bar</b> - + + Refresh + + + + Close tab Zatvori karticu - + Close all tabs Zatvori sve kartice - + Select... Odaberi... - - - + + Search Engine Dodaci za pretraživanje - + + Please install Python to use the Search Engine. Molimo instalirajte Python kako bi koristili Pretraživače - + Empty search pattern Prazan obrazac za pretraživanje - + Please type a search pattern first Prvo upišite obrazac za pretraživanje - + + Stop Zaustavi - Search has finished - Pretraga je završila + Pretraga je završila - Search has failed - Pretraga nije uspjela + Pretraga nije uspjela + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9278,34 +9802,34 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi - + Upload: Slanje: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Preuzimanje: - + Alternative speed limits Alternativni limiti brzine @@ -9497,32 +10021,32 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi Prosječno vrijeme u redu čekanja: - + Connected peers: Povezanih peerova: - + All-time share ratio: Sveukupni omjer udjela: - + All-time download: Sveukupno preuzimanje: - + Session waste: Gubitak sesije: - + All-time upload: Sveukupno slanje: - + Total buffer size: Ukupna veličina međumemorije: @@ -9537,12 +10061,12 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi Poslova I/O u redu: - + Write cache overload: Preopterećenje pisanja predmemorije: - + Read cache overload: Preopterećenje čitanja predmemorije: @@ -9561,51 +10085,67 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi StatusBar - + Connection status: Status veze: - - + + No direct connections. This may indicate network configuration problems. Nema izravnih spajanja. Ovo može značiti probleme u postavkama mreže. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 čvorova - + qBittorrent needs to be restarted! qBittorrent treba ponovno pokrenuti! - - - + + + Connection Status: Status spajanja: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Odspojeno. Ovo najčešće znači da qBittorrent nije uspio u očekivanju veze na odabranom portu za dolazna spajanja. - + Online Spojeno - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Kliknite za prelazak na alternativna ograničenja brzine - + Click to switch to regular speed limits Kliknite za prelazak na uobičajena ograničenja brzine @@ -9634,14 +10174,22 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi Završeno (0) - Resumed (0) - Nastavljeno (0) + Nastavljeno (0) - Paused (0) - Pauzirano (0) + Pauzirano (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9703,10 +10251,29 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi Completed (%1) Završeno (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pauzirano (%1) + Pauzirano (%1) @@ -9714,14 +10281,12 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi Premještanje (%1) - Resume torrents - Nastavi torrente + Nastavi torrente - Pause torrents - Pauziraj torrente + Pauziraj torrente @@ -9729,9 +10294,8 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi Ukloni torrente - Resumed (%1) - Nastavljeno (%1) + Nastavljeno (%1) @@ -9772,17 +10336,17 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi TagFilterModel - + Tags Oznake - + All Sve - + Untagged Neoznačeno @@ -9790,52 +10354,64 @@ Pritisnite gumb "Traži dodatke..." u donjem desnom kutu prozora da bi TagFilterWidget - + Add tag... Dodaj oznaku... - + Remove tag Ukloni oznaku - + Remove unused tags Ukloni nekorištene oznake - Resume torrents - Nastavi torrente + Nastavi torrente - Pause torrents - Pauziraj torrente + Pauziraj torrente - + Remove torrents Ukloni torrente - New Tag - Nova oznaka + Nova oznaka - + + Start torrents + + + + + Stop torrents + + + + Tag: Oznaka: - + + Add tag + + + + Invalid tag name Nevažeći naziv oznake - + Tag name '%1' is invalid Naziv oznake '%1' nije valjan @@ -9975,32 +10551,32 @@ Odaberite drugo ime i pokušajte ponovno. TorrentContentModel - + Name Naziv - + Progress Napredak - + Download Priority Prioritet preuzimanja - + Remaining Preostaje - + Availability Dostupnost - + Total Size Ukupna veličina @@ -10045,102 +10621,120 @@ Odaberite drugo ime i pokušajte ponovno. TorrentContentWidget - + Rename error Pogreška preimenovanja - + Renaming Preimenovanje - + New name: Novi naziv: - + Column visibility Vidljivost stupca - + Resize columns Promjena veličine stupaca - + Resize all non-hidden columns to the size of their contents Promijenite veličinu svih neskrivenih stupaca na veličinu njihovog sadržaja - + Open Otvori - + Open containing folder Otvori mapu koja sadrži - + Rename... Preimenuj... - + Priority Prioritet - - + + Do not download Ne preuzimaj - + Normal Normalno - + High Visoko - + Maximum Maksimalno - + By shown file order Po prikazanom redoslijedu datoteka - + Normal priority Normalan prioritet - + High priority Visok prioritet - + Maximum priority Najviši prioritet - + Priority by shown file order Prioritet prema prikazanom redoslijedu datoteka + + TorrentCreatorController + + + Too many active tasks + Previše aktivnih zadataka + + + + Torrent creation is still unfinished. + Stvaranje torrenta još nije dovršeno. + + + + Torrent creation failed. + Stvaranje torrenta nije uspjelo + + TorrentCreatorDialog @@ -10165,13 +10759,13 @@ Odaberite drugo ime i pokušajte ponovno. - + Select file Odaberi datoteku - + Select folder Odaberi mapu @@ -10196,58 +10790,10 @@ Odaberite drugo ime i pokušajte ponovno. Veličina dijelova: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10294,92 +10840,83 @@ Odaberite drugo ime i pokušajte ponovno. Polja - + You can separate tracker tiers / groups with an empty line. Možete razdvojiti razine/grupe tragača praznom linijom. - + Web seed URLs: URL web seeda: - + Tracker URLs: URL-ovi trackera: - + Comments: Komentari: - + Source: Izvor: - + Progress: Napredak: - + Create Torrent Stvori torrent - - + + Torrent creation failed Stvaranje torrenta nije uspjelo - + Reason: Path to file/folder is not readable. Razlog: Putanja do datoteke/mape nije čitljiva. - + Select where to save the new torrent Odaberite gdje želite spremiti novi torrent - + Torrent Files (*.torrent) Torrent datoteke (*.torrent) - - Reason: %1 - Razlog: %1 - - - + Add torrent to transfer list failed. - + Dodavanje torrenta na popis prijenosa nije uspjelo. - + Reason: "%1" - + Razlog: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Razlog: Kreirani torrent je nevažeći. Neće biti dodan na popis za preuzimanje. + Dodavanje torrenta nije uspjelo - + Torrent creator Kreator torrenta - + Torrent created: Torrent stvoren: @@ -10387,32 +10924,32 @@ Odaberite drugo ime i pokušajte ponovno. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Nije uspjelo učitavanje konfiguracije nadziranih mapa. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Neuspješno analiziranje konfiguracije nadziranih mapa iz %1. Greška: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Nije uspjelo učitavanje konfiguracije nadziranih mapa iz %1. Pogreška: "Nevažeći format podataka." - + Couldn't store Watched Folders configuration to %1. Error: %2 Nije moguće pohraniti konfiguraciju nadziranih mapa u %1. Pogreška: %2 - + Watched folder Path cannot be empty. Putanja promatrane mape ne može biti prazna. - + Watched folder Path cannot be relative. Putanja promatrane mape ne može biti relativna. @@ -10420,27 +10957,27 @@ Odaberite drugo ime i pokušajte ponovno. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Nevažeći URI magneta. URI: %1. Razlog: %2 - + Magnet file too big. File: %1 Magnet datoteka je prevelika. Datoteka: %1 - + Failed to open magnet file: %1 Neuspješno otvaranje magnet datoteke: %1 - + Rejecting failed torrent file: %1 Odbijanje neuspjele torrent datoteke: %1 - + Watching folder: "%1" Promatrana mapa: "%1" @@ -10448,14 +10985,12 @@ Odaberite drugo ime i pokušajte ponovno. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Neuspješna dodjela memorije prilikom čitanja datoteke. Datoteka: "%1". Greška: "%2" + Neuspješna dodjela memorije prilikom čitanja datoteke. Datoteka: "%1". Greška: "%2" - Invalid metadata - Nevažeći metapodaci + Nevažeći metapodaci @@ -10486,127 +11021,203 @@ Odaberite drugo ime i pokušajte ponovno. Koristite drugu putanju za nepotpuni torrent - + Category: Kategorija: - + + Torrent Share Limits + + + Torrent speed limits - Ograničenja brzine torrenta + Ograničenja brzine torrenta - + Download: Preuzimanje: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits To neće premašiti globalna ograničenja - + Upload: Slanje: - Torrent share limits - Ograničenja dijeljenja torrenta + Ograničenja dijeljenja torrenta - Use global share limit - Koristite globalno ograničenje dijeljenja + Koristite globalno ograničenje dijeljenja - Set no share limit - Postavi ograničenje nedijeljenja + Postavi ograničenje nedijeljenja - Set share limit to - Postavi ograničenje dijeljenja na + Postavi ograničenje dijeljenja na - ratio - omjer + omjer - total minutes - ukupno minuta + ukupno minuta - inactive minutes - neaktivnih minuta + neaktivnih minuta - + Disable DHT for this torrent Onemogući DHT za ovaj torrent - + Download in sequential order Preuzimanje redoslijedom - + Disable PeX for this torrent Onemogući PeX za ovaj torrent - + Download first and last pieces first Prvo preuzmite prve i zadnje komade - + Disable LSD for this torrent Onemogući LSD za ovaj torrent - + Currently used categories Trenutno korištene kategorije - - + + Choose save path Odaberi putanju spremanja - + Not applicable to private torrents Nije primjenjivo na privatne torrente - No share limit method selected - Nije odabrana metoda ograničenja udjela + Nije odabrana metoda ograničenja udjela - Please select a limit method first - Najprije odaberite metodu ograničenja + Najprije odaberite metodu ograničenja + + + + TorrentShareLimitsWidget + + + + + + Default + Zadano + + + + + + Unlimited + Neograničeno + + + + + + Set to + Postavljeno + + + + Seeding time: + Vrijeme seedanja: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Neaktivno vrijeme seedanja: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Ukloni torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Omogući super dijeljenje za torrent + + + + Ratio: + Omjer: @@ -10617,32 +11228,36 @@ Odaberite drugo ime i pokušajte ponovno. Torrent oznake - New Tag - Nova oznaka + Nova oznaka + Add tag + + + + Tag: Oznaka: - + Invalid tag name Nevažeći naziv oznake - + Tag name '%1' is invalid. Naziv oznake '%1' nije valjan. - + Tag exists Oznaka postoji - + Tag name already exists. Naziv oznake već postoji. @@ -10650,115 +11265,130 @@ Odaberite drugo ime i pokušajte ponovno. TorrentsController - + Error: '%1' is not a valid torrent file. Pogreška: '%1' nije valjana torrent datoteka. - + Priority must be an integer Prioritet mora biti cijeli broj - + Priority is not valid Prioritet nije valjan - + Torrent's metadata has not yet downloaded Metapodaci Torrenta još nisu preuzeti - + File IDs must be integers ID-ovi datoteka moraju biti cijeli brojevi - + File ID is not valid ID datoteke nije valjan - - - - + + + + Torrent queueing must be enabled Torrent čekanje mora biti omogućeno - - + + Save path cannot be empty Putanja za spremanje ne može biti prazna - - + + Cannot create target directory Nije moguće stvoriti ciljni direktorij - - + + Category cannot be empty Kategorija ne može biti prazna - + Unable to create category Nije moguće stvoriti kategoriju - + Unable to edit category Nije moguće urediti kategoriju - + Unable to export torrent file. Error: %1 Nije moguće izvesti torrent datoteku. Pogreška: %1 - + Cannot make save path Nije moguće napraviti putanju spremanja - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sort' parametar je nevažeći - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" nije važeći indeks datoteke. - + Index %1 is out of bounds. Indeks %1 je izvan granica. - - + + Cannot write to directory Ne može se pisati u direktorij - + WebUI Set location: moving "%1", from "%2" to "%3" Postavljanje lokacije Web sučelja: premještanje "%1", iz "%2" u "%3" - + Incorrect torrent name Netočan naziv torrenta - - + + Incorrect category name Netočan naziv kategorije @@ -10789,257 +11419,215 @@ Odaberite drugo ime i pokušajte ponovno. TrackerListModel - - + Working - Radi + Radi - + Disabled - Onemogućeno + Onemogućeno - + Disabled for this torrent - Onemogućeno za ovaj torrent + Onemogućeno za ovaj torrent - + This torrent is private - Ovaj torrent je privatan + Ovaj torrent je privatan - + N/A - + N/A - + Updating... - Ažuriranje... + Ažuriranje... - + Not working - Ne radi + Ne radi - + Tracker error - + Pogreška tragača - + Unreachable - + Nedostupno - + Not contacted yet - Još nije kontaktirano + Još nije kontaktirano - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Razina + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Nevažeći status! + + + URL/Announce endpoint + URL/Najava krajnje točke + Tier + Razina + + Protocol - + Protokol - + Status - Status + Status - + Peers - Peerovi + Peerovi - + Seeds - Seedovi + Seedovi - + Leeches - Leechevi + Leechevi - + Times Downloaded - Broj preuzimanja + Broj preuzimanja - + Message - Poruka + Poruka - Next announce - + Sljedeća najava - Min announce - + Najmanja najava - v%1 - + v%1 TrackerListWidget - Working - Radi - - - Disabled - Onemogućeno - - - Disabled for this torrent - Onemogućeno za ovaj torrent - - - + This torrent is private Ovaj torrent je privatan - Updating... - Ažuriranje... - - - Not working - Ne radi - - - Not contacted yet - Još nije kontaktirano - - - N/A - N/A - - - + Tracker editing Uređivanje trackera - + Tracker URL: URL trackera: - - + + Tracker editing failed Uređivanje trackera nije uspjelo - + The tracker URL entered is invalid. Uneseni URL trackera nije valjan. - + The tracker URL already exists. URL trackera već postoji. - + Edit tracker URL... Uredi URL trackera... - + Remove tracker Ukloni trackera - + Copy tracker URL Kopiraj URL trackera - + Force reannounce to selected trackers Prisilno ponovno najavi odabranim trackerima - + Force reannounce to all trackers Prisilno ponovno najavi svim trackerima - Tier - Razina - - - URL - URL - - - Status - Status - - - Seeds - Seedovi - - - Times Downloaded - Broj preuzimanja - - - + Resize columns Promjena veličine stupaca - + Resize all non-hidden columns to the size of their contents Promjena veličine svih neskrivenih stupaca na veličinu njihovog sadržaja - Peers - Peerovi - - - + Add trackers... Dodaj trackere... - Leeches - Leechevi - - - Message - Poruka - - - + Column visibility Vidljivost stupca @@ -11057,37 +11645,37 @@ Odaberite drugo ime i pokušajte ponovno. Popis trackera za dodati (jedan po liniji): - + µTorrent compatible list URL: Popis URL-ova kompatibilan s µTorrentom: - + Download trackers list Preuzmite popis trackera - + Add Dodaj - + Trackers list URL error Pogreška URL-a popisa trackera - + The trackers list URL cannot be empty URL popisa trackera ne može biti prazan - + Download trackers list error Pogreška preuzimanja popisa trackera - + Error occurred when downloading the trackers list. Reason: "%1" Došlo je do pogreške prilikom preuzimanja popisa trackera. Razlog: "%1" @@ -11095,87 +11683,70 @@ Odaberite drugo ime i pokušajte ponovno. TrackersFilterWidget - All (0) - this is for the tracker filter - Sve (0) - - - Trackerless (0) - Bez trackera (0) - - - Error (0) - Greška (0) - - - Warning (0) - Upozorenje (0) - - - Trackerless - Bez trackera - - - Error (%1) - Greška (%1) - - - + Warning (%1) Upozorenje (%1) - + Trackerless (%1) Bez trackera (%1) - + Tracker error (%1) - + Pogreška tragača (%1) - + Other error (%1) - + Ostala pogreška (%1) - + Remove tracker - Ukloni trackera + Ukloni trackera + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Nastavi torrente + Nastavi torrente - Pause torrents - Pauziraj torrente + Pauziraj torrente - + Remove torrents Ukloni torrente - + Removal confirmation - + Potvrda o uklanjanju - + Are you sure you want to remove tracker "%1" from all torrents? - + Jeste li sigurni da želite ukloniti tracker "%1" iz svih torrenta? - + Don't ask me again. - + Ne pitaj me više. - + All (%1) this is for the tracker filter Sve (%1) @@ -11184,7 +11755,7 @@ Odaberite drugo ime i pokušajte ponovno. TransferController - + 'mode': invalid argument 'način': nevažeći argument @@ -11277,9 +11848,8 @@ Odaberite drugo ime i pokušajte ponovno. Provjera podataka nastavka - Paused - Pauzirano + Pauzirano @@ -11304,220 +11874,262 @@ Odaberite drugo ime i pokušajte ponovno. S greškom - + Name i.e: torrent name Naziv - + Size i.e: torrent size Veličina - + Progress % Done Napredak - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Seedovi - + Peers i.e. partial sources (often untranslated) Peerovi - + Down Speed i.e: Download speed Brzina preuzimanja - + Up Speed i.e: Upload speed Brzina slanja - + Ratio Share ratio Omjer - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Preostalo vrijeme - + Category Kategorija - + Tags Oznake - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Dodano - + Completed On Torrent was completed on 01/01/2010 08:00 Dovršeno - + Tracker Tracker - + Down Limit i.e: Download limit Ograničenje preuzimanja - + Up Limit i.e: Upload limit Ograničenje slanja - + Downloaded Amount of data downloaded (e.g. in MB) Preuzeto - + Uploaded Amount of data uploaded (e.g. in MB) Poslano - + Session Download Amount of data downloaded since program open (e.g. in MB) Preuzmanje u sesiji - + Session Upload Amount of data uploaded since program open (e.g. in MB) Slanje u sesiji - + Remaining Amount of data left to download (e.g. in MB) Preostalo - + + Time Active + Time (duration) the torrent is active (not stopped) + Vrijeme aktivnosti + + + + Yes + Da + + + + No + Ne + + Time Active Time (duration) the torrent is active (not paused) - Vrijeme aktivnosti + Vrijeme aktivnosti - + Save Path Torrent save path Putanja za spremanje - + Incomplete Save Path Torrent incomplete save path Nepotpuna putanja spremanja - + Completed Amount of data completed (e.g. in MB) Završeno - + Ratio Limit Upload share ratio limit Ograničenje omjera - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Zadnje viđen završeni - + Last Activity Time passed since a chunk was downloaded/uploaded Posljednja aktivnost - + Total Size i.e. Size including unwanted data Ukupna veličina - + Availability The number of distributed copies of the torrent Dostupnost - + Info Hash v1 i.e: torrent info hash v1 Info hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Ponovno najavi za + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago prije %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedano za %2) @@ -11526,334 +12138,358 @@ Odaberite drugo ime i pokušajte ponovno. TransferListWidget - + Column visibility Vidljivost stupca - + Recheck confirmation Ponovno provjeri potvrđivanje - + Are you sure you want to recheck the selected torrent(s)? Jeste li sigurni da želite ponovno provjeriti odabrani/e torrent(e)? - + Rename Preimenovanje - + New name: Novi naziv: - + Choose save path Izaberi putanju spremanja - Confirm pause - Potvrdite pauzu + Potvrdite pauzu - Would you like to pause all torrents? - Želite li pauzirati sve torrente? + Želite li pauzirati sve torrente? - Confirm resume - Potvrdite nastavak + Potvrdite nastavak - Would you like to resume all torrents? - Želite li nastaviti sa svim torrentima? + Želite li nastaviti sa svim torrentima? - + Unable to preview Pregled nije moguć - + The selected torrent "%1" does not contain previewable files Odabrani torrent "%1" ne sadrži datoteke koje se mogu pregledati - + Resize columns Promjena veličine stupaca - + Resize all non-hidden columns to the size of their contents Promjena veličine svih neskrivenih stupaca na veličinu njihovog sadržaja - + Enable automatic torrent management Omogući automatsko upravljanje torrentima - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Jeste li sigurni da želite omogućiti automatsko upravljanje torrentima za odabrani torrent(e)? Mogu biti premješteni. - Add Tags - Dodaj oznake + Dodaj oznake - + Choose folder to save exported .torrent files Odaberite mapu za spremanje izvezenih .torrent datoteka - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Izvoz .torrent datoteke nije uspio. Torrent: "%1". Putanja spremanja: "%2". Razlog: "%3" - + A file with the same name already exists Datoteka s istim nazivom već postoji - + Export .torrent file error Pogreška izvoza .torrent datoteke - + Remove All Tags Ukloni sve oznake - + Remove all tags from selected torrents? Ukloniti sve oznake s odabranih torrenta? - + Comma-separated tags: Oznake odvojene zarezima: - + Invalid tag Nevažeća oznaka - + Tag name: '%1' is invalid Naziv oznake: '%1' nije valjan - &Resume Resume/start the torrent - Nastavi + Nastavi - &Pause Pause the torrent - &Pauziraj + &Pauziraj - Force Resu&me Force Resume/start the torrent - Pri&sili nastavak + Pri&sili nastavak - + Pre&view file... Pre&gled datoteke... - + Torrent &options... &Opcije torrenta... - + Open destination &folder Otvori odredišnu &mapu - + Move &up i.e. move up in the queue Pomakni g&ore - + Move &down i.e. Move down in the queue Pomakni &dolje - + Move to &top i.e. Move to top of the queue Pomakni na &vrh - + Move to &bottom i.e. Move to bottom of the queue Pomakni na &dno - + Set loc&ation... Postavi &lokaciju... - + Force rec&heck Prisili ponovnu prov&jeru - + Force r&eannounce Prisili ponovne &oglase - + &Magnet link &Magnet link - + Torrent &ID Torrent &ID - + + &Comment + &Komentar + + + &Name &Naziv - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Preime&nuj... - + Edit trac&kers... Uredi trac&kere - + E&xport .torrent... Uve&zi .torrent... - + Categor&y Kategor&ija - + &New... New category... &Novi - + &Reset Reset category &Poništi - + Ta&gs Ozna&ke - + &Add... Add / assign multiple tags... Dod&aj - + &Remove All Remove all tags &Ukloni sve - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Red čekanja - + &Copy &Kopiraj - + Exported torrent is not necessarily the same as the imported Izvezeni torrent nije nužno isti kao uvezeni - + Download in sequential order Preuzmi u sekvencijskom poretku - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Došlo je do pogreške prilikom izvoza .torrent datoteka. Za detalje provjerite zapisnik izvršenja. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Uk&loni - + Download first and last pieces first Preuzmi prve i zadnje dijelove prije drugih. - + Automatic Torrent Management Automatsko upravljanje torrentima - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatski način rada znači da će različita svojstva torrenta (npr. putanja spremanja) biti određena pridruženom kategorijom - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Ne može se prisilno ponovno najaviti ako je torrent pauziran/u redu čekanja/pogreška/provjera + Ne može se prisilno ponovno najaviti ako je torrent pauziran/u redu čekanja/pogreška/provjera - + Super seeding mode Način superseedanja @@ -11898,28 +12534,28 @@ Odaberite drugo ime i pokušajte ponovno. ID ikone - + UI Theme Configuration. Konfiguracija teme korisničkog sučelja. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Promjene teme korisničkog sučelja nisu se mogle u potpunosti primijeniti. Detalje možete pronaći u Dnevniku. - + Couldn't save UI Theme configuration. Reason: %1 Nije moguće spremiti konfiguraciju teme korisničkog sučelja. Razlog: %1 - - + + Couldn't remove icon file. File: %1. Nije moguće ukloniti datoteku ikone. Datoteka: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Nije moguće kopirati datoteku ikone. Izvor: %1. Odredište: %2. @@ -11927,7 +12563,12 @@ Odaberite drugo ime i pokušajte ponovno. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Nije uspjelo učitavanje teme korisničkog sučelja iz datoteke: "%1" @@ -11958,89 +12599,82 @@ Odaberite drugo ime i pokušajte ponovno. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Postavke migracije nisu uspjele: WebUI https, datoteka: "%1", pogreška: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrirane postavke: WebUI https, izvezeni podaci u datoteku: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Nevažeća vrijednost pronađena u konfiguracijskoj datoteci, vraća se na zadanu vrijednost. Ključ: "%1". Nevažeća vrijednost: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Otkriven Python, naziv izvršne datoteke: '%1', verzija: %2 - - - Python not detected - Python nije otkriven - Found Python executable. Name: "%1". Version: "%2" - + Pronađena Python izvršna datoteka. Naziv: "%1". Verzija: "%2" Failed to find Python executable. Path: "%1". - + Neuspješno pronalaženje Python izvršne datoteke. Putanja: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Nije uspjelo pronalaženje izvršne datoteke `python3` u varijabli okruženja PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Nije uspjelo pronalaženje izvršne datoteke `python` u varijabli okruženja PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Nije uspjelo pronalaženje izvršne datoteke `python` u registru sustava Windows. Failed to find Python executable - + Neuspješno pronalaženje Python izvršne datoteke Utils::IO - + File open error. File: "%1". Error: "%2" Pogreška pri otvaranju datoteke. Datoteka: "%1". Greška: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Veličina datoteke premašuje ograničenje. Datoteka: "%1". Veličina datoteke: %2. Ograničenje veličine: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Veličina datoteke premašuje ograničenje veličine podataka. Datoteka: "%1". Veličina datoteke: %2. Ograničenje polja: %3 - + File read error. File: "%1". Error: "%2" Pogreška čitanja datoteke. Datoteka: "%1". Greška: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Neusklađenost očitane veličine. Datoteka: "%1". Očekivano: %2. Stvarno: %3 @@ -12104,72 +12738,72 @@ Odaberite drugo ime i pokušajte ponovno. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Naveden je neprihvatljiv naziv kolačića sesije: '%1'. Koristi se zadana. - + Unacceptable file type, only regular file is allowed. Neprihvatljiva vrsta datoteke, dopuštena je samo regularna datoteka. - + Symlinks inside alternative UI folder are forbidden. Zabranjene su simboličke veze unutar mape alternativnog korisničkog sučelja. - - Using built-in Web UI. - Korištenje ugrađenog web sučelja. + + Using built-in WebUI. + Korištenje ugrađenog WebUI. - - Using custom Web UI. Location: "%1". - Korištenje prilagođenog web sučelja. Lokacija: "%1". + + Using custom WebUI. Location: "%1". + Korištenje prilagođenog WebUI. Lokacija: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Prijevod web sučelja za odabranu lokalizaciju (%1) uspješno je učitan. + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI prijevod za odabranu lokalizaciju (%1) je uspješno učitan. - - Couldn't load Web UI translation for selected locale (%1). - Nije moguće učitati prijevod web sučelja za odabrani jezik (%1). + + Couldn't load WebUI translation for selected locale (%1). + Nije moguće učitati prijevod WebUI-a za odabrani jezik (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Nedostaje ':' separator u WebUI prilagođenom HTTP zaglavlju: "%1" - + Web server error. %1 Greška web poslužitelja. %1 - + Web server error. Unknown error. Greška web poslužitelja. Nepoznata pogreška. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: neusklađenost zaglavlja izvora i ishodišta cilja! Izvor IP: '%1'. Izvorno zaglavlje: '%2'. Ciljano podrijetlo: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Nepodudaranje zaglavlja preporuke i ciljanog porijekla! Izvor IP: '%1'. Zaglavlje preporuke: '%2'. Ciljano podrijetlo: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: nevažeće zaglavlje hosta, nepodudaranje portova. IP izvora zahtjeva: '%1'. Port poslužitelja: '%2'. Primljeno Host zaglavlje: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: nevažeće zaglavlje hosta. IP izvora zahtjeva: '%1'. Primljeno Host zaglavlje: '%2' @@ -12177,143 +12811,136 @@ Odaberite drugo ime i pokušajte ponovno. WebUI - - Web UI: HTTPS setup successful - Web sučelje: HTTPS postavljanje uspješno + + Credentials are not set + Vjerodajnice nisu postavljene + + + + WebUI: HTTPS setup successful + WebUI: HTTPS postavljanje uspješno - - Web UI: HTTPS setup failed, fallback to HTTP - Web sučelje: postavljanje HTTPS-a nije uspjelo, povratak na HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: postavljanje HTTPS-a nije uspjelo, povratak na HTTP - - Web UI: Now listening on IP: %1, port: %2 - Web sučelje: Sada sluša IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Sada osluškuje IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web sučelje: nije moguće vezati se na IP: %1, port: %2. Razlog: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Nije moguće vezati se na IP: %1, port: %2. Razlog: %3 + + + + fs + + + Unknown error + Nepoznata greška misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1s %2m + %1s %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2s + %1d %2s - + %1y %2d e.g: 2 years 10 days - %1g %2d + %1g %2d - %1h %2m - e.g: 3hours 5minutes - %1s %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2s - - - %1y %2d - e.g: 2years 10days - %1g %2d - - - - + + Unknown Unknown (size) Nije poznato - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent će sada isključiti računalo jer su sva preuzimanja završila. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_hu.ts b/src/lang/qbittorrent_hu.ts index a2bcdaa2d07d..1c08524ec6be 100644 --- a/src/lang/qbittorrent_hu.ts +++ b/src/lang/qbittorrent_hu.ts @@ -14,77 +14,77 @@ Névjegy - + Authors Szerzők - + Current maintainer Jelenlegi projektvezető - + Greece Görögország - - + + Nationality: Nemzetiség: - - + + E-mail: E-mail: - - + + Name: Név: - + Original author Eredeti szerző - + France Franciaország - + Special Thanks Külön köszönet - + Translators Fordítók - + License Licenc - + Software Used Használatban lévő szoftver - + qBittorrent was built with the following libraries: A qBittorrent a következő könyvtárak felhasználásával került kiadásra: - + Copy to clipboard - + Másolás a vágólapra @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Szerzői joggal védve %1 2006-2023 A qBittorrent projekt + Copyright %1 2006-2024 The qBittorrent project + Szerzői joggal védve %1 2006-2024 A qBittorrent projekt @@ -166,14 +166,13 @@ Mentés helye - + Never show again Ne mutasd újra - Torrent settings - Torrent beállítások + Torrent beállítások @@ -191,12 +190,12 @@ Torrent indítása - + Torrent information Torrent információk - + Skip hash check Hash ellenőrzés kihagyása @@ -205,6 +204,11 @@ Use another path for incomplete torrent Használjon másik elérési utat a befejezetlen torrenthez + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Stop feltétel: - - + + None Nincs - - + + Metadata received Metaadat fogadva - - + + Torrents that have metadata initially will be added as stopped. + Az eredetileg metaadatokkal rendelkező torrentek leállítva kerülnek hozzáadásra. + + + + Files checked Fájlok ellenőrizve - + Add to top of queue Hozzáadás a várólista elejére - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Ha be van jelölve, akkor a .torrent fájl a "Letöltések" oldalon lévő beállításoktól függetlenül nem lesz törölve - + Content layout: Tartalom elrendezése: - + Original Eredeti - + Create subfolder Almappa létrehozása - + Don't create subfolder Ne hozzon létre almappát - + Info hash v1: Info hash v1: - + Size: Méret: - + Comment: Megjegyzés: - + Date: Dátum: @@ -324,245 +333,182 @@ Utoljára használt mentési útvonal megjegyzése - + Do not delete .torrent file Ne törölje a .torrent fájlt - + Download in sequential order Letöltés egymás utáni sorrendben - + Download first and last pieces first Első és utolsó szelet letöltése először - + Info hash v2: Info hash v2: - + Select All Összes kiválasztása - + Select None Egyiket sem - + Save as .torrent file... Mentés .torrent fájlként… - + I/O Error I/O Hiba - Invalid torrent - Érvénytelen torrent - - - + Not Available This comment is unavailable Nem elérhető - + Not Available This date is unavailable Nem elérhető - + Not available Nem elérhető - Invalid magnet link - Érvénytelen magnet link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Torrent betöltése sikertelen: %1 -Hiba: %2 - - - This magnet link was not recognized - A magnet linket nem sikerült felismerni - - - + Magnet link Magnet link - + Retrieving metadata... Metaadat letöltése... - - + + Choose save path Mentési útvonal választása - Torrent is already present - Torrent már a listában van - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - '%1' torrent már szerepel a letöltési listában. Trackerek nem lettek egyesítve, mert a torrent privát. - - - Torrent is already queued for processing. - Torrent már sorban áll feldolgozásra. - - - + No stop condition is set. Nincs stop feltétel beállítva. - + Torrent will stop after metadata is received. Torrent megáll a metaadat fogadása után. - - Torrents that have metadata initially aren't affected. - Nem érintettek azok a torrentek melyek kezdéskor metaadattal rendelkeznek. - - - + Torrent will stop after files are initially checked. Torrent meg fog állni a fájlok kezdeti ellenőrzése után. - + This will also download metadata if it wasn't there initially. Ez a metaadatot is le fogja tölteni ha az, kezdéskor nem volt jelen. - - + + N/A N/A - Magnet link is already queued for processing. - A magnet link már sorban áll feldolgozásra. - - - + %1 (Free space on disk: %2) %1 (Szabad hely a lemezen: %2) - + Not available This size is unavailable. Nem elérhető - + Torrent file (*%1) Torrent fájl (*%1) - + Save as torrent file Mentés torrent fájlként - + Couldn't export torrent metadata file '%1'. Reason: %2. '%1' torrent metaadat-fájl nem exportálható. Indok: %2. - + Cannot create v2 torrent until its data is fully downloaded. Nem lehet v2 torrentet létrehozni, amíg annak adatai nincsenek teljesen letöltve. - Cannot download '%1': %2 - '%1' nem tölthető le: %2 - - - + Filter files... Fájlok szűrése... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - '%1' torrent már szerepel a letöltési listában. Trackereket nem lehet egyesíteni, mert a torrent privát. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - '%1' torrent már szerepel a letöltési listában. Szeretné egyesíteni az új forrásból származó trackereket? - - - + Parsing metadata... Metaadat értelmezése... - + Metadata retrieval complete Metaadat sikeresen letöltve - - Failed to load from URL: %1. -Error: %2 - Nem sikerült a betöltés URL-ről: %1. -Hiba: %2 - - - Download Error - Letöltési hiba - AddTorrentManager Downloading torrent... Source: "%1" - + Torrent letöltése... Forrás: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Torrent hozzáadása sikertelen. Forrás: "%1". Indok: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Duplikált torrent hozzáadási kísérlet észlelve. Forrás: %1. Meglévő torrent: %2. Eredmény: %3 - + Merging of trackers is disabled - + Trackerek összevonása ki van kapcsolva - + Trackers cannot be merged because it is a private torrent - + Trackereket nem lehetett összevonni mert ez egy privát torrent - + Trackers are merged from new source - + Trackerek összevonva az új forrásból @@ -648,72 +594,77 @@ Hiba: %2 Hash ellenőrzés kihagyása - - - Choose save path - Válasszon mentési útvonalat + + Torrent share limits + Torrent megosztási korlát - - - - - - - Default - Alapértelmezett + + + Choose save path + Válasszon mentési útvonalat + + + - Yes - Igen + Default + Alapértelmezett + Yes + Igen + + + + + No Nem - + Manual Kézi - + Automatic Automatikus - + Original Eredeti - + Create subfolder Almappa létrehozása - + Don't create subfolder Ne hozzon létre almappát - + None Nincs - + Metadata received Metaadat fogadva - + Files checked Fájlok ellenőrizve @@ -721,734 +672,852 @@ Hiba: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Torrentek újraellenőrzése a letöltésük végeztével - - + + ms milliseconds ms - + Setting Beállítások - + Value Value set for this setting Érték - + (disabled) (letiltva) - + (auto) (auto) - + + min minutes perc - + All addresses Összes cím - + qBittorrent Section qBittorrent beállítások - - + + Open documentation Dokumentáció megnyitása - + All IPv4 addresses Összes IPv4-cím - + All IPv6 addresses Összes IPv6-cím - + libtorrent Section libtorrent beállítások - + Fastresume files Gyors-folytatás fájlok - + SQLite database (experimental) SQLite adatbázis (kísérleti) - + Resume data storage type (requires restart) Folytatási-adat tároló típusa (újraindítást igényel) - + Normal Normál - + Below normal Normál alatti - + Medium Közepes - + Low Alacsony - + Very low Nagyon alacsony - - Process memory priority (Windows >= 8 only) - Folyamat memória-prioritása (csak Windows 8 és felett) - - - + Physical memory (RAM) usage limit Fizikai memória (RAM) használati korlát - + Asynchronous I/O threads Aszinkron I/O szálak - + Hashing threads Hash ellenőrző szálak - + File pool size Fájl-sor mérete - + Outstanding memory when checking torrents Torrent ellenőrzéskor kiemelt memória mérete - + Disk cache Lemez gyorsítótár - - - - + + + + s seconds s - + Disk cache expiry interval Merevlemez gyorsítótár lejáratának ideje - + Disk queue size Lemez sorbanállás mérete - - + + Enable OS cache Operációs rendszer gyorsítótár engedélyezés - + Coalesce reads & writes Olvasások és írások egyesítése - + Use piece extent affinity Szeletméret-affinitás használata - + Send upload piece suggestions Feltöltési szelet javaslatok küldése - - - - + + + + + 0 (disabled) 0 (letiltva) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Folytatási adatfájl mentésének időköze [0: kikapcsolva] - + Outgoing ports (Min) [0: disabled] Kimenő portok (Min) [0: kikapcsolva] - + Outgoing ports (Max) [0: disabled] Kimenő portok (Max) [0: kikapcsolva] - + 0 (permanent lease) 0 (nem jár le) - + UPnP lease duration [0: permanent lease] UPnP bérlés időtartama [0: Állandó bérlés] - + Stop tracker timeout [0: disabled] Stop tracker időtúllépés [0: kikapcsolva] - + Notification timeout [0: infinite, -1: system default] Értesítés időtartama [0: végtelen, -1: rendszer alapértelmezett] - + Maximum outstanding requests to a single peer Maximális függőben lévő kérések egyetlen peerhez: - - - - - + + + + + KiB KiB - + (infinite) (végtelen) - + (system default) (rendszer alapértelmezett) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Ez az opció kevésbé hatékony Linuxon - + + Process memory priority + Folyamat memória priorítása + + + Bdecode depth limit Bdecode mélység korlát - + Bdecode token limit Bdecode token korlát - + Default Alapértelmezett - + Memory mapped files Memóriában szereplő fájlok - + POSIX-compliant POSIX-kompatibilis - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Lemez IO típusa (újraindítást igényel) - - + + Disable OS cache Operációs rendszer gyorsítótár letiltása - + Disk IO read mode Lemez IO olvasási mód - + Write-through Write-through - + Disk IO write mode Lemez IO írási mód - + Send buffer watermark Puffer watermark küldése - + Send buffer low watermark Puffer low watermark küldése - + Send buffer watermark factor Puffer watermark factor küldése - + Outgoing connections per second Kimenő kapcsolatok másodpercenként - - + + 0 (system default) 0 (rendszer alapértelmezett) - + Socket send buffer size [0: system default] Socket küldő puffer mérete [0: rendszer alapértelmezett] - + Socket receive buffer size [0: system default] Socket fogadó puffer mérete [0: rendszer alapértelmezett] - + Socket backlog size Socket várósor méret - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent fájl méret korlát - + Type of service (ToS) for connections to peers Szolgáltatástípus (ToS) a peerkapcsolatokhoz - + Prefer TCP TCP előnyben részesítése - + Peer proportional (throttles TCP) Peer arányos (TCP-t visszafogja) - + Support internationalized domain name (IDN) Nemzetköziesített domain nevek (IDN) támogatása - + Allow multiple connections from the same IP address Több kapcsolat engedélyezése ugyanarról az IP-címről - + Validate HTTPS tracker certificates Ellenőrizze a HTTPS tracker tanúsítványokat - + Server-side request forgery (SSRF) mitigation Szerveroldali kéréshamisítás (SSRF) csökkentése - + Disallow connection to peers on privileged ports Ne engedje a csatlakozást peerek felé kiváltságos portokon - + + It appends the text to the window title to help distinguish qBittorent instances + A qBittorent példányok megkülönböztetésének megkönnyítése érdekében a szöveget az ablak címéhez csatolja. + + + + Customize application instance name + Alkalmazáspéldány nevének testreszabása + + + It controls the internal state update interval which in turn will affect UI updates Ez szabályozza a belső állapotfrissítési időközt, ami viszont hatással lesz a felhasználói felület frissítéseire - + Refresh interval Frissítési időköz - + Resolve peer host names Peer kiszolgálónevek feloldása - + IP address reported to trackers (requires restart) Trackernek lejelentett IP cím (újraindítást igényel) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Újrajelentés az összes tracker felé ha változik az IP vagy a port - + Enable icons in menus Ikonok engedélyezése a menükben - + Enable port forwarding for embedded tracker Porttovábbítás a beépített tracker számára - - (Auto detect if empty) + + Enable quarantine for downloaded files + Letöltött fájlok karanténjának engedélyezése + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Engedélyezze a Mark-of-the-Web (MOTW) használatát letöltött fájlokhoz + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Auto felismerés ha üres) + + + Python executable path (may require restart) + Python útvonal (újraindítást igényelhet): + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + mp + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Megerősítés a tracker eltávolítására az összes torrentből + + + Peer turnover disconnect percentage Peer forgalom lekapcsolási százalék - + Peer turnover threshold percentage Peer forgalmi küszöb százalék - + Peer turnover disconnect interval Peer forgalom lekapcsolási intervallum - + Resets to default if empty - + Alapértelmezettre visszaáll ha üres - + DHT bootstrap nodes - + DHT bootstrap csomópontok - + I2P inbound quantity I2P bejövő mennyiség - + I2P outbound quantity I2P kimenő mennyiség - + I2P inbound length I2P bejövő hossza - + I2P outbound length I2P kimenő hossza - + Display notifications Értesítések megjelenítése - + Display notifications for added torrents Értesítések megjelenítése a hozzáadott torrentekről - + Download tracker's favicon Tracker favicon letöltése - + Save path history length Tárolt múltbéli mentési útvonalak száma - + Enable speed graphs Sebesség grafikonok engedélyezése - + Fixed slots Rögzített szálak - + Upload rate based Feltöltési sebesség alapján - + Upload slots behavior Feltöltési szálak működése - + Round-robin Round-robin - + Fastest upload Leggyorsabb feltöltés - + Anti-leech Anti-leech - + Upload choking algorithm Feltöltéskorlátozási algoritmus - + Confirm torrent recheck Újraellenőrzés megerősítése - + Confirm removal of all tags Összes címke eltávolításának megerősítése - + Always announce to all trackers in a tier Mindig jelentsen az egy szinten lévő összes tracker felé - + Always announce to all tiers Mindig jelentsen az összes szintnek - + Any interface i.e. Any network interface Bármely csatoló - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP kevert-mód algoritmus - + Resolve peer countries Peer országának megjelenítése - + Network interface Hálózati csatoló - + Optional IP address to bind to Alkalmazás által használt IP cím - + Max concurrent HTTP announces Maximális egyidejű HTTP bejelentések - + Enable embedded tracker Beépített tracker bekapcsolása - + Embedded tracker port Beépített tracker portja - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 elindult + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Futtatás hordozható módban. Profil mappa automatikusan észlelve: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Felesleges parancssori kapcsoló észlelve: "%1". A hordozható mód magában foglalja a gyors-folytatást. - + Using config directory: %1 Beállítások könyvtár használata: %1 - + Torrent name: %1 Torrent név: %1 - + Torrent size: %1 Torrent méret: %1 - + Save path: %1 Mentés helye: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent letöltésre került %1 alatt. - + + Thank you for using qBittorrent. Köszönjük, hogy a qBittorentet használja. - + Torrent: %1, sending mail notification Torrent: %1, értesítő levél küldése - + Add torrent failed - + Torrent hozzáadása sikertelen - + Couldn't add torrent '%1', reason: %2. - + Nem sikerült hozzáadni '%1' torrentet, ok: %2. + + + + The WebUI administrator username is: %1 + A WebUI adminisztrátor felhasználónév: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + A WebUI rendszergazdai jelszó nem volt beállítva. A munkamenethez egy ideiglenes jelszó lett biztosítva: %1 - + + You should set your own password in program preferences. + Javasolt saját jelszót beállítania a programbeállításokban. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + A WebUI le van tiltva! A WebUI engedélyezéséhez szerkessze kézzel a konfigurációs fájlt. - + Running external program. Torrent: "%1". Command: `%2` Külső program futtatása. Torrent: "%1". Parancs: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Nem sikerült futtatni a külső programot. Torrent: "%1". Parancs: `%2` - + Torrent "%1" has finished downloading Torrent "%1" befejezte a letöltést - + WebUI will be started shortly after internal preparations. Please wait... A WebUI röviddel a belső előkészületek után elindul. Kérlek várj... - - + + Loading torrents... Torrentek betöltése... - + E&xit K&ilépés - + I/O Error i.e: Input/Output Error I/O Hiba - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Hiba: %2 Indok: %2 - Error - Hiba - - - Failed to add torrent: %1 - Torrent hozzáadása nem sikerült: %1 - - - + Torrent added Torrent hozzáadva - + '%1' was added. e.g: xxx.avi was added. '%1' hozzáadva. - + Download completed Letöltés befejezve - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' befejezte a letöltést. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 elindult. Folyamat azonosítója: %2 - URL download error - URL letöltés hiba + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Nem sikerült a fájlt letölteni az URL címről: '%1', indok: %2. + + Test email + - Torrent file association - Torrent fájl társítás + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' befejezte a letöltést. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - A qBittorrent nem az alapértelmezett .torrent vagy Magnet link kezelő alkalmazás. -Szeretnéd alapértelmezetté tenni? - - - + Information Információ - + To fix the error, you may need to edit the config file manually. - + A hiba kijavításához esetleg manuálisan kell szerkesztenie a konfigurációs fájlt. - + To control qBittorrent, access the WebUI at: %1 qBittorrent irányításához nyissa meg a Web UI-t itt: %1 - - The Web UI administrator username is: %1 - A Web UI adminisztrátor felhasználónév: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web UI adminisztrátor jelszó nem lett alapértelmezettre állítva: %1 - - - - This is a security risk, please change your password in program preferences. - Ez biztonsági kockázatot jelent, kérjük, változtassa meg jelszavát a programbeállításokban. - - - Application failed to start. - Az alkalmazást nem sikerült elindítani. - - - + Exit Kilépés - + Recursive download confirmation - Letöltés ismételt megerősítése + Rekurzív letöltés megerősítése - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - '%1' torrent .torrent fájlokat is tartalmaz, így is szeretné letölteni őket? + '%1' torrent .torrent fájlokat is tartalmaz, szeretné ezeket is letölteni? - + Never - Soha + Soha - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrenten belüli .torrent fájl rekurzív letöltése. Forrás torrent: "%1". Fájl: "%2" + Torrenten belüli .torrent fájl rekurzív letöltése. Forrás torrent: "%1". Fájl: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Nem sikerült beállítani a fizikai memória (RAM) használati korlátját. Hibakód: %1. Hibaüzenet: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" A fizikai memória (RAM) használatának kemény korlátját nem sikerült beállítani. Kért méret: %1. A rendszer kemény korlátja: %2. Hibakód: %3. Hibaüzenet: "%4" - + qBittorrent termination initiated qBittorrent leállítása kezdeményezve - + qBittorrent is shutting down... A qBittorrent leáll... - + Saving torrent progress... Torrent állapotának mentése... - + qBittorrent is now ready to exit A qBittorrent készen áll a kilépésre @@ -1597,7 +1637,7 @@ Szeretnéd alapértelmezetté tenni? AsyncFileStorage - + Could not create directory '%1'. Nem sikerült létrehozni a '%1' könyvtárat . @@ -1605,22 +1645,22 @@ Szeretnéd alapértelmezetté tenni? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI belépési hiba. Indok: IP cím tiltásra került, IP %1, felhasználónév: %2 - + Your IP address has been banned after too many failed authentication attempts. Az ön IP-címe tiltásra került a sok hibás hitelesítési próbálkozások miatt. - + WebAPI login success. IP: %1 WebAPI Sikeres bejelentkezés. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI belépési hiba. Indok: érvénytelen hitelesítő adatok, próbálkozások száma: %1, IP: %2, felhasználónév: %3 @@ -1668,12 +1708,12 @@ Szeretnéd alapértelmezetté tenni? Priorítás: - + Must Not Contain: Nem tartalmazhatja: - + Episode Filter: Epizód szűrő: @@ -1726,263 +1766,263 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor &Exportálás... - + Matches articles based on episode filter. Epizód szűrő alapján társítja a találatokat. - + Example: Példa: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match az első évad 2., 5., 8.-15., és a 30.- részeire fog szűrni - + Episode filter rules: Epizód szűrő szabályok: - + Season number is a mandatory non-zero value Évad szám egy kötelező nem-nulla érték - + Filter must end with semicolon Szűrőnek pontosvesszővel kell végződnie - + Three range types for episodes are supported: Epizódok esetén három tartomány típus támogatott: - + Single number: <b>1x25;</b> matches episode 25 of season one Egy szám: <b>1x25;</b> az első évad 25. epizódjának felel meg - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normál tartomány: <b>1x25-40;</b> az első évad 25-40. epizódjának felel meg - + Episode number is a mandatory positive value Az epizódszám egy kötelező pozitív érték - + Rules Szabályok - + Rules (legacy) Szabályok (régi) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Korlátlan tartomány: <b>1x25-;</b> az első évad 25. epizódjától kezdve minden rész, és minden epizód a későbbi évadokban - + Last Match: %1 days ago Utolsó egyezés: %1 nappal ezelőtt - + Last Match: Unknown Utolsó egyezés: Ismeretlen - + New rule name Új szabály neve - + Please type the name of the new download rule. Kérlek add meg az új letöltési szabály nevét. - - + + Rule name conflict Szabály név ütközés - - + + A rule with this name already exists, please choose another name. Már van ilyen szabály név. Kérlek válassz másikat. - + Are you sure you want to remove the download rule named '%1'? Biztosan el akarod távolítani a '%1' nevű szabályt ? - + Are you sure you want to remove the selected download rules? Biztosan eltávolítod a kiválasztott szabályokat? - + Rule deletion confirmation Szabály törlés megerősítése - + Invalid action Érvénytelen művelet - + The list is empty, there is nothing to export. A lista üres, nincs mit exportálni. - + Export RSS rules RSS szabályok exportálása - + I/O Error I/O Hiba - + Failed to create the destination file. Reason: %1 Célfájlt nem sikerült létrehozni. Indok: %1 - + Import RSS rules RSS szabályok importálása - + Failed to import the selected rules file. Reason: %1 Hiba a kiválasztott szabályfájl importálásakor. Indok: %1 - + Add new rule... Új szabály felvétele... - + Delete rule Szabály törlése - + Rename rule... Szabály átnevezése... - + Delete selected rules Kiválasztott szabályok törlése - + Clear downloaded episodes... Letöltött epizódok törlése… - + Rule renaming Szabály átnevezése - + Please type the new rule name Kérlek add meg a szabály új nevét - + Clear downloaded episodes Letöltött epizódok törlése - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Biztosan törölni szeretnéd a kiválasztott szabályhoz tartozó letöltött epizódokat ? - + Regex mode: use Perl-compatible regular expressions Regex mód: Perl-kompatibilis reguláris kifejezések használata - - + + Position %1: %2 Pozíció %1: %2 - + Wildcard mode: you can use Helyettesítő karakter mód: használható karakterek - - + + Import error Import hiba - + Failed to read the file. %1 Nem sikerült a fájl olvasása. %1 - + ? to match any single character ? – egy tetszőleges karakterre illeszkedik - + * to match zero or more of any characters * – nulla vagy több tetszőleges karakterre illeszkedik - + Whitespaces count as AND operators (all words, any order) Üres karakterek ÉS operátorként működnek (minden szó, bármilyen sorrendben) - + | is used as OR operator | a VAGY operátorként működik - + If word order is important use * instead of whitespace. Ha a szósorrend fontos, akkor használjon *-ot üres karakter helyett - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Egy üres %1 tagmondattal rendelkező kifejezés (pl. %2) - + will match all articles. minden elemre illeszkedni fog. - + will exclude all articles. minden elemet ki fog hagyni. @@ -2024,53 +2064,58 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Torrent folytatási mappa nem hozható létre: "%1" - + Cannot parse resume data: invalid format Nem lehet feldolgozni a folytatási adatot: érvénytelen formátum - - + + Cannot parse torrent info: %1 Nem lehet feldolgozni a torrent infót: %1 - + Cannot parse torrent info: invalid format Nem lehet feldolgozni a torrent infót: érvénytelen formátum - + + Mismatching info-hash detected in resume data + Eltérő info-hash észlelve a folytatási adatban + + + Couldn't save torrent metadata to '%1'. Error: %2. A torrent metaadat nem menthető ide: '%1'. Hiba: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. A torrent folytatási adat nem menthető ide: '%1'. Hiba: %2. - + Couldn't load torrents queue: %1 Nem sikerült betölteni a torrent sorrendet: %1 - + Cannot parse resume data: %1 Nem lehet feldolgozni a folytatási adatot: %1 - + Resume data is invalid: neither metadata nor info-hash was found Folytatási adat érvénytelen: sem metaadat, sem info-hash nem található - + Couldn't save data to '%1'. Error: %2 Az adatok nem menthetők ide '%1'. Hiba: %2 @@ -2078,38 +2123,38 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor BitTorrent::DBResumeDataStorage - + Not found. Nem található. - + Couldn't load resume data of torrent '%1'. Error: %2 '%1' torrent folytatási adata nem tölthető be. Hiba: %2 - - + + Database is corrupted. Az adatbázis sérült. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Nem lehetett engedélyezni az Előre-Írás Naplózás (WAL) módot. Hiba: %1. - + Couldn't obtain query result. Nem sikerült lekérdezés eredményt kapni. - + WAL mode is probably unsupported due to filesystem limitations. WAL mód valószínűleg nem támogatott a fájlrendszer korlátozásai miatt. - + Couldn't begin transaction. Error: %1 Nem sikerült elkezdeni a tranzakciót. Hiba: %1 @@ -2117,22 +2162,22 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Torrent metaadat mentése sikertelen. Hiba: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Nem sikerült tárolni a '%1' torrent folytatási adatait. Hiba: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Nem sikerült törölni a '%1' torrent folytatási adatait. Hiba: %2 - + Couldn't store torrents queue positions. Error: %1 Torrentek sorrend pozícióit nem sikerült menteni. Hiba: %1 @@ -2140,586 +2185,620 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Megosztott Hash-tábla (DHT) támogatása: %1 - - - - - - - - - + + + + + + + + + ON BE - - - - - - - - - + + + + + + + + + OFF KI - - + + Local Peer Discovery support: %1 Helyi Peer Felfedezés támogatás: %1 - + Restart is required to toggle Peer Exchange (PeX) support Újraindítás szükséges a Peercsere (PeX) támogatás átváltásához - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrent folytatása sikertelen. Torrent: "%1". Indok: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Nem sikerült a torrentet folytatni: inkonzisztens torrent azonosító ID észlelve. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Inkonzisztens adat észlelve: a konfigurációs fájlból hiányzik a kategória. A kategória helyre lesz állítva, de a beállításai visszaállnak az alapértelmezettre. Torrent: "%1". Kategória: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Inkonzisztens adat észlelve: érvénytelen kategória. Torrent: "%1". Kategória: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Eltérést észleltünk a helyreállított kategória mentési útvonalai és a torrent aktuális mentési útvonala között. A torrent most Kézi Módba vált. Torrent: "%1". Kategória: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Inkonzisztens adat észlelve: a konfigurációs fájlból hiányzik a címke. A címke helyreállításra kerül. Torrent: "%1". Címke: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Inkonzisztens adat észlelve: érvénytelen címke. Torrent: "%1". Címke: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Rendszer felébredési esemény észlelve. Újbóli jelentés az összes trackernek... - + Peer ID: "%1" Peer azonosító: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Peercsere (PeX) támogatás: %1 - - + + Anonymous mode: %1 Anonymous mód: %1 - - + + Encryption support: %1 Titkosítás támogatás: %1 - - + + FORCED KÉNYSZERÍTETT - + Could not find GUID of network interface. Interface: "%1" A hálózati csatoló GUID azonosítója nem található. Csatoló: "%1" - + Trying to listen on the following list of IP addresses: "%1" Következő IP cím lista használatának megkísérlése: "%1" - + Torrent reached the share ratio limit. A torrent elérte a megosztási arány korlátot. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent eltávolítva. + Torrent eltávolítva. - - - Removed torrent and deleted its content. - Torrent eltávolítva és tartalma törölve. + Torrent eltávolítva és tartalma törölve. - - - Torrent paused. - Torrent szüneteltetve. + Torrent szüneteltetve. - - - + Super seeding enabled. Szuper seed engedélyezve. - + Torrent reached the seeding time limit. Torrent elérte a seed idő limitet. - + Torrent reached the inactive seeding time limit. Torrent elérte az inaktív seed idő limitet. - + Failed to load torrent. Reason: "%1" Torrent betöltése sikertelen. Indok: "%1" - + I2P error. Message: "%1". + I2P hiba. Üzenet: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP támogatás: BE + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Torrent letöltése, kérem várjon... Forrás: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Torrent betöltése sikertelen. Forrás: "%1". Indok: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Duplikált torrent hozzáadási kísérlet észlelve. A trackerek egyesítése le van tiltva. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Duplikált torrent hozzáadási kísérlet észlelve. A trackerek nem egyesíthetők mert ez egy privát torrent. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Duplikált torrent hozzáadási kísérlet észlelve. Trackerek egyesítésre kerültek az új forrásból. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP támogatás: BE + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP támogatás: KI + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Nem sikerült a torrent exportálása. Torrent: "%1". Cél: "%2". Indok: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Folytatási adatok mentése megszakítva. Függőben lévő torrentek száma: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Trackerek összevonása ki van kapcsolva - System network status changed to %1 - e.g: System network status changed to ONLINE - Rendszer hálózat állapota megváltozott erre: %1 + + Trackers cannot be merged because it is a private torrent + Trackereket nem lehetett összevonni mert ez egy privát torrent + + + + Trackers are merged from new source + Trackerek összevonva az új forrásból - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP támogatás: KI - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Nem sikerült a torrent exportálása. Torrent: "%1". Cél: "%2". Indok: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 hálózati konfigurációja megváltozott, munkamenet-kötés frissítése + + Aborted saving resume data. Number of outstanding torrents: %1 + Folytatási adatok mentése megszakítva. Függőben lévő torrentek száma: %1 - + The configured network address is invalid. Address: "%1" A konfigurált hálózati cím érvénytelen. Cím: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Nem sikerült megtalálni a konfigurált hálózati címet a használathoz. Cím: "%1" - + The configured network interface is invalid. Interface: "%1" A konfigurált hálózati interfész érvénytelen. Interfész: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Érvénytelen IP-cím elutasítva a tiltott IP-címek listájának alkalmazása során. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Tracker hozzáadva a torrenthez. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Tracker eltávolítva a torrentből. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" URL seed hozzáadva a torrenthez. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" URL seed eltávolítva a torrentből. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent szüneteltetve. Torrent: "%1" + Torrent szüneteltetve. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent folytatva. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrent letöltése befejeződött. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrent áthelyezés visszavonva. Torrent: "%1". Forrás: "%2". Cél: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Nem sikerült sorba állítani a torrent áthelyezését. Torrent: "%1". Forrás: "%2". Cél: "%3". Indok: a torrent jelenleg áthelyezés alatt van a cél felé - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Nem sikerült sorba állítani a torrentmozgatást. Torrent: "%1". Forrás: "%2" Cél: "%3". Indok: mindkét útvonal ugyanarra a helyre mutat - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrent mozgatás sorba állítva. Torrent: "%1". Forrás: "%2". Cél: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Torrent áthelyezés megkezdve. Torrent: "%1". Cél: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Nem sikerült menteni a Kategóriák konfigurációt. Fájl: "%1". Hiba: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Nem sikerült értelmezni a Kategóriák konfigurációt. Fájl: "%1". Hiba: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrenten belüli .torrent fájl rekurzív letöltése. Forrás torrent: "%1". Fájl: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Torrenten belüli .torrent fájl rekurzív letöltése. Forrás torrent: "%1". Fájl: "%2". Hiba: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP szűrő fájl sikeresen feldolgozva. Alkalmazott szabályok száma: %1 - + Failed to parse the IP filter file Nem sikerült feldolgozni az IP-szűrőfájlt - + Restored torrent. Torrent: "%1" Torrent visszaállítva. Torrent: "%1" - + Added new torrent. Torrent: "%1" Új torrent hozzáadva. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent hibát jelzett. Torrent: "%1". Hiba: %2. - - Removed torrent. Torrent: "%1" - Torrent eltávolítva. Torrent: "%1" + Torrent eltávolítva. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent eltávolítva és tartalma törölve. Torrent: "%1" + Torrent eltávolítva és tartalma törölve. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + A torrentből hiányoznak az SSL paraméterek. Torrent: "%1". Üzenet: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Fájl hiba riasztás. Torrent: "%1". Fájl: "%2". Indok: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP port lefoglalás sikertelen. Üzenet: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP port lefoglalás sikerült. Üzenet: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP-szűrő - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). kiszűrt port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). privilegizált port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + A BitTorrent munkamenet súlyos hibát észlelt. Indok: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 proxy hiba. Cím: %1. Üzenet: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 kevert mód megszorítások - + Failed to load Categories. %1 Nem sikerült betölteni a Kategóriákat. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Nem sikerült betölteni a Kategóriák beállításokat. Fájl: "%1". Hiba: "Érvénytelen adat formátum" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent eltávolítva, de tartalmát és/vagy a rész-fájlt nem sikerült eltávolítani. Torrent: "%1". Hiba: "%2" + Torrent eltávolítva, de tartalmát és/vagy a rész-fájlt nem sikerült eltávolítani. Torrent: "%1". Hiba: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 letiltva - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 letiltva - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Nem sikerült az URL seed DNS lekérdezése. Torrent: "%1". URL: "%2". Hiba: "%3" + Nem sikerült az URL seed DNS lekérdezése. Torrent: "%1". URL: "%2". Hiba: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Hibaüzenet érkezett az URL seedtől. Torrent: "%1". URL: "%2". Üzenet: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Sikerült az IP cím használatba vétele. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Nem sikerült az IP cím használata. IP: "%1". Port: "%2/%3". Indok: "%4" - + Detected external IP. IP: "%1" Külső IP észlelve. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Hiba: A belső riasztási tár megtelt, és a riasztások elvetésre kerülnek. Előfordulhat, hogy csökkentett teljesítményt észlel. Eldobott riasztás típusa: "%1". Üzenet: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent sikeresen áthelyezve. Torrent: "%1". Cél: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" A torrent áthelyezése nem sikerült. Torrent: "%1". Forrás: "%2". Cél: "%3". Indok: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Művelet megszakítva - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Új torrent fájl létrehozása nem sikerült. Indok: %1. + + Failed to start seeding. + Nem sikerült elindítani a seedelést. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Művelet megszakítva + Művelet megszakítva + + Create new torrent file failed. Reason: %1. - Új torrent fájl létrehozása nem sikerült. Indok: %1. + Új torrent fájl létrehozása nem sikerült. Indok: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 "%1" peer hozzáadása a "%2" torrenthez sikertelen. Indok: %3 - + Peer "%1" is added to torrent "%2" "%1" peer hozzáadva a "%2" torrenthez. - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Váratlan adat észlelve. Torrent: %1. Adat: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Nem sikerült fájlba írni. Indok: "%1". A Torrent most "csak feltöltés" módban van. - + Download first and last piece first: %1, torrent: '%2' Első és utolsó szelet letöltése először: %1, torrent: '%2' - + On Be - + Off Ki - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Nem sikerült újratölteni a torrentet. Torrent: %1. Ok: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Nem sikerült folytatási adatot generálni. Torrent: "%1". Indok: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" A torrent visszaállítása sikertelen. A fájlok valószínűleg át lettek helyezve, vagy a tárhely nem érhető el. Torrent: "%1". Indok: "%2" - + Missing metadata Hiányzó metaadat - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Fájl átnevezése sikertelen. Torrent: "%1", fájl: "%2", indok: "%3" - + Performance alert: %1. More info: %2 Teljesítmény riasztás: %1. További info: %2 @@ -2740,184 +2819,198 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' A '%1' paraméternek követnie kell a '%1=%2' szintaxist - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' A '%1' paraméternek követnie kell a '%1=%2' szintaxist - + Expected integer number in environment variable '%1', but got '%2' Egész szám várva a '%1' környezeti változóban, de ez érkezett: '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - A '%1' paraméternek követnie kell a '%1=%2' szintaxist + A '%1' paraméternek követnie kell a '%1=%2' szintaxist - + Expected %1 in environment variable '%2', but got '%3' %1 várva a '%2' környezeti változóban, de ez érkezett: '%3' - - + + %1 must specify a valid port (1 to 65535). %1 -nek érvényes portot kell megadnia (1 és 65535 között). - + Usage: Használat: - + [options] [(<filename> | <url>)...] [opciók] [(<filename> | <url>)...] - + Options: Opciók: - + Display program version and exit Program verzió megjelenítése és kilépés - + Display this help message and exit Ezen súgó üzenet megjelenítése és kilépés - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + A '%1' paraméternek követnie kell a '%1=%2' szintaxist + + + + Confirm the legal notice + Jogi közlemény megerősítése + + + + port port - - Change the Web UI port - Web UI port módosítása + + Change the WebUI port + WebUI port módosítása - + Change the torrenting port Torrent port módosítása - + Disable splash screen Induló képernyő letiltása - + Run in daemon-mode (background) daemon-mode -ban való futtatás (háttérben) - + dir Use appropriate short form or abbreviation of "directory" könyvtár - + Store configuration files in <dir> Konfigurációs fájlok tárolása itt: <dir> - - + + name név - + Store configuration files in directories qBittorrent_<name> Konfigurációs fájlok tárolása a qBittorrent_<name> könyvtárakban - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hackeljen bele a libtorrent gyors-folytatás állományaiba, és a fájlok elérési útjai legyenek relatívak a profil könyvtárhoz - + files or URLs fájlok vagy URL-ek - + Download the torrents passed by the user A felhasználó által átadott torrentek letöltése - + Options when adding new torrents: Beállítások az új torrentek hozzáadásakor: - + path útvonal - + Torrent save path Torrent mentési útvonala - + + Add torrents as running or stopped + + + Add torrents as started or paused - Torrentek hozzáadása elindítva vagy szüneteltetve + Torrentek hozzáadása elindítva vagy szüneteltetve - + Skip hash check Hash ellenőrzés kihagyása - + Assign torrents to category. If the category doesn't exist, it will be created. Torrentek kategóriákba rendezése. Ha a kategória nem létezik, akkor létre lesz hozva. - + Download files in sequential order Fájlok letöltése sorrendben - + Download first and last pieces first Első és utolsó szelet letöltése először - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Adja meg, hogy az "Új torrent hozzáadása" párbeszédablak megnyíljon-e egy új torrent hozzáadásakor. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Az opciók értékekeit környezeti változókon keresztül lehet megadni. Egy 'option-name' beállítás esetén, a környezeti változó neve 'QBT_PARAMETER_NAME' (nagybetűkkel, '-' helyett '_'). A jelzőértékek átadásához állítsa a változót '1' vagy 'TRUE' értékre. Például, az induló képernyő letiltásához: - + Command line parameters take precedence over environment variables Parancssori paraméterek elsőbbséget élveznek a környezeti változókkal szemben - + Help Súgó @@ -2925,17 +3018,17 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor CategoryFilterModel - + Categories Kategóriák - + All Összes - + Uncategorized Nem kategorizált @@ -2969,13 +3062,21 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor - Resume torrents - Torrentek folytatása + Start torrents + + Stop torrents + + + + Resume torrents + Torrentek folytatása + + Pause torrents - Torrentek szüneteltetése + Torrentek szüneteltetése @@ -2986,15 +3087,20 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor ColorWidget - + Edit... Szerkesztés... - + Reset Visszaállítás + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor CustomThemeSource - + Failed to load custom theme style sheet. %1 Nem sikerült betölteni az egyéni téma stíluslapot. %1 - + Failed to load custom theme colors. %1 Nem sikerült betölteni az egyéni téma színeket. %1 @@ -3048,7 +3154,7 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor DefaultThemeSource - + Failed to load default theme colors. %1 Nem sikerült betölteni az alapértelmezett téma színeket. %1 @@ -3067,23 +3173,27 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor + Also remove the content files + + + Also permanently delete the files - Törölje véglegesen a fájlokat is + Törölje véglegesen a fájlokat is - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Biztosan eltávolítja a '%1'-t az átviteli listából? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Biztosan eltávolítja a következő %1 torrentet az átviteli listából? - + Remove Eltávolítás @@ -3096,12 +3206,12 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor Letöltés URL-ekből - + Add torrent links Torrent linkek hozzáadás - + One link per line (HTTP links, Magnet links and info-hashes are supported) Soronként egy link (HTTP linkek, mágnes linkek és az info hashek támogatottak) @@ -3111,12 +3221,12 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor Letöltés - + No URL entered Nem lett URL cím megadva - + Please type at least one URL. Kérem adjon meg legalább egy URL-t. @@ -3275,64 +3385,91 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor Feldolgozási hiba: Szűrő fájl nem egy érvényes PeerGuardian P2B fájl. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Torrent letöltése... Forrás: "%1" - Trackers cannot be merged because it is a private torrent - + Trackereket nem lehetett összevonni mert ez egy privát torrent - + Torrent is already present - Torrent már a listában van + Torrent már a listában van + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - '%1' torrent már szerepel a letöltési listában. Szeretné egyesíteni az új forrásból származó trackereket? + '%1' torrent már szerepel a letöltési listában. Szeretné egyesíteni az új forrásból származó trackereket? GeoIPDatabase - - + + Unsupported database file size. Nem támogatott adatbázis fájl méret. - + Metadata error: '%1' entry not found. Metaadat hiba: '%1' bejegyzés nem található. - + Metadata error: '%1' entry has invalid type. Metaadat hiba: '%1' bejegyzésnek érvénytelen típusa van. - + Unsupported database version: %1.%2 Nem támogatott adatbázis verzió: %1.%2 - + Unsupported IP version: %1 Nem támogatott IP verzió: %1 - + Unsupported record size: %1 Nem támogatott rekord méret: %1 - + Database corrupted: no data section found. Adatbázis sérült: nem található adat szakasz. @@ -3340,17 +3477,17 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http kérelem mérete meghaladja a korlátozást, socket lezárásra kerül. Korlát: %1, IP:%2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Rossz Http kérési módszer, socket bezárása. IP: %1. Módszer: "%2" - + Bad Http request, closing socket. IP: %1 Rossz Http kérés, socket bezárása. IP: %1 @@ -3391,36 +3528,64 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor IconWidget - + Browse... Tallózás… - + Reset Visszaállítás - + Select icon Ikon kiválasztása - + Supported image files Támogatott képfájlok + + LegalNotice + + + Legal Notice + Jogi figyelmeztetés + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + A qBittorrent egy fájlmegosztó program. Amikor egy torrentet futtat, annak adatai feltöltés útján mások számára is elérhetővé válnak. A megosztott tartalomért kizárólag Ön felel. + + + + No further notices will be issued. + Ez az üzenet többször nem fog megjelenni. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Ha elolvasta a jogi közleményt, akkor a parancssori `---confirm-legal-notice` opcióval elnyomhatja ezt az üzenetet. + + + + Press 'Enter' key to continue... + Nyomja meg az 'Enter' billentyűt a folytatáshoz... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 blokkolva. Indok: %2 - + %1 was banned 0.0.0.0 was banned %1 ki lett tiltva @@ -3429,91 +3594,62 @@ Támogatja a formátumokat: S01E01, 1x1, 2017.12.31 és 31.12.2017. (A dátumfor Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. A %1 egy ismeretlen parancssori paraméter. - - + + %1 must be the single command line parameter. %1 egyedüli parancssori paraméter lehet csak. - - You cannot use %1: qBittorrent is already running for this user. - Nem lehet használni %1 -t: a qBittorrent már fut ennél a felhasználónál. - - - + Run application with -h option to read about command line parameters. Az alkalmazást a -h paraméterrel indítva ismerkedhet meg a parancssori paraméterekkel. - + Bad command line Rossz parancs sor - + Bad command line: Rossz parancs sor: - + An unrecoverable error occurred. - + Helyrehozhatatlan hiba történt. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Jogi figyelmeztetés - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - A qBittorrent egy fájlmegosztó program. Amikor egy torrentet futtat, a benne lévő adatok az Ön feltöltése által lesznek elérhetőek mások számára. Minden tartalom amit megoszt, kizárólag az Ön felelőssége. + A qBittorrent helyrehozhatatlan hibába ütközött. - - No further notices will be issued. - Ez az üzenet többször nem fog megjelenni. - - - - Press %1 key to accept and continue... - Nyomja meg a %1 billentyűt az elfogadás és folytatáshoz... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - A qBittorrent egy fájlmegosztó program. Amikor egy torrentet futtat, a benne lévő adatok az Ön feltöltése által lesznek elérhetőek mások számára. Minden tartalom amit megoszt, kizárólag az Ön felelőssége. - -Több ilyen figyelmeztetést nem fog kapni. + + You cannot use %1: qBittorrent is already running. + A %1 nem használható: a qBittorrent már fut. - - Legal notice - Jogi figyelmeztetés + + Another qBittorrent instance is already running. + Egy másik qBittorrent példány már fut. - - Cancel - Mégse + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Váratlan qBittorrent példányt találtunk. Kilépés ebből a példányból. Jelenlegi folyamat azonosítója: %1. - - I Agree - Elfogadom + + Error when daemonizing. Reason: "%1". Error code: %2. + Hiba a démonizálás során. Ok: "%1". Hibakód: %2. @@ -3524,620 +3660,705 @@ Több ilyen figyelmeztetést nem fog kapni. &Szerkesztés - + &Tools &Eszközök - + &File &Fájl - + &Help Sú&gó - + On Downloads &Done &Letöltések végeztével - + &View &Nézet - + &Options... Beállítás&ok... - &Resume - &Folytatás + &Folytatás - + &Remove &Eltávolítás - + Torrent &Creator &Torrent készítő - - + + Alternative Speed Limits Alternatív sebességkorlátok - + &Top Toolbar Felső &panel - + Display Top Toolbar Felső eszköztár megjelenítése - + Status &Bar Állapot&sor - + Filters Sidebar Szűrők oldalsáv - + S&peed in Title Bar Sebesség a &címsorban - + Show Transfer Speed in Title Bar Átviteli sebesség mutatása a címsorban - + &RSS Reader &RSS Olvasó - + Search &Engine Kereső&motor - + L&ock qBittorrent qBittorrent &lezárása - + Do&nate! &Projekt támogatása! - + + Sh&utdown System + + + + &Do nothing &Ne csináljon semmit - + Close Window Ablak bezárása - R&esume All - Összes f&olytatása + Összes f&olytatása - + Manage Cookies... &Sütik kezelése… - + Manage stored network cookies Tárolt hálózati sütik kezelése - + Normal Messages Normál üzenetek - + Information Messages Információs üzenetek - + Warning Messages Figyelmeztető üzenetek - + Critical Messages Kritikus üzenetek - + &Log &Napló - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Globális sebességkorlát… - + Bottom of Queue Sor alja - + Move to the bottom of the queue Mozgatás a sor aljára - + Top of Queue Sor teteje - + Move to the top of the queue Mozgatás a sor tetejére - + Move Down Queue Mozgatás lentebb a sorban - + Move down in the queue Mozgatás lejjebb a sorban - + Move Up Queue Mozgatás fentebb a sorban - + Move up in the queue Mozgatás feljebb a sorban - + &Exit qBittorrent &qBittorrent bezárása - + &Suspend System Számítógép &altatása - + &Hibernate System Számítógép &hibernálása - S&hutdown System - Számító&gép leállítása + Számító&gép leállítása - + &Statistics S&tatisztika - + Check for Updates Frissítések ellenőrzése - + Check for Program Updates Frissítések keresése program indításakor - + &About &Névjegy - &Pause - &Szünet + &Szünet - P&ause All - Összes s&züneteltetése + Összes s&züneteltetése - + &Add Torrent File... Torrent hozzá&adása... - + Open Megnyitás - + E&xit &Kilépés - + Open URL URL megnyitása - + &Documentation &Dokumentáció - + Lock Zárolás - - - + + + Show Mutat - + Check for program updates Programfrissítések keresése - + Add Torrent &Link... Torrent &link hozzáadása... - + If you like qBittorrent, please donate! Ha tetszik a qBittorrent, kérjük, adományozzon! - - + + Execution Log Napló - + Clear the password Jelszó törlése - + &Set Password &Jelszó beállítása - + Preferences &Beállítások - + &Clear Password &Jelszó törlése - + Transfers Átvitelek - - + + qBittorrent is minimized to tray qBittorrent lekerül a tálcára - - - + + + This behavior can be changed in the settings. You won't be reminded again. Ez a működés megváltoztatható a beállításokban. Többször nem lesz emlékeztetve. - + Icons Only Csak ikonok - + Text Only Csak szöveg - + Text Alongside Icons Szöveg az ikonok mellett - + Text Under Icons Szöveg az ikonok alatt - + Follow System Style Rendszer kinézetének követése - - + + UI lock password UI jelszó - - + + Please type the UI lock password: Kérlek add meg az UI jelszavát: - + Are you sure you want to clear the password? Biztosan ki akarod törölni a jelszót? - + Use regular expressions Reguláris kifejezések használata - - Search - Keresés + + + Search Engine + Keresőmotor - - Transfers (%1) - Átvitelek (%1) + + Search has failed + A keresés sikertelen - Recursive download confirmation - Letöltés ismételt megerősítése + + Search has finished + A keresés befejeződött - Never - Soha + + Search + Keresés + + + + Transfers (%1) + Átvitelek (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. A qBittorrent frissült, és újra kell indítani a változások életbe lépéséhez. - + qBittorrent is closed to tray qBittorrent bezáráskor a tálcára - + Some files are currently transferring. Néhány fájl átvitele folyamatban van. - + Are you sure you want to quit qBittorrent? Biztosan ki akar lépni a qBittorrentből? - + &No &Nem - + &Yes &Igen - + &Always Yes &Mindig igen - + Options saved. Beállítások mentve. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [L: %1, F: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Hiányzó Python bővítmény - + qBittorrent Update Available Elérhető qBittorrent frissítés - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? A keresőmotor használatához Python szükséges, de úgy tűnik nincs telepítve. Telepíti most? - + Python is required to use the search engine but it does not seem to be installed. A keresőhöz Python szükséges, de úgy tűnik nincs telepítve. - - + + Old Python Runtime Elavult Python bővítmény - + A new version is available. Új verzió elérhető. - + Do you want to download %1? Le szeretnéd tölteni %1? - + Open changelog... Változások listájának megnyitása... - + No updates available. You are already using the latest version. Nem érhető el frissítés. A legfrissebb verziót használja. - + &Check for Updates &Frissítések keresése - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? A telepített Python verziója (%1) túl régi. Minimális követelmény: %2. Telepít most egy újabb verziót? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. A telepített Python verziója (%1) túl régi. Egy újabb verzió szükséges a keresőmotorok működéséhez. Minimális követelmény: %2. - + + Paused + Szüneteltetve + + + Checking for Updates... Frissítések keresése… - + Already checking for program updates in the background A frissítések keresése már fut a háttérben - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Letöltési hiba - Python setup could not be downloaded, reason: %1. Please install it manually. - A Python telepítőt nem sikerült letölteni, mivel: %1. + A Python telepítőt nem sikerült letölteni, mivel: %1. Kérlek telepítsd fel kézzel. - - + + Invalid password Érvénytelen jelszó - + Filter torrents... Torrentek szűrése... - + Filter by: Szűrés erre: - + The password must be at least 3 characters long A jelszónak legalább 3 karakter hosszúnak kell lennie - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - '%1' torrent .torrent fájlokat is tartalmaz, így is szeretné letölteni őket? - - - + The password is invalid A jelszó érvénytelen - + DL speed: %1 e.g: Download speed: 10 KiB/s Letöltési sebsesség: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Feltöltési sebesség: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [L: %1/s, F: %2/s] qBittorrent %3 - - - + Hide Elrejt - + Exiting qBittorrent qBittorrent bezárása - + Open Torrent Files Torrent Fájl Megnyitása - + Torrent Files Torrent Fájlok @@ -4198,133 +4419,133 @@ Kérlek telepítsd fel kézzel. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O Hiba: %1 - + The file size (%1) exceeds the download limit (%2) A fájl mérete (%1) meghaladja a letöltési korlátot (%2) - + Exceeded max redirections (%1) Maximális átirányítások száma túllépve (%1) - + Redirected to magnet URI Átirányítva mágnes URI-ra - + The remote host name was not found (invalid hostname) A távoli kiszolgálónév nem található (érvénytelen kiszolgálónév) - + The operation was canceled A művelet megszakítva - + The remote server closed the connection prematurely, before the entire reply was received and processed A távoli kiszolgáló idő előtt lezárta a kapcsolatot, mielőtt a teljes választ megkapta és feldolgozta volna - + The connection to the remote server timed out Időtúllépés a távoli kiszolgálóhoz kapcsolódáskor - + SSL/TLS handshake failed SSL/TLS kapcsolatfelvétel nem sikerült - + The remote server refused the connection A távoli kiszolgáló elutasította a kapcsolatot - + The connection to the proxy server was refused Kapcsolódás a proxy szerverhez elutasításra került - + The proxy server closed the connection prematurely A proxy szerver idő előtt bontotta a kapcsolatot - + The proxy host name was not found Proxy szerver kiszolgálónév nem található - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Időtúllépés a proxy szerverhez való kapcsolódáskor, vagy a szerver nem válaszolt időben az elküldött kérésre - + The proxy requires authentication in order to honor the request but did not accept any credentials offered A proxy hitelesítést igényel a kérés teljesítése érdekében, de nem fogadta el a megadott belépési adatokat - + The access to the remote content was denied (401) A távoli tartalomhoz való hozzáférés megtagadva (401) - + The operation requested on the remote content is not permitted A kért művelet nem engedélyezett a távoli tartalmon - + The remote content was not found at the server (404) A távoli tartalom nem található a kiszolgálón (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted A távoli kiszolgáló hitelesítést igényel a tartalom kiszolgálásához, de nem fogadja el az általunk küldött hitelesítő adatokat - + The Network Access API cannot honor the request because the protocol is not known A Network Access API nem teljesíti a kérést, mert a protokoll nem ismert - + The requested operation is invalid for this protocol A kért művelet érvénytelen ennél a protokollnál - + An unknown network-related error was detected Ismeretlen hálózati-eredetű hiba észlelve - + An unknown proxy-related error was detected Ismeretlen proxy-eredetű hiba észlelve - + An unknown error related to the remote content was detected Távoli tartalomhoz köthető ismeretlen hiba lett észlelve - + A breakdown in protocol was detected Protokoll meghibásodás észlelve - + Unknown error Ismeretlen hiba @@ -4332,7 +4553,12 @@ Kérlek telepítsd fel kézzel. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSL hiba figyelmen kívül hagyva, URL: "%1", hibák: "%2" @@ -5704,294 +5930,307 @@ Kérlek telepítsd fel kézzel. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Speciális beállítások - + Customize UI Theme... Felhasználói felület téma testreszabása... - + Transfer List Átviteli lista - + Confirm when deleting torrents Torrentek törlésének megerősítése - Shows a confirmation dialog upon pausing/resuming all the torrents - Megerősítő ablak megjelenítése az összes torrent szüneteltetésekor/újraindításakor + Megerősítő ablak megjelenítése az összes torrent szüneteltetésekor/újraindításakor - Confirm "Pause/Resume all" actions - A "Szünet/Összes folytatása" műveletek megerősítése + A "Szünet/Összes folytatása" műveletek megerősítése - + Use alternating row colors In table elements, every other row will have a grey background. Váltakozó sorszínezés használata - + Hide zero and infinity values Nulla és végtelen értékek elrejtése - + Always Mindig - Paused torrents only - Csak szüneteltetett torrentek + Csak szüneteltetett torrentek - + Action on double-click Művelet dupla-kattintás esetén - + Downloading torrents: - Torrentek letöltése: + Letöltés alatt lévő torrenteknél: - - Start / Stop Torrent - Torrent elindítása / leállítása + Torrent elindítása / leállítása - - + + Open destination folder Célkönyvtár megnyitása - - + + No action Nincs művelet - + Completed torrents: Letöltött torrenteknél: - + Auto hide zero status filters Üres szűrők automatikus elrejtése - + Desktop Asztal - + Start qBittorrent on Windows start up qBittorrent indítása a rendszer indulásakor - + Show splash screen on start up Indítókép megjelenítése - + Confirmation on exit when torrents are active Megerősítés kérése kilépéskor, aktív torrentek esetén - + Confirmation on auto-exit when downloads finish Megerősítés kérése automatikus kilépéskor, amikor a letöltések befejeződnek - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>A qBittorrent beállításához a .torrent fájlok és/vagy Magnet linkek<br/> alapértelmezett programjaként, használhatja a <span style=" font-weight:600;">Vezérlőpult</span>, <span style=" font-weight:600;">Alapértelmezett programok</span> részét.</p></body></html> - + KiB KiB - + Torrent content layout: Torrent tartalom elrendezése: - + Original Eredeti - + Create subfolder Almappa létrehozása - + Don't create subfolder Ne hozzon létre almappát - + The torrent will be added to the top of the download queue A torrent a letöltési sor tetejére kerül - + Add to top of queue The torrent will be added to the top of the download queue Hozzáadás a várólista elejére - + When duplicate torrent is being added Amikor duplikált torrent kerül hozzáadásra - + Merge trackers to existing torrent Trackerek egyesítése meglévő torrenthez - + + Keep unselected files in ".unwanted" folder + Tartsa a nem kiválasztott fájlokat a ".unwanted" mappában + + + Add... Hozzáadás… - + Options.. Beállítások… - + Remove Eltávolítás - + Email notification &upon download completion E-mail értesítés a letöltés &végeztével - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Peer kapcsolati protokoll: - + Any Bármi - + I2P (experimental) I2P (kísérleti) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Ha a &quot;kevert mód&quot; engedélyezve van, akkor az I2P torrentek a trackeren kívül más forrásokból is beszerezhetnek peereket, csatlakozhatnak normál IP címekhez is. Ezzel megszűnik az anonimizálás. Ez a kevert mód akkor lehet hasznos, ha a felhasználó nem érdekelt az I2P anonimizálásban, de csatlakozni akar az I2P peerekhez is.</p></body></html> + <html><head/><body><p>Ha a &quot;kevert mód&quot; engedélyezve van, akkor az I2P torrentek a trackeren kívül más forrásokból is beszerezhetnek peereket, csatlakozhatnak normál IP címekhez is. Ezzel megszűnik az anonimizálás. Ez a kevert mód akkor lehet hasznos, ha a felhasználó nem érdekelt az I2P anonimizálásban, de csatlakozni akar az I2P peerekhez is.</p></body></html> - + Mixed mode Kevert mód - + Some options are incompatible with the chosen proxy type! Egyes beállítások nem kompatibilisek a kiválasztott proxy típussal! - + If checked, hostname lookups are done via the proxy Ha be van jelölve, a kiszolgálónevek a proxyn keresztül lesznek feloldva. - + Perform hostname lookup via proxy Kiszolgálónév lekérdezése proxyn keresztül - + Use proxy for BitTorrent purposes Proxy használata BitTorrent célokra - + RSS feeds will use proxy RSS csatornák proxy szervert fognak használni - + Use proxy for RSS purposes Proxy használata RSS célokra - + Search engine, software updates or anything else will use proxy Keresőmotor, szoftver frissítések és minden más proxyt fog használni - + Use proxy for general purposes Proxy általános célokra történő használata - + IP Fi&ltering &IP-szűrés - + Schedule &the use of alternative rate limits Alternatív sebességkorlátok ütemezése - + From: From start time Ettől: - + To: To end time Eddig: - + Find peers on the DHT network Peerek keresése a DHT hálózaton - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6000,140 +6239,188 @@ Titkosítás megkövetelése: Kapcsolódás csak a protokolltitkosítással rend Titkosítás letiltása: Kapcsolódás csak protokolltitkosítás nélküli peerekhez - + Allow encryption Titkosítás engedélyezése - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">További információ</a>) - + Maximum active checking torrents: Torrentek aktív ellenőrzésének maximális száma: - + &Torrent Queueing &Torrent ütemezés - + When total seeding time reaches Amikor a teljes seed időt eléri - + When inactive seeding time reaches Amikor az inaktív seed időt eléri - A&utomatically add these trackers to new downloads: - Ezen trackerek a&utomatikus hozzáadása az új letöltésekhez: + Ezen trackerek a&utomatikus hozzáadása az új letöltésekhez: - + RSS Reader RSS Olvasó - + Enable fetching RSS feeds RSS csatornák lekérdezésének engedélyezése - + Feeds refresh interval: Csatornák frissítési időköze: - + + Same host request delay: + Ugyanazon kiszolgáló-kérés késleltetése: + + + Maximum number of articles per feed: Csatornánként elemek maximum száma: - - - + + + min minutes perc - + Seeding Limits Seedelési korlátok - Pause torrent - Torrent szüneteltetése + Torrent szüneteltetése - + Remove torrent Torrent eltávolítása - + Remove torrent and its files Torrent és fájljai eltávolítása - + Enable super seeding for torrent Super seed engedélyezése a torrentnél - + When ratio reaches Amikor az arányt eléri - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Automata RSS torrent letöltő - + Enable auto downloading of RSS torrents Az RSS torrentek automatikus letöltésének engedélyezése - + Edit auto downloading rules... Automatikus letöltési szabályok szerkesztése… - + RSS Smart Episode Filter RSS okos epizód szűrő - + Download REPACK/PROPER episodes REPACK/PROPER epizódok letöltése - + Filters: Szűrők: - + Web User Interface (Remote control) Webes felhasználói felület (Távoli vezérlés) - + IP address: IP-cím: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6142,42 +6429,41 @@ Határozzon meg egy IPv4 vagy IPv6 címet. Megadhatja "0.0.0.0"-t bár vagy "::"-t bármely IPv6 címhez, vagy használja a "*"-t bármely IPv4-hez és IPv6-hoz egyaránt. - + Ban client after consecutive failures: Kliens tiltása egymást követő hibák után: - + Never Soha - + ban for: tiltás: - + Session timeout: Munkamenet időtúllépés: - + Disabled Letiltva - Enable cookie Secure flag (requires HTTPS) - Secure jelző engedélyezése a sütiknél (HTTPS szükséges) + Secure jelző engedélyezése a sütiknél (HTTPS szükséges) - + Server domains: Kiszolgáló domainek: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6190,442 +6476,495 @@ A DNS újrakötési támadások ellen, Használja a ';' karaktert az elválasztásra, ha több is van. A '*' helyettesítő karakter is használható. - + &Use HTTPS instead of HTTP &HTTPS használata HTTP helyett - + Bypass authentication for clients on localhost Hitelesítés mellőzése a helyi gépen lévő klienseknél - + Bypass authentication for clients in whitelisted IP subnets Hitelesítés mellőzése a fehérlistára tett IP alhálózatokban lévő klienseknél - + IP subnet whitelist... IP alhálózat fehérlista… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Adjon meg reverse proxy IP-címeket (vagy alhálózatokat, pl. 0.0.0.0/24) a továbbított kliens cím használatához (X-Forwarded-For attribútum). Használja a ';' karaktert a felosztáshoz, ha több bejegyzést ad meg. - + Upda&te my dynamic domain name &Dinamikus domain név frissítése - + Minimize qBittorrent to notification area qBittorrent értesítési területre helyezése tálcára helyezéskor - + + Search + Keresés + + + + WebUI + + + + Interface Felület - + Language: Nyelv: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Tálcaikon stílusa: - - + + Normal Normál - + File association Fájl társítás - + Use qBittorrent for .torrent files qBittorrent használata a .torrent fájlokhoz - + Use qBittorrent for magnet links qBittorrent használata a magnet linkekhez - + Check for program updates Programfrissítések keresése - + Power Management Energiagazdálkodás - + + &Log Files + + + + Save path: Mentés helye: - + Backup the log file after: Naplófájl biztonsági mentése ennyi után: - + Delete backup logs older than: Naplófájlok biztonsági mentéseinek törlése ennyi után: - + + Show external IP in status bar + + + + When adding a torrent Torrent hozzáadásakor - + Bring torrent dialog to the front Torrent párbeszédablak előrehozása - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Azon .torrent fájlok is törlődjenek, amelyek hozzáadása meg lett szakítva - + Also when addition is cancelled Akkor is, ha meg lett szakítva a hozzáadás - + Warning! Data loss possible! Figyelmeztetés! Adatvesztés lehetséges! - + Saving Management Mentéskezelés - + Default Torrent Management Mode: Alapértelmezett torrentkezelési mód: - + Manual Kézi - + Automatic Automatikus - + When Torrent Category changed: Amikor a torrent kategória megváltozik: - + Relocate torrent Torrent áthelyezése - + Switch torrent to Manual Mode Torrent kézi módba váltása - - + + Relocate affected torrents Érintett torrentek áthelyezése - - + + Switch affected torrents to Manual Mode Érintett torrentek kézi módba váltása - + Use Subcategories Alkategóriák használata - + Default Save Path: Alapértelmezett mentési útvonal: - + Copy .torrent files to: .torrent fájlok másolása ide: - + Show &qBittorrent in notification area &qBittorrent megjelenítése az értesítési területen - &Log file - &Naplófájl + &Naplófájl - + Display &torrent content and some options &Torrent tartalom és néhány beállítás megjelenítése - + De&lete .torrent files afterwards Ezután törölje a .torrent fájlokat - + Copy .torrent files for finished downloads to: Elkészült letöltések .torrent fájlainak másolása a következő helyre: - + Pre-allocate disk space for all files Minden fájl helyének lefoglalása előre - + Use custom UI Theme Egyéni felhasználói felület téma használata - + UI Theme file: Felhasználói felület téma fájl: - + Changing Interface settings requires application restart A felület beállításainak módosításához az alkalmazás újraindítása szükséges - + Shows a confirmation dialog upon torrent deletion Torrent törlésekor megerősítő párbeszédpanel megjelenítése - - + + Preview file, otherwise open destination folder Fájl előnézet, egyébként nyissa meg a célmappát - - Show torrent options - Torrent opciók megjelenítése + Torrent opciók megjelenítése - + Shows a confirmation dialog when exiting with active torrents Kilépés esetén megerősítő párbeszédpanel megjelenítése, ha vannak aktív torrentek - + When minimizing, the main window is closed and must be reopened from the systray icon Minimalizáláskor a főablak bezáródik, és újra kell nyitni a tálcaikonról - + The systray icon will still be visible when closing the main window A tálcaikon továbbra is látható lesz a főablak bezárásakor - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window A qBittorrent értesítési területre helyezése bezáráskor - + Monochrome (for dark theme) Monokróm (sötét témához) - + Monochrome (for light theme) Monokróm (világos témához) - + Inhibit system sleep when torrents are downloading Számítógép alvó üzemmód tiltása ha van letöltésben lévő torrent - + Inhibit system sleep when torrents are seeding Számítógép alvó üzemmód tiltása ha van seedelt torrent - + Creates an additional log file after the log file reaches the specified file size További naplófájlt hoz létre, ha a naplófájl eléri a megadott méretet - + days Delete backup logs older than 10 days nap - + months Delete backup logs older than 10 months hónap - + years Delete backup logs older than 10 years év - + Log performance warnings Teljesítmény figyelmeztetések naplózása - The torrent will be added to download list in a paused state - A torrent szüneteltetve adódik hozzá a letöltési listához + A torrent szüneteltetve adódik hozzá a letöltési listához - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ne induljon el automatikusan a letöltés - + Whether the .torrent file should be deleted after adding it Törlésre kerüljön-e a .torrent fájl a hozzáadás után - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. A töredezettség minimalizálása érdekében a letöltés megkezdése előtt foglalja le a teljes fájlméretet a lemezen. Csak HDD-k esetén hasznos. - + Append .!qB extension to incomplete files .!qB kiterjesztés használata befejezetlen fájloknál - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Ha egy torrent letöltésre kerül, akkor felajánlja a benne található összes .torrent fájl hozzáadását - + Enable recursive download dialog Az ismétlődő letöltési párbeszédablak engedélyezése - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatikus: Különböző torrenttulajdonságok (példáué a mentési útvonal) a hozzátartozó kategória alapján kerülnek eldöntésre Kézi: A különböző torrenttulajdonságokat (például a mentési útvonalat) kézzel kell megadni - + When Default Save/Incomplete Path changed: Amikor az alapértelmezett mentési/befejezetlen elérési útvonal megváltozik: - + When Category Save Path changed: Ha a kategória mentési útja megváltozott: - + Use Category paths in Manual Mode Használja a kategória elérési útjait kézi módban - + Resolve relative Save Path against appropriate Category path instead of Default one Oldja fel a relatív mentési útvonalat a megfelelő kategória elérési útjával az alapértelmezett helyett - + Use icons from system theme Rendszer téma ikonok használata - + Window state on start up: Ablak állapota induláskor: - + qBittorrent window state on start up qBittorrent ablak állapota induláskor - + Torrent stop condition: Torrent stop feltétel: - - + + None Nincs - - + + Metadata received Metaadat fogadva - - + + Files checked Fájlok ellenőrizve - + Ask for merging trackers when torrent is being added manually Kérdezzen rá a trackerek összevonására, amikor a torrent kézzel kerül hozzáadásra - + Use another path for incomplete torrents: Használjon másik elérési utat a befejezetlen torrentekhez: - + Automatically add torrents from: Torrentek automatikus hozzáadása innen: - + Excluded file names Kizárt fájlnevek - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6654,841 +6993,914 @@ readme.txt: pontos fájlnév szűrése. readme[0-9].txt: 'readme1.txt', 'readme2.txt' szűrő, de nem 'readme10.txt'. - + Receiver Fogadó - + To: To receiver Neki: - + SMTP server: SMTP-kiszolgáló: - + Sender Küldő - + From: From sender Feladó: - + This server requires a secure connection (SSL) Ez a kiszolgáló biztonságos kapcsolatot (SSL) igényel - - + + Authentication Hitelesítés - - - - + + + + Username: Felhasználónév: - - - - + + + + Password: Jelszó: - + Run external program Külső program futtatása - Run on torrent added - Futtatás torrent hozzáadásakor + Futtatás torrent hozzáadásakor - Run on torrent finished - Futtatás torrent befejezésekor + Futtatás torrent befejezésekor - + Show console window Konzolablak megjelenítése - + TCP and μTP TCP és μTP - + Listening Port Használt Port - + Port used for incoming connections: Port a bejövő kapcsolatokhoz: - + Set to 0 to let your system pick an unused port Állítsa 0 -ra, hogy a rendszer válasszon egy nem használt portot - + Random Véletlenszerű - + Use UPnP / NAT-PMP port forwarding from my router UPnP / NAT-PMP használata a routeren a porttovábbításhoz - + Connections Limits Kapcsolati korlátok - + Maximum number of connections per torrent: Torrentenkénti kapcsolatok maximális száma: - + Global maximum number of connections: Globális kapcsolatok maximális száma: - + Maximum number of upload slots per torrent: Torrentenkénti feltöltési szálak maximális száma: - + Global maximum number of upload slots: Globális feltöltési szálak maximális száma: - + Proxy Server Proxy kiszolgáló - + Type: Típus: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Kiszolgáló: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Különben a proxy csak a tracker kapcsolatok esetén kerül használatra - + Use proxy for peer connections Proxy használata peer kapcsolatokhoz - + A&uthentication &Hitelesítés - + Info: The password is saved unencrypted Infó: Jelszó titkosítás nélkül kerül elmentésre - + Filter path (.dat, .p2p, .p2b): Szűrő útvonala (.dat, .p2p, .p2b): - + Reload the filter Szűrő újratöltése - + Manually banned IP addresses... Kézzel tiltott IP-címek… - + Apply to trackers Alkalmazás a trackerekre - + Global Rate Limits Globális sebességkorlátok - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Feltöltés: - - + + Download: Letöltés: - + Alternative Rate Limits Alternatív sebességkorlátok - + Start time Kezdési idő - + End time Befejezési idő - + When: Ekkor: - + Every day Minden nap - + Weekdays Hétköznapokon - + Weekends Hétvégéken - + Rate Limits Settings Sebességkorlátok beállítása - + Apply rate limit to peers on LAN Sebességkorlátok alkalmazása LAN peerekre is - + Apply rate limit to transport overhead Sebességkorlát alkalmazása a fejléc (overhead) többletre is. - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Sebességkorlát alkalmazása µTP protokollra is - + Privacy Magánszféra - + Enable DHT (decentralized network) to find more peers DHT (decentralizált hálózat) engedélyezése, hogy több peert találjon - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Peercsere kompatibilis kliensekkel (µTorrent, Vuze, …) - + Enable Peer Exchange (PeX) to find more peers Peercsere (PeX) engedélyezése, hogy több peert találjon - + Look for peers on your local network Peerek keresése a helyi hálózaton - + Enable Local Peer Discovery to find more peers Helyi peerek felkutatásának (LPD) engedélyezése, hogy több peert találjon - + Encryption mode: Titkosítás módja: - + Require encryption Titkosítás megkövetelése - + Disable encryption Titkosítás kikapcsolása - + Enable when using a proxy or a VPN connection Bekapcsolás proxy vagy VPN kapcsolat esetén - + Enable anonymous mode Anonymous mód engedélyezése - + Maximum active downloads: Aktív letöltések maximális száma: - + Maximum active uploads: Aktív feltöltések maximális száma: - + Maximum active torrents: Aktív torrentek maximális száma: - + Do not count slow torrents in these limits Lassú torrentek figyelmen kívül hagyása ezeknél a korlátoknál - + Upload rate threshold: Feltöltési sebesség küszöb: - + Download rate threshold: Letöltési sebesség küszöb: - - - + + + + sec seconds mp - + Torrent inactivity timer: Torrent inaktivitási időzítő: - + then aztán - + Use UPnP / NAT-PMP to forward the port from my router UPnP / NAT-PMP használata a porttovábbításhoz a routeremtől - + Certificate: Tanúsítvány: - + Key: Kulcs: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Információk a tanúsítványokról</a> - + Change current password Jelenlegi jelszó megváltoztatása - Use alternative Web UI - Alternatív Web UI használata + Alternatív Web UI használata - + Files location: Fájlok helye: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Biztonság - + Enable clickjacking protection Clickjacking védelem engedélyezés - + Enable Cross-Site Request Forgery (CSRF) protection Engedélyezze a kereszt webhely kérelem hamisítás (CSRF) védelmet - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Kiszolgáló fejléc érvényesítés engedélyezése - + Add custom HTTP headers Egyéni HTTP fejlécek hozzáadása - + Header: value pairs, one per line Fejléc: értékpárok, soronként egy - + Enable reverse proxy support Fordított proxy támogatás engedélyezése - + Trusted proxies list: Megbízott proxy kiszolgálók listája: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Szolgáltatás: - + Register Regisztráció - + Domain name: Domain név: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Ezeket a beállításokat bekapcsolva, <strong>véglegesen elveszítheti</strong> a .torrent fájljait! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Ha engedélyezi a második lehetőséget (&ldquo;Akkor is, ha meg lett szakítva a hozzáadás&rdquo;), akkor a .torrent fájl <strong>törölve lesz</strong>, akkor is, ha a &ldquo;<strong>Mégse</strong>&rdquo; gombot nyomja meg a &ldquo;Torrent hozzáadása&rdquo; párbeszédablakon - + Select qBittorrent UI Theme file qBittorrent felület téma fájl kiválasztása - + Choose Alternative UI files location Válasszon helyet az alternatív felhasználóifelület-fájloknak - + Supported parameters (case sensitive): Támogatott paraméterek (kis- és nagybetű különbözik): - + Minimized Tálcán - + Hidden Rejtve - + Disabled due to failed to detect system tray presence Letiltva, mert nem sikerült észlelni a rendszertálca jelenlétét - + No stop condition is set. Nincs stop feltétel beállítva. - + Torrent will stop after metadata is received. Torrent megáll a metaadat fogadása után. - - Torrents that have metadata initially aren't affected. - Nem érintettek azok a torrentek melyek kezdéskor metaadattal rendelkeznek. - - - + Torrent will stop after files are initially checked. Torrent meg fog állni a fájlok kezdeti ellenőrzése után. - + This will also download metadata if it wasn't there initially. Ez a metaadatot is le fogja tölteni ha az, kezdéskor nem volt jelen. - + %N: Torrent name %N: Torrent neve - + %L: Category %L: Kategória - + %F: Content path (same as root path for multifile torrent) %F: Tartalom útvonala (többfájlok torrenteknél ugyanaz mint a gyökér útvonal) - + %R: Root path (first torrent subdirectory path) %R: Gyökér útvonal (első torrent alkönyvtár útvonala) - + %D: Save path %D: Mentés útvonala - + %C: Number of files %C: Fájlok száma - + %Z: Torrent size (bytes) %Z: Torrent mérete (bájtok) - + %T: Current tracker %T: Jelenlegi tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tipp: Tegye a paramétereket idézőjelbe, hogy elkerülje a szöveg üres karaktereknél történő kettévágását (például "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nincs) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Egy torrent lassúnak lesz ítélve, ha a le- és feltöltési sebessége ezen értékek alatt marad a "torrent inaktivítási időzítő"-ben meghatározott ideig. - + Certificate Tanúsítvány - + Select certificate Tanúsítvány kiválasztása - + Private key Privát kulcs - + Select private key Privát kulcs kiválasztása - + + WebUI configuration failed. Reason: %1 + WebUI konfiguráció sikertelen. Ok: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Válasszon egy megfigyelni kívánt könyvtárat - + Adding entry failed Bejegyzés hozzáadása sikertelen - - Location Error - Hely hiba + + The WebUI username must be at least 3 characters long. + A WebUI felhasználónévnek legalább 3 karakter hosszúnak kell lennie. + + + + The WebUI password must be at least 6 characters long. + A WebUI jelszónak legalább 6 karakter hosszúnak kell lennie. - - The alternative Web UI files location cannot be blank. - Alternatív Web UI fájlok helye nem lehet üres. + + Location Error + Hely hiba - - + + Choose export directory Export könyvtár kiválasztása - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Ha ezek a beállítások be vannak kapcsolva, akkor a qBittorrent <strong>törli</strong> a .torrent fájlokat, ha a sikeresen hozzáadta (első lehetőség) vagy nem adta hozzá (második lehetőség) a letöltési sorhoz. Ez <strong>nem csak</strong> a &ldquo;Torrent hozzáadása&rdquo; menüművelettel megnyitott fájlokra érvényes, hanem a <strong>fájltípus társításokon</strong> keresztül megnyitottakra is - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent felület téma fájl (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Címkék (vesszővel elválasztva) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (vagy '-' ha nem érhető el) - + %J: Info hash v2 (or '-' if unavailable) %J: Info hash v2 (vagy '-' ha nem érhető el) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent azonosító (vagy sha-1 info hash v1 torrenthez, vagy csonkolt sha-256 info hash v2/hibrid torrenthez) - - - + + + Choose a save directory Mentési könyvtár választása - + + Torrents that have metadata initially will be added as stopped. + Az eredetileg metaadatokkal rendelkező torrentek leállítva kerülnek hozzáadásra. + + + Choose an IP filter file Válassz egy IP-szűrő fájlt - + All supported filters Minden támogatott szűrő - + + The alternative WebUI files location cannot be blank. + Az alternatív WebUI-fájlok helye nem lehet üres. + + + Parsing error Feldolgozási hiba - + Failed to parse the provided IP filter Megadott IP szűrő feldogozása sikertelen - + Successfully refreshed Sikeresen frissítve - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number IP-szűrő sikeresen feldolgozva: %1 szabály alkalmazva. - + Preferences Beállítások - + Time Error Idő hiba - + The start time and the end time can't be the same. A kezdés és befejezés ideje nem lehet ugyanaz. - - + + Length Error Hossz hiba - - - The Web UI username must be at least 3 characters long. - Web UI felhasználónévnek legalább 3 karakter hosszúnak kell lennie. - - - - The Web UI password must be at least 6 characters long. - Web UI jelszónak legalább 6 karakter hosszúnak kell lennie. - PeerInfo - + Unknown Ismeretlen - + Interested (local) and choked (peer) Érdekelt (helyi) és elfojtott (peer) - + Interested (local) and unchoked (peer) Érdekelt (helyi) és nem elfojtott (peer) - + Interested (peer) and choked (local) Érdekelt (peer) és elfojtott (helyi) - + Interested (peer) and unchoked (local) Érdekelt (peer) és nem elfojtott (helyi) - + Not interested (local) and unchoked (peer) Nem érdekelt (helyi) és nem elfojtott (peer) - + Not interested (peer) and unchoked (local) Nem érdekelt (peer) és nem elfojtott (helyi) - + Optimistic unchoke Optimista elfojtásmegszüntetés - + Peer snubbed Peer elnémítva - + Incoming connection Bejövő kapcsolat - + Peer from DHT Peer DHT hálózatból - + Peer from PEX Peer PEX hálózatból - + Peer from LSD Peer LSD hálózatból - + Encrypted traffic Titkosított forgalom - + Encrypted handshake Titkosított kézfogás + + + Peer is using NAT hole punching + + PeerListWidget @@ -7644,7 +8056,7 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt' szűrő, de ne Peer "%1" manuálisan tiltva - + N/A N/A @@ -7667,7 +8079,7 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt' szűrő, de ne Hozzáadandó peerek listája (soronként egy): - + Format: IPv4:port / [IPv6]:port Formátum: IPv4:port / [IPv6]:port @@ -7708,27 +8120,27 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt' szűrő, de ne PiecesBar - + Files in this piece: Fájlok ebben a szeletben: - + File in this piece: Fájl ebben a szeletben: - + File in these pieces: Fájl ezekben a szeletekben: - + Wait until metadata become available to see detailed information Várja meg, amíg a metaadat elérhetővé válik a részletes információk megtekintéséhez - + Hold Shift key for detailed information Részletes információkért tartsa lenyomva a Shift billentyűt @@ -7741,58 +8153,58 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt' szűrő, de ne Keresőmodulok - + Installed search plugins: Telepített keresőmodulok: - + Name Név - + Version Verzió - + Url URL - - + + Enabled Engedélyezve - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Figyelmeztetés: Győződjön meg róla, hogy a keresőmotorok bármelyikéből származó torrentek letöltésekor betartja az ország szerzői jogi törvényeit. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> További keresőmodulok tölthetőek le innen: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Új telepítése - + Check for updates Frissítések ellenőrzése - + Close Bezárás - + Uninstall Eltávolítás @@ -7912,17 +8324,17 @@ Azok a modulok letiltásra kerültek. Modul forrása - + Search plugin source: Keresőmodul forrása: - + Local file Helyi fájl - + Web link Web link @@ -7940,70 +8352,70 @@ Azok a modulok letiltásra kerültek. Power management found suitable D-Bus interface. Interface: %1 - + Az energiakezelés megfelelő D-Bus interfészt talált. Interfész: %1 Power management error. Did not found suitable D-Bus interface. - + Energiagazdálkodási hiba. Nem található megfelelő D-Bus interfész. Power management error. Action: %1. Error: %2 - + Energiagazdálkodási hiba. Művelet: %1. Hiba: %2 Power management unexpected error. State: %1. Error: %2 - + Energiagazdálkodási váratlan hiba. Állapot: %1. Hiba: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: A következő fájlok "%1" torrentből támogatják az előnézetet, kérem válasszon egyet közülük: - + Preview Előnézet - + Name Név - + Size Méret - + Progress Folyamat - + Preview impossible Az előnézet lehetetlen - + Sorry, we can't preview this file: "%1". Sajnáljuk, ezt a fájlt nem lehet előnézni: "%1" - + Resize columns Oszlopok átméretezése - + Resize all non-hidden columns to the size of their contents Méretezze át az összes nem rejtett oszlopot a tartalmuk méretére @@ -8016,27 +8428,27 @@ Azok a modulok letiltásra kerültek. Private::FileLineEdit - + Path does not exist Útvonal nem létezik - + Path does not point to a directory Útvonal nem mutat könyvtárra - + Path does not point to a file Útvonal nem mutat fájlra - + Don't have read permission to path Nincs olvasási jogosultság az elérési úthoz - + Don't have write permission to path Nincs írási jogosultság az elérési úthoz @@ -8077,12 +8489,12 @@ Azok a modulok letiltásra kerültek. PropertiesWidget - + Downloaded: Letöltve: - + Availability: Elérhetőség: @@ -8097,53 +8509,53 @@ Azok a modulok letiltásra kerültek. Átvitel - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktív idő: - + ETA: Várható befejezési idő: - + Uploaded: Feltöltve: - + Seeds: Seedek: - + Download Speed: Letöltési sebesség: - + Upload Speed: Feltöltési sebesség: - + Peers: Peerek: - + Download Limit: Letöltési korlát: - + Upload Limit: Feltöltési korlát: - + Wasted: Elpazarolva: @@ -8153,193 +8565,249 @@ Azok a modulok letiltásra kerültek. Kapcsolatok: - + Information Információ - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Megjegyzés: - + Select All Összes kiválasztása - + Select None Egyiket sem - + Share Ratio: Megosztási arány: - + Reannounce In: Újrajelentés: - + Last Seen Complete: Legutóbb befejezettként látva: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Teljes méret: - + Pieces: Szeletek: - + Created By: Létrehozta: - + Added On: Hozzáadva: - + Completed On: Elkészült ekkor: - + Created On: Létrehozva: - + + Private: + + + + Save Path: Mentés útvonala: - + Never Soha - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (van %3) - - + + %1 (%2 this session) %1 (%2 ebben a munkamenetben) - - + + + N/A N/A - + + Yes + Igen + + + + No + Nem + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedelve: %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (maximum %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (összesen %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (átlagosan %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Új Web seed + Új Web seed - Remove Web seed - Web seed eltávolítása + Web seed eltávolítása - Copy Web seed URL - Web seed URL másolása + Web seed URL másolása - Edit Web seed URL - Web seed URL szerkesztése + Web seed URL szerkesztése - + Filter files... Fájlok szűrése... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled A sebesség grafikonok le vannak tiltva - + You can enable it in Advanced Options A speciális beállításokban engedélyezheted - New URL seed New HTTP source - Új URL seed + Új URL seed - New URL seed: - Új URL seed: + Új URL seed: - - This URL seed is already in the list. - Ez az URL seed már a listában van. + Ez az URL seed már a listában van. - + Web seed editing Web seed szerkesztés - + Web seed URL: Web seed URL: @@ -8358,22 +8826,22 @@ Azok a modulok letiltásra kerültek. Nem sikerült menteni az RSS AutoLetöltő adatait ide: %1. Hiba: %2 - + Invalid data format Érvénytelen adatformátum - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS elem '%1' elfogadásra került '%2' szabály által. Torrent hozzáadásának megkísérlése... - + Failed to read RSS AutoDownloader rules. %1 Nem sikerült betölteni az RSS AutoLetöltő szabályokat. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Nem sikerült betölteni az RSS AutoLetöltő szabályokat. Indok: %1 @@ -8381,22 +8849,22 @@ Azok a modulok letiltásra kerültek. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 A következő helyen lévő RSS csatorna letöltése sikertelen: '%1'. Indok: %2 - + RSS feed at '%1' updated. Added %2 new articles. Az '%1'-en található RSS csatorna frissítve. %2 új elem lett hozzáadva. - + Failed to parse RSS feed at '%1'. Reason: %2 Nem sikerült a következő RSS csatorna olvasása '%1'. Indok: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. '%1' RSS csatorna sikeresen letöltve. Feldolgozás megkezdve. @@ -8432,12 +8900,12 @@ Azok a modulok letiltásra kerültek. RSS::Private::Parser - + Invalid RSS feed. Érvénytelen RSS-csatorna. - + %1 (line: %2, column: %3, offset: %4). %1 (sor: %2, oszlop: %3, eltolás: %4). @@ -8445,99 +8913,99 @@ Azok a modulok letiltásra kerültek. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Nem sikerült az RSS folyamat konfiguráció mentése. Fájl: "%1". Hiba: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Nem sikerült menteni az RSS munkamenet fájlt. Fájl: "%1". Hiba: "%2" - - + + RSS feed with given URL already exists: %1. Már létezik RSS-csatorna a megadott URL-el: %1. - + Feed doesn't exist: %1. RSS csatorna nem létezik: %1. - + Cannot move root folder. Gyökérkönyvtár nem helyezhető át. - - + + Item doesn't exist: %1. Elem nem létezik: %1. - + Couldn't move folder into itself. Nem lehetett áthelyezni a mappát önmagába. - + Cannot delete root folder. Gyökérkönyvtár nem törölhető. - + Failed to read RSS session data. %1 Nem sikerült beolvasni az RSS munkamenet adatokat. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Nem sikerült feldolgozni az RSS munkamenet adatokat. Fájl: "%1". Hiba: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Nem sikerült betölteni az RSS munkamenet adatot. Fájl: "%1". Hiba: "Érvénytelen adat formátum." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Nem sikerült betölteni az RSS csatornát. Csatorna: "%1". Indok: URL szükséges. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Nem sikerült az RSS csatorna betöltése. Forrás: "%1". Indok: UID érvénytelen. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Duplázott RSS csatorna észlelve. UID: "%1". Hiba: Konfiguráció sérültnek tűnik. - + Couldn't load RSS item. Item: "%1". Invalid data format. Nem sikerült az RSS elem betöltése. Elem: "%1". Érvénytelen adat formátum. - + Corrupted RSS list, not loading it. Sérült RSS-lista, nem lesz betöltve. - + Incorrect RSS Item path: %1. Helytelen RSS-elem útvonal: %1. - + RSS item with given path already exists: %1. Már létezik RSS-elem a megadott útvonalon: %1. - + Parent folder doesn't exist: %1. Szülőkönyvtár nem létezik: %1. @@ -8561,8 +9029,8 @@ Azok a modulok letiltásra kerültek. - - + + Mark items read Elemek olvasottnak jelölése @@ -8587,132 +9055,132 @@ Azok a modulok letiltásra kerültek. Torrentek: (dupla kattintás a letöltéshez) - - + + Delete Törlés - + Rename... Átnevezés… - + Rename Átnevezés - - + + Update Frissítés - + New subscription... Új feliratkozás… - - + + Update all feeds Összes csatorna frissítése - + Download torrent Torrent letöltése - + Open news URL Hírek URL megnyitása - + Copy feed URL Csatorna URL másolása - + New folder... Új mappa… - + Edit feed URL... Csatorna URL szerkesztése... - + Edit feed URL Csatorna URL szerkesztése - + Please choose a folder name Kérem válasszon egy mappanevet - + Folder name: Mappanév: - + New folder Új mappa - - + + Please type a RSS feed URL Kérem írjon be egy RSS csatorna URL-t - - + + Feed URL: Csatorna URL: - + Deletion confirmation Törlés megerősítése - + Are you sure you want to delete the selected RSS feeds? Biztos, hogy törli a kiválasztott RSS-csatornákat? - + Please choose a new name for this RSS feed Válasszon új nevet ehhez az RSS-csatornához - + New feed name: Új csatornanév: - + Rename failed Átnevezés sikertelen - + Date: Dátum: - + Feed: - + Csatorna: - + Author: Szerző: @@ -8720,38 +9188,38 @@ Azok a modulok letiltásra kerültek. SearchController - + Python must be installed to use the Search Engine. A keresőmotor használatához telepíteni kell a Pythont. - + Unable to create more than %1 concurrent searches. Nem lehet több, mint 1% egyidejű keresést létrehozni. - - + + Offset is out of range Az eltolás tartományon kívül van - + All plugins are already up to date. Az összes modul már naprakész. - + Updating %1 plugins %1 modul frissítése - + Updating plugin %1 1% plugin frissítése - + Failed to check for plugin updates: %1 Nem sikerült ellenőrizni a bővítmény frissítéseit: %1 @@ -8826,132 +9294,146 @@ Azok a modulok letiltásra kerültek. Méret: - + Name i.e: file name Név - + Size i.e: file size Méret - + Seeders i.e: Number of full sources Seederek - + Leechers i.e: Number of partial sources Leecherek - Search engine - Keresőmotor + Keresőmotor - + Filter search results... Keresési találatok szűrése… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Találatok (<i>%1</i> / <i>%2</i> megjelenítve): - + Torrent names only Csak a torrentek nevében - + Everywhere Mindenhol - + Use regular expressions Reguláris kifejezések használata - + Open download window Nyissa meg a letöltési ablakot - + Download Letöltés - + Open description page Adatlap megnyitása - + Copy Másolás - + Name Név - + Download link Letöltési link - + Description page URL Adatlap link - + Searching... Keresés… - + Search has finished A keresés befejeződött - + Search aborted Keresés megszakítva - + An error occurred during search... Hiba történt a keresés közben… - + Search returned no results A keresés nem hozott eredményt - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Oszlop láthatósága - + Resize columns Oszlopok átméretezése - + Resize all non-hidden columns to the size of their contents Méretezze át az összes nem rejtett oszlopot a tartalmuk méretére @@ -8959,104 +9441,104 @@ Azok a modulok letiltásra kerültek. SearchPluginManager - + Unknown search engine plugin file format. Ismeretlen keresőmotor-modul fájlformátum. - + Plugin already at version %1, which is greater than %2 Kiegészítő már %1 verzió, ami nagyobb mint %2 - + A more recent version of this plugin is already installed. Ennek a modulnak már egy frissebb verziója telepítve van. - + Plugin %1 is not supported. %1 kiegészítő nem támogatott. - - + + Plugin is not supported. A kiegészítő nem támogatott. - + Plugin %1 has been successfully updated. %1 kiegészítő sikeresen frissítve. - + All categories Összes kategória - + Movies Filmek - + TV shows TV műsorok - + Music Zenék - + Games Játékok - + Anime Animék - + Software Szoftverek - + Pictures Képek - + Books Könyvek - + Update server is temporarily unavailable. %1 Frissítési kiszolgáló ideiglenesen nem érhető el. %1 - - + + Failed to download the plugin file. %1 Nem sikerült letölteni a kiegészítő fájlt. %1 - + Plugin "%1" is outdated, updating to version %2 Kiegészítő "%1" elvault, frissítés a %2 verzióra - + Incorrect update info received for %1 out of %2 plugins. Érvénytelen frissítési információ érkezett %1 / %2 modulról. - + Search plugin '%1' contains invalid version string ('%2') A '%1' kereső kiegészítő érvénytelen verzió nevet tartalmaz ('%2') @@ -9066,114 +9548,153 @@ Azok a modulok letiltásra kerültek. - - - - Search Keresés - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Nincsenek keresőmodulok telepítve. Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyomásával telepíthet néhányat. - + Search plugins... Modulok keresése… - + A phrase to search for. Keresendő kifejezés. - + Spaces in a search term may be protected by double quotes. A keresési kifejezésben lévő szóközök idézőjelekkel tarthatóak meg. - + Example: Search phrase example Példa: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: keresés erre: <b>foo bar</b> - + All plugins Minden modul - + Only enabled Csak az engedélyezettek - + + + Invalid data format. + Érvénytelen adatformátum. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: keresés erre: <b>foo</b> és <b>bar</b> - + + Refresh + + + + Close tab Fül bezárása - + Close all tabs Az összes fül bezárása - + Select... Kiválasztás… - - - + + Search Engine Keresőmotor - + + Please install Python to use the Search Engine. Keresőmotor használatához kérem telepítse a Pythont. - + Empty search pattern Üres keresési minta - + Please type a search pattern first Kérem adjon meg egy keresési mintát először - + + Stop Leállítás - Search has finished - A keresés befejeződött + A keresés befejeződött - Search has failed - A keresés sikertelen + A keresés sikertelen + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9286,34 +9807,34 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo - + Upload: Feltöltés: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Letöltés: - + Alternative speed limits Alternatív sebességkorlátok @@ -9505,32 +10026,32 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo Átlagos idő a várakozási sorban: - + Connected peers: Kapcsolódott peerek: - + All-time share ratio: Összesített megosztási arány: - + All-time download: Összesített letöltés: - + Session waste: Munkamenet selejtje: - + All-time upload: Összesített feltöltés: - + Total buffer size: Teljes pufferméret: @@ -9545,12 +10066,12 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo Sorban várakozó I/O feladatok: - + Write cache overload: Írási gyorsítótár túlterheltsége: - + Read cache overload: Olvasási gyorsítótár túlterheltsége: @@ -9569,51 +10090,67 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo StatusBar - + Connection status: Kapcsolat állapota: - - + + No direct connections. This may indicate network configuration problems. Nincsenek közvetlen kapcsolatok. Ez hálózat beállítási hibákra is utalhat. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 csomópont - + qBittorrent needs to be restarted! qBittorrentet újra kell indítani! - - - + + + Connection Status: A kapcsolat állapota: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. Ez általában azt jelenti, hogy a qBittorrent nem tudja használni a bejövő kapcsolatokhoz a megadott portot. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Alternatív sebességkorlát bekapcsolásához kattintson ide - + Click to switch to regular speed limits Általános sebességkorlát bekapcsolásához kattintson ide @@ -9642,14 +10179,22 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo Kész (0) - Resumed (0) - Folytatott (0) + Folytatott (0) - Paused (0) - Szüneteltetett (0) + Szüneteltetett (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9711,10 +10256,29 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo Completed (%1) Kész (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Szüneteltetett (%1) + Szüneteltetett (%1) @@ -9722,14 +10286,12 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo Áthelyezés (%1) - Resume torrents - Torrentek folytatása + Torrentek folytatása - Pause torrents - Torrentek szüneteltetése + Torrentek szüneteltetése @@ -9737,9 +10299,8 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo Torrentek eltávolítása - Resumed (%1) - Folytatott (%1) + Folytatott (%1) @@ -9780,17 +10341,17 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo TagFilterModel - + Tags Címkék - + All Összes - + Untagged Címkézetlen @@ -9798,52 +10359,64 @@ Az ablak jobb alsó sarkában található „Modulok keresése…” gomb megnyo TagFilterWidget - + Add tag... Címke hozzáadása… - + Remove tag Címke eltávolítása - + Remove unused tags Nem használt címkék eltávolítása - Resume torrents - Torrentek folytatása + Torrentek folytatása - Pause torrents - Torrentek szüneteltetése + Torrentek szüneteltetése - + Remove torrents Torrentek eltávolítása - New Tag - Új címke + Új címke - + + Start torrents + + + + + Stop torrents + + + + Tag: Címke: - + + Add tag + + + + Invalid tag name Érvénytelen címkenév - + Tag name '%1' is invalid '%1' címkenév érvénytelen @@ -9983,32 +10556,32 @@ Válasszon egy másik nevet és próbálja újra. TorrentContentModel - + Name Név - + Progress Folyamat - + Download Priority Letöltési prioritás - + Remaining Hátralévő - + Availability Elérhetőség - + Total Size Teljes méret @@ -10053,102 +10626,120 @@ Válasszon egy másik nevet és próbálja újra. TorrentContentWidget - + Rename error Átnevezés hiba - + Renaming Átnevezés - + New name: Új név: - + Column visibility Oszlop láthatósága - + Resize columns Oszlopok átméretezése - + Resize all non-hidden columns to the size of their contents Méretezze át az összes nem rejtett oszlopot a tartalmuk méretére - + Open Megnyitás - + Open containing folder Tartalmazó mappa megnyitása - + Rename... Átnevezés... - + Priority Priorítás - - + + Do not download Ne töltse le - + Normal Normál - + High Magas - + Maximum Maximális - + By shown file order Megjelenített fájl sorrend szerint - + Normal priority Normál prioritás - + High priority Magas prioritás - + Maximum priority Maximális prioritás - + Priority by shown file order Prioritás a megjelenített fájlsorrend szerint + + TorrentCreatorController + + + Too many active tasks + Túl sok aktív feladat + + + + Torrent creation is still unfinished. + A torrent létrehozása még mindig nem fejeződött be. + + + + Torrent creation failed. + Torrent létrehozása meghiúsult. + + TorrentCreatorDialog @@ -10173,13 +10764,13 @@ Válasszon egy másik nevet és próbálja újra. - + Select file Válasszon fájlt - + Select folder Válasszon mappát @@ -10204,58 +10795,10 @@ Válasszon egy másik nevet és próbálja újra. Szelet méret: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10302,92 +10845,83 @@ Válasszon egy másik nevet és próbálja újra. Mezők - + You can separate tracker tiers / groups with an empty line. A különböző trackercsoportok üres sorral választhatók el. - + Web seed URLs: Web seed URL-ek: - + Tracker URLs: Tracker URL-ek: - + Comments: Megjegyzések: - + Source: Forrás: - + Progress: Folyamat: - + Create Torrent Torrent létrehozása - - + + Torrent creation failed Torrent létrehozása meghiúsult - + Reason: Path to file/folder is not readable. Indok: fájl/mappa útvonala nem olvasható. - + Select where to save the new torrent Válassza ki az új torrent mentési helyét - + Torrent Files (*.torrent) Torrent fájlok (*.torrent) - - Reason: %1 - Indok: %1 - - - + Add torrent to transfer list failed. - + A torrent átviteli listához való hozzáadása sikertelen. - + Reason: "%1" - + Indok: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Indok: a létrehozott torrent érvénytelen. Nem lesz hozzáadva a letöltési listához. + Torrent hozzáadása sikertelen. - + Torrent creator Torrent készítő - + Torrent created: Torrent létrehozva: @@ -10395,32 +10929,32 @@ Válasszon egy másik nevet és próbálja újra. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Nem sikerült betölteni a Figyelt Mappák beállításokat. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Nem sikerült feldolgozni a Figyelt Mappák konfigurációt %1-ből. Hiba: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Nem sikerült betölteni a Figyelt Mappák konfigurációját %1-ből. Hiba: "Érvénytelen adat formátum." - + Couldn't store Watched Folders configuration to %1. Error: %2 Nem sikerült eltárolni a Megfigyelt Mappák konfigurációját ide: %1. Hiba: %2 - + Watched folder Path cannot be empty. Megfigyelt mappa elérési útja nem lehet üres. - + Watched folder Path cannot be relative. Megfigyelt mappa elérési útja nem lehet relatív. @@ -10428,27 +10962,27 @@ Válasszon egy másik nevet és próbálja újra. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Érvénytelen Magnet URI. URI: %1. Indok: %2 - + Magnet file too big. File: %1 Magnet fájl túl nagy. Fájl: %1 - + Failed to open magnet file: %1 Nem sikerült megnyitni a magnet fájlt: %1 - + Rejecting failed torrent file: %1 Sikertelen torrent fájl elutasítása: %1 - + Watching folder: "%1" Mappa figyelése: "%1" @@ -10456,14 +10990,12 @@ Válasszon egy másik nevet és próbálja újra. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Nem sikerült memóriát lefoglalni a fájl olvasásakor. Fájl: "%1". Hiba: "%2" + Nem sikerült memóriát lefoglalni a fájl olvasásakor. Fájl: "%1". Hiba: "%2" - Invalid metadata - Érvénytelen metaadat + Érvénytelen metaadat @@ -10494,127 +11026,203 @@ Válasszon egy másik nevet és próbálja újra. Használjon másik elérési utat a befejezetlen torrenthez - + Category: Kategória: - + + Torrent Share Limits + + + Torrent speed limits - Torrent sebességkorlátok + Torrent sebességkorlátok - + Download: Letöltés: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Ezek nem fogják túllépni a globális korlátokat - + Upload: Feltöltés: - Torrent share limits - Torrent megosztási korlát + Torrent megosztási korlát - Use global share limit - Globális megosztási korlát használata + Globális megosztási korlát használata - Set no share limit - Ne állítson be megosztási korlátot + Ne állítson be megosztási korlátot - Set share limit to - Megosztási korlát beállítása + Megosztási korlát beállítása - ratio - arány + arány - total minutes - összes perc + összes perc - inactive minutes - inaktív perc + inaktív perc - + Disable DHT for this torrent DHT letiltása ennél a torrentnél - + Download in sequential order Letöltés egymás utáni sorrendben - + Disable PeX for this torrent PeX letiltása ennél a torrentnél - + Download first and last pieces first Első és utolsó szelet letöltése először - + Disable LSD for this torrent LSD letiltása ennél a torrentnél - + Currently used categories Jelenleg használt kategóriák - - + + Choose save path Válasszon mentési útvonalat - + Not applicable to private torrents Nem alkalmazható privát torrentekre - No share limit method selected - Nincs megosztási korlátozó módszer kiválasztva + Nincs megosztási korlátozó módszer kiválasztva - Please select a limit method first - Először válasszon korlátozási módszert + Először válasszon korlátozási módszert + + + + TorrentShareLimitsWidget + + + + + + Default + Alapértelmezett + + + + + + Unlimited + Korlátlan + + + + + + Set to + Érték + + + + Seeding time: + Seedelési idő: + + + + + + + + + min + minutes + perc + + + + Inactive seeding time: + Inaktív seedelési idő: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Torrent eltávolítása + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Super seed engedélyezése a torrentnél + + + + Ratio: + Arány: @@ -10625,32 +11233,36 @@ Válasszon egy másik nevet és próbálja újra. Torrent címkék - New Tag - Új címke + Új címke + Add tag + + + + Tag: Címke: - + Invalid tag name Érvénytelen címkenév - + Tag name '%1' is invalid. '%1' címkenév érvénytelen. - + Tag exists Címke létezik - + Tag name already exists. Címkenév már létezik. @@ -10658,115 +11270,130 @@ Válasszon egy másik nevet és próbálja újra. TorrentsController - + Error: '%1' is not a valid torrent file. Hiba: '%1' nem érvényes torrent fájl. - + Priority must be an integer Prioritásnak egész számnak kell lennie - + Priority is not valid Prioritás nem érvényes - + Torrent's metadata has not yet downloaded Torrent metaadat még nem lett letöltve - + File IDs must be integers Fájlazonosítóknak egész számoknak kell lenniük - + File ID is not valid Fájlazonosító nem érvényes - - - - + + + + Torrent queueing must be enabled Torrentek ütemezését be kell kapcsolni - - + + Save path cannot be empty Mentési útvonal nem lehet üres - - + + Cannot create target directory Nem lehet célkönyvtárat létrehozni - - + + Category cannot be empty Kategória nem lehet üres - + Unable to create category Kategória nem hozható létre - + Unable to edit category Nem sikerült szerkeszteni a kategóriát - + Unable to export torrent file. Error: %1 Torrent fájl exportálása sikertelen. Hiba: %1 - + Cannot make save path Nem hozható létre a mentési útvonal - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sort' paraméter érvénytelen - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" nem hiteles fájl index. - + Index %1 is out of bounds. Index %1 határokon kívül esik. - - + + Cannot write to directory Nem lehet írni a könyvtárba - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI készlet helye: '%1' áthelyezése innen: '%2', ide: '%3' - + Incorrect torrent name Érvénytelen torrentnév - - + + Incorrect category name Érvénytelen kategórianév @@ -10797,257 +11424,215 @@ Válasszon egy másik nevet és próbálja újra. TrackerListModel - - + Working - Működik + Működik - + Disabled - Letiltva + Letiltva - + Disabled for this torrent - Letiltva ennél a torrentnél + Letiltva ennél a torrentnél - + This torrent is private - Ez egy privát torrent + Ez egy privát torrent - + N/A - N/A + N/A - + Updating... - Frissítés... + Frissítés... - + Not working - Nem működik + Nem működik - + Tracker error - + Tracker hiba - + Unreachable - + Elérhetetlen - + Not contacted yet - Még nem kapcsolódott + Még nem kapcsolódott - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Szint + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Érvénytelen állapot! + + + URL/Announce endpoint + URL/Bejelentés végpont + Tier + Szint + + Protocol - + Protokoll - + Status - Állapot + Állapot - + Peers - Peerek + Peerek - + Seeds - Seedek + Seedek - + Leeches - Leechek + Leechek - + Times Downloaded - Letöltések száma + Letöltések száma - + Message - Üzenet + Üzenet - Next announce - + Következő bejelentés - Min announce - + Min bejelentés - v%1 - + v%1 TrackerListWidget - Working - Működik - - - Disabled - Letiltva - - - Disabled for this torrent - Letiltva ennél a torrentnél - - - + This torrent is private Ez egy privát torrent - Updating... - Frissítés... - - - Not working - Nem működik - - - Not contacted yet - Még nem kapcsolódott - - - N/A - N/A - - - + Tracker editing Tracker szerkesztés - + Tracker URL: Tracker URL: - - + + Tracker editing failed Tracker szerkesztése sikertelen - + The tracker URL entered is invalid. Érvénytelen a beírt tracker URL. - + The tracker URL already exists. Ez a tracker URL már létezik. - + Edit tracker URL... Tracker URL szerkesztése... - + Remove tracker Tracker eltávolítása - + Copy tracker URL Tracker URL másolása - + Force reannounce to selected trackers Kényszerített újrajelentés a kijelölt trackerek felé - + Force reannounce to all trackers Kényszerített újrajelentés minden tracker felé - Tier - Szint - - - URL - URL - - - Status - Állapot - - - Seeds - Seedek - - - Times Downloaded - Letöltések száma - - - + Resize columns Oszlopok átméretezése - + Resize all non-hidden columns to the size of their contents Méretezze át az összes nem rejtett oszlopot a tartalmuk méretére - Peers - Peerek - - - + Add trackers... Trackerek hozzáadása... - Leeches - Leechek - - - Message - Üzenet - - - + Column visibility Oszlop láthatósága @@ -11065,37 +11650,37 @@ Válasszon egy másik nevet és próbálja újra. Hozzáadandó trackerek listája (soronként egy): - + µTorrent compatible list URL: µTorrent kompatiblis URL lista: - + Download trackers list Tracker lista letöltése - + Add Hozzáad - + Trackers list URL error Tracker lista URL hiba - + The trackers list URL cannot be empty A tracker lista URL nem lehet üres - + Download trackers list error Tracker lista letöltési hiba - + Error occurred when downloading the trackers list. Reason: "%1" Hiba történt a trackerek listájának letöltésekor. Indok: "%1" @@ -11103,87 +11688,70 @@ Válasszon egy másik nevet és próbálja újra. TrackersFilterWidget - All (0) - this is for the tracker filter - Összes (0) - - - Trackerless (0) - Tracker nélküli (0) - - - Error (0) - Hiba (0) - - - Warning (0) - Figyelmeztetés (0) - - - Trackerless - Tracker nélküli - - - Error (%1) - Hiba (%1) - - - + Warning (%1) Figyelmeztetés (%1) - + Trackerless (%1) Tracker nélküli (%1) - + Tracker error (%1) - + Tracker hiba (%1) - + Other error (%1) - + Egyéb hiba (%1) - + Remove tracker - Tracker eltávolítása + Tracker eltávolítása + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Torrentek folytatása + Torrentek folytatása - Pause torrents - Torrentek szüneteltetése + Torrentek szüneteltetése - + Remove torrents Torrentek eltávolítása - + Removal confirmation - + Eltávolítás megerősítése - + Are you sure you want to remove tracker "%1" from all torrents? - + Biztos, hogy el akarja távolítani a "%1" trackert az összes torrentről? - + Don't ask me again. - + Ne kérdezzen meg újra. - + All (%1) this is for the tracker filter Összes (%1) @@ -11192,7 +11760,7 @@ Válasszon egy másik nevet és próbálja újra. TransferController - + 'mode': invalid argument 'mód': érvénytelen téma @@ -11285,9 +11853,8 @@ Válasszon egy másik nevet és próbálja újra. Folytatáshoz szükséges adat ellenőrzése - Paused - Szüneteltetve + Szüneteltetve @@ -11312,220 +11879,262 @@ Válasszon egy másik nevet és próbálja újra. Hiba - + Name i.e: torrent name Név - + Size i.e: torrent size Méret - + Progress % Done Folyamat - Status Torrent status (e.g. downloading, seeding, paused) - Állapot + Állapot - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Állapot + + + Seeds i.e. full sources (often untranslated) Seedek - + Peers i.e. partial sources (often untranslated) Peerek - + Down Speed i.e: Download speed Letöltési sebesség - + Up Speed i.e: Upload speed Feltöltési sebesség - + Ratio Share ratio Arány - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Várható befejezési idő: - + Category Kategória - + Tags Címkék - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Hozzáadva ekkor - + Completed On Torrent was completed on 01/01/2010 08:00 Elkészült ekkor - + Tracker Tracker - + Down Limit i.e: Download limit Letöltés korlát - + Up Limit i.e: Upload limit Feltöltés korlát - + Downloaded Amount of data downloaded (e.g. in MB) Letöltve - + Uploaded Amount of data uploaded (e.g. in MB) Feltöltve - + Session Download Amount of data downloaded since program open (e.g. in MB) Munkamenet alatt letöltve - + Session Upload Amount of data uploaded since program open (e.g. in MB) Munkamenet alatt feltöltve - + Remaining Amount of data left to download (e.g. in MB) Hátralévő - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktív idő + + + + Yes + Igen + + + + No + Nem + + Time Active Time (duration) the torrent is active (not paused) - Aktív idő + Aktív idő - + Save Path Torrent save path Mentés helye - + Incomplete Save Path Torrent incomplete save path Befejezetlen mentés helye - + Completed Amount of data completed (e.g. in MB) Befejezett - + Ratio Limit Upload share ratio limit Arány korlát - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Legutóbb befejezettként látva - + Last Activity Time passed since a chunk was downloaded/uploaded Utolsó aktivitás - + Total Size i.e. Size including unwanted data Teljes méret - + Availability The number of distributed copies of the torrent Elérhetőség - + Info Hash v1 i.e: torrent info hash v1 Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Újrajelentés + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1 óta - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedelve %2) @@ -11534,334 +12143,358 @@ Válasszon egy másik nevet és próbálja újra. TransferListWidget - + Column visibility Oszlop beállítások - + Recheck confirmation Újraellenőrzés megerősítése - + Are you sure you want to recheck the selected torrent(s)? Biztos benne, hogy újraellenőrzi a kiválasztott torrenteket? - + Rename Átnevezés - + New name: Új név: - + Choose save path Válasszon mentési útvonalat - Confirm pause - Szüneteltetés megerősítése + Szüneteltetés megerősítése - Would you like to pause all torrents? - Szünetelteti az összes torrentet? + Szünetelteti az összes torrentet? - Confirm resume - Folytatás megerősítése + Folytatás megerősítése - Would you like to resume all torrents? - Folytatja az összes torrentet? + Folytatja az összes torrentet? - + Unable to preview Előnézet nem lehetséges - + The selected torrent "%1" does not contain previewable files A kijelölt torrent "%1" nem tartalmaz előnézhető fájlokat - + Resize columns Oszlopok átméretezése - + Resize all non-hidden columns to the size of their contents Méretezze át az összes nem rejtett oszlopot a tartalmuk méretére - + Enable automatic torrent management Automatikus torrentkezelés engedélyezése - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Biztos benne, hogy engedélyezi az automatikus torrentkezelést a kiválasztott torrent(ek) számára? Lehetséges, hogy át lesznek helyezve. - Add Tags - Címkék hozzáadása + Címkék hozzáadása - + Choose folder to save exported .torrent files Válasszon mappát az exportált .torrent fájlok mentéséhez - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" A .torrent fájl exportálása sikertelen. Torrent: "%1". Útvonal mentése: "%2". Indok: "%3" - + A file with the same name already exists Ugyanilyen nevű fájl már létezik - + Export .torrent file error .torrent fájl exportálás hiba - + Remove All Tags Összes címke eltávolítása - + Remove all tags from selected torrents? Eltávolítja az összes címkét a kiválasztott torrentekről? - + Comma-separated tags: Vesszővel elválasztott címkék: - + Invalid tag Érvénytelen címke - + Tag name: '%1' is invalid Címkenév: '%1' érvénytelen - &Resume Resume/start the torrent - &Folytatás + &Folytatás - &Pause Pause the torrent - &Szünet + &Szünet - Force Resu&me Force Resume/start the torrent - Folytatás &kényszerítése + Folytatás &kényszerítése - + Pre&view file... Fájl elő&nézete... - + Torrent &options... Torrent &beállításai… - + Open destination &folder &Célkönyvtár megnyitása - + Move &up i.e. move up in the queue Feljebb m&ozgat - + Move &down i.e. Move down in the queue Lejjebb mo&zgat - + Move to &top i.e. Move to top of the queue Leg&felülre mozgat - + Move to &bottom i.e. Move to bottom of the queue Le&galulra mozgat - + Set loc&ation... Hely &megadása... - + Force rec&heck Kényszerített újra&ellenőrzés - + Force r&eannounce Kényszerített új&rajelentés - + &Magnet link M&agnet link - + Torrent &ID Torrent &azonosító - + + &Comment + &Megjegyzés + + + &Name &Név - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Át&nevezés... - + Edit trac&kers... Trackerek szer&kesztése... - + E&xport .torrent... Torrent e&xportálása... - + Categor&y Kategó&ria - + &New... New category... Ú&j… - + &Reset Reset category &Visszaállítás - + Ta&gs Cím&kék - + &Add... Add / assign multiple tags... &Hozzáadás… - + &Remove All Remove all tags Ö&sszes eltávolítása - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Sor - + &Copy &Másolás - + Exported torrent is not necessarily the same as the imported Az exportált torrent nem feltétlenül ugyanaz, mint az importált - + Download in sequential order Letöltés egymás utáni sorrendben - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Hibák történtek a .torrent fájlok exportálásakor. A részletekért ellenőrizze a végrehajtási naplót. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Eltávolítás - + Download first and last pieces first Első és utolsó szelet letöltése először - + Automatic Torrent Management Automatikus torrentkezelés - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Az automatikus mód azt jelenti, hogy a különböző torrenttulajdonságok (például a mentési útvonal) a hozzátartozó kategória alapján kerülnek eldöntésre - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Kényszerített újrajelentés nem lehetséges ha a torrent állapota Szüneteltetett/Elakadt/Hibás/Ellenőrzés + Kényszerített újrajelentés nem lehetséges ha a torrent állapota Szüneteltetett/Elakadt/Hibás/Ellenőrzés - + Super seeding mode Szuper seed üzemmód @@ -11906,28 +12539,28 @@ Válasszon egy másik nevet és próbálja újra. Ikon azonosító - + UI Theme Configuration. Felhasználói felület testreszabása - + The UI Theme changes could not be fully applied. The details can be found in the Log. A felhasználói felület változtatásokat nem sikerült teljes mértékben végrehajtani. A részleteket a Napló nézetben találja. - + Couldn't save UI Theme configuration. Reason: %1 Nem sikerült a felhasználói téma konfiguráció mentése. Indok: %1 - - + + Couldn't remove icon file. File: %1. Nem sikerült eltávolítani az ikon fájlt. Fájl: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Nem sikerült az ikon fájl másolása. Forrás: %1. Cél: %2. @@ -11935,7 +12568,12 @@ Válasszon egy másik nevet és próbálja újra. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Nem sikerült a felhasználói témát betölteni a fájlból: "%1" @@ -11966,89 +12604,82 @@ Válasszon egy másik nevet és próbálja újra. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" A beállítások migrálása nem sikerült: WebUI https, fájl: "%1", hiba: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrált beállítások: WebUI https, adatok exportálva a következő fájlba: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Érvénytelen értéket találtam a konfigurációs fájlban. Az érték alapértelmezettre állítva. Kulcs: "%1". Érvénytelen érték: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python észlelve, futtatható fájl név: '%1', verzió: %2 - - - Python not detected - Python nem található - Found Python executable. Name: "%1". Version: "%2" - + Python megtalálva. Név: "%1”. Verzió: "%2” Failed to find Python executable. Path: "%1". - + Nem sikerült megtalálni a Python-t. Elérési út: "%1”. Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Nem sikerült megtalálni a `python3` alkalmazást a PATH környezeti változóban. PATH: "%1” Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Nem sikerült megtalálni a `python` alkalmazást a PATH környezeti változóban. PATH: "%1” Failed to find `python` executable in Windows Registry. - + Nem sikerült megtalálni a `python` alkalmazást a Windows rendszerleíró adatbázisban. Failed to find Python executable - + Nem sikerült megtalálni a Python alkalmazást Utils::IO - + File open error. File: "%1". Error: "%2" Fájlmegnyitási hiba. Fájl: "%1". Hiba: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 A fájl mérete meghaladja a korlátot. Fájl: "%1". Fájl mérete: %2. Méretkorlát: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + A fájlméret meghaladja az adatméret korlátot. Fájl: "%1". Fájlméret: %2. Tömb korlát: %3 - + File read error. File: "%1". Error: "%2" Fájl olvasási hiba. Fájl: "%1". Hiba: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Olvasási méret eltérés. Fájl: "%1". Várt: %2. Tényleges: %3 @@ -12112,72 +12743,72 @@ Válasszon egy másik nevet és próbálja újra. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Elfogadhatatlan folyamat-süti név lett megadva: '%1'. Az alapértelmezett lesz használva. - + Unacceptable file type, only regular file is allowed. Nem elfogadható fájltípus, csak általános fájl engedélyezett. - + Symlinks inside alternative UI folder are forbidden. Szimbolikus linkek tiltottak az alternatív UI mappában. - - Using built-in Web UI. - Beépített Web UI használata. + + Using built-in WebUI. + Beépített WebUI használata. - - Using custom Web UI. Location: "%1". - Egyéni Web UI használata. Hely: '%1'. + + Using custom WebUI. Location: "%1". + Egyedi WebUI használata. Elérési út: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - A kiválasztott területi beállításnak (%1) megfelelő Web UI fordítás sikeresen betöltve. + + WebUI translation for selected locale (%1) has been successfully loaded. + A WebUI fordítása a kiválasztott nyelvhez (%1) sikeresen betöltődött. - - Couldn't load Web UI translation for selected locale (%1). - Nem sikerült betölteni a kiválasztott területi beállításnak (%1) megfelelő Web UI fordítást. + + Couldn't load WebUI translation for selected locale (%1). + Nem sikerült betölteni a WebUI fordítást a kiválasztott nyelvhez (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Hiányzó ':' elválasztó a WebUI egyéni HTTP fejlécben: "%1" - + Web server error. %1 Web szerver hiba. %1 - + Web server error. Unknown error. Webszerver hiba. Ismeretlen hiba. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Origin header & Cél origin nem egyezik! Forrás IP: '%1'. Origin header: '%2'. Cél origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Hivatkozó fejléc & Cél forrás eltér! Forrás IP: '%1'. Hivatkozó fejléc: '%2'. Cél forrás: '%3'. - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Érvénytelen Kiszolgáló fejléc, port eltérés. Forrást kérő IP: '%1'. Kiszolgáló port: '%2'. Fogadott Kiszolgáló fejléc: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Érvénytelen Kiszolgáló fejléc. Forrást kérő IP: '%1'. Fogadott Kiszolgáló fejléc: '%2' @@ -12185,143 +12816,136 @@ Válasszon egy másik nevet és próbálja újra. WebUI - - Web UI: HTTPS setup successful - Web UI: sikeres HTTPS beállítás + + Credentials are not set + A hitelesítő adatok nincsenek beállítva + + + + WebUI: HTTPS setup successful + WebUI: HTTPS beállítás sikeres - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: HTTPS beállítás sikertelen, visszatérés HTTP-re + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS beállítása sikertelen, visszaállítás HTTP-re - - Web UI: Now listening on IP: %1, port: %2 - Web UI: Következő IP használata: IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Aktív a következőn: IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Nem lehet a %1 IP címet felhasználni, port: %2. Indok: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Nem sikerült használatba venni az IP-t: %1, port: %2. Ok: %3 + + + + fs + + + Unknown error + Ismeretlen hiba misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1perc {1s?} + %1s - + %1m e.g: 10 minutes - %1perc + %1perc - + %1h %2m e.g: 3 hours 5 minutes - %1ó %2p + %1ó %2p - + %1d %2h e.g: 2 days 10 hours - %1nap %2ó + %1nap %2ó - + %1y %2d e.g: 2 years 10 days - %1 év %2 nap + %1 év %2nap - %1h %2m - e.g: 3hours 5minutes - %1ó %2p - - - %1d %2h - e.g: 2days 10hours - %1nap %2ó - - - %1y %2d - e.g: 2years 10days - %1 év %2 nap - - - - + + Unknown Unknown (size) Ismeretlen - + qBittorrent will shutdown the computer now because all downloads are complete. A qBittorrent most leállítja a számítógépet, mert az összes letöltés elkészült. - + < 1m < 1 minute < 1perc - - %1m - e.g: 10minutes - %1perc - diff --git a/src/lang/qbittorrent_hy.ts b/src/lang/qbittorrent_hy.ts index a8ee11235354..690fb5d19e11 100644 --- a/src/lang/qbittorrent_hy.ts +++ b/src/lang/qbittorrent_hy.ts @@ -14,77 +14,77 @@ Ծրագրի մասին - + Authors - + Հեղինակներ - + Current maintainer Ընթացիկ տեխնիակական աջակցություն - + Greece Greece - - + + Nationality: Ազգություն՝ - - + + E-mail: Էլ. փոստ՝ - - + + Name: Անվանում՝ - + Original author Հիմնադիր հեղինակ - + France - France + Ֆրանսիա - + Special Thanks Հատուկ շնորհակալություններ - + Translators Թարգմանիչներ - + License Թույլատրագիր - + Software Used Օգտագործված ծրագրեր - + qBittorrent was built with the following libraries: qBittorrent-ը ստեղծվել է հետևյալ գրադարանների կիրառմամբ՝ - + Copy to clipboard - + Պատճենել սեղմատախտակին @@ -93,7 +93,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -145,7 +145,7 @@ No such file: '%1'. - + Այսպիսի ֆայլ չկա՝ «%1»: @@ -166,14 +166,13 @@ Պահել այստեղ - + Never show again Այլևս չցուցադրել - Torrent settings - Torrent-ի կարգավորումներ + Torrent-ի կարգավորումներ @@ -191,12 +190,12 @@ Մեկնարկել torrent-ը - + Torrent information Torrent-ի տեղեկություններ - + Skip hash check Բաց թողնել հեշի ստուգումը @@ -205,20 +204,25 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: - + Պիտակներ՝ Click [...] button to add/remove tags. - + Սեղմեք [...] կոճակը՝ պիտակներ ավելացնելու/հեռացնելու համար: Add/remove tags - + Ավելացնել/հեռացնել պիտակներ @@ -231,70 +235,75 @@ - - + + None - - + + Metadata received - - - Files checked + + Torrents that have metadata initially will be added as stopped. - + + + Files checked + Ստուգված ֆայլեր + + + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: Պարունակության դասավորություն՝ - + Original Բնօրինակ - + Create subfolder Ստեղծել ենթապանակ - + Don't create subfolder Չստեղծել ենթապանակ - + Info hash v1: - + Size: Չափ՝ - + Comment: Մեկնաբանություն՝ - + Date: Ամսաթիվ՝ @@ -324,200 +333,157 @@ Հիշել պահելու վերջին ուղին - + Do not delete .torrent file Չջնջել .torrent նիշքը - + Download in sequential order Ներբեռնել հերթականության կարգով - + Download first and last pieces first Սկզբում ներբեռնել առաջին ու վերջին մասերը - + Info hash v2: - + Select All Նշել բոլորը - + Select None Չնշել բոլորը - + Save as .torrent file... Պահել որպես .torrent նիշք... - + I/O Error Ն/Ա սխալ - Invalid torrent - Անվավեր torrent - - - + Not Available This comment is unavailable Հասանելի չէ - + Not Available This date is unavailable Հասանելի չէ - + Not available Հասանելի չէ - Invalid magnet link - Անվավեր magnet հղում - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Չհաջողվեց բեռնել torrent-ը՝ %1: -Սխալ՝ %2 - - - This magnet link was not recognized - Այս magnet հղումը չճանաչվեց - - - + Magnet link Magnet հղում - + Retrieving metadata... Առբերել մետատվյալները... - - + + Choose save path Ընտրեք պահելու ուղին - Torrent is already present - Torrent-ը արդեն առկա է - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A - + %1 (Free space on disk: %2) %1 (ազատ տարածք սկավառակի վրա՝ %2) - + Not available This size is unavailable. Հասանելի չէ - + Torrent file (*%1) - + Torrent ֆայլ (*%1) - + Save as torrent file Պահել որպես torrent նիշք - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - Cannot download '%1': %2 - Չի ստացվում ներբեռնել '%1'՝ %2 - - - + Filter files... Զտել նիշքերը... - + Parsing metadata... Մետատվյալների վերլուծում... - + Metadata retrieval complete Մետատվյալների առբերումը ավարտվեց - - Failed to load from URL: %1. -Error: %2 - Չհաջողվեց բեռնել URL-ից՝ %1: -Սխալ՝ %2 - - - Download Error - Ներբեռնման սխալ - AddTorrentManager Downloading torrent... Source: "%1" - + Ներբեռնվում է torrent-ը... Աղբյուր՝ «%1» @@ -525,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -585,17 +551,17 @@ Error: %2 Tags: - + Պիտակներ՝ Click [...] button to add/remove tags. - + Սեղմեք [...] կոճակը՝ պիտակներ ավելացնելու/հեռացնելու համար: Add/remove tags - + Ավելացնել/հեռացնել պիտակներ @@ -605,7 +571,7 @@ Error: %2 Start torrent: - + Մեկնարկել torrent-ը՝ @@ -628,807 +594,930 @@ Error: %2 Բաց թողնել հեշի ստուգումը - - - Choose save path - Ընտրեք պահելու ուղին + + Torrent share limits + - - - - - - - Default - + + + Choose save path + Ընտրեք պահելու ուղին + + + - Yes - Այո + Default + Լռելայն + Yes + Այո + + + + + No Ոչ - + Manual Ձեռքով - + Automatic Ինքնաշխատ - + Original Բնօրինակ - + Create subfolder Ստեղծել ենթապանակ - + Don't create subfolder Չստեղծել ենթապանակ - + None - + Metadata received - + Files checked - + Ստուգված ֆայլեր AdvancedSettings - - - - + + + + MiB ՄԲ - + Recheck torrents on completion Ավարտելուց հետո վերստուգել torrent-ները - - + + ms milliseconds մվ - + Setting Կարգավորում - + Value Value set for this setting Արժեք - + (disabled) (կասեցված) - + (auto) (ինքնաշխատ) - + + min minutes Նվազ. - + All addresses Բոլոր հասցեները - + qBittorrent Section qBittorrent-ի հատված - - + + Open documentation Բացել գործառույթների նկարագությունը - + All IPv4 addresses Բոլոր IPv4 հասցեները - + All IPv6 addresses Բոլոր IPv6 հասցեները - + libtorrent Section libtorrent-ի հատված - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Միջին - + Below normal Միջինից ցածր - + Medium Միջին - + Low Ցածր - + Very low Շատ ցածր - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache Սկավառակի շտեմ - - - - + + + + s seconds վ - + Disk cache expiry interval - + Disk queue size - - + + Enable OS cache Միացնել ԳՀ-ի շտեմը - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Ելքային մատույցներ (նվազ.-ը) [0՝ կարողազրկված] - + Outgoing ports (Max) [0: disabled] - + Ելքային մատույցներ (առավել.-ը) [0՝ կարողազրկված] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB ԿԲ - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Լռելայն - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP Նախընտրել TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates Վավերացնել HTTPS գրանցորդի վկայագրերը - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names - Որոշել peer-երի հոսթերի անունները + Որոշել ցանցորդի հյուընկալի անունները - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + վ + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Ցուցադրել ծանուցումները - + Display notifications for added torrents Ցուցադրել ծանուցումները ավելացված torrent-ների համար - + Download tracker's favicon - + Save path history length - + Enable speed graphs - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload - + Anti-leech Հակաքաշողներ - + Upload choking algorithm - + Confirm torrent recheck Հաստատել torrent-ի վերստուգումը - + Confirm removal of all tags Հաստատել բոլոր պիտակների հեռացումը - + Always announce to all trackers in a tier Միշտ ազդարարել բոլոր մակարդակների գրանցորդներին - + Always announce to all tiers Միշտ ազդարարել բոլոր գրանցորդներին - + Any interface i.e. Any network interface Ցանկացած միջներես - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries - + Network interface Ցանցային միջերես - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker Միացնել ուղղորդիչի արգելումը - + Embedded tracker port Արգելված ուղղորդիչի դարպասը - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1-ը մեկնարկեց + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 Torrent-ի անվանում՝ %1 - + Torrent size: %1 Torrent-ի չափը՝ %1 - + Save path: %1 Պահելու ուղին՝ %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent-ը բեռնվել է %1ում։ - + + Thank you for using qBittorrent. Շնորհակալություն qBittorrent-ը օգտագործելու համար։ - + Torrent: %1, sending mail notification - + Add torrent failed - + Torrent-ի ավելացումը ձախողվեց - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit Դուր&ս գալ - + I/O Error i.e: Input/Output Error Ն/Ա սխալ - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1436,129 +1525,110 @@ Error: %2 - Error - Սխալ - - - Failed to add torrent: %1 - Չհաջոցվեց ավելացնել torrent՝ %1 - - - + Torrent added Torrent-ը ավելացվեց - + '%1' was added. e.g: xxx.avi was added. '%1'-ը ավելացվեց: - + Download completed - + Ներբեռնման ավարտ - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started - URL download error - URL ներբեռնման սխալ + + This is a test email. + - Torrent file association - Torrent նիշքերի համակցում + + Test email + - + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + «%1»-ի ներբեռնումն ավարտեց: + + + Information Տեղեկություններ - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - Application failed to start. - Չհաջողվեց մեկնարկել հավելվածը - - - + Exit Ելք - + Recursive download confirmation - Ռեկուրսիվ ներբեռնման հաստատում + Ռեկուրսիվ ներբեռնման հաստատում - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - Երբեք + Երբեք - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Պահվում է torrent-ի ընթացքը... - + qBittorrent is now ready to exit @@ -1566,7 +1636,7 @@ Error: %2 AsyncFileStorage - + Could not create directory '%1'. @@ -1574,22 +1644,22 @@ Error: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. Ձեր IP հասցեն արգելվել է՝ մի շարք անհաջող ներկայացումներից հետո։ - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1634,15 +1704,15 @@ Error: %2 Priority: - + Առաջնահերթություն՝ - + Must Not Contain: Չպետք է պարունակի՝ - + Episode Filter: @@ -1666,7 +1736,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Disabled - Կասեցված է + Կարողազրկված է @@ -1694,263 +1764,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Արտահանել... - + Matches articles based on episode filter. - + Example: Օրինակ՝ - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: - + Season number is a mandatory non-zero value - + Filter must end with semicolon Զտիչը պետք է ավարտվի կետ-ստորակետով - + Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value - + Rules Կանոններ - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago - + Last Match: Unknown - + New rule name Նոր կանոնի անունը - + Please type the name of the new download rule. Նշեք բեռնման կանոնի անունը։ - - + + Rule name conflict Այս անունը արդեն առկա է։ - - + + A rule with this name already exists, please choose another name. Այս անունով կանոն արդեն առկա է, ընտրեք այլ անուն։ - + Are you sure you want to remove the download rule named '%1'? Վստա՞հ եք, որ ուզում եք հեռացնել ներբեռնման այս կանոնը՝ '%1': - + Are you sure you want to remove the selected download rules? Վստա՞հ եք, որ ուզում եք հեռացնել ներբեռնման ընտրված կանոնները: - + Rule deletion confirmation Հաստատեք ջնջումը - + Invalid action Անվավեր գործողություն - + The list is empty, there is nothing to export. Ցանկը դատարկ է, ոչինչ չկա արտածելու համար։ - + Export RSS rules - + I/O Error Ն/Ա սխալ - + Failed to create the destination file. Reason: %1 - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Add new rule... Ավելացնել նոր կանոն... - + Delete rule Ջնջել կանոնը - + Rename rule... Անվանափոխել կանոնը... - + Delete selected rules Ջնջել ընտրված կանոնները - + Clear downloaded episodes... - + Rule renaming Կանոնի անվանափոխում - + Please type the new rule name Մուտքագրեք նոր կանոնի անվանումը - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 Դիրք %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1992,53 +2062,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2046,38 +2121,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2085,22 +2160,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2108,479 +2183,536 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - Միաց. - - - - - - - - - - - + ՄԻԱՑ. + + + + + + + + + + + OFF - Անջտ. + ԱՆՋԱՏ. - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED ՍՏԻՊՈՂԱԲԱՐ - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - + Torrent՝ «%1»: - - - Removed torrent. - + Հեռացվեց torrent-ը: - - - Removed torrent and deleted its content. - + Հեռացվեց torrent-ը և ջնջվեց դրա բովանդակությունը: - - - Torrent paused. - + Կանգնեցվեց torrent-ը: - - - + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - - UPnP/NAT-PMP support: OFF + + Saving resume data completed. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + BitTorrent session successfully finished. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source - System network status changed to %1 - e.g: System network status changed to ONLINE - Համակարգի ցանցի վիճակը փոխվեց հետևյալի՝ %1 + + UPnP/NAT-PMP support: OFF + - ONLINE - ԱՌՑԱՆՑ + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - OFFLINE - ԱՆՑԱՆՑ + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent paused. Torrent: "%1" + Կանգնեցվեց torrent-ը: Torrent՝ «%1» + + + Torrent resumed. Torrent: "%1" - + Շարունակեցվեց torrent-ը: Torrent՝ «%1» - + Torrent download finished. Torrent: "%1" - + Ներբեռնումը torrent-ի ավարտվեց: Torrent՝ «%1» - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP զտիչ - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1-ը կասեցված է - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1-ը կասեցված է - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2588,62 +2720,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On Միաց. - + Off Անջտ. - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2664,184 +2801,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: Օգտագործում՝ - + [options] [(<filename> | <url>)...] - + Options: Ընտրանքներ՝ - + Display program version and exit Ցուցադրել ծրագրի տարբերակն ու փակել այն - + Display this help message and exit Ցուցադրել այս օգնող հաղորդագրությունը և դուրս գալ - - - port - միացք + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + - - Change the Web UI port + + Confirm the legal notice - + + + port + մատույց + + + + Change the WebUI port + Փոխել WebUI մատույցը + + + Change the torrenting port - + Փոխել torrent-ման մատույցը - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name անվանում - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + ֆայլեր կամ URL-ներ - + Download the torrents passed by the user - + Options when adding new torrents: Նոր torrent-ներ ավելացնելու ընտրանքներ՝ - + path ուղի - + Torrent save path Torrent-ը պահելու ուղին - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check Բաց թողնել հեշի ստուգումը - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order Բեռնել նիշքերը հաջորդական կարգով - + Download first and last pieces first Սկզբում ներբեռնել առաջին ու վերջին մասերը - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Օգնություն @@ -2849,17 +2991,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Անվանակարգեր - + All Բոլորը - + Uncategorized Չանվանակարգված @@ -2893,32 +3035,45 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Շարունակել torrent-ները + Start torrents + + Stop torrents + + + + Resume torrents + Շարունակել torrent-ները + + Pause torrents - Դադարեցնել torrent-ները + Դադարեցնել torrent-ները Remove torrents - + Հեռացնել torrent-ները ColorWidget - + Edit... - + Reset Վերակայել + + + System + + CookiesDialog @@ -2959,12 +3114,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2972,7 +3127,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -2991,23 +3146,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove @@ -3020,12 +3175,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Add torrent links Ավելացնել torrent հղումներ - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3035,12 +3190,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Ներբեռնել - + No URL entered URL մուտքագրված չէ - + Please type at least one URL. Նշեք գոնե մեկ հղում։ @@ -3126,7 +3281,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Choose a file Caption for file open/save dialog - Ընտրել նիշք + Ընտրել ֆայլը @@ -3137,7 +3292,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Any file - Ցանկացած նիշք + Որևէ ֆայլ @@ -3200,24 +3355,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + Ներբեռնվում է torrent-ը... Աղբյուր՝ «%1» + - + Torrent is already present - Torrent-ը արդեն առկա է + Torrent-ը արդեն առկա է + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3225,38 +3403,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. - + Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 - + Unsupported IP version: %1 - + Չաջակցվող IP տարբերակ. %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3264,17 +3442,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3315,36 +3493,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Զննել... - + Reset Վերակայել - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + Օգտագործման իրավունքը + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1-ը արգելափակվեց: Պատճառ՝ %2. - + %1 was banned 0.0.0.0 was banned %1-ը արգելափակվեց @@ -3353,711 +3559,771 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Օգտագործման իրավունքը + + You cannot use %1: qBittorrent is already running. + - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + Another qBittorrent instance is already running. - - No further notices will be issued. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - Press %1 key to accept and continue... - Սեղմեք %1 կոճակը՝ համաձայնվելու և շարունակելու... + + Error when daemonizing. Reason: "%1". Error code: %2. + + + + MainWindow - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent-ը ֆայլերի տարածման ծրագիր է։ Երբ բացում եք torrent-ը, նրա տվյալները հասանելի կդառնան նաև մյուսների համար՝ այն փոխանցելու ճանապարհով։ Ցանկացած ֆայլ Դուք տարածում եք Ձեր պատասխանատվությամբ։ - -Հետագայում նման հարցում չի արվի։ + + &Edit + &Խմբագրել - - Legal notice - Օգտագործման իրավունքը - - - - Cancel - Չեղարկել - - - - I Agree - Համաձայն եմ - - - - MainWindow - - - &Edit - &Խմբագրել - - - + &Tools &Գործիքներ - + &File - &Նիշք + &Ֆայլ - + &Help &Օգնություն - + On Downloads &Done Ներբեռնումը ավարտելուն &պես - + &View &Տեսք - + &Options... &Ընտրանքներ... - &Resume - &Շարունակել + &Շարունակել - + &Remove - + Torrent &Creator Torrent-ի &ստեղծիչ - - + + Alternative Speed Limits Արագության այլընտրանքային սահմանաչափ - + &Top Toolbar &Վերևի գործիքագոտի - + Display Top Toolbar Ցուցադրել վերևի գործիքագոտին - + Status &Bar Վիճակագո&տի - + Filters Sidebar - + S&peed in Title Bar Արա&գությունը անվանագոտում - + Show Transfer Speed in Title Bar Ցուցադրել փոխանցման արագությունը անվանագոտում - + &RSS Reader &RSS ընթերցիչ - + Search &Engine Որո&նիչ - + L&ock qBittorrent &Կողպել qBittorrent-ը - + Do&nate! Նվ&իրաբերություն կատարել - + + Sh&utdown System + + + + &Do nothing - + Close Window Բացել պատուհանը - R&esume All - Շ&արունակել բոլորը + Շ&արունակել բոլորը - + Manage Cookies... Կառավարել թխուկները... - + Manage stored network cookies Կառավարել պահված ցանցային թխուկները - + Normal Messages Սովորական հաղորդագրություններ - + Information Messages Տեղեկատվական հաղորդագրություններ - + Warning Messages Զգուշացնող հաղորդագրություններ - + Critical Messages Վճռական հաղորդագրություններ - + &Log &Գրանցամատյան - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue Հերթի վերջ - + Move to the bottom of the queue Ուղարկել հերթի վերջ - + Top of Queue Հերթի սկիզբ - + Move to the top of the queue Ուղարկել հերթի սկիզբ - + Move Down Queue Իջեցնել հերթի ցանկում - + Move down in the queue Իջեցնել հերթի ցանկում - + Move Up Queue Բարձրացնել հերթի ցանկում - + Move up in the queue Բարձրացնել հերթի ցանկում - + &Exit qBittorrent &Փակել qBittorrent ծրագիրը - + &Suspend System &Քնեցնել համակարգը - + &Hibernate System &Նիրհել համակարգը - S&hutdown System - Ան&ջատել համակարգիչը + Ան&ջատել համակարգիչը - + &Statistics &Վիճակագրություն - + Check for Updates Ստուգել արդիացումների առկայությունը - + Check for Program Updates Ստուգել արդիացումների առկայությունը - + &About &Ծրագրի մասին - &Pause - &Դադարեցնել + &Դադարեցնել - P&ause All - Դա&դարեցնել բոլորը + Դա&դարեցնել բոլորը - + &Add Torrent File... - &Ավելացնել torrent նիշք... + &Ավելացնել torrent ֆայլ... - + Open Բացել - + E&xit Դուր&ս գալ - + Open URL Բացել URL - + &Documentation &Նկարագրություն - + Lock Կողպել - - - + + + Show Ցուցադրել - + Check for program updates Ստուգել արդիացումների առկայությունը - + Add Torrent &Link... &Ավելացնել torrent հղում... - + If you like qBittorrent, please donate! Եթե qBittorrent-ը Ձեզ դուր եկավ, խնդրում ենք նվիրաբերություն կատարել։ - - + + Execution Log Գրանցամատյան - + Clear the password Մաքրել գաղտնաբառը - + &Set Password &Կայել գաղտնաբառը - + Preferences Նախընտրություններ - + &Clear Password &Մաքրել գաղտնաբառը - + Transfers Փոխանցումներ - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only Միայն պատկերակները - + Text Only Միայն տեքստը - + Text Alongside Icons Գրվածք պատկերակի կողքը - + Text Under Icons Գրվածք պատկերակի ներքևում - + Follow System Style Հետևել համակարգի ոճին - - + + UI lock password Ծրագրի կողփման գաղտնաբառը - - + + Please type the UI lock password: Մուտքագրեք ծրագրի կողփման գաղտնաբառը՝ - + Are you sure you want to clear the password? Վստա՞հ եք, որ ուզում եք մաքրել գաղտնաբառը՝ - + Use regular expressions Օգտ. կանոնավոր սահ-ներ - - Search - Որոնել + + + Search Engine + Որոնիչ - - Transfers (%1) - Փոխանցումներ (%1) + + Search has failed + Որոնումը ձախողվել է - Recursive download confirmation - Ռեկուրսիվ ներբեռնման հաստատում + + Search has finished + Որոնումը ավարտվել է - Never - Երբեք + + Search + Որոնել + + + + Transfers (%1) + Փոխանցումներ (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent-ը թարմացվել է։ Վերամեկնարկեք՝ փոփոխությունները կիրառելու համար։ - + qBittorrent is closed to tray qBittorrent-ը փակվեց դարակի մեջ - + Some files are currently transferring. Որոշ նիշքեր դեռ փոխանցվում են: - + Are you sure you want to quit qBittorrent? Վստա՞հ եք, որ ուզում եք փակել qBittorrent-ը: - + &No &Ոչ - + &Yes &Այո - + &Always Yes &Միշտ այո - + Options saved. - %1/s - s is a shorthand for seconds - %1/վ + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime - + qBittorrent Update Available Հասանելի է qBittorrent-ի արդիացում - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime - + A new version is available. Հասանելի է նոր տարբերակ: - + Do you want to download %1? - + Open changelog... Բացել փոփոխությունների մատյանը... - + No updates available. You are already using the latest version. Արդիացումներ հասանելի չեն: Դուք արդեն օգտագործում եք վերջին տարբերակը: - + &Check for Updates &Ստուգել արդիացումների առկայությունը - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Դադարեցված է + + + Checking for Updates... Ստուգել արդիացումների առկայությունը... - + Already checking for program updates in the background - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Ներբեռնման սխալ - Python setup could not be downloaded, reason: %1. Please install it manually. - Python-ի տեղակայիչը չի կարող բեռնվել, պատճառը՝ %1։ + Python-ի տեղակայիչը չի կարող բեռնվել, պատճառը՝ %1։ Տեղակայեք այն ձեռադիր։ - - + + Invalid password Անվավեր գաղտնաբառ - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid Գաղտնաբառը անվավեր է - + DL speed: %1 e.g: Download speed: 10 KiB/s Ներբեռնում՝ %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Վերբեռնում՝ %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [Ներբեռ. %1, Վերբեռ. %2] qBittorrent %3 - - - + Hide Թաքցնել - + Exiting qBittorrent qBittorrent ծրագիրը փակվում է - + Open Torrent Files - Բացել torrent նիշքերը + Բացել torrent ֆայլերը - + Torrent Files - Torrent նիշքեր + Torrent ֆայլեր @@ -4075,7 +4341,7 @@ Please install it manually. Dynamic DNS error: hostname supplied does not exist under specified account. - Ակտիվ DNS-ի սխալ. հոսթի անունը սխալ է։ + Դինամիկ DNS-ի սխալ. մատակարարված հյուրընկալի անունը գոյություն չունի նշված հաշվի տակ: @@ -4116,134 +4382,134 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) - Հեռադիր հոսթի անունը չի գտնվել (հոսթի անունը սխալ է) + Հեռակա հյուրընկալի անունը չի գտնվել (հյուրընկալի անունը վավեր չէ) - + The operation was canceled Գործողությունը ընդհատվել է - + The remote server closed the connection prematurely, before the entire reply was received and processed Հեռադիր սպասարկիչը փակել է միացումը՝ մինչ կստացվեր պատասխանը - + The connection to the remote server timed out Հեռադիր սպասարկիչին միանալու ժ-ը լրացել է - + SSL/TLS handshake failed SSL/TLS փոխլրացումը ձախողվեց - + The remote server refused the connection Հեռադիր սպասարկիչը մերժել է միացումը - + The connection to the proxy server was refused Միացումը միջնորդ սպասարկիչին մերժվել է - + The proxy server closed the connection prematurely Միջնորդ սպասարկիչը փակել է միացումը - + The proxy host name was not found - Չի գտնվել միջնորդի հոսթի անունը + Փոխանորդի հյուրընկալի անունը չգտնվեց - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Միջնորդին միանալու ժ-ը լրացել է, միջնորդը հարցմանը ժամանակին չի պատասխանել - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) Մուտքը հեռադիր կառավարմանը փակ է (401) - + The operation requested on the remote content is not permitted Գործողությունը, որը պահանջում է հեռադիր պարունակությունը, չի թույլատրվել - + The remote content was not found at the server (404) Հեռադիր պարունակությունը չի գտնվել սպասարկիչում (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Հեռադիր սպասարկիչը պահանջում է ներկայացում - + The Network Access API cannot honor the request because the protocol is not known Network Access API-ին չի կարողանում ստանալ հարցում, որովհետեև արձանագր. հայտնի չէ - + The requested operation is invalid for this protocol Պահանջվող գործողությունը սխալ է այս արձանագր. համար - + An unknown network-related error was detected Անհայտ սխալ - + An unknown proxy-related error was detected Միջնորդի անհայտ սխալ - + An unknown error related to the remote content was detected Հեռադիր պարունակության անհայտ սխալ - + A breakdown in protocol was detected Անհաջողություն արձանագրությունում - + Unknown error Անհայտ սխալ @@ -4251,7 +4517,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5124,7 +5395,7 @@ Please install it manually. Portugal - Portugal + Պորտուգալիա @@ -5623,476 +5894,516 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Վեբ միջերես + Վեբ միջերես - + Advanced Ընդլայնված - + Customize UI Theme... - + Transfer List Փոխանցման ցանկ - + Confirm when deleting torrents Հաստատել torrent-ները ջնջելիս - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Տարբեր գույների տողեր կիրառել - + Hide zero and infinity values Թաքցնել զրո և անսահմանություն արժեքները - + Always Միշտ - Paused torrents only - Միայն դադարեցված torrent-ները + Միայն դադարեցված torrent-ները - + Action on double-click Երկկտտոցի գործողությունը - + Downloading torrents: Ներբեռնվող torrent-ներ՝ - - Start / Stop Torrent - Մեկնարկել/կանգնեցնել torrent-ները + Մեկնարկել/կանգնեցնել torrent-ները - - + + Open destination folder Բացել պարունակող պանակը - - + + No action Առանց գործողության - + Completed torrents: Ավարտված torrent-ները՝ - + Auto hide zero status filters - + Desktop Աշխատասեղան - + Start qBittorrent on Windows start up Մեկնարկել qBittorrent-ը Windows-ի հետ - + Show splash screen on start up Բացելիս ցուցադրել ծրագրի պատկերը - + Confirmation on exit when torrents are active Ծրագիրը փակելիս հաստատում պահանջել, եթե torrent-ները գործուն են - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB ԿԲ - + Torrent content layout: - + Original Բնօրինակ - + Create subfolder Ստեղծել ենթապանակ - + Don't create subfolder Չստեղծել ենթապանակ - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Ավելացնել... - + Options.. - + Remove - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: + + + + + Any - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time Որտեղից՝ - + To: To end time Որտեղ՝ - + Find peers on the DHT network - + Փնտրել ցանցորդներ DHT ցանցում - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption Թույլատրել գաղտնագրումը - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader RSS ընթերցիչ - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: Յուրաքանչյուր ալիքի համար հոդվածների առավ. ք-ը. - - - + + + min minutes Նվազ. - + Seeding Limits Բաժանման սահմանաչափ - Pause torrent - Դադարեցնել torrent-ը + Դադարեցնել torrent-ը - + Remove torrent Հեռացնել torrent-ը - + Remove torrent and its files - Հեռացնել torrent-ը և իր նիշքերը + Հեռացնել torrent-ը և իր ֆայլերը - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL՝ + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... Խմբագրել ինքնաներբեռնման կանոնները... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: Զտիչներ՝ - + Web User Interface (Remote control) - + IP address: IP հասցե՝ - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Երբեք - + ban for: - + Session timeout: - + Disabled Կասեցված է - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6101,441 +6412,486 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area Թաքցնել qBittorrent-ը իրազեկման գոտում - + + Search + Որոնել + + + + WebUI + + + + Interface Միջերես - + Language: Լեզու՝ - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Դարակի պատկերակի ոճը՝ - - + + Normal Միջին - + File association Նիշքի համակցում - + Use qBittorrent for .torrent files - Օգտագործել qBittorrent-ը .torrent նիշքերի համար + Օգտագործել qBittorrent-ը «.torrent» ֆայլերի համար - + Use qBittorrent for magnet links Օգտագործել qBittorrent-ը magnet հղումների համար - + Check for program updates Ստուգել արդիացումների առկայությունը - + Power Management Հոսանքի կառավարում - + + &Log Files + + + + Save path: Պահելու ուղին՝ - + Backup the log file after: - Պահուստավորել գրանցամատյանի նիշքը այս չափից հետո՝ + Պահուստավորել մատյանի ֆայլը այս չափից հետո՝ - + Delete backup logs older than: Ջնջել պահուստային գրանցամատյանը, որը ավելի հին է քան՝ - + + Show external IP in status bar + + + + When adding a torrent Torrent ավելացնելիս - + Bring torrent dialog to the front Երկխոսությունը պահել առջևում - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! Զգուշացո՛ւմ: Հնարավոր է տվյալների կորուստ: - + Saving Management Պահելու կառավարում - + Default Torrent Management Mode: - + Manual Ձեռքով - + Automatic - Ինքնաշխատ + Ինքնաբերաբար - + When Torrent Category changed: - + Relocate torrent Վերատեղորոշել torrent-ը - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories Օգտագործել ենթաանվանակարգեր - + Default Save Path: Պահելու սկզբնադիր ուղին՝ - + Copy .torrent files to: - Պատճենել .torrent նիշքերը այստեղ՝ + Պատճենել .torrent ֆայլերը դեպի՝ - + Show &qBittorrent in notification area Ցուցա&դրել qBittorrent-ը ծանուցման տարածքում - &Log file - &Գրանցամատյանի նիշք + &Մատյանի ֆայլ - + Display &torrent content and some options Ցու&ցադրել torrent-ի պարունակությունը ու որոշ ընտրանքներ - + De&lete .torrent files afterwards - Հետագայում ջնջ&ել .torrent նիշքերը + Հետագայում ջնջ&ել .torrent ֆայլերը - + Copy .torrent files for finished downloads to: - Պատճենել ավարտված ներբեռնումների .torrent նիշքերը այստեղ՝ + Պատճենել ավարտված ներբեռնումների .torrent ֆայլերը դեպի՝ - + Pre-allocate disk space for all files - Նախօրոք տարածք հատկացնել սկավառակի վրա բոլոր նիշքերի համար + Նախապես սկավառակային տարածք հատկացնել բոլոր ֆայլերի համար - + Use custom UI Theme - + UI Theme file: - + UI ոճի ֆայլ՝ - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window qBittorrent-ը փակելիս թաքցնել իրազեկման գոտում - + Monochrome (for dark theme) - + Միագույն (մուգ ոճի համար) - + Monochrome (for light theme) - + Միագույն (լուսավոր ոճի համար) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days օր - + months Delete backup logs older than 10 months ամիս - + years Delete backup logs older than 10 years տարի - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Միանգամից չսկսել բեռնումները - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Կցել .!qB ընդլայոնւմը անավարտ ֆայլերի համար - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ստուգված ֆայլեր - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: Ինքնաշխատորեն ավելացնել torrent-ները այստեղից՝ - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6552,841 +6908,902 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + Ստացող - + To: To receiver Որտեղ՝ - + SMTP server: SMTP սպասարկիչ. - + Sender - + Ուղարկող - + From: From sender Որտեղից՝ - + This server requires a secure connection (SSL) Սպասարկիչը պահանջում է անվտանգ միացում (SSL) - - + + Authentication - Ներկայացում + Նույնականացում - - - - + + + + Username: Մուտքանուն՝ - - - - + + + + Password: Գաղտնաբառ՝ - + Run external program - - - - - Run on torrent added - - - - - Run on torrent finished - + Աշխատացնել արտաքին ծրագիր - + Show console window - + TCP and μTP - + TCP և μTP - + Listening Port - Մտնող դարպասը + Լսվում է մատույցը - + Port used for incoming connections: - Մուտքային կապուղիների դարպասը. + Մուտքային կապի մատույցը. - + Set to 0 to let your system pick an unused port - + Random Պատահական - + Use UPnP / NAT-PMP port forwarding from my router Օգտագործել UPnP / NAT-PMP դարպասի փոխանցում ռոութերից - + Connections Limits Միացումների սահ-ում - + Maximum number of connections per torrent: Կապուղիների առավ. քանակը torrent-ի համար. - + Global maximum number of connections: Կապուղիների առավ. քանակը - + Maximum number of upload slots per torrent: Փոխանցումների սլոթների առավ. քանակը torrent-ի համար. - + Global maximum number of upload slots: - + Proxy Server Միջնորդը - + Type: Տեսակ՝ - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: - Խնամորդ՝ + Հյուրընկալ՝ - - - + + + Port: - Միացք՝ + Մատույց՝ - + Otherwise, the proxy server is only used for tracker connections Այնուհանդերձ միջնորդը օգտ. է միայն ուղղորդիչներին միանալու համար - + Use proxy for peer connections - Օգտ. միջնորդը՝ peer միացումների համար + Օգտվել փոխանորդից՝ ցանցորդային միացումների համար - + A&uthentication &Իսկորոշում - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): Ֆիլտրերի ճանապարհը (.dat, .p2p, .p2b). - + Reload the filter Վերաբեռնել զտիչը - + Manually banned IP addresses... - + Ձեռքով արգելափակված IP հասցեներ... - + Apply to trackers Գործադրել գրանցորդների նկատմամբ - + Global Rate Limits Սահմանափակումները - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s ԿԲ/վ - - + + Upload: Վերբեռ.՝ - - + + Download: Ներբեռ.՝ - + Alternative Rate Limits - + Start time Մեկնարկի ժամը - + End time Ավարտիի ժամը - + When: Երբ՝ - + Every day Ամեն օր - + Weekdays Աշխատանքային օրեր - + Weekends Հանգստյան օրեր - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead Կիրառել սահ-փակում գերազանցելու դեպքում - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy Գաղտնիություն - + Enable DHT (decentralized network) to find more peers - Միացնել DHT՝ լրացուցիչ peer-եր գտնելու համար + Կարողացնել DHT-ն (ապակենտրոն ցանց)՝ ավելի շատ ցանցորդներ գտնելու համար - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - Փոխանակել peer-երը համատեղելի Bittorrent ծրագրերի միջև (µTorrent, Vuze, ...) + Փոխանակել ցանցորդներով՝ համատեղելի Bittorrent կլիենտների միջև (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - Միացնել Peer-երի փոխանակումը (PeX)՝ լրացուցիչ peer-եր գտնելու համար + Կարողացնել ցանցորդների փոխանակումը (PeX)՝ ավելի շատ ցանցորդներ գտնելու համար - + Look for peers on your local network - Ձեր լոկալ ցանցի peer-երը + Փնտրել ցանորդներին Ձեր տեղական ցանցում - + Enable Local Peer Discovery to find more peers - Միացնել Լոկալ Peer-երի բացահայտումը + Կարողացնել տեղական ցանցորդների բացահայտումը՝ ավելի շատ ցանցորդներ գտնելու համար - + Encryption mode: Գաղտնագրման գործելաձև՝ - + Require encryption Պահանջել գաղտնագրում - + Disable encryption Անջատել գաղտնագրումը - + Enable when using a proxy or a VPN connection - + Enable anonymous mode Միացնել անանուն եղանակը - + Maximum active downloads: Առավելագ. ակտիվ բեռնումներ. - + Maximum active uploads: Առավելագ. ակտիվ փոխանցումներ. - + Maximum active torrents: Առավելագ. ակտիվ torrent-ներ. - + Do not count slow torrents in these limits Չհաշվել դանդաղ torrent-ները այս սահ-մբ - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds վ - + Torrent inactivity timer: - + then ապա - + Use UPnP / NAT-PMP to forward the port from my router Օգտ. UPnP / NAT-PMP՝ ռոութերից փոխանցելու համար - + Certificate: Վկայագիր՝ - + Key: Բանալի՝ - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Տեղեկություններ վկայագրերի մասին</a> - + Change current password Փոխել ընթացիկ գաղտնաբառը - - Use alternative Web UI - + + Files location: + Ֆայլերի վայր՝՝ - - Files location: - Նիշքերի տեղը՝ + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + - + Security Անվտանգություն - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Սպասարկիչը. - + Register Գրանցվել - + Domain name: Տիրույթի անվանում՝ - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name - + %L: Category - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files - %C: Նիշքերի քանակը + %C՝ Ֆայլերի քանակը - + %Z: Torrent size (bytes) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (չկա) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate Վկայագիր - + Select certificate Ընտրել վկայագիր - + Private key - + Select private key - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Ընտրել պանակը մշտադիտարկելու համար - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory Ընտրեք արտածման տեղը - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Պիտակներ (ստորակետով բաժանված) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Ընտրեք պահպանելու տեղը - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters Բոլոր աջակցվող զտիչները - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Սխալ - + Failed to parse the provided IP filter IP ֆիլտրի տրամադրման սխալ - + Successfully refreshed Հաջողությամբ թարմացվեց - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Հաջողությամբ է ստուգվել IP ֆիլտրով. %1 կանոններ են կիրառվել։ - + Preferences Նախընտրություններ - + Time Error - + The start time and the end time can't be the same. - - + + Length Error - - - The Web UI username must be at least 3 characters long. - Web UI-ի օգտագործողի անունը պետք է պարունակի գոնե 3 նիշ։ - - - - The Web UI password must be at least 6 characters long. - - PeerInfo - + Unknown Անհայտ - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Ցանցորդ DHT-ից - + Peer from PEX - + Ցանցորդ PEX-ից - + Peer from LSD - + Ցանցորդ PEX-ից - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7398,12 +7815,12 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/հասցե Port - Միացք + Մատույց @@ -7467,7 +7884,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Files i.e. files that are being downloaded right now - Նիշքեր + Ֆայլեր @@ -7487,7 +7904,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Add peers... - + Ավելացնել ցանցորդներ... @@ -7542,14 +7959,14 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A Copy IP:port - + Պատճենել IP:port-ը @@ -7557,7 +7974,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Add Peers - + Ավելացնել ցանցորդներ @@ -7565,14 +7982,14 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Format: IPv4:port / [IPv6]:port - + Ձևաչափ՝ IPv4:port / [IPv6]:port No peer entered - + Ցանցորդներ մուտքագրված չեն @@ -7582,12 +7999,12 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Invalid peer - Անվավեր մասնակից + Անվավեր ցանցորդ The peer '%1' is invalid. - Մասնակից '%1'-ը անվավեր է: + «%1» ցանցորդը անվավեր է: @@ -7606,27 +8023,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Նիշքերը այս մասում՝ - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7639,58 +8056,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Որոնող խրոցակներ - + Installed search plugins: Որոնման տեղադրված խրվակները՝ - + Name Անվանում - + Version Տարբերակ - + Url Url - - + + Enabled Միացված է - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Տեղադրել նորը - + Check for updates Ստուգել արդիացումների առկայությունը - + Close Փակել - + Uninstall Ապատեղադրել @@ -7809,17 +8226,17 @@ Those plugins were disabled. Խրոցակի աղբյուրը - + Search plugin source: Փնտրման խրոցակի աղբյուրը. - + Local file - Տեղային նիշք + Տեղական ֆայլ - + Web link Վեբ հղում @@ -7860,47 +8277,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Դիտել - + Name Անվանում - + Size Չափ - + Progress Ընթացք - + Preview impossible Նախադիտումը հնարավոր չէ - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7913,27 +8330,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -7953,7 +8370,7 @@ Those plugins were disabled. Peers - Մասնակիցներ + Ցանցորդներ @@ -7974,12 +8391,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Ներբեռնվել է՝ - + Availability: Հասանելիություն՝ @@ -7994,53 +8411,53 @@ Those plugins were disabled. Փոխանցում - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Գործունության ժամանակ՝ - + ETA: Կատարման ժամանակ՝ - + Uploaded: Վերբեռնվել է՝ - + Seeds: - Բաժանողներ՝ + Սերմնացաններ՝ - + Download Speed: Ներբեռման արագություն՝ - + Upload Speed: Վերբեռնման արագություն՝ - + Peers: - Մասնակիցներ՝ + Ցանցորդներ - + Download Limit: Ներբեռնման սահմանաչափ՝ - + Upload Limit: Վերբեռնման սահմանաչափ՝ - + Wasted: Վնասված է՝ @@ -8050,195 +8467,238 @@ Those plugins were disabled. Կապակցումներ՝ - + Information Տեղեկություններ - + Info Hash v1: - + Info Hash v2: - + Comment: Մեկնաբանություն՝ - + Select All Նշել բոլորը - + Select None Չնշել բոլորը - + Share Ratio: Կիսվելու հարաբերություն՝ - + Reannounce In: Կվերաազդարարվի՝ - + Last Seen Complete: Վերջին անգամ ավարտված է՝ - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Ընդհանուր չափ՝ - + Pieces: Մասեր՝ - + Created By: Ստեղծել է՝ - + Added On: Ավելացվել է՝ - + Completed On: Ավարտված է՝ - + Created On: Ստեղծվել է՝ - + + Private: + + + + Save Path: Պահելու ուղին՝ - + Never Երբեք - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (առկա է %3) - - + + %1 (%2 this session) %1 (%2 այս անգամ) - - + + + N/A - + + Yes + Այո + + + + No + Ոչ + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (բաժանվել է %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 առավելագույնը) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 ընդհանուր) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 միջինում) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Նոր վեբ շղթա + Նոր վեբ շղթա - Remove Web seed - Հեռացնել վեբ շղթան + Հեռացնել վեբ շղթան - Copy Web seed URL - Պատճենել վեբ շղթայի URL-ն + Պատճենել վեբ շղթայի URL-ն - Edit Web seed URL - Խմբագրել վեբ շղթայի URL-ն + Խմբագրել վեբ շղթայի URL-ն - + Filter files... - Զտել նիշքերը... + Զտել ֆայլերը... - - Speed graphs are disabled + + Add web seed... - - You can enable it in Advanced Options + + Remove web seed + + + + + Copy web seed URL - - New URL seed - New HTTP source + + Edit web seed URL... - - New URL seed: + + Speed graphs are disabled - - - This URL seed is already in the list. + + You can enable it in Advanced Options - + Web seed editing Վեբ շղթայի խմբագրում - + Web seed URL: - Վեբ շղթայի URL՝ + Վեբ հատիկի URL-ը՝ @@ -8255,22 +8715,22 @@ Those plugins were disabled. - + Invalid data format Տվյալների անվավեր ձևաչափ - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8278,22 +8738,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8329,12 +8789,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Անվավեր RSS սնուցիչ: - + %1 (line: %2, column: %3, offset: %4). @@ -8342,99 +8802,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. Չի ստացվում տեղափոխել արմատային պանակը: - - + + Item doesn't exist: %1. Տարրը գոյություն չունի՝ %1: - + Couldn't move folder into itself. - + Cannot delete root folder. Չի ստացվում ջնջել արմատային պանակը: - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8458,8 +8918,8 @@ Those plugins were disabled. - - + + Mark items read Նշել որպես կարդացված @@ -8484,132 +8944,132 @@ Those plugins were disabled. - - + + Delete Ջնջել - + Rename... Անվանափոխել... - + Rename Անվանափոխել - - + + Update Թարմացնել - + New subscription... Նոր բաժանորդագրում... - - + + Update all feeds Թարմացնել բոլոր սնուցիչները - + Download torrent Ներբեռնել torrent-ը - + Open news URL Բացել նորության հղումը - + Copy feed URL Պատճենել ալիքի հղումը - + New folder... Նոր պանակ... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Ընտրեք պանակի անվանում - + Folder name: Պանակի անվանում՝ - + New folder Նոր պանակ - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation Ջնջելու հաստատում - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed Ընտրեք RSS ալիքի անունը - + New feed name: Անունը. - + Rename failed Անվանափոխումը չհաջողվեց - + Date: Ամսաթիվ՝ - + Feed: - + Author: Հեղինակ՝ @@ -8617,38 +9077,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 - + Failed to check for plugin updates: %1 Չհաջողվեց ստուգել խրվակի արդիացման առկայությունը՝ %1 @@ -8678,12 +9138,12 @@ Those plugins were disabled. Minimum number of seeds - + Սերմնացանների նվազագույն քանակը Maximum number of seeds - + Սերմնացանների առավելագույն քանակը @@ -8703,7 +9163,7 @@ Those plugins were disabled. Seeds: - Բաժանողներ՝ + Սերմնացաններ՝ @@ -8723,132 +9183,146 @@ Those plugins were disabled. Չափ՝ - + Name i.e: file name Անվանում - + Size i.e: file size Չափ - + Seeders i.e: Number of full sources Բաժանողներ - + Leechers i.e: Number of partial sources Քաշողներ - Search engine - Որոնիչ + Որոնիչ - + Filter search results... Զտիչի որոնման արդյունքներ... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere Ամենուրեք - + Use regular expressions Օգտ. կանոնավոր սահ-ներ - + Open download window - + Download Ներբեռնել - + Open description page - + Copy Պատճենել - + Name Անվանում - + Download link - + Ներբեռնման հղում - + Description page URL - + Searching... Որոնվում է... - + Search has finished Որոնումը ավարտվել է - + Search aborted Որոնումը ընդհատվեց - + An error occurred during search... Սխալ՝ փնտրելիս… - + Search returned no results Ոչնինչ չի գտնվել - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Սյունակների տեսանելիությունը - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8856,104 +9330,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories Բոլոր անվանակարգերը - + Movies Ֆիլմեր - + TV shows Հաղորդումներ - + Music Երաժշտություն - + Games Խաղեր - + Anime Անիմե - + Software Ծրագրեր - + Pictures Պատկերներ - + Books Գրքեր - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - Չհաջողվեց ներբեռնել խրվակի նիշքը: %1 + Չհաջողվեց ներբեռնել բաղադրիչի ֆայլը: %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8963,113 +9437,152 @@ Those plugins were disabled. - - - - Search Որոնել - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... Որոնող խրոցակներ... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example Օրինակ՝ - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins Բոլոր խրոցակները - + Only enabled - + + + Invalid data format. + Տվյալների անվավեր ձևաչափ + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - - Close tab + + Refresh - + + Close tab + Փակել ներդիրը + + + Close all tabs - + Փակել բոլոր ներդիրները - + Select... Նշել... - - - + + Search Engine Որոնիչ - + + Please install Python to use the Search Engine. - + Empty search pattern Դաշտը դատարկ է - + Please type a search pattern first Նախ գրեք, թե ինչ փնտրել - + + Stop Կանգնեցնել - Search has finished - Որոնումը ավարտվել է + Որոնումը ավարտվել է - Search has failed - Որոնումը ձախողվել է + Որոնումը ձախողվել է + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9182,34 +9695,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Վերբեռ.՝ - - - + + + - - - + + + KiB/s ԿԲ/վ - - + + Download: Ներբեռ.՝ - + Alternative speed limits Արագության այլընտրանքային սահմանաչափ @@ -9307,7 +9820,7 @@ Click the "Search plugins..." button at the bottom right of the window 3 Hours - 24 ժամ {3 ?} + @@ -9401,32 +9914,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: - Կապակցված մասնակիցներ՝ + Միացված ցանցորդներ՝ - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: Պահնակի ընդհանուր չափ՝ @@ -9441,12 +9954,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -9465,51 +9978,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: - Կապակցման վիճակը՝ + Միացման վիճակը՝ - - + + No direct connections. This may indicate network configuration problems. Չկան ուղիղ կապակցումներ։ - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT. %1 հանգույց - + qBittorrent needs to be restarted! - - - + + + Connection Status: Կապակցման վիճակը՝ - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Անցանց: Սա նշանակում է, որ qBittorrent-ը չկարողացավ կապակցել ընտրված միացքին։ - + Online Ցանցում է - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Սեղմեք՝ այլընտրանքային սահ-ներին անցնելու համար - + Click to switch to regular speed limits Սեղմեք՝ հիմնական սահ-ներին անցնելու համար @@ -9538,14 +10067,22 @@ Click the "Search plugins..." button at the bottom right of the window Ավարտված (0) - Resumed (0) - Վերսկսված (0) + Վերսկսված (0) - Paused (0) - Դադարեցված է (0) + Դադարեցված է (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9607,35 +10144,51 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Ավարտված (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Դադարեցված է (%1) + Դադարեցված է (%1) Moving (%1) - + Տեղափոխվում է (%1) - Resume torrents - Շարունակել torrent-ները + Շարունակել torrent-ները - Pause torrents - Դադարեցնել torrent-ները + Դադարեցնել torrent-ները Remove torrents - + Հեռացնել torrent-ները - Resumed (%1) - Վերսկսված (%1) + Վերսկսված (%1) @@ -9665,28 +10218,28 @@ Click the "Search plugins..." button at the bottom right of the window Checking (%1) - + Ստուգվում է (%1) Errored (%1) - Սխալներով (%1) + Սխալվեց (%1) TagFilterModel - + Tags Պիտակներ - + All Բոլորը - + Untagged Անպիտակ @@ -9694,52 +10247,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Ավելացնել պիտակ... - + Remove tag Հեռացնել պիտակը - + Remove unused tags Հեռացնել չօգտագործվող պիտակները - Resume torrents - Շարունակել torrent-ները + Շարունակել torrent-ները - Pause torrents - Դադարեցնել torrent-ները + Դադարեցնել torrent-ները - + Remove torrents - + Հեռացնել torrent-ները - New Tag - Նոր պիտակ + Նոր պիտակ + + + + Start torrents + - + + Stop torrents + + + + Tag: Պիտակ՝ - + + Add tag + + + + Invalid tag name Անվավեր պիտակի անուն - + Tag name '%1' is invalid Պիտակի '%1' անվանումը անվավեր է @@ -9779,7 +10344,7 @@ Click the "Search plugins..." button at the bottom right of the window Default - + Լռելայն @@ -9876,32 +10441,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Անվանում - + Progress Ընթացք - + Download Priority Ներբեռ. առաջնահերթություն - + Remaining Մնացել է - + Availability Հասանելիություն - + Total Size Ընդհանուր չափ @@ -9946,113 +10511,131 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Անվանափոխման սխալ - + Renaming - + New name: Նոր անվանում՝ - + Column visibility Սյունակների տեսանելիությունը - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Բացել - + Open containing folder - + Rename... Անվանափոխել... - + Priority Առաջնահերթություն - - + + Do not download Չներբեռնել - + Normal Միջին - + High Բարձր - + Maximum Առավելագույն - + By shown file order - Ըստ նիշքերի ցուցադրվող ցանկի + Ըստ ցուցադրվող ֆայլի հերթականության - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order - TorrentCreatorDialog + TorrentCreatorController - - Torrent Creator + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + + + TorrentCreatorDialog + + + Torrent Creator Select file/folder to share - Ընտրել նիշքը/պանակը կիսվելու համար + Ընտրել ֆայլ/պանակ՝ տարածելու համար @@ -10066,25 +10649,25 @@ Please choose a different name and try again. - + Select file - Ընտրել նիշք + Ընտրել ֆայլ - + Select folder Ընտրել պանակ Settings - + Կարգավորումներ Torrent format: - + Torrent-ի ձևաչափ՝ @@ -10097,58 +10680,10 @@ Please choose a different name and try again. Մասի չափը. - + Auto Ինքնաշխատ - - 16 KiB - 16 ԿԲ - - - 32 KiB - 32 ԿԲ - - - 64 KiB - 64 ԿԲ - - - 128 KiB - 128 ԿԲ - - - 256 KiB - 256 ԿԲ - - - 512 KiB - 512 ԿԲ - - - 1 MiB - 1 ՄԲ - - - 2 MiB - 2 ՄԲ - - - 4 MiB - 4 ՄԲ - - - 8 MiB - 8 ՄԲ - - - 16 MiB - 16 ՄԲ - - - 32 MiB - 32 ՄԲ - Calculate number of pieces: @@ -10195,121 +10730,116 @@ Please choose a different name and try again. Դաշտեր - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: Ուղղորդիչի հղումները. - + Comments: Մեկնաբանություններ՝ - + Source: - Աղբյուր. + Աղբյուր՝ - + Progress: Ընթացք` - + Create Torrent - + Ստեղծել torrent - - + + Torrent creation failed - + Torrent-ի ստեղծումը ձախողվեց - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) - Torrent նիշքեր (*.torrent) - - - - Reason: %1 - Պատճառը. %1 + Torrent ֆայլեր (*.torrent) - + Add torrent to transfer list failed. - + Reason: "%1" - + Պատճառ՝ «%1» - + Add torrent failed - + Torrent-ի ավելացումը ձախողվեց - + Torrent creator - + Torrent-ի ստեղծող - + Torrent created: - + Torrent-ը ստեղծվել է՝ TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10317,27 +10847,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Magnet ֆայլը չափազանց մեծ է: Ֆայլ՝ %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10345,14 +10875,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Անվավեր մետատվյալներ + Անվավեր մետատվյալներ @@ -10383,126 +10907,166 @@ Please choose a different name and try again. - + Category: Անվանակարգ՝ - - Torrent speed limits + + Torrent Share Limits - + Download: Ներբեռ.՝ - - + + - - + + Torrent Speed Limits + + + + + KiB/s ԿԲ/վ - + These will not exceed the global limits - + Upload: Վերբեռ.՝ - - Torrent share limits + ratio + հարաբերություն + + + + Disable DHT for this torrent - - Use global share limit + + Download in sequential order + Բեռնել հաջորդական կարգով + + + + Disable PeX for this torrent - - Set no share limit + + Download first and last pieces first + Սկզբում ներբեռնել առաջին ու վերջին մասերը + + + + Disable LSD for this torrent - - Set share limit to + + Currently used categories - - ratio - հարաբերություն + + + Choose save path + Ընտրեք պահելու ուղին - - total minutes + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - inactive minutes - + + + + + Default + Լռելայն - - Disable DHT for this torrent + + + + Unlimited - - Download in sequential order - Բեռնել հաջորդական կարգով + + + + Set to + - - Disable PeX for this torrent + + Seeding time: - - Download first and last pieces first - Սկզբում ներբեռնել առաջին ու վերջին մասերը + + + + + + + min + minutes + Նվազ. - - Disable LSD for this torrent + + Inactive seeding time: - - Currently used categories + + Action when the limit is reached: - - - Choose save path - Ընտրեք պահելու ուղին + + Stop torrent + - - Not applicable to private torrents + + Remove torrent + Հեռացնել torrent-ը + + + + Remove torrent and its content - - No share limit method selected + + Enable super seeding for torrent - - Please select a limit method first + + Ratio: @@ -10514,32 +11078,36 @@ Please choose a different name and try again. - New Tag - Նոր պիտակ + Նոր պիտակ + Add tag + + + + Tag: Պիտակ՝ - + Invalid tag name Անվավեր պիտակի անուն - + Tag name '%1' is invalid. - + Tag exists Պիտակը գոյություն ունի - + Tag name already exists. @@ -10547,115 +11115,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer Առաջնահերթությունը պետք է ամբողջ թիվ լինի - + Priority is not valid Առաջնահերթությունը անվավեր է - + Torrent's metadata has not yet downloaded Torrent-ի մետատվյալները դեռ չեն ներբեռնվել - + File IDs must be integers Նիշքի ID-ները ամբողջ թվեր պիտի լինի - + File ID is not valid Նիշքի ID-ն անվավեր է - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty Պահելու ուղին չի կարող դատարկ լինել - - + + Cannot create target directory - - + + Category cannot be empty Անվանակարգը չի կարող դատարկ լինել - + Unable to create category Չհաջողվեց ստեղծել անվանակարգ - + Unable to edit category Չհաջողվեց խմբագրել անվանակարգը - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name Անվանակարգի սխալ անվանում @@ -10681,241 +11264,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - Աշխատում է + Աշխատում է - + Disabled - Կասեցված է + Կասեցված է - + Disabled for this torrent - + This torrent is private - Այս torrent-ը անձնական է + Այս torrent-ը անձնական է - + N/A - + Updating... - Թարմացվում է... + Թարմացվում է... - + Not working - Չի աշխատում + Չի աշխատում - + Tracker error - + Unreachable - + Not contacted yet - Դեռ չի միացնել + Դեռ չի միացնել - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol - - Protocol + + Next Announce - - Status - Վիճակ + + Min Announce + + + + + Tier + - Peers - Մասնակիցներ + Status + Վիճակ - Seeds - Բաժանողներ + Peers + Ցանցորդներ - Leeches - Քաշողներ + Seeds + Սերմնացաններ՝ - Times Downloaded - + Leeches + Քաշողներ - Message - Հաղորդագրություն - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + Հաղորդագրություն TrackerListWidget - Working - Աշխատում է - - - Disabled - Կասեցված է - - - + This torrent is private Այս torrent-ը անձնական է - Updating... - Թարմացվում է... - - - Not working - Չի աշխատում - - - Not contacted yet - Դեռ չի միացնել - - - + Tracker editing - + Tracker URL: - - + + Tracker editing failed - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... - + Remove tracker Ջնջել ուղղորդիչը - + Copy tracker URL Պատճենել գրանցորդի URL-ը - + Force reannounce to selected trackers Ստիպողաբար վերաազդարարել ընտրված գրանցորդներին - + Force reannounce to all trackers Ստիպողաբար վերաազդարարել բոլոր գրանցորդներին - URL - Հղումը - - - Status - Վիճակ - - - Seeds - Բաժանողներ - - - + Resize columns - + Resize all non-hidden columns to the size of their contents - Peers - Մասնակիցներ - - - + Add trackers... - Leeches - Քաշողներ - - - Message - Հաղորդագրություն - - - + Column visibility Սյունակների տեսանելիությունը @@ -10933,37 +11466,37 @@ Please choose a different name and try again. Ավելացվող ուղղորդիչների ցանկը. - + µTorrent compatible list URL: µTorrent-ի հետ համատեղելի հղումներ. - + Download trackers list - + Add Ավելացնել - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10971,83 +11504,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Բոլորը (0) - - - Trackerless (0) - Անգրանցորդ (0) - - - Error (0) - Սխալ (0) - - - Warning (0) - Զգուշացում (0) - - - Error (%1) - Սխալ (%1) - - - + Warning (%1) Զգուշացում (%1) - + Trackerless (%1) Անգրանցորդ (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - Ջնջել ուղղորդիչը + Ջնջել ուղղորդիչը + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Շարունակել torrent-ները + Շարունակել torrent-ները - Pause torrents - Դադարեցնել torrent-ները + Դադարեցնել torrent-ները - + Remove torrents - + Հեռացնել torrent-ները - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Բոլորը (%1) @@ -11056,7 +11576,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11149,9 +11669,8 @@ Please choose a different name and try again. Շարունակման տվյալների վերստուգում - Paused - Դադարեցված է + Դադարեցված է @@ -11167,7 +11686,7 @@ Please choose a different name and try again. Missing Files - Նիշքեր են բացակայում + Բացակայող ֆայլեր @@ -11176,220 +11695,262 @@ Please choose a different name and try again. Սխալներով - + Name i.e: torrent name Անվանում - + Size i.e: torrent size Չափը - + Progress % Done Ընթացք - Status Torrent status (e.g. downloading, seeding, paused) - Վիճակ + Վիճակ - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Վիճակ + + + Seeds i.e. full sources (often untranslated) - Բաժանողներ + Սերմնացաններ՝ - + Peers i.e. partial sources (often untranslated) - Մասնակիցներ + Ցանցորդներ - + Down Speed i.e: Download speed Ներբեռ. արագ. - + Up Speed i.e: Upload speed Վերբեռ. արագ. - + Ratio Share ratio Հարաբերություն - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Մնացել է - + Category Անվանակարգ - + Tags Պիտակներ - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Ավելացվել է ցանկին - + Completed On Torrent was completed on 01/01/2010 08:00 Ավարտված է - + Tracker Գրանցորդ - + Down Limit i.e: Download limit Ներբեռ. սահ-ում - + Up Limit i.e: Upload limit Վեր. սահ-ում - + Downloaded Amount of data downloaded (e.g. in MB) Ներբեռնվել է - + Uploaded Amount of data uploaded (e.g. in MB) Վերբեռնված - + Session Download Amount of data downloaded since program open (e.g. in MB) Ա/շրջանի ներբեռնում - + Session Upload Amount of data uploaded since program open (e.g. in MB) Աշ/շրջանի վերբեռնում - + Remaining Amount of data left to download (e.g. in MB) Մնացել է - + + Time Active + Time (duration) the torrent is active (not stopped) + Գործունության ժամանակ + + + + Yes + Այո + + + + No + Ոչ + + Time Active Time (duration) the torrent is active (not paused) - Գործունության ժամանակ + Գործունության ժամանակ - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Ավարտված է - + Ratio Limit Upload share ratio limit Հարաբերության սահմանաչափ - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Վերջին անգամ ավարտվել է - + Last Activity Time passed since a chunk was downloaded/uploaded - + Total Size i.e. Size including unwanted data Ընդհանուր չափ - + Availability The number of distributed copies of the torrent Հասանելիություն - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A - + %1 ago e.g.: 1h 20m ago %1 առաջ - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (բաժանվել է %2) @@ -11398,334 +11959,333 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Սյունակների տեսանելիությունը - + Recheck confirmation Վերստուգման հաստատում - + Are you sure you want to recheck the selected torrent(s)? Վստա՞հ եք, որ ուզում եք վերստուգել ընտրված torrent-(ներ)ը: - + Rename Անվանափոխել - + New name: Նոր անվանում՝ - + Choose save path Ընտրեք պահելու ուղին - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Ավելացնել պիտակներ + Ավելացնել պիտակներ - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + «.torrent» ֆայլի արտահանման սխալ - + Remove All Tags Հեռացնել բոլոր պիտակները - + Remove all tags from selected torrents? Հեռացնե՞լ բոլոր պիտակները ընտրված torrent-ներից: - + Comma-separated tags: Ստորակետով բաժանված պիտակներ՝ - + Invalid tag - + Tag name: '%1' is invalid - &Resume Resume/start the torrent - &Շարունակել + &Շարունակել - &Pause Pause the torrent - &Դադարեցնել - - - - Force Resu&me - Force Resume/start the torrent - + &Դադարեցնել - + Pre&view file... - + Նախա&դիտել ֆայլը... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Ա&րտահանել .torrent-ը... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Բեռնել հաջորդական կարգով - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first Սկզբում ներբեռնել առաջին ու վերջին մասերը - + Automatic Torrent Management Torrent-ների ինքնաշխատ կառավարում - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Գերբաժանման գործելաձև @@ -11770,28 +12330,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11799,7 +12359,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11830,20 +12395,21 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". @@ -11884,27 +12450,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Ֆայլի կարդացման սխալ: Ֆայլ՝ «%1»: Սխալ՝ «%2» - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11968,72 +12534,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12041,138 +12607,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + Անհայտ սխալ + + misc - + B bytes Բ - + KiB kibibytes (1024 bytes) ԿԲ - + MiB mebibytes (1024 kibibytes) ՄԲ - + GiB gibibytes (1024 mibibytes) ԳԲ - + TiB tebibytes (1024 gibibytes) ՏԲ - + PiB pebibytes (1024 tebibytes) - + EiB exbibytes (1024 pebibytes) - + /s per second - + %1s e.g: 10 seconds - %1 րոպե {1s?} + - + %1m e.g: 10 minutes - %1 րոպե + %1րոպե - + %1h %2m e.g: 3 hours 5 minutes - %1 ժ %2 ր + %1ժ %2ր - + %1d %2h e.g: 2 days 10 hours - %1 օր %2 ժ + %1օր %2ժ - + %1y %2d e.g: 2 years 10 days - %1 օր %2 ժ {1y?} {2d?} - - - %1h %2m - e.g: 3hours 5minutes - %1 ժ %2 ր - - - %1d %2h - e.g: 2days 10hours - %1 օր %2 ժ + - - + + Unknown Unknown (size) Անհայտ - + qBittorrent will shutdown the computer now because all downloads are complete. Բոլոր ներբեռնումները ավարտվել են։ Համակարգիչը անջատվում է։ - + < 1m < 1 minute < 1ր - - %1m - e.g: 10minutes - %1 րոպե - diff --git a/src/lang/qbittorrent_id.ts b/src/lang/qbittorrent_id.ts index c4fb9e27c9db..389b008e1e95 100644 --- a/src/lang/qbittorrent_id.ts +++ b/src/lang/qbittorrent_id.ts @@ -14,77 +14,77 @@ Tentang - + Authors Pengembang - + Current maintainer Pengelola saat ini - + Greece Yunani - - + + Nationality: Kewarganegaraan: - - + + E-mail: E-mail: - - + + Name: Nama: - + Original author Pengembang asli - + France Perancis - + Special Thanks Apresiasi - + Translators Penerjemah - + License Lisensi - + Software Used Perangkat Lunak yang Digunakan - + qBittorrent was built with the following libraries: qBittorrent dibuat dengan pustaka berikut: - + Copy to clipboard - + Salin @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Hak cipta %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Hak cipta %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Simpan di - + Never show again Jangan pernah tampilkan lagi - Torrent settings - Pengaturan torrent + Pengaturan torrent @@ -191,12 +190,12 @@ Jalankan torrent - + Torrent information Informasi torrent - + Skip hash check Lewati pengecekan hash @@ -205,6 +204,11 @@ Use another path for incomplete torrent Gunakan path lain untuk torrent yang tidak lengkap + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Kondisi penghentian: - - + + None Tidak ada - - + + Metadata received Metadata diterima - - + + Torrents that have metadata initially will be added as stopped. + Torrent yang dilengkapi metadata akan ditambahkan dan ditandai sebagai dihentikan. + + + + Files checked File sudah diperiksa - + Add to top of queue Tambahkan ke antrian teratas - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Jika diaktifkan, berkas .torrent tidak akan dihapus terlepas dari pengaturan pada halaman "Unduhan" dari dialog Opsi - + Content layout: Tata letak konten: - + Original Asli - + Create subfolder Buat subfolder - + Don't create subfolder Jangan buat subfolder - + Info hash v1: Informasi hash v1: - + Size: Ukuran: - + Comment: Komentar: - + Date: Tanggal: @@ -324,245 +333,182 @@ Ingat tempat terakhir menyimpan - + Do not delete .torrent file Jangan hapus berkas .torrent - + Download in sequential order Unduh dengan urutan sekuensial - + Download first and last pieces first Unduh bagian awal dan akhir dahulu - + Info hash v2: Informasi hash v2: - + Select All Pilih Semua - + Select None Pilih Tidak Ada - + Save as .torrent file... Simpan sebagai berkas .torrent... - + I/O Error Galat I/O - Invalid torrent - Torrent tidak valid - - - + Not Available This comment is unavailable Tidak Tersedia - + Not Available This date is unavailable Tidak Tersedia - + Not available Tidak tersedia - Invalid magnet link - Tautan magnet tidak valid - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Gagal memuat torrent: %1. -Galat: %2 - - - This magnet link was not recognized - Tautan magnet ini tidak dikenali - - - + Magnet link Tautan magnet - + Retrieving metadata... Mengambil metadata... - - + + Choose save path Pilih jalur penyimpanan - Torrent is already present - Torrent sudah ada - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' sudah masuk di daftar transfer. Pencari tidak dapat digabung karena torrent pribadi. - - - Torrent is already queued for processing. - Torrent sudah mengantrikan untuk memproses. - - - + No stop condition is set. Kondisi penghentian tidak ditentukan. - + Torrent will stop after metadata is received. Torrent akan berhenti setelah metadata diterima. - - Torrents that have metadata initially aren't affected. - Torrent yang sudah memiliki metadata tidak akan terpengaruh. - - - + Torrent will stop after files are initially checked. Torrent akan berhenti setelah berkas diperiksa lebih dahulu. - + This will also download metadata if it wasn't there initially. Ini juga akan mengunduh metadata jika sebelumnya tidak ada. - - + + N/A T/A - Magnet link is already queued for processing. - Link Magnet sudah diurutkan untuk proses. - - - + %1 (Free space on disk: %2) %1 (Ruang kosong di disk: %2) - + Not available This size is unavailable. Tidak tersedia - + Torrent file (*%1) Berkas torrent (*%1) - + Save as torrent file Simpan sebagai berkas torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Tidak dapat mengekspor berkas metadata torrent '%1'. Alasan: %2. - + Cannot create v2 torrent until its data is fully downloaded. Tidak dapat membuat torrent v2 hingga datanya terunduh semua. - Cannot download '%1': %2 - Tidak bisa mengunduh '%1': %2 - - - + Filter files... Filter berkas... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' sudah masuk di daftar transfer. Pencari tidak dapat digabung karena ini torrent pribadi. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' sudah masuk di daftar transfer. Apakah Anda ingin menggabung pencari dari sumber baru? - - - + Parsing metadata... Mengurai metadata... - + Metadata retrieval complete Pengambilan metadata komplet - - Failed to load from URL: %1. -Error: %2 - Gagal memuat dari URL: %1. -Galat: %2 - - - Download Error - Galat Unduh - AddTorrentManager Downloading torrent... Source: "%1" - + Mengunduh torrent... Source: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Gagal menambahkan torrent. Source: "%1". Reason: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Terdeteksi duplikat dalam penambahan torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Penggabungan pelacak dinonaktifkan - + Trackers cannot be merged because it is a private torrent - + Pelacak tidak dapat digabungkan karena merupakan torrent privat - + Trackers are merged from new source - + Pelacak digabungkan dari sumber baru @@ -648,72 +594,77 @@ Galat: %2 Lewati pengecekan hash - - - Choose save path - Pilih jalur simpan + + Torrent share limits + Batas berbagi torrent - - - - - - - Default - Bawaan + + + Choose save path + Pilih jalur simpan + + + - Yes - Ya + Default + Bawaan + Yes + Ya + + + + + No Tidak - + Manual Manual - + Automatic Otomatis - + Original Orisinil - + Create subfolder Buat subfolder - + Don't create subfolder Jangan buat subfolder - + None Tidak ada - + Metadata received Metadata diterima - + Files checked File sudah diperiksa @@ -721,734 +672,852 @@ Galat: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Periksa ulang torrent saat selesai - - + + ms milliseconds ms - + Setting Pengaturan - + Value Value set for this setting Nilai - + (disabled) (nonaktif) - + (auto) (otomatis) - + + min minutes menit - + All addresses Semua alamat - + qBittorrent Section Bagian qBittorrent - - + + Open documentation Buka dokumentasi - + All IPv4 addresses Semua alamat IPv4 - + All IPv6 addresses Semua alamat IPv6 - + libtorrent Section Bagian libtorrent - + Fastresume files Berkas lanjutan cepat - + SQLite database (experimental) Database SQLite (eksperimental) - + Resume data storage type (requires restart) Lanjutkan tipe data penyimpanan (memerlukan mulai ulang) - + Normal Normal - + Below normal Di bawah normal - + Medium Medium - + Low Rendah - + Very low Sangat rendah - - Process memory priority (Windows >= 8 only) - Prioritas memori proses (hanya untuk Windows >= 8) - - - + Physical memory (RAM) usage limit Batas penggunaan memori fisik (RAM) - + Asynchronous I/O threads Asingkron rangkaian I/O - + Hashing threads Threads hash - + File pool size Ukuran pool file - + Outstanding memory when checking torrents - + Memori berlebih saat melakukan pengecekan torrent - + Disk cache Cache diska - - - - + + + + s seconds s - + Disk cache expiry interval Selang kedaluwarsa tembolok diska - + Disk queue size Ukuran antrian disk - - + + Enable OS cache Aktifkan tembolok OS - + Coalesce reads & writes Gabungkan baca & tulis - + Use piece extent affinity - + Gunakan afinitas tingkat potongan - + Send upload piece suggestions Kirim saran potongan unggahan - - - - + + + + + 0 (disabled) 0 (nonaktif) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Interval menyimpan data yang perlu dilanjutkan [0: dimatikan] - + Outgoing ports (Min) [0: disabled] - + Port keluar (minimum) [0: dimatikan] - + Outgoing ports (Max) [0: disabled] - + Port keluar (maksimum) [0: dimatikan] - + 0 (permanent lease) - + 0 (sewa permanen) - + UPnP lease duration [0: permanent lease] - + Durasi sewa UPnP [0: sewa permanen] - + Stop tracker timeout [0: disabled] - + Hentikan batas waktu pelacak [0: dinonaktifkan] - + Notification timeout [0: infinite, -1: system default] - + Batas waktu durasi pemberitahuan [0: tak terbatas, -1: default sistem] - + Maximum outstanding requests to a single peer - + Maksimum permintaan yang belum terselesaikan ke satu rekan kerja - - - - - + + + + + KiB KiB - + (infinite) (tak ter-hingga) - + (system default) (bawaan sistem) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Pilihan ini kurang efektif di piranti Linux - + + Process memory priority + Prioritas proses memori + + + Bdecode depth limit - + Bdecode token limit - + Default Bawaan - + Memory mapped files - + Berkas yang dipetakan pada memori - + POSIX-compliant + POSIX-compliant + + + + Simple pread/pwrite - + Disk IO type (requires restart) - + Tipe IO diska (perlu mulai ulang) - - + + Disable OS cache Matikan tembolok Sistem Operasi - + Disk IO read mode - + Mode baca IO diska - + Write-through - + Write-through - + Disk IO write mode - + Mode tulis IO diska - + Send buffer watermark Kirim tanda air buffer - + Send buffer low watermark Kirim tanda air buffer rendah - + Send buffer watermark factor Kirim tanda air buffer factor - + Outgoing connections per second Koneksi keluar per detik - - + + 0 (system default) 0 (bawaan sistem) - + Socket send buffer size [0: system default] - + Ukuran buffer keluar socket [0: default sistem] - + Socket receive buffer size [0: system default] - + Ukuran buffer masuk socket [0: default sistem] - + Socket backlog size + Ukuran backlog socket + + + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + .torrent file size limit - + Batas ukuran file .torrent - + Type of service (ToS) for connections to peers - + Prefer TCP Pilih TCP - + Peer proportional (throttles TCP) Proporsi rekan (men-throttle TCP) - + Support internationalized domain name (IDN) Dukungan internationalized domain name (IDN) - + Allow multiple connections from the same IP address Izinkan banyak koneksi dari Alamat IP yang sama - + Validate HTTPS tracker certificates Validasi sertifikat pelacak HTTPS - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + Kustomisasikan instance nama aplikasi + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Interval penyegaran - + Resolve peer host names Singkap nama host rekan - + IP address reported to trackers (requires restart) + Alamat IP yang dilaporkan ke pelacak (perlu mulai ulang) + + + + Port reported to trackers (requires restart) [0: listening port] - + Reannounce to all trackers when IP or port changed Umumkan kembali ke semua pelacak saat IP atau port diubah - + Enable icons in menus Aktifkan ikon di menu - + Enable port forwarding for embedded tracker - - (Auto detect if empty) + + Enable quarantine for downloaded files + Aktifkan karantina untuk file yang diunduh + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Aktifkan Mark-of-the-Web (MOTW) untuk file yang diunduh + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Deteksi otomatis jika kosong) + + + Python executable path (may require restart) + Jalur file executable Python (mungkin perlu mulai ulang) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + det + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Konfirmasi penghapusan pelacak dari semua torrent + + + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + Reset ke default jika kosong - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Tampilkan notifikasi - + Display notifications for added torrents Tampilkan notifikasi untuk torrent yang ditambahkan - + Download tracker's favicon Unduh favicon milik tracker - + Save path history length Simpan riwayat panjang jalur - + Enable speed graphs Aktifkan grafik kecepatan - + Fixed slots Slot tetap - + Upload rate based Laju unggah dasar - + Upload slots behavior Unggah tingkah laku slot - + Round-robin Usul - + Fastest upload Unggah cepat - + Anti-leech Anti-leech - + Upload choking algorithm Unggah algoritma tersendat - + Confirm torrent recheck Konfirmasi pemeriksaan ulang torrent - + Confirm removal of all tags Konfirmasi pembuangan semua tanda - + Always announce to all trackers in a tier Selalu umumkan kepada semua traker dalam satu deretan - + Always announce to all tiers Selalu umumkan kepada semua deretan - + Any interface i.e. Any network interface Antarmuka apapun - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritma mode campuran %1-TCP - + Resolve peer countries Singkap negara rekanan - + Network interface Antarmuka jaringan - + Optional IP address to bind to - + Opsional alamat IP untuk menghubungkan ke - + Max concurrent HTTP announces - + Enable embedded tracker Aktifkan pelacak tertanam - + Embedded tracker port Port pelacak tertanam - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 dimulai + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Berjalan dalam mode portabel. Mendeteksi otomatis folder profil di: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 Menggunakan direktori konfigurasi: %1 - + Torrent name: %1 Nama torrent: %1 - + Torrent size: %1 Ukuran torrent: %1 - + Save path: %1 Jalur penyimpanan: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent telah diunduh dalam %1. - + + Thank you for using qBittorrent. Terima kasih telah menggunakan qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, mengirimkan notifikasi email - + Add torrent failed - + Penambahan torrent gagal - + Couldn't add torrent '%1', reason: %2. + Gagal menambahkan torrent '%1', reason: %2. + + + + The WebUI administrator username is: %1 + Nama pengguna admin WebUI adalah: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 - + + You should set your own password in program preferences. + Anda harus mengatur kata sandimu sendiri di preferensi program. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI dimatikan! Untuk mengaktifkan WebUI, sunting file konfigurasi secara manual. - + Running external program. Torrent: "%1". Command: `%2` - + Jalankan program eksternal. Torrent: "%1". Perintah: '%2' - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + Torrent "%1%" sudah selesai diunduh. - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... Memuat torrent... - + E&xit &Keluar - + I/O Error i.e: Input/Output Error Galat I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,138 +1526,110 @@ Galat: %2 Alasan: %2 - Error - Galat - - - Failed to add torrent: %1 - Gagal menambahkan torrent: %1 - - - + Torrent added Torrent ditambahkan - + '%1' was added. e.g: xxx.avi was added. '%1' telah ditambahkan. - + Download completed Unduhan Selesai - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' telah selesai diunduh. - - - URL download error - Galat unduh URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + memulai %1 qBittorrent. ID berjalan: %2 - Couldn't download file at URL '%1', reason: %2. - Tidak bisa mengunduh berkas pada URL '%1', alasan: %2. + + This is a test email. + - Torrent file association - Asosiasi berkas torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent bukan aplikasi bawaan untuk membuka berkas torrent atau tautan Magnet. Apakah Anda ingin mengasosiasikan qBittorent untuk membuka berkas torrent dan Tautan Magnet? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' telah selesai diunduh. - + Information Informasi - + To fix the error, you may need to edit the config file manually. - + Untuk mengatasi masalah ini, anda harus menyunting file konfigurasi secara manual. - + To control qBittorrent, access the WebUI at: %1 Untuk mengontrol qBittorrent, akses WebUI di: %1 - - The Web UI administrator username is: %1 - Nama pengguna administrator Web UI adalah: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - kata sandi administrator Web UI belum diganti dari bawaannya: %1 - - - - This is a security risk, please change your password in program preferences. - - - - Application failed to start. - Aplikasi gagal untuk dijalankan. - - - + Exit Tutup - + Recursive download confirmation - Konfirmasi unduh rekursif + Konfirmasi unduh rekursif - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - + Jangan Pernah - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Menyimpan progres torrent... - + qBittorrent is now ready to exit @@ -1596,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Tidak bisa membuat direktori '%1'. @@ -1604,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Login WebAPI gagal. Penyebab: IP telah diblokir, IP: %1, nama pengguna: %2 - + Your IP address has been banned after too many failed authentication attempts. Alamat IP Anda telah dicekal setelah terlalu banyak melakukan percobaan otentikasi yang gagal. - + WebAPI login success. IP: %1 Login WebAPI sukses. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Login WebAPI gagal. Penyebab: kredensial tidak sah, mencoba: %1, IP: %2, namapengguna: %3 @@ -1667,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? Prioritas: - + Must Not Contain: Tidak Boleh Memuat: - + Episode Filter: Filter Episode: @@ -1685,7 +1726,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Torrent parameters - + Parameter torrent @@ -1724,263 +1765,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Ekspor... - + Matches articles based on episode filter. Artikel yang cocok berdasarkan filter episode. - + Example: Contoh: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match akan cocok 2, 5, 8 sampai 15, 30 dan episode seterusnya dari musim pertama - + Episode filter rules: Aturan filter episode: - + Season number is a mandatory non-zero value Nomor musim wajib bernilai bukan nol - + Filter must end with semicolon Filter harus diakhiri dengan titik-koma - + Three range types for episodes are supported: Tiga jenis rentang untuk episode yang didukung: - + Single number: <b>1x25;</b> matches episode 25 of season one Nomor tunggal: <b>1x25;</ b> cocok dengan episode 25 dari musim pertama - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Rentang normal: <b>1x25-40;</b> cocok dengan episode 25 sampai 40 dari musim pertama - + Episode number is a mandatory positive value Nomor episode ialah wajib nilai positif - + Rules Aturan - + Rules (legacy) Aturan (lama) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Barisan tak terbatas:<b>1x25-;</b>sesuai episode 25 dan ke atas dari sesi satu, dan semua dari episode nanti - + Last Match: %1 days ago Cocok Terakhir: %1 hari yang lalu - + Last Match: Unknown Cocok Terakhir: Tidak Diketahui - + New rule name Nama aturan baru - + Please type the name of the new download rule. Mohon ketik nama dari aturan unduh baru. - - + + Rule name conflict Nama aturan konflik - - + + A rule with this name already exists, please choose another name. Aturan dengan nama ini telah ada, mohon pilih nama lain. - + Are you sure you want to remove the download rule named '%1'? Apakah Anda yakin ingin membuang aturan unduhan bernama '%1'? - + Are you sure you want to remove the selected download rules? Apakah Anda yakin ingin menghapus aturan unduh yang dipilih? - + Rule deletion confirmation Konfirmasi penghapusan aturan - + Invalid action Tindakan tidak valid - + The list is empty, there is nothing to export. Daftar kosong, tidak ada yang perlu diekspor. - + Export RSS rules Ekspor aturan RSS - + I/O Error Galat I/O - + Failed to create the destination file. Reason: %1 Gagal membuat berkas tujuan. Alasan: %1 - + Import RSS rules Impor aturan RSS - + Failed to import the selected rules file. Reason: %1 Gagal mengimpor berkas aturan yang dipilih. Alasan: %1 - + Add new rule... Tambah aturan baru... - + Delete rule Hapus aturan - + Rename rule... Ubah nama aturan... - + Delete selected rules Hapus aturan yang dipilih - + Clear downloaded episodes... Kosongkan daftar episode yang diunduh... - + Rule renaming Menamai ulang aturan - + Please type the new rule name Mohon ketik nama aturan baru - + Clear downloaded episodes Kosongkan daftar episode yang diunduh - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Apakah Anda yakin ingin mengosongkan daftar episode yang diunduh untuk aturan yang dipilih? - + Regex mode: use Perl-compatible regular expressions Mode regex: gunakan ekspresi reguler yang kompatibel dengan Perl - - + + Position %1: %2 Posisi %1: %2 - + Wildcard mode: you can use Mode wildcard: Anda bisa menggunakan - - + + Import error - + Kesalahan impor - + Failed to read the file. %1 - + Gagal membaca file ini: %1 - + ? to match any single character ? untuk mencocokkan semua jenis karakter tunggal - + * to match zero or more of any characters * untuk sesuai nol atau lebih dari karakter apapun - + Whitespaces count as AND operators (all words, any order) Ruang putih terhitung sebagai operator DAN (semua kata, urutan apapun) - + | is used as OR operator | digunakan sebagai operator OR - + If word order is important use * instead of whitespace. Jika urutan kata sangat penting gunakan * daripada ruang putih. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Ekspresi dengan kekosongan %1 klausa (cth. %2) - + will match all articles. akan sesuai semua pasal. - + will exclude all articles. akan tiadakan semua pasal. @@ -2022,53 +2063,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Tidak dapat membuat berkas lanjutan torrent: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Tidak dapat menyimpan metadata torrent ke '%1'. Kesalahan: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 Tidak dapat menyimpan data ke '%1'. Kesalahan: %2 @@ -2076,38 +2122,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Tidak ditemukan. - + Couldn't load resume data of torrent '%1'. Error: %2 Tidak dapat melanjutkan data dari torrent '%1'. Kesalahan: %2 - - + + Database is corrupted. Basis data rusak. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2115,22 +2161,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Tidak dapat menyimpan metadata torrent. Kesalahan %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Tidak dapat melanjutkan menyimpan data untuk torrent '%1'. Kesalahan: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Tidak dapat menghapus data yang dilanjutkan dari torrent '%1'. Kesalahan: %2 - + Couldn't store torrents queue positions. Error: %1 Tidak dapat menyimpan posisi antrian torrent. Kesalahan: %1 @@ -2138,558 +2184,612 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON NYALA - - - - - - - - - + + + + + + + + + OFF MATI - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 Mode anonim: %1 - - + + Encryption support: %1 - - + + FORCED PAKSA - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Hapus torrent. - - - - - - Removed torrent and deleted its content. - + Hapus torrent. - - - Torrent paused. - Torrent berhenti + Torrent berhenti - - - + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Torrent mencapai batas waktu tidak aktif pembenihan. - + Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - - UPnP/NAT-PMP support: OFF + + Saving resume data completed. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + BitTorrent session successfully finished. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 - System network status changed to %1 - e.g: System network status changed to ONLINE - Status jaringan sistem berubah menjadi %1 + + Merging of trackers is disabled + Penggabungan pelacak dinonaktifkan + + + + Trackers cannot be merged because it is a private torrent + Pelacak tidak dapat digabungkan karena merupakan torrent privat + + + + Trackers are merged from new source + Pelacak digabungkan dari sumber baru - ONLINE - DARING + + UPnP/NAT-PMP support: OFF + - OFFLINE - LURING + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Konfigurasi jaringan dari %1 telah berubah, menyegarkan jalinan sesi + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent dihentikan. Torrent: "%1" + Torrent dihentikan. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent dilanjutkan. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Unduhan Torrent terselesaikan. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Memulai memindahkan torrent. Torrent: "%1". Tujuan: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent bermasalah. Torrent: "%1". Masalah: "%2" - - Removed torrent. Torrent: "%1" - Hapus torrent. Torrent: "%1" + Hapus torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Hilangkan torrent dan hapus isi torrent. Torrent: "%1" + Hilangkan torrent dan hapus isi torrent. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filter IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Sesi BitTorrent mengalami masalah serius. Reason: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 Gagal memuat Kategori. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Gagal memuat pengaturan Kategori. File: "%1". Kesalahan: "Format data tidak valid" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent dihapus tapi gagal menghapus isi dan/atau fail-sebagian. Torrent: "%1". Kesalahan: "%2" + Torrent dihapus tapi gagal menghapus isi dan/atau fail-sebagian. Torrent: "%1". Kesalahan: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 dinonaktifkan - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 dinonaktifkan - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operasi dibatalkan - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Gagal membuat berkas torrent baru. Alasan: %1 + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operasi dibatalkan + Operasi dibatalkan + + Create new torrent file failed. Reason: %1. - Gagal membuat berkas torrent baru. Alasan: %1 + Gagal membuat berkas torrent baru. Alasan: %1 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Gagal menambahkan rekanan "%1" ke torrent "%2". Alasan: %3 - + Peer "%1" is added to torrent "%2" Rekanan "%1" ditambahkan ke torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' Unduh bagian awal dan akhir terlebih dahulu: %1, torrent: '%2' - + On Aktif - + Off Nonaktif - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + Metadata tidak ditemukan - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Gagal mengubah nama berkas. Torrent: "%1", berkas: "%2", alasan: "%3" - + Performance alert: %1. More info: %2 @@ -2710,184 +2810,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' harus mengikuti sintaksis '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' harus mengikuti sintaksis '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Diharapkan bilangan bulat berada dalam lingkungan variabel '%1', tetapi dapat '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' harus mengikuti sintaksis '%1=%2' + Parameter '%1' harus mengikuti sintaksis '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Diharapkan %1 dalam lingkungan variabel '%2', tetapi dapat '%3' - - + + %1 must specify a valid port (1 to 65535). %1 harus spesifik port benar (1 sampai 65535). - + Usage: Penggunaan: - + [options] [(<filename> | <url>)...] - + Options: Opsi: - + Display program version and exit Tampilkan versi program dan keluar - + Display this help message and exit Tampilkan pesan bantuan ini dan keluar - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' harus mengikuti sintaksis '%1=%2' + + + + Confirm the legal notice + + + + + port port - - Change the Web UI port - Ubah port Web UI + + Change the WebUI port + Ubah port WebUI - + Change the torrenting port - + Disable splash screen Nonaktifkan layar sambutan - + Run in daemon-mode (background) Jalankan dalam mode daemon (latar) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Simpan berkas konfigurasi di dalam <dir> - - + + name nama - + Store configuration files in directories qBittorrent_<name> Simpan berkas konfigurasi di dalam direktori qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Retas ke dalam libtorrent sambung-cepat berkas dan buat tempat tujuan relatif ke direktori profil - + files or URLs berkas atau URL - + Download the torrents passed by the user Unduhan torrent dilewati oleh pengguna - + Options when adding new torrents: Opsi saat menambahkan torrent baru: - + path jalur - + Torrent save path Jalur simpan torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Tambahkan torrrent sebagai dimulai atau dijeda + Tambahkan torrrent sebagai dimulai atau dijeda - + Skip hash check Lewati pengecekan hash - + Assign torrents to category. If the category doesn't exist, it will be created. Masukkan torrent ke dalam kategori. Kategori otomatis dibuat jika tidak ada. - + Download files in sequential order Unduh berkas dalam urutan - + Download first and last pieces first Unduh bagian-bagian pertama dan akhir terlebih dahulu - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Tentukan apakah "Buat torrent baru" dialog terbuka saat menambah torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Opsi nilai mungkin berisi via lingkungan variabel. Untuk opsi bernama 'parameter-nama', lingkungan variabel nama ialah 'QBT_PARAMETER_NAMA' (dengan huruf besar, '-' diganti dengan '_'). Untuk meneruskan nilai bendera, atur variabel menjadi '1' atau 'BENAR'. Untuk contoh, untuk menonatifkan splash screen:  - + Command line parameters take precedence over environment variables Perintah baris parameter akan mendahulukan lebih dari lingkungan variabel. - + Help Bantuan @@ -2895,17 +3009,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Kategori - + All Semua - + Uncategorized Tak Berkategori @@ -2939,13 +3053,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Lanjutkan torrent + Start torrents + + Stop torrents + + + + Resume torrents + Lanjutkan torrent + + Pause torrents - Jeda torrent + Jeda torrent @@ -2956,15 +3078,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Ubah... - + Reset Setel ulang + + + System + + CookiesDialog @@ -3005,12 +3132,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3018,7 +3145,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3037,23 +3164,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Hapus juga fail secara permanen + Hapus juga fail secara permanen - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Apakah Anda yakin ingin menghapus '%1' dari daftar transfer? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Apakah Anda yakin ingin menghapus torrent %1 dari daftar transfer? - + Remove Buang @@ -3066,12 +3197,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Unduh dari URL - + Add torrent links Tambah link torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Satu link per barisan (Link HTTP, Link Magnet dan infor-hash didukung) @@ -3081,12 +3212,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Unduh - + No URL entered Tiada URL dimasukan - + Please type at least one URL. Mohon masukan setidaknya satu URL @@ -3245,64 +3376,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Galat Mengurai: Berkas filter bukan berkas P2B PeerGuardian yang valid. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Mengunduh torrent... Source: "%1" - Trackers cannot be merged because it is a private torrent - + Pelacak tidak dapat digabungkan karena merupakan torrent privat - + Torrent is already present - Torrent sudah ada + Torrent sudah ada + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' sudah masuk di daftar transfer. Apakah Anda ingin menggabung pencari dari sumber baru? + Torrent '%1' sudah masuk di daftar transfer. Apakah Anda ingin menggabung pencari dari sumber baru? GeoIPDatabase - - + + Unsupported database file size. Ukuran berkas basis data tidak didukung. - + Metadata error: '%1' entry not found. Galat metadata: entri '%1' tidak ditemukan. - + Metadata error: '%1' entry has invalid type. Galat metadata: tipe entri '%1' tidak valid. - + Unsupported database version: %1.%2 Versi basis data tidak didukung: %1.%2 - + Unsupported IP version: %1 Versi IP tidak didukung: %1 - + Unsupported record size: %1 Ukuran perekaman tidak didukung: %1 - + Database corrupted: no data section found. Basis data rusak: bagian data tidak ditemukan. @@ -3310,17 +3468,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3361,36 +3519,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Telusuri... - + Reset Setel ulang - + Select icon - + Pilih ikon - + Supported image files Fail gambar yang didukung + + LegalNotice + + + Legal Notice + Pemberitahuan Hukum Legal + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent adalah program berbagi berkas. Ketika menjalankan torrent, data akan tersedia dan dibagikan dengan menunggah. Konten apapun yang dibagikan adalah resiko Anda sendiri. + + + + No further notices will be issued. + Tidak adap peringatan lanjutan yang akan diangkat. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + Tekan 'Enter' untuk melanjutkan... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 telah diblokir. Alasan: %2. - + %1 was banned 0.0.0.0 was banned %1 telah diblokir @@ -3399,710 +3585,770 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 adalah parameter baris perintah yang tidak dikenal. - - + + %1 must be the single command line parameter. %1 harus sebagai parameter baris perintah tunggal. - - You cannot use %1: qBittorrent is already running for this user. - Anda tidak bisa menggunakan %1: qBittorrent telah berjalan untuk pengguna ini. - - - + Run application with -h option to read about command line parameters. Jalankan aplikasi dengan opsi -h untuk membaca tentang parameter baris perintah. - + Bad command line Baris perintah buruk - + Bad command line: Baris perintah buruk: - + An unrecoverable error occurred. - + Terjadi masalah yang tidak dapat dipulihkan. - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent mengalami masalah yang tidak dapat dipulihkan. - - Legal Notice - Catatan Hukum + + You cannot use %1: qBittorrent is already running. + Anda tidak dapat menggunakan %1: qBittorrent masih sedang berjalan. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent adalah program berbagi berkas. Ketika menjalankan torrent, data akan tersedia dan dibagikan dengan menunggah. Konten apapun yang dibagikan adalah resiko Anda sendiri. + + Another qBittorrent instance is already running. + - - No further notices will be issued. - Tidak adap peringatan lanjutan yang akan diangkat. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - Press %1 key to accept and continue... - Tekan tombol %1 untuk menerima dan melanjutkan... + + Error when daemonizing. Reason: "%1". Error code: %2. + - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent adalah program berbagi berkas. Ketika Anda menjalankan sebuah torrent, datanya akan tersedia untuk orang lain dalam konteks pengunggahan. Konten apapun yang Anda bagi adalah sepenuhnya tanggung jawab Anda. - -Tidak ada pemberitahuan lebih lanjut yang akan dikeluarkan. - - - - Legal notice - Catatan hukum - - - - Cancel - Batal - - - - I Agree - Saya Setuju - - - - MainWindow + + + MainWindow &Edit &Sunting - + &Tools &Perkakas - + &File &Berkas - + &Help B&antuan - + On Downloads &Done Saat Unduhan &Selesai - + &View &Tampilan - + &Options... &Opsi... - &Resume - &Lanjutkan + &Lanjutkan - + &Remove &Hapus - + Torrent &Creator Pem&buat Torrent - - + + Alternative Speed Limits Batas Kecepatan Alternatif - + &Top Toolbar Bilah Ala&t Atas - + Display Top Toolbar Tampilkan Bilah Alat Atas - + Status &Bar &Bilah Status - + Filters Sidebar Saring Bilah-pinggir - + S&peed in Title Bar Ke&cepatan di Bilah Judul - + Show Transfer Speed in Title Bar Tampilkan Kecepatan Transfer di Bilah Judul - + &RSS Reader Pembaca &RSS - + Search &Engine M&esin Pencari - + L&ock qBittorrent K&unci qBittorrent - + Do&nate! Do&nasi! - - &Do nothing + + Sh&utdown System - + + &Do nothing + &Tidak melakukan apa-apa + + + Close Window Tutup Jendela - R&esume All - Lanjutkan S&emua + Lanjutkan S&emua - + Manage Cookies... Kelola Kuk... - + Manage stored network cookies Kelola kuki jaringan yang tersimpan - + Normal Messages Pesan Normal - + Information Messages Pesan Informasi - + Warning Messages Pesan Peringatan - + Critical Messages Pesan Kritis - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Tetapkan Batasan Kecepatan Global... - + Bottom of Queue Dasar dari Antrean - + Move to the bottom of the queue Pindah ke urutan paling bawah dari antrean - + Top of Queue Puncak dari Antrean - + Move to the top of the queue Pindah ke urutan paling atas dari antrean - + Move Down Queue Pindah Antrean ke Bawah - + Move down in the queue Pindah satu tingkat ke bawah dalam antrean - + Move Up Queue Pindah Antrean ke Atas - + Move up in the queue Pindah satu tingkat ke atas dalam antrean - + &Exit qBittorrent &Keluar qBittorrent - + &Suspend System &Suspensi Sistem - + &Hibernate System &Hibernasi Sistem - S&hutdown System - &Matikan Sistem + &Matikan Sistem - + &Statistics &Statistik - + Check for Updates Periksa Pemutakhiran - + Check for Program Updates Periksa Pemutakhiran Program - + &About Tent&ang - &Pause - Tang&guhkan + Tang&guhkan - P&ause All - Jed&a Semua + Jed&a Semua - + &Add Torrent File... T&ambah Berkas Torrent... - + Open Buka - + E&xit &Keluar - + Open URL Buka URL - + &Documentation &Dokumentasi - + Lock Kunci - - - + + + Show Tampilkan - + Check for program updates Periksa pemutakhiran program - + Add Torrent &Link... Tambah &Tautan Torrent... - + If you like qBittorrent, please donate! Jika Anda suka qBittorrent, silakan donasi! - - + + Execution Log Log Eksekusi - + Clear the password Kosongkan sandi - + &Set Password Tetapkan &Kata Sandi - + Preferences Preferensi - + &Clear Password &Kosongkan Kata Sandi - + Transfers Transfer - - + + qBittorrent is minimized to tray qBittorrent dikecilkan di tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. Tindakan ini akan mengubah pengaturan. Anda takkan diingatkan lagi. - + Icons Only Hanya Ikon - + Text Only Hanya Teks - + Text Alongside Icons Teks di Samping Ikon - + Text Under Icons Teks di Bawah Ikon - + Follow System Style Ikuti Gaya Sistem - - + + UI lock password Sandi kunci UI - - + + Please type the UI lock password: Mohon ketik sandi kunci UI: - + Are you sure you want to clear the password? Apakah Anda yakin ingin mengosongkan sandi? - + Use regular expressions Gunakan ekspresi biasa - - Search - Cari + + + Search Engine + Mesin Pencari - - Transfers (%1) - Transfer (%1) + + Search has failed + Pencarian telah gagal - Recursive download confirmation - Konfirmasi unduh rekursif + + Search has finished + - Never - Jangan Pernah + + Search + Cari + + + + Transfers (%1) + Transfer (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent sudah diperbaharui dan perlu dimulai-ulang untuk perubahan lagi efektif. - + qBittorrent is closed to tray qBittorrent ditutup ke tray - + Some files are currently transferring. Beberapa berkas saat ini ditransfer. - + Are you sure you want to quit qBittorrent? Apakah Anda yakin ingin keluar dari qBittorrent? - + &No &Tidak - + &Yes &Ya - + &Always Yes &Selalu Ya - + Options saved. Opsi tersimpan. - %1/s - s is a shorthand for seconds - %1/d + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Runtime Python hilang - + qBittorrent Update Available Tersedia Pemutakhiran qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python dibutuhkan untuk dapat menggunakan mesin pencari tetapi sepertinya belum dipasang. Apakah Anda ingin memasangnya sekarang? - + Python is required to use the search engine but it does not seem to be installed. Python dibutuhkan untuk dapat menggunakan mesin pencari tetapi sepertinya belum dipasang. - - + + Old Python Runtime - + A new version is available. Versi baru tersedia. - + Do you want to download %1? Apakah Anda ingin mengunduh %1? - + Open changelog... Membuka logperubahan... - + No updates available. You are already using the latest version. Pemutakhiran tidak tersedia. Anda telah menggunakan versi terbaru. - + &Check for Updates &Periksa Pemutakhiran - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Dijeda + + + Checking for Updates... Memeriksa Pemutakhiran... - + Already checking for program updates in the background Sudah memeriksa pemutakhiran program di latar belakang - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Galat unduh - Python setup could not be downloaded, reason: %1. Please install it manually. - Python tidak bisa diunduh, alasan: %1. + Python tidak bisa diunduh, alasan: %1. Mohon pasang secara manual. - - + + Invalid password Sandi tidak valid - + Filter torrents... - + Saring torrent... - + Filter by: - + Saring berdasarkan: - + The password must be at least 3 characters long - + Panjang password setidaknya harus 3 karakter. - - - + + + RSS (%1) RSS (%1) - + The password is invalid Sandi tidak valid - + DL speed: %1 e.g: Download speed: 10 KiB/s Kecepatan DL: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Kecepatan UL: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Sembunyikan - + Exiting qBittorrent Keluar qBittorrent - + Open Torrent Files Buka Berkas Torrent - + Torrent Files Berkas Torrent @@ -4163,133 +4409,133 @@ Mohon pasang secara manual. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI Mengalihkan ke magnet URI - + The remote host name was not found (invalid hostname) Nama host remote tidak ditemukan (nama host tidak sah) - + The operation was canceled Operasi dibatalkan - + The remote server closed the connection prematurely, before the entire reply was received and processed Server jarak jauh menutup koneksi sebelum waktunya, sebelum seluruh balasan diterima dan di proses - + The connection to the remote server timed out Koneksi ke server jarak jauh kehabisan waktu - + SSL/TLS handshake failed Salaman SSL/TLS gagal - + The remote server refused the connection Server jarak jauh menolak koneksi - + The connection to the proxy server was refused Koneksi ke server proxy ditolak - + The proxy server closed the connection prematurely Server proxy menutup koneksi sebelum waktunya - + The proxy host name was not found Nama host proxy tidak ditemukan - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Koneksi ke proxy terputus atau proxy tidak membalas tepat waktu saat meminta kiriman - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy memerlukan otentifikasi untuk menerima permintaan tetapi tidak menerima kredensial apapun diminta - + The access to the remote content was denied (401) Akses ke konten jarak jauh ditolak (401) - + The operation requested on the remote content is not permitted Operasi diminta ke konten jarak jauh tidak diizinkan - + The remote content was not found at the server (404) Konten jarak jauh tidak ditemukan di server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Server remote memerlukan otentifikasi untuk menyediakan konten tetapi kredensial yang ada tidak dapat diterima - + The Network Access API cannot honor the request because the protocol is not known Akses Jaringan API tidak bisa menerima permintaan karena protokol tidak diketahui - + The requested operation is invalid for this protocol Operasi diminta tidak sah untuk protokol ini - + An unknown network-related error was detected Kesalahan terkait jaringan yang tidak diketahui terdeteksi - + An unknown proxy-related error was detected Kesalahan terkait proxy yang tidak diketahui terdeteksi - + An unknown error related to the remote content was detected Kesalahan terkait konten jarak jauh yang tidak diketahui terdeteksi - + A breakdown in protocol was detected Kegagalan protokol terdeteksi - + Unknown error Galat tidak diketahui @@ -4297,7 +4543,12 @@ Mohon pasang secara manual. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5370,7 +5621,7 @@ Mohon pasang secara manual. Successfully updated IP geolocation database. - + Berhasil memperbarui database geolokasi IP @@ -5669,294 +5920,295 @@ Mohon pasang secara manual. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Tingkat Lanjut - + Customize UI Theme... - + Transfer List Daftar Transfer - + Confirm when deleting torrents Konfirmasi ketika menghapus torrent - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Gunakan warna baris belang - + Hide zero and infinity values Sembunyikan nilai nol dan tak terhingga - + Always Selalu - Paused torrents only - Hanya torrent yang dijeda + Hanya torrent yang dijeda - + Action on double-click Tindakan klik ganda - + Downloading torrents: Mengunduh torrent: - - Start / Stop Torrent - Jalankan / Hentikan Torrent + Jalankan / Hentikan Torrent - - + + Open destination folder Buka folder tujuan - - + + No action Tidak ada tindakan - + Completed torrents: Torrent komplet: - + Auto hide zero status filters - + Desktop Destop - + Start qBittorrent on Windows start up Mulai qBittorrent saat memulai Windows - + Show splash screen on start up Tampilkan layar sambutan saat memulai - + Confirmation on exit when torrents are active Konfirmasi saat keluar ketika torrent sedang aktif - + Confirmation on auto-exit when downloads finish Konfirmasi saat keluar-otomatis ketika unduhan selesai - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Tata letak konten torrent: - + Original Asli - + Create subfolder Buat subfolder - + Don't create subfolder Jangan buat subfolder - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue Tambahkan ke antrian teratas - + When duplicate torrent is being added - + Saat torrent duplikat ditambahkan - + Merge trackers to existing torrent - + Gabungkan pelacak ke torrent yang sudah ada + + + + Keep unselected files in ".unwanted" folder + Simpan file yang tidak dipilih ke folder ".unwanted" - + Add... Tambah... - + Options.. Opsi... - + Remove Buang - + Email notification &upon download completion Notifikasi surel dan di penyelesaian unduhan - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protokol koneksi rekanan: - + Any Apapun - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Mode gabungan - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering IP Filtering - + Schedule &the use of alternative rate limits Jadwalkan penggunaan ba&tas laju alternatif - + From: From start time Dari: - + To: To end time Ke: - + Find peers on the DHT network Temukan rekanan pada jaringan DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5965,140 +6217,188 @@ Wajibkan enkripsi: Hanya tersambung ke rekanan dengan enkripsi protokol Nonaktifkan enkripsi: Hanya tersambung ke rekanan tanpa enkripsi protokol - + Allow encryption Izinkan enkripsi - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Informasi lebih lanjut</a>) - + Maximum active checking torrents: - + &Torrent Queueing Antrean &Torrent - + When total seeding time reaches - + Saat jumlah waktu pembenihan terpenuhi - + When inactive seeding time reaches - + Saat waktu tidak aktif pembenihan terpenuhi - A&utomatically add these trackers to new downloads: - &Otomatis tambahkan tracker berikut ke unduhan baru: + &Otomatis tambahkan tracker berikut ke unduhan baru: - + RSS Reader Pembaca RSS - + Enable fetching RSS feeds Aktifkan pengambilan umpan RSS - + Feeds refresh interval: Interval penyegaran umpan: - + + Same host request delay: + + + + Maximum number of articles per feed: Jumlah maksimum artikel per umpan: - - - + + + min minutes min - + Seeding Limits Batasan Berbagi - Pause torrent - Jeda torrent + Jeda torrent - + Remove torrent Buang torrent - + Remove torrent and its files Buang torrent dan berkasnya - + Enable super seeding for torrent Aktifkan berbagi super untuk torrent - + When ratio reaches Saat rasio telah tercapai - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent Unggah Otomatis - + Enable auto downloading of RSS torrents Aktifkan pengunduhan otomatis RSS torrent - + Edit auto downloading rules... Sunting aturan pengunduhan otomatis... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes Unduh episode REPACK/PROPER - + Filters: Filter: - + Web User Interface (Remote control) Antarmuka Pengguna Web (Pengendali jarak jauh) - + IP address: Alamat IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6107,42 +6407,41 @@ Tetapkan alamat IPv4 atau IPv6. Anda dapat tetapkan "0.0.0.0" untuk se "::" untuk setiap alamat IPv6, atau "*" untuk keduanya IPv4 dan IPv6. - + Ban client after consecutive failures: - + Blokir klien setelah kegagalan berturut-turut: - + Never Jangan pernah - + ban for: diblokir karena: - + Session timeout: Waktu habis sesi: - + Disabled Nonaktif - Enable cookie Secure flag (requires HTTPS) - Aktifkan tanda kuki Aman (membutuhkan HTTPS) + Aktifkan tanda kuki Aman (membutuhkan HTTPS) - + Server domains: Domain server: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6155,441 +6454,494 @@ Anda dapat mengisi nama domain menggunakan Antarmuka Web server. Gunakan ';' untuk memisahkan banyak kata. Dapat menggunakan wildcard '*'. - + &Use HTTPS instead of HTTP &Gunakan HTTPS daripada HTTP - + Bypass authentication for clients on localhost Lewati otentikasi untuk klien pada lokalhost - + Bypass authentication for clients in whitelisted IP subnets Lewati otentikasi untuk klien dalam daftar putih IP subnet - + IP subnet whitelist... IP subnet daftar-putih... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Perbahar&ui nama domain dinamik saya - + Minimize qBittorrent to notification area Minimalkan qBittorrent ke area notifikasi - + + Search + Cari + + + + WebUI + + + + Interface Antarmuka - + Language: Bahasa: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Gaya ikon baki: - - + + Normal Normal - + File association Asosiasi berkas - + Use qBittorrent for .torrent files Gunakan qBittorrent untuk berkas .torrent - + Use qBittorrent for magnet links Gunakan qBittorrent untuk tautan magnet - + Check for program updates Periksa pembaruan program - + Power Management Pengelolaan Daya - + + &Log Files + + + + Save path: Jalur simpan: - + Backup the log file after: Cadangkan berkas catatan setelah: - + Delete backup logs older than: Hapus cadangan log yang lebih lama dari: - + + Show external IP in status bar + + + + When adding a torrent Ketika menambahkan torrent - + Bring torrent dialog to the front Tampilkan dialog torrent - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Juga hapus tambahan berkas .torrent yang dibatalkan - + Also when addition is cancelled Juga ketika penambahan dibatalkan - + Warning! Data loss possible! Peringatan! Ada kemungkinan kehilangan data! - + Saving Management Pengelola Penyimpanan - + Default Torrent Management Mode: Mode Baku Pengelolaan Torrent: - + Manual Manual - + Automatic Otomatis - + When Torrent Category changed: Ketika Kategori Torrent diubah: - + Relocate torrent Cari-ulang torrent - + Switch torrent to Manual Mode Pindahkan torrent ke Mode Manual - - + + Relocate affected torrents Cari-ulang torrent berpengaruh - - + + Switch affected torrents to Manual Mode Ganti torrent berpengaruh ke Mode Manual - + Use Subcategories Gunakan Subkategori - + Default Save Path: Tempat penyimpanan biasa: - + Copy .torrent files to: Salin berkas .torrent ke: - + Show &qBittorrent in notification area Tampilkan &qBittorrent di dalam area notifikasi - &Log file - Berkas &Log + Berkas &Log - + Display &torrent content and some options Tampilkan konten &torrent dan beberapa opsi - + De&lete .torrent files afterwards Hap&us berkas .torrent kemudian - + Copy .torrent files for finished downloads to: Salin berkas .torrent untuk menyelesaikan unduhan ke: - + Pre-allocate disk space for all files Pre-alokasi ruang disk untuk semua berkas - + Use custom UI Theme Gunakan Tema UI khusus - + UI Theme file: Berkas Tema UI: - + Changing Interface settings requires application restart Mengubah pengaturan antarmuka membutuhkan aplikasi dimulai ulang - + Shows a confirmation dialog upon torrent deletion Tampilkan dialog konfirmasi saat menghapus torrent - - + + Preview file, otherwise open destination folder Pratinjau berkas, atau buka folder tujuan - - Show torrent options - Tampilkan opsi torrent + Tampilkan opsi torrent - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Tutup qBittorrent ke area notifikasi - + Monochrome (for dark theme) Monokrom (untuk tema gelap) - + Monochrome (for light theme) Monokrom (untuk tema terang) - + Inhibit system sleep when torrents are downloading Cegah sistem tertidur saat mengunduh torrent - + Inhibit system sleep when torrents are seeding Cegah sistem tertidur saat membenih torrent - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days hari - + months Delete backup logs older than 10 months bulan - + years Delete backup logs older than 10 years tahun - + Log performance warnings - + Log peringatan performa - The torrent will be added to download list in a paused state - Torrent akan ditambahkan ke daftar unduh dalam keadaan dijeda + Torrent akan ditambahkan ke daftar unduh dalam keadaan dijeda - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Jangan mulai mengunduh secara otomatis - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Tambahkan ekstensi .!qB ke berkas yang belum selesai - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog Izinkan dialog unduhan rekursif - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None Tidak ada - - + + Metadata received Metadata diterima - - + + Files checked File sudah diperiksa - + Ask for merging trackers when torrent is being added manually - + Tanya untuk menggabung pelacak ketika torrent ditambahkan secara manual - + Use another path for incomplete torrents: Gunakan jalur lain untuk torrent yang belum selesai: - + Automatically add torrents from: Otomatis menambahkan torrent dari: - + Excluded file names Tidak termasuk nama file - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6606,841 +6958,906 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Penerima - + To: To receiver Ke: - + SMTP server: Server SMTP: - + Sender Pengirim - + From: From sender Dari: - + This server requires a secure connection (SSL) Server ini membutuhkan sambungan aman (SSL) - - + + Authentication Otentikasi - - - - + + + + Username: Nama pengguna: - - - - + + + + Password: Sandi: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window Tampilkan jendela konsol - + TCP and μTP TCP dan μTP - + Listening Port Memperhatikan port - + Port used for incoming connections: Port yang digunakan untuk sambungan masuk: - + Set to 0 to let your system pick an unused port - + Random Acak - + Use UPnP / NAT-PMP port forwarding from my router Gunakan penerusan port UPnP / NAT-PMP dari router saya - + Connections Limits Batasan Sambungan - + Maximum number of connections per torrent: Jumlah maksimum sambungan per torrent: - + Global maximum number of connections: Jumlah maksimum sambungan global: - + Maximum number of upload slots per torrent: Jumlah maksimum slot unggah per torrent: - + Global maximum number of upload slots: Jumlah maksimum slot unggah global: - + Proxy Server Server Proksi - + Type: Tipe: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Kalau tidak, server proksi hanya digunakan untuk koneksi tracker - + Use proxy for peer connections Gunakan proksi untuk koneksi sejawat - + A&uthentication &Otentikasi - + Info: The password is saved unencrypted Info: Sandi disimpan tanpa enkripsi - + Filter path (.dat, .p2p, .p2b): Jalur filter (.dat, .p2p, .p2b): - + Reload the filter Muat ulang filter - + Manually banned IP addresses... Secara manual memblokir alamat IP... - + Apply to trackers Terapkan ke pelacak - + Global Rate Limits Batas Laju Global - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Unggah: - - + + Download: Unduh: - + Alternative Rate Limits Batas Laju Alternatif - + Start time Waktu mulai - + End time Waktu selesai - + When: Kapan: - + Every day Setiap hari - + Weekdays Hari kerja - + Weekends Akhir pekan - + Rate Limits Settings Pengaturan Batas Laju - + Apply rate limit to peers on LAN Terapkan batas laju ke rekanan pada LAN - + Apply rate limit to transport overhead Tentukan nilai batas untuk transport diatas - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Terapkan batas laju ke protokol µTP - + Privacy Privasi - + Enable DHT (decentralized network) to find more peers Aktifkan DHT (jaringan terdesentralisasi) untuk menemukan lebih banyak rekanan - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Pertukaran rekanan dengan aplikasi Bittorrent yang kompatibel (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Aktifkan Pertukaran Rekanan (PeX) untuk menemukan lebih banyak rekanan - + Look for peers on your local network Temukan rekanan di jaringan lokal Anda - + Enable Local Peer Discovery to find more peers Aktifkan Pencarian Rekan Lokal untuk menemukan lebih banyak rekanan - + Encryption mode: Mode enkripsi: - + Require encryption Enkripsi wajib - + Disable encryption Enkripsi nonaktif - + Enable when using a proxy or a VPN connection Aktifkan saat menggunakan proksi atau koneksi VPN - + Enable anonymous mode Aktifkan mode anonim - + Maximum active downloads: Unduhan aktif maksimum: - + Maximum active uploads: Unggahan aktif maksimum: - + Maximum active torrents: Torrent aktif maksimum: - + Do not count slow torrents in these limits Jangan hitung torrent lambat dari limit ini - + Upload rate threshold: Nilai ambang unggah: - + Download rate threshold: Nilai ambang unduh: - - - + + + + sec seconds det - + Torrent inactivity timer: Durasi torrent tanpa aktifitas: - + then lalu - + Use UPnP / NAT-PMP to forward the port from my router Gunakan UPnP / NAT-PMP untuk meneruskan port dari router saya - + Certificate: Sertifikat: - + Key: Kunci: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informasi tentang sertifikat</a> - + Change current password Ubah sandi saat ini - Use alternative Web UI - Gunakan UI Web alternatif + Gunakan UI Web alternatif - + Files location: Lokasi berkas: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Keamanan - + Enable clickjacking protection Izinkan perlindungan klikjacking - + Enable Cross-Site Request Forgery (CSRF) protection Aktifkan proteksi Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers Tambahkan kustom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: Daftar proxy terpercaya: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Layanan: - + Register Daftar - + Domain name: Nama domain: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Dengan mengaktifkan opsi ini, Anda bisa <strong>secara permanen kehilangan</strong> berkas .torrent Anda! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Jika Anda mengaktifkan opsi kedua (&ldquo;Juga ketika tambahan dibatalkan&rdquo;) berkas .torrent <strong>akan dihapus</strong>meski jika anda pencet&ldquo;<strong>Batal</strong>&rdquo; didalam &ldquo;Tambahkan torrent&rdquo; dialog - + Select qBittorrent UI Theme file Pilih berkas Tema UI qBittorrent - + Choose Alternative UI files location Pilih lokasi berkas UI Alternatif - + Supported parameters (case sensitive): Parameter yang didukung (sensitif besar kecil huruf): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. Kondisi penghentian tidak ditentukan. - + Torrent will stop after metadata is received. Torrent akan berhenti setelah metadata diterima. - - Torrents that have metadata initially aren't affected. - Torrent yang sudah memiliki metadata tidak akan terpengaruh. - - - + Torrent will stop after files are initially checked. Torrent akan berhenti setelah berkas diperiksa lebih dahulu. - + This will also download metadata if it wasn't there initially. Ini juga akan mengunduh metadata jika sebelumnya tidak ada. - + %N: Torrent name %N: Nama torrent - + %L: Category %L: Kategori - + %F: Content path (same as root path for multifile torrent) %F: Jalur konten (sama dengan jalur root untuk torrent multi-berkas) - + %R: Root path (first torrent subdirectory path) %R: Jalur root (jalur subdirektori torrent pertama) - + %D: Save path %D: Jalur simpan - + %C: Number of files %C: Jumlah berkas - + %Z: Torrent size (bytes) %Z: Ukuran torrent (bita) - + %T: Current tracker %T: Pelacak saat ini - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: Merangkum parameter dengan tanda kutipan untuk menghindari teks terpotong di ruang putih (m.s., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nihil) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Satu torrent akan menentukan lambat jika nilai unduh dan unggah bertahan dibawah nilai ini untuk "Timer Torrent ketidakaktifan" detik - + Certificate Sertifikat - + Select certificate Pilih sertifikat - + Private key Kunci privat - + Select private key Pilih kunci privat - + + WebUI configuration failed. Reason: %1 + Konfigurasi WebUI gagal. Reason: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Pilih folder untuk dimonitor - + Adding entry failed Gagal menambahkan entri - - Location Error - Galat Lokasi + + The WebUI username must be at least 3 characters long. + - - The alternative Web UI files location cannot be blank. - Lokasi berkas UI Web tidak boleh kosong. + + The WebUI password must be at least 6 characters long. + + + + + Location Error + Galat Lokasi - - + + Choose export directory Pilih direktori ekspor - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Pilih direktori simpan - + + Torrents that have metadata initially will be added as stopped. + Torrent yang dilengkapi metadata akan ditambahkan dan ditandai sebagai dihentikan. + + + Choose an IP filter file Pilih berkas filter IP - + All supported filters Semua filter yang didukung - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Galat penguraian - + Failed to parse the provided IP filter Gagal mengurai filter IP yang diberikan - + Successfully refreshed Berhasil disegarkan - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Berhasil mengurai filter IP yang diberikan: %1 aturan diterapkan. - + Preferences Preferensi - + Time Error Galat Waktu - + The start time and the end time can't be the same. Waktu mulai dan berakhir tidak boleh sama. - - + + Length Error Galat Panjang - - - The Web UI username must be at least 3 characters long. - Panjang nama pengguna Web UI minimal harus 3 karakter. - - - - The Web UI password must be at least 6 characters long. - Password Web UI harus setidaknya 6 karakter atau lebih. - PeerInfo - + Unknown Tidak diketahui - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection Koneksi masuk - + Peer from DHT - + Rekan dari DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic traffic terenkripsi - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7452,7 +7869,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + Alamat/IP @@ -7596,7 +8013,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Rekanan "%1" diblokir secara manual - + N/A N/A @@ -7619,7 +8036,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Daftar sejawat ditambahkan (satu per baris): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7660,27 +8077,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Berkas dalam potongan ini: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information Tunggu sampai metadata menjadi tersedia untuk melihat informasi mendetail - + Hold Shift key for detailed information Tahan tombol Shift untuk informasi mendetail @@ -7693,58 +8110,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Cari plugin - + Installed search plugins: Cari plugin terpasang: - + Name Nama - + Version Versi - + Url URL - - + + Enabled Aktif - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Peringatan: Pastikan untuk memastikan hukum hak cipta yang berlaku di negara Anda saat mengunduh torrent dari mesin pencari di bawah ini. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Pasang yang baru - + Check for updates Cek pembaruan - + Close Tutup - + Uninstall Copot @@ -7864,17 +8281,17 @@ Plugin ini semua dinonaktifkan. Sumber plugin - + Search plugin source: Cari sumber plugin: - + Local file Berkas lokal - + Web link Tautan Web @@ -7915,47 +8332,47 @@ Plugin ini semua dinonaktifkan. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Pratinjau - + Name Nama - + Size Ukuran - + Progress Progres - + Preview impossible Preview tidak bisa - + Sorry, we can't preview this file: "%1". - + Maaf, tidak dapat mempratinjau file berikut: "%1". - + Resize columns Ubah ukuran kolom - + Resize all non-hidden columns to the size of their contents Ubah ukuran semua kolom yang tidak disembunyikan sesuai ukuran konten kolom @@ -7968,27 +8385,27 @@ Plugin ini semua dinonaktifkan. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8029,12 +8446,12 @@ Plugin ini semua dinonaktifkan. PropertiesWidget - + Downloaded: Terunduh: - + Availability: Ketersediaan: @@ -8049,53 +8466,53 @@ Plugin ini semua dinonaktifkan. Transfer - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Lama Aktif: - + ETA: ETA: - + Uploaded: Terunggah: - + Seeds: Pembibitan: - + Download Speed: Kecepatan Unduh: - + Upload Speed: Kecepatan Unggah: - + Peers: Rekanan: - + Download Limit: Batas Unduh: - + Upload Limit: Batas Unggah: - + Wasted: Terbuang: @@ -8105,193 +8522,249 @@ Plugin ini semua dinonaktifkan. Koneksi: - + Information Informasi - + Info Hash v1: Informasi HASH v1: - + Info Hash v2: Informasi Hash v2: - + Comment: Komentar: - + Select All Pilih Semua - + Select None Pilih Nihil - + Share Ratio: Rasio Berbagi: - + Reannounce In: Umumkan Ulang Dalam: - + Last Seen Complete: Komplet Terlihat Terakhir: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Total Ukuran: - + Pieces: Bagian: - + Created By: Dibuat Oleh: - + Added On: Ditambahkan Pada: - + Completed On: Komplet Pada: - + Created On: Dibuat Pada: - + + Private: + + + + Save Path: Jalur Simpan: - + Never Jangan Pernah - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (memiliki %3) - - + + %1 (%2 this session) %1 (%2 sesi ini) - - + + + N/A T/A - + + Yes + Ya + + + + No + Tidak + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (dibibit selama %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 rerata.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Bibit Web baru + Bibit Web baru - Remove Web seed - Buang bibit Web + Buang bibit Web - Copy Web seed URL - Salin URL bibit Web + Salin URL bibit Web - Edit Web seed URL - Sunting URL bibit Web + Sunting URL bibit Web - + Filter files... Filter berkas... - - Speed graphs are disabled + + Add web seed... - + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + + Speed graphs are disabled + Grafik kecepatan dinonaktifkan + + + You can enable it in Advanced Options - New URL seed New HTTP source - Bibit URL baru + Bibit URL baru - New URL seed: - Bibit URL baru: + Bibit URL baru: - - This URL seed is already in the list. - Bibit URL ini telah ada di dalam daftar. + Bibit URL ini telah ada di dalam daftar. - + Web seed editing Penyuntingan bibit web - + Web seed URL: URL bibit web: @@ -8310,22 +8783,22 @@ Plugin ini semua dinonaktifkan. Tidak dapat menyimpan data RSS AutoDownloader di %1. Galat: %2 - + Invalid data format Format data tidak valid - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Tidak dapat mengakses aturan RSS AutoDownloader di %1. Galat: %2 @@ -8333,22 +8806,22 @@ Plugin ini semua dinonaktifkan. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Gagal mengunduh RSS memasukkan di '%1'. Penyebab: %2 - + RSS feed at '%1' updated. Added %2 new articles. Masukan RSS di '%1' diperbaharui. Tambahkan %2 pasal baru. - + Failed to parse RSS feed at '%1'. Reason: %2 Gagal menguraikan RSS memasukkan di '%1'. Penyebab: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8384,12 +8857,12 @@ Plugin ini semua dinonaktifkan. RSS::Private::Parser - + Invalid RSS feed. Masukkan RSS tidak sah. - + %1 (line: %2, column: %3, offset: %4). %1 (baris: %2, kolom: %3, imbang: %4). @@ -8397,99 +8870,99 @@ Plugin ini semua dinonaktifkan. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. Masukkan RSS diberikan URL sudah ada: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. Tidak dapat memindah folder akar. - - + + Item doesn't exist: %1. Item tidak ada: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. Tidak bisa menghapus folder root - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Jalur item RSS tidak benar: %1. - + RSS item with given path already exists: %1. Item RSS dengan jalur diberikan sudah ada: %1. - + Parent folder doesn't exist: %1. Folder induk tidak ditemukan: %1. @@ -8513,8 +8986,8 @@ Plugin ini semua dinonaktifkan. - - + + Mark items read Tandai item sudah dibaca @@ -8539,132 +9012,132 @@ Plugin ini semua dinonaktifkan. Torrent: (klik dua kali untuk mengunduh) - - + + Delete Hapus - + Rename... Ubah nama... - + Rename Ubah nama - - + + Update Perbarui - + New subscription... Langganan baru... - - + + Update all feeds Perbarui semua umpan - + Download torrent Unduh torrent - + Open news URL Buka URL berita - + Copy feed URL Salin URL umpan - + New folder... Folder baru... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Silakan pilih nama folder - + Folder name: Nama folder: - + New folder Folder baru - - + + Please type a RSS feed URL Silakan ketik URL umpan RSS - - + + Feed URL: URL Umpan: - + Deletion confirmation Konfirmasi penghapusan - + Are you sure you want to delete the selected RSS feeds? Anda yakin ingin menghapus masukkan terpilih RSS? - + Please choose a new name for this RSS feed Mohon tentukan nama baru untuk memasukkan RSS - + New feed name: Nama masukkan baru: - + Rename failed Rubah nama gagal - + Date: Tanggal: - + Feed: - + Author: Penulis: @@ -8672,38 +9145,38 @@ Plugin ini semua dinonaktifkan. SearchController - + Python must be installed to use the Search Engine. Python harus terpasang untuk menggunakan mesin pencari - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. Semua plugin telah paling baru. - + Updating %1 plugins Memperbarui %1 plugin - + Updating plugin %1 - + Memperbarui plugin %1 - + Failed to check for plugin updates: %1 Gagal melakukan pengecekan pembaruan pengaya: %1 @@ -8728,32 +9201,32 @@ Plugin ini semua dinonaktifkan. Set minimum and maximum allowed number of seeders - + Tetapkan jumlah minimum dan maksimum benih yang diizinkan Minimum number of seeds - + Jumlah benih minimum Maximum number of seeds - + Jumlah benih maksimum Set minimum and maximum allowed size of a torrent - + Tetapkan jumlah minimum dan maksimum torrent yang diizinkan Minimum torrent size - + Jumlah torrent minimum Maximum torrent size - + Jumlah torrent maksimum @@ -8778,132 +9251,146 @@ Plugin ini semua dinonaktifkan. Ukuran: - + Name i.e: file name Nama - + Size i.e: file size Ukuran - + Seeders i.e: Number of full sources Benih - + Leechers i.e: Number of partial sources Lintah - Search engine - Mesin pencari + Mesin pencari - + Filter search results... Uraikan hasil pencarian - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Hasil (menampilkan <i>%1</i> dari <i>%2</i>): - + Torrent names only Hanya nama torrent - + Everywhere Dimana saja - + Use regular expressions Gunakan ekspresi reguler - + Open download window - + Download Unduh - + Open description page Buka halaman deskripsi - + Copy Salin - + Name Nama - + Download link Tautan unduhan - + Description page URL - + URL halaman deskripsi - + Searching... Mencari... - + Search has finished Pencarian sudah selesai - + Search aborted Pencarian dibatalkan - + An error occurred during search... Ada terjadi galat saat pencarian... - + Search returned no results Pencarian kembali tanpa hasil - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Keterlihatan Kolom - + Resize columns Ubah ukuran kolom - + Resize all non-hidden columns to the size of their contents Ubah ukuran semua kolom yang tidak disembunyikan sesuai ukuran konten kolom @@ -8911,104 +9398,104 @@ Plugin ini semua dinonaktifkan. SearchPluginManager - + Unknown search engine plugin file format. Format berkas plugin mesin pencari tidak diketahui. - + Plugin already at version %1, which is greater than %2 - + Plugin berada di versi %1, yang mana lebih baru dari %2 - + A more recent version of this plugin is already installed. Versi lebih sekarang plugin sudah terpasang. - + Plugin %1 is not supported. - - + + Plugin is not supported. Plugin tidak didukung. - + Plugin %1 has been successfully updated. - + All categories Semua kategori - + Movies Movie - + TV shows TV show - + Music Musik - + Games Games - + Anime Anime - + Software Software - + Pictures Gambar - + Books Buku - + Update server is temporarily unavailable. %1 Server memperbaharui sementara tidak tersedia. %1 - - + + Failed to download the plugin file. %1 Gagal mengunduh berkas plugin. %1 - + Plugin "%1" is outdated, updating to version %2 - + Plugin "%1" sudah lawas, perbarui ke versi %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') Mencari plugin '%1' terdapat kesalahan versi string ('%2') @@ -9018,114 +9505,153 @@ Plugin ini semua dinonaktifkan. - - - - Search Cari - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Tidak ada ditemukan plugin terpasang dipencarian. Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasang lebih. - + Search plugins... Plugin pencarian... - + A phrase to search for. Kata/frasa yang akan dicari. - + Spaces in a search term may be protected by double quotes. Kata/frasa berspasi bisa dibuka dan ditutup dengan tanda petik ganda. - + Example: Search phrase example Contoh: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: mencari <b>foo bar</b> - + All plugins Semua plugin - + Only enabled Hanya izinkan - + + + Invalid data format. + Format data tidak valid. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: mencari <b>foo</b> dan <b>bar</b> - + + Refresh + + + + Close tab Tutup tab - + Close all tabs Tutup seluruh tab - + Select... Pilih... - - - + + Search Engine Mesin Pencari - + + Please install Python to use the Search Engine. Mohon pasang Python untuk menggunakan Mesin Pencari. - + Empty search pattern Pola pencarian kosong - + Please type a search pattern first Mohon ketik pola pencarian telebih dahulu - + + Stop Hentikan - Search has finished - Pencarian telah selesai + Pencarian telah selesai - Search has failed - Pencarian telah gagal + Pencarian telah gagal + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9238,34 +9764,34 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa - + Upload: Unggahan: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Unduhan: - + Alternative speed limits Batas kecepatan alternatif @@ -9457,32 +9983,32 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa Rata-rata waktu dalam antrian: - + Connected peers: Sejawat tersambung: - + All-time share ratio: Ratio waktu-semua pembagian: - + All-time download: Semua-waktu unduh: - + Session waste: Sesi terbuang: - + All-time upload: Semua-waktu unggah: - + Total buffer size: Total ukuran buffer: @@ -9497,12 +10023,12 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa Pekerjaan I/O yang diantrekan: - + Write cache overload: Lewahbeban penulisan tembolok: - + Read cache overload: Lewahbeban pembacaan tembolok: @@ -9521,51 +10047,67 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa StatusBar - + Connection status: Status koneksi: - - + + No direct connections. This may indicate network configuration problems. Tidak ada koneksi langsung. Ini mungkin menunjukkan masalah konfigurasi jaringan. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 jalinan - + qBittorrent needs to be restarted! qBittorrent perlu dimulai ulang! - - - + + + Connection Status: Status Koneksi: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Luring. Ini biasanya berarti bahwa qBittorent gagal mendengarkan port yang dipilih untuk koneksi masuk. - + Online Daring - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klik untuk beralih ke batas kecepatan alternatif - + Click to switch to regular speed limits Klik untuk beralih ke batas kecepatan reguler @@ -9594,14 +10136,22 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa Selesai (0) - Resumed (0) - Dilanjutkan (0) + Dilanjutkan (0) - Paused (0) - Dijeda (0) + Dijeda (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9636,7 +10186,7 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa Moving (0) - + Memindahkan (0) @@ -9663,25 +10213,42 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa Completed (%1) Selesai (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Dijeda (%1) + Dijeda (%1) Moving (%1) - + Memindahkan (%1) - Resume torrents - Lanjutkan torrent + Lanjutkan torrent - Pause torrents - Tangguhkan torrent + Tangguhkan torrent @@ -9689,9 +10256,8 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa Hilangkan Torrent - Resumed (%1) - Dilanjutkan (%1) + Dilanjutkan (%1) @@ -9732,17 +10298,17 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa TagFilterModel - + Tags Tag - + All Semua - + Untagged Tak Bertag @@ -9750,52 +10316,64 @@ Klik tombol "Temukan plugin" tepat dibawah bagian jendela untuk memasa TagFilterWidget - + Add tag... Tambah tag... - + Remove tag Buang tag - + Remove unused tags Buang tag yang tidak digunakan - Resume torrents - Lanjutkan torrent + Lanjutkan torrent - Pause torrents - Jeda torrent + Jeda torrent - + Remove torrents Hilangkan Torrent - New Tag - Tag Baru + Tag Baru + + + + Start torrents + - + + Stop torrents + + + + Tag: Tag: - + + Add tag + + + + Invalid tag name Nama tag tidak valid - + Tag name '%1' is invalid Nama tag '%1' tidak valid @@ -9935,32 +10513,32 @@ Mohon memilih nama lain dan coba lagi. TorrentContentModel - + Name Nama - + Progress Progres - + Download Priority Prioritas Unduh - + Remaining Sisa - + Availability Ketersediaan - + Total Size Total Ukuran @@ -10005,102 +10583,120 @@ Mohon memilih nama lain dan coba lagi. TorrentContentWidget - + Rename error Galat rubah nama - + Renaming Mengganti nama - + New name: Nama baru: - + Column visibility Keterlihatan kolom - + Resize columns Ubah ukuran kolom - + Resize all non-hidden columns to the size of their contents Ubah ukuran semua kolom yang tidak disembunyikan sesuai ukuran konten kolom - + Open Buka - + Open containing folder - + Buka folder isi - + Rename... Ubah nama... - + Priority Prioritas - - + + Do not download Jangan mengunduh - + Normal Normal - + High Tinggi - + Maximum Maksimum - + By shown file order Tampikan dalam urutan berkas - + Normal priority Prioritas normal - + High priority Prioritas tinggi - + Maximum priority Prioritas maksimum - + Priority by shown file order Prioritaskan tampilan urutan berkas + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10125,13 +10721,13 @@ Mohon memilih nama lain dan coba lagi. - + Select file Pilih Berkas - + Select folder Pilih folder @@ -10156,67 +10752,19 @@ Mohon memilih nama lain dan coba lagi. Ukuran bagian: - + Auto Otomatis - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB + + Calculate number of pieces: + Hitung banyaknya bagian: - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - - - - Calculate number of pieces: - Hitung banyaknya bagian: - - - - Private torrent (Won't distribute on DHT network) - Torrent pribadi (takkan mendistribusi di jaringan DHT) + + Private torrent (Won't distribute on DHT network) + Torrent pribadi (takkan mendistribusi di jaringan DHT) @@ -10254,92 +10802,83 @@ Mohon memilih nama lain dan coba lagi. Lapangan - + You can separate tracker tiers / groups with an empty line. Anda dapat memisahkan tingkatan pelacak / grup dengan baris kosong. - + Web seed URLs: URL Benih Web: - + Tracker URLs: URL Pencari: - + Comments: Komentar: - + Source: Sumber: - + Progress: Progres - + Create Torrent Buat torrent - - + + Torrent creation failed Pembuatan torrent gagal. - + Reason: Path to file/folder is not readable. Penyebab: Jalur berkas/folder tidak terbaca. - + Select where to save the new torrent Pilih dimana tempat penyimpanan torrent baru - + Torrent Files (*.torrent) Berkas Torrent (*.torrent) - - Reason: %1 - Penyebab: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Penyebab: Pembuatan torrent tidak sah. Tidak akan dimasukan ke daftar unduhan. + Penambahan torrent gagal - + Torrent creator Pembuat torrent - + Torrent created: Torrent dibuat: @@ -10347,32 +10886,32 @@ Mohon memilih nama lain dan coba lagi. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10380,27 +10919,27 @@ Mohon memilih nama lain dan coba lagi. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + File magnet terlalu besar. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Menolak file torrent yang gagal: %1 - + Watching folder: "%1" Mengamati folder: "%1" @@ -10408,14 +10947,8 @@ Mohon memilih nama lain dan coba lagi. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Metadata tidak valid + Metadata tidak valid @@ -10446,127 +10979,203 @@ Mohon memilih nama lain dan coba lagi. Gunakan path lain untuk torrent yang tidak lengkap - + Category: Kategori - + + Torrent Share Limits + + + Torrent speed limits - Batasan kecepatan torrent + Batasan kecepatan torrent - + Download: Unduhan: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits - + Upload: Unggahan: - Torrent share limits - + Batas berbagi torrent - Use global share limit - Gunakan batas berbagi global + Gunakan batas berbagi global - Set no share limit - Atur tiada limit bagi + Atur tiada limit bagi - Set share limit to - Atur limit bagi ke + Atur limit bagi ke - ratio - rasio + rasio - total minutes - + jumlah menit - inactive minutes - + menit tidak aktif - + Disable DHT for this torrent Nonaktifkan DHT untuk torrent saat ini - + Download in sequential order Unduh berurutan - + Disable PeX for this torrent Nonaktifkan PeX untuk torrent saat ini - + Download first and last pieces first Unduh bagian-bagian pertama dan akhir terlebih dahulu - + Disable LSD for this torrent Nonaktifkan LSD untuk torrent saat ini - + Currently used categories - - + + Choose save path Pilih jalur simpan - + Not applicable to private torrents Tidak berlaku untuk torrent pribadi - No share limit method selected - Tidak ada batasan berbagi metode terpilih + Tidak ada batasan berbagi metode terpilih - Please select a limit method first - Mohon pilih metode limit dahulu + Mohon pilih metode limit dahulu + + + + TorrentShareLimitsWidget + + + + + + Default + Bawaan + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Buang torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Aktifkan berbagi super untuk torrent + + + + Ratio: + @@ -10574,35 +11183,39 @@ Mohon memilih nama lain dan coba lagi. Torrent Tags - + Penanda Torrent - New Tag - Tag Baru + Tag Baru + Add tag + + + + Tag: Tag: - + Invalid tag name Nama tag tidak valid - + Tag name '%1' is invalid. - + Nama penanda '%1' tidak valid. - + Tag exists Tag sudah ada - + Tag name already exists. Nama tag sudah ada. @@ -10610,115 +11223,130 @@ Mohon memilih nama lain dan coba lagi. TorrentsController - + Error: '%1' is not a valid torrent file. Galat: '%1' bukan berkas torrent yang valid. - + Priority must be an integer Prioritas harus sebuah integer - + Priority is not valid Prioritas tidak sah - + Torrent's metadata has not yet downloaded - + File IDs must be integers ID berkas harus integer - + File ID is not valid ID berkas tidak sah - - - - + + + + Torrent queueing must be enabled Antrian torrent harus diaktifkan - - + + Save path cannot be empty Jalur penyimpanan tidak bisa kosong - - + + Cannot create target directory - - + + Category cannot be empty Kategori tidak bisa kosong - + Unable to create category Tidak bisa membuat kategori - + Unable to edit category Tidak bisa mengedit kategori - + Unable to export torrent file. Error: %1 - + Cannot make save path Tidak bisa membuat jalur penyimpanan - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Parameter 'urutan' tidak sah - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Tidak bisa menulis jalur penyimpanan - + WebUI Set location: moving "%1", from "%2" to "%3" Lokasi Set WebUI: memindahkan "%1", dari "%2" ke "%3" - + Incorrect torrent name Nama torrent salah - - + + Incorrect category name Kesalahan kategori nama @@ -10744,249 +11372,207 @@ Mohon memilih nama lain dan coba lagi. TrackerListModel - - + Working - Berjalan + Berjalan - + Disabled - Nonaktif + Nonaktif - + Disabled for this torrent - Nonaktifkan untuk torrent saat ini + Nonaktifkan untuk torrent saat ini - + This torrent is private - Torrent ini pribadi + Torrent ini pribadi - + N/A - + N/A - + Updating... - Membarui... + Membarui... - + Not working - Tak berjalan + Tak berjalan - + Tracker error - + Pelacak mengalami masalah - + Unreachable - + Tidak terjangkau - + Not contacted yet - Belum terhubung + Belum terhubung - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tingkatan + + BT Protocol + - - Protocol + + Next Announce - - Status - Status + + Min Announce + + + + Invalid status! + Status tidak valid! + + + + Tier + Tingkatan + + + Protocol + Protokol - Peers - + Status + Status - Seeds - Benih + Peers + Rekanan - Leeches - + Seeds + Benih - Times Downloaded - + Leeches + Pengunduh - Message - Pesan + Times Downloaded + Jumlah diunduh - Next announce - + Message + Pesan - - Min announce - + Next announce + Pengumuman selanjutnya - v%1 - + v%1 TrackerListWidget - Working - Berjalan - - - Disabled - Nonaktif - - - Disabled for this torrent - Nonaktifkan untuk torrent saat ini - - - + This torrent is private Torrent ini pribadi - Updating... - Membarui... - - - Not working - Tak berjalan - - - Not contacted yet - Belum terhubung - - - N/A - N/A - - - + Tracker editing Pengubahan Pencari - + Tracker URL: URL Pencari: - - + + Tracker editing failed Pengubahan pencari gagal - + The tracker URL entered is invalid. URL Pencari yang dimasukkan tidak sah. - + The tracker URL already exists. URL pencari sudah ada. - + Edit tracker URL... Ubah URL pelacak... - + Remove tracker Hapus pencari - + Copy tracker URL Salin URL pencari - + Force reannounce to selected trackers Paksa umumkan-ulang ke pencari terpilih - + Force reannounce to all trackers Paksa umumkan-ulang ke semua pencari - Tier - Tingkatan - - - URL - URL - - - Status - Status - - - Seeds - Benih - - - + Resize columns Ubah ukuran kolom - + Resize all non-hidden columns to the size of their contents Ubah ukuran semua kolom yang tidak disembunyikan sesuai ukuran konten kolom - Peers - Sejawat - - - + Add trackers... Tambah pelacak... - Message - Pesan - - - + Column visibility Keterlihatan Kolom @@ -11004,37 +11590,37 @@ Mohon memilih nama lain dan coba lagi. Daftar pencari yang ditambahkan (satu per baris): - + µTorrent compatible list URL: Daftar URL kompatibel µTorrent: - + Download trackers list - + Unduh daftar pelacak - + Add Tambah - + Trackers list URL error - + URL daftar pelacak mengalami masalah - + The trackers list URL cannot be empty - + URL daftar pelacak tidak bisa kosong - + Download trackers list error - + Unduh daftar pelacak mengalami masalah - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11042,83 +11628,70 @@ Mohon memilih nama lain dan coba lagi. TrackersFilterWidget - All (0) - this is for the tracker filter - Semua (0) - - - Trackerless (0) - Nirpelacak (0) - - - Error (0) - Galat (0) - - - Warning (0) - Peringatan (0) - - - Error (%1) - Galat (%1) - - - + Warning (%1) Peringatan (%1) - + Trackerless (%1) Nirpelacak (%1) - + Tracker error (%1) - + Masalah pelacak (%1) - + Other error (%1) - + Masalah lain (%1) - + Remove tracker - Hapus pencari + Hapus pencari + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Lanjutkan torrent + Lanjutkan torrent - Pause torrents - Tangguhkan torrent + Tangguhkan torrent - + Remove torrents Hilangkan Torrent - + Removal confirmation - + Konfirmasi penghapusan - + Are you sure you want to remove tracker "%1" from all torrents? - + Apakah anda yakin ingin menghapus pelacak "%1" dari semua torrent? - + Don't ask me again. - + Jangan tanya lagi - + All (%1) this is for the tracker filter Semua (%1) @@ -11127,7 +11700,7 @@ Mohon memilih nama lain dan coba lagi. TransferController - + 'mode': invalid argument @@ -11220,9 +11793,8 @@ Mohon memilih nama lain dan coba lagi. Memeriksa data kelanjutan - Paused - Dijeda + Dijeda @@ -11247,220 +11819,262 @@ Mohon memilih nama lain dan coba lagi. Galat - + Name i.e: torrent name Nama - + Size i.e: torrent size Ukuran - + Progress % Done Kemajuan - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Benih - + Peers i.e. partial sources (often untranslated) Sejawat - + Down Speed i.e: Download speed Cepat Und - + Up Speed i.e: Upload speed Cepat Ung - + Ratio Share ratio Rasio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left WPS - + Category Kategori - + Tags Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Ditambahkan pada - + Completed On Torrent was completed on 01/01/2010 08:00 Selesai dalam - + Tracker Pencari - + Down Limit i.e: Download limit Limit Und - + Up Limit i.e: Upload limit Limit Ung - + Downloaded Amount of data downloaded (e.g. in MB) Terunduh - + Uploaded Amount of data uploaded (e.g. in MB) Terunggah - + Session Download Amount of data downloaded since program open (e.g. in MB) Sesi Unduh - + Session Upload Amount of data uploaded since program open (e.g. in MB) Sesi Unggah - + Remaining Amount of data left to download (e.g. in MB) Tersisa - + + Time Active + Time (duration) the torrent is active (not stopped) + Waktu Aktif + + + + Yes + Ya + + + + No + Tidak + + Time Active Time (duration) the torrent is active (not paused) - Waktu Aktif + Waktu Aktif - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Selesai - + Ratio Limit Upload share ratio limit Rasio Limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Terakhir Terlihat Selesai - + Last Activity Time passed since a chunk was downloaded/uploaded Aktivitas Terakhir - + Total Size i.e. Size including unwanted data Total Ukuran - + Availability The number of distributed copies of the torrent Ketersediaan - + Info Hash v1 i.e: torrent info hash v1 - Informasi Hash v2: {1?} + Informasi Hash v1 - + Info Hash v2 i.e: torrent info hash v2 - Informasi Hash v2: {2?} + Informasi Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Umumkan ulang di + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A T/A - + %1 ago e.g.: 1h 20m ago %1 yang lalu - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (dibibit selama %2) @@ -11469,334 +12083,341 @@ Mohon memilih nama lain dan coba lagi. TransferListWidget - + Column visibility Keterlihatan kolom - + Recheck confirmation Komfirmasi pemeriksaan ulang - + Are you sure you want to recheck the selected torrent(s)? Apakah Anda yakin ingin memeriksa ulang torrent yang dipilih? - + Rename Ubah nama - + New name: Nama baru: - + Choose save path Pilih jalur penyimpanan - - Confirm pause - - - - Would you like to pause all torrents? - Ingin tunda semua torrents? - - - - Confirm resume - + Ingin tunda semua torrents? - Would you like to resume all torrents? - Ingin lanjutkan semua torrents? + Ingin lanjutkan semua torrents? - + Unable to preview Tidak dapat melihat pratinjau - + The selected torrent "%1" does not contain previewable files Torrent "%1" berisi berkas yang tidak bisa ditinjau - + Resize columns Ubah ukuran kolom - + Resize all non-hidden columns to the size of their contents Ubah ukuran semua kolom yang tidak disembunyikan sesuai ukuran konten kolom - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Tambah Tag + Tambah Tag - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags Buang Semua Tag - + Remove all tags from selected torrents? Buang semua tag dari torrent yang dipilih? - + Comma-separated tags: Koma-pemisah tag: - + Invalid tag Kesalahan tag - + Tag name: '%1' is invalid Nama tag: '%1' tidak valid - &Resume Resume/start the torrent - &Lanjutkan + &Lanjutkan - &Pause Pause the torrent - Tang&guhkan + Tang&guhkan - - Force Resu&me - Force Resume/start the torrent - - - - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Pindah %atas - + Move &down i.e. Move down in the queue - + Pindah &bawah - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Atur lok&asi... - + Force rec&heck - + Paksa &periksa ulang - + Force r&eannounce - + Paksa r&announce - + &Magnet link - + Tautan &Magnet - + Torrent &ID - + &ID Torrent - + + &Comment + &Komentar + + + &Name - + &Nama - + Info &hash v1 - + Info &hash v1 - + Info h&ash v2 - + Info &hash v2 - + Re&name... - + Na&mai ulang... - + Edit trac&kers... - + Sunting &pelacak... - + E&xport .torrent... - + Eks&por .torrent... - + Categor&y - + Kategor&i - + &New... New category... - + &Baru... - + &Reset Reset category - + &Kembalikan - + Ta&gs - + &Add... Add / assign multiple tags... - + &Tambahkan... - + &Remove All Remove all tags + &Hapus Semua + + + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + &Queue - + &Antrian - + &Copy - + &Salin - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Unduh berurutan - - Errors occurred when exporting .torrent files. Check execution log for details. + + Add tags + + + Errors occurred when exporting .torrent files. Check execution log for details. + Kesalahan tidak diketahui ketika mengekspor file .torrent. Periksa log eksekusi untuk lebih detail. + + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Hapus - + Download first and last pieces first Unduh bagian-bagian pertama dan akhir terlebih dahulu - + Automatic Torrent Management Manajemen Torrent Otomatis - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Mode otomatis berarti berbagai properti torrent (misal tempat penyimpanan) akan ditentukan dengan kategori terkait - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Mode pembibitan super @@ -11806,125 +12427,127 @@ Mohon memilih nama lain dan coba lagi. UI Theme Configuration - + Pengaturan Tema UI Colors - + Warna Color ID - + ID Warna Light Mode - + Mode Terang Dark Mode - + Mode Gelap Icons - + Ikon Icon ID - + ID Ikon - + UI Theme Configuration. - + Pengaturan Tema UI. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Perubahan Tema UI tidak dapat diterapkan sepenuhnya. Lihat detail di log. - + Couldn't save UI Theme configuration. Reason: %1 - + Tidak dapat menyimpan konfigurasi Tema UI. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Tidak dapat menghapus file ikon. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Tidak dapat menyalin file ikon. Source: %1. Destination: %2. UIThemeManager - - Failed to load UI theme from file: "%1" + + Set app style failed. Unknown style: "%1" + + + Failed to load UI theme from file: "%1" + Gagal memuat tema UI dari file: "%1" + UIThemeSource Couldn't parse UI Theme configuration file. Reason: %1 - + Tidak dapat mengurai file konfigurasi Tema UI. Reason: %1 UI Theme configuration file has invalid format. Reason: %1 - + File konfigurasi Tema UI memiliki format yang tidak valid. Reason: %1 Root JSON value is not an object - + Nilai di root JSON bukan sebuah obyek Invalid color for ID "%1" is provided by theme - + Warna tidak valid untuk ID "%1" berasal dari tema Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python not detected - Python tak terdeteksi - Found Python executable. Name: "%1". Version: "%2" @@ -11959,27 +12582,27 @@ Mohon memilih nama lain dan coba lagi. Utils::IO - + File open error. File: "%1". Error: "%2" - + Kesalahan membuka file. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Kesalahan membaca file. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11989,22 +12612,22 @@ Mohon memilih nama lain dan coba lagi. Watched Folder Options - + Opsi Folder yang Sudah Dilihat <html><head/><body><p>Will watch the folder and all its subfolders. In Manual torrent management mode it will also add subfolder name to the selected Save path.</p></body></html> - + Akan mengawasi folder dan semua subfoldernya. Dalam mode manajemen torrent Manual, mode ini juga akan menambahkan nama subfolder ke jalur Simpan yang dipilih. Recursive mode - + Mode berulang Torrent parameters - + Parameter torrent @@ -12017,12 +12640,12 @@ Mohon memilih nama lain dan coba lagi. Watched folder path cannot be empty. - + Jalur folder yang ditonton tidak boleh kosong. Watched folder path cannot be relative. - + Jalur folder yang diawasi harus absolut. @@ -12043,72 +12666,72 @@ Mohon memilih nama lain dan coba lagi. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Tipe berkas tidak diterima, hanya berkas reguler diterima. - + Symlinks inside alternative UI folder are forbidden. Symlinks didalam alternatif folder UI dilarang. - - Using built-in Web UI. - + + Using built-in WebUI. + Gunakan built-in WebUI. - - Using custom Web UI. Location: "%1". - + + Using custom WebUI. Location: "%1". + Gunakan WebUI kustom. Lokasi "%1" - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: header asal & Target asal tidak sesuai! Sumber IP: '%1'. Header asal: '%2'. Target asal: '%3 - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Pengarah header & Target asal tidak sesuai! Sumber IP: '%1'. Pengarah header: '%2'. Target asal: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: : header Host tidak sah, port tidak sesuai. Permintaan asal IP: '%1'. Server port: '%2'. Diterima Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: header Host tidak sah. Permintaan asal IP: '%1'. Diterima header Host: '%2' @@ -12116,138 +12739,136 @@ Mohon memilih nama lain dan coba lagi. WebUI - - Web UI: HTTPS setup successful - Web UI: Pengaturan HTTPS sukses + + Credentials are not set + Sertifikat belum ditentukan + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: Pengaturan HTTPS gagal, kembali ke HTTP + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Web UI: Sekarang memperhatikan di IP: %1, port %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Tidak dapat mengikat IP: %1, port: %2. Penyebab: %3 + + Unknown error + Galat tidak diketahui misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1j %2m + %1j %2m - + %1d %2h e.g: 2 days 10 hours - %1h %2j + %1h %2j - + %1y %2d e.g: 2 years 10 days - %1h %2j {1y?} {2d?} + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1j %2m - - - %1d %2h - e.g: 2days 10hours - %1h %2j - - - - + + Unknown Unknown (size) Tidak diketahui - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent akan mematikan komputer sekarang karena semua unduhan telah komplet. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_is.ts b/src/lang/qbittorrent_is.ts index f2ded8b89e0d..d0d78f38202b 100644 --- a/src/lang/qbittorrent_is.ts +++ b/src/lang/qbittorrent_is.ts @@ -18,75 +18,75 @@ Höfundur - + Authors - + Current maintainer Núverandi umsjónarmaður - + Greece Grikkland - - + + Nationality: - - + + E-mail: Tölvupóstur - - + + Name: Nafn: - + Original author Upprunalegur höfundur - + France Frakkland - + Special Thanks - + Translators - + License Leyfi - + Software Used - + qBittorrent was built with the following libraries: - + Copy to clipboard @@ -97,7 +97,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -221,14 +221,13 @@ Setja sem sjálfgefna vistunar slóð - + Never show again Aldrei sýna aftur - Torrent settings - Torrent stillingar + Torrent stillingar @@ -246,12 +245,12 @@ Setja í gang torrent - + Torrent information - + Skip hash check @@ -260,6 +259,11 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -286,70 +290,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: - + Original - + Create subfolder - + Don't create subfolder - + Info hash v1: - + Size: Stærð: - + Comment: Umsögn - + Date: Dagsetning: @@ -379,37 +388,37 @@ - + Do not delete .torrent file - + Download in sequential order - + Info hash v2: - + Download first and last pieces first - + Select All Velja allt - + Select None Velja ekkert - + Save as .torrent file... @@ -430,12 +439,12 @@ Ekki sækja - + Filter files... - + I/O Error I/O Villa @@ -444,19 +453,19 @@ Þegar á niðurhal lista - + Not Available This comment is unavailable Ekki í boði - + Not Available This date is unavailable Ekki í boði - + Not available Ekki í boði @@ -465,12 +474,12 @@ Get ekki bætt við torrent - + Magnet link - + Retrieving metadata... @@ -480,8 +489,8 @@ Ekki í boði - - + + Choose save path Veldu vista slóðina @@ -498,64 +507,59 @@ Skráin gat ekki verið endurnefnd - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A - + %1 (Free space on disk: %2) - + Not available This size is unavailable. Ekki í boði - + Torrent file (*%1) - + Save as torrent file - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. @@ -576,12 +580,12 @@ Forgangur - + Parsing metadata... - + Metadata retrieval complete @@ -603,22 +607,22 @@ - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -706,72 +710,77 @@ - - - Choose save path - Veldu vista slóðina + + Torrent share limits + - - - - - - - Default - + + + Choose save path + Veldu vista slóðina + + + - Yes - + Default + + Yes + + + + + + No Nei - + Manual - + Automatic - + Original - + Create subfolder - + Don't create subfolder - + None - + Metadata received - + Files checked @@ -779,465 +788,549 @@ AdvancedSettings - - - - + + + + MiB MiB - + Socket backlog size - + Recheck torrents on completion - - + + ms milliseconds ms - + Setting Stillingar - + Value Value set for this setting Gildi - + (disabled) - + (auto) (sjálfgefið) - + + min minutes - + All addresses - + qBittorrent Section - - + + Open documentation - + All IPv4 addresses - + All IPv6 addresses - + libtorrent Section - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Venjulegt - + Below normal - + Medium - + Low - + Very low - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache - - - - + + + + s seconds s - + Disk cache expiry interval - + Disk queue size - - + + Enable OS cache - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - + Stop tracker timeout [0: disabled] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Type of service (ToS) for connections to peers - + Support internationalized domain name (IDN) - + Server-side request forgery (SSRF) mitigation - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length @@ -1247,159 +1340,159 @@ m - + Prefer TCP - + Peer proportional (throttles TCP) - + Allow multiple connections from the same IP address - + Resolve peer host names - + Display notifications - + Display notifications for added torrents - + Notification timeout [0: infinite, -1: system default] - + Download tracker's favicon - + Save path history length - + Enable speed graphs - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Validate HTTPS tracker certificates - + Disallow connection to peers on privileged ports - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker - + Embedded tracker port @@ -1408,67 +1501,116 @@ Athuga með hugbúnaðar uppfærslu + + AppController + + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + Application - qBittorrent %1 started qBittorrent v3.2.0alpha started - qBittorrent %1 byrjað + qBittorrent %1 byrjað - + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 Torrent nafn: %1 - + Torrent size: %1 Torrent stærð: %1 - + Save path: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds - + + Thank you for using qBittorrent. - + + This is a test email. + + + + + Test email + + + + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. @@ -1477,49 +1619,55 @@ [qBittorrent] '%1' hefur lokið niðurhali - + Torrent: %1, sending mail notification - + Running external program. Torrent: "%1". Command: `%2` - + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + + + + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit H&ætta - + I/O Error i.e: Input/Output Error I/O Villa - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1531,23 +1679,23 @@ Villa - + Torrent added - + '%1' was added. e.g: xxx.avi was added. - + Download completed - + '%1' has finished downloading. e.g: xxx.avi has finished downloading. @@ -1557,87 +1705,72 @@ Gat ekki sótt torrent skrá af URL '%1', ástæða: %2. - + Information Upplýsingar - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - + Exit - + Recursive download confirmation - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never Aldrei - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Vista torrent framfarir... - + qBittorrent is now ready to exit @@ -1645,7 +1778,7 @@ AsyncFileStorage - + Could not create directory '%1'. @@ -1653,22 +1786,22 @@ AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1724,12 +1857,12 @@ - + Must Not Contain: Má ekki innihalda: - + Episode Filter: @@ -1789,145 +1922,145 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &útflutningur... - + Matches articles based on episode filter. - + Example: Dæmi: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: - + Season number is a mandatory non-zero value - + Filter must end with semicolon - + Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value - + Rules - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago - + Last Match: Unknown - + New rule name - + Please type the name of the new download rule. - - + + Rule name conflict - - + + A rule with this name already exists, please choose another name. - + Are you sure you want to remove the download rule named '%1'? - + Are you sure you want to remove the selected download rules? - + Rule deletion confirmation - + Invalid action Ógild aðgerð - + The list is empty, there is nothing to export. - + Export RSS rules - + I/O Error I/O Villa - + Failed to create the destination file. Reason: %1 - + Import RSS rules @@ -1936,120 +2069,120 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also innflutnings Villa - + Failed to import the selected rules file. Reason: %1 - + Add new rule... - + Delete rule - + Rename rule... - + Delete selected rules - + Clear downloaded episodes... - + Rule renaming - + Please type the new rule name - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -2098,53 +2231,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2152,38 +2290,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2191,22 +2329,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2245,466 +2383,520 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" - + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + + + + UPnP/NAT-PMP support: OFF - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2719,62 +2911,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2795,184 +2992,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: Notkun: - + [options] [(<filename> | <url>)...] - + Options: Valkostir: - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Hjálp @@ -2980,17 +3182,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories - + All Allt - + Uncategorized @@ -3024,12 +3226,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents + Start torrents - Pause torrents + Stop torrents @@ -3045,15 +3247,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset + + + System + + CookiesDialog @@ -3094,12 +3301,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3107,7 +3314,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3126,7 +3333,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files @@ -3134,19 +3341,19 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Einnig eyða skrám af harðadiski - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove @@ -3159,12 +3366,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Add torrent links - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3174,12 +3381,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Niðurhal - + No URL entered - + Please type at least one URL. @@ -3370,25 +3577,48 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - - Trackers cannot be merged because it is a private torrent + + Torrent is already present - - Torrent is already present + + Trackers cannot be merged because it is a private torrent. - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3396,38 +3626,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. - + Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 - + Unsupported IP version: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3435,17 +3665,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3663,26 +3893,54 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Skoða... - + Reset - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LineEdit @@ -3704,13 +3962,13 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned @@ -3719,89 +3977,70 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - - No further notices will be issued. + + You cannot use %1: qBittorrent is already running. - - Press %1 key to accept and continue... + + Another qBittorrent instance is already running. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - Legal notice + + Error when daemonizing. Reason: "%1". Error code: %2. - Cancel - Hætta við + Hætta við - I Agree - Ég samþykki + Ég samþykki @@ -3812,42 +4051,37 @@ No further notices will be issued. &Breyta - + &Tools &Verkfæri - + &File &Skrá - + &Help &Hjálp - + On Downloads &Done - + &View &Sýn - + &Options... &Valkostir... - - &Resume - - - - + Torrent &Creator @@ -3868,366 +4102,443 @@ No further notices will be issued. Auka Forgang - - + + Alternative Speed Limits - + &Top Toolbar - + Display Top Toolbar - + Status &Bar - + S&peed in Title Bar - + Show Transfer Speed in Title Bar - + &RSS Reader - + Search &Engine Leitar &vél - + L&ock qBittorrent - + Do&nate! - - &Do nothing + + Sh&utdown System - - Close Window + + &Do nothing - - R&esume All + + Close Window - + Manage Cookies... - + Manage stored network cookies - + Normal Messages - + Information Messages - + Warning Messages - + Critical Messages - + &Log &Leiðarbók - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + &Remove - + Set Global Speed Limits... - + Bottom of Queue - + Move to the bottom of the queue - + Top of Queue - + Move to the top of the queue - + Move Down Queue - + Move down in the queue - + Move Up Queue - + Move up in the queue - + Filters Sidebar - + &Exit qBittorrent &Hætta qBittorrent - + &Suspend System - + &Hibernate System - - S&hutdown System - - - - + &Statistics &Tölfræði - + Check for Updates Athuga með uppfærslur - + Check for Program Updates - + &About &Um - - - &Pause - - &Delete &Eyða - - P&ause All - - - - + &Add Torrent File... - + Open Opna - + E&xit H&ætta - + Open URL Opna URL - + &Documentation - + Lock Læsa - - - + + + Show Sýna - + Check for program updates - + Add Torrent &Link... - + If you like qBittorrent, please donate! - - + + Execution Log - + Clear the password - + &Set Password - + Preferences - + &Clear Password - + Transfers - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only - + Text Only - + Text Alongside Icons - + Text Under Icons - + Follow System Style - - + + UI lock password - - - Please type the UI lock password: + + + Please type the UI lock password: + + + + + Are you sure you want to clear the password? + + + + + Use regular expressions + + + + + + Search Engine + Leitarvél + + + + Search has failed + + + + + Search has finished + Leit lokið + + + + Search + Leita + + + + Transfers (%1) + + + + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. - - Are you sure you want to clear the password? + + Exit code: %1. - - Use regular expressions + + Reason: installer crashed. - - Search - Leita + + Python installation failed. + - - Transfers (%1) + + Launching Python installer. File: "%1". @@ -4252,53 +4563,65 @@ No further notices will be issued. Aldrei - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + &No &Nei - + &Yes &Já - + &Always Yes &Alltaf já - + Options saved. - - + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Missing Python Runtime - + qBittorrent Update Available qBittorrent uppfærsla í boði @@ -4313,67 +4636,72 @@ Viltu sækja %1? Gat ekki sótt torrent skrá af URL '%1', ástæða: %2. - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime - + A new version is available. - + Do you want to download %1? - + Open changelog... - + No updates available. You are already using the latest version. - + &Check for Updates &Athuga með uppfærslur - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + + + + Checking for Updates... Athuga með uppfærslur... - + Already checking for program updates in the background @@ -4382,84 +4710,77 @@ Minimum requirement: %2. Python fannst í '%1' - + Download error Niðurhal villa - - Python setup could not be downloaded, reason: %1. -Please install it manually. - - - - - + + Invalid password - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid - + DL speed: %1 e.g: Download speed: 10 KiB/s - + UP speed: %1 e.g: Upload speed: 10 KiB/s - [D: %1, U: %2] qBittorrent %3 D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 + [D: %1, U: %2] qBittorrent %3 - + Hide Fela - + Exiting qBittorrent Hætti qBittorrent - + Open Torrent Files - + Torrent Files @@ -4531,133 +4852,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) - + The operation was canceled - + The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out - + SSL/TLS handshake failed - + The remote server refused the connection - + The connection to the proxy server was refused - + The proxy server closed the connection prematurely - + The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known - + The requested operation is invalid for this protocol - + An unknown network-related error was detected - + An unknown proxy-related error was detected - + An unknown error related to the remote content was detected - + A breakdown in protocol was detected - + Unknown error Óþekkt villa @@ -4665,7 +4986,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -6040,18 +6366,13 @@ Please install it manually. BitTorrent - - - RSS - - - Web UI + RSS - + Advanced @@ -6060,182 +6381,166 @@ Please install it manually. Tungumál - + Transfer List - + Confirm when deleting torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always Alltaf - - Paused torrents only - - - - + Action on double-click - + Downloading torrents: - - - Start / Stop Torrent - - - - - + + Open destination folder - - + + No action - + Completed torrents: - + Auto hide zero status filters - + Desktop - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB - + Torrent content layout: - + Original - + Create subfolder - + Don't create subfolder - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... - + Options.. - + Remove - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6252,296 +6557,341 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + Peer connection protocol: + + + + + Any + + + + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + Start time - + From: From start time - + End time - + To: To end time - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: - - - + + + min minutes - + Seeding Limits - - Pause torrent - - - - + Remove torrent - + Remove torrent and its files - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Slóð: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: - + Web User Interface (Remote control) - + IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Aldrei - + ban for: - + Session timeout: - + Disabled - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6550,675 +6900,706 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area - + + Search + Leita + + + + WebUI + + + + Interface - + Language: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal Venjulegt - + File association - + Use qBittorrent for .torrent files - + Use qBittorrent for magnet links - + Check for program updates - + Power Management - + + &Log Files + + + + Save path: - + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management - + Default Torrent Management Mode: - + Manual - + Automatic - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + Copy .torrent files to: - + Show &qBittorrent in notification area - - &Log file - - - - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Customize UI Theme... - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Receiver - + To: To receiver - + SMTP server: - + Sender - + From: From sender - + This server requires a secure connection (SSL) - - + + Authentication - - - - + + + + Username: Notandanafn: - - - - + + + + Password: Lykilorð: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP - + Listening Port - + Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Random - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits - + Maximum number of connections per torrent: - + Global maximum number of connections: - + Maximum number of upload slots per torrent: - + Global maximum number of upload slots: - + Proxy Server - + Type: - + SOCKS4 - + SOCKS5 - + HTTP - - + + Host: - - - + + + Port: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... - + Apply to trackers - + Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s - - + + Upload: @@ -7227,592 +7608,663 @@ Manual: Various torrent properties (e.g. save path) must be assigned manuallyKiB/s - - + + Download: - + Alternative Rate Limits - + When: - + Every day Daglega - + Weekdays - + Weekends - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + Torrent inactivity timer: - + then - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: - + Key: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - - Use alternative Web UI + + Files location: - - Files location: + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> - + Security - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: - + Register - + Domain name: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name - + %L: Category - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files - + %Z: Torrent size (bytes) - + %T: Current tracker - - Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") + + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") + + + + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + + (None) + + + + + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds + + + + + Certificate + + + + + Select certificate + + + + + Private key + + + + + Select private key + + + + + WebUI configuration failed. Reason: %1 - - (None) + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode - - A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds + + System + System default Qt style - - Certificate + + Let Qt decide the style for this system - - Select certificate + + Dark + Dark color scheme - - Private key + + Light + Light color scheme - - Select private key + + System + System color scheme - + Select folder to monitor - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences - + Time Error - + The start time and the end time can't be the same. - - + + Length Error - - - The Web UI username must be at least 3 characters long. - - - - - The Web UI password must be at least 6 characters long. - - PeerInfo - + Unknown Óþekkt - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7968,7 +8420,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - + N/A @@ -7999,7 +8451,7 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - + Format: IPv4:port / [IPv6]:port @@ -8040,27 +8492,27 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -8073,58 +8525,58 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually - + Installed search plugins: - + Name Nafn - + Version Útgáfa - + Url Vefslóð - - + + Enabled Virkt - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one - + Check for updates Athuga með uppfærslur - + Close Loka - + Uninstall @@ -8282,17 +8734,17 @@ Those plugins were disabled. - + Search plugin source: - + Local file - + Web link @@ -8348,47 +8800,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview - + Name Nafn - + Size Stærð - + Progress Framför - + Preview impossible - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8401,27 +8853,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8499,12 +8951,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: - + Availability: Fáanleiki: @@ -8519,53 +8971,53 @@ Those plugins were disabled. - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) - + ETA: - + Uploaded: - + Seeds: - + Download Speed: - + Upload Speed: - + Peers: - + Download Limit: - + Upload Limit: - + Wasted: @@ -8575,32 +9027,32 @@ Those plugins were disabled. Tengingar: - + Information Upplýsingar - + Info Hash v1: - + Info Hash v2: - + Comment: Umsögn - + Select All Velja allt - + Select None Velja ekkert @@ -8613,52 +9065,68 @@ Those plugins were disabled. Hár - + Share Ratio: - + Reannounce In: - + Last Seen Complete: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Heildar stærð: - + Pieces: - + Created By: - + Added On: - + Completed On: - + Created On: - + + Private: + + + + Save Path: @@ -8671,93 +9139,121 @@ Those plugins were disabled. Ekki sækja - + Never Aldrei - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (hafa %3) - - + + %1 (%2 this session) - - + + + N/A - + + Yes + + + + + No + Nei + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 mest) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 alls) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) - Open - Opna + + Add web seed... + - Rename... - Endurnefna + + Remove web seed + - Priority - Forgangur + + Copy web seed URL + - - New Web seed + + Edit web seed URL... - - Remove Web seed + + Add web seed + Add HTTP source - - Copy Web seed URL + + Add web seed: - - Edit Web seed URL + + + This web seed is already in the list. - + Open + Opna + + + Rename... + Endurnefna + + + Priority + Forgangur + + + Speed graphs are disabled - + You can enable it in Advanced Options @@ -8786,34 +9282,17 @@ Those plugins were disabled. qBittorrent - + Filter files... - - New URL seed - New HTTP source - - - - - New URL seed: - - - - - - This URL seed is already in the list. - - - - + Web seed editing - + Web seed URL: @@ -8918,22 +9397,22 @@ Those plugins were disabled. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8941,22 +9420,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8992,12 +9471,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). @@ -9005,99 +9484,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -9148,8 +9627,8 @@ Those plugins were disabled. - - + + Mark items read @@ -9174,132 +9653,132 @@ Those plugins were disabled. - - + + Delete Eyða - + Rename... - + Rename Endurnefna - - + + Update Uppfæra - + New subscription... - - + + Update all feeds - + Download torrent Sækja torrent - + Open news URL Opna frétta vefslóð - + Copy feed URL - + New folder... Ný mappa... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name - + Folder name: Möppu nafn: - + New folder Ný mappa - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed - + New feed name: - + Rename failed - + Date: Dagsetning: - + Feed: - + Author: Höfundur: @@ -9314,38 +9793,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 - + Failed to check for plugin updates: %1 @@ -9451,132 +9930,146 @@ Those plugins were disabled. Stærð: - + Name i.e: file name Nafn - + Size i.e: file size Stærð - + Seeders i.e: Number of full sources - + Leechers i.e: Number of partial sources - Search engine - Leitarvél + Leitarvél - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere - + Use regular expressions - + Open download window - + Download Niðurhal - + Open description page - + Copy Afrita - + Name Nafn - + Download link - + Description page URL - + Searching... - + Search has finished Leit lokið - + Search aborted - + An error occurred during search... - + Search returned no results - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -9591,104 +10084,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories Allir flokkar - + Movies Kvikmyndir - + TV shows Sjónvarpsþættir - + Music Tónlist - + Games Leikir - + Anime - + Software - + Pictures Myndir - + Books Bækur - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -9727,15 +10220,11 @@ Those plugins were disabled. - - - - Search Leita - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. @@ -9745,98 +10234,137 @@ Click the "Search plugins..." button at the bottom right of the window Niðurhal - + Search plugins... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins - + Only enabled - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab - + Close all tabs - + Select... - - - + + Search Engine Leitarvél - + + Please install Python to use the Search Engine. - + Empty search pattern - + Please type a search pattern first - + + Stop - Search has finished - Leit lokið + Leit lokið + + + SearchWidget::DataStorage - - Search has failed + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" @@ -9954,34 +10482,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: - - - + + + - - - + + + KiB/s - - + + Download: - + Alternative speed limits @@ -10173,32 +10701,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: @@ -10213,12 +10741,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -10241,51 +10769,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: - - + + No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes - + qBittorrent needs to be restarted! - - - + + + Connection Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -10315,12 +10859,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resumed (0) + Running (0) - Paused (0) + Stopped (0) @@ -10384,23 +10928,28 @@ Click the "Search plugins..." button at the bottom right of the window Lokið (%1) - - Paused (%1) + + Running (%1) - - Moving (%1) + + Stopped (%1) - Resume torrents + Start torrents - Pause torrents + Stop torrents + + + + + Moving (%1) @@ -10412,11 +10961,6 @@ Click the "Search plugins..." button at the bottom right of the window Delete torrents Eyða torrents - - - Resumed (%1) - - Active (%1) @@ -10492,17 +11036,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags - + All Allt - + Untagged @@ -10510,56 +11054,56 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... - + Remove tag - + Remove unused tags - - Resume torrents - + Delete torrents + Eyða torrents - - Pause torrents + + Remove torrents - Delete torrents - Eyða torrents + + Start torrents + - - Remove torrents + + Stop torrents - - New Tag + + Tag: - - Tag: + + Add tag - + Invalid tag name - + Tag name '%1' is invalid @@ -10696,7 +11240,7 @@ Please choose a different name and try again. TorrentContentModel - + Name Nafn @@ -10705,27 +11249,27 @@ Please choose a different name and try again. Stærð - + Progress Framför - + Download Priority Niðurhal forgangur - + Remaining Eftir - + Availability - + Total Size Heildar stærð @@ -10785,102 +11329,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error - + Renaming - + New name: Nýtt nafn: - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Opna - + Open containing folder - + Rename... - + Priority Forgangur - - + + Do not download Ekki sækja - + Normal Venjulegt - + High Hár - + Maximum Hámark - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10905,13 +11467,13 @@ Please choose a different name and try again. - + Select file - + Select folder @@ -10936,7 +11498,7 @@ Please choose a different name and try again. - + Auto Sjálfgefið @@ -11034,88 +11596,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: - + Comments: - + Source: - + Progress: Framför: - + Create Torrent - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) - - Reason: %1 - - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Torrent creator - + Torrent created: @@ -11182,32 +11739,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -11215,44 +11772,31 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" - - TorrentInfo - - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - - Invalid metadata - - - TorrentModel @@ -11324,126 +11868,162 @@ Please choose a different name and try again. - + Category: - - Torrent speed limits + + Torrent Share Limits - + Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s - + These will not exceed the global limits - + Upload: - - Torrent share limits + + Disable DHT for this torrent - - Use global share limit + + Download in sequential order - - Set no share limit + + Disable PeX for this torrent - - Set share limit to + + Download first and last pieces first - - ratio + + Disable LSD for this torrent - - total minutes + + Currently used categories - - inactive minutes + + + Choose save path + Veldu vista slóðina + + + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - Disable DHT for this torrent + + + + + Default - - Download in sequential order + + + + Unlimited - - Disable PeX for this torrent + + + + Set to - - Download first and last pieces first + + Seeding time: - - Disable LSD for this torrent + + + + + + + min + minutes - - Currently used categories + + Inactive seeding time: - - - Choose save path - Veldu vista slóðina + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + - - Not applicable to private torrents + + Remove torrent and its content - - No share limit method selected + + Enable super seeding for torrent - - Please select a limit method first + + Ratio: @@ -11456,31 +12036,31 @@ Please choose a different name and try again. - New Tag + Add tag - + Tag: - + Invalid tag name - + Tag name '%1' is invalid. - + Tag exists - + Tag name already exists. @@ -11500,115 +12080,130 @@ Please choose a different name and try again. Virkar ekki - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name @@ -11698,121 +12293,115 @@ Please choose a different name and try again. TrackerListModel - - + Working Virkar - + Disabled - + Disabled for this torrent - + This torrent is private - + N/A - + Updating... Uppfæri... - + Not working Virkar ekki - + Tracker error - + Unreachable - + Not contacted yet - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce - Protocol + Tier - + Status Staða - + Peers - + Seeds - + Leeches - + Times Downloaded - + Message Skilaboð - - - Next announce - - - - - Min announce - - - - - v%1 - - TrackerListWidget @@ -11821,7 +12410,7 @@ Please choose a different name and try again. Virkar - + This torrent is private @@ -11834,53 +12423,53 @@ Please choose a different name and try again. Virkar ekki - + Tracker editing - + Tracker URL: - - + + Tracker editing failed - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... - + Remove tracker - + Copy tracker URL - + Force reannounce to selected trackers - + Force reannounce to all trackers @@ -11893,17 +12482,17 @@ Please choose a different name and try again. Staða - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Add trackers... @@ -11916,7 +12505,7 @@ Please choose a different name and try again. Skilaboð - + Column visibility @@ -11953,12 +12542,12 @@ Please choose a different name and try again. - + µTorrent compatible list URL: - + Download trackers list @@ -11971,27 +12560,27 @@ Please choose a different name and try again. Niðurhal villa - + Add Bæta - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -12031,62 +12620,62 @@ Please choose a different name and try again. Villa (%1) - + Warning (%1) Aðvörun (%1) - + Trackerless (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - - Resume torrents + + Start torrents - - Pause torrents + + Stop torrents - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Allt (%1) @@ -12095,7 +12684,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -12218,11 +12807,6 @@ Please choose a different name and try again. Used when loading the torrents from disk after qbt is launched. It checks the correctness of the .fastresume file. Normally it is completed in a fraction of a second, unless loading many many torrents. - - - Paused - - Completed @@ -12246,13 +12830,13 @@ Please choose a different name and try again. Villur - + Name i.e: torrent name Nafn - + Size i.e: torrent size Stærð @@ -12263,208 +12847,245 @@ Please choose a different name and try again. Lokið - + Progress % Done Framför - Status Torrent status (e.g. downloading, seeding, paused) + Staða + + + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) Staða - + Seeds i.e. full sources (often untranslated) - + Peers i.e. partial sources (often untranslated) - + Down Speed i.e: Download speed - + Up Speed i.e: Upload speed - + Ratio Share ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left - + Category - + Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 - + Completed On Torrent was completed on 01/01/2010 08:00 - + Tracker - + Down Limit i.e: Download limit - + Up Limit i.e: Upload limit - + Downloaded Amount of data downloaded (e.g. in MB) Sótt - + Uploaded Amount of data uploaded (e.g. in MB) - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Remaining Amount of data left to download (e.g. in MB) Eftir - + Time Active - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) - + + Yes + + + + + No + Nei + + + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Lokið - + Ratio Limit Upload share ratio limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Activity Time passed since a chunk was downloaded/uploaded - + Total Size i.e. Size including unwanted data Heildar stærð - + Availability The number of distributed copies of the torrent - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A - + %1 ago e.g.: 1h 20m ago %1 síðan - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) @@ -12473,309 +13094,299 @@ Please choose a different name and try again. TransferListWidget - + Column visibility - + Choose save path Veldu vista slóðina - + Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. - + Rename Endurnefna - + New name: Nýtt nafn: - + Unable to preview - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - - Add Tags - - - - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags - + Remove all tags from selected torrents? - + Comma-separated tags: - + Invalid tag - + Tag name: '%1' is invalid - - &Resume + &Delete + Delete the torrent + &Eyða + + + + &Start Resume/start the torrent - - &Pause - Pause the torrent + + Sto&p + Stop the torrent - - Force Resu&me + + Force Star&t Force Resume/start the torrent - &Delete - Delete the torrent - &Eyða - - - + &Remove Remove the torrent - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported @@ -12809,30 +13420,25 @@ Please choose a different name and try again. Nafn - + Download in sequential order - + Download first and last pieces first - + Automatic Torrent Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - Copy Afrita @@ -12850,7 +13456,7 @@ Please choose a different name and try again. Afrita magnet slóð - + Super seeding mode @@ -12899,28 +13505,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -12928,7 +13534,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -12959,20 +13570,21 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". @@ -13013,27 +13625,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -13105,72 +13717,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -13178,23 +13790,28 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 @@ -13310,82 +13927,90 @@ Please choose a different name and try again. Hætta við + + fs + + + Unknown error + Óþekkt villa + + misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) - + EiB exbibytes (1024 pebibytes) - + /s per second /s - + %1s e.g: 10 seconds %1m {1s?} - + %1m e.g: 10 minutes %1m - + %1h %2m e.g: 3 hours 5 minutes %1h %2m - + %1d %2h e.g: 2 days 10 hours %1d %2h - + %1y %2d e.g: 2 years 10 days %1d %2h {1y?} {2d?} @@ -13406,19 +14031,19 @@ Please choose a different name and try again. %1d %2h {1y?} {2d?} - - + + Unknown Unknown (size) Óþekkt - + qBittorrent will shutdown the computer now because all downloads are complete. - + < 1m < 1 minute < 1m diff --git a/src/lang/qbittorrent_it.ts b/src/lang/qbittorrent_it.ts index db0bfb9bf743..08d9ee0298d3 100644 --- a/src/lang/qbittorrent_it.ts +++ b/src/lang/qbittorrent_it.ts @@ -14,77 +14,77 @@ Info programma - + Authors Autori - + Current maintainer Attuale manutentore - + Greece Grecia - - + + Nationality: Nazionalità: - - + + E-mail: E-mail: - - + + Name: Nome: - + Original author Autore originale - + France Francia - + Special Thanks Ringraziamenti speciali - + Translators Traduttori - + License Licenza - + Software Used Software usato - + qBittorrent was built with the following libraries: qBittorrent è stato costruito con le seguenti librerie: - + Copy to clipboard - + Copia negli appunti @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -167,14 +167,13 @@ Il database è concesso in licenza con la licenza internazionale Creative Common Salva in - + Never show again Non visualizzare più - Torrent settings - Impostazioni torrent + Impostazioni torrent @@ -192,12 +191,12 @@ Il database è concesso in licenza con la licenza internazionale Creative Common Avvia torrent - + Torrent information Informazioni torrent - + Skip hash check Salta controllo hash @@ -206,6 +205,11 @@ Il database è concesso in licenza con la licenza internazionale Creative Common Use another path for incomplete torrent Usa un altro percorso per torrent incompleto + + + Torrent options + + Tags: @@ -232,70 +236,75 @@ Il database è concesso in licenza con la licenza internazionale Creative Common Condizione stop: - - + + None Nessuna - - + + Metadata received Ricevuti metadati - - + + Torrents that have metadata initially will be added as stopped. + I torrent con metadati iniziali saranno aggiunti come fermati. + + + + Files checked File controllati - + Add to top of queue Aggiungi in cima alla coda - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Se selezionato, il file .torrent non verrà eliminato indipendentemente dalle impostazioni nella pagina "Download" della finestra di dialogo Opzioni - + Content layout: Layout contenuto: - + Original Originale - + Create subfolder Crea sottocartella - + Don't create subfolder Non creare sottocartella - + Info hash v1: Info hash v1: - + Size: Dimensione: - + Comment: Commento: - + Date: Data: @@ -325,247 +334,188 @@ Il database è concesso in licenza con la licenza internazionale Creative Common Ricorda ultimo percorso di salvataggio - + Do not delete .torrent file Non cancellare file .torrent - + Download in sequential order Scarica in ordine sequenziale - + Download first and last pieces first Scarica la prima e l'ultima parte per prime - + Info hash v2: Info has v2: - + Select All Seleziona tutto - + Select None Deseleziona tutto - + Save as .torrent file... Salva come file .torrent... - + I/O Error Errore I/O - Invalid torrent - Torrent non valido - - - + Not Available This comment is unavailable Commento non disponibile - + Not Available This date is unavailable Non disponibile - + Not available Non disponibile - Invalid magnet link - Collegamento magnet non valido - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Impossibile caricare il torrent: %1. -Errore: %2. - - - This magnet link was not recognized - Collegamento magnet non riconosciuto - - - + Magnet link Collegamento magnet - + Retrieving metadata... Recupero metadati... - - + + Choose save path Scegli una cartella per il salvataggio - Torrent is already present - Il torrent è già presente - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Il torrent '%1' è già nell'elenco dei trasferimenti. I server traccia non sono stati uniti perché è un torrent privato. - - - Torrent is already queued for processing. - Il torrent è già in coda per essere processato. - - - + No stop condition is set. Non è impostata alcuna condizione di arresto. - + Torrent will stop after metadata is received. Il torrent si interromperà dopo la ricezione dei metadati. - - Torrents that have metadata initially aren't affected. - Non sono interessati i torrent che inizialmente hanno metadati. - - - + Torrent will stop after files are initially checked. Il torrent si fermerà dopo che i file sono stati inizialmente controllati. - + This will also download metadata if it wasn't there initially. Questo scaricherà anche i metadati se inizialmente non erano presenti. - - + + N/A N/D - Magnet link is already queued for processing. - Il collegamento magnet è già in coda per essere elaborato. - - - + %1 (Free space on disk: %2) %1 (Spazio libero nel disco: %2) - + Not available This size is unavailable. Non disponibile - + Torrent file (*%1) File torrent (*%1) - + Save as torrent file Salva come file torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Impossibile esportare file metadati torrent "%1": motivo %2. - + Cannot create v2 torrent until its data is fully downloaded. Impossibile creare torrent v2 fino a quando i relativi dati non sono stati completamente scaricati. - Cannot download '%1': %2 - Impossibile scaricare '%1': %2 - - - + Filter files... Filtra file... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Il torrent '%1' è già nell'elenco dei trasferimenti. -I tracker non possono essere uniti perché è un torrent privato. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Il torrent '%1' è già nell'elenco dei trasferimenti. -Vuoi unire i tracker da una nuova fonte? - - - + Parsing metadata... Analisi metadati... - + Metadata retrieval complete Recupero metadati completato - - Failed to load from URL: %1. -Error: %2 - Download fallito da URL: %1. -Errore: %2. - - - Download Error - Errore download - AddTorrentManager Downloading torrent... Source: "%1" - + Download torrent... +Sorgente: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Impossibile aggiungere il torrent. +Sorgente: "%1" +Motivo: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Rilevato un tentativo di aggiungere un torrent duplicato. +Sorgente: %1 +Torrent esistente: %2 +Risultato: %3 - + Merging of trackers is disabled - + L'unione dei tracker è disabilitata - + Trackers cannot be merged because it is a private torrent - + I tracker non possono essere uniti perché è un torrent privato - + Trackers are merged from new source - + I trackersono stati uniti dalla nuova sorgente @@ -651,72 +601,77 @@ Errore: %2. Salta controllo hash - - - Choose save path - Scegli cartella salvataggio + + Torrent share limits + Limiti condivisione torrent - - - - - - - Default - Predefinito + + + Choose save path + Scegli cartella salvataggio + + + - Yes - + Default + Predefinito + Yes + + + + + + No No - + Manual Manuale - + Automatic Automatico - + Original Originale - + Create subfolder Crea sotto cartella - + Don't create subfolder Non creare sotto cartella - + None Nessuna - + Metadata received Ricevuti metadati - + Files checked File controllati @@ -724,737 +679,858 @@ Errore: %2. AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Ricontrolla torrent quando completato - - + + ms milliseconds ms - + Setting Impostazione - + Value Value set for this setting Valore - + (disabled) (disattivato) - + (auto) (auto) - + + min minutes min - + All addresses Tutti gli indirizzi - + qBittorrent Section Sezione qBittorrent - - + + Open documentation Apri documentazione - + All IPv4 addresses Tutti gli indirizzi IPv4 - + All IPv6 addresses Tutti gli indirizzi IPv6 - + libtorrent Section Sezione libtorrent - + Fastresume files File ripresa rapida - + SQLite database (experimental) Database SQL (sperimentale) - + Resume data storage type (requires restart) Tipo storage dati ripristino (richiede riavvio) - + Normal Normale - + Below normal Inferiore a normale - + Medium Media - + Low Bassa - + Very low Molto bassa - - Process memory priority (Windows >= 8 only) - Priorità memoria elaborazione (Windows >=8) - - - + Physical memory (RAM) usage limit Limite uso memoria fisica (RAM). - + Asynchronous I/O threads Thread I/O asincroni - + Hashing threads Thread hashing - + File pool size Dimensione file pool - + Outstanding memory when checking torrents Memoria aggiuntiva durante controllo torrent - + Disk cache Cache disco - - - - + + + + s seconds s - + Disk cache expiry interval Intervallo scadenza cache disco - + Disk queue size Dimensioni coda disco - - + + Enable OS cache Attiva cache del SO - + Coalesce reads & writes Combina letture e scritture - + Use piece extent affinity Usa affinità estensione segmento - + Send upload piece suggestions Invia suggerimenti parti per invio - - - - + + + + + 0 (disabled) 0 (disabilitato) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Intervallo ripresa salvataggio dati [0: disabilitato] - + Outgoing ports (Min) [0: disabled] Porte in uscita (min) [0: disabilitata] - + Outgoing ports (Max) [0: disabled] Porte in uscita (max) [0: disabilitata] - + 0 (permanent lease) 0 (lease permanente) - + UPnP lease duration [0: permanent lease] Durata lease UPnP [0: lease permanente] - + Stop tracker timeout [0: disabled] Timeout stop tracker [0: disabilitato] - + Notification timeout [0: infinite, -1: system default] Timeout notifica [0: infinito, -1: predefinito sistema] - + Maximum outstanding requests to a single peer Numero max richieste in sospeso per singolo peer - - - - - + + + + + KiB KiB - + (infinite) (infinito) - + (system default) (predefinito sistema) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Questa opzione è meno efficace su Linux - + + Process memory priority + Priorità processo memoria + + + Bdecode depth limit Limite profondità Bdecode - + Bdecode token limit Limite token Bdecode - + Default Predefinito - + Memory mapped files File mappati in memoria - + POSIX-compliant Conforme a POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipo di I/O del disco (richiede il riavvio) - - + + Disable OS cache Disabilita cache sistema operativo - + Disk IO read mode Modalità I/O lettura disco - + Write-through Write-through - + Disk IO write mode Modalità I/O scrittura disco - + Send buffer watermark Livello buffer invio - + Send buffer low watermark Livello buffer basso invio - + Send buffer watermark factor Fattore livello buffer invio - + Outgoing connections per second Connessioni in uscita per secondo - - + + 0 (system default) 0 (predefinito sistema) - + Socket send buffer size [0: system default] Dimensionei buffer socket invio [0: predefinita sistema] - + Socket receive buffer size [0: system default] Dimensione buffer ricezione socket [0: predefinita sistema] - + Socket backlog size Dimensione backlog socket - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Limite dimensione file .torrent - + Type of service (ToS) for connections to peers Tipo di servizio (ToS) per le connessioni ai peer - + Prefer TCP Preferisci TCP - + Peer proportional (throttles TCP) Proporzionale per nodo (soffoca TCP) - + Support internationalized domain name (IDN) Supporto nome dominio internazionalizzato (IDN) - + Allow multiple connections from the same IP address Permetti connessioni multiple dallo stesso indirizzo IP - + Validate HTTPS tracker certificates Valida certificati tracker HTTPS - + Server-side request forgery (SSRF) mitigation Necessaria mitigazione falsificazione richieste lato server (SSRF) - + Disallow connection to peers on privileged ports Non consentire la connessione a peer su porte privilegiate - + + It appends the text to the window title to help distinguish qBittorent instances + Aggiunge il testo al titolo della finestra per aiutare a distinguere le istanze di qBittorent + + + + Customize application instance name + Personalizza il nome dell'istanza dell'applicazione + + + It controls the internal state update interval which in turn will affect UI updates Controlla l'intervallo di aggiornamento dello stato interno che a sua volta influenzerà gli aggiornamenti dell'interfaccia utente - + Refresh interval Intervallo aggiornamento - + Resolve peer host names Risolvi i nomi host dei nodi - + IP address reported to trackers (requires restart) Indirizzo IP segnalato ai tracker (richiede il riavvio) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Riannuncia a tutti i tracker quando l'IP o la porta sono cambiati - + Enable icons in menus Abilita icone nei menu - + Enable port forwarding for embedded tracker Abilita il port forwarding per il tracker incorporato - - (Auto detect if empty) + + Enable quarantine for downloaded files + Abilita quarantena per i file scaricati + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Abilita Mark-of-the-Web (MOTW) per i file scaricati + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - + + Ignore SSL errors + + + + + (Auto detect if empty) + (Rilevamento automatico se vuoto) + + + Python executable path (may require restart) + Percorso eseguibile Python (potrebbe richiedere il riavvio) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + s + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Conferma rimozione tracker da tutti i torrent + + + Peer turnover disconnect percentage Percentuale di disconnessione turnover peer - + Peer turnover threshold percentage Percentuale livello turnover peer - + Peer turnover disconnect interval Intervallo disconnessione turnover peer - + Resets to default if empty - + Ripristina il predefinito se vuoto - + DHT bootstrap nodes - + Nodi bootstrap DHT - + I2P inbound quantity Quantità I2P in entrata - + I2P outbound quantity Quantità I2P in uscita - + I2P inbound length Lunghezza I2P in entrata - + I2P outbound length Lunghezza I2P in uscita - + Display notifications Visualizza notifiche - + Display notifications for added torrents Visualizza notifiche per i torrent aggiunti - + Download tracker's favicon Scarica iconcina server traccia - + Save path history length Lunghezza storico percorso di salvataggio - + Enable speed graphs Abilita grafico velocità - + Fixed slots Posizioni fisse - + Upload rate based Secondo velocità di invio - + Upload slots behavior Comportamento slot invio - + Round-robin A turno - + Fastest upload Invio più veloce - + Anti-leech Anti-download - + Upload choking algorithm Algoritmo riduzione invio - + Confirm torrent recheck Conferma ricontrollo torrent - + Confirm removal of all tags Conferma rimozione di tutte le etichette - + Always announce to all trackers in a tier Annuncia sempre a tutti i server traccia in un livello - + Always announce to all tiers Annuncia sempre a tutti i livelli - + Any interface i.e. Any network interface Qualsiasi interfaccia - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritmo modalità mista %1-TCP - + Resolve peer countries Risolvi nazioni peer - + Network interface Interfaccia di rete - + Optional IP address to bind to Indirizzo IP opzionale a cui collegarsi - + Max concurrent HTTP announces Annunci HTTP contemporanei max - + Enable embedded tracker Abilita server traccia integrato - + Embedded tracker port Porta server traccia integrato - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 è stato avviato + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 In esecuzione in modo portatile. Rilevamento automatico cartella profilo in: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Rilevato flag della riga di comando ridondante: "%1". La modalità portatile implica una relativa ripresa rapida. - + Using config directory: %1 Usa cartella config: %1 - + Torrent name: %1 Nome torrent: %1 - + Torrent size: %1 Dimensione torrent: %1 - + Save path: %1 Percorso di salvataggio: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Il torrent è stato scaricato in %1. - + + Thank you for using qBittorrent. Grazie di usare qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, invio mail di notifica - + Add torrent failed - + Aggiunta torrent non riuscita - + Couldn't add torrent '%1', reason: %2. - + Impossibile aggiungere il torrent '%1'. +Motivo: %2. + + + + The WebUI administrator username is: %1 + Il nome utente dell'amministratore WebUI è: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + La password dell'amministratore WebUI non è stata impostata. +Per questa sessione viene fornita una password temporanea: %1 + + + + You should set your own password in program preferences. + Dovresti impostare la tua password nelle preferenze del programma. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + L'interfaccia utente Web è disabilitata! +Per abilitare l'interfaccia utente Web, modificare manualmente il file di configurazione. - + Running external program. Torrent: "%1". Command: `%2` Esecuzione programma esterno. torrent: "%1". comando: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Impossibile eseguire il programma esterno. Torrent: "%1". Comando: `%2` - + Torrent "%1" has finished downloading Download completato torrent "%1" - + WebUI will be started shortly after internal preparations. Please wait... WebUI verrà avviats poco dopo i preparativi interni. Attendi... - - + + Loading torrents... Caricamento torrent... - + E&xit &Esci - + I/O Error i.e: Input/Output Error Errore I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1463,124 +1539,95 @@ Comando: `%2` Motivo: %2 - Error - Errore - - - Failed to add torrent: %1 - Impossibile aggiungere il torrent: %1 - - - + Torrent added Torrent aggiunto - + '%1' was added. e.g: xxx.avi was added. '%1' è stato aggiunto. - + Download completed Download completato - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Download completato di '%1'. - - - URL download error - Errore download URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 avviato. ID processo: %2 - Couldn't download file at URL '%1', reason: %2. - Impossibile scaricare il file all'URL '%1', motivo: %2. + + This is a test email. + - Torrent file association - Associazione file torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent non è l'applicazione predefinita per l'apertura di file torrent o collegamenti Magnet. -Vuoi rendere qBittorrent l'applicazione predefinita per questi file? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Download completato di '%1'. - + Information Informazioni - + To fix the error, you may need to edit the config file manually. - + Per correggere l'errore, potrebbe essere necessario modificare manualmente il file di configurazione. - + To control qBittorrent, access the WebUI at: %1 Per controllare qBittorrent, accedi alla WebUI a: %1 - - The Web UI administrator username is: %1 - Utente amministratore Web UI: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - La password dell'amministratore dell'interfaccia utente web non è stata modificata rispetto a quella predefinita: %1 - - - - This is a security risk, please change your password in program preferences. - Questo è un rischio per la sicurezza Cambia la password nelle preferenze del programma. - - - Application failed to start. - Avvio applicazione fallito. - - - + Exit Esci - + Recursive download confirmation - Conferma ricorsiva download + Conferma ricorsiva download - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Il torrent '%1' contiene file .torrent. + Il torrent '%1' contiene file .torrent. Vuoi procedere con il loro download? - + Never - Mai + Mai - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Download ricorsivo di file .torrent all'interno di torrent. + Download ricorsivo di file .torrent all'interno di torrent. Sorgente torrent: "%1" File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Impossibile impostare il limite di uso della memoria fisica (RAM). Codice di errore: %1. Messaggio di errore: "%2". - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Impossibile impostare il limite fisso di uso della memoria fisica (RAM). Dimensione richiesta: %1. @@ -1589,22 +1636,22 @@ Codice errore: %3. Messaggio di errore: "%4" - + qBittorrent termination initiated Chiusura di qBittorrent avviata - + qBittorrent is shutting down... Chiusura di qBittorrent... - + Saving torrent progress... Salvataggio avazamento torrent in corso... - + qBittorrent is now ready to exit qBittorrent è ora pronto per la chiusura @@ -1612,7 +1659,7 @@ Messaggio di errore: "%4" AsyncFileStorage - + Could not create directory '%1'. Impossibile creare la cartella '%1'. @@ -1620,22 +1667,22 @@ Messaggio di errore: "%4" AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Login WebAPI fallito. Motivo: l'IP è stato bandito, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. Il tuo IP è stato messo al bando dopo troppi tentativi di autenticazione non riusciti. - + WebAPI login success. IP: %1 Login WebAPI avvenuto. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Login WebAPI fallito. Motivo: credenziali non valide, tentativo: %1, IP: %2, username: %3 @@ -1685,12 +1732,12 @@ Per rinominare puoi anche usare il tasto di scelta rapida F2. Priorità: - + Must Not Contain: Non deve contenere: - + Episode Filter: Filtro episodi: @@ -1743,263 +1790,263 @@ Supporta i formati: S01E01, 1x1, 2017.12.31 e 31.12.2017 (I formati a data suppo &Esporta... - + Matches articles based on episode filter. Seleziona gli elementi che corrispondono al filtro episodi. - + Example: Esempio: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match seleziona gli episodi 2, 5, 8 fino a 15, 30 e successivi della prima stagione - + Episode filter rules: Regola per filtrare gli episodi: - + Season number is a mandatory non-zero value Il numero della stagione non può essere pari a zero - + Filter must end with semicolon La regola deve terminare con un punto e virgola - + Three range types for episodes are supported: Sono supportarti tre diversi tipi di intervallo: - + Single number: <b>1x25;</b> matches episode 25 of season one Numero singolo:<b>1x25;</b> corrisponde all'episodio 25 della prima stagione - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Intervallo normale: <b>1x25-40;</b> corrisponde agli episodi dal 25 al 40 della prima stagione - + Episode number is a mandatory positive value Il numero dell'episodio deve essere positivo - + Rules Regole - + Rules (legacy) Regole (obsolete) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Intervallo infinito: <b>1x25-;</b> corrisponde agli episodi da 25 in su della prima stagione e a tutti gli episodi delle stagioni successive - + Last Match: %1 days ago Ultima occorrenza: %1 giorni fa - + Last Match: Unknown Ultima occorrenza: Sconosciuto - + New rule name Nuovo nome regola - + Please type the name of the new download rule. Inserisci il nome della nuova regola download. - - + + Rule name conflict Conflitto nel nome della regola - - + + A rule with this name already exists, please choose another name. Una regola con questo nome esiste già, scegli un nome differente. - + Are you sure you want to remove the download rule named '%1'? Sei sicuro di voler rimuovere la regola di download con nome '%1'? - + Are you sure you want to remove the selected download rules? Vuoi rimuovere la regole di download selezionata? - + Rule deletion confirmation Conferma eliminazione della regola - + Invalid action Azione non valida - + The list is empty, there is nothing to export. La lista è vuota, non c'è niente da esportare. - + Export RSS rules Esporta regole RSS - + I/O Error Errore I/O - + Failed to create the destination file. Reason: %1 Impossibile creare il file destinazione.Motivo: %1 - + Import RSS rules Importa regole RSS - + Failed to import the selected rules file. Reason: %1 Impossibile importare il file di regole selezionato. Motivo: %1 - + Add new rule... Aggiungi nuova regola... - + Delete rule Elimina regola - + Rename rule... Rinomina regola... - + Delete selected rules Elimina regole selezionate - + Clear downloaded episodes... Azzera episodi scaricati... - + Rule renaming Rinominazione regole - + Please type the new rule name Inserire il nuovo nome della regola - + Clear downloaded episodes Azzera episodi scaricati - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Sei sicuro di voler azzerare la lista degli episodi scaricati per la regola selezionata? - + Regex mode: use Perl-compatible regular expressions Modalità regex: usa espressioni regolari Perl - - + + Position %1: %2 Posizione %1: %2 - + Wildcard mode: you can use Modalità jolly: puoi usare - - + + Import error Errore importazione - + Failed to read the file. %1 Impossibile leggere il file. %1 - + ? to match any single character ? corrisponde a qualunque carattere singolo - + * to match zero or more of any characters * corrisponde a zero o più caratteri qualsiasi - + Whitespaces count as AND operators (all words, any order) Gli spazi contano come operatori AND (tutte le parole, qualsiasi ordine) - + | is used as OR operator | è usato come operatore OR - + If word order is important use * instead of whitespace. Se l'ordine delle parole è importante usa * invece di uno spazio. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Un'espressione con una clausola %1 (per esempio %2) - + will match all articles. corrispondenza per tutti gli articoli. - + will exclude all articles. esclude tutti gli articoli. @@ -2041,55 +2088,60 @@ Supporta i formati: S01E01, 1x1, 2017.12.31 e 31.12.2017 (I formati a data suppo BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Impossibile creare cartella ripresa torrent: '%1' - + Cannot parse resume data: invalid format Impossibile analizzare dati di recupero: formato non valido - - + + Cannot parse torrent info: %1 Impossibile analizzare informazioni sul torrent: %1 - + Cannot parse torrent info: invalid format Impossibile analizzare informazioni sul torrent: formato non valido - + + Mismatching info-hash detected in resume data + Rilevato hash informativo non corrispondente nei dati ripresa trasferimento + + + Couldn't save torrent metadata to '%1'. Error: %2. Impossibile salvare i metadati del torrent in '%1'. Errore: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Impossibile salvare i dati di ripristino del torrent in '%1'. Errore: %2. - + Couldn't load torrents queue: %1 Impossibile caricare la coda torrent: %1 - + Cannot parse resume data: %1 Impossibile analizzare i dati di recupero: %1 - + Resume data is invalid: neither metadata nor info-hash was found I dati di recupero non sono validi: non sono stati trovati né metadati né info hash - + Couldn't save data to '%1'. Error: %2 Impossibile salvare i dati in '%1'. Errore: %2 @@ -2098,40 +2150,40 @@ Errore: %2 BitTorrent::DBResumeDataStorage - + Not found. Non trovato. - + Couldn't load resume data of torrent '%1'. Error: %2 Impossibile caricare dati ripresa torrent '%1'. Errore: %2. - - + + Database is corrupted. Il database è danneggiato. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Impossibile abilitare la modalità di journaling WAL (Write-Ahead Logging). Errore: '%1'. - + Couldn't obtain query result. Impossibile ottenere il risultato della query. - + WAL mode is probably unsupported due to filesystem limitations. La modalità WAL probabilmente non è supportata a causa delle limitazioni del file system. - + Couldn't begin transaction. Error: %1 Impossibile iniziare la transazione. Errore: %1 @@ -2140,24 +2192,24 @@ Errore: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Impossibile salvare i metadati del torrent. Errore: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Impossibile salvare dati ripresa torrent '%1'. Errore: %2. - + Couldn't delete resume data of torrent '%1'. Error: %2 Impossibile eliminare dati ripresa torrent '%1'. Errore: %2. - + Couldn't store torrents queue positions. Error: %1 Impossibile salvare posizione coda. Errore: %1 @@ -2165,245 +2217,272 @@ Errore: %2. BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Supporto tabella hash distribuita (DHT): %1 - - - - - - - - - + + + + + + + + + ON ON - - - - - - - - - + + + + + + + + + OFF OFF - - + + Local Peer Discovery support: %1 Supporto rilevamento peer locale: %1 - + Restart is required to toggle Peer Exchange (PeX) support Per attivare il supporto Peer Exchange (PeX). è necessario il riavvio - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Impossibile riprendere il torrent. Torrent: "%1". Motivo: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Impossibile riprendere il torrent: è stato rilevato un ID torrent incoerente. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Rilevati dati incoerenti: la categoria non è presente nel file di configurazione. La categoria verrà ripristinata ma le sue impostazioni verranno ripristinate ai valori predefiniti. Torrent: "%1". categoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Rilevati dati incoerenti: categoria non valida. Torrent: "%1". categoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Rilevata mancata corrispondenza tra i percorsi di salvataggio della categoria recuperata e il percorso di salvataggio attuale del torrent. Il torrent è ora passato alla modalità manuale. Torrent: "%1". categoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Rilevati dati incoerenti: tag mancante nel file di configurazione. Il tag verrà recuperato. Torrent: "%1". etichetta: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Rilevati dati incoerenti: tag non valido. Torrent: "%1". etichetta: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Rilevato evento di riattivazione del sistema. Nuovo annuncio a tutti i tracker... - + Peer ID: "%1" ID peer: "%1" - + HTTP User-Agent: "%1" User Agent HTTP: "%1" - + Peer Exchange (PeX) support: %1 Supporto Peer Exchangei(PeX): %1 - - + + Anonymous mode: %1 Modalità anonima: %1 - - + + Encryption support: %1 Supporto crittografia: %1 - - + + FORCED FORZATO - + Could not find GUID of network interface. Interface: "%1" Impossibile trovare la GUID dell'interfaccia di rete. Interfaccia: "%1" - + Trying to listen on the following list of IP addresses: "%1" Tentativo di ascolto nel seguente elenco di indirizzi IP: "%1" - + Torrent reached the share ratio limit. Il torrent ha raggiunto il limite del rapporto di condivisione. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent rimosso. + Torrent rimosso. - - - Removed torrent and deleted its content. - Torrent rimosso ed eliminato il suo contenuto. + Torrent rimosso ed eliminato il suo contenuto. - - - Torrent paused. - Torrent in pausa. + Torrent in pausa. - - - + Super seeding enabled. Super seeding abilitato. - + Torrent reached the seeding time limit. Il torrent ha raggiunto il limite del tempo di seeding. - + Torrent reached the inactive seeding time limit. Il torrent ha raggiunto il limite di tempo di seeding non attivo. - + Failed to load torrent. Reason: "%1" Impossibile caricare il torrent. Motivo: "%1" - + I2P error. Message: "%1". + Errore I2P. +Messaggio: "%1". + + + + UPnP/NAT-PMP support: ON + Supporto UPnP/NAT-PMP: ON + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Download torrent... Sorgente: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Impossibile caricare il torrent. -Sorgente: "%1". -Motivo: "%2" + + Session shutdown timed out. + + + + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Rilevato un tentativo di aggiungere un torrent duplicato. -L'unione dei tracker è disabilitata. -Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Rilevato un tentativo di aggiungere un torrent duplicato. -I tracker non possono essere uniti perché è un torrent privato. -Torrent: %1 + + Torrent stopped. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Rilevato un tentativo di aggiungere un torrent duplicato. -I tracker vengono uniti da una nuova fonte. -Torrent: %1 + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: ON - Supporto UPnP/NAT-PMP: ON + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + L'unione dei tracker è disabilitata + + + + Trackers cannot be merged because it is a private torrent + I tracker non possono essere uniti perché è un torrent privato + + + + Trackers are merged from new source + I trackersono stati uniti dalla nuova sorgente + + + UPnP/NAT-PMP support: OFF Supporto UPnP/NAT-PMP: OFF - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" Impossibile esportare il torrent. Torrent: "%1". @@ -2411,102 +2490,98 @@ Destinazione: "%2". Motivo: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 Salvataggio dei dati di ripristino interrotto. Numero di torrent in sospeso: %1 - System network status changed to %1 - e.g: System network status changed to ONLINE - Lo stato della rete del sistema è cambiato in %1 - - - ONLINE - ONLINE - - - OFFLINE - OFFLINE - - - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - La configurazione di rete di %1 è stata modificata, aggiornamento dell'associazione di sessione - - - + The configured network address is invalid. Address: "%1" L'indirizzo di rete configurato non è valido. Indirizzo "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Impossibile trovare l'indirizzo di rete configurato su cui ascoltare. Indirizzo "%1" - + The configured network interface is invalid. Interface: "%1" L'interfaccia di rete configurata non è valida. Interfaccia: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Indirizzo IP non valido rifiutato durante l'applicazione dell'elenco di indirizzi IP vietati. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Aggiunto tracker a torrent. Torrent: "%1" Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Tracker rimosso dal torrent. Torrent: "%1" Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Aggiunto seed URL al torrent. Torrent: "%1" URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Seed URL rimosso dal torrent. Torrent: "%1" URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent in pausa. + Torrent in pausa. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent ripreso. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Download del torrent completato. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Spostamento torrent annullato. Torrent: "%1" @@ -2514,7 +2589,12 @@ Sorgente: "%2" Destinazione: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Impossibile accodare lo spostamento del torrent. Torrent: "%1" @@ -2523,7 +2603,7 @@ Destinazione: "%3" Motivo: il torrent si sta attualmente spostando verso la destinazione - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Impossibile accodare lo spostamento del torrent. Torrent: "%1" @@ -2532,7 +2612,7 @@ Destinazione: "%3" Motivo: entrambi i percorsi puntano alla stessa posizione - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Spostamento torrent in coda. Torrent: "%1" @@ -2540,84 +2620,75 @@ Sorgente: "%2" Destinazione: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Avvio spostamento torrent. Torrent: "%1" Destinazione: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Impossibile salvare la configurazione delle categorie. File: "%1" Errore: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Impossibile analizzare la configurazione delle categorie. File: "%1" Errore: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Download ricorsivo di file .torrent all'interno di torrent. -Sorgente torrent: "%1" -File: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Impossibile caricare il file .torrent all'interno di torrent. -Sorgente torrent: "%1" -File: "%2" -Errore: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Analisi completata file del filtro IP. Numero di regole applicate: %1 - + Failed to parse the IP filter file Impossibile analizzare il file del filtro IP - + Restored torrent. Torrent: "%1" Torrente ripristinato. Torrent: "%1" - + Added new torrent. Torrent: "%1" Aggiunto nuovo torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Errore torrent. Torrent: "%1" Errore: "%2" - - Removed torrent. Torrent: "%1" - Torrent rimosso. + Torrent rimosso. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent rimosso e cancellato il suo contenuto. + Torrent rimosso e cancellato il suo contenuto. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent privo dei parametri SSL. +Torrent: "%1". +Messaggio: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Avviso di errore del file. Torrent: "%1" @@ -2625,93 +2696,97 @@ File: "%2" Motivo: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Mappatura porta UPnP/NAT-PMP non riuscita. Messaggio: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Mappatura porta UPnP/NAT-PMP riuscita. Messaggio: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtro IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). porta filtrata (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). porta privilegiata (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + La sessione BitTorrent ha riscontrato un errore grave. +Motivo: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Errore proxy SOCKS5. Indirizzo "%1". Messaggio: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restrizioni in modalità mista - + Failed to load Categories. %1 Impossibile caricare le categorie. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Impossibile caricare la configurazione delle categorie. File: "%1". Errore: "formato dati non valido" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent rimosso ma non è stato possibile eliminarne il contenuto e/o perte del file. + Torrent rimosso ma non è stato possibile eliminarne il contenuto e/o perte del file. Torrent: "%1". Errore: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 è disabilitato - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 è disabilitato - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Ricerca DNS seed URL non riuscita. + Ricerca DNS seed URL non riuscita. Torrent: "%1" URL: "%2" Errore: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Messaggio di errore ricevuto dal seed dell'URL. Torrent: "%1" @@ -2719,14 +2794,14 @@ URL: "%2" Messaggio: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Ascolto riuscito su IP. IP: "%1" Porta: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Impossibile ascoltare su IP. IP: "%1" @@ -2734,26 +2809,26 @@ Porta: "%2/%3" Motivo: "%4" - + Detected external IP. IP: "%1" Rilevato IP esterno. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Errore: la coda degli avvisi interna è piena e gli avvisi vengono eliminati, potresti notare un peggioramento delle prestazioni. Tipo di avviso eliminato: "%1" Messaggio: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Spostamento torrent completato. Torrent: "%1" Destinazione: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Impossibile spostare il torrent. Torrent: "%1" @@ -2763,94 +2838,97 @@ Motivo: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operazione annullata - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Impossibile creare un nuovo file torrent. -Motivo: %1. + + Failed to start seeding. + Impossibile avviare il seeding. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operazione annullata + Operazione annullata + + Create new torrent file failed. Reason: %1. - Impossibile creare un nuovo file torrent. + Impossibile creare un nuovo file torrent. Motivo: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Impossibile aggiungere peer "%1" al torrent "%2". Motivo: %3 - + Peer "%1" is added to torrent "%2" Il peer "%1" è stato aggiunto al torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Rilevati dati imprevisti. Torrent: %1. Dati: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Impossibile scrivere su file. Motivo: "%1". Il torrent è ora in modalità "solo upload". - + Download first and last piece first: %1, torrent: '%2' Sarica prima il primo e l'ultimo segmento: %1, torrent: '%2' - + On On - + Off Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Impossibile ricaricare il torrent. +Torrente: %1. +Motivo: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Generazione dei dati per la ripresa del download non riuscita. Torrent: "%1". Motivo: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Impossibile ripristinare il torrent. I file sono stati probabilmente spostati o lo spazio di archiviazione non è accessibile. Torrente: "%1". Motivo: "%2" - + Missing metadata Metadati mancanti - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Rinomina file fallita. Torrent: "%1", file "%2", motivo: "%3" - + Performance alert: %1. More info: %2 Avviso sul rendimento: %1. Ulteriori informazioni: %2. @@ -2872,187 +2950,201 @@ Ulteriori informazioni: %2. CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Il parametro '%1' deve seguire la sintassi '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Il parametro '%1' deve seguire la sintassi '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Atteso numero intero della variabile d'ambiente '%1', ma ottenuto '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Il parametro '%1' deve seguire la sintassi '%1=%2' + Il parametro '%1' deve seguire la sintassi '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Atteso %1 nella variabile d'ambiente '%2', ma ottenuto '%3' - - + + %1 must specify a valid port (1 to 65535). %1 deve specificare una porta valida (1 a 65535). - + Usage: Uso: - + [options] [(<filename> | <url>)...] [opzioni] [(<filename> | <url>)...] - + Options: Opzioni: - + Display program version and exit Visualizza versione programma ed esci - - Display this help message and exit - Visualizza questo messaggio di aiuto ed esci + + Display this help message and exit + Visualizza questo messaggio di aiuto ed esci + + + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Il parametro '%1' deve seguire la sintassi '%1=%2' + + + + Confirm the legal notice + Conferma l'avviso legale - - + + port porta - - Change the Web UI port - Modifica la porta dell'interfaccia web + + Change the WebUI port + Modifica la porta WebUI - + Change the torrenting port Modifica la porta del torrent - + Disable splash screen Disattiva schermata d'avvio - + Run in daemon-mode (background) Esegui in modalità daemon (background) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Memorizza file configurazione in <dir> - - + + name nome - + Store configuration files in directories qBittorrent_<name> Memorizza file configurazione in cartelle qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Inserisciti nei file fastresume di libtorrent e rendi i percorsi dei file relativi alla cartella del profilo - + files or URLs file o URL - + Download the torrents passed by the user Scarica i torrent passati dall'utente - + Options when adding new torrents: Impostazioni all'aggiunta di nuovi torrent: - + path percorso - + Torrent save path Percorso salvataggio torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Aggiungi torrent avviati o in pausa + Aggiungi torrent avviati o in pausa - + Skip hash check Salta controllo hash - + Assign torrents to category. If the category doesn't exist, it will be created. Assegna torrent a categoria. Se la categoria non esiste, verrà creata. - + Download files in sequential order Scarica file in ordine sequenziale - + Download first and last pieces first Scarica èer prima la prima e l'ultima parte - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Specifica se la finestra "Aggiungi nuovo torrent" si apra quando viene aggiunto un torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: I valori delle opzioni possono essere passati tramite variabili d'ambiente. Per l'opzione chiamata 'parameter-name', la variable d'ambiente è 'QBT_PARAMETER_NAME' (tutte maiuscole, '-' sostituito da '_'). Per passare valori flag, imposta la variabile a '1' o 'TRUE'. Per esempio, per disabilitare la schermata d'avvio: - + Command line parameters take precedence over environment variables I parametri della riga di comando hanno la precedenza sulle variabili ambiente - + Help Aiuto @@ -3060,17 +3152,17 @@ Per esempio, per disabilitare la schermata d'avvio: CategoryFilterModel - + Categories Categorie - + All Tutti - + Uncategorized Non categorizzati @@ -3104,13 +3196,21 @@ Per esempio, per disabilitare la schermata d'avvio: - Resume torrents - Riprendi torrent + Start torrents + + Stop torrents + + + + Resume torrents + Riprendi torrent + + Pause torrents - Metti in pausa torrent + Metti in pausa torrent @@ -3121,15 +3221,20 @@ Per esempio, per disabilitare la schermata d'avvio: ColorWidget - + Edit... Modifica... - + Reset Azzera + + + System + + CookiesDialog @@ -3170,12 +3275,12 @@ Per esempio, per disabilitare la schermata d'avvio: CustomThemeSource - + Failed to load custom theme style sheet. %1 Impossibile caricare il foglio di stile del tema personalizzato. %1 - + Failed to load custom theme colors. %1 Impossibile caricare i colori del tema personalizzato. %1 @@ -3183,7 +3288,7 @@ Per esempio, per disabilitare la schermata d'avvio: DefaultThemeSource - + Failed to load default theme colors. %1 Impossibile caricare i colori del tema predefinito. %1 @@ -3202,23 +3307,27 @@ Per esempio, per disabilitare la schermata d'avvio: + Also remove the content files + + + Also permanently delete the files - Elimina anche permanentemente i file + Elimina anche permanentemente i file - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Sei sicuro di voler rimuovere '%1' dall'elenco dei trasferimenti? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Sei sicuro di voler rimuovere questi %1 torrent dall'elenco di trasferimento? - + Remove Rimuovi @@ -3231,12 +3340,12 @@ Per esempio, per disabilitare la schermata d'avvio: Aggiungi collegamenti torrent da URL - + Add torrent links Aggiungi collegamenti torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Un collegamento per riga (collegamento HTTP, Magnet o info hash) @@ -3246,12 +3355,12 @@ Per esempio, per disabilitare la schermata d'avvio: Download - + No URL entered Nessun indirizzo web inserito - + Please type at least one URL. Inserire almeno un indirizzo web. @@ -3410,65 +3519,93 @@ Per esempio, per disabilitare la schermata d'avvio: Errore di elaborazione. Il file filtro non è un file PeerGuardian P2B valido. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Download torrent... +Sorgente: "%1" - Trackers cannot be merged because it is a private torrent - + I tracker non possono essere uniti perché è un torrent privato - + Torrent is already present - Il torrent è già presente + Il torrent è già presente - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Il torrent '%1' è già nell'elenco dei trasferimenti. + Il torrent '%1' è già nell'elenco dei trasferimenti. Vuoi unire i tracker da una nuova fonte? GeoIPDatabase - - + + Unsupported database file size. Dimensione file banca dati non supportata. - + Metadata error: '%1' entry not found. Errore nei metadati: voce '%1' non trovata. - + Metadata error: '%1' entry has invalid type. Errore nei metadati: la voce '%1' è di tipo non valido. - + Unsupported database version: %1.%2 Versione banca dati non supportata: %1.%2 - + Unsupported IP version: %1 Versione IP non supportata: %1 - + Unsupported record size: %1 Dimensione record non supportata: %1 - + Database corrupted: no data section found. Banca dati corrotta: impossibile trovare sezione dati. @@ -3476,19 +3613,19 @@ Vuoi unire i tracker da una nuova fonte? Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 La dimensione della richiesta HTTP supera il limite, chiusura socket. Limite: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Metodo di richiesta Http errato, chiusura socket. IP: %1. Metodo: "%2" - + Bad Http request, closing socket. IP: %1 Richiesta HTTP errata, chiusura socket. IP: %1 @@ -3530,37 +3667,67 @@ IP: %1 IconWidget - + Browse... Naviga... - + Reset Azzera - + Select icon Seleziona icona - + Supported image files File immagini supportati + + LegalNotice + + + Legal Notice + Informazioni legali + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent è un programma di condivisione file. +Quando si esegue un torrent, i suoi dati saranno resi disponibili agli altri per mezzo dell'upload. +Ogni contenuto che tu condividi è una tua responsabilità. + + + + No further notices will be issued. + Non saranno emessi ulteriori avvisi. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Per eliminare questo messaggio, se hai letto l'avviso legale, puoi usare l'opzione della riga di comando `--confirm-legal-notice`. + + + + Press 'Enter' key to continue... + Per continuare premi 'Invio'... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 è stato bloccato. Motivo: %2. - + %1 was banned 0.0.0.0 was banned %1 è stato bannato @@ -3569,96 +3736,66 @@ Motivo: %2. Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 è un parametro sconosciuto. - - + + %1 must be the single command line parameter. %1 deve essere l'unico parametro della riga di comando. - - You cannot use %1: qBittorrent is already running for this user. - Impossibile usare %1: -qBittorrent è già in esecuzione per questo utente. - - - + Run application with -h option to read about command line parameters. Esegui l'applicazione con il parametro -h per avere informazioni sui parametri della riga di comando. - + Bad command line Riga di comando errata - + Bad command line: Riga di comando errata: - + An unrecoverable error occurred. - + Si è verificato un errore irreversibile. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Informazioni legali + qBittorrent ha riscontrato un errore irreversibile. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent è un programma di condivisione file. -Quando si esegue un torrent, i suoi dati saranno resi disponibili agli altri per mezzo di invio. -Ogni contenuto che tu condividi è una tua responsabilità. - - - - No further notices will be issued. - Non saranno emessi ulteriori avvisi. - - - - Press %1 key to accept and continue... - Premi il tasto '%1' per accettare e continuare... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent è un programma di condivisione file. -Quando si esegue un torrent, i suoi dati saranno resi disponibili agli altri per mezzo di invio. -Ogni contenuto che tu condividi è una tua responsabilità. - -Non verranno emessi ulteriori avvisi. + + You cannot use %1: qBittorrent is already running. + Non puoi usare %1: qBittorrent è già in esecuzione. - - Legal notice - Informazioni legali + + Another qBittorrent instance is already running. + È già in esecuzione un'altra istanza di qBittorrent. - - Cancel - Annulla + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Trovata istanza qBittorrent inaspettata. +Uscita da questa istanza. +ID processo corrente: %1. - - I Agree - Accetto + + Error when daemonizing. Reason: "%1". Error code: %2. + Errore durante la demonizzazione. +Motivo: '%1'. +Codice errore: %2. @@ -3669,522 +3806,593 @@ Non verranno emessi ulteriori avvisi. &Modifica - + &Tools &Strumenti - + &File &File - + &Help &Aiuto - + On Downloads &Done &Al termine del download - + &View &Visualizza - + &Options... &Impostazioni... - &Resume - &Riprendi + &Riprendi - + &Remove &Rimuovi - + Torrent &Creator &Crea torrent - - + + Alternative Speed Limits Limiti di velocità alternativi - + &Top Toolbar &Barra strumenti superiore - + Display Top Toolbar Visualizza barra strumenti superiore - + Status &Bar &Barra di stato - + Filters Sidebar Barra laterale filtri - + S&peed in Title Bar &Velocità nella barra del titolo - + Show Transfer Speed in Title Bar Visualizza velocità trasferimento nella barra del titolo - + &RSS Reader &Lettore RSS - + Search &Engine &Motore di ricerca - + L&ock qBittorrent Blocca &qBittorrent - + Do&nate! Fai una do&nazione! - + + Sh&utdown System + + + + &Do nothing &Non fare nulla - + Close Window Chiudi finestra - R&esume All - R&iprendi tutti + R&iprendi tutti - + Manage Cookies... Gestisci cookie... - + Manage stored network cookies Gestisci cookie di rete memorizzati - + Normal Messages Messaggi normali - + Information Messages Messaggi informativi - + Warning Messages Messaggi notifica - + Critical Messages Messaggi critici - + &Log &Registro eventi - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Imposta limite globale velocità... - + Bottom of Queue Sposta in fondo alla coda - + Move to the bottom of the queue Sposta in fondo alla coda - + Top of Queue Sposta in alto nella coda - + Move to the top of the queue Sposta in alto nella coda - + Move Down Queue Sposta in giù nella coda - + Move down in the queue Sposta in giù nella coda - + Move Up Queue Sposta in su nella coda - + Move up in the queue Sposta in su nella coda - + &Exit qBittorrent &Esci da qBittorrent - + &Suspend System &Sospendi - + &Hibernate System Sospendi su &disco - S&hutdown System - Spe&gni + Spe&gni - + &Statistics &Statistiche - + Check for Updates Controlla aggiornamenti programma - + Check for Program Updates Controlla aggiornamenti del programma - + &About &Informazioni sul programma - &Pause - Metti in &pausa + Metti in &pausa - P&ause All - Metti in p&ausa tutti + Metti in p&ausa tutti - + &Add Torrent File... &Aggiungi file torrent... - + Open Apri - + E&xit &Esci - + Open URL Apri URL - + &Documentation Gui&da in linea - + Lock Blocca - - - + + + Show Visualizza - + Check for program updates Controlla gli aggiornamenti del programma - + Add Torrent &Link... Aggiungi colle&gamento torrent... - + If you like qBittorrent, please donate! Se ti piace qBittorrent, per favore fai una donazione! - - + + Execution Log Registro attività - + Clear the password Azzera la password - + &Set Password &Imposta password - + Preferences Preferenze - + &Clear Password &Azzera password - + Transfers Trasferimenti - - + + qBittorrent is minimized to tray qBittorent è ridotto a icona nell'area di notifica - - - + + + This behavior can be changed in the settings. You won't be reminded again. Questo comportamento può essere cambiato nelle impostazioni. Non verrà più ricordato. - + Icons Only Solo icone - + Text Only Solo testo - + Text Alongside Icons Testo accanto alle icone - + Text Under Icons Testo sotto le icone - + Follow System Style Segui stile di sistema - - + + UI lock password Password di blocco - - + + Please type the UI lock password: Inserire la password per il blocco di qBittorrent: - + Are you sure you want to clear the password? Sei sicuro di voler azzerare la password? - + Use regular expressions Usa espressioni regolari - - Search - Ricerca + + + Search Engine + Motore di Ricerca - - Transfers (%1) - Trasferimenti (%1) + + Search has failed + La ricerca non ha avuto successo - Recursive download confirmation - Conferma ricorsiva download + + Search has finished + - Never - Mai + + Search + Ricerca + + + + Transfers (%1) + Trasferimenti (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent è stato appena aggiornato e bisogna riavviarlo affinché i cambiamenti siano effettivi. - + qBittorrent is closed to tray qBittorent è chiuso nell'area di notifica - + Some files are currently transferring. Alcuni file sono in trasferimento. - + Are you sure you want to quit qBittorrent? Sei sicuro di voler uscire da qBittorrent? - + &No &No - + &Yes &Sì - + &Always Yes Sem&pre sì - + Options saved. Opzioni salvate. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Runtime Python non disponibile - + qBittorrent Update Available - È disponibile un aggiornamento per qBittorrent + Disponibile aggiornamento qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python è necessario per poter usare il motore di ricerca, ma non risulta installato. Vuoi installarlo ora? - + Python is required to use the search engine but it does not seem to be installed. Python è necessario per poter usare il motore di ricerca, ma non risulta installato. - - + + Old Python Runtime Runtime Python obsoleto - + A new version is available. - È disponibile una nuova versione. + È disponibile una nuova versione di qBittorrent. - + Do you want to download %1? - Vuoi scaricare %1? + Vuoi scaricare la nuova versione (%1)? - + Open changelog... - Apri il changelog... + Apri elenco novità... - + No updates available. You are already using the latest version. Nessun aggiornamento disponibile. -Stai già usando l'ultima versione. +Questa versione è aggiornata. - + &Check for Updates - &Controlla gli aggiornamenti + &Controlla aggiornamenti - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? La versione di Python (%1) è obsoleta. Requisito minimo: %2. Vuoi installare una versione più recente adesso? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. La versione Python (%1) è obsoleta. @@ -4192,100 +4400,113 @@ Per far funzionare i motori di ricerca aggiorna alla versione più recente. Requisito minimo: v. %2. - + + Paused + In pausa + + + Checking for Updates... Controllo aggiornamenti in corso... - + Already checking for program updates in the background Controllo aggiornamenti già attivo in background - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Errore download - Python setup could not be downloaded, reason: %1. Please install it manually. - Il setup di Python non è stato scaricato, motivo: %1. + Il setup di Python non è stato scaricato, motivo: %1. Per favore installalo manualmente. - - + + Invalid password Password non valida - + Filter torrents... Filtra torrent... - + Filter by: Filtra per: - + The password must be at least 3 characters long La password deve essere lunga almeno 3 caratteri - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Il torrent '%1' contiene file .torrent. -Vuoi procedere con il loro download? - - - + The password is invalid La password non è valida - + DL speed: %1 e.g: Download speed: 10 KiB/s Velocità DL: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Velocità UP: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Minimizza nella barra di sistema - + Exiting qBittorrent Esci da qBittorrent - + Open Torrent Files Apri file torrent - + Torrent Files File torrent @@ -4346,133 +4567,133 @@ Vuoi procedere con il loro download? Net::DownloadHandlerImpl - - + + I/O Error: %1 Errore I/O: "%1" - + The file size (%1) exceeds the download limit (%2) La dimensione del file (%1) supera il limite di download (%2) - + Exceeded max redirections (%1) Numero massimo reindirizzamenti (%1) superato - + Redirected to magnet URI Reindirizzamento all'URI magnet - + The remote host name was not found (invalid hostname) Il nome host remoto non è stato trovato (nome host non valido) - + The operation was canceled L'operazione è stata annullata - + The remote server closed the connection prematurely, before the entire reply was received and processed Il server remoto ha chiuso la connessione prematuramente, prima che l'intera risposta fosse ricevuta ed elaborata - + The connection to the remote server timed out La connessione al server remoto è scaduta - + SSL/TLS handshake failed Handshake SSL/TLS non riuscito - + The remote server refused the connection Il server remoto ha rifiutato la connessione - + The connection to the proxy server was refused La connessione al server proxy è stata rifiutata - + The proxy server closed the connection prematurely Il server proxy ha chiuso prematuramente la connessione - + The proxy host name was not found Il nome host proxy non è stato trovato - + The connection to the proxy timed out or the proxy did not reply in time to the request sent La connessione al proxy è scaduta o il proxy non ha risposto in tempo alla richiesta inviata - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Il proxy per gestire la richiesta richiede l'autenticazione ma non ha accettato alcuna credenziale offerta - + The access to the remote content was denied (401) L'accesso al contenuto remoto è stato negato (401) - + The operation requested on the remote content is not permitted L'operazione richiesta sul contenuto remoto non è consentita - + The remote content was not found at the server (404) Il contenuto remoto non è stato trovato nel server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Il server remoto richiede l'autenticazione per gestire il contenuto ma le credenziali fornite non sono state accettate - + The Network Access API cannot honor the request because the protocol is not known L'API di accesso alla rete non può soddisfare la richiesta perché il protocollo non è noto - + The requested operation is invalid for this protocol L'operazione richiesta non è valida per questo protocollo - + An unknown network-related error was detected È stato rilevato un errore sconosciuto relativo alla rete - + An unknown proxy-related error was detected È stato rilevato un errore sconosciuto relativo al proxy - + An unknown error related to the remote content was detected È stato rilevato un errore sconosciuto relativo al contenuto remoto - + A breakdown in protocol was detected È stata rilevata un'interruzione del protocollo - + Unknown error Errore sconosciuto @@ -4480,7 +4701,12 @@ Vuoi procedere con il loro download? Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignora errore SSL, URL: "%1", errori: "%2" @@ -5856,295 +6082,308 @@ Motivo: %1 BitTorrent - + RSS RSS - Web UI - Interfaccia web + Interfaccia web - + Advanced Avanzate - + Customize UI Theme... Personalizza tema interfaccia utente... - + Transfer List Elenco trasferimenti - + Confirm when deleting torrents Conferma eliminazione torrent - Shows a confirmation dialog upon pausing/resuming all the torrents - Quando metti in pausa/riprendi tutti i torrent visualizza una finestra di dialogo di conferma + Quando metti in pausa/riprendi tutti i torrent visualizza una finestra di dialogo di conferma - Confirm "Pause/Resume all" actions - Conferma le azioni "Pausa/riprendi tutto" + Conferma le azioni "Pausa/riprendi tutto" - + Use alternating row colors In table elements, every other row will have a grey background. Usa colori di riga alternati - + Hide zero and infinity values Nascondi valori zero ed infinito - + Always Sempre - Paused torrents only - Solo torrent in pausa + Solo torrent in pausa - + Action on double-click Azioni con il doppio clic - + Downloading torrents: Download torrent: - - Start / Stop Torrent - Avvia/arresta torrent + Avvia/arresta torrent - - + + Open destination folder Apri cartella di destinazione - - + + No action Nessuna azione - + Completed torrents: Torrent completati: - + Auto hide zero status filters Nascondi automaticamente filtri stato zero - + Desktop Desktop - + Start qBittorrent on Windows start up Esegui qBittorent all'avvio di Windows - + Show splash screen on start up Visualizza schermata di benevenuto all'avvio del programma - + Confirmation on exit when torrents are active Conferma uscita quando ci sono torrent attivi - + Confirmation on auto-exit when downloads finish Conferma uscita automatica a download completato - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Per impostare qBittorrent come programma predefinito per file .torrent e/o collegamenti Magnet<br/>puoi usare la finestra <span style=" font-weight:600;">Programmi predefiniti</span> nel <span style=" font-weight:600;">Pannello di controllo</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Layour contenuto torrent: - + Original Originale - + Create subfolder Crea sottocartella - + Don't create subfolder Non creare sottocartella - + The torrent will be added to the top of the download queue Il torrent verrà aggiunto in cima alla coda di download - + Add to top of queue The torrent will be added to the top of the download queue Aggiungi in cima alla coda - + When duplicate torrent is being added Quando viene aggiunto torrent duplicato - + Merge trackers to existing torrent Unisci i tracker al torrent esistente - + + Keep unselected files in ".unwanted" folder + Conserva file non selezionati nella cartella ".unwanted". + + + Add... Aggiungi... - + Options.. Opzioni... - + Remove Rimuovi - + Email notification &upon download completion &Notifica email a download completato - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protocollo connessione peer: - + Any Qualsiasi - + I2P (experimental) I2P (sperimentale) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Se è abilitato &quot;modo mixed&quot; I torrent I2P possono anche ottenere peer da fonti diverse dal tracker e connettersi a IP regolari, senza fornire alcuna anonimizzazione. + <html><head/><body><p>Se è abilitato &quot;modo mixed&quot; I torrent I2P possono anche ottenere peer da fonti diverse dal tracker e connettersi a IP regolari, senza fornire alcuna anonimizzazione. Questo può essere utile se l'utente non è interessato all'anonimizzazione di I2P, ma vuole comunque essere in grado di connettersi ai peer I2P.</p></body></html> - + Mixed mode Modo mixed - + Some options are incompatible with the chosen proxy type! Alcune opzioni sono incompatibili con il tipo di proxy scelto! - + If checked, hostname lookups are done via the proxy Se selezionata le ricerche del nome host vengono eseguite tramite il proxy - + Perform hostname lookup via proxy Esegui ricerca nome host tramite proxy - + Use proxy for BitTorrent purposes Usa proxy per scopi BitTorrent - + RSS feeds will use proxy I feed RSS useranno il proxy - + Use proxy for RSS purposes Usa proxy per scopi RSS - + Search engine, software updates or anything else will use proxy Motore di ricerca, aggiornamenti software o qualsiasi altra cosa userà il proxy - + Use proxy for general purposes Usa il proxy per scopi generali - + IP Fi&ltering Fi&ltraggio IP - + Schedule &the use of alternative rate limits Pianifica l'&uso di limiti di rapporto alternativi - + From: From start time Da: - + To: To end time A: - + Find peers on the DHT network Cerca peer sulla rete DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6153,140 +6392,188 @@ Richiedi crittografia: connettiti solo ai peer con crittografia protocollo Disabilita la crittografia: connettiti solo ai peer senza crittografia protocollo - + Allow encryption Permetti criptazione - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Più informazioni</a>) - + Maximum active checking torrents: Numero massimo di torrent di controllo attivi: - + &Torrent Queueing Accodamento &torrent - + When total seeding time reaches Quando viene raggiunto il tempo totale seeding - + When inactive seeding time reaches Quando viene raggiunto il tempo seeding non attivo - A&utomatically add these trackers to new downloads: - Aggiungi a&utomaticamente questi server traccia ai nuovi download: + Aggiungi a&utomaticamente questi server traccia ai nuovi download: - + RSS Reader Lettore RSS - + Enable fetching RSS feeds Abilita recupero fonti RSS - + Feeds refresh interval: Intervallo aggiornamento fonti: - + + Same host request delay: + Ritardo richiesta per medesimo host: + + + Maximum number of articles per feed: Numero massimo articoli per fonte: - - - + + + min minutes min - + Seeding Limits Limiti seeding - Pause torrent - Pausa torrent + Pausa torrent - + Remove torrent Rimuovi torrent - - Remove torrent and its files - Rimuovi torrent e relativi file + + Remove torrent and its files + Rimuovi torrent e relativi file + + + + Enable super seeding for torrent + Abilita super seeding per torrent + + + + When ratio reaches + Quando raggiungi rapporto + + + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + - - Enable super seeding for torrent - Abilita super seeding per torrent + + Also store search results + - - When ratio reaches - Quando raggiungi rapporto + + History length + - + RSS Torrent Auto Downloader Download automatico torrent RSS - + Enable auto downloading of RSS torrents Abilita download automatico di torrent RSS - + Edit auto downloading rules... Modifica regole download automatico... - + RSS Smart Episode Filter Filtro veloce episodi RSS - + Download REPACK/PROPER episodes Download episodi REPACK/PROPRI - + Filters: Filtri: - + Web User Interface (Remote control) Interfaccia utente web (controllo remoto) - + IP address: Indirizzo IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6295,42 +6582,41 @@ Specificare un indirizzo IPv4 o IPv6. Si può usare "0.0.0.0" per qual "::" per qualsiasi indirizzo IPv6, o "*" sia per IPv4 che IPv6. - + Ban client after consecutive failures: Ban client dopo fallimenti consecutivi: - + Never Mai - + ban for: ban per: - + Session timeout: Timeout sessione: - + Disabled Disabilitato - Enable cookie Secure flag (requires HTTPS) - Abilita flag cookie sicuro (richiede HTTPS) + Abilita flag cookie sicuro (richiede HTTPS) - + Server domains: Domini server: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6344,444 +6630,497 @@ Usa ';' per dividere voci multiple. Si può usare il carattere jolly '*'. - + &Use HTTPS instead of HTTP &Usa HTTPS invece di HTTP - + Bypass authentication for clients on localhost Salta autenticazione per i client in localhost - + Bypass authentication for clients in whitelisted IP subnets Salta autenticazione per i client nelle sottoreti IP in elenco autorizzati - + IP subnet whitelist... Sottoreti IP elenco autorizzati... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Per usare l'indirizzo client inoltrato (intestazione X-Forwarded-For) specifica gli IP del proxy inverso (o le sottoreti, ad esempio 0.0.0.0/24). Usa ';' per dividere più voci. - + Upda&te my dynamic domain name Aggio&rna il mio nome dominio dinamico - + Minimize qBittorrent to notification area Minimizza qBittorrent nell'area di notifica - + + Search + + + + + WebUI + + + + Interface Interfaccia - + Language: Lingua: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Stile icona di sistema: - - + + Normal Normale - + File association Associazione file - + Use qBittorrent for .torrent files Usa qBittorrent per i file .torrent - + Use qBittorrent for magnet links Usa qBittorrent per i collegamenti magnet - + Check for program updates Controlla aggiornamenti programma - + Power Management Risparmio energia - + + &Log Files + + + + Save path: Percorso salvataggio: - + Backup the log file after: Esegui backup file registro dopo: - + Delete backup logs older than: Elimina registri di backup più vecchi di: - + + Show external IP in status bar + + + + When adding a torrent All'aggiunta di un torrent - + Bring torrent dialog to the front Finestra torrent in primo piano - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Elimina i file .torrent anche se l'aggiunta è stata annullata - + Also when addition is cancelled Anche se l'aggiunta è annullata - + Warning! Data loss possible! Attenzione! Possibile perdita di dati! - + Saving Management Gestione Salvataggi - + Default Torrent Management Mode: Modalità gestione torrent predefinita: - + Manual Manuale - + Automatic Automatica - + When Torrent Category changed: Quando la Categoria del Torrent viene cambiata: - + Relocate torrent Sposta torrent - + Switch torrent to Manual Mode Imposta torrent sulla Modalità Manuale - - + + Relocate affected torrents Sposta torrent interessati - - + + Switch affected torrents to Manual Mode Imposta i torrent interessati sulla Modalità Manuale - + Use Subcategories Usa sottocategorie - + Default Save Path: Percorso salvataggio predefinito: - + Copy .torrent files to: Copia i file .torrent in: - + Show &qBittorrent in notification area Visualizza &qBittorrent nell'area di notifica - &Log file - Fi&le registro + Fi&le registro - + Display &torrent content and some options Visualizza contenuto &torrent e alcune opzioni - + De&lete .torrent files afterwards E&limina file .torrent alla fine - + Copy .torrent files for finished downloads to: Copia i file .torrent per i download completati in: - + Pre-allocate disk space for all files Prealloca lo spazio su disco per tutti i file - + Use custom UI Theme Usa tema custom UI - + UI Theme file: Usa file tema: - + Changing Interface settings requires application restart La modifica dell'interfaccia richiede il riavvio dell'applicazione - + Shows a confirmation dialog upon torrent deletion Visualizza una finestra di conferma dopo l'eliminazione del torrent - - + + Preview file, otherwise open destination folder Anteprima file, altrimenti apri cartella destinazione - - Show torrent options - Visualizza opzioni torrent + Visualizza opzioni torrent - + Shows a confirmation dialog when exiting with active torrents Visualizza una finestra di dialogo di conferma quando vuoi uscire e hai torrent attivi - + When minimizing, the main window is closed and must be reopened from the systray icon Quando minimizzata, la finestra principale viene chiusa e deve essere riaperta dall'icona nella barra di sistema - + The systray icon will still be visible when closing the main window L'icona nedlla barra di sistema sarà comunque visibile quando si chiude la finestra principale - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Chiudi qBittorrent nell'area di notifica - + Monochrome (for dark theme) Monocromatico (per tema scuro) - + Monochrome (for light theme) Monocromatico (per tema chiaro) - + Inhibit system sleep when torrents are downloading Inibisci sospensione del sistema quando i torrent sono in download - + Inhibit system sleep when torrents are seeding Inibisci sospensione del sistema quando i torrent sono in seeding - + Creates an additional log file after the log file reaches the specified file size Crea un file registro aggiuntivo dopo che il file registro raggiunge la dimensione specificata - + days Delete backup logs older than 10 days giorni - + months Delete backup logs older than 10 months mesi - + years Delete backup logs older than 10 years anni - + Log performance warnings Avvisi prestazioni registro - The torrent will be added to download list in a paused state - Il torrent verrà aggiunto all'elenco di download ma in uno stato di pausa + Il torrent verrà aggiunto all'elenco di download ma in uno stato di pausa - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Non avviare il download automaticamente - + Whether the .torrent file should be deleted after adding it Se il file .torrent deve essere eliminato dopo averlo aggiunto - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Alloca lo spazio pieno per il file su disco prima di avviare i download, per ridurre al minimo la frammentazione. Utile solo per gli HDD. - + Append .!qB extension to incomplete files Aggiungi l'estensione .!qB ai file incompleti - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Quando viene scaricato un torrent, chiede di aggiungere torrent da qualsiasi file .torrent trovato al suo interno - + Enable recursive download dialog Abilita la conferma ricorsiva dei download - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatico: varie proprietà del torrent (ad es. percorso salvataggio) saranno decise dalla categoria associata Manuale: varie proprietà del torrent (ad es. percorso salvataggio) vanno assegnate manualmente - + When Default Save/Incomplete Path changed: Quando il Percorso di Salvataggio Predefinito/Incompleto è cambiato: - + When Category Save Path changed: Quando modifichi percorso salvataggio categoria: - + Use Category paths in Manual Mode Usa percorsi categorie in modalità manuale - + Resolve relative Save Path against appropriate Category path instead of Default one Risolvi il percorso di salvataggio relativo rispetto al percorso di categoria appropriato invece di quello predefinito - + Use icons from system theme Usa le icone dal tema di sistema - + Window state on start up: Stato della finestra all'avvio: - + qBittorrent window state on start up Stato della finestra di qBittorrent all'avvio - + Torrent stop condition: Condizione stop torrent: - - + + None Nessuna - - + + Metadata received Ricevuti metadati - - + + Files checked File controllati - + Ask for merging trackers when torrent is being added manually Quando il torrent viene aggiunto manualmente chiedi di unire i tracker - + Use another path for incomplete torrents: Usa un altro percorso per i torrent incompleti: - + Automatically add torrents from: Aggiungi automaticamente i torrent da: - + Excluded file names Nomi file esclusi - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6811,842 +7150,916 @@ readme.txt: filtra il nome esatto del file. readme[0-9].txt: filtro 'readme1.txt', 'readme2.txt' ma non 'readme10.txt'. - + Receiver Ricevitore - + To: To receiver A: - + SMTP server: Server SMTP: - + Sender Trasmittente - + From: From sender Da: - + This server requires a secure connection (SSL) Questo server richiede una connessione sicura (SSL) - - + + Authentication Autenticazione - - - - + + + + Username: Nome utente: - - - - + + + + Password: Password: - + Run external program Esegui programma esterno - Run on torrent added - Esegui a torrent aggiunto + Esegui a torrent aggiunto - Run on torrent finished - Esegui a torrent completato + Esegui a torrent completato - + Show console window Visualizza finestra console - + TCP and μTP TCP e µTP - + Listening Port Porta di Ascolto - + Port used for incoming connections: Porta usata per le connessioni in entrata: - + Set to 0 to let your system pick an unused port Imposta a 0 per consentire al sistema di scegliere una porta non usata - + Random Casuale - + Use UPnP / NAT-PMP port forwarding from my router Usa UPnP / NAT-PMP per aprire le porte del mio router - + Connections Limits Limiti Connessioni - + Maximum number of connections per torrent: Numero massimo connessioni per torrent: - + Global maximum number of connections: Numero massimo globale di connessioni: - + Maximum number of upload slots per torrent: Numero massimo connessioni in invio per torrent: - + Global maximum number of upload slots: Numero massimo globale di connessioni in invio: - + Proxy Server Server Proxy - + Type: Tipo: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Porta: - + Otherwise, the proxy server is only used for tracker connections Altrimenti, il server proxy è usato solamente per le connessioni ai server traccia - + Use proxy for peer connections Usa il proxy per le connessioni ai nodi - + A&uthentication A&utenticazione - + Info: The password is saved unencrypted Info: La password è salvata in chiaro - + Filter path (.dat, .p2p, .p2b): Percorso filtro (.dat, .p2p, p2b): - + Reload the filter Ricarica il filtro - + Manually banned IP addresses... Indirizzi IP messi al bando manualmente... - + Apply to trackers Applica ai server traccia - + Global Rate Limits Limiti di velocità globali - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Invio: - - + + Download: Download: - + Alternative Rate Limits Limiti di velocità alternativi - + Start time Data avvio - + End time Data fine - + When: Quando: - + Every day Ogni giorno - + Weekdays Giorni feriali - + Weekends Fine settimana - + Rate Limits Settings Impostazioni limiti di velocità - + Apply rate limit to peers on LAN Applica limiti di velocità ai nodi in LAN - + Apply rate limit to transport overhead Applica limiti di velocità al traffico di servizio - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Applica limiti di velocità al protocollo µTP - + Privacy Privacy - + Enable DHT (decentralized network) to find more peers Abilita DHT (rete decentralizzata) per trovare più nodi - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Scambia nodi con client Bittorrent compatibili (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Abilita scambio nodi (PeX) per trovare più nodi - + Look for peers on your local network Cerca nodi nella rete locale - + Enable Local Peer Discovery to find more peers Abilita ricerca locale nodi per trovare più nodi - + Encryption mode: Modalità criptazione: - + Require encryption Richiedi criptazione - + Disable encryption Disabilita criptazione - + Enable when using a proxy or a VPN connection Attiva quando viene usato un proxy o una connessione VPN - + Enable anonymous mode Abilita modalità anonima - + Maximum active downloads: Numero massimo download attivi: - + Maximum active uploads: Numero massimo invii attivi: - + Maximum active torrents: Numero massimo torrent attivi: - + Do not count slow torrents in these limits Non contare torrent lenti in questi limiti - + Upload rate threshold: Soglia limite di invio: - + Download rate threshold: Soglia limite download: - - - + + + + sec seconds s - + Torrent inactivity timer: Cronometro inattività torrent: - + then poi - + Use UPnP / NAT-PMP to forward the port from my router Usa UPnP / NAT-PMP per aprire le porte del mio router - + Certificate: Certificato: - + Key: Chiave: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informazioni sui certificati</a> - + Change current password Modifica password attuale - Use alternative Web UI - Usa interfaccia web alternativa + Usa interfaccia web alternativa - + Files location: Posizione file: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Sicurezza - + Enable clickjacking protection Abilita la protezione al clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Abilita la protezione al Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Abilita validazione intestazione host - + Add custom HTTP headers Aggiungi intestazioni HTTP personalizzate - + Header: value pairs, one per line Intestazione: coppia di valori, uno per linea - + Enable reverse proxy support Abilita supporto proxy inverso - + Trusted proxies list: Elenco proxy attendibili: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servizio: - + Register Registra - + Domain name: Nome dominio: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Abilitando queste opzioni puoi <strong>perdere irrimediabilmente</strong> i tuoi file .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Se abiliti la seconda opzione (&ldquo;Anche quando l'aggiunta viene annullata&rdquo;) il file .torrent <strong>verrà cancellato</strong> anche se premi &ldquo;<strong>Annulla</strong>&rdquo; nella finestra di dialogo &ldquo;Aggiungi torrent&rdquo; - + Select qBittorrent UI Theme file Seleziona file tema UI qBittorent - + Choose Alternative UI files location Scegli posizione alternativa file interfaccia - + Supported parameters (case sensitive): Parametri supportati (maiuscole/minuscole): - + Minimized Minimizzata - + Hidden Nascosta - + Disabled due to failed to detect system tray presence Disabilitato a causa del mancato rilevamento della presenza della barra delle applicazioni - + No stop condition is set. Non è impostata alcuna condizione di stop. - + Torrent will stop after metadata is received. Il torrent si interromperà dopo la ricezione dei metadati. - - Torrents that have metadata initially aren't affected. - Non sono interessati i torrent che inizialmente hanno metadati. - - - + Torrent will stop after files are initially checked. Il torrent si fermerà dopo che i file sono stati inizialmente controllati. - + This will also download metadata if it wasn't there initially. Questo scaricherà anche i metadati se inizialmente non erano presenti. - + %N: Torrent name %N: nome torrent - + %L: Category %L: categoria - + %F: Content path (same as root path for multifile torrent) %F: percorso contenuto (uguale al percorso radice per i torrent multi-file) - + %R: Root path (first torrent subdirectory path) %R: percorso radice (primo percorso sottocartella torrent) - + %D: Save path %D: percorso salvataggio - + %C: Number of files %C: numero di file - + %Z: Torrent size (bytes) %Z: dimensione torrent (byte) - + %T: Current tracker %T: server traccia attuale - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Suggerimento: inserisci i parametri con i segni di quotazione per evitare tagli del testo negli spazi bianchi (per esempio "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nessuno) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Un torrent sarà considerato lento se le sue velocità di download e upload resteranno sotto questi valori per "Cronometro inattività torrent" secondi - + Certificate Certificato - + Select certificate Seleziona certificato - + Private key Chiave privata - + Select private key Seleziona chiave privata - + + WebUI configuration failed. Reason: %1 + Configurazione WebUI non riuscita. +Motivo: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Seleziona cartella da monitorare - + Adding entry failed Aggiunta voce non riuscita - - Location Error - Errore percorso + + The WebUI username must be at least 3 characters long. + Il nome utente WebUI deve contenere almeno 3 caratteri. - - The alternative Web UI files location cannot be blank. - Il percorso dei file della Web UI non può essere vuoto. + + The WebUI password must be at least 6 characters long. + La password WebUI deve contenere almeno 6 caratteri. + + + + Location Error + Errore percorso - - + + Choose export directory Scegli cartella di esportazione - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Quando queste opzioni sono abilitate, qBittorrent <strong>eliminerà</strong> i file .torrent dopo che sono stati aggiunti alla sua coda di download correttamente (prima opzione) o meno (seconda opzione). Questa modalità verrà applicato <strong>non solo</strong> ai file aperti tramite l'azione del menu &ldquo;Aggiungi torrent&rdquo;, ma anche a quelli aperti tramite l'associazione del tipo di file - + qBittorrent UI Theme file (*.qbtheme config.json) File tema interfaccia utente qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: tag (separati da virgola) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (o '-' se non disponibile) - + %J: Info hash v2 (or '-' if unavailable) %I: Info hash v2 (o '-' se non disponibile) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID torrent (hash info SHA-1 per torrent v1 o hash info SHA-256 troncato per torrent v2/ibrido) - - - + + + Choose a save directory Scegli una cartella di salvataggio - + + Torrents that have metadata initially will be added as stopped. + I torrent con metadati iniziali saranno aggiunti come fermati. + + + Choose an IP filter file Scegli un file filtro IP - + All supported filters Tutti i filtri supportati - + + The alternative WebUI files location cannot be blank. + Il percorso alternativo dei file WebUI non può essere vuoto. + + + Parsing error Errore di elaborazione - + Failed to parse the provided IP filter Impossibile analizzare il filtro IP fornito - + Successfully refreshed Aggiornato correttamente - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Analisi filtro IP completata: sono state applicate %1 regole. - + Preferences Preferenze - + Time Error Errore Orario - + The start time and the end time can't be the same. Gli orari di inizio e fine non possono coincidere. - - + + Length Error Errore di Lunghezza - - - The Web UI username must be at least 3 characters long. - Il nome utente per l'interfaccia web deve essere lungo almeno 3 caratteri. - - - - The Web UI password must be at least 6 characters long. - La password per l'interfaccia web deve essere lunga almeno 6 caratteri. - PeerInfo - + Unknown Sconosciuto - + Interested (local) and choked (peer) Interessato (locale) e chocked (peer) - + Interested (local) and unchoked (peer) Interessato (locale) e unchocked (peer) - + Interested (peer) and choked (local) Interessato (peer) e chocked (locale) - + Interested (peer) and unchoked (local) Interessato (peer) e unchocked (locale) - + Not interested (local) and unchoked (peer) Non interessato (locale) e unchocked (peer) - + Not interested (peer) and unchoked (local) Non interessato (peer) e unchocked (peer) - + Optimistic unchoke Unchocke ottimistico - + Peer snubbed Peer ignorato - + Incoming connection Connessione in entrata - + Peer from DHT Peer da DHT - + Peer from PEX Peer da PEX - + Peer from LSD Peer da LSD - + Encrypted traffic Traffico criptato - + Encrypted handshake Handshake criptato + + + Peer is using NAT hole punching + + PeerListWidget @@ -7803,7 +8216,7 @@ Per i dettagli controlla il registro eventi. Il peer "%1" è stato bannato manualmente - + N/A N/D @@ -7826,7 +8239,7 @@ Per i dettagli controlla il registro eventi. Elenco dei nodi da aggiungere (un IP per riga): - + Format: IPv4:port / [IPv6]:port Formato: IPv4:porta / [IPv6]: porta @@ -7867,27 +8280,27 @@ Per i dettagli controlla il registro eventi. PiecesBar - + Files in this piece: File in questa parte: - + File in this piece: File in questo segmento: - + File in these pieces: File in questi segmenti: - + Wait until metadata become available to see detailed information Aspetta che i metadati siano disponibili per vedere informazioni dettagliate - + Hold Shift key for detailed information Tieni premuto il tasto Shift per informazioni dettagliate @@ -7900,58 +8313,58 @@ Per i dettagli controlla il registro eventi. Estensioni di ricerca - + Installed search plugins: Estensioni di ricerca installate: - + Name Nome - + Version Versione - + Url Indirizzo - - + + Enabled Attivato - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Attenzione: Assicurati di essere in regola con le leggi sul diritto d'autore del tuo paese quando scarichi torrent da questi motori di ricerca. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Puoi ottenere nuovi plugin per i motori di ricerca qui: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installane uno nuovo - + Check for updates Verifica aggiornamenti - + Close Chiudi - + Uninstall Disinstalla @@ -8072,17 +8485,17 @@ Questi plugin verranno disabilitati. Sorgente plugin - + Search plugin source: Sorgente plugin ricerca: - + Local file File locale - + Web link Collegamento web @@ -8100,70 +8513,76 @@ Questi plugin verranno disabilitati. Power management found suitable D-Bus interface. Interface: %1 - + La gestione alimentazione ha trovato un'interfaccia D-Bus adatta. +Interfaccia: %1 Power management error. Did not found suitable D-Bus interface. - + Errore gestione dell'alimentazione. +Non è stata trovata l'interfaccia D-Bus adatta. Power management error. Action: %1. Error: %2 - + Errore gestione alimentazione. +Azione: %1. +Errore: %2. Power management unexpected error. State: %1. Error: %2 - + Errore imprevisto gestione alimentazione. +Stato: %1. +Errore: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: I seguenti file del torrent "%1" supportano l'anteprima, selezionane uno: - + Preview Anteprima - + Name Nome - + Size Dimensione - + Progress Avanzamento - + Preview impossible Anteprima impossibile - + Sorry, we can't preview this file: "%1". Non è possibile visualizzare l'anteprima di questo file: "%1". - + Resize columns Ridimensiona colonne - + Resize all non-hidden columns to the size of their contents Ridimensiona tutte le colonne non nascoste alla dimensione del loro contenuto @@ -8176,27 +8595,27 @@ Questi plugin verranno disabilitati. Private::FileLineEdit - + Path does not exist Il percorso non esiste - + Path does not point to a directory Il percorso non punta ad una cartella - + Path does not point to a file Il percorso non punta ad un file - + Don't have read permission to path Non hai i permessi di lettura per il percorso - + Don't have write permission to path Non hai i permessi di scrittura per il percorso @@ -8237,12 +8656,12 @@ Questi plugin verranno disabilitati. PropertiesWidget - + Downloaded: Scaricati: - + Availability: Disponibilità: @@ -8257,53 +8676,53 @@ Questi plugin verranno disabilitati. Trasferimento - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Durata attività: - + ETA: Tempo stimato: - + Uploaded: Inviati: - + Seeds: Distributori: - + Download Speed: Velocità download: - + Upload Speed: Velocità upload: - + Peers: Nodi: - + Download Limit: Limite download: - + Upload Limit: Limite upload: - + Wasted: Sprecati: @@ -8313,193 +8732,249 @@ Questi plugin verranno disabilitati. Connessioni: - + Information Informazioni - + Info Hash v1: Info hash v1: - + Info Hash v2: Info hash v2: - + Comment: Commento: - + Select All Seleziona tutti - + Select None Deseleziona tutti - + Share Ratio: Rapporto di condivisione: - + Reannounce In: Riannuncio tra: - + Last Seen Complete: Visto completo l'ultima volta: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Dimensione totale: - + Pieces: Parti: - + Created By: Creato da: - + Added On: Aggiunto il: - + Completed On: Completato il: - + Created On: Creato il: - + + Private: + + + + Save Path: Percorso salvataggio: - + Never Mai - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ne hai %3) - - + + %1 (%2 this session) %1 (%2 in questa sessione) - - + + + N/A N/D - + + Yes + + + + + No + No + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (condiviso per %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (max %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 in totale) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 in media) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nuovo distributore web + Nuovo distributore web - Remove Web seed - Rimuovi distributore web + Rimuovi distributore web - Copy Web seed URL - Copia URL distributore web + Copia URL distributore web - Edit Web seed URL - Modifica URL distributore web + Modifica URL distributore web - + Filter files... Filtra elenco file... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled I grafici della velocità sono disabilitati - + You can enable it in Advanced Options Puoi abilitarlo in Opzioni avanzate - New URL seed New HTTP source - Nuovo URL distributore + Nuovo URL distributore - New URL seed: - Nuovo URL distributore: + Nuovo URL distributore: - - This URL seed is already in the list. - Questo URL distributore è già nell'elenco. + Questo URL distributore è già nell'elenco. - + Web seed editing Modifica distributore web - + Web seed URL: URL distributore web: @@ -8518,23 +8993,23 @@ Questi plugin verranno disabilitati. Impossibile salvare dati download automatico RSS su %1. Errore: %2 - + Invalid data format Formato dati non valido - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... L'articolo RSS '%1' è accettato dalla regola '%2'. Tentativo di aggiunta torrent... - + Failed to read RSS AutoDownloader rules. %1 Impossibile leggere le regole di RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Impossibile caricare regole download automatico RSS. Motivo: %1 @@ -8542,22 +9017,22 @@ Tentativo di aggiunta torrent... RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Impossibile scaricare fonte RSS da '%1'. Motivo: %2 - + RSS feed at '%1' updated. Added %2 new articles. Fonte RSS su '%1' aggiornata. Aggiunti %2 nuovi articoli. - + Failed to parse RSS feed at '%1'. Reason: %2 Impossibile analizzare fonte RSS su '%1'. Motivo: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Download completato feed RSS in '%1'. Avvio analisi. @@ -8598,12 +9073,12 @@ Formato dati non valido. RSS::Private::Parser - + Invalid RSS feed. Fonte RSS non valida. - + %1 (line: %2, column: %3, offset: %4). %1 (linea: %2, colonna: %3, scostamento: %4). @@ -8611,103 +9086,103 @@ Formato dati non valido. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Impossibile salvare la configurazione della sessione RSS. File: "%1". Errore: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Impossibile salvare i dati della sessione RSS. File: "%1". Errore: "%2" - - + + RSS feed with given URL already exists: %1. Una fonte RSS con la URL fornita è già esistente: %1. - + Feed doesn't exist: %1. Il feed non esiste: %1. - + Cannot move root folder. Impossibile spostare percorso radice. - - + + Item doesn't exist: %1. L'elemento non esiste: %1. - + Couldn't move folder into itself. Impossibile spostare la cartella in se stessa. - + Cannot delete root folder. Impossibile eliminare percorso radice. - + Failed to read RSS session data. %1 Impossibile leggere i dati della sessione RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Impossibile analizzare i dati della sessione RSS. File: "%1". Errore: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Impossibile caricare i dati della sessione RSS. File: "%1". Errore: "formato dati non valido". - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Impossibile caricare il feed RSS. Feed: "%1". Motivo: URL è obbligatorio. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Impossibile caricare il feed RSS. Feed: "%1". Motivo: UID non valida. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Trovato feed RSS duplicato. UID: "%1". Errore: La configurazione sembra essere danneggiata. - + Couldn't load RSS item. Item: "%1". Invalid data format. Impossibile caricare articolo RSS. Item: "%1". Formato dati non valido. - + Corrupted RSS list, not loading it. Lista RSS corrotta, non è stata caricata. - + Incorrect RSS Item path: %1. Percorso elemento RSS non corretto: %1. - + RSS item with given path already exists: %1. Un elemento RSS col percorso fornito è già esistente: %1. - + Parent folder doesn't exist: %1. La cartella superiore non esiste: %1. @@ -8731,8 +9206,8 @@ Errore: "formato dati non valido". - - + + Mark items read Marca oggetti come letti @@ -8757,132 +9232,132 @@ Errore: "formato dati non valido". Torrent: (doppio clic per scaricare) - - + + Delete Elimina - + Rename... Rinomina... - + Rename Rinomina - - + + Update Aggiorna - + New subscription... Nuova sottoscrizione... - - + + Update all feeds Aggiorna tutte le fonti - + Download torrent Scarica torrent - + Open news URL Apri URL novità - + Copy feed URL Copia URL fonte - + New folder... Nuova cartella... - + Edit feed URL... Modifica URL feed... - + Edit feed URL Modifica URL feed - + Please choose a folder name Scegli un nome cartella - + Folder name: Nome cartella: - + New folder Nuova cartella - - + + Please type a RSS feed URL Inserisci una URL fonte RSS - - + + Feed URL: URL fonte: - + Deletion confirmation Conferma cancellazione - + Are you sure you want to delete the selected RSS feeds? Sei sicuro di voler cancellare le fonti RSS selezionate? - + Please choose a new name for this RSS feed Scegli un nuovo nome per questa fonte RSS - + New feed name: Nuovo nome fonte: - + Rename failed Rinominazione non riuscita - + Date: Data: - + Feed: - + Feed: - + Author: Autore: @@ -8890,38 +9365,38 @@ Errore: "formato dati non valido". SearchController - + Python must be installed to use the Search Engine. Per usare i motori di ricerca deve essere installato Python. - + Unable to create more than %1 concurrent searches. Impossibile creare più di %1 motori di ricerca concorrenti. - - + + Offset is out of range Offset fuori intervallo - + All plugins are already up to date. Tutti i plugin sono aggiornati. - + Updating %1 plugins Aggiornamento %1 plugin - + Updating plugin %1 Aggiornamento plugin %1 - + Failed to check for plugin updates: %1 Controllo aggiornamenti plugin fallito: %1 @@ -8996,132 +9471,146 @@ Errore: "formato dati non valido". Dimensione: - + Name i.e: file name Nome - + Size i.e: file size Dimensione - + Seeders i.e: Number of full sources Sorgenti - + Leechers i.e: Number of partial sources Sorgenti parziali - Search engine - Motore ricerca + Motore ricerca - + Filter search results... Risultati filtro ricerca... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Risultati (visualizza <i>%1</i> su <i>%2</i>): - + Torrent names only Solo nomi torrent - + Everywhere Qualsiasi - + Use regular expressions Usa espressione regolare - + Open download window Apri finestra download - + Download Download - + Open description page Apri descrizione pagina - + Copy Copia - + Name Nome - + Download link Collegamento download - + Description page URL URL descrizione pagina - + Searching... Ricerca... - + Search has finished Riecrca completata - + Search aborted Ricerca annullata - + An error occurred during search... Si è verificato un errore durante la ricerca... - + Search returned no results La ricerca non ha prodotto risultati - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilità colonna - + Resize columns Ridimensiona colonne - + Resize all non-hidden columns to the size of their contents Ridimensiona tutte le colonne non nascoste alla dimensione del loro contenuto @@ -9129,104 +9618,104 @@ Errore: "formato dati non valido". SearchPluginManager - + Unknown search engine plugin file format. Formato estensione motore di ricerca sconosciuto. - + Plugin already at version %1, which is greater than %2 Plugin già versione %1, che è maggiroe di %2 - + A more recent version of this plugin is already installed. Una versione più recente di questa estensione è già installata. - + Plugin %1 is not supported. Plugin %1 non supportato. - - + + Plugin is not supported. Estensione non supportata. - + Plugin %1 has been successfully updated. Aggiornamento plugin %1 completato. - + All categories Tutte le categorie - + Movies Film - + TV shows Serie TV - + Music Musica - + Games Giochi - + Anime Animazione - + Software Applicazioni - + Pictures Immagini - + Books Libri - + Update server is temporarily unavailable. %1 Server aggiornamenti temporaneamente non disponibile. %1 - - + + Failed to download the plugin file. %1 Impossibile scaricare il file di estensione. %1 - + Plugin "%1" is outdated, updating to version %2 Il plugin "%1" è obsoleto - aggiornamento alla versione %2 - + Incorrect update info received for %1 out of %2 plugins. Info aggiornamento ricevute non corrette per %1 di %2 plugin. - + Search plugin '%1' contains invalid version string ('%2') L'estensione di ricerca '%1' contiene stringa di versione non valida ('%2') @@ -9236,114 +9725,153 @@ Errore: "formato dati non valido". - - - - Search Cerca - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Non ci sono estensioni di ricerca installate. Fai clic sul pulsante "Estensioni di ricerca..." in basso a destra per installare una estensione. - + Search plugins... Estensioni ricerca... - + A phrase to search for. Una frase da cercare. - + Spaces in a search term may be protected by double quotes. Gli spazi in un termine di ricerca possono essere conservati usando i caratteri di quotazione. - + Example: Search phrase example Esempio: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;testo esempio&quot;</b>: ricerca per <b>testo esempio</b> - + All plugins Tutte le estensioni - + Only enabled Solo abilitati - + + + Invalid data format. + Formato dati non valido. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: cerca <b>foo</b> e <b>bar</b> - + + Refresh + + + + Close tab Chiudi scheda - + Close all tabs Chiudi tutte le schede - + Select... Seleziona... - - - + + Search Engine Motore di Ricerca - + + Please install Python to use the Search Engine. Installa Python per usare il motore di ricerca. - + Empty search pattern Campo di ricerca vuoto - + Please type a search pattern first È necessario inserire dei termini di ricerca prima - - Stop - Ferma + + + Stop + Ferma + + + Search has finished + La ricerca è terminata + + + Search has failed + La ricerca non ha avuto successo + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + - - Search has finished - La ricerca è terminata + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - La ricerca non ha avuto successo + + Failed to save search history. File: "%1". Error: "%2" + @@ -9457,34 +9985,34 @@ Uso il file di riserva per ripristinare le impostazioni: %1 - + Upload: Upload: - - - + + + - - - + + + KiB/s KB/s - - + + Download: Download: - + Alternative speed limits Limiti velocità alternativi @@ -9572,7 +10100,7 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Select Graphs - Campi grafico + Seleziona grafico @@ -9612,7 +10140,7 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Overhead Upload - Eccesso uplaod + Eccesso upload @@ -9676,32 +10204,32 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Tempo medio in coda: - + Connected peers: Nodi connessi: - + All-time share ratio: Rapporto condivisione da sempre: - + All-time download: Download in generale: - + Session waste: Spreco sessione: - + All-time upload: Invii da sempre: - + Total buffer size: Dimensione buffer totale: @@ -9716,12 +10244,12 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Lavori I/O in coda: - + Write cache overload: Sovraccarico cache scrittura: - + Read cache overload: Sovraccarico cache lettura: @@ -9740,51 +10268,67 @@ Uso il file di riserva per ripristinare le impostazioni: %1 StatusBar - + Connection status: Stato connessione: - - + + No direct connections. This may indicate network configuration problems. Nessuna connessione diretta. Questo potrebbe indicare problemi di configurazione della rete. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodi - + qBittorrent needs to be restarted! qBittorrent ha bisogno di essere riavviato! - - - + + + Connection Status: Stato connessione: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Non in linea. Questo di solito significa che qBittorrent non è riuscito a mettersi in ascolto sulla porta selezionata per le connessioni in entrata. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Clicca per passare ai limiti alternativi di velocità - + Click to switch to regular speed limits Clicca per passare ai limiti normali di velocità @@ -9813,14 +10357,22 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Completati (0) - Resumed (0) - Ripresi (0) + Ripresi (0) - Paused (0) - In pausa (0) + In pausa (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9882,10 +10434,29 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Completed (%1) Completati (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - In pausa (%1) + In pausa (%1) @@ -9893,14 +10464,12 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Spostamento (%1) - Resume torrents - Riprendi i torrent + Riprendi i torrent - Pause torrents - Metti in pausa i torrent + Metti in pausa i torrent @@ -9908,9 +10477,8 @@ Uso il file di riserva per ripristinare le impostazioni: %1 Rimuovi torrent - Resumed (%1) - Ripresi (%1) + Ripresi (%1) @@ -9951,17 +10519,17 @@ Uso il file di riserva per ripristinare le impostazioni: %1 TagFilterModel - + Tags Etichette - + All Tutti - + Untagged Senza etichetta @@ -9969,52 +10537,64 @@ Uso il file di riserva per ripristinare le impostazioni: %1 TagFilterWidget - + Add tag... Aggiungi etichetta... - + Remove tag Rimuovi etichetta - + Remove unused tags Rimuovi etichette non utilizzate - Resume torrents - Riprendi torrent + Riprendi torrent - Pause torrents - Metti torrent in pausa + Metti torrent in pausa - + Remove torrents Rimuovi torrent - New Tag - Nuova etichetta + Nuova etichetta + + + + Start torrents + + + + + Stop torrents + - + Tag: Etichetta: - + + Add tag + + + + Invalid tag name Nome etichetta non valido - + Tag name '%1' is invalid Il nome dell'etichetta '%1' non è valido @@ -10154,32 +10734,32 @@ Scegli un nome diverso e riprova. TorrentContentModel - + Name Nome - + Progress Avanzamento - + Download Priority Priorità download - + Remaining Rimanente - + Availability Disponibilità - + Total Size Dimensione totale @@ -10224,102 +10804,120 @@ Scegli un nome diverso e riprova. TorrentContentWidget - + Rename error Errore di ridenominazione - + Renaming Ridenominazione - + New name: Nuovo nome: - + Column visibility Visibilità colonna - + Resize columns Ridimensiona colonne - + Resize all non-hidden columns to the size of their contents Ridimensiona tutte le colonne non nascoste alla dimensione del loro contenuto - + Open Apri - + Open containing folder Apri cartella contenitore - + Rename... Rinomina... - + Priority Priorità - - + + Do not download Non scaricare - + Normal Normale - + High Alta - + Maximum Massima - + By shown file order Per ordine file visualizzato - + Normal priority Priorità normale - + High priority Priorità alta - + Maximum priority Priorità massima - + Priority by shown file order Priorità per ordine file visualizzato + + TorrentCreatorController + + + Too many active tasks + Troppi task attivi + + + + Torrent creation is still unfinished. + La creazione del torrent non è ancora completata. + + + + Torrent creation failed. + Creazione del torrent non riuscita. + + TorrentCreatorDialog @@ -10344,13 +10942,13 @@ Scegli un nome diverso e riprova. - + Select file Seleziona file - + Select folder Seleziona cartella @@ -10375,58 +10973,10 @@ Scegli un nome diverso e riprova. Dim. segmento: - + Auto Automatico - - 16 KiB - 16 KB - - - 32 KiB - 32 KB - - - 64 KiB - 64 KB - - - 128 KiB - 128 KB - - - 256 KiB - 256 KB - - - 512 KiB - 512 KB - - - 1 MiB - 1 MB - - - 2 MiB - 2 MB - - - 4 MiB - 4 MB - - - 8 MiB - 8 MB - - - 16 MiB - 16 MB - - - 32 MiB - 32 MB - Calculate number of pieces: @@ -10473,93 +11023,83 @@ Scegli un nome diverso e riprova. Campi - + You can separate tracker tiers / groups with an empty line. Puoi separare livelli/gruppi del tracker con una riga vuota. - + Web seed URLs: URL seed web: - + Tracker URLs: URL tracker: - + Comments: Commenti: - + Source: Sorgente: - + Progress: Progresso: - + Create Torrent Crea torrent - - + + Torrent creation failed Creazione torrent fallita - + Reason: Path to file/folder is not readable. Ragione: percorso file/cartella non leggibile. - + Select where to save the new torrent Seleziona dove salvare il nuovo torrent - + Torrent Files (*.torrent) File torrent (*.torrent) - - Reason: %1 - Ragione: %1 - - - + Add torrent to transfer list failed. - + Aggiunta torrent all'elenco di trasferimento non riuscito. - + Reason: "%1" - + Motivo: "%1" - + Add torrent failed - + Aggiunta torrent non riuscita - Reason: Created torrent is invalid. It won't be added to download list. - Ragione: il torrent creato non è valido. -Non verrà aggiunto all'elenco download. - - - + Torrent creator Crea torrent - + Torrent created: Torrent creato: @@ -10567,35 +11107,35 @@ Non verrà aggiunto all'elenco download. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Impossibile caricare la configurazione delle cartelle controllate. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Impossibile analizzare la configurazione delle cartelle controllate da %1. Errore: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Impossibile caricare la configurazione delle cartelle controllate da %1. Errore: "formato dati non valido". - + Couldn't store Watched Folders configuration to %1. Error: %2 Impossibile memorizzare la configurazione delle cartelle monitorate in %1. Errore: %2 - + Watched folder Path cannot be empty. Il percorso della cartella monitorata non può essere vuoto. - + Watched folder Path cannot be relative. Il percorso della cartella monitorata non può essere relativo. @@ -10603,28 +11143,30 @@ Errore: %2 TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI Magnet non valido. +URI: %1. +Motivo: %2 - + Magnet file too big. File: %1 File magnet troppo grande. File: %1 - + Failed to open magnet file: %1 Impossibile aprire il file magnet: %1 - + Rejecting failed torrent file: %1 Rifiuto file torrent fallito: %1 - + Watching folder: "%1" Cartella monitorata: "%1" @@ -10632,16 +11174,14 @@ File: %1 TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Impossibile allocare memoria durante la lettura del file. + Impossibile allocare memoria durante la lettura del file. File: "%1". Errore: "%2" - Invalid metadata - Metadati non validi + Metadati non validi @@ -10672,127 +11212,203 @@ Errore: "%2" Usa un altro percorso per i torrent incompleti - + Category: Categoria: - + + Torrent Share Limits + + + Torrent speed limits - Limiti velocità torrent + Limiti velocità torrent - + Download: Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Questi non supereranno i limiti globali - + Upload: Upload: - Torrent share limits - Limiti condivisione torrent + Limiti condivisione torrent - Use global share limit - Usa limite condivisione globale + Usa limite condivisione globale - Set no share limit - Rimuovi limiti condivisione + Rimuovi limiti condivisione - Set share limit to - Imposta limite condivisione a + Imposta limite condivisione a - ratio - rapporto + rapporto - total minutes - minuti totali + minuti totali - inactive minutes - minuti di inattività + minuti di inattività - + Disable DHT for this torrent Disabilita DHT per questo torrent - + Download in sequential order Scarica in ordine sequenziale - + Disable PeX for this torrent Disabilita PeX per questo torrent - + Download first and last pieces first Scarica prima il primo e l'ultimo pezzo - + Disable LSD for this torrent Disabilita LSD per questo torrent - + Currently used categories Categorie attualmente usate - - + + Choose save path Scegli percorso salvataggio - + Not applicable to private torrents Non applicabile ai torrent privati - No share limit method selected - Nessun metodo limite condivisione selezionato + Nessun metodo limite condivisione selezionato - Please select a limit method first - Prima scegli un metodo di limitazione + Prima scegli un metodo di limitazione + + + + TorrentShareLimitsWidget + + + + + + Default + Predefinito + + + + + + Unlimited + Illimitato + + + + + + Set to + Impostato a + + + + Seeding time: + Tempo seeding: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Tempo inattività seeding: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Rimuovi torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Abilita super seeding per torrent + + + + Ratio: + Rapporto: @@ -10803,32 +11419,36 @@ Errore: "%2" Tag torrent - New Tag - Nuova etichetta + Nuova etichetta + Add tag + + + + Tag: Etichetta: - + Invalid tag name Nome etichetta non valido - + Tag name '%1' is invalid. Il nome tag '%1' non è valido. - + Tag exists Etichetta esistente - + Tag name already exists. Nome dell'etichetta già esistente. @@ -10836,115 +11456,130 @@ Errore: "%2" TorrentsController - + Error: '%1' is not a valid torrent file. Errore: '%1' non è un file torrent valido. - + Priority must be an integer La priorità deve essere un valore intero - + Priority is not valid Priorità non valida - + Torrent's metadata has not yet downloaded Metadato torrent non ancora scaricato - + File IDs must be integers Gli ID file devono essere valori interi - + File ID is not valid ID file non valido - - - - + + + + Torrent queueing must be enabled L'accodamento torrent deve essere abilitato - - + + Save path cannot be empty Il valore 'Percorso salvataggio' non può essere vuoto - - + + Cannot create target directory Impossibile creare la cartella destinazione - - + + Category cannot be empty Il valore 'Categoria' non può essere vuoto - + Unable to create category Impossibile creare la categoria - + Unable to edit category Impossibile modificare la categoria - + Unable to export torrent file. Error: %1 Impossibile esportare il file torrent. Errore: %1 - + Cannot make save path Impossibile creare percorso salvataggio - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Parametro 'sort' non valido - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. '%1' non è un file indice valido. - + Index %1 is out of bounds. Indice '%1' fuori dai limiti. - - + + Cannot write to directory Impossibile scrivere nella cartella - + WebUI Set location: moving "%1", from "%2" to "%3" Interfaccia web imposta posizione: spostamento di "%1", da "%2" a "%3" - + Incorrect torrent name Nome torrent non corretto - - + + Incorrect category name Nome categoria non corretto @@ -10975,257 +11610,215 @@ Errore: "%2" TrackerListModel - - + Working - Funzionante + In elaborazione - + Disabled - + Disabilitato - + Disabled for this torrent - Disabilitato per questo torrent + Disabilitato per questo torrent - + This torrent is private - Questo torrent è privato + Questo torrent è privato - + N/A - N/D + N/D - + Updating... - Aggiornamento... + Aggiornamento... - + Not working - Non funzionante + Non funzionante - + Tracker error - + Errore tracker - + Unreachable - + Non raggiungibile - + Not contacted yet - Non ancora contattato - - - - Invalid status! - + Non ancora connesso - - URL/Announce endpoint + + Invalid state! - Tier - Livello - - - - Protocol + URL/Announce Endpoint - Status - Stato + BT Protocol + - - Peers + + Next Announce - - Seeds - Seed + + Min Announce + - - Leeches - Leech + Invalid status! + Stato non valido! - - Times Downloaded - N volte scaricati + URL/Announce endpoint + URL/annuncio endpoint - - Message - Messaggi + + Tier + Livello - - Next announce - + Protocol + Protocollo - - Min announce - + + Status + Stato - - v%1 - + + Peers + Nodi - - - TrackerListWidget - Working - Funzionante + + Seeds + Distributori - Disabled - Disabilitato + + Leeches + Leech - Disabled for this torrent - Disabilitato per questo torrent + + Times Downloaded + N volte scaricati - - This torrent is private - Questo torrent è privato + + Message + Messaggio - Updating... - Aggiornamento... + Next announce + Annuncio successivo - Not working - Non funzionante + Min announce + Annuncio min. - Not contacted yet - Non ancora contattato + v%1 + v%1 + + + TrackerListWidget - N/A - N/D + + This torrent is private + Questo torrent è privato - + Tracker editing Modifica tracker - + Tracker URL: URL tracker: - - + + Tracker editing failed Modifica tracker fallita - + The tracker URL entered is invalid. Il tracker inserito non è valido. - + The tracker URL already exists. L'URL tracker esiste già. - + Edit tracker URL... Modifica URL tracker... - + Remove tracker Rimuovi tracker - + Copy tracker URL Copia URL tracker - + Force reannounce to selected trackers Forza ri-annuncio ai tracker selezionati - + Force reannounce to all trackers Forza ri-annuncio a tutti i tracker - Tier - Livello - - - URL - URL - - - Status - Stato - - - Seeds - Seed - - - Times Downloaded - N volte scaricati - - - + Resize columns Ridimensiona colonne - + Resize all non-hidden columns to the size of their contents Ridimensiona tutte le colonne non nascoste alla dimensione del loro contenuto - Peers - Peer - - - + Add trackers... Aggiungi tracker... - Leeches - Leech - - - Message - Messaggi - - - + Column visibility Visbilità colonna @@ -11243,37 +11836,37 @@ Errore: "%2" Elenco tracker da aggiungere (uno per linea): - + µTorrent compatible list URL: URL elenco compatibile µTorrent: - + Download trackers list Download elenco tracker - + Add Aggiungi - + Trackers list URL error Errore URL elenco tracker - + The trackers list URL cannot be empty L'URL dell'elenco tracker non può essere vuota - + Download trackers list error Errore download elenco tracker - + Error occurred when downloading the trackers list. Reason: "%1" Si è verificato un errore durante il download dell'elenco tracker. Motivo: "%1" @@ -11282,87 +11875,70 @@ Motivo: "%1" TrackersFilterWidget - All (0) - this is for the tracker filter - Tutti (0) - - - Trackerless (0) - Senza server traccia (0) - - - Error (0) - In errore (0) - - - Warning (0) - Notifiche (0) - - - Trackerless - Senza tracker - - - Error (%1) - In errore (%1) - - - + Warning (%1) Notifiche (%1) - + Trackerless (%1) Senza server traccia (%1) - + Tracker error (%1) - + Errore tracker (%1) - + Other error (%1) - + Altro errore (%1) - + Remove tracker - Rimuovi tracker + Rimuovi tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Riprendi torrent + Riprendi torrent - Pause torrents - Metti in pausa i torrent + Metti in pausa i torrent - + Remove torrents Rimuovi torrent - + Removal confirmation - + Conferma rimozione - + Are you sure you want to remove tracker "%1" from all torrents? - + Sei sicuro di voler rimuovere il tracker "%1" da tutti i torrent? - + Don't ask me again. - + Non chiedermelo più. - + All (%1) this is for the tracker filter Tutti (%1) @@ -11371,7 +11947,7 @@ Motivo: "%1" TransferController - + 'mode': invalid argument 'modalità': argomento non valido @@ -11464,9 +12040,8 @@ Motivo: "%1" Controllo dati recupero - Paused - In pausa + In pausa @@ -11491,220 +12066,262 @@ Motivo: "%1" Con errori - + Name i.e: torrent name Nome - + Size i.e: torrent size Dimensione - + Progress % Done Avanzamento - Status Torrent status (e.g. downloading, seeding, paused) - Stato + Stato - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stato + + + Seeds i.e. full sources (often untranslated) Seed - + Peers i.e. partial sources (often untranslated) Peer - + Down Speed i.e: Download speed Velocità download - + Up Speed i.e: Upload speed Velocità upload - + Ratio Share ratio Rapporto - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Tempo stimato - + Category Categoria - + Tags Tag - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Aggiunto il - + Completed On Torrent was completed on 01/01/2010 08:00 Completato il - + Tracker Tracker - + Down Limit i.e: Download limit Limite download - + Up Limit i.e: Upload limit Limite upload - + Downloaded Amount of data downloaded (e.g. in MB) Scaricati - + Uploaded Amount of data uploaded (e.g. in MB) Inviati - + Session Download Amount of data downloaded since program open (e.g. in MB) Sessione download - + Session Upload Amount of data uploaded since program open (e.g. in MB) Sessione upload - + Remaining Amount of data left to download (e.g. in MB) Rimanenti - + + Time Active + Time (duration) the torrent is active (not stopped) + Tempo attivo + + + + Yes + + + + + No + No + + Time Active Time (duration) the torrent is active (not paused) - Tempo attivo + Tempo attivo - + Save Path Torrent save path Percorso salvataggio - + Incomplete Save Path Torrent incomplete save path Percorso salvataggio non completo - + Completed Amount of data completed (e.g. in MB) Completati - + Ratio Limit Upload share ratio limit Rapporto limite - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Ultima operazione completata - + Last Activity Time passed since a chunk was downloaded/uploaded Ultima attività - + Total Size i.e. Size including unwanted data Dimensione totale - + Availability The number of distributed copies of the torrent Disponibilità - + Info Hash v1 i.e: torrent info hash v1 Info hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Riannuncia + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/D - + %1 ago e.g.: 1h 20m ago %1 fa - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seed per %2) @@ -11713,336 +12330,360 @@ Motivo: "%1" TransferListWidget - + Column visibility Visibilità colonna - + Recheck confirmation Conferma ricontrollo - + Are you sure you want to recheck the selected torrent(s)? Confermi di voler ricontrollare i torrent selezionati? - + Rename Rinomina - + New name: Nuovo nome: - + Choose save path Scegli una cartella per il salvataggio - Confirm pause - Conferma pausa + Conferma pausa - Would you like to pause all torrents? - Vuoi mettere in pausa tutti i torrent? + Vuoi mettere in pausa tutti i torrent? - Confirm resume - Conferma ripresa + Conferma ripresa - Would you like to resume all torrents? - Vuoi riprendere tutti i torrent? + Vuoi riprendere tutti i torrent? - + Unable to preview Anteprima non possibile - + The selected torrent "%1" does not contain previewable files Il torrent selezionato "%1" non contiene file compatibili con l'anteprima - + Resize columns Ridimensiona colonne - + Resize all non-hidden columns to the size of their contents Ridimensiona tutte le colonne non nascoste alla dimensione del loro contenuto - + Enable automatic torrent management Abilita gestione automatica torrent - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Sei sicuro di voler abilitare la gestione automatica torrent per i torrent selezionati? I torrent potranno essere spostati. - Add Tags - Aggiungi etichette + Aggiungi etichette - + Choose folder to save exported .torrent files Scegli la cartella in cui salvare i file .torrent esportati - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Esportazione file .torrent non riuscita. Torrent: "%1". Percorso salvataggio: "%2". Motivo: "%3" - + A file with the same name already exists Esiste già un file con lo stesso nome - + Export .torrent file error Errore esportazione del file .torrent - + Remove All Tags Rimuovi tutte le etichette - + Remove all tags from selected torrents? Rimuovere tutte le etichette dai torrent selezionati? - + Comma-separated tags: Etichette separate da virgola: - + Invalid tag Etichetta non valida - + Tag name: '%1' is invalid Nome etichetta: '%1' non è valido - &Resume Resume/start the torrent - &Riprendi + &Riprendi - &Pause Pause the torrent - &Pausa + &Pausa - Force Resu&me Force Resume/start the torrent - Forza rip&resa + Forza rip&resa - + Pre&view file... A&nteprima file... - + Torrent &options... &Opzioni torrent... - + Open destination &folder Apri cartella &destinazione - + Move &up i.e. move up in the queue Sposta s&u - + Move &down i.e. Move down in the queue Sposta &giù - + Move to &top i.e. Move to top of the queue Sposta in &alto - + Move to &bottom i.e. Move to bottom of the queue Sposta in &basso - + Set loc&ation... Impost&a percorso... - + Force rec&heck Forza ri&controllo - + Force r&eannounce Forza ri&annuncio - + &Magnet link Collegamento &magnet - + Torrent &ID &ID torrent - + + &Comment + &Commento + + + &Name &Nome - + Info &hash v1 Info&hash 1 - + Info h&ash v2 Info h&ash 2 - + Re&name... Ri&nomina... - + Edit trac&kers... Modifica trac&ker... - + E&xport .torrent... E&sporta .torrent... - + Categor&y &Categoria - + &New... New category... &Nuovo... - + &Reset Reset category &Ripristina - + Ta&gs Ta&g - + &Add... Add / assign multiple tags... &Aggiungi... - + &Remove All Remove all tags &Rimuovi tutto - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Coda - + &Copy &Copia - + Exported torrent is not necessarily the same as the imported Il torrent esportato non è necessariamente lo stesso di quello importato - + Download in sequential order Scarica in ordine sequenziale - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Si sono verificati errori durante l'esportazione di file .torrent. Per i dettagli controlla il registro di esecuzione. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Rimuovi - + Download first and last pieces first Scarica la prima e l'ultima parte per prime - + Automatic Torrent Management Gestione Torrent Automatica - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category La modalità automatica significa che le varie proprietà torrent (ad esempio il percorso di salvataggio) saranno decise dalla categoria associata - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Non è possibile forzare il nuovo annuncio se il torrent è In Pausa/In Coda/Errore/Controllo + Non è possibile forzare il nuovo annuncio se il torrent è In Pausa/In Coda/Errore/Controllo - + Super seeding mode Modalità super distribuzione @@ -12087,31 +12728,31 @@ Per i dettagli controlla il registro di esecuzione. ID icona - + UI Theme Configuration. Configurazione tema interfaccia utente. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Non è stato possibile applicare completamente le modifiche al tema dell'interfaccia utente. Per i dettagli sul problema consulta il registro eventi. - + Couldn't save UI Theme configuration. Reason: %1 Impossibile salvare la configurazione del tema dell'interfaccia utente. Motivo: %1 - - + + Couldn't remove icon file. File: %1. Impossibile rimuovere il file dell'icona. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Impossibile copiare il file dell'icona. Sorgente: %1. @@ -12121,7 +12762,12 @@ Destinazione: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Impossibile caricare il tema dell'interfaccia utente dal file: "%1" @@ -12154,22 +12800,23 @@ Motivo: %1 Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Migrazione impostazioni fallita: file https WebUI: "%1". errore: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrazione impostazioni: file https WebUI, esportazione dati nel file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Trovato valore non valido nel file di configurazione, Verrà ripristinato al valore predefinito. @@ -12179,57 +12826,53 @@ Valore non valido: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Rilevato Python. -Nome eseguibile: '%1' - versione: '%2' - - - Python not detected - Python non rilevato - Found Python executable. Name: "%1". Version: "%2" - + Trovato eseguibile Python. +Nome: "%1". +Versione: "%2" Failed to find Python executable. Path: "%1". - + Impossibile trovare l'eseguibile Python. +Percorso: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Impossibile trovare l'eseguibile `python3` nella variabile di ambiente PATH. +PERCORSO: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Impossibile trovare l'eseguibile `python` nella variabile di ambiente PATH. +PERCORSO: "%1" Failed to find `python` executable in Windows Registry. - + Impossibile trovare l'eseguibile `python` nel registro di Windows. Failed to find Python executable - + Impossibile trovare l'eseguibile Python Utils::IO - + File open error. File: "%1". Error: "%2" Errore apertura file. File: "%1". Errore: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 La dimensione del file supera il limite. File: "%1". @@ -12237,19 +12880,22 @@ Dimensione file: %2. Limite dimensione: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + La dimensione del file supera il limite della dimensione dei dati. +File: "%1". +Dimensione file: %2. +Limite matrice: %3 - + File read error. File: "%1". Error: "%2" Errore di lettura del file. File: "%1". Errore: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Dimensione òettura non corrispondente. File: "%1". @@ -12316,74 +12962,75 @@ Effettiva: %3 WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. È stato specificato un nome di cookie di sessione non accettabile: '%1'. Verrà utilizzato quello predefinito. - + Unacceptable file type, only regular file is allowed. Tipo file non accettabile, sono permessi solo file regolari. - + Symlinks inside alternative UI folder are forbidden. I collegamenti simbolici in cartelle interfaccia alternative non sono permessi. - - Using built-in Web UI. - Usa UI web integrata. + + Using built-in WebUI. + Usa WebUI integrata. - - Using custom Web UI. Location: "%1". - Usa UI web personalizzata. Percorso: "%1". + + Using custom WebUI. Location: "%1". + Usa WebUI personalizzata. +Percorso: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Traduzione UI web lingua selezionata (%1) caricata correttamente. + + WebUI translation for selected locale (%1) has been successfully loaded. + La traduzione della WebUI per la lingua selezionata (%1) è stata caricata correttamente. - - Couldn't load Web UI translation for selected locale (%1). - Impossibile caricare traduzione UI web per lingua selezionata (%1). + + Couldn't load WebUI translation for selected locale (%1). + Impossibile caricare la traduzione della WebUI per la lingua selezionata (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Separatore ':' mancante in intestazione HTTP personalizzata WebUI: "%1" - + Web server error. %1 Errore server web. %1 - + Web server error. Unknown error. Errore server web. Errore sconosciuto. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Interfaccia web: intestazione Origin e origine Target non corrispondenti! IP sorgente: '%1'. Intestazione Origin: '%2': Intestazione Target: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Interfaccia web: Intestazione Referer e origine Target non corrispondenti! IP sorgente: '%1'. Intestazione referer: '%2'. Origine Target: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Interfaccia web: Intestazione Host non valida, porte non corrispondenti. Sorgente IP di richiesta: '%1'. Porta server: '%2'. Intestazione Host ricevuta: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Interfaccia web: Intestazione Host non valida. IP sorgente di richiesta: '%1'. Intestazione Host ricevuta: '%2' @@ -12391,143 +13038,137 @@ Errore sconosciuto. WebUI - - Web UI: HTTPS setup successful - Interfaccia web: HTTPS impostazione completata + + Credentials are not set + Le credenziali non sono impostate + + + + WebUI: HTTPS setup successful + WebUI: configurazione HTTPS completata + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: configurazione HTTPS non riuscita, fallback su HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Interfaccia web: impostazione HTTPS non riuscita, ripiego su HTTP + + WebUI: Now listening on IP: %1, port: %2 + WebUI: ora in ascolto su IP: %1, porta: %2 - - Web UI: Now listening on IP: %1, port: %2 - Interfaccia web: ora in ascolto sull'IP: %1, porta: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Impossibile eseguire il collegamento all'IP: %1, porta: %2. +Motivo: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Interfaccia web: impossibile associarsi all'IP: %1, porta: %2. Motivo: %3 + + Unknown error + Errore sconosciuto misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1o %2m - + %1d %2h e.g: 2 days 10 hours - %1g %2h + %1g %2o - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1g %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d + %1a %2g - - + + Unknown Unknown (size) Sconosciuta - + qBittorrent will shutdown the computer now because all downloads are complete. Tutti i download sono stati completati e qBittorrent procederà ora con l'arresto del sistema. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_ja.ts b/src/lang/qbittorrent_ja.ts index 4a557420f6ba..4407cca26c2c 100644 --- a/src/lang/qbittorrent_ja.ts +++ b/src/lang/qbittorrent_ja.ts @@ -14,77 +14,77 @@ qBittorrentについて - + Authors オーサー - + Current maintainer 現在のメンテナー - + Greece ギリシャ - - + + Nationality: 国籍: - - + + E-mail: メール: - - + + Name: 名前: - + Original author オリジナルオーサー - + France フランス - + Special Thanks 謝辞 - + Translators 翻訳者 - + License ライセンス - + Software Used 使用ソフトウェア - + qBittorrent was built with the following libraries: qBittorrentは以下のライブラリを使用してビルドされています: - + Copy to clipboard - + クリップボードにコピー @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ 保存先 - + Never show again 次回から表示しない - Torrent settings - Torrentの設定 + Torrentの設定 @@ -191,12 +190,12 @@ Torrentを開始する - + Torrent information Torrentの情報 - + Skip hash check ハッシュチェックを省略する @@ -205,6 +204,11 @@ Use another path for incomplete torrent 未完了のTorrentは別のパスを使用する + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ 停止条件: - - + + None なし - - + + Metadata received メタデータを受信後 - - + + Torrents that have metadata initially will be added as stopped. + 最初からメタデータを持つTorrentは、停止状態で追加されます。 + + + + Files checked ファイルのチェック後 - + Add to top of queue キューの先頭に追加する - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog チェックを入れると、オプションダイアログの「ダウンロード」ページの設定にかかわらず、".torrent"ファイルは削除されません - + Content layout: コンテンツのレイアウト: - + Original オリジナル - + Create subfolder サブフォルダーを作成する - + Don't create subfolder サブフォルダーを作成しない - + Info hash v1: Infoハッシュ v1: - + Size: サイズ: - + Comment: コメント: - + Date: 日付: @@ -324,245 +333,182 @@ 最後に使用した保存先を記憶する - + Do not delete .torrent file ".torrent"ファイルを削除しない - + Download in sequential order ピースを先頭から順番にダウンロードする - + Download first and last pieces first 最初と最後のピースを先にダウンロードする - + Info hash v2: Infoハッシュ v2: - + Select All すべて選択 - + Select None すべて解除 - + Save as .torrent file... ".torrent"ファイルとして保存... - + I/O Error I/Oエラー - Invalid torrent - 無効なTorrent - - - + Not Available This comment is unavailable 取得できません - + Not Available This date is unavailable 取得できません - + Not available 取得できません - Invalid magnet link - 無効なマグネットリンク - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Torrent(%1)が読み込めませんでした。 -エラー: %2 - - - This magnet link was not recognized - このマグネットリンクは認識されませんでした - - - + Magnet link マグネットリンク - + Retrieving metadata... メタデータを取得しています... - - + + Choose save path 保存パスの選択 - Torrent is already present - Torrentはすでに存在します - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent(%1)はすでに転送リストにあります。プライベートTorrentのため、トラッカーはマージされません。 - - - Torrent is already queued for processing. - Torrentはすでにキューで待機中です。 - - - + No stop condition is set. 停止条件は設定されていません。 - + Torrent will stop after metadata is received. メタデータの受信後、Torrentは停止します。 - - Torrents that have metadata initially aren't affected. - はじめからメタデータを持つTorrentは影響を受けません。 - - - + Torrent will stop after files are initially checked. ファイルの初期チェック後、Torrentは停止します。 - + This will also download metadata if it wasn't there initially. また、メタデータが存在しない場合は、メタデータもダウンロードされます。 - - + + N/A N/A - Magnet link is already queued for processing. - マグネットリンクはすでにキューで待機中です。 - - - + %1 (Free space on disk: %2) %1 (ディスクの空き容量: %2) - + Not available This size is unavailable. 取得できません - + Torrent file (*%1) Torrentファイル (*%1) - + Save as torrent file ".torrent"ファイルとして保存 - + Couldn't export torrent metadata file '%1'. Reason: %2. Torrentのメタデータファイル(%1)をエクスポートできませんでした。理由: %2。 - + Cannot create v2 torrent until its data is fully downloaded. v2のデータが完全にダウンロードされるまではv2のTorrentを作成できません。 - Cannot download '%1': %2 - '%1'がダウンロードできません: %2 - - - + Filter files... ファイルを絞り込む... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent(%1)はすでにダウンロードリストにあります。プライベートTorrentのため、トラッカーはマージできません。 - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent(%1)はすでに転送リストにあります。新しいソースからトラッカーをマージしますか? - - - + Parsing metadata... メタデータを解析しています... - + Metadata retrieval complete メタデータの取得が完了しました - - Failed to load from URL: %1. -Error: %2 - URL'%1'から読み込めませんでした。 -エラー: %2 - - - Download Error - ダウンロードエラー - AddTorrentManager Downloading torrent... Source: "%1" - + Torrentをダウンロード中... ソース: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Torrentが追加できませんでした。 ソース: "%1". 理由: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + 重複したTorrentの追加が検出されました。ソース: %1. 既存Torrent: %2. 結果: %3. - + Merging of trackers is disabled - + トラッカーのマージは無効です - + Trackers cannot be merged because it is a private torrent - + プライベートTorrentのため、トラッカーはマージできません。 - + Trackers are merged from new source - + トラッカーは新しいソースからマージされます。 @@ -648,72 +594,77 @@ Error: %2 ハッシュチェックを省略する - - - Choose save path - 保存先の選択 + + Torrent share limits + Torrentの共有制限 - - - - - - - Default - デフォルト + + + Choose save path + 保存先の選択 + + + - Yes - はい + Default + デフォルト + Yes + はい + + + + + No いいえ - + Manual 手動 - + Automatic 自動 - + Original オリジナル - + Create subfolder サブフォルダーを作成する - + Don't create subfolder サブフォルダーを作成しない - + None なし - + Metadata received メタデータを受信後 - + Files checked ファイルのチェック後 @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Torrentの完了時に再チェックする - - + + ms milliseconds ミリ秒 - + Setting 設定 - + Value Value set for this setting - + (disabled) (無効) - + (auto) (自動) - + + min minutes - + All addresses すべてのアドレス - + qBittorrent Section qBittorrentセクション - - + + Open documentation ドキュメントを開く - + All IPv4 addresses すべてのIPv4アドレス - + All IPv6 addresses すべてのIPv6アドレス - + libtorrent Section libtorrentセクション - + Fastresume files Fastresumeファイル - + SQLite database (experimental) SQLiteデータベース(実験的) - + Resume data storage type (requires restart) 再開データのストレージタイプ(再起動が必要) - + Normal - 通常 + 標準 - + Below normal - 通常以下 + 標準以下 - + Medium - + Low - + Very low 最低 - - Process memory priority (Windows >= 8 only) - プロセスのメモリー優先度(Windows8以上のみ) - - - + Physical memory (RAM) usage limit 物理メモリ(RAM)の使用限度 - + Asynchronous I/O threads 非同期I/Oスレッド数 - + Hashing threads スレッドのハッシュ化 - + File pool size ファイルプールサイズ - + Outstanding memory when checking torrents Torrentのチェックに使用するメモリー量 - + Disk cache ディスクキャッシュ - - - - + + + + s seconds - + Disk cache expiry interval ディスクキャッシュの書き込み間隔 - + Disk queue size ディスクキューサイズ - - + + Enable OS cache OSのキャッシュを有効にする - + Coalesce reads & writes コアレス読み込み/書き込み - + Use piece extent affinity ピースのエクステントアフィニティを使用する - + Send upload piece suggestions アップロードピースの提案を送信する - - - - + + + + + 0 (disabled) 0 (無効) - + Save resume data interval [0: disabled] How often the fastresume file is saved. 再開データ保存間隔 [0: 無効] - + Outgoing ports (Min) [0: disabled] 送信ポート(最小) [0: 無効] - + Outgoing ports (Max) [0: disabled] 送信ポート(最大) [0: 無効] - + 0 (permanent lease) 0 (永続リース) - + UPnP lease duration [0: permanent lease] UPnPのリース期間 [0: 永続リース] - + Stop tracker timeout [0: disabled] 停止トラッカーのタイムアウト [0: 無効] - + Notification timeout [0: infinite, -1: system default] 通知のタイムアウト [0: 無限, -1: システムデフォルト] - + Maximum outstanding requests to a single peer 1つのピアへ送信する未処理リクエストの最大数 - - - - - + + + + + KiB KiB - + (infinite) (無限) - + (system default) (システムデフォルト) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux このオプションは、Linuxではあまり効果がありません - + + Process memory priority + プロセスのメモリー優先度 + + + Bdecode depth limit Bdecodeの深度制限 - + Bdecode token limit Bdecodeのトークン制限 - + Default デフォルト - + Memory mapped files メモリーマップドファイル - + POSIX-compliant POSIX準拠 - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk IOタイプ(再起動が必要) - - + + Disable OS cache OSのキャッシュを無効にする - + Disk IO read mode ディスクI/O読み込みモード - + Write-through ライトスルー - + Disk IO write mode ディスクI/O書き込みモード - + Send buffer watermark 送信バッファーのウォーターマーク - + Send buffer low watermark 送信バッファーのウォーターマーク最小値 - + Send buffer watermark factor 送信バッファーのウォーターマーク係数 - + Outgoing connections per second 1秒あたりの外部接続数 - - + + 0 (system default) 0 (システムデフォルト) - + Socket send buffer size [0: system default] ソケットの送信バッファサイズ [0: システムデフォルト] - + Socket receive buffer size [0: system default] ソケットの受信バッファサイズ [0: システムデフォルト] - + Socket backlog size ソケットで保留にできる接続待ちの数 - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit ".torrent"ファイルのサイズ制限 - + Type of service (ToS) for connections to peers ピアに接続するサービスの種類(ToS) - + Prefer TCP TCPを優先 - + Peer proportional (throttles TCP) ピアに比例(TCPをスロットル) - + Support internationalized domain name (IDN) 国際化ドメイン名(IDN)に対応する - + Allow multiple connections from the same IP address 同じIPアドレスから複数の接続を許可する - + Validate HTTPS tracker certificates HTTPSトラッカーの証明書を検証する - + Server-side request forgery (SSRF) mitigation サーバーサイドリクエストフォージェリ(SSRF)の軽減 - + Disallow connection to peers on privileged ports 特権ポートでのピアへの接続を許可しない - + + It appends the text to the window title to help distinguish qBittorent instances + qBittorentインスタンスを区別するために、ウィンドウタイトルにテキストを付加します。 + + + + Customize application instance name + アプリケーションインスタンスのカスタマイズ + + + It controls the internal state update interval which in turn will affect UI updates UIの更新に影響を与える内部状態の更新間隔をコントロールします。 - + Refresh interval 更新間隔 - + Resolve peer host names ピアのホスト名を解決する - + IP address reported to trackers (requires restart) トラッカーに報告するIPアドレス(再起動が必要) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed IPまたはポートに変更があったとき、すべてのトラッカーに再アナウンスする - + Enable icons in menus メニューのアイコン表示を有効にする - + Enable port forwarding for embedded tracker 組み込みトラッカーのポート転送を有効にする - - (Auto detect if empty) + + Enable quarantine for downloaded files + ダウンロードされたファイルの隔離を有効にする + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + ダウンロードされたファイルのMark-of-the-Web (MOTW)を有効にする + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (空欄の場合は自動検出) + + + Python executable path (may require restart) + Pythonの実行パス(再起動が必要) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + すべてのTorrentからトラッカーを削除するときは確認する + + + Peer turnover disconnect percentage ピアターンオーバーの切断の割合 - + Peer turnover threshold percentage ピアターンオーバーのしきい値の割合 - + Peer turnover disconnect interval ピアターンオーバーの切断の間隔 - + Resets to default if empty - + 空欄の場合はデフォルトにリセット - + DHT bootstrap nodes - + DHTブートストラップノード - + I2P inbound quantity I2Pインバウンド量 - + I2P outbound quantity I2Pアウトバウンド量 - + I2P inbound length I2Pインバウンド長 - + I2P outbound length I2Pアウトバウンド長 - + Display notifications 通知を表示する - + Display notifications for added torrents 追加されたTorrentの通知を表示する - + Download tracker's favicon トラッカーのファビコンをダウンロードする - + Save path history length 保存パスの履歴数 - + Enable speed graphs 速度グラフを有効にする - + Fixed slots 固定スロット数 - + Upload rate based アップロード速度基準 - + Upload slots behavior アップロードスロットの動作 - + Round-robin ラウンドロビン - + Fastest upload 最速アップロード - + Anti-leech アンチリーチ - + Upload choking algorithm アップロードのチョークアルゴリズム - + Confirm torrent recheck Torrentを再チェックするときは確認する - + Confirm removal of all tags すべてのタグを削除するときは確認する - + Always announce to all trackers in a tier 常にティア内のすべてのトラッカーにアナウンスする - + Always announce to all tiers 常にすべてのティアにアナウンスする - + Any interface i.e. Any network interface すべてのインターフェース - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP混合モードのアルゴリズム - + Resolve peer countries ピアの国籍を解決する - + Network interface ネットワークインターフェース - + Optional IP address to bind to バインドする任意のIPアドレス - + Max concurrent HTTP announces HTTPアナウンスの最大同時接続数 - + Enable embedded tracker 組み込みトラッカーを有効にする - + Embedded tracker port 組み込みトラッカーのポート - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 が起動しました + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 ポータブルモードで実行中です。自動検出されたプロファイルフォルダー: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. 不要なコマンドラインオプションを検出しました: "%1" 。 ポータブルモードには、"relative fastresume"機能が含まれています。 - + Using config directory: %1 次の設定ディレクトリーを使用します: %1 - + Torrent name: %1 Torrent名: %1 - + Torrent size: %1 Torrentサイズ: %1 - + Save path: %1 保存パス: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrentは%1にダウンロードされました。 - + + Thank you for using qBittorrent. qBittorrentをご利用いただきありがとうございます。 - + Torrent: %1, sending mail notification Torrent: %1で通知メールが送信されました - + Add torrent failed - + Torrentが追加できませんでした - + Couldn't add torrent '%1', reason: %2. - + Torrent(%1)を追加できませんでした。理由: %2 + + + + The WebUI administrator username is: %1 + WebUI管理者のユーザー名: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + WebUI管理者のパスワードが設定されていません。このセッションは、一時的なパスワードが与えられます: %1 + + + + You should set your own password in program preferences. + プログラムの設定で独自のパスワードを設定する必要があります。 + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUIが無効です。WebUIを有効にするには設定ファイルを手動で編集します。 - + Running external program. Torrent: "%1". Command: `%2` 外部プログラムを実行中。 Torrent: "%1". コマンド: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` 外部プログラムが実行できませんでした。Torrent: "%1." コマンド: "%2" - + Torrent "%1" has finished downloading Torrent(%1)のダウンロードが完了しました - + WebUI will be started shortly after internal preparations. Please wait... 準備ができ次第、WebUIが開始されます。しばらくお待ちください... - - + + Loading torrents... Torrentを読み込み中... - + E&xit 終了(&X) - + I/O Error i.e: Input/Output Error I/Oエラー - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 理由: %2 - Error - エラー - - - Failed to add torrent: %1 - Torrent(%1)を追加できませんでした - - - + Torrent added Torrentが追加されました - + '%1' was added. e.g: xxx.avi was added. '%1'が追加されました。 - + Download completed ダウンロードが完了しました - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1'のダウンロードが完了しました。 - - - URL download error - URLダウンロードのエラー + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 が開始されました。プロセスID: %2 - Couldn't download file at URL '%1', reason: %2. - URL(%1)のファイルをダウンロードできませんでした(理由: %2)。 + + This is a test email. + - Torrent file association - Torrentファイルの関連付け + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrentは、Torrentファイルまたはマグネットリンクを開く既定アプリケーションではありません。 -qBittorrentをこれらの既定アプリケーションにしますか? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1'のダウンロードが完了しました。 - + Information 情報 - + To fix the error, you may need to edit the config file manually. - + エラーを修正するには、設定ファイルを手動で編集する必要があります。 - + To control qBittorrent, access the WebUI at: %1 qBittorrentを操作するには、Web UI(%1)にアクセスしてください - - The Web UI administrator username is: %1 - Web UI管理者のユーザー名: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web UI管理者のパスワードがデフォルトから変更されていません: %1 - - - - This is a security risk, please change your password in program preferences. - これはセキュリティリスクになりますので、プログラムの設定でパスワードを変更してください。 - - - Application failed to start. - アプリケーションを起動できませんでした。 - - - + Exit 終了 - + Recursive download confirmation - 再帰的なダウンロードの確認 + 再帰的なダウンロードの確認 - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent(%1)は".torrent"ファイルを含んでいます。これらのダウンロードを行いますか? + Torrent(%1)は".torrent"ファイルを含んでいます。これらのダウンロードを行いますか? - + Never - + しない - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrent内の".torrent"ファイルが再帰的にダウンロードされます。ソースTorrent: "%1". ファイル: "%2" + Torrent内の".torrent"ファイルが再帰的にダウンロードされます。ソースTorrent: "%1". ファイル: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" 物理メモリー(RAM)の使用限度を設定できませんでした。エラーコード: %1. エラーメッセージ: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" 物理メモリー(RAM)の絶対的な使用量を設定できませんでした。要求サイズ: %1. システムの絶対制限: %2. エラーコード: %3. エラーメッセージ: "%4" - + qBittorrent termination initiated qBittorrentの終了を開始しました - + qBittorrent is shutting down... qBittorrentはシャットダウンしています... - + Saving torrent progress... Torrentの進捗状況を保存しています... - + qBittorrent is now ready to exit qBittorrentは終了準備ができました @@ -1597,7 +1637,7 @@ qBittorrentをこれらの既定アプリケーションにしますか? AsyncFileStorage - + Could not create directory '%1'. ディレクトリー'%1'を作成できませんでした。 @@ -1605,22 +1645,22 @@ qBittorrentをこれらの既定アプリケーションにしますか? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPIのログインに失敗しました。理由: IPがアクセス禁止にされています。IP: %1, ユーザー名: %2 - + Your IP address has been banned after too many failed authentication attempts. 認証失敗回数が多すぎるため、使用中のIPアドレスはアクセス禁止にされました。 - + WebAPI login success. IP: %1 WebAPIのログインに成功しました。IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPIのログインに失敗しました。理由: 無効な資格情報で%1回試行しました。IP: %2 ユーザー名: %3 @@ -1668,12 +1708,12 @@ qBittorrentをこれらの既定アプリケーションにしますか?優先度: - + Must Not Contain: 次を含まない: - + Episode Filter: エピソードフィルター: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also エクスポート(&E)... - + Matches articles based on episode filter. エピソードフィルターを使用して記事をマッチします。 - + Example: 例: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match シーズン1の2、5、8から15、30以降の各エピソードにマッチします - + Episode filter rules: エピソードフィルターのルール: - + Season number is a mandatory non-zero value シーズン番号は、0以外の値(必須)です - + Filter must end with semicolon フィルターはセミコロンで終わる必要があります - + Three range types for episodes are supported: エピソードの範囲指定は3種類あります: - + Single number: <b>1x25;</b> matches episode 25 of season one 単数: <b>1x25;</b> は、シーズン1のエピソード25にマッチします - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - 通常範囲: <b>1x25-40;</b> は、シーズン1のエピソード25から40にマッチします + 標準範囲: <b>1x25-40;</b> は、シーズン1のエピソード25から40にマッチします - + Episode number is a mandatory positive value エピソード番号は、整数値(必須)です - + Rules ルール - + Rules (legacy) ルール(レガシー) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons 無限範囲: <b>1x25-;</b> は、シーズン1のエピソード25以降と、それ以降のすべてのシーズンのすべてのエピソードにマッチします - + Last Match: %1 days ago 前回のマッチ: %1日前 - + Last Match: Unknown 前回のマッチ: 不明 - + New rule name 新しいルール名 - + Please type the name of the new download rule. 新しいダウンロードルールの名前を入力してください。 - - + + Rule name conflict ルール名の競合 - - + + A rule with this name already exists, please choose another name. 入力された名前のルールはすでに存在しています。別の名前を選んでください。 - + Are you sure you want to remove the download rule named '%1'? ダウンロードルール'%1'を削除しますか? - + Are you sure you want to remove the selected download rules? 選択したダウンロードルールを削除しますか? - + Rule deletion confirmation ルール削除の確認 - + Invalid action 無効な操作 - + The list is empty, there is nothing to export. リストが空のため、エクスポートするものがありません。 - + Export RSS rules RSSルールのエクスポート - + I/O Error I/Oエラー - + Failed to create the destination file. Reason: %1 出力ファイルを作成できませんでした。理由: %1 - + Import RSS rules RSSルールのインポート - + Failed to import the selected rules file. Reason: %1 選択したルールファイルをインポートできませんでした。理由: %1 - + Add new rule... 新しいルールを追加... - + Delete rule ルールを削除 - + Rename rule... ルール名を変更... - + Delete selected rules 選択したルールを削除 - + Clear downloaded episodes... ダウンロードしたエピソードをクリア... - + Rule renaming ルール名の変更 - + Please type the new rule name 新しいルール名を入力してください - + Clear downloaded episodes ダウンロードしたエピソードのクリア - + Are you sure you want to clear the list of downloaded episodes for the selected rule? 選択されたルールのダウンロード済みエピソードのリストをクリアしますか? - + Regex mode: use Perl-compatible regular expressions 正規表現モード: Perl互換の正規表現を使用します - - + + Position %1: %2 位置 %1: %2 - + Wildcard mode: you can use ワイルドカードモード: 以下の文字が使用できます - - + + Import error インポートエラー - + Failed to read the file. %1 ファイル(%1)を読み込めませんでした。 - + ? to match any single character "?"は任意の1文字にマッチします - + * to match zero or more of any characters "*"は任意の0文字以上の文字列にマッチします - + Whitespaces count as AND operators (all words, any order) 空白は"AND"演算子とみなされます(すべての単語、語順は任意) - + | is used as OR operator "|"は"OR"演算子として使用します - + If word order is important use * instead of whitespace. 語順が重要な場合は、空白ではなく'"*"を使用します。 - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) 空の"%1"を指定した場合(例: %2)は、 - + will match all articles. すべての記事にマッチします。 - + will exclude all articles. すべての記事にマッチしません。 @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Torrentの再開フォルダー(%1)を作成できません。 - + Cannot parse resume data: invalid format 再開データの解析ができませんでした: 無効なフォーマット - - + + Cannot parse torrent info: %1 Torrent情報の解析ができませんでした: %1 - + Cannot parse torrent info: invalid format Torrent情報の解析ができませんでした: 無効なフォーマット - + + Mismatching info-hash detected in resume data + 再開データでinfoハッシュの不一致が検出されました + + + Couldn't save torrent metadata to '%1'. Error: %2. %1にTorrentのメタデータを保存できませんでした。 エラー: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. %1 にTorrentの再開データを保存できませんでした。 エラー: %2。 - + Couldn't load torrents queue: %1 Torrentキューを読み込めませんでした: %1 - + Cannot parse resume data: %1 再開データの解析ができませんでした: %1 - + Resume data is invalid: neither metadata nor info-hash was found 再開データが無効です。メタデータもinfoハッシュも見つかりませんでした。 - + Couldn't save data to '%1'. Error: %2 %1 にデータを保存できませんでした。 エラー: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. 見つかりません。 - + Couldn't load resume data of torrent '%1'. Error: %2 Torrent(%1)の再開データを読み込めませんでした。 エラー: %2 - - + + Database is corrupted. データベースが破損しています。 - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. ログ先行書き込み(WAL)ジャーナリングモードを有効にできませんでした。エラー: %1 - + Couldn't obtain query result. クエリーの結果を取得できませんでした。 - + WAL mode is probably unsupported due to filesystem limitations. WALモードは、ファイルシステムの制限により、おそらくサポートされていません。 - + Couldn't begin transaction. Error: %1 トランザクションを開始できませんでした。エラー: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Torrentのメタデータを保存できませんでした。 エラー: %1。 - + Couldn't store resume data for torrent '%1'. Error: %2 Torrent(%1)の再開データを保存できませんでした。 エラー: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Torrent(%1)の再開データを削除できませんでした。 エラー: %2 - + Couldn't store torrents queue positions. Error: %1 Torrentキューの位置を保存できませんでした。エラー: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 分散ハッシュテーブル(DHT)サポート: %1 - - - - - - - - - + + + + + + + + + ON ON - - - - - - - - - + + + + + + + + + OFF OFF - - + + Local Peer Discovery support: %1 ローカルピア検出サポート: %1 - + Restart is required to toggle Peer Exchange (PeX) support ピア交換(PeX)サポートに切り換えるには再起動が必要です - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrent(%1)が再開できませんでした。理由: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Torrentが再開できませんでした: 不整合なTorrent IDが検出されました。 Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" 不整合なデータが検出されました: 設定ファイルからカテゴリーが欠落しています。カテゴリーは復元されますが、設定はデフォルトにリセットされます。 Torrent: "%1". カテゴリー: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" 不整合なデータが検出されました: 無効なカテゴリーです。 Torrent: "%1". カテゴリー: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" 復元されたカテゴリーの保存パスとTorrentの現在の保存パスの不一致が検出されました。Torrentは手動モードに切り替わりました。 Torrent: "%1". カテゴリー: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" 不整合なデータが検出されました: 設定ファイルからタグが欠落しています。タグは復元されます。 Torrent: "%1". タグ: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" 不整合なデータが検出されました: 無効なタグです。 Torrent: "%1". タグ: "%2" - + System wake-up event detected. Re-announcing to all the trackers... システムのウェイクアップイベントが検出されました。すべてのトラッカーに再アナウンス中です... - + Peer ID: "%1" ピアID: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 ピア交換(PeX)サポート: %1 - - + + Anonymous mode: %1 匿名モード: %1 - - + + Encryption support: %1 暗号化サポート: %1 - - + + FORCED 強制 - + Could not find GUID of network interface. Interface: "%1" ネットワークインターフェースのGUIDが見つかりませんでした。インターフェース: "%1" - + Trying to listen on the following list of IP addresses: "%1" 次のIPアドレスリストで接続待ちを試行しています: "%1" - + Torrent reached the share ratio limit. Torrentが共有比制限に達しました。 - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrentが削除されました。 + Torrentが削除されました。 - - - Removed torrent and deleted its content. - Torrentとそのコンテンツが削除されました。 + Torrentとそのコンテンツが削除されました。 - - - Torrent paused. - Torrentが一時停止されました。 + Torrentが一時停止されました。 - - - + Super seeding enabled. スーパーシードが有効になりました。 - + Torrent reached the seeding time limit. Torrentがシード時間制限に達しました。 - + Torrent reached the inactive seeding time limit. Torrentが非稼働シードの時間制限に達しました。 - + Failed to load torrent. Reason: "%1" Torrentが読み込めませんでした。 理由: "%1" - + I2P error. Message: "%1". + I2Pエラー。 メッセージ: %1 + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMPサポート: ON + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Torrentをダウンロードしています。お待ちください... ソース: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Torrentが読み込めませんでした。 ソース: "%1". 理由: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - 重複したTorrentの追加が検出されました。トラッカーのマージは無効です。Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - 重複したTorrentの追加が検出されました。プライベートTorrentのため、トラッカーはマージできません。Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - 重複したTorrentの追加が検出されました。トラッカーは新しいソースからマージされます。Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMPサポート: ON + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMPサポート: OFF + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Torrentがエクスポートできませんでした。 Torrent: "%1". 保存先: "%2". 理由: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - 再開データの保存が中断されました。未処理Torrent数: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + トラッカーのマージは無効です - System network status changed to %1 - e.g: System network status changed to ONLINE - システムのネットワーク状態が %1 に変更されました + + Trackers cannot be merged because it is a private torrent + プライベートTorrentのため、トラッカーはマージできません。 + + + + Trackers are merged from new source + トラッカーは新しいソースからマージされます。 - ONLINE - オンライン + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMPサポート: OFF - OFFLINE - オフライン + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Torrentがエクスポートできませんでした。 Torrent: "%1". 保存先: "%2". 理由: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1のネットワーク構成が変更されたため、セッションバインディングが更新されました + + Aborted saving resume data. Number of outstanding torrents: %1 + 再開データの保存が中断されました。未処理Torrent数: %1 - + The configured network address is invalid. Address: "%1" 構成されたネットワークアドレスが無効です。 アドレス: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" 接続待ちをする構成されたネットワークアドレスが見つかりませんでした。アドレス: "%1" - + The configured network interface is invalid. Interface: "%1" 構成されたネットワークインターフェースが無効です。 インターフェース: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" アクセス禁止IPアドレスのリストを適用中に無効なIPは除外されました。IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Torrentにトラッカーが追加されました。 Torrent: "%1". トラッカー: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Torrentからトラッカーが削除されました。 Torrent: "%1". トラッカー: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" TorrentにURLシードが追加されました。 Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" TorrentからURLシードが削除されました。 Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrentが一時停止されました。 Torrent: "%1" + Torrentが一時停止されました。 Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrentが再開されました。 Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrentのダウンロードが完了しました。Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrentの移動がキャンセルされました。 Torrent: "%1". 移動元: "%2". 移動先: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Torrentの移動準備ができませんでした。Torrent: "%1". 移動元: "%2". 移動先: "%3". 理由: Torrentは現在移動先に移動中です。 - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Torrentの移動準備ができませんでした。Torrent: "%1". 移動元: "%2". 移動先: "%3". 理由: 両方のパスが同じ場所を指定しています - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrentの移動が実行待ちになりました。 Torrent: "%1". 移動元: "%2". 移動先: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Torrentの移動が開始されました。 Torrent: "%1". 保存先: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" カテゴリー設定が保存できませんでした。 ファイル: "%1". エラー: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" カテゴリー設定が解析できませんでした。 ファイル: "%1". エラー: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrent内の".torrent"ファイルが再帰的にダウンロードされます。ソースTorrent: "%1". ファイル: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Torrent内の".torrent"ファイルが読み込めませんでした。ソースTorrent: "%1". ファイル: "%2" エラー: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IPフィルターファイルが正常に解析されました。適用されたルール数: %1 - + Failed to parse the IP filter file IPフィルターファイルが解析できませんでした - + Restored torrent. Torrent: "%1" Torrentが復元されました。 Torrent: "%1" - + Added new torrent. Torrent: "%1" Torrentが追加されました。 Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrentのエラーです。Torrent: "%1". エラー: "%2" - - Removed torrent. Torrent: "%1" - Torrentが削除されました。 Torrent: "%1" + Torrentが削除されました。 Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrentとそのコンテンツが削除されました。 Torrent: "%1" + Torrentとそのコンテンツが削除されました。 Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + TorrentにSSLパラメーターがありません。 Torrent: "%1". メッセージ: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - ファイルエラーアラート。 Torrent: "%1". ファイル: "%2". 理由: %3 + ファイルエラーアラート。 理由: %3. Torrent: "%1". ファイル: "%2". - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMPポートをマッピングできませんでした。メッセージ: %1 - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMPポートのマッピングに成功しました。メッセージ: %1 - + IP filter this peer was blocked. Reason: IP filter. IPフィルター - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). フィルター適用ポート(%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). 特権ポート(%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrentセッションで深刻なエラーが発生しました。理由: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5プロキシエラー。アドレス: %1。メッセージ: %2 - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 混在モード制限 - + Failed to load Categories. %1 カテゴリー(%1)を読み込めませんでした。 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" カテゴリー設定が読み込めませんでした。 ファイル: "%1". エラー: 無効なデータ形式 - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrentは削除されましたが、そのコンテンツや部分ファイルは削除できませんでした。 Torrent: "%1". エラー: "%2" + Torrentは削除されましたが、そのコンテンツや部分ファイルは削除できませんでした。 Torrent: "%1". エラー: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1が無効 - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1が無効 - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URLシードの名前解決ができませんでした。Torrent: "%1". URL: "%2". エラー: "%3" + URLシードの名前解決ができませんでした。Torrent: "%1". URL: "%2". エラー: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" URLシードからエラーメッセージを受け取りました。 Torrent: "%1". URL: "%2". メッセージ: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" 接続待ちに成功しました。IP: "%1". ポート: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" 接続待ちに失敗しました。IP: "%1". ポート: "%2/%3". 理由: "%4" - + Detected external IP. IP: "%1" 外部IPを検出しました。 IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" エラー: 内部のアラートキューが一杯でアラートがドロップしているため、パフォーマンスが低下する可能性があります。ドロップしたアラートのタイプ: "%1". メッセージ: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrentが正常に移動されました。 Torrent: "%1". 保存先: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Torrentが移動できませんでした。 Torrent: "%1". 保存元: "%2". 保存先: "%3". 理由: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - 操作が中断されました - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - 新しいTorrentファイルを作成できませんでした。 理由: %1。 + + Failed to start seeding. + シードを開始できませんでした。 - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - 操作が中断されました + 操作が中断されました + + Create new torrent file failed. Reason: %1. - 新しいTorrentファイルを作成できませんでした。 理由: %1。 + 新しいTorrentファイルを作成できませんでした。 理由: %1。 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 ピア(%1)をTorrent(%2)に追加できませんでした。 理由: %3 - + Peer "%1" is added to torrent "%2" ピア(%1)がTorrent(%2)に追加されました - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. 想定外のデータが検出されました。Torrent: %1. データ: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. ファイルに書き込めませんでした。理由: "%1". Torrentは「アップロードのみ」モードになりました。 - + Download first and last piece first: %1, torrent: '%2' 最初と最後のピースを先にダウンロード: %1, Torrent: '%2' - + On On - + Off Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Torrent(%1)がリロードできませんでした。理由: "%2" + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Torrent(%1)の再開データを生成できませんでした。エラー: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Torrentが復元できませんでした。ファイルが移動されたか、ストレージにアクセスできない可能性があります。Torrent: "%1". 理由: "%2" - + Missing metadata メタデータ不足 - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Torrent(%1)のファイル(%2)のファイル名を変更できませんでした。 理由: "%3" - + Performance alert: %1. More info: %2 パフォーマンスアラート: %1. 詳細: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' 引数'%1'は'%1=%2'の構文で指定する必要があります - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' 引数'%1'は'%1=%2'の構文で指定する必要があります - + Expected integer number in environment variable '%1', but got '%2' 環境変数'%1'は整数であることを期待していますが'%2'が得られました - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - 引数'%1'は'%1=%2'の構文で指定する必要があります + 引数'%1'は'%1=%2'の構文で指定する必要があります - + Expected %1 in environment variable '%2', but got '%3' 環境変数'%2'は%1であることを期待していますが'%3'が得られました - - + + %1 must specify a valid port (1 to 65535). %1には正しいポート番号(1から65535)を設定してください。 - + Usage: 使用法: - + [options] [(<filename> | <url>)...] [オプション] [(<filename> | <url>)...] - + Options: オプション: - + Display program version and exit プログラムのバージョンを表示して終了する - + Display this help message and exit このヘルプメッセージを表示して終了する - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + 引数'%1'は'%1=%2'の構文で指定する必要があります + + + + Confirm the legal notice + 免責事項を確認する + + + + port ポート番号 - - Change the Web UI port + + Change the WebUI port WebUIのポート番号を変更する - + Change the torrenting port Torrent用のポート番号を変更する - + Disable splash screen スプラッシュ・スクリーンを表示しません - + Run in daemon-mode (background) デーモンモード(バックグラウンド)で実行します - + dir Use appropriate short form or abbreviation of "directory" ディレクトリ - + Store configuration files in <dir> 設定ファイルは <dir> に保存されます - - + + name 名前 - + Store configuration files in directories qBittorrent_<name> 設定ファイルはディレクトリ qBittorrent_<name> に保存されます - + Hack into libtorrent fastresume files and make file paths relative to the profile directory libtorrentのfastresumeファイルをハックして、プロファイルディレクトリーに相対的なファイルパスを作成します - + files or URLs ファイルまたはURL - + Download the torrents passed by the user ユーザーから渡されたTorrentをダウンロード - + Options when adding new torrents: 新規Torrentを追加したときのオプション: - + path パス - + Torrent save path Torrentの保存パス - + + Add torrents as running or stopped + + + Add torrents as started or paused - 追加時に開始するかしないか + 追加時に開始するかしないか - + Skip hash check ハッシュチェックを省略する - + Assign torrents to category. If the category doesn't exist, it will be created. Torrentにカテゴリーを割り当てます。存在しないカテゴリーは作成されます。 - + Download files in sequential order ファイルのピースを先頭から順番にダウンロードします - + Download first and last pieces first 先頭と最後のピースを先にダウンロード - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Torrentを追加するときに「Torrentの追加」ダイアログを表示するかどうかを指定します。 - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: オプションの値は環境変数から取られます。オプション名'parameter-name'の値に対応する環境変数名は'QBT_PARAMETER_NAME' (大文字、'-'は'_'に置き換え)です。フラグ値を渡す場合は、値に'1'または'TRUE'を指定します。スプラッシュスクリーンを表示しないようにするには: - + Command line parameters take precedence over environment variables コマンドライン引数は環境変数より優先されます - + Help ヘルプ @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories カテゴリー - + All すべて - + Uncategorized カテゴリーなし @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Torrentの再開 + Start torrents + + Stop torrents + + + + Resume torrents + Torrentの再開 + + Pause torrents - Torrentの停止 + Torrentの停止 @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... 編集... - + Reset リセット + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 カスタムテーマのスタイルシートが読み込めませんでした。%1 - + Failed to load custom theme colors. %1 カスタムテーマのカラーが読み込めませんでした。%1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 デフォルトテーマのカラーが読み込めませんでした。%1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - ファイルを完全に削除する + ファイルを完全に削除する - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? '%1'を転送リストから削除してもよろしいですか? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? これらのTorrent(%1)を転送リストから削除してもよろしいですか? - + Remove 削除 @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also URLからダウンロード - + Add torrent links Torrentリンクを追加する - + One link per line (HTTP links, Magnet links and info-hashes are supported) 1行に1リンク(HTTPリンク、マグネットリンク、infoハッシュに対応) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ダウンロード - + No URL entered URLが入力されていません - + Please type at least one URL. 最低でも1行のURLを入力してください。 @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 解析エラー: フィルターファイルは有効なPeerGuardian P2Bファイルではありません。 + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Torrentをダウンロード中... ソース: "%1" - Trackers cannot be merged because it is a private torrent - + プライベートTorrentのため、トラッカーはマージできません。 - + Torrent is already present - Torrentはすでに存在します + Torrentはすでに存在します + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent(%1)はすでに転送リストにあります。新しいソースからトラッカーをマージしますか? + Torrent(%1)はすでに転送リストにあります。新しいソースからトラッカーをマージしますか? GeoIPDatabase - - + + Unsupported database file size. データベースのファイルサイズが対応範囲を超えています。 - + Metadata error: '%1' entry not found. メタデータエラー: エントリー '%1' が見つかりません。 - + Metadata error: '%1' entry has invalid type. メタデータエラー: エントリー '%1' のタイプが無効です。 - + Unsupported database version: %1.%2 対応していないデータベースバージョン: %1.%2 - + Unsupported IP version: %1 対応していないIPバージョン: %1 - + Unsupported record size: %1 対応していないレコードサイズ: %1 - + Database corrupted: no data section found. データベースの破損: データセクションが見つかりません。 @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTPリクエストのサイズが制限を超えたため、ソケットを閉じています。制限: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" 不正なHTTPリクエストメソッドのため、ソケットを閉じています。 IP: %1. メソッド: "%2" - + Bad Http request, closing socket. IP: %1 不正なHTTPリクエストのため、ソケットを閉じています。 IP: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... 参照... - + Reset リセット - + Select icon アイコンの選択 - + Supported image files 対応する画像ファイル + + LegalNotice + + + Legal Notice + 免責事項 + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrentはファイル共有プログラムです。あなたがTorrentを実行するとき、そのデータはアップロードによって他の人が入手できるようになります。共有するすべてのコンテンツは、自己責任となります。 + + + + No further notices will be issued. + この通知はこれ以降は表示されません。 + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + 免責事項が既読の場合は、コマンドラインオプション`--confirm-legal-notice` を使用して、このメッセージを非表示にできます。 + + + + Press 'Enter' key to continue... + エンターキーを押して続行... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1はブロックされました。理由: %2 - + %1 was banned 0.0.0.0 was banned %1 はアクセス禁止にされました @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 は不明なコマンドライン引数です。 - - + + %1 must be the single command line parameter. コマンドライン引数 %1 は、単独で指定する必要があります。 - - You cannot use %1: qBittorrent is already running for this user. - %1を使用できません: qBittorrentはすでに起動しています。 - - - + Run application with -h option to read about command line parameters. -h オプションを指定して起動するとコマンドラインパラメーターを表示します。 - + Bad command line 不正なコマンドライン - + Bad command line: 不正なコマンドライン: - + An unrecoverable error occurred. - + 回復不能なエラーが発生しました。 - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - 法的通知 - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrentはファイル共有プログラムです。あなたがTorrentを実行するとき、そのデータはアップロードによって他の人が入手できるようになります。共有するすべてのコンテンツは、自己責任となります。 + qBittorrentで回復不能なエラーが発生しました。 - - No further notices will be issued. - この通知はこれ以降は表示されません。 - - - - Press %1 key to accept and continue... - 承諾して続行するには%1キーを押してください... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrentはファイル共有プログラムです。あなたがTorrentを実行するとき、そのデータはアップロードによって他の人が入手できるようになります。共有するすべてのコンテンツは、自己責任となります。 - -これ以降、通知は行われません。 + + You cannot use %1: qBittorrent is already running. + %1を使用できません: qBittorrentはすでに実行中です。 - - Legal notice - 法的通知 + + Another qBittorrent instance is already running. + 別のqBittorrentインスタンスがすでに実行されています。 - - Cancel - キャンセル + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + 予期せぬqBittorrentインスタンスが見つかりました。このインスタンスを終了します。現在のプロセスID: %1. - - I Agree - 同意する + + Error when daemonizing. Reason: "%1". Error code: %2. + デーモン化時のエラー。 理由: "%1". エラーコード: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. 編集(&E) - + &Tools ツール(&T) - + &File ファイル(&F) - + &Help ヘルプ(&H) - + On Downloads &Done ダウンロード完了時(&D) - + &View 表示(&V) - + &Options... オプション(&O)... - &Resume - 再開(&R) + 再開(&R) - + &Remove 削除(&R) - + Torrent &Creator Torrentクリエーター(&C) - - + + Alternative Speed Limits 代替速度制限 - + &Top Toolbar トップツールバー(&T) - + Display Top Toolbar トップツールバーを表示します - + Status &Bar ステータスバー(&B) - + Filters Sidebar フィルターサイドバー - + S&peed in Title Bar タイトルバーに速度を表示(&P) - + Show Transfer Speed in Title Bar タイトルバーに転送速度を表示します - + &RSS Reader RSSリーダー(&R) - + Search &Engine 検索エンジン(&E) - + L&ock qBittorrent qBittorrentをロック(&O) - + Do&nate! 寄付(&N) - + + Sh&utdown System + + + + &Do nothing なにもしない(&D) - + Close Window ウィンドウを閉じる - R&esume All - すべて再開(&E) + すべて再開(&E) - + Manage Cookies... クッキーを管理... - + Manage stored network cookies 保存されたネットワーククッキーを管理します - + Normal Messages 通常メッセージ - + Information Messages 情報メッセージ - + Warning Messages 警告メッセージ - + Critical Messages 緊急メッセージ - + &Log ログ(&L) - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... グローバル速度制限の設定 - + Bottom of Queue キューの最下部へ - + Move to the bottom of the queue キューの最下部へ移動 - + Top of Queue キューの 最上部へ - + Move to the top of the queue キューの最上部へ移動 - + Move Down Queue キューの下へ - + Move down in the queue キュー内で下に移動します - + Move Up Queue キューの上へ - + Move up in the queue キュー内で上に移動します - + &Exit qBittorrent qBittorrentを終了(&E) - + &Suspend System システムをサスペンド(&S) - + &Hibernate System システムをハイバネート(&H) - S&hutdown System - システムをシャットダウン(&H) + システムをシャットダウン(&H) - + &Statistics 統計情報(&S) - + Check for Updates アップデートをチェック - + Check for Program Updates プログラムのアップデートを確認する - + &About qBittorrentについて(&A) - &Pause - 停止(&P) + 停止(&P) - P&ause All - すべて一時停止(&A) + すべて一時停止(&A) - + &Add Torrent File... Torrentファイルを追加(&A)... - + Open 開く - + E&xit 終了(&X) - + Open URL URLを開く - + &Documentation ドキュメント(&D) - + Lock ロック - - - + + + Show 表示 - + Check for program updates プログラムのアップデートを確認する - + Add Torrent &Link... Torrentリンクを追加(&L)... - + If you like qBittorrent, please donate! qBittorrentを気に入っていただけたら、ぜひ寄付をお願いします。 - - + + Execution Log 実行ログ - + Clear the password パスワードのクリア - + &Set Password パスワードの設定(&S) - + Preferences 設定 - + &Clear Password パスワードのクリア(&C) - + Transfers 転送 - - + + qBittorrent is minimized to tray qBittorrentはシステムトレイに最小化されました - - - + + + This behavior can be changed in the settings. You won't be reminded again. この動作は設定から変更できます。この通知は次回からは表示されません。 - + Icons Only アイコンのみ - + Text Only 文字のみ - + Text Alongside Icons アイコンの横に文字 - + Text Under Icons アイコンの下に文字 - + Follow System Style システムのスタイルに従う - - + + UI lock password UIのロックに使用するパスワード - - + + Please type the UI lock password: UIのロックに使用するパスワードを入力してください: - + Are you sure you want to clear the password? パスワードをクリアしてもよろしいですか? - + Use regular expressions 正規表現を使用 - - Search - 検索 + + + Search Engine + 検索エンジン - - Transfers (%1) - 転送 (%1) + + Search has failed + 検索に失敗しました - Recursive download confirmation - 再帰的なダウンロードの確認 + + Search has finished + 検索完了 - Never - しない + + Search + 検索 + + + + Transfers (%1) + 転送 (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrentがアップデートされました。反映には再起動が必要です。 - + qBittorrent is closed to tray qBittorrentはシステムトレイに最小化されました。 - + Some files are currently transferring. いくつかのファイルが現在転送中です。 - + Are you sure you want to quit qBittorrent? qBittorrentを終了しますか? - + &No いいえ(&N) - + &Yes はい(&Y) - + &Always Yes 常に「はい」(&A) - + Options saved. オプションは保存されました。 - %1/s - s is a shorthand for seconds - %1/秒 + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime Pythonのランタイムが見つかりません - + qBittorrent Update Available qBittorrentのアップデートがあります - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? 検索エンジンを使用するために必要なPythonがインストールされていません。 今すぐインストールしますか? - + Python is required to use the search engine but it does not seem to be installed. 検索エンジンを使用するために必要なPythonがインストールされていません。 - - + + Old Python Runtime 古いPythonのランタイム - + A new version is available. 最新版が利用可能です。 - + Do you want to download %1? %1をダウンロードしますか? - + Open changelog... 変更履歴を開く... - + No updates available. You are already using the latest version. アップデートはありません。 すでに最新バージョンを使用しています。 - + &Check for Updates アップデートの確認(&C) - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Python(%1)が最低要件の%2より古いバージョンです。 今すぐ新しいバージョンをインストールしますか? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. 使用中のPythonバージョン(%1)が古すぎます。検索エンジンを使用するには、最新バージョンにアップグレードしてください。 最低要件: %2 - + + Paused + 一時停止 + + + Checking for Updates... アップデートを確認中... - + Already checking for program updates in the background すでにバックグラウンドでプログラムのアップデートをチェックしています - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error ダウンロードエラー - Python setup could not be downloaded, reason: %1. Please install it manually. - Pythonのセットアップをダウンロードできませんでした。理由: %1。 + Pythonのセットアップをダウンロードできませんでした。理由: %1。 手動でインストールしてください。 - - + + Invalid password 無効なパスワード - + Filter torrents... Torrentをフィルター... - + Filter by: フィルター: - + The password must be at least 3 characters long パスワードは、最低でも3文字以上が必要です - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent(%1)は".torrent"ファイルを含んでいます。これらのダウンロードを行いますか? - - - + The password is invalid パスワードが無効です - + DL speed: %1 e.g: Download speed: 10 KiB/s ダウン速度: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s アップ速度: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [ダウン: %1, アップ: %2] qBittorrent %3 - - - + Hide 非表示 - + Exiting qBittorrent qBittorrentの終了 - + Open Torrent Files Torrentファイルを開く - + Torrent Files Torrentファイル @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/Oエラー: %1 - + The file size (%1) exceeds the download limit (%2) ファイルサイズ(%1)がダウンロード制限(%2)を超えています - + Exceeded max redirections (%1) 最大リダイレクト数(%1)を超えました - + Redirected to magnet URI マグネットURIへリダイレクトされました - + The remote host name was not found (invalid hostname) リモートホスト名が見つかりませんでした(無効なホスト名) - + The operation was canceled 操作がキャンセルされました - + The remote server closed the connection prematurely, before the entire reply was received and processed リモートサーバーは応答全体の受信と処理の途中で切断しました - + The connection to the remote server timed out リモートサーバーへの接続がタイムアウトしました - + SSL/TLS handshake failed SSL/TLSハンドシェイクに失敗しました - + The remote server refused the connection リモートサーバーが接続を拒否しました - + The connection to the proxy server was refused プロキシサーバーへの接続が拒否されました - + The proxy server closed the connection prematurely プロキシサーバーが途中で切断しました - + The proxy host name was not found プロキシのホスト名が見つかりませんでした - + The connection to the proxy timed out or the proxy did not reply in time to the request sent プロキシへの接続がタイムアウトしたか、プロキシが時間内にリクエスト送信に応答しませんでした - + The proxy requires authentication in order to honor the request but did not accept any credentials offered プロキシが認証を必要としますが、与えられたすべての資格情報が承認されませんでした - + The access to the remote content was denied (401) リモートコンテンツへのアクセスが拒否されました(401) - + The operation requested on the remote content is not permitted リモートコンテンツで要求された操作は許可されていません - + The remote content was not found at the server (404) リモートコンテンツがサーバーで見つかりませんでした (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted リモートサーバーが認証を必要としますが、与えられたすべての資格情報が承認されませんでした - + The Network Access API cannot honor the request because the protocol is not known プロトコルが不明なため、ネットワークアクセスAPIはリクエストを受け入れられません - + The requested operation is invalid for this protocol 要求された操作は、このプロトコルでは無効です - + An unknown network-related error was detected ネットワーク関連の不明なエラーが検出されました - + An unknown proxy-related error was detected プロキシ関連の不明なエラーが検出されました - + An unknown error related to the remote content was detected リモートコンテンツに関連する不明なエラーが検出されました - + A breakdown in protocol was detected プロトコルの遮断が検出されました - + Unknown error 不明なエラー @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSLエラーを無視: URL: "%1", エラー: "%2" @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced 高度 - + Customize UI Theme... UIテーマをカスタマイズ... - + Transfer List 転送リスト - + Confirm when deleting torrents Torrentを削除するときは確認する - Shows a confirmation dialog upon pausing/resuming all the torrents - すべてのTorrentを一時停止/再開する場合は、確認ダイアログを表示します + すべてのTorrentを一時停止/再開する場合は、確認ダイアログを表示します - Confirm "Pause/Resume all" actions - "すべて一時停止/すべて再開"のときは確認する + "すべて一時停止/すべて再開"のときは確認する - + Use alternating row colors In table elements, every other row will have a grey background. 1行おきに色をつける - + Hide zero and infinity values ゼロまたは無限の値を表示しない - + Always 常に - Paused torrents only - 停止中のTorrentだけ + 停止中のTorrentだけ - + Action on double-click ダブルクリック時の動作 - + Downloading torrents: ダウンロード中のTorrent: - - Start / Stop Torrent - Torrentの開始/停止 + Torrentの開始/停止 - - + + Open destination folder 保存先のフォルダーを開く - - + + No action 何もしない - + Completed torrents: 完了したTorrent: - + Auto hide zero status filters 状況がゼロのフィルターを自動的に非表示にする - + Desktop デスクトップ - + Start qBittorrent on Windows start up Windowsの起動時にqBittorrentを起動する - + Show splash screen on start up 起動時にスプラッシュスクリーンを表示する - + Confirmation on exit when torrents are active Torrentが稼働中のときは終了時に確認する - + Confirmation on auto-exit when downloads finish ダウンロード完了のときに自動終了を確認する - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>.torrentファイルやマグネットリンクの規定のプログラムをqBittorrentに設定するには、<br/><span style=" font-weight:600;">コントロールパネル</span>の</span>規定のプログラム<span style=" font-weight:600;">ダイアログを使用します。</p></body></html> - + KiB KiB - + Torrent content layout: Torrentのコンテンツのレイアウト: - + Original オリジナル - + Create subfolder サブフォルダーを作成する - + Don't create subfolder サブフォルダーを作成しない - + The torrent will be added to the top of the download queue Torrentはダウンロードキューの先頭に追加されます - + Add to top of queue The torrent will be added to the top of the download queue キューの先頭に追加する - + When duplicate torrent is being added 重複したTorrentの追加時 - + Merge trackers to existing torrent 既存のTorrentにトラッカーをマージする - + + Keep unselected files in ".unwanted" folder + 選択されていないファイルを".unwanted"フォルダーに保存する + + + Add... 追加... - + Options.. オプション... - + Remove 削除 - + Email notification &upon download completion ダウンロード完了時にメールで通知する(&U) - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: ピア接続プロトコル: - + Any すべて - + I2P (experimental) I2P (実験的) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p> &quot;混合モード &quot;を有効にすると、I2P Torrentはトラッカー以外のソースからピアを取得し、通常のIPに接続し、匿名化を提供しません。これは、I2Pの匿名化には興味はないが、I2Pピアに接続できるようにしたい場合に便利です。</p></body></html> + <html><head/><body><p> &quot;混合モード &quot;を有効にすると、I2P Torrentはトラッカー以外のソースからピアを取得し、通常のIPに接続し、匿名化を提供しません。これは、I2Pの匿名化には興味はないが、I2Pピアに接続できるようにしたい場合に便利です。</p></body></html> - + Mixed mode 混合モード - + Some options are incompatible with the chosen proxy type! 一部のオプションは、選択したプロキシタイプと互換性がありません。 - + If checked, hostname lookups are done via the proxy チェックを入れると、ホスト名の名前解決はプロキシ経由で行われます - + Perform hostname lookup via proxy プロキシー経由でホスト名の名前解決を行う - + Use proxy for BitTorrent purposes BitTorrentにプロキシを使用する - + RSS feeds will use proxy RSSフィードでプロキシを使用します - + Use proxy for RSS purposes RSSにプロキシを使用する - + Search engine, software updates or anything else will use proxy 検索エンジン、ソフトウェアの更新、その他にプロキシを使用します - + Use proxy for general purposes 全般にプロキシを使用する - + IP Fi&ltering IPフィルタリング(&L) - + Schedule &the use of alternative rate limits 代替速度制限を使用するスケジュール(&T) - + From: From start time 開始: - + To: To end time 終了: - + Find peers on the DHT network DHTネットワーク上のピアを検出します - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption 暗号化を無効にする: プロトコルの暗号化がされていないピアにだけ接続します - + Allow encryption 暗号化を許可する - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">詳細情報</a>) - + Maximum active checking torrents: Torrentをチェックする最大アクティブ数 - + &Torrent Queueing Torrentキュー(&T) - + When total seeding time reaches 合計シード時間に達したとき - + When inactive seeding time reaches 非稼働シード時間に達したとき - A&utomatically add these trackers to new downloads: - 以下のトラッカーを新しいダウンロードに自動追加する(&U): + 以下のトラッカーを新しいダウンロードに自動追加する(&U): - + RSS Reader RSSリーダー - + Enable fetching RSS feeds RSSフィードの取得を有効にする - + Feeds refresh interval: フィードの更新間隔: - + + Same host request delay: + 同じホストへのリクエストの遅延: + + + Maximum number of articles per feed: フィードごとの記事数の上限: - - - + + + min minutes - + Seeding Limits シードの制限 - Pause torrent - Torrentを一時停止 + Torrentを一時停止 - + Remove torrent Torrentを削除 - + Remove torrent and its files Torrentとそのファイルを削除 - + Enable super seeding for torrent Torrentをスーパーシードにする - + When ratio reaches 次の比率に達したとき - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent自動ダウンローダー - + Enable auto downloading of RSS torrents RSS Torrentの自動ダウンロードを有効にする - + Edit auto downloading rules... 自動ダウンロードルールを編集... - + RSS Smart Episode Filter RSSスマートエピソードフィルター - + Download REPACK/PROPER episodes REPACK/PROPERエピソードをダウンロードする - + Filters: フィルター: - + Web User Interface (Remote control) ウェブユーザーインターフェース(遠隔操作) - + IP address: IPアドレス: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6144,42 +6431,41 @@ IPv4、またはIPv6アドレスを指定します。 "*"でIPv4とIPv6のすべてのアドレスが指定できます。 - + Ban client after consecutive failures: 続けて失敗した場合、クライアントをアクセス禁止: - + Never しない - + ban for: アクセス禁止時間: - + Session timeout: セッションのタイムアウト - + Disabled 無効 - Enable cookie Secure flag (requires HTTPS) - CookieのSecureフラグを有効にする(HTTPSが必要) + CookieのSecureフラグを有効にする(HTTPSが必要) - + Server domains: サーバードメイン: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6192,442 +6478,495 @@ DNSリバインディング攻撃を防ぐために、Web UIサーバーが使 複数のエントリに分けるには';'を使用します。ワイルドカード'*'を使用できます。 - + &Use HTTPS instead of HTTP HTTPの代わりにHTTPSを使用する(&U) - + Bypass authentication for clients on localhost ローカルホストではクライアントの認証を行わない - + Bypass authentication for clients in whitelisted IP subnets ホワイトリストに登録されたIPサブネット内のクライアントは認証を行わない - + IP subnet whitelist... IPサブネットのホワイトリスト... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. 転送クライアントアドレス(X-Forwarded-For ヘッダー)を使用するためのリバースプロキシのIP(または 0.0.0.0/24 などのサブネット)を指定します。複数項目は';'で区切ります。 - + Upda&te my dynamic domain name 使用中のダイナミックドメイン名を更新する(&T) - + Minimize qBittorrent to notification area qBittorrentを最小化したときは通知エリアに入れる - + + Search + 検索 + + + + WebUI + + + + Interface インターフェース - + Language: 言語: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: トレイアイコンのスタイル: - - + + Normal - 通常 + 標準 - + File association ファイルの関連付け - + Use qBittorrent for .torrent files ".torrent"ファイルにqBittorrentを使用する - + Use qBittorrent for magnet links マグネットリンクにqBittorrentを使用する - + Check for program updates プログラムのアップデートを確認する - + Power Management 電源管理 - + + &Log Files + + + + Save path: 保存パス: - + Backup the log file after: 次のサイズでログをバックアップする: - + Delete backup logs older than: 次の期間を超えたバックアップログを削除する: - + + Show external IP in status bar + + + + When adding a torrent Torrentの追加時 - + Bring torrent dialog to the front Torrentダイアログを前面に表示 - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled 追加をキャンセルした場合でも".torrent"ファイルが削除されます - + Also when addition is cancelled 追加がキャンセルされた場合でも削除する - + Warning! Data loss possible! 注意: データが失われる可能性があります。 - + Saving Management 保存管理 - + Default Torrent Management Mode: デフォルトのTorrent管理モード: - + Manual 手動 - + Automatic 自動 - + When Torrent Category changed: Torrentのカテゴリーが変更されたとき: - + Relocate torrent Torrentを再配置する - + Switch torrent to Manual Mode Torrentを手動モードに切り換える - - + + Relocate affected torrents 影響を受けるTorrentを再配置する - - + + Switch affected torrents to Manual Mode 影響を受けるTorrentを手動モードに切り換える - + Use Subcategories サブカテゴリーを使用する - + Default Save Path: デフォルトの保存パス: - + Copy .torrent files to: ".torrent"ファイルを次のパスにコピーする: - + Show &qBittorrent in notification area qBittorrentを通知エリアに表示する(&Q) - &Log file - ログファイル(&L) + ログファイル(&L) - + Display &torrent content and some options Torrentのコンテンツといくつかのオプションを表示する(&T) - + De&lete .torrent files afterwards 追加後に".torrent"ファイルを削除する(&L) - + Copy .torrent files for finished downloads to: 完了した".torrent"ファイルを次のパスにコピーする: - + Pre-allocate disk space for all files すべてのファイルにディスク領域を事前に割り当てる - + Use custom UI Theme カスタムUIテーマを使用する - + UI Theme file: UIテーマファイル: - + Changing Interface settings requires application restart インターフェースの設定を変更するには、アプリケーションの再起動が必要です - + Shows a confirmation dialog upon torrent deletion Torrentの削除時に確認ダイアログを表示します - - + + Preview file, otherwise open destination folder ファイルをプレビューするか保存先フォルダーを開く - - Show torrent options - Torrentのオプションを表示する + Torrentのオプションを表示する - + Shows a confirmation dialog when exiting with active torrents 稼働中のTorrentがあるときに終了する場合、確認ダイアログを表示します - + When minimizing, the main window is closed and must be reopened from the systray icon 最小化するとメインウィンドウが閉じますので、システムトレイのアイコンから開き直す必要があります - + The systray icon will still be visible when closing the main window メインウィンドウを閉じてもシステムトレイにアイコンが表示されます - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window qBittorrentを閉じたときは通知エリアに入れる - + Monochrome (for dark theme) モノクローム(ダークテーマ用) - + Monochrome (for light theme) モノクローム(ライトテーマ用) - + Inhibit system sleep when torrents are downloading Torrentのダウンロード中はシステムのスリープを禁止する - + Inhibit system sleep when torrents are seeding Torrentのシード中はシステムのスリープを禁止する - + Creates an additional log file after the log file reaches the specified file size ログファイルが指定したファイルサイズに達した後、追加のログファイルを作成します - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months ヶ月 - + years Delete backup logs older than 10 years - + Log performance warnings パフォーマンス警告を記録する - The torrent will be added to download list in a paused state - Torrentは一時停止の状態でダウンロードリストに追加されます + Torrentは一時停止の状態でダウンロードリストに追加されます - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state ダウンロードを自動的に開始しない - + Whether the .torrent file should be deleted after adding it ".torrent"ファイルを追加後に削除するかどうか - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. ダウンロードを開始する前にディスクに総ファイルサイズを割り当て、断片化を最小限に抑えます。これはHDDだけに役立ちます。 - + Append .!qB extension to incomplete files 完了していないファイルに拡張子(.!qB)を付加する - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Torrentがダウンロードされたとき、その中にある".torrent"ファイルからTorrentを追加することを提案します - + Enable recursive download dialog 「再帰的ダウンロード」ダイアログを有効にする - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually 自動: Torrentの各種プロパティー(保存先など)は、関連付けられたカテゴリーに応じて決定されます 手動: Torrentの各種プロパティー(保存先など)は、手作業で割り当てる必要があります - + When Default Save/Incomplete Path changed: デフォルトの保存/未完了パスが変更されたとき: - + When Category Save Path changed: カテゴリーの保存パスが変更されたとき: - + Use Category paths in Manual Mode 手動モードでカテゴリーのパスを使用する - + Resolve relative Save Path against appropriate Category path instead of Default one 相対的な保存パスを、デフォルトのパスではなく適切なカテゴリーのパスで解決します - + Use icons from system theme システムテーマのアイコンを使用する - + Window state on start up: 起動時のウィンドウ状態: - + qBittorrent window state on start up 起動時のqBittorrentのウィンドウ状態 - + Torrent stop condition: Torrentの停止条件: - - + + None なし - - + + Metadata received メタデータを受信後 - - + + Files checked ファイルのチェック後 - + Ask for merging trackers when torrent is being added manually Torrentが手動で追加されるときにトラッカーのマージを求める - + Use another path for incomplete torrents: 未完了のTorrentは別のパスを使用する: - + Automatically add torrents from: 次のフォルダーからTorrentを自動的に追加する: - + Excluded file names 除外ファイル名 - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6656,843 +6995,916 @@ readme.txt: 正確なファイル名をフィルタリングします。 readme[0-9].txt: 'readme1.txt', 'readme2.txt'をフィルタリングしますが、'readme10.txt'はフィルタリングしません。 - + Receiver 受信者 - + To: To receiver 宛先(To): - + SMTP server: SMTPサーバー: - + Sender 送信者 - + From: From sender 差出人(From): - + This server requires a secure connection (SSL) このサーバーは安全な接続(SSL)を必要とする - - + + Authentication 認証 - - - - + + + + Username: ユーザー名: - - - - + + + + Password: パスワード: - + Run external program 外部プログラムの実行 - Run on torrent added - Torrentの追加時に実行 + Torrentの追加時に実行 - Run on torrent finished - Torrentの完了時に実行 + Torrentの完了時に実行 - + Show console window コンソールウィンドウを表示する - + TCP and μTP TCPとμTP - + Listening Port 接続待ちポート - + Port used for incoming connections: 受信接続に使用するポート: - + Set to 0 to let your system pick an unused port 0に設定すると、システムが未使用のポートを選択します - + Random ランダム - + Use UPnP / NAT-PMP port forwarding from my router ルーターからのポート転送にUPnP/NAT-PMPを使用する - + Connections Limits 接続制限 - + Maximum number of connections per torrent: Torrentごとの接続数の上限: - + Global maximum number of connections: グローバルの最大接続数: - + Maximum number of upload slots per torrent: Torrentごとのアップロードスロット数の上限: - + Global maximum number of upload slots: グローバルの最大アップロードスロット数: - + Proxy Server プロキシサーバー - + Type: タイプ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: ホスト: - - - + + + Port: ポート: - + Otherwise, the proxy server is only used for tracker connections 無効の場合、プロキシサーバーはトラッカー接続だけに使用されます - + Use proxy for peer connections ピア接続にプロキシを使用する - + A&uthentication 認証(&U) - + Info: The password is saved unencrypted 注意: パスワードは暗号化せずに保存されます - + Filter path (.dat, .p2p, .p2b): フィルターのパス(.dat, .p2p, .p2b): - + Reload the filter フィルターの再読み込み - + Manually banned IP addresses... 手動でアクセス禁止にしたIPアドレス... - + Apply to trackers トラッカーに適用する - + Global Rate Limits グローバルの速度制限 - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/秒 - - + + Upload: アップロード: - - + + Download: ダウンロード: - + Alternative Rate Limits 代替速度制限 - + Start time 開始時刻 - + End time 終了時刻 - + When: 日: - + Every day 毎日 - + Weekdays 平日 - + Weekends 週末 - + Rate Limits Settings 速度制限の設定 - + Apply rate limit to peers on LAN LAN上のピアに速度制限を適用する - + Apply rate limit to transport overhead トランスポートオーバーヘッドに制限を適用する - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol µTPプロトコルに速度制限を適用する - + Privacy プライバシー - + Enable DHT (decentralized network) to find more peers DHT(分散ネットワーク)を有効にする(ピア検出数の向上) - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) BitTorrentの互換クライアント(µTorrentやVuzeなど)とピアを交換します - + Enable Peer Exchange (PeX) to find more peers ピア交換(PeX)を有効にする(ピア検出数の向上) - + Look for peers on your local network ローカルネットワーク内のピアを探します - + Enable Local Peer Discovery to find more peers ローカルピア検出(LSD)を有効にする(ピア検出数の向上) - + Encryption mode: 暗号化モード: - + Require encryption 暗号化を必須にする - + Disable encryption 暗号化を無効にする - + Enable when using a proxy or a VPN connection プロキシやVPN接続を使用する場合は有効にします - + Enable anonymous mode 匿名モードを有効にする - + Maximum active downloads: 稼働中ダウンロード数の上限: - + Maximum active uploads: 稼働中アップロード数の上限: - + Maximum active torrents: 稼働中Torrent数の上限: - + Do not count slow torrents in these limits これらの制限で遅いTorrentは数に含めない - + Upload rate threshold: アップロード速度のしきい値: - + Download rate threshold: ダウンロード速度のしきい値: - - - + + + + sec seconds - + Torrent inactivity timer: Torrent非稼働中タイマー: - + then 次の処理を行う - + Use UPnP / NAT-PMP to forward the port from my router ルーターからのポート転送にUPnP/NAT-PMPを使用する - + Certificate: 証明書: - + Key: 鍵: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>証明書に関する情報</a> - + Change current password 現在のパスワードを変更 - Use alternative Web UI - 別のWeb UIを使用する + 別のWeb UIを使用する - + Files location: ファイルの場所: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security セキュリティー - + Enable clickjacking protection クリックジャッキング保護を有効にする - + Enable Cross-Site Request Forgery (CSRF) protection クロスサイトリクエストフォージェリ(CSRF)保護を有効にする - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation ホストヘッダー検証を有効にする - + Add custom HTTP headers カスタムHTTPヘッダーを追加する - + Header: value pairs, one per line ヘッダー: 値 の対を1行に1つ - + Enable reverse proxy support リバースプロキシ対応を有効にする - + Trusted proxies list: 信頼プロキシリスト - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: サービス: - + Register 登録 - + Domain name: ドメイン名: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! これらのオプションを有効にすると、".torrent"ファイルが<strong>完全に削除</strong>されます。 - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog 2番目のオプション(「追加がキャンセルされた場合でも削除する」)を有効にした場合、「Torrentの追加」ダイアログで<strong>キャンセル</strong>を押したときでも".torrent"ファイルが<strong>削除されます</strong>。 - + Select qBittorrent UI Theme file qBittorrentのUIテーマファイルを選択 - + Choose Alternative UI files location 別のUIファイルの場所の選択 - + Supported parameters (case sensitive): 使用できるパラメーター(大文字と小文字を区別): - + Minimized 最小化 - + Hidden 非表示 - + Disabled due to failed to detect system tray presence システムトレイが検出できなかったため、無効にされました - + No stop condition is set. 停止条件は設定されていません。 - + Torrent will stop after metadata is received. メタデータの受信後、Torrentは停止します。 - - Torrents that have metadata initially aren't affected. - はじめからメタデータを持つTorrentは影響を受けません。 - - - + Torrent will stop after files are initially checked. ファイルの初期チェック後、Torrentは停止します。 - + This will also download metadata if it wasn't there initially. また、メタデータが存在しない場合は、メタデータもダウンロードされます。 - + %N: Torrent name %N: Torrent名 - + %L: Category %L: カテゴリー - + %F: Content path (same as root path for multifile torrent) %F: コンテンツパス(複数ファイルTorrentのルートと同じ) - + %R: Root path (first torrent subdirectory path) %R: ルートパス(最初のTorrentサブディレクトリーのパス) - + %D: Save path %D: 保存パス - + %C: Number of files %C: ファイル数 - + %Z: Torrent size (bytes) %Z: Torrentのサイズ(バイト) - + %T: Current tracker %T: 現在のトラッカー - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") ヒント: 空白文字でテキストが切れることを防ぐために、パラメーターはダブルクオーテーションで囲います(例: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (なし) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds 「Torrent非稼働中タイマー」で指定された秒数の間、ダウンロードとアップロードの速度が指定されたしきい値を下回った場合に遅いTorrentとみなされます - + Certificate 証明書 - + Select certificate 証明書の選択 - + Private key 秘密鍵 - + Select private key 秘密鍵の選択 - + + WebUI configuration failed. Reason: %1 + WebUIが設定できませんでした。理由: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor 監視するフォルダーを選択 - + Adding entry failed エントリーを追加できませんでした - - Location Error - 場所エラー + + The WebUI username must be at least 3 characters long. + Web UIのユーザー名は、最低3文字が必要です。 - - The alternative Web UI files location cannot be blank. - 別のWeb UIファイルの場所を空欄にすることはできません + + The WebUI password must be at least 6 characters long. + WebUIのパスワードは、最低6文字が必要です。 - - + + Location Error + 場所エラー + + + + Choose export directory エクスポートするディレクトリーの選択 - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well 最初のオプションが有効の場合、ダウンロードキューに正常に追加された後に".torrent"ファイルが<strong>削除されます</strong>。2番目のオプションが有効の場合、キューに追加されなくても削除されます。 これは、メニュー項目の「Torrentリンクの追加」から追加した場合<strong>だけでなく</strong>、<strong>ファイルタイプの関連付け</strong>で開いた場合も適用されます。 - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrentのUIテーマファイル(*.qbtheme config.json) - + %G: Tags (separated by comma) %G: タグ(カンマ区切り) - + %I: Info hash v1 (or '-' if unavailable) %I: Infoハッシュ v1(利用できない場合は'-') - + %J: Info hash v2 (or '-' if unavailable) %I: Infoハッシュ v2(利用できない場合は'-') - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent ID (v1 Torrentはsha-1 infoハッシュ、v2/ハイプリッドTorrentは省略したsha-256 infoハッシュ) - - - + + + Choose a save directory 保存するディレクトリーの選択 - + + Torrents that have metadata initially will be added as stopped. + 最初からメタデータを持つTorrentは、停止状態で追加されます。 + + + Choose an IP filter file IPフィルターファイルの選択 - + All supported filters すべての対応フィルター - + + The alternative WebUI files location cannot be blank. + 代替WebUIファイルの場所を空欄にすることはできません。 + + + Parsing error 解析エラー - + Failed to parse the provided IP filter 指定されたIPフィルターを解析できませんでした - + Successfully refreshed 正常に再読み込みされました - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number 指定されたIPフィルターは正常に解析され、ルール(%1)が適用されました。 - + Preferences 設定 - + Time Error 時刻エラー - + The start time and the end time can't be the same. 開始と終了の時刻を同じにすることはできません。 - - + + Length Error 文字数エラー - - - The Web UI username must be at least 3 characters long. - Web UIのユーザー名は、最低3文字が必要です。 - - - - The Web UI password must be at least 6 characters long. - Web UIのパスワードは、最低6文字が必要です。 - PeerInfo - + Unknown 不明 - + Interested (local) and choked (peer) 欲しいピースあり(ローカル)/アップロード拒絶(ピア) - + Interested (local) and unchoked (peer) 欲しいピースあり(ローカル)/アップロード承諾(ピア) - + Interested (peer) and choked (local) 欲しいピースあり(ピア)/アップロード拒絶(ローカル) - + Interested (peer) and unchoked (local) 欲しいピースあり(ピア)/アップロード承諾(ローカル) - + Not interested (local) and unchoked (peer) 欲しいピースなし(ローカル)/アップロード承諾(ピア) - + Not interested (peer) and unchoked (local) 欲しいピースなし(ピア)/アップロード承諾(ローカル) - + Optimistic unchoke 楽観的アンチョーク - + Peer snubbed ピアがスナッブ - + Incoming connection 受信接続 - + Peer from DHT DHTから取得したピア - + Peer from PEX PEXから取得したピア - + Peer from LSD LSDから取得したピア - + Encrypted traffic 暗号化されたトラフィック - + Encrypted handshake 暗号化されたハンドシェイク - + + + Peer is using NAT hole punching + + + PeerListWidget @@ -7647,7 +8059,7 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'をフィルタ ピア %1 が手動でアクセス禁止にされました - + N/A N/A @@ -7670,7 +8082,7 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'をフィルタ 追加するピアのリスト(IPごとに改行): - + Format: IPv4:port / [IPv6]:port 書式: IPv4:ポート/[IPv6]:ポート @@ -7711,27 +8123,27 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'をフィルタ PiecesBar - + Files in this piece: このピースに含まれるファイル: - + File in this piece: このピースに含まれるファイル: - + File in these pieces: これらのピースに含まれるファイル: - + Wait until metadata become available to see detailed information 詳細情報を表示するには、メタデータが取得できるまでお待ちください - + Hold Shift key for detailed information Shiftキーを押したままホバーすると詳細情報を表示します @@ -7744,58 +8156,58 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'をフィルタ 検索プラグイン - + Installed search plugins: インストールされている検索プラグイン: - + Name 名前 - + Version バージョン - + Url URL - - + + Enabled 有効 - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. 警告: これら検索エンジンからTorrentをダウンロードする際は、あなたの国の著作権法を必ず遵守してください。 - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> 次のURLから新しい検索エンジンプラグインを入手できます: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one 新しいものをインストール - + Check for updates アップデートをチェック - + Close 閉じる - + Uninstall アンインストール @@ -7915,17 +8327,17 @@ Those plugins were disabled. プラグインのソース - + Search plugin source: 検索プラグインのソース: - + Local file ローカルファイル - + Web link ウェブリンク @@ -7943,70 +8355,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + 電源管理で適切なD-Busインターフェースが見つかりました。インターフェース: %1 Power management error. Did not found suitable D-Bus interface. - + 電源管理エラー。適切なD-Busインターフェースが見つかりませんでした。 Power management error. Action: %1. Error: %2 - + 電源管理エラー。 操作: %1. エラー: %2 Power management unexpected error. State: %1. Error: %2 - + 電源管理の予期せぬエラー。 状態: %1. エラー: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Torrent(%1)内の次のファイルはプレビューに対応しています。どれかひとつを選択してください: - + Preview プレビュー - + Name 名前 - + Size サイズ - + Progress 進捗状況 - + Preview impossible プレビューできません - + Sorry, we can't preview this file: "%1". このファイルのプレビューには対応していません: "%1" - + Resize columns 列のリサイズ - + Resize all non-hidden columns to the size of their contents 非表示以外のすべての列をコンテンツのサイズにリサイズします @@ -8019,27 +8431,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist パスが存在しません - + Path does not point to a directory パスがディレクトリーではありません - + Path does not point to a file パスがファイルではありません - + Don't have read permission to path パスへの読み取り許可がありません - + Don't have write permission to path パスへの書き込み許可がありません @@ -8080,12 +8492,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: ダウンロード量: - + Availability: 可用性: @@ -8100,53 +8512,53 @@ Those plugins were disabled. 転送 - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) 稼働時間: - + ETA: 予測所要時間: - + Uploaded: アップロード量: - + Seeds: シード数: - + Download Speed: ダウンロード速度: - + Upload Speed: アップロード速度: - + Peers: ピア数: - + Download Limit: ダウンロード制限: - + Upload Limit: アップロード制限: - + Wasted: 破棄: @@ -8156,193 +8568,249 @@ Those plugins were disabled. 接続数: - + Information 情報 - + Info Hash v1: Infoハッシュ v1: - + Info Hash v2: Infoハッシュ v2: - + Comment: コメント: - + Select All すべて選択 - + Select None すべて解除 - + Share Ratio: 共有比: - + Reannounce In: 次のアナウンスまで: - + Last Seen Complete: 最後に完了が確認された日時: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: 合計サイズ: - + Pieces: ピース数: - + Created By: 作成: - + Added On: 追加日時: - + Completed On: 完了日時: - + Created On: 作成日時: - + + Private: + + + + Save Path: 保存パス: - + Never なし - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (保有%3) - - + + %1 (%2 this session) %1 (このセッション%2) - - + + + N/A N/A - + + Yes + はい + + + + No + いいえ + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (シードから%2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (最大%2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (合計%2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (平均%2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - 新規ウェブシード + 新規ウェブシード - Remove Web seed - ウェブシードの削除 + ウェブシードの削除 - Copy Web seed URL - ウェブシードURLのコピー + ウェブシードURLのコピー - Edit Web seed URL - ウェブシードURLの編集 + ウェブシードURLの編集 - + Filter files... ファイルを絞り込む... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled 速度グラフが無効になっています - + You can enable it in Advanced Options 高度な設定で有効にできます - New URL seed New HTTP source - 新規URLシード + 新規URLシード - New URL seed: - 新規URLシード: + 新規URLシード: - - This URL seed is already in the list. - このURLシードはすでにリストにあります。 + このURLシードはすでにリストにあります。 - + Web seed editing ウェブシードの編集 - + Web seed URL: ウェブシードURL: @@ -8361,22 +8829,22 @@ Those plugins were disabled. %1のRSS自動ダウンローダーを保存できませんでした。エラー: %2 - + Invalid data format 不正なデータ形式 - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS記事(%1)はルール(%2)によって受け入れられました。Torrentの追加を試みています... - + Failed to read RSS AutoDownloader rules. %1 RSS自動ダウンローダーのルールが読み込めませんでした。%1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 RSS自動ダウンローダールールを読み込めませんでした。理由: %1 @@ -8384,22 +8852,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 '%1'のRSSフィードをダウンロードできませんでした。理由: %2 - + RSS feed at '%1' updated. Added %2 new articles. '%1'のRSSフィードが更新されました。%2件の新着記事が追加されました。 - + Failed to parse RSS feed at '%1'. Reason: %2 '%1'のRSSフィードを解析できませんでした。理由: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSSフィード'%1'は正常にダウンロードされ、解析が開始されました。 @@ -8435,12 +8903,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. 無効なRSSフィードです。 - + %1 (line: %2, column: %3, offset: %4). %1 (行: %2、列: %3、オフセット: %4)。 @@ -8448,99 +8916,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" RSSセッションの設定を保存できませんでした。 ファイル: "%1". エラー: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" RSSセッションのデータを保存できませんでした。 ファイル: "%1". エラー: "%2" - - + + RSS feed with given URL already exists: %1. 指定されたURLのRSSフィードはすでに存在します: %1. - + Feed doesn't exist: %1. フィードが存在しません: %1. - + Cannot move root folder. ルートフォルダーは移動できません。 - - + + Item doesn't exist: %1. アイテムが存在しません: %1. - + Couldn't move folder into itself. フォルダーをフォルダー自身に移動できませんでした。 - + Cannot delete root folder. ルートフォルダーは削除できません。 - + Failed to read RSS session data. %1 RSSセッションデータが読み込めませんでした。%1 - + Failed to parse RSS session data. File: "%1". Error: "%2" RSSセッションデータが解析できませんでした。 ファイル: "%1". エラー: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." RSSセッションデータが読み込めませんでした。 ファイル: "%1". エラー: 無効なデータ形式です。 - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. RSSフィードを読み込めませんでした。 フィード: "%1". 理由: URLが必要です。 - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. RSSフィードが読み込めませんでした。 フィード: "%1". 理由: UIDが無効です。 - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. 重複したRSSフィードが見つかりました。 UID: "%1". エラー: 設定が破損している可能性があります。 - + Couldn't load RSS item. Item: "%1". Invalid data format. RSS項目が読み込めませんでした。 項目: "%1". 無効なデータ形式です。 - + Corrupted RSS list, not loading it. RSSリストが破損しているため、読み込めません。 - + Incorrect RSS Item path: %1. RSSアイテムのパスが正しくありません: %1. - + RSS item with given path already exists: %1. 指定されたパスのRSSアイテムはすでに存在します: %1. - + Parent folder doesn't exist: %1. 親フォルダーが存在しません: %1. @@ -8564,8 +9032,8 @@ Those plugins were disabled. - - + + Mark items read 既読にする @@ -8590,132 +9058,132 @@ Those plugins were disabled. Torrent: (ダブルクリックしてダウンロード) - - + + Delete 削除 - + Rename... 名前を変更... - + Rename 名前の変更 - - + + Update 更新 - + New subscription... 新規購読... - - + + Update all feeds すべてのフィードの更新 - + Download torrent Torrentのダウンロード - + Open news URL ニュースの URL を開く - + Copy feed URL フィードURLを開く - + New folder... 新規フォルダー... - + Edit feed URL... フィードURLを編集... - + Edit feed URL フィードURLの編集 - + Please choose a folder name フォルダー名を選択してください - + Folder name: フォルダー名: - + New folder 新しいフォルダー - - + + Please type a RSS feed URL RSSフィードのURLを入力してください - - + + Feed URL: フィード URL: - + Deletion confirmation 削除の確認 - + Are you sure you want to delete the selected RSS feeds? 選択したRSSフィードを削除しますか? - + Please choose a new name for this RSS feed このRSSフィードの新しい名前を入力してください - + New feed name: 新しいフィード名: - + Rename failed 名前の変更に失敗 - + Date: 日付: - + Feed: - + フィード: - + Author: 作者: @@ -8723,38 +9191,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. 検索エンジンを使用するには、Pythonをインストールする必要があります。 - + Unable to create more than %1 concurrent searches. %1を超える同時検索は作成できません。 - - + + Offset is out of range オフセットが範囲外です - + All plugins are already up to date. すべてのプラグインはすでに最新です。 - + Updating %1 plugins %1個のプラグインを更新しています - + Updating plugin %1 プラグイン%1を更新しています - + Failed to check for plugin updates: %1 プラグインの更新をチェックできませんでした: %1 @@ -8829,132 +9297,146 @@ Those plugins were disabled. サイズ: - + Name i.e: file name 名前 - + Size i.e: file size サイズ - + Seeders i.e: Number of full sources シーダー - + Leechers i.e: Number of partial sources リーチャー - Search engine - 検索エンジン + 検索エンジン - + Filter search results... 検索結果を絞り込む... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results 検索結果 ( <i>%2</i> 件中 <i>%1</i> 件を表示): - + Torrent names only Torrent名だけ - + Everywhere すべて - + Use regular expressions 正規表現を使用 - + Open download window ダウンロードウィンドウを開く - + Download ダウンロード - + Open description page 説明ページを開く - + Copy コピー - + Name 名前 - + Download link ダウンロードのリンク - + Description page URL 説明ページのURL - + Searching... 検索中... - + Search has finished 検索完了 - + Search aborted 検索中止 - + An error occurred during search... 検索中にエラーが発生しました... - + Search returned no results 検索結果は 0 件でした - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility 表示する列 - + Resize columns 列のリサイズ - + Resize all non-hidden columns to the size of their contents 非表示以外のすべての列をコンテンツのサイズにリサイズします @@ -8962,104 +9444,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. 不明な検索エンジンプラグインのファイル形式です。 - + Plugin already at version %1, which is greater than %2 プラグインはすでに%1で、%2より新しくなっています - + A more recent version of this plugin is already installed. このプラグインの新しいバージョンがすでにインストールされています。 - + Plugin %1 is not supported. プラグイン"%1"は対応していません。 - - + + Plugin is not supported. プラグインは対応していません。 - + Plugin %1 has been successfully updated. プラグイン"%1"は正常に更新されました。 - + All categories 全カテゴリ - + Movies 映画 - + TV shows テレビ番組 - + Music 音楽 - + Games ゲーム - + Anime アニメ - + Software ソフトウェア - + Pictures 画像 - + Books 書籍 - + Update server is temporarily unavailable. %1 アップデートサーバーは一時的に利用できません。%1 - - + + Failed to download the plugin file. %1 プラグインファイルをダウンロードできませんでした。%1 - + Plugin "%1" is outdated, updating to version %2 プラグイン"%1"は古いため、バージョン%2に更新しています - + Incorrect update info received for %1 out of %2 plugins. %2のプラグインのうち%1から不正な更新情報を受信しました。 - + Search plugin '%1' contains invalid version string ('%2') 検索プラグイン'%1'に無効なバージョン文字列('%2')が含まれています @@ -9069,114 +9551,153 @@ Those plugins were disabled. - - - - Search 検索 - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. 検索プラグインがインストールされていません。 ウィンドウ右下の"プラグインを検索..."ボタンをクリックしてインストールしてください。 - + Search plugins... プラグインを検索... - + A phrase to search for. 検索文字列を入力してください。 - + Spaces in a search term may be protected by double quotes. 空白を含む文字列を検索したい場合はダブルクォーテーションで括ってください。 - + Example: Search phrase example 例: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: 文字列「<b>foo bar</b>」を検索します - + All plugins すべてのプラグイン - + Only enabled 有効なものだけ - + + + Invalid data format. + 不正なデータ形式です。 + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: 文字列「<b>foo</b>」と「<b>bar</b>」を検索します - + + Refresh + + + + Close tab タブを閉じる - + Close all tabs すべてのタブを閉じる - + Select... 選択... - - - + + Search Engine 検索エンジン - + + Please install Python to use the Search Engine. 検索エンジンを使用するにはPythonをインストールしてください。 - + Empty search pattern 空の検索パターン - + Please type a search pattern first はじめに検索パターンを入力してください - + + Stop 停止 - Search has finished - 検索完了 + 検索完了 - Search has failed - 検索に失敗しました + 検索に失敗しました + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9289,34 +9810,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: アップロード: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: ダウンロード: - + Alternative speed limits 代替速度制限 @@ -9508,32 +10029,32 @@ Click the "Search plugins..." button at the bottom right of the window 平均キュー待ち時間: - + Connected peers: 接続ピア数: - + All-time share ratio: 総合共有比: - + All-time download: 総合ダウンロード量: - + Session waste: セッション破棄: - + All-time upload: 総合アップロード量: - + Total buffer size: 全バッファサイズ: @@ -9548,12 +10069,12 @@ Click the "Search plugins..." button at the bottom right of the window 待機I/Oジョブ数: - + Write cache overload: 書き込みキャッシュオーバーロード: - + Read cache overload: 読み込みキャッシュオーバーロード: @@ -9572,51 +10093,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: 接続状態: - - + + No direct connections. This may indicate network configuration problems. ネットワークに接続されていません。ネットワーク構成に問題がある可能性があります。 - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 ノード - + qBittorrent needs to be restarted! qBittorrentの再起動が必要です。 - - - + + + Connection Status: 接続状態: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. オフライン。通常これは、受信用に指定されたポートでの接続待ちができなかったことを意味します。 - + Online オンライン - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits クリックすると代替速度制限に切り替わります - + Click to switch to regular speed limits クリックすると通常の速度制限に切り替わります @@ -9645,14 +10182,22 @@ Click the "Search plugins..." button at the bottom right of the window 完了 (0) - Resumed (0) - 再開 (0) + 再開 (0) - Paused (0) - 一時停止 (0) + 一時停止 (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9714,10 +10259,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) 完了 (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - 一時停止 (%1) + 一時停止 (%1) @@ -9725,14 +10289,12 @@ Click the "Search plugins..." button at the bottom right of the window 移動中 (%1) - Resume torrents - Torrentの再開 + Torrentの再開 - Pause torrents - Torrentの一時停止 + Torrentの一時停止 @@ -9740,9 +10302,8 @@ Click the "Search plugins..." button at the bottom right of the window Torrentを削除 - Resumed (%1) - 再開 (%1) + 再開 (%1) @@ -9783,17 +10344,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags タグ - + All すべて - + Untagged タグなし @@ -9801,52 +10362,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... タグを追加... - + Remove tag タグの削除 - + Remove unused tags 未使用のタグの削除 - Resume torrents - Torrentを再開 + Torrentを再開 - Pause torrents - Torrentを一時停止 + Torrentを一時停止 - + Remove torrents Torrentを削除 - New Tag - 新規タグ + 新規タグ + + + + Start torrents + - + + Stop torrents + + + + Tag: タグ: - + + Add tag + + + + Invalid tag name 無効なタグ名です - + Tag name '%1' is invalid タグ名'%1'は正しくありません @@ -9962,7 +10535,7 @@ Please choose a different name and try again. Normal Normal (priority) - 普通 + 標準 @@ -9986,32 +10559,32 @@ Please choose a different name and try again. TorrentContentModel - + Name 名前 - + Progress 進捗状況 - + Download Priority ダウンロード優先度 - + Remaining 残り - + Availability 可用性 - + Total Size 合計サイズ @@ -10045,7 +10618,7 @@ Please choose a different name and try again. Normal Normal (priority) - 通常 + 標準 @@ -10056,102 +10629,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error 名前変更のエラー - + Renaming 名前の変更 - + New name: 新しい名前: - + Column visibility 表示する列 - + Resize columns 列のリサイズ - + Resize all non-hidden columns to the size of their contents 非表示以外のすべての列をコンテンツのサイズにリサイズします - + Open 開く - + Open containing folder フォルダーを開く - + Rename... 名前を変更... - + Priority 優先度 - - + + Do not download ダウンロードしない - + Normal - 普通 + 標準 - + High - + Maximum 最高 - + By shown file order 表示ファイル順に自動指定 - + Normal priority - 普通優先度 + 標準優先度 - + High priority 高優先度 - + Maximum priority 最高優先度 - + Priority by shown file order 表示ファイル順の優先度 + + TorrentCreatorController + + + Too many active tasks + アクティブなタスクが多すぎます + + + + Torrent creation is still unfinished. + Torrentの作成は、まだ完了していません。 + + + + Torrent creation failed. + Torrentを作成できませんでした。 + + TorrentCreatorDialog @@ -10176,13 +10767,13 @@ Please choose a different name and try again. - + Select file ファイルの選択 - + Select folder フォルダーの選択 @@ -10207,58 +10798,10 @@ Please choose a different name and try again. ピースサイズ: - + Auto 自動 - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10305,92 +10848,83 @@ Please choose a different name and try again. フィールド - + You can separate tracker tiers / groups with an empty line. 空行でトラッカーのティア/グループを分けることができます。 - + Web seed URLs: ウェブシードURL: - + Tracker URLs: トラッカーURL: - + Comments: コメント: - + Source: ソース: - + Progress: 進捗状況: - + Create Torrent Torrentを作成 - - + + Torrent creation failed Torrentを作成できませんでした - + Reason: Path to file/folder is not readable. 理由: ファイル/フォルダーへのパスが読み込み不可です。 - + Select where to save the new torrent 新規Torrentの保存先を選択してください - + Torrent Files (*.torrent) Torrentファイル (*.torrent) - - Reason: %1 - 理由: %1 - - - + Add torrent to transfer list failed. - + 転送リストにTorrentを追加できませんでした。 - + Reason: "%1" - + 理由: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - 理由: 作成されたTorrentは無効です。ダウンロードリストには追加されません。 + Torrentが追加できませんでした - + Torrent creator Torrentクリエーター - + Torrent created: Torrentを作成しました: @@ -10398,32 +10932,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 監視フォルダーの設定が読み込めませんでした。%1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" %1から監視フォルダーの設定が解析できませんでした。エラー: %2 - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." %1から監視フォルダーの設定が読み込めませんでした。エラー:"無効なデータ形式です。" - + Couldn't store Watched Folders configuration to %1. Error: %2 %1に監視フォルダーの設定を保存できませんでした。エラー: %2 - + Watched folder Path cannot be empty. 監視フォルダーのパスは空欄にできません。 - + Watched folder Path cannot be relative. 監視フォルダーに相対パスは指定できません。 @@ -10431,27 +10965,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + 無効なマグネットURI。URI: %1. 理由: %2 - + Magnet file too big. File: %1 マグネットファイルが大きすぎます。 ファイル:%1 - + Failed to open magnet file: %1 マグネットファイル(%1)をオープンできませんでした。 - + Rejecting failed torrent file: %1 失敗したTorrentファイルは除外されました: %1 - + Watching folder: "%1" 次のフォルダーを監視中です: "%1" @@ -10459,14 +10993,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - ファイルの読み込み時にメモリーを割り当てられませんでした。ファイル:"%1". エラー: "%2" + ファイルの読み込み時にメモリーを割り当てられませんでした。ファイル:"%1". エラー: "%2" - Invalid metadata - 無効なメタデータです + 無効なメタデータです @@ -10497,279 +11029,374 @@ Please choose a different name and try again. 未完了のTorrentは別のパスを使用する - + Category: カテゴリー: - + + Torrent Share Limits + + + Torrent speed limits - Torrentの速度制限 + Torrentの速度制限 - + Download: ダウンロード: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/秒 - + These will not exceed the global limits この設定がグローバルの制限を超えることはありません - + Upload: アップロード: - Torrent share limits - Torrentの共有制限 + Torrentの共有制限 - Use global share limit - グローバルの共有比制限を使用する + グローバルの共有比制限を使用する - Set no share limit - 共有比を制限しない + 共有比を制限しない - Set share limit to - 共有比制限を指定する + 共有比制限を指定する - ratio - 比率 + 比率 - total minutes - 合計(分) + 合計(分) - inactive minutes - 非稼働(分) + 非稼働(分) - + Disable DHT for this torrent このTorrentのDHTを無効にする - + Download in sequential order ピースを先頭から順番にダウンロードする - + Disable PeX for this torrent このTorrentのPeXを無効にする - + Download first and last pieces first 最初と最後のピースを先にダウンロードする - + Disable LSD for this torrent このTorrentのLSDを無効にする - + Currently used categories 現在使用中のカテゴリー - - + + Choose save path 保存先の選択 - + Not applicable to private torrents プライベートTorrentには適用できません - No share limit method selected - 共有比の制限方法が指定されていません + 共有比の制限方法が指定されていません - Please select a limit method first - はじめに制限方法を指定してください + はじめに制限方法を指定してください - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Torrentのタグ + + + + + Default + デフォルト - - New Tag - 新規タグ + + + + Unlimited + 無制限 - - Tag: - タグ: + + + + Set to + 選択 - - Invalid tag name - 無効なタグ名です + + Seeding time: + シード時間: - - Tag name '%1' is invalid. - タグ名'%1'は正しくありません。 + + + + + + + min + minutes + - - Tag exists - タグが存在します + + Inactive seeding time: + 非稼働シード時間: - - Tag name already exists. - タグ名はすでに存在します。 + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - エラー: '%1'は有効なTorrentファイルではありません。 + + Stop torrent + - - Priority must be an integer - 優先度は整数で指定してください + + Remove torrent + Torrentを削除 - - Priority is not valid - 優先度が正しくありません + + Remove torrent and its content + - - Torrent's metadata has not yet downloaded - Torrentのメタデータがダウンロードされていません + + Enable super seeding for torrent + Torrentをスーパーシードにする + + + + Ratio: + 共有比: + + + + TorrentTagsDialog + + + Torrent Tags + Torrentのタグ + + + New Tag + 新規タグ + + + + Add tag + + + + + Tag: + タグ: + + + + Invalid tag name + 無効なタグ名です + + + + Tag name '%1' is invalid. + タグ名'%1'は正しくありません。 + + + + Tag exists + タグが存在します + + + + Tag name already exists. + タグ名はすでに存在します。 + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + エラー: '%1'は有効なTorrentファイルではありません。 + + + + Priority must be an integer + 優先度は整数で指定してください - + + Priority is not valid + 優先度が正しくありません + + + + Torrent's metadata has not yet downloaded + Torrentのメタデータがダウンロードされていません + + + File IDs must be integers ファイルIDは整数でなければなりません - + File ID is not valid ファイルIDが正しくありません - - - - + + + + Torrent queueing must be enabled Torrentのキューを有効にする必要があります - - + + Save path cannot be empty 保存先パスは空欄にできません - - + + Cannot create target directory 対象ディレクトリーを作成できませんでした - - + + Category cannot be empty カテゴリーは空欄にできません - + Unable to create category カテゴリーを作成できません - + Unable to edit category カテゴリーを編集できません - + Unable to export torrent file. Error: %1 Torrentファイルをエクスポートできません。エラー: %1 - + Cannot make save path 保存パスを作成できません - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sort'パラメーターが無効です - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. '%1' は有効なファイルインデックスではありません。 - + Index %1 is out of bounds. インデックス%1は範囲外です。 - - + + Cannot write to directory ディレクトリーに書き込めません - + WebUI Set location: moving "%1", from "%2" to "%3" WebUIの保存場所を設定しました: '%1'は'%2'から'%3'へ移動されました - + Incorrect torrent name 不正なTorrent名です - - + + Incorrect category name 不正なカテゴリ名 @@ -10800,257 +11427,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - 稼働中 + 稼働中 - + Disabled - 無効 + 無効 - + Disabled for this torrent - このTorrentでは無効 + このTorrentでは無効 - + This torrent is private - このTorrentはプライベートです + このTorrentはプライベートです - + N/A - N/A + N/A - + Updating... - 更新中... + 更新中... - + Not working - 稼働していません + 未稼働 - + Tracker error - + トラッカーエラー - + Unreachable - + 到達できません - + Not contacted yet - 未コンタクト + 未コンタクト - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - ティア + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + 無効な状態です。 + + + URL/Announce endpoint + URL/アナウンスエンドポイント + Tier + ティア + + Protocol - + プロトコル - + Status - 状態 + 状態 - + Peers - ピア + ピア - + Seeds - シード + シード - + Leeches - リーチャー + リーチャー - + Times Downloaded - ダウンロード回数 + ダウンロード回数 - + Message - メッセージ + メッセージ - Next announce - + 次のアナウンス - Min announce - + 最低アナウンス - v%1 - + v%1 TrackerListWidget - Working - 稼働中 - - - Disabled - 無効 - - - Disabled for this torrent - このTorrentでは無効 - - - + This torrent is private このTorrentはプライベートです - Updating... - 更新中... - - - Not working - 稼働していません - - - Not contacted yet - 未コンタクト - - - N/A - N/A - - - + Tracker editing トラッカー編集中 - + Tracker URL: トラッカーURL: - - + + Tracker editing failed トラッカー編集失敗 - + The tracker URL entered is invalid. 入力されたトラッカーURLは無効です。 - + The tracker URL already exists. トラッカーURLはすでに存在します。 - + Edit tracker URL... トラッカーURLを編集... - + Remove tracker トラッカーを削除 - + Copy tracker URL トラッカーURLをコピー - + Force reannounce to selected trackers 選択したトラッカーに強制再アナウンス - + Force reannounce to all trackers 全トラッカーに強制再アナウンス - Tier - ティア - - - URL - URL - - - Status - 状態 - - - Seeds - シード - - - Times Downloaded - ダウンロード回数 - - - + Resize columns 列のリサイズ - + Resize all non-hidden columns to the size of their contents 非表示以外のすべての列をコンテンツのサイズにリサイズします - Peers - ピア - - - + Add trackers... トラッカーを追加... - Leeches - リーチャー - - - Message - メッセージ - - - + Column visibility 表示カラム @@ -11068,37 +11653,37 @@ Please choose a different name and try again. 追加するトラッカーのリスト(1行ずつ): - + µTorrent compatible list URL: µTorrent互換リストURL: - + Download trackers list トラッカーリストをダウンロード - + Add 追加 - + Trackers list URL error トラッカーリストのURLエラー - + The trackers list URL cannot be empty トラッカーリストのURLは空欄にはできません - + Download trackers list error トラッカーリストのダウンロードエラー - + Error occurred when downloading the trackers list. Reason: "%1" トラッカーリストのダウンロード中にエラーが発生しました。理由: "%1" @@ -11106,87 +11691,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - すべて (0) - - - Trackerless (0) - トラッカーなし (0) - - - Error (0) - エラー (0) - - - Warning (0) - 警告 (0) - - - Trackerless - トラッカーなし - - - Error (%1) - エラー (%1) - - - + Warning (%1) 警告 (%1) - + Trackerless (%1) トラッカーなし (%1) - + Tracker error (%1) - + トラッカーエラー (%1) - + Other error (%1) - + その他のエラー (%1) - + Remove tracker - トラッカーを削除 + トラッカーを削除 + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Torrentの再開 + Torrentの再開 - Pause torrents - Torrentの一時停止 + Torrentの一時停止 - + Remove torrents Torrentを削除 - + Removal confirmation - + 削除の確認 - + Are you sure you want to remove tracker "%1" from all torrents? - + すべてのTorrentからトラッカー(%1)を削除しますか? - + Don't ask me again. - + 次回から表示しない。 - + All (%1) this is for the tracker filter すべて (%1) @@ -11195,7 +11763,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'モード': 無効な引数です @@ -11288,9 +11856,8 @@ Please choose a different name and try again. 再開データのチェック中 - Paused - 一時停止 + 一時停止 @@ -11315,220 +11882,262 @@ Please choose a different name and try again. エラー - + Name i.e: torrent name 名前 - + Size i.e: torrent size サイズ - + Progress % Done 進捗状況 - Status Torrent status (e.g. downloading, seeding, paused) - 状態 + 状態 - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + 状態 + + + Seeds i.e. full sources (often untranslated) シード - + Peers i.e. partial sources (often untranslated) ピア - + Down Speed i.e: Download speed ダウン速度 - + Up Speed i.e: Upload speed アップ速度 - + Ratio Share ratio 比率 - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left 予測所要時間 - + Category カテゴリ - + Tags タグ - + Added On Torrent was added to transfer list on 01/01/2010 08:00 追加日時 - + Completed On Torrent was completed on 01/01/2010 08:00 完了日時 - + Tracker トラッカー - + Down Limit i.e: Download limit ダウン制限 - + Up Limit i.e: Upload limit アップ制限 - + Downloaded Amount of data downloaded (e.g. in MB) ダウンロード済み - + Uploaded Amount of data uploaded (e.g. in MB) アップロード済み - + Session Download Amount of data downloaded since program open (e.g. in MB) セッションのダウン量 - + Session Upload Amount of data uploaded since program open (e.g. in MB) セッションでのアップ量 - + Remaining Amount of data left to download (e.g. in MB) 残り - + + Time Active + Time (duration) the torrent is active (not stopped) + 稼働時間 + + + + Yes + はい + + + + No + いいえ + + Time Active Time (duration) the torrent is active (not paused) - 稼働時間 + 稼働時間 - + Save Path Torrent save path 保存パス - + Incomplete Save Path Torrent incomplete save path 未完了の保存先 - + Completed Amount of data completed (e.g. in MB) 完了 - + Ratio Limit Upload share ratio limit 共有比制限 - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole 最後に完了が確認された日時 - + Last Activity Time passed since a chunk was downloaded/uploaded 最終アクティビティー - + Total Size i.e. Size including unwanted data 合計サイズ - + Availability The number of distributed copies of the torrent 可用性 - + Info Hash v1 i.e: torrent info hash v1 Infoハッシュ v1: - + Info Hash v2 i.e: torrent info hash v2 Infoハッシュ v2: - + Reannounce In Indicates the time until next trackers reannounce + 次のアナウンスまで + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1前 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (シードから%2) @@ -11537,334 +12146,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility 列の表示 - + Recheck confirmation 再チェックの確認 - + Are you sure you want to recheck the selected torrent(s)? 選択されたTorrentを再チェックしますか? - + Rename 名前の変更 - + New name: 新しい名前: - + Choose save path 保存先の選択 - Confirm pause - 一時停止の確認 + 一時停止の確認 - Would you like to pause all torrents? - すべてのTorrentを一時停止にしますか? + すべてのTorrentを一時停止にしますか? - Confirm resume - 再開の確認 + 再開の確認 - Would you like to resume all torrents? - すべてのTorrentを再開しますか? + すべてのTorrentを再開しますか? - + Unable to preview プレビューできません - + The selected torrent "%1" does not contain previewable files 選択されたTorrent(%1)にプレビュー可能なファイルはありません。 - + Resize columns 列のリサイズ - + Resize all non-hidden columns to the size of their contents 非表示以外のすべての列をコンテンツのサイズにリサイズします - + Enable automatic torrent management 自動Torrent管理を有効にする - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. 選択されたTorrentの自動Torrent管理を有効にしますか? それらは再配置される可能性があります。 - Add Tags - タグの追加 + タグの追加 - + Choose folder to save exported .torrent files エクスポートされた".torrent"ファイルを保存するフォルダーを選択します - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" ".torrent"ファイルがエクスポートできませんでした。Torrent: "%1". 保存パス: "%2". 理由: "%3" - + A file with the same name already exists 同名のファイルがすでに存在します - + Export .torrent file error ".torrent"ファイルのエクスポートエラー - + Remove All Tags すべてのタグを削除 - + Remove all tags from selected torrents? 選択されたTorrentからすべてのタグを削除しますか? - + Comma-separated tags: カンマ区切りのタグ: - + Invalid tag 不正なタグ - + Tag name: '%1' is invalid タグ名: '%1'は正しくありません - &Resume Resume/start the torrent - 再開(&R) + 再開(&R) - &Pause Pause the torrent - 一時停止(&P) + 一時停止(&P) - Force Resu&me Force Resume/start the torrent - 強制再開(&M) + 強制再開(&M) - + Pre&view file... ファイルをプレビュー(&V)... - + Torrent &options... Torrentのオプション(&O)... - + Open destination &folder 保存先のフォルダーを開く(&F) - + Move &up i.e. move up in the queue 上へ(&U) - + Move &down i.e. Move down in the queue 下へ(&D) - + Move to &top i.e. Move to top of the queue 一番上へ(&T) - + Move to &bottom i.e. Move to bottom of the queue 一番下へ(&B) - + Set loc&ation... 場所を設定(&A)... - + Force rec&heck 強制再チェック(&H) - + Force r&eannounce 強制再アナウンス(&E) - + &Magnet link マグネットリンク(&M) - + Torrent &ID Torrent ID(&I) - + + &Comment + コメント(&C) + + + &Name 名前(&N) - + Info &hash v1 Infoハッシュ v1(&H) - + Info h&ash v2 Infoハッシュ v2(&A) - + Re&name... 名前を変更(&N)... - + Edit trac&kers... トラッカーを編集(&K)... - + E&xport .torrent... ".torrent"をエクスポート(&X)... - + Categor&y カテゴリー(&Y) - + &New... New category... 新規(&N)... - + &Reset Reset category リセット(&R) - + Ta&gs タグ(&G) - + &Add... Add / assign multiple tags... 追加(&A)... - + &Remove All Remove all tags すべて削除(&R) - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue キュー(&Q) - + &Copy コピー(&C) - + Exported torrent is not necessarily the same as the imported エクスポートされたTorrentは、インポートされたものと同一とは限りません - + Download in sequential order ピースを先頭から順番にダウンロード - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. ".torrent"ファイルのエクスポート中にエラーが発生しました。詳細は実行ログを参照してください。 + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent 削除(&R) - + Download first and last pieces first 先頭と最後のピースを先にダウンロード - + Automatic Torrent Management 自動Torrent管理 - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category 自動モードでは、関連付けられたカテゴリーに応じて、Torrentの各種プロパティー(保存先など)が決定されます - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Torrentが一時停止/待機中/エラー/チェック中は強制アナウンスはできません + Torrentが一時停止/待機中/エラー/チェック中は強制アナウンスはできません - + Super seeding mode スーパーシードモード @@ -11909,28 +12542,28 @@ Please choose a different name and try again. アイコンID - + UI Theme Configuration. UIテーマの設定 - + The UI Theme changes could not be fully applied. The details can be found in the Log. UIテーマの変更が完全には適用されませんでした。詳細はログを参照してください。 - + Couldn't save UI Theme configuration. Reason: %1 UIテーマの設定を保存できませんでした。理由: %1 - - + + Couldn't remove icon file. File: %1. アイコンファイルを削除できませんでした。ファイル: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. アイコンファイルをコピーできませんでした。コピー元: %1. コピー先: %2. @@ -11938,7 +12571,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" ファイル"%1"からUIのテーマを読み込めませんでした。 @@ -11969,89 +12607,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" 設定の移行に失敗しました: WebUI https, ファイル: "%1", エラー: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" 設定が移行されました: ファイル "%1" にWebUIのhttpsのデータがエクスポートされました - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". 設定ファイルの無効な値をデフォルト値に戻しています。キー: "%1". 無効な値: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Pythonが検出されました。実行ファイル名: '%1', バージョン: %2 - - - Python not detected - Pythonが検出されませんでした - Found Python executable. Name: "%1". Version: "%2" - + Pythonの実行ファイルが見つかりました。 名前: "%1". バージョン: "%2" Failed to find Python executable. Path: "%1". - + Pythonの実行ファイルが見つかりませんでした。 パス: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + 環境変数PATHから`python3`の実行ファイルが見つかりませんでした。 PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + 環境変数PATHから`python`の実行ファイルが見つかりませんでした。 PATH: "%1" Failed to find `python` executable in Windows Registry. - + Windowsのレジストリで`python`の実行ファイルが見つかりませんでした。 Failed to find Python executable - + Pythonの実行ファイルが見つかりませんでした。 Utils::IO - + File open error. File: "%1". Error: "%2" ファイルオープンエラー。ファイル: "%1". エラー: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 ファイルサイズが制限を超えました。ファイル: "%1". ファイルサイズ: %2. サイズ制限: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + ファイルサイズがデータサイズ制限を超えています。ファイル: "%1". ファイルサイズ: %2. 配列制限: %3 - + File read error. File: "%1". Error: "%2" ファイルの読み込みエラー。 ファイル: "%1". エラー: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 読み込みサイズの不一致。ファイル: "%1". 想定サイズ: %2. 実サイズ: %3 @@ -12115,72 +12746,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. 許容されないセッションクッキー名が指定されました: %1。デフォルト名が使用されます。 - + Unacceptable file type, only regular file is allowed. 許可されないファイルタイプです。通常のファイルだけが許可されます。 - + Symlinks inside alternative UI folder are forbidden. 独自UIフォルダー内にシンボリックリンクは使用できません。 - - Using built-in Web UI. - ビルトインWeb UIを使用しています。 + + Using built-in WebUI. + ビルトインWebUIを使用しています。 - - Using custom Web UI. Location: "%1". - カスタムWeb UI (%1)を使用しています。 + + Using custom WebUI. Location: "%1". + カスタムWebUI (%1)を使用しています。 - - Web UI translation for selected locale (%1) has been successfully loaded. - 選択された言語(%1)のWeb UIが正しく読み込まれました。 + + WebUI translation for selected locale (%1) has been successfully loaded. + 選択された言語(%1)のWebUIが正しく読み込まれました。 - - Couldn't load Web UI translation for selected locale (%1). - 選択された言語(%1)のWeb UIを読み込めませんでした。 + + Couldn't load WebUI translation for selected locale (%1). + 選択された言語(%1)のWebUIを読み込めませんでした。 - + Missing ':' separator in WebUI custom HTTP header: "%1" WebUIカスタムHTTPヘッダーに区切り文字(:)がありません: "%1" - + Web server error. %1 ウェブサーバーエラー。%1 - + Web server error. Unknown error. ウェブサーバーエラー。不明なエラー。 - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: オリジンヘッダーとターゲットオリジンが一致しません! ソース IP: '%1'. オリジンヘッダー: '%2'. ターゲットオリジン: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: リファラーヘッダーとターゲットオリジンが一致しません! ソース IP: '%1'. リファラーヘッダー: '%2'. ターゲットオリジン: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: 不正なホストヘッダー、ポートの不一致です。リクエストソースIP: '%1'. サーバーポート番号: '%2'. 受信ホストヘッダー: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: 不正なホストヘッダーです。リクエストソース IP: '%1'. 受信ホストヘッダー: '%2' @@ -12188,143 +12819,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPSセットアップは正常に完了しました + + Credentials are not set + 資格情報が設定されていません + + + + WebUI: HTTPS setup successful + WebUI: HTTPSでのセットアップが正常に完了しました + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPSでのセットアップができなかったため、HTTPを使用します - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: HTTPSが設定できなかったため、HTTPに切り替えます + + WebUI: Now listening on IP: %1, port: %2 + WebUI: IP: %1、ポート番号: %2で接続待ちをしています - - Web UI: Now listening on IP: %1, port: %2 - Web UI: IP: %1、ポート番号: %2で接続待ちをしています + + Unable to bind to IP: %1, port: %2. Reason: %3 + IP: %1、ポート番号: %2にバインドできませんでした。理由: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: IP: %1, ポート番号: %2 にバインドできませんでした。理由: %3 + + Unknown error + 不明なエラー misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /秒 - + %1s e.g: 10 seconds - %1分 {1s?} + %1秒 - + %1m e.g: 10 minutes - %1分 + %1分 - + %1h %2m e.g: 3 hours 5 minutes - %1時間%2分 + %1時間%2分 - + %1d %2h e.g: 2 days 10 hours - %1日%2時間 + %1日%2時間 - + %1y %2d e.g: 2 years 10 days - %1年%2日 + %1年%2日 - %1h %2m - e.g: 3hours 5minutes - %1時間%2分 - - - %1d %2h - e.g: 2days 10hours - %1日%2時間 - - - %1y %2d - e.g: 2years 10days - %1年%2日 - - - - + + Unknown Unknown (size) 不明 - + qBittorrent will shutdown the computer now because all downloads are complete. すべてのダウンロードが完了したため、コンピューターがシャットダウンされます。 - + < 1m < 1 minute < 1分 - - %1m - e.g: 10minutes - %1分 - diff --git a/src/lang/qbittorrent_ka.ts b/src/lang/qbittorrent_ka.ts index b3149fc69cb6..80959d518852 100644 --- a/src/lang/qbittorrent_ka.ts +++ b/src/lang/qbittorrent_ka.ts @@ -14,75 +14,75 @@ შესახებ - + Authors ავტორები - + Current maintainer მიმდინარე მომვლელი - + Greece საბერძნეთი - - + + Nationality: ეროვნება: - - + + E-mail: ელ-ფოსტა: - - + + Name: სახელი: - + Original author ნამდვილი ავტორი - + France საფრანგეთი - + Special Thanks განსაკუთრებული მადლობა - + Translators მთარგმნელები - + License ლიცენზია - + Software Used გამოყენებული სოფტი - + qBittorrent was built with the following libraries: qBittorrent აგებულია ამ ბიბლიოთეკებით: - + Copy to clipboard @@ -93,7 +93,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ შენახვა აქ - + Never show again აღარასოდეს გამოტანა - Torrent settings - ტორენტის პარამეტრები + ტორენტის პარამეტრები @@ -191,12 +190,12 @@ ტორენტის დაწყება - + Torrent information ტორენტის ინფორმაცია - + Skip hash check ჰეშის შემოწმების გამოტოვება @@ -205,6 +204,11 @@ Use another path for incomplete torrent დაუსრულებელი ტორენტისთვის სხვა მისამართის გამოყენება + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: შიგთავსის განლაგევა: - + Original ორიგინალი - + Create subfolder სუბდირექტორიის შექმნა - + Don't create subfolder არ შეიქმნას სუბდირექტორია - + Info hash v1: ჰეშის ინფორმაცია v1: - + Size: ზომა: - + Comment: კომენტარი: - + Date: თარიღი: @@ -324,199 +333,150 @@ ბოლო გამოყენებული შენახვის გზის დამახსოვრება - + Do not delete .torrent file არ წაიშალოს .torrent ფაილი - + Download in sequential order თანმიმდევრული წესით გადმოწერა - + Download first and last pieces first პირველ რიგში ჩამოიტვირთოს პირველი და ბოლო ნაწილი - + Info hash v2: ჰეშის ინფორმაცია v2: - + Select All ყველას არჩევა - + Select None არც ერთის არჩევა - + Save as .torrent file... .torrent ფაილის სახით შენახვა... - + I/O Error I/O შეცდომა - Invalid torrent - უცნობი ტორენტი - - - + Not Available This comment is unavailable ხელმიუწვდომელი - + Not Available This date is unavailable ხელმიუწვდომელი - + Not available მიუწვდომელი - Invalid magnet link - არასწორი მაგნიტური ბმული - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - ტორენტის ჩატვირთვა ვერ მოხერხდა: %1 -შეცდომა: %2 - - - This magnet link was not recognized - მოცემული მაგნიტური ბმულის ამოცნობა ვერ მოხერხდა - - - + Magnet link მაგნიტური ბმული - + Retrieving metadata... მეტამონაცემების მიღება... - - + + Choose save path აირჩიეთ შენახვის ადგილი - Torrent is already present - ტორენტი უკვე არსებობს - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - ტორენტი '%1' უკვე ტორენტების სიაშია. ტრეკერები არ გაერთიანდა იმის გამო, რომ ეს არის პრივატული ტორენტი. - - - Torrent is already queued for processing. - ტორენტი უკვე დამუშავების რიგშია. - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A N/A - Magnet link is already queued for processing. - მაგნიტური ბმული უკვე დამუშავების რიგშია. - - - + %1 (Free space on disk: %2) %1 (ცარიელი ადგილი დისკზე: %2) - + Not available This size is unavailable. არ არის ხელმისაწვდომი - + Torrent file (*%1) ტორენტ ფაილი (*%1) - + Save as torrent file ტორენტ ფაილის სახით დამახსოვრება - + Couldn't export torrent metadata file '%1'. Reason: %2. ვერ მოხერხდა ტორენტის მეტამონაცემების ფაილის ექსპორტი '%1'. მიზეზი: %2. - + Cannot create v2 torrent until its data is fully downloaded. შეუძლებელია ტორენტ v2 შექმნა, სანამ მისი მინაცემები არ იქნება მთლიანად ჩამოტვირთული. - Cannot download '%1': %2 - ჩამოტვირთვა შეუძლებელია '%1: %2' - - - + Filter files... ფაილების ფილტრი... - + Parsing metadata... მეტამონაცემების ანალიზი... - + Metadata retrieval complete მეტამონაცემების მიღება დასრულებულია - - Download Error - ჩამოტვირთვის შეცდომა - AddTorrentManager @@ -531,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -634,72 +594,77 @@ Error: %2 ჰეშის შემოწმების გამოტოვება - - - Choose save path - აირჩიეთ შესანახი მდებარეობა + + Torrent share limits + ტორენტის გაზიარების ლიმიტი - - - - - - - Default - + + + Choose save path + აირჩიეთ შესანახი მდებარეობა + + + - Yes - კი + Default + + Yes + კი + + + + + No არა - + Manual არაავტომატური - + Automatic ავტომატური - + Original ორიგინალი - + Create subfolder სუბდირექტორიის შექმნა - + Don't create subfolder არ შეიქმნას სუბდირექტორია - + None - + Metadata received - + Files checked @@ -707,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB მიბ - + Recheck torrents on completion ტორენტების გადამოწმება დასრულებისას - - + + ms milliseconds მწ - + Setting პარამეტრი - + Value Value set for this setting მნიშვნელობა - + (disabled) (გამორთული) - + (auto) (ავტო) - + + min minutes წუთი - + All addresses ყველა მისამართები - + qBittorrent Section qBittorrent-ის სექცია - - + + Open documentation დოკუმენტაციის გახსნა - + All IPv4 addresses ყველა IPv4 მისამართები - + All IPv6 addresses ყველა IPv6 მისამართები - + libtorrent Section libtorrent სექცია - + Fastresume files Fastresume ფაილები - + SQLite database (experimental) SQLite მონაცემთა ბაზა (ექსპერიმენტალური) - + Resume data storage type (requires restart) - + Normal ჩვეულებრივი - + Below normal ჩვეულებრივზე დაბალი - + Medium საშუალო - + Low დაბალი - + Very low ძალიან დაბალი - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache დისკის ჰეში - - - - + + + + s seconds წამი - + Disk cache expiry interval დისკის ქეშის ვადის გასვლის ინტერვალი - + Disk queue size - - + + Enable OS cache OS ქეშის ჩართვა - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB კბ - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address ნების დართბა მრავალ კავშირზე ერთი IP მისამართიდან - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names პირების ჰოსტის სახელის დადგენა - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + წამი + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications შეტყობინებების ჩვენება - + Display notifications for added torrents ტამატებული ტორენტების შეტყობინებების ჩვენება - + Download tracker's favicon - + Save path history length - + Enable speed graphs სიჩქარის გრაფიკების ჩართვა - + Fixed slots - + Upload rate based - + Upload slots behavior ატვირთვის სლოტების ქცევა - + Round-robin - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck ტორენტის გადამოწმების დასტური - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface ნებისმიერი ინტერფეისი - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker ჩაშენებული ტრეკერის ჩართვა - + Embedded tracker port ჩაშენებული ტრეკერის პორტი - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 დაწყებულია + + + Invalid directory path + - + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 ტორენტის სახელი: %1 - + Torrent size: %1 ტორენტის ზომა: %1 - + Save path: %1 შენახვის გზა: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds ტორენტი ჩამოტვირთულია. %1 - + + Thank you for using qBittorrent. გმადლობთ qBittorrent-ის გამოყენებისთვის - + Torrent: %1, sending mail notification - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit &გამოსვლა - + I/O Error i.e: Input/Output Error I/O შეცდომა - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1442,129 +1525,110 @@ Error: %2 - Error - შეცდომა - - - Failed to add torrent: %1 - ტორენტის დამატება ვერ მოხერხდა: %1 - - - + Torrent added ტორენტი დამატებულია - + '%1' was added. e.g: xxx.avi was added. '%1' დამატებულია - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' ჩამოტვირთვა დასრულდა + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - URL ჩამოტვირთვის შეცდომა + + This is a test email. + - Torrent file association - ტორენტ ფაილებთან ასოციაცია + + Test email + - + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' ჩამოტვირთვა დასრულდა + + + Information ინფორმაცია - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - ვებ ინტერფეისის ადმინისტრატორის სახელი არის: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - Application failed to start. - აპლიკაციის ჩართვა ჩაიშალა - - - + Exit გამოსვლა - + Recursive download confirmation - რეკურსიული ჩამოტვირთვის დასტური + რეკურსიული ჩამოტვირთვის დასტური - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - + არასოდეს - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... ტორენტის პროგრესის შენახვა... - + qBittorrent is now ready to exit @@ -1572,7 +1636,7 @@ Error: %2 AsyncFileStorage - + Could not create directory '%1'. შეუძლებელია დირექტორიის შექმნა '%1'. @@ -1580,22 +1644,22 @@ Error: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. თქვენი IP მისამართი დაბლოკირებულია ძალიან ბევრი ჩაშლილი აუტენფიკაციის მცდელობის შემდეგ. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1643,12 +1707,12 @@ Error: %2 - + Must Not Contain: არ უნდა შეიცავდეს: - + Episode Filter: @@ -1700,263 +1764,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &ექსპორტი - + Matches articles based on episode filter. - + Example: მაგალითი: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: - + Season number is a mandatory non-zero value - + Filter must end with semicolon - + Three range types for episodes are supported: - + Single number: <b>1x25;</b> matches episode 25 of season one - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one - + Episode number is a mandatory positive value - + Rules წესები - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago - + Last Match: Unknown - + New rule name ახალი წესის სახელი - + Please type the name of the new download rule. გთხოვთ ჩაწერეთ ახალი ჩამოტვირთვის წესის სახელი - - + + Rule name conflict წესის სახელის კონფლიქტი - - + + A rule with this name already exists, please choose another name. წესი იგივე სახელით უკვე არსებობს, გთხოვთ აირჩიეთ სხვა სახელი. - + Are you sure you want to remove the download rule named '%1'? დარწყმუნებული ხართ რომ გსურთ წაშალოთ ჩამოტვირთვის წესი '%1'? - + Are you sure you want to remove the selected download rules? დარწმუნებული ხართ რომ არჩეული ჩამოტვირთვის წესების წაშლა გსურთ? - + Rule deletion confirmation წესის წაშლის დასტური - + Invalid action არასწორი მოქმედება - + The list is empty, there is nothing to export. სია ცარიელია, აქ არაფერი არ არის ექსპორტისთვის. - + Export RSS rules RSS წესების ექსპორტი - + I/O Error I/O შეცდომა - + Failed to create the destination file. Reason: %1 დანიშნულების ფაილის შექმნა ვერ მოხერხდა. მიზეზი: %1 - + Import RSS rules RSS წესების იმპორტი - + Failed to import the selected rules file. Reason: %1 ამორჩეული წესების იმპორტი ვერ მოხერხდა. მიზეზი: %1 - + Add new rule... ახალი წესის დამატება... - + Delete rule წესის წაშლა - + Rename rule... წესის გადარქმევა... - + Delete selected rules არჩეული წესების წაშლა - + Clear downloaded episodes... ჩამოტვირთული ეპიზოდების წაშლა... - + Rule renaming წესის გადარქმევა - + Please type the new rule name გთხოვთ ჩაწერეთ ახალი წესის სახელი - + Clear downloaded episodes ჩამოტვირთული ეპიზოდების წაშლა - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 პოზიცია %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1998,53 +2062,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2052,38 +2121,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. არ მოიძებნა. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2091,22 +2160,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2114,553 +2183,588 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. - - UPnP/NAT-PMP support: OFF + + Removing torrent. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Removing torrent and deleting its content. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent stopped. - System network status changed to %1 - e.g: System network status changed to ONLINE - სისტემური ქსელის სტატუსი შეიცვალა. %1 + + Torrent content removed. Torrent: "%1" + - ONLINE - ONLINE + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - OFFLINE - OFFLINE + + Torrent removed. Torrent: "%1" + - + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + + + + + UPnP/NAT-PMP support: OFF + + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + + + + Aborted saving resume data. Number of outstanding torrents: %1 + + + + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP ფილტრი - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - ოპერაცია შეწყვეტილია - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - ახალი ტორენტ ფაილის შექმნა ვერ მოხერხდა. მიზეზი: %1 + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - ოპერაცია შეწყვეტილია + ოპერაცია შეწყვეტილია + + Create new torrent file failed. Reason: %1. - ახალი ტორენტ ფაილის შექმნა ვერ მოხერხდა. მიზეზი: %1 + ახალი ტორენტ ფაილის შექმნა ვერ მოხერხდა. მიზეზი: %1 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2681,184 +2785,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: გამოყენება: - + [options] [(<filename> | <url>)...] - + Options: პარამეტრები: - + Display program version and exit - - Display this help message and exit + + Display this help message and exit + + + + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice - - + + port პორტი - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen მისალმების ფანჯრის გამორთვა - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name სახელი - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path ტორენტის შენახვის გზა - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check ჰეშის შემოწმების გამოტოვება - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order თანმიმდევრული წესით გადმოწერა - + Download first and last pieces first პირველ რიგში ჩამოიტვირთოს პირველი და ბოლო ნაწილი - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help დახმარება @@ -2866,17 +2975,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories კატეგორიები - + All ყველა - + Uncategorized არა კატეგორიზირებული @@ -2910,13 +3019,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - ტორენტების გაგრძელება + Start torrents + + Stop torrents + + + + Resume torrents + ტორენტების გაგრძელება + + Pause torrents - ტორენტების დაპაუზება + ტორენტების დაპაუზება @@ -2927,15 +3044,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset ჩამოყრა + + + System + + CookiesDialog @@ -2976,12 +3098,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2989,7 +3111,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3008,23 +3130,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove წაშლა @@ -3037,12 +3159,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also URL-დან ჩამოტვირთვა - + Add torrent links ტორენტ ბმულების დამატება - + One link per line (HTTP links, Magnet links and info-hashes are supported) ერთი ბმული ერთ ხაზზე (დაშვებულია HTTP ბმულები, მაგნიტური ბმულები და ინფო-ჰეშები) @@ -3052,12 +3174,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ჩამოტვირთვა - + No URL entered ბმული არ არის შეყვანილი - + Please type at least one URL. გთხოვთ ბოლოსთვის ერთი URL-ი ჩაწეროთ @@ -3217,24 +3339,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - ტორენტი უკვე არსებობს + ტორენტი უკვე არსებობს + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3242,38 +3387,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. - + Metadata error: '%1' entry not found. მეტამონაცემების შეცდომა: '%1' ვერ მოიძებნა - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 - + Unsupported IP version: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3281,17 +3426,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3332,36 +3477,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... მოძიება... - + Reset ჩამოყრა - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + ლეგალური შეტყობინება + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 დაბლოკირებულია. მიზეზი: %2 - + %1 was banned 0.0.0.0 was banned %1 დაბლოკირებულია @@ -3370,91 +3543,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - თქვენ არ შეგიძლიათ %1 გამოყენება. qBittorrent-ი უკვე გამოიყენება ამ მომხმარებლისთვის. - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - იურიდიული ცნობა - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + You cannot use %1: qBittorrent is already running. - - No further notices will be issued. + + Another qBittorrent instance is already running. - - Press %1 key to accept and continue... - დააჭირეთ %1 ღილაკს რათა დაეთანხმოთ და განაგრძოთ... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent არის ფაილების გასაზიარებელი პროგრამა. როდესაც თქვენ გაუშვებთ ტორენტს, მისი შიგთავსი ხელმისაწვდომი ხდება სხვებისთვისაც, ანუ ის იტვირთება. ნებისმიერი შიგთავსი რომელსაც თქვენ გააზიარებთ, არის მხოლოდ თქვენი პასუხისმგებლობის ქვეშ. - -შემდგომ ეს შეყტობინება აღარ გამოჩნდება - - - - Legal notice - იურიდიული ცნობა - - - - Cancel - გაუქმება + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - მე ვეთანხმები + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3465,615 +3609,704 @@ No further notices will be issued. &რედაქტირება - + &Tools &ხელსაწყოები - + &File &ფაილი - + &Help &დახმარება - + On Downloads &Done გადმოწერების &დასრულების შემდეგ - + &View &ხედი - + &Options... &პარამეტრები... - &Resume - &გაგრძელება + &გაგრძელება - + &Remove - + Torrent &Creator ტორენტის &შემქმნელი - - + + Alternative Speed Limits ალტერნატიული სიჩქარის ლიმიტები - + &Top Toolbar ხელსაწყოების &ზედა ზოლი - + Display Top Toolbar ზედა ხელსაწყოების ზოლის ჩვენება - + Status &Bar სტატუს &ბარი - + Filters Sidebar - + S&peed in Title Bar - + Show Transfer Speed in Title Bar სიჩქარის ჩვენება სახელის ზოლში - + &RSS Reader &RSS წამკითხველი - + Search &Engine საძიებო &სისტემა - + L&ock qBittorrent &qBittorrent-ის ჩაკეტვა - + Do&nate! - + + Sh&utdown System + + + + &Do nothing &არაფრის გაკეთება - + Close Window ფანჯრის დახურვა - R&esume All - &ყველას გაგრძელება + &ყველას გაგრძელება - + Manage Cookies... Cookie ფაილების კონტროლი... - + Manage stored network cookies - + Normal Messages ჩვეულებრივი შეტყობინებები - + Information Messages ინფორმაციული შეტყობინებები - + Warning Messages გასაფრთხილებელი შეტყობინებები - + Critical Messages კრიტირული შეტყობინებები - + &Log &ჩანაწერების ჟურნალი - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... გლობალური სიჩქარის ლიმიტების დაყენება... - + Bottom of Queue რიგის ბოლოში - + Move to the bottom of the queue რიგის ბოლოში გადატანა - + Top of Queue რიგის დასაწყისში გადატანა - + Move to the top of the queue რიგის დასაწყისში გადატანა - + Move Down Queue რიგში ქვემოთ - + Move down in the queue რიგში ქვემოთ გადატანა - + Move Up Queue ზემოთ რიგში - + Move up in the queue რიგში ზემოთ გადატანა - + &Exit qBittorrent &qBittorrent-იდან გასვლა - + &Suspend System &სისტემის დაპაუზება - + &Hibernate System &სისტემის ძილის რეჟიმში გადაყვანა - S&hutdown System - &სისტემის გამორთვა + &სისტემის გამორთვა - + &Statistics &სტატისტიკა - + Check for Updates განახლების შემოწმება - + Check for Program Updates პროგრამული განახლების შემოწმება - + &About &შესახებ - &Pause - &პაუზა + &პაუზა - P&ause All - &ყველას დაპაუ&ზება + &ყველას დაპაუ&ზება - + &Add Torrent File... &ტორენტ ფაილის დამატება - + Open გახსნა - + E&xit &გამოსვლა - + Open URL URL-ის გახსნა - + &Documentation &დოკუმენტაცია - + Lock ჩაკეტვა - - - + + + Show ჩვენება - + Check for program updates პროგრამული განახლების შემოწმება - + Add Torrent &Link... ტორენტ ბმულის &დამატება... - + If you like qBittorrent, please donate! თუ qBittorrent მოგწონთ, გთხოვთ გააკეთეთ ფულადი შემოწირულობა! - - + + Execution Log გაშვების ჟურნალი - + Clear the password პაროლის წაშლა - + &Set Password &პაროლის დაყენება - + Preferences - + &Clear Password &პაროლის წაშლა - + Transfers ტრანსფერები - - + + qBittorrent is minimized to tray qBittorrent-ი უჯრაშია ჩახურული - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only - + Text Only მატრო ტექსტი - + Text Alongside Icons - + Text Under Icons - + Follow System Style სისტემის სტილის გამოყენება - - + + UI lock password ინტერფეისის ჩაკეტვის პაროლი - - + + Please type the UI lock password: გთხოვთ შეიყვანეთ ინტერფეისის ჩაკეტვის პაროლი: - + Are you sure you want to clear the password? დარწყმულებული ხართ რომ პაროლის წაშლა გნებავთ? - + Use regular expressions სტანდარტული გამოსახულებების გამოყენება - - Search - ძებნა + + + Search Engine + საძიებო სისტემა - - Transfers (%1) - ტრანსფერები (%1) + + Search has failed + ძიება ვერ შესრულდა - Recursive download confirmation - რეკურსიული ჩამოტვირთვის დასტური + + Search has finished + - Never - არასოდეს + + Search + ძებნა + + + + Transfers (%1) + ტრანსფერები (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent-ი განახლდა. შეტანილი ცვლილებები რომ გააქტიურდეს, საჭიროა აპლიკაციის თავიდან ჩართვა. - + qBittorrent is closed to tray qBittorrent-ი უჯრაშია დახურული - + Some files are currently transferring. ზოგი-ერთი ფაილის ტრანსფერი ხორციელდება. - + Are you sure you want to quit qBittorrent? qBittorrent-იდან გასვლა გსურთ? - + &No &არა - + &Yes &კი - + &Always Yes &ყოველთვის კი - + Options saved. - %1/s - s is a shorthand for seconds - %1/წ + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime - + qBittorrent Update Available qBittorrent განახლება ხელმისაწვდომია - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? საძიებო სისტემის გამოსაყენებლად საჭიროა Python-ის დაინსტალირება, მაგრამ სავარაუდოდ ის არ არის დაინსტალირებული. გხურთ მისი ახლავე დაინსტალირება? - + Python is required to use the search engine but it does not seem to be installed. საძიებო სისტემის გამოსაყენებლად საჭიროა Python-ის დაინსტალირება, მაგრამ სავარაუდოდ ის არ არის დაინსტრალირებული. - - + + Old Python Runtime - + A new version is available. ახალი ვერსია ხელმისაწვდომია - + Do you want to download %1? გსურთ %1 ჩამოტვირთვა? - + Open changelog... - + No updates available. You are already using the latest version. განახლებები არაა ხელმისაწვდომი. თქვენ უკვე იყენებთ უახლეს ვერსიას. - + &Check for Updates &განახლების შემოწმება - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + დაპაუზებული + + + Checking for Updates... განახლების შემოწმება მიმდინარეობს... - + Already checking for program updates in the background პროგრამული განახლება ფონურად უკვე მოზმდება - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error ჩამოტვირთვის შეცდომა - Python setup could not be downloaded, reason: %1. Please install it manually. - Python-ის ჩამოტვირთვა ვერ მოხერხდა, მიზეზი: %1. + Python-ის ჩამოტვირთვა ვერ მოხერხდა, მიზეზი: %1. გთხოვთ ხელით დააყენეთ ის. - - + + Invalid password პაროლი არასწორია - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid პაროლი არასწორია - + DL speed: %1 e.g: Download speed: 10 KiB/s ჩამოტვირთვის სიჩქარე: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s ატვირთვის სიჩქარე: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - - - - + Hide დამალვა - + Exiting qBittorrent qBittorrent-იდან გამოსვლა - + Open Torrent Files ტორენტ ფაილის გახსნა - + Torrent Files ტორენტ ფაილები @@ -4134,133 +4367,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) ფაილის (%1) ზომა ჩამოტვირთვის ლიმიტს (%2) ცდება - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) დისტანციური ჰოსტის სახელი ვერ მოიძებნა (ჰოსტის სახელი არასწორია) - + The operation was canceled ოპერაცია შეჩერებულია - + The remote server closed the connection prematurely, before the entire reply was received and processed სრული პასუხის მიღებმდე და დამუშავებამდე დისტანციურმა სერვერმა კავშირი უეცრად დახურა - + The connection to the remote server timed out დინსტანციურ სერვერთან დაკავშირებად ვადა გაუვიდა - + SSL/TLS handshake failed SSL/TLS ხელის ჩამორთმევა ჩაიშალა - + The remote server refused the connection დსიტანციურმა სერვერმა კავშირი უარყო - + The connection to the proxy server was refused პროქსი სერვერთან კავშირი უარყოფილი იქნა - + The proxy server closed the connection prematurely პროქსი სერვერმა კავშირი უეცრად დახურა - + The proxy host name was not found პროქსის ჰოსტის სახელი ვერ მოიძებნა - + The connection to the proxy timed out or the proxy did not reply in time to the request sent პროქსისთან კავშირს ვადა გაუვიდა ან პროქსიმ გაგზავნილი მოთხოვნის პასუხი არ დააბრუნა საჭირო დროში - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) დისტანციურ შიგთავსზე წვდომა უარყოფილ იქნა (401) - + The operation requested on the remote content is not permitted დისტანციურ შიგთავსზე მოთხოვნილი ოპერაცია დაუშვებელია - + The remote content was not found at the server (404) დისტანციური შიგთავსი ვერ მოიძებნა სერვერზე (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted შიგთავსის მოსამსახურებლად დისტანციური სერვერი მოითხოვს ავთენტიფიკაციას მაგრამ შეტანილი მონაცემები არ იქნა მიღებული - + The Network Access API cannot honor the request because the protocol is not known ქსელის წვდომის API-ს არ შეუძლია მოთხოვნის მიღება, იმის გამო რომ პროტოკოლი უცნობია - + The requested operation is invalid for this protocol მოთხოვნილი ოპერაცია არასწორია ამ პროტოკოლისთვის - + An unknown network-related error was detected დაფიქსირდა ქსელთან დაკავშირებული უცნობი შეცდომა - + An unknown proxy-related error was detected დაფიქსირდა პროქსისთან დაკავშირებული უცნობი შეცდომა - + An unknown error related to the remote content was detected დაფიქსირდა დისტანციურ შიგთავსთან დაკავშირებული უცნობი შეცდომა - + A breakdown in protocol was detected პროტოკოლში დაფიქსირდა ჩაშლა - + Unknown error უცნობი შეცდომა @@ -4268,7 +4501,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5640,294 +5878,295 @@ Please install it manually. ბიტტორენტი - + RSS RSS - Web UI - ვებ ინტერფეისი + ვებ ინტერფეისი - + Advanced დამატებითი - + Customize UI Theme... - + Transfer List ტორენტების სია - + Confirm when deleting torrents დამატებითი დადასტურება ტორენტის წაშლის დროს - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. რიგში ალტერნატიული ფერების გამოყენება - + Hide zero and infinity values ნულის და უსასრულო მნიშვნელობის დამალვა - + Always ყოველთვის - Paused torrents only - მარტო დაპაუზებულებისთვის + მარტო დაპაუზებულებისთვის - + Action on double-click ორმაგი დაჭერის დროს მოქმედება - + Downloading torrents: ტორენტები ჩამოტვირთვის პროცესში: - - Start / Stop Torrent - ტორენტის დაწყება / შეჩერება + ტორენტის დაწყება / შეჩერება - - + + Open destination folder დანიშნულების დირექტორიის გახსნა - - + + No action მოქმედების გარეშე - + Completed torrents: დასრულებული ტორენტები: - + Auto hide zero status filters - + Desktop დესკტოპი - + Start qBittorrent on Windows start up qBittorrent-ის გახსნა Windows-ის ჩართვასთან ერთად - + Show splash screen on start up Splash გამოსახულების ჩვენება ჩართვის დროს - + Confirmation on exit when torrents are active დამატებითი დადასტურება თუ დარჩა აქტიური ტორენტები - + Confirmation on auto-exit when downloads finish დამატებითი ავტოგამოსვლის დადასტურება როდესაც ჩამოტვირთვა დამთავრდება - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB კბ - + Torrent content layout: ტორენტის შიგთავსის განლაგება: - + Original ორიგინალი - + Create subfolder სუბდირექტორიის შექმნა - + Don't create subfolder არ შეიქმნას სუბდირექტორია - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... დამატება... - + Options.. პარამეტრები... - + Remove წაშლა - + Email notification &upon download completion - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: პირის კავშირის პროტოკოლი: - + Any ნებისმიერი - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time ვისგან: - + To: To end time ვისთვის: - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5936,182 +6175,221 @@ Disable encryption: Only connect to peers without protocol encryption დაშიფრვის გამორთვა: პირებთან დაკავშირება მარტო პროტოკოლური დაშიფრვის გარეშე - + Allow encryption დაშიფრვაზე ნების დართვა - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">მეტი ინფორმაცია</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader RSS წამკითხველი - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: სტატიების მაქს. რაოდენობა ერთი არხიდან: - - - + + + min minutes წ. - + Seeding Limits სიდირების ლიმიტები - Pause torrent - ტორენტის დაპაუზება + ტორენტის დაპაუზება - + Remove torrent ტორენტის წაშლა - + Remove torrent and its files ტორენტის და მისი ფაილების დაშლა - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + ბმული: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: ფილტრები: - + Web User Interface (Remote control) ვებ მომხმარებლის ინტერფეისი (დისტანციური კონტროლი) - + IP address: IP მისამართი: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never არასდროს - + ban for: - + Session timeout: - + Disabled - გამორთულია - - - - Enable cookie Secure flag (requires HTTPS) - + გამორთულია - + Server domains: სერვერის დომეინები: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6120,441 +6398,486 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP HTTPS გამოყენება HTTP-ს ნაცვლად - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area qBittorrent-ის ჩაკეცვა შეტყობინებების არეაში - + + Search + + + + + WebUI + + + + Interface ინტერფეისი - + Language: ენა: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: ლოგოს სტილი უჯრაში: - - + + Normal ჩვეულებრივი - + File association ფაილის ასსოციაცია - + Use qBittorrent for .torrent files qBittorrent-ის გამოყენება .torrent ფაილების გახსნისთვის - + Use qBittorrent for magnet links qBittorrent-ის გამოყენება magnet ბმულებისთვის - + Check for program updates განახლების შემოწმება - + Power Management კვების კონტოლი - + + &Log Files + + + + Save path: შენახვის დირექტორია: - + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent ტორენტის დამატებისას - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! ყურადღება! შესაძლოა ინფორმაციის დაკარგვა - + Saving Management შენახვის მართვა - + Default Torrent Management Mode: ჩვეულებრივი ტირენტის კონტროლის რეჟიმი: - + Manual არაავტომატური - + Automatic ავტომატური - + When Torrent Category changed: როდესაც ტორენტის კატეგორია იცვლება: - + Relocate torrent ტორენტის ლოკაციის შეცვლა - + Switch torrent to Manual Mode ტორენტის გადართვა არაავტომატურ რეჟიმში - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories სუბკატეგორიების გამოყენება - + Default Save Path: ჩვეულებრივი შენახვის გზა: - + Copy .torrent files to: .torrent ფაილების კომირება მისამართით: - + Show &qBittorrent in notification area &qBittorrent-ის ჩვენება სისტემურ არეში - &Log file - &ლოგ ფაილი + &ლოგ ფაილი - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: დასრულებული ჩამოტვირთვიანი .torrent ფაილების კოპირება შემდეგი მისიმართით: - + Pre-allocate disk space for all files დისკის ადგილის წინასწარ გამოყოფა ყველა ფაილისთვის - + Use custom UI Theme სხვა ინტერფეისის თემის გამოყენება - + UI Theme file: ინტერფეისის თემის ფაილი: - + Changing Interface settings requires application restart ინტერფეისის პარამეტრების შეცვლის შემდეგ აუცილებელია აპლიკაციის რესტარტი - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window დაიხუროს qBittorrent სისტემურ არეში - + Monochrome (for dark theme) მონოქრომული (ბნელი თემისთვის) - + Monochrome (for light theme) მონოქრომული (ნათელი თემისთვის) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days დღე - + months Delete backup logs older than 10 months თვე - + years Delete backup logs older than 10 years წელი - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state ჩამოტვირთვა ავტომატურად არ დაიწყოს - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. ჩამოტვირთვის დაწყებამდე დისკზე ადგილის რეზერვაცია მოხდეს, ფრაგმენტაციის მინიმალიზაციისთვის. სასარგებლოა მხოლოდ HDD დისკებისთვის. - + Append .!qB extension to incomplete files არადამთავრებულ ფაილებისთვის .!qB გაფართოების დამატება - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: როდესაც კატეგორიის შენახვის გზა იცვლება: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: ტორენტების ავტომატური დამატება მდებარეობიდან: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6571,841 +6894,906 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver ვისთვის: - + SMTP server: SMTP სერვერი: - + Sender გამგზავნელუ - + From: From sender ვისგან: - + This server requires a secure connection (SSL) ეს სერვერი საჭიროებს დაცულ კავშირს (SSL) - - + + Authentication აუტენფიკაცია - - - - + + + + Username: მომხმარებლის სახელი: - - - - + + + + Password: პაროლი: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP TCP და μTP  - + Listening Port მოსამსენი პორტი - + Port used for incoming connections: შემომავალი კავშირებისთვის გამოყენებული პორტი: - + Set to 0 to let your system pick an unused port - + Random შემთხვევითი - + Use UPnP / NAT-PMP port forwarding from my router UPnP / NAT-PMP-ს გამოყენება ჩემი როუტერიდან პორტის გადამისამართებისთვის - + Connections Limits კავშირების ლიმიტი - + Maximum number of connections per torrent: მაქსიმალური კავშირის რაოდენობა ერთ ტორენტზე: - + Global maximum number of connections: კავშირების რაოდენობის მაქსიმალური რაოდენობა: - + Maximum number of upload slots per torrent: ატვირთვის სლოტების მაქსიმალური რაოდენობა ერთ ტორენტზე: - + Global maximum number of upload slots: ატვირთვის სლოტების გლობალური მაქსიმალური რაოდენობა: - + Proxy Server Proxy სერვერი - + Type: ტიპი: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: ჰოსტი: - - - + + + Port: პორტი: - + Otherwise, the proxy server is only used for tracker connections სხვა შემთხვევაში, Proxy სერვერი გამოიყენება მარტო ტრეკერის კავშირებისთვის - + Use proxy for peer connections Proxy-ს გამოყენება პირებთან კავშირებისთვის - + A&uthentication &აუტენფიკაცია - + Info: The password is saved unencrypted შენიშვნა: პაროლი არადაშიფრულად არის შენახული - + Filter path (.dat, .p2p, .p2b): ფილტრის გზა (.dat, .p2p, .p2b): - + Reload the filter ფილტრის გადატვირთვა - + Manually banned IP addresses... ხელით დაბლოკირებული IP მისამართები - + Apply to trackers დასტური ტრეკერებისთვის - + Global Rate Limits გლობალური სიჩქარის ლიმიტი - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s კბ/წ - - + + Upload: ატვირთვა: - - + + Download: ჩამოტვირთვა: - + Alternative Rate Limits ალტერნატიული სიჩქარის ლიმიტი - + Start time - + End time - + When: როდის: - + Every day ყოველ დღე - + Weekdays სამუშაო დღეები - + Weekends დასასვენი დღეები - + Rate Limits Settings სიჩქარის ლიმიტის პარამეტრები - + Apply rate limit to peers on LAN სიჩქარის ლიმიტის გამოყენება LAN-პირებისთვის - + Apply rate limit to transport overhead შეფარდების ლიმიტის მორგება ზედა ტრანსფერებზე - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol სიჩქარის ლიმიტის გამოყენება µTP პროკოტოკლთან - + Privacy კონფიდენციალურობა - + Enable DHT (decentralized network) to find more peers დეცენტრალიზებული ქსელის (DHT) ჩართვა მეტი პირის მოსაძიებლად - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) პირების გაცვლა თავსებად Bittorrent კლიენტებთან (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers პირების გაცვლის ჩართვა (PeX) მეტი პირის მოსაძიებლად - + Look for peers on your local network პირების ძებნა თქვენ ლოკალურ ქსელში - + Enable Local Peer Discovery to find more peers ლოკალური პირების აღმოჩენის მხარდაჭერის ჩართვა მეტი პირების საპოვნად - + Encryption mode: დაშიფრვის რეჟიმი: - + Require encryption დაშიფრვის მოთხოვნა - + Disable encryption დაშიფრვის გამორთვა - + Enable when using a proxy or a VPN connection ჩართვა როდესაც VPN ან Proxy კავშირი გამოიყენება - + Enable anonymous mode ანონიმური რეჟიმის ჩართვა - + Maximum active downloads: აქტიური ჩამოტვირთების მაქსიმაული რაოდენობა: - + Maximum active uploads: აქტიური ატვირთბის მაქსიმალური რაოდენობა: - + Maximum active torrents: აქტიური ტორენტების მაქსიმალური რაოდენობა: - + Do not count slow torrents in these limits ნელი ტორენტები ამ ლიმიტებში არ ჩაითვალოს - + Upload rate threshold: ატვირთვის სიჩქარის ბარიერი: - + Download rate threshold: ჩამოტვირთვის სიჩქარის ბარიერი: - - - + + + + sec seconds წამი - + Torrent inactivity timer: ტორენტის უაქტიურობის წამზომი: - + then შემდეგ კი - + Use UPnP / NAT-PMP to forward the port from my router UPnP / NAT-PMP-ს გამოყენება პორტის გადამისამართებისთვის ჩემი როუტერიდან - + Certificate: სერთიფიკატი: - + Key: გასაღები: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>ინფორმაცია სერთიფიკატების შესახებ</a> - + Change current password ახლანდელი პაროლის შეცვლა - Use alternative Web UI - ალტერნატიული ვებ ინტერფეისის გამოყენება + ალტერნატიული ვებ ინტერფეისის გამოყენება - + Files location: ფაილების ლოკაცია: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security დაცულობა - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: სანდო proxy-ს სია: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: მომსახურება: - + Register რეგისტრაცია - + Domain name: დომენის სახელი: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file ამოირჩიეთ qBittorrent-ის ინტერფეისის თემის ფაილი - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: ტორენტის სახელი - + %L: Category %L: კატეგორია - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path %D: შენახვის მისამართი - + %C: Number of files %C: ფაილების რაოდენობა - + %Z: Torrent size (bytes) %Z: ტორენტის ზომა (ბაიტებში) - + %T: Current tracker %Z: მიმდინარე ტრეკერი - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (არცერთი) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Select certificate - + Private key პრივატული გასაღები - + Select private key პრივატული გასაღების ამორჩევა - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory აირჩიეთ გასატანი მდებარეობა - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: თეგები (მძიმეებით იყოფება) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory შენახვის დირექტორიის ამორჩევა - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error ანალიზის შეცდომა - + Failed to parse the provided IP filter მოწოდებული IP ფილტრის ანალიზი ჩაიშალა - + Successfully refreshed წარმატებით განახლდა - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences - + Time Error დროის შეცდომა - + The start time and the end time can't be the same. - - + + Length Error სიგრძის შეცდომა - - - The Web UI username must be at least 3 characters long. - ვებ ინტერფეისის სახელი უნდა იყოს მინიმუმ 3 სიმბოლო - - - - The Web UI password must be at least 6 characters long. - ვებ ინტერფეისის პაროლი უნდა იყოს მინიმუმ 6 სიმბოლო. - PeerInfo - + Unknown უცნობია - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection შემომავალი კავშირი - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7561,7 +7949,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A N/A @@ -7584,7 +7972,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not პირების სია დამატებისთვის (თითო IP ხაზზე) - + Format: IPv4:port / [IPv6]:port @@ -7625,27 +8013,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: ფაილები ამ ნაწილში: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information დეტალიზირებული ინფორმაციისთვის Shift ღილაკს დააწეკით @@ -7658,58 +8046,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not საძიებო პლაგინები - + Installed search plugins: დაყენებული საძიებო პლაგინები: - + Name სახელი - + Version ვერსია - + Url ბმული - - + + Enabled ჩართული - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one ახლის დაყენება - + Check for updates განახლებების შემოწმება - + Close დახურვა - + Uninstall წაშლა @@ -7828,17 +8216,17 @@ Those plugins were disabled. მოდულის წყარო - + Search plugin source: მოდულის წყაროს ძებნა: - + Local file ლოკალური ფაილი - + Web link ვებ ბმული @@ -7879,47 +8267,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview გადახედვა - + Name სახელი - + Size ზომა - + Progress პროგრესი - + Preview impossible გადახედვა შეუძლებელია - + Sorry, we can't preview this file: "%1". - + Resize columns სვეტების ზომის შეცვლა - + Resize all non-hidden columns to the size of their contents ყველა ხილული სვეტის ზომის გასწორება მათი შიგთავსის მიხედვით. @@ -7932,27 +8320,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -7993,12 +8381,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: ჩამოტვირთული: - + Availability: ხელმისაწვდომობა: @@ -8013,53 +8401,53 @@ Those plugins were disabled. ტრანსფერი - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) აქტიურია: - + ETA: ETA: - + Uploaded: ატვირთული: - + Seeds: სიდები: - + Download Speed: ჩამოტვირთვის სიჩქარე: - + Upload Speed: ატვირთვის სიჩქარე: - + Peers: პირები: - + Download Limit: ჩამოტვირთვის ლიმიტი: - + Upload Limit: ატვირთვის ლიმიტი: - + Wasted: დაკარგული: @@ -8069,193 +8457,249 @@ Those plugins were disabled. კავშირები: - + Information ინფორმაცია - + Info Hash v1: ჰეშის ინფორმეცია v1: - + Info Hash v2: ჰეშის ინფორმაცია v2 - + Comment: კომენტარი: - + Select All ყველას არჩევა - + Select None არჩევის მოხსნა - + Share Ratio: - + Reannounce In: შემდეგი ანონსი: - + Last Seen Complete: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: მთლიანი ზომა: - + Pieces: ნაწილები: - + Created By: შექმნილია: - + Added On: დამატების თარიღი: - + Completed On: დასრულების თარიღი: - + Created On: შექმნის თარიღი: - + + Private: + + + + Save Path: შენახვის გზა: - + Never არასოდეს - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - - + + %1 (%2 this session) %1 (%2 ამ სესიაში) - - + + + N/A N/A - + + Yes + კი + + + + No + არა + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (სიდირდება %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 მაქსიმუმ) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 სულ) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - ახალი ვებ სიდი + ახალი ვებ სიდი - Remove Web seed - ვებ სიდის წაშლა + ვებ სიდის წაშლა - Copy Web seed URL - ვებ სიდის ბმულის კოპირება + ვებ სიდის ბმულის კოპირება - Edit Web seed URL - ვებ სიდის ბმულის რედაქტირება + ვებ სიდის ბმულის რედაქტირება - + Filter files... ფაილების ფილტრი... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - ახალი URL სიდი + ახალი URL სიდი - New URL seed: - ახალი URL სიდი: + ახალი URL სიდი: - - This URL seed is already in the list. - ეს URL სიდი უკვე სიაშია. + ეს URL სიდი უკვე სიაშია. - + Web seed editing ვებ სიდის რედაქტირება - + Web seed URL: ვებ სიდის URL: @@ -8274,22 +8718,22 @@ Those plugins were disabled. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8297,22 +8741,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8348,12 +8792,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). @@ -8361,99 +8805,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8477,8 +8921,8 @@ Those plugins were disabled. - - + + Mark items read ელემენტის წაკითხულად მონიშვნა @@ -8503,132 +8947,132 @@ Those plugins were disabled. - - + + Delete წაშლა - + Rename... გადარქმევა... - + Rename გადარქმევა - - + + Update განახლება - + New subscription... ახალი ხელმოწერა... - - + + Update all feeds ყველა არხის განახლება - + Download torrent ტორენტის ჩამოტვირთვა - + Open news URL სიახლეების ბმულის გახსნა - + Copy feed URL არხის ბმილის კოპირება - + New folder... ახალი დირექტორია - + Edit feed URL... - + Edit feed URL - + Please choose a folder name გთხოვთ, ამოირჩიეთ დირექტორიის სახელი - + Folder name: დირექტორიის სახელი: - + New folder ახალი დირექტორია - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation წაშლის დადასტურება - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed გთხოვთ აირჩიეთ ახალი სახელი ამ RSS არხისთვის - + New feed name: არხის ახალი სახელი: - + Rename failed გადარქმევა ჩაიშალა - + Date: თარიღი: - + Feed: - + Author: ავტორი: @@ -8636,38 +9080,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 მოდულის გამახლება %1 - + Failed to check for plugin updates: %1 მოდულების განახლების შემოწმება ვერ მოხერხდა: %1 @@ -8742,132 +9186,146 @@ Those plugins were disabled. ზომა: - + Name i.e: file name სახელი - + Size i.e: file size ზომა - + Seeders i.e: Number of full sources სიდები: - + Leechers i.e: Number of partial sources ლიჩები: - Search engine - საძიებო მოდული + საძიებო მოდული - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere ყველგან - + Use regular expressions სტანდარტული გამოსახულებების გამოყენება - + Open download window - + Download ჩამოტვირთვა - + Open description page აღწერის გვერდის გახსნა - + Copy ასლი - + Name სახელი - + Download link ჩამოტვირთვის ბმული - + Description page URL - + Searching... ძიება... - + Search has finished ძიება დამთავრებულია - + Search aborted ძიება შეწყდა - + An error occurred during search... ძებნისას დაფიქსირდა შეცდომა... - + Search returned no results ძებნა უშედეგოა - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility სვეტის ხილვადობა - + Resize columns სვეტების ზომის შეცვლა - + Resize all non-hidden columns to the size of their contents ყველა ხილული სვეტის ზომის გასწორება მათი შიგთავსის მიხედვით. @@ -8875,104 +9333,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories ყველა კატეგორია - + Movies კინო - + TV shows TV შოუ - + Music მუსიკა - + Games თამაშები - + Anime ანიმე - + Software სოფტი - + Pictures სურათები - + Books წიგნები - + Update server is temporarily unavailable. %1 განახლების სერვერი დროებით მიუწვდომელია. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 მოდული "%1" დაძველებულია, განახლება ვერსიამდე %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8982,113 +9440,152 @@ Those plugins were disabled. - - - - Search ძიება - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... საძიებო მოდულები... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example მაგალითი: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins ყველა პლაგინი - + Only enabled - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab ჩანართის დახურვა - + Close all tabs ყველა ჩანართის დახურვა - + Select... ამორჩევა... - - - + + Search Engine საძიებო სისტემა - - Please install Python to use the Search Engine. - გთხოვთ დააყენოთ Python-ი საძიებო სისტემის გამოყენებისთვის. + + + Please install Python to use the Search Engine. + გთხოვთ დააყენოთ Python-ი საძიებო სისტემის გამოყენებისთვის. + + + + Empty search pattern + ცარიელი საძიებო შაბლონი + + + + Please type a search pattern first + გთხოვთ პირველ რიგში შეიყვანეთ საძიებო შაბლონი + + + + + Stop + გაჩერება + + + Search has finished + ძიება დასრულდა + + + Search has failed + ძიება ვერ შესრულდა + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + - - Empty search pattern - ცარიელი საძიებო შაბლონი + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + - - Please type a search pattern first - გთხოვთ პირველ რიგში შეიყვანეთ საძიებო შაბლონი + + Failed to save Search UI state. File: "%1". Error: "%2" + - - Stop - გაჩერება + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + - - Search has finished - ძიება დასრულდა + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - ძიება ვერ შესრულდა + + Failed to save search history. File: "%1". Error: "%2" + @@ -9201,34 +9698,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: ატვირთვა: - - - + + + - - - + + + KiB/s კბ/წ - - + + Download: ჩამოტვირთვა - + Alternative speed limits ალტერნატიული სიჩქარის ლიმიტები @@ -9420,32 +9917,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: დაკავშირებული პირები: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: ბუფერის ზომა: @@ -9460,12 +9957,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: ჩაწერის ქეშის გადატვირთვა: - + Read cache overload: წაკითხვის ქეშის გადატვირთვა @@ -9484,51 +9981,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: კავშირის სტატუსი: - - + + No direct connections. This may indicate network configuration problems. პიდაპირი კავშირები არ არის. ამას შესაძლოა იწვევდეს ქსელის კონფიგურაციის პრობლემები. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 კვანძები - + qBittorrent needs to be restarted! qBittorrent-ს ხელახლა ჩართვა სჭირდება! - - - + + + Connection Status: კავშირის სტატუსი: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. კავშირგარეშე. ეს ჩვეულებრივ ხდება მაშინ როდესაც qBittorrent ვერ ახერხებს ერთ-ერთი შემომავალი პორტის მოსმენას. - + Online ხაზზეა - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits დააწკაპუნეთ სიჩქარის ალტერნატიულ ლიმიტებზე გადასართველად - + Click to switch to regular speed limits დააწკაპუნეთ სიჩქარის ჩვეულებრივ ლიმიტებზე გადასართველად @@ -9557,14 +10070,22 @@ Click the "Search plugins..." button at the bottom right of the window დასრულებულია (0) - Resumed (0) - განახლებულია (0) + განახლებულია (0) - Paused (0) - დაპაუზებულია (0) + დაპაუზებულია (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9626,10 +10147,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) დასრულებულია (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - დაპაუზებულია (%1) + დაპაუზებულია (%1) @@ -9637,14 +10177,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resume torrents - ტორენტების განახლება + ტორენტების განახლება - Pause torrents - ტორენტების დაპაუზება + ტორენტების დაპაუზება @@ -9652,9 +10190,8 @@ Click the "Search plugins..." button at the bottom right of the window - Resumed (%1) - განახლებულია (%1) + განახლებულია (%1) @@ -9695,17 +10232,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags ტეგები - + All ყველა - + Untagged უტეგო @@ -9713,52 +10250,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... ტეგის დამატება... - + Remove tag ტეგის წაშლა - + Remove unused tags არგამოყენებული ტეგების წაშლა - Resume torrents - ტორენტების განახლება + ტორენტების განახლება - Pause torrents - ტორენტების დაპაუზება + ტორენტების დაპაუზება - + Remove torrents - New Tag - ახალი ტეგი + ახალი ტეგი + + + + Start torrents + + + + + Stop torrents + - + Tag: ტეგი: - + + Add tag + + + + Invalid tag name არასწორი ტეგის სახელი - + Tag name '%1' is invalid ტეგის სახელი '%1' არასწორია @@ -9895,32 +10444,32 @@ Please choose a different name and try again. TorrentContentModel - + Name სახელი - + Progress პროგრესი - + Download Priority ჩამოტვირთვის პრიორიტეტი - + Remaining დარჩა - + Availability ხელმისაწვდომია - + Total Size მთლიანი ზომა @@ -9965,102 +10514,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error გადარქმების შეცდომა - + Renaming დარჩენილია - + New name: ახალი სახელი: - + Column visibility სვეტის ხილვადობა - + Resize columns სვეტების ზომის შეცვლა - + Resize all non-hidden columns to the size of their contents ყველა ხილული სვეტის ზომის გასწორება მათი შიგთავსის მიხედვით. - + Open გახსნა - + Open containing folder - + Rename... გადარქმევა... - + Priority პრიორიტეტი - - + + Do not download არ ჩამოიტვირთოს - + Normal ჩვეულებრივი - + High მაღალი - + Maximum მაქსიმალური - + By shown file order - + Normal priority ჩვეულებრივი პრიორიტეტი - + High priority მაღალი მრიორიტეტი - + Maximum priority მაქსიმალური პრიორიტეტი - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10085,13 +10652,13 @@ Please choose a different name and try again. - + Select file ამოირჩიეთ ფაილი - + Select folder ამოირჩიეთ დირექტორია @@ -10116,58 +10683,10 @@ Please choose a different name and try again. ნაწილის ზომა: - + Auto ავტო - - 16 KiB - 16 კბ - - - 32 KiB - 32 კბ - - - 64 KiB - 64 კბ - - - 128 KiB - 128 კბ - - - 256 KiB - 256 კბ - - - 512 KiB - 512 კბ - - - 1 MiB - 1 მბ - - - 2 MiB - 2 მბ - - - 4 MiB - 4 მბ - - - 8 MiB - 8 მბ - - - 16 MiB - 16 მბ - - - 32 MiB - 32 მბ - Calculate number of pieces: @@ -10214,88 +10733,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: ტრეკერის URL-ბი: - + Comments: კომენტარები: - + Source: რესურსი: - + Progress: პროგრესი: - + Create Torrent ტორენტის შექმნა - - + + Torrent creation failed ტორენტის შექმნა ჩაშლილია - + Reason: Path to file/folder is not readable. მიზეზი: ფაილის/დირექტორიის მისამარტი არ არის წაკითხვადი - + Select where to save the new torrent ამოირჩიეთ, სად შევინახოთ ახალი ტორენტი - + Torrent Files (*.torrent) ტორენტ ფაილები (*.torrent) - - Reason: %1 - მიზეზი: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Torrent creator ტორენტის შემქმნელი: - + Torrent created: ტორენტი შექმნილია: @@ -10303,32 +10817,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10336,27 +10850,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 მაგნეტ ფაილის გახსნა ჩაიშალა: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10364,14 +10878,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - არასწორი მეტაინფორმაცია + არასწორი მეტაინფორმაცია @@ -10402,126 +10910,170 @@ Please choose a different name and try again. დაუსრულებელი ტორენტისთვის სხვა მისამართის გამოყენება - + Category: კატეგორია: - + + Torrent Share Limits + + + Torrent speed limits - ტორენტის სიჩქარის ლიმიტი + ტორენტის სიჩქარის ლიმიტი - + Download: ჩამოტვირთვა: - - + + - - + + Torrent Speed Limits + + + + + KiB/s კბ/წ - + These will not exceed the global limits - + Upload: ატვირთვა: - Torrent share limits - ტორენტის გაზიარების ლიმიტი + ტორენტის გაზიარების ლიმიტი - - Use global share limit + + Disable DHT for this torrent - - Set no share limit + + Download in sequential order + თანმიმდევრობით ჩამოტვირთვა + + + + Disable PeX for this torrent - - Set share limit to + + Download first and last pieces first + პირველ რიგში ჩამოიტვირთოს პირველი და ბოლო ნაწილი + + + + Disable LSD for this torrent - - ratio + + Currently used categories - - total minutes + + + Choose save path + აირჩიეთ შესანახი მდებარეობა + + + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - inactive minutes + + + + + Default - - Disable DHT for this torrent + + + + Unlimited - - Download in sequential order - თანმიმდევრობით ჩამოტვირთვა + + + + Set to + - - Disable PeX for this torrent + + Seeding time: - - Download first and last pieces first - პირველ რიგში ჩამოიტვირთოს პირველი და ბოლო ნაწილი + + + + + + + min + minutes + წუთი - - Disable LSD for this torrent + + Inactive seeding time: - - Currently used categories + + Action when the limit is reached: - - - Choose save path - აირჩიეთ შესანახი მდებარეობა + + Stop torrent + - - Not applicable to private torrents + + Remove torrent + ტორენტის წაშლა + + + + Remove torrent and its content - - No share limit method selected + + Enable super seeding for torrent - - Please select a limit method first + + Ratio: @@ -10533,32 +11085,36 @@ Please choose a different name and try again. - New Tag - ახალი ტეგი + ახალი ტეგი + Add tag + + + + Tag: ტეგი: - + Invalid tag name არასწორი ტეგის სახელი - + Tag name '%1' is invalid. - + Tag exists ტეგი უკვე არსებობს - + Tag name already exists. ასეთი ტეგის სახელი უკვე არსებობს. @@ -10566,115 +11122,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid პრიორიტეტი არ არის მოქმედი - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty შენახვის გზა არ უნდა იყოს ცარიელი - - + + Cannot create target directory - - + + Category cannot be empty კატეგორია არ უნდა იყოს ცარიელი - + Unable to create category შეუძლებელია კატეგორიის შექმნა - + Unable to edit category შეუძლებელია კატეგორიის რედაქტირება - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name არასწორი ტორენტის სახელი - - + + Incorrect category name არასწორი კატეგორიის სახელი @@ -10700,245 +11271,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - მუშაობს + მუშაობს - + Disabled - გამორთულია + გამორთულია - + Disabled for this torrent - + This torrent is private - ეს ტორენტი პრივატულია + ეს ტორენტი პრივატულია - + N/A - N/A + N/A - + Updating... - განახლება... + განახლება... - + Not working - არ მუშაობს + არ მუშაობს - + Tracker error - + Unreachable - + Not contacted yet - ეხლა არ არის დაკავშირებული + არ არის დაკავშირებული - - Invalid status! - - - - - URL/Announce endpoint + + Invalid state! - Tier - - - - - Protocol + URL/Announce Endpoint - Status - სტატუსი - - - - Peers - პირები - - - - Seeds - სიდები - - - - Leeches - ლიჩები - - - - Times Downloaded + BT Protocol - - Message - შეტყობინება - - - - Next announce + + Next Announce - - Min announce + + Min Announce - - v%1 + + Tier - - - TrackerListWidget - Working - მუშაობს + + Status + სტატუსი - Disabled - გამორთულია + + Peers + პირები - - This torrent is private - ეს ტორენტი პრივატულია + + Seeds + სიდები - Updating... - განახლება... + + Leeches + ლიჩები - Not working - არ მუშაობს + + Times Downloaded + - Not contacted yet - ეხლა არ არის დაკავშირებული + + Message + შეტყობინება + + + TrackerListWidget - N/A - N/A + + This torrent is private + ეს ტორენტი პრივატულია - + Tracker editing ტრეკერის რედაქტირება - + Tracker URL: ტრეკერის URL: - - + + Tracker editing failed ტრეკერის რედაქტირება ვერ მოხერხდა - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... ტრეკერის URL-ის რედაქტირება... - + Remove tracker ტრეკეტის წაშლა - + Copy tracker URL ტრეკერის URL-ის ასლი - + Force reannounce to selected trackers - + Force reannounce to all trackers - URL - URL - - - Status - სტატუსი - - - Seeds - სიდები - - - + Resize columns სვეტების ზომის შეცვლა - + Resize all non-hidden columns to the size of their contents ყველა ხილული სვეტის ზომის გასწორება მათი შიგთავსის მიხედვით. - Peers - პირები - - - + Add trackers... - Leeches - ლიჩები - - - Message - შეტყობინება - - - + Column visibility სვეტის ხილვადობა @@ -10956,37 +11473,37 @@ Please choose a different name and try again. დასამატებელი ტრეკერების სია (ერთი თითო ხაზზე): - + µTorrent compatible list URL: µTorrent-თან თავსებადი სიის ბმული: - + Download trackers list - + Add დამატება - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10994,83 +11511,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - ყველა (0) - - - Trackerless (0) - ტრეკერის გარეშე (0) - - - Error (0) - შეცდომა (0) - - - Warning (0) - გაფრთხილება (0) - - - Error (%1) - შეცდომა (%1) - - - + Warning (%1) გაფრთხილება (%1) - + Trackerless (%1) ტრეკერის გარეშე (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - ტრეკეტის წაშლა + ტრეკერის წაშლა + + + + Start torrents + + + + + Stop torrents + - Resume torrents - ტორენტების განახლება + ტორენტების განახლება - Pause torrents - ტორენტების დაპაუზება + ტორენტების დაპაუზება - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter ყველა (%1) @@ -11079,7 +11583,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11172,9 +11676,8 @@ Please choose a different name and try again. - Paused - დაპაუზებული + დაპაუზებული @@ -11199,220 +11702,262 @@ Please choose a different name and try again. შეცდომა - + Name i.e: torrent name სახელი - + Size i.e: torrent size ზომა - + Progress % Done პროგრესი - Status Torrent status (e.g. downloading, seeding, paused) - სტატუსი + სტატუსი - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + სტატუსი + + + Seeds i.e. full sources (often untranslated) სიდები - + Peers i.e. partial sources (often untranslated) პირები - + Down Speed i.e: Download speed ჩამოტვირთვის სიჩქარე - + Up Speed i.e: Upload speed ატვირთვის სიჩქარე - + Ratio Share ratio შეფარდება - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category კატეგორია - + Tags ტეგები - + Added On Torrent was added to transfer list on 01/01/2010 08:00 დამატების თარიღი - + Completed On Torrent was completed on 01/01/2010 08:00 დასრულების თარიღი - + Tracker ტრეკერი - + Down Limit i.e: Download limit ჩამოტვირთვის ლიმიტი - + Up Limit i.e: Upload limit ატვირთვის ლიმიტი - + Downloaded Amount of data downloaded (e.g. in MB) ჩამოტვირთული - + Uploaded Amount of data uploaded (e.g. in MB) ატვირთული - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Remaining Amount of data left to download (e.g. in MB) დარჩა - + + Time Active + Time (duration) the torrent is active (not stopped) + აქტიური დრო + + + + Yes + კი + + + + No + არა + + Time Active Time (duration) the torrent is active (not paused) - აქტიური დრო + აქტიური დრო - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) შესრულებული - + Ratio Limit Upload share ratio limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Activity Time passed since a chunk was downloaded/uploaded ბოლო აქტიურობა - + Total Size i.e. Size including unwanted data მთლიანი ზომა - + Availability The number of distributed copies of the torrent ხელმისაწვდომია - + Info Hash v1 i.e: torrent info hash v1 - ჰეშის ინფორმაცია v2 {1?} + - + Info Hash v2 i.e: torrent info hash v2 - ჰეშის ინფორმაცია v2 {2?} + - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (სიდირდება %2) @@ -11421,334 +11966,333 @@ Please choose a different name and try again. TransferListWidget - + Column visibility სვეტის ხილვადობა - + Recheck confirmation დასტურის გადამოწმება - + Are you sure you want to recheck the selected torrent(s)? დარწყმუნებული ხართ რომ გსურთ ამორჩეული ტორენტის(ების) გადამოწმება? - + Rename გადარქმევა - + New name: ახალი სახელი: - + Choose save path აირჩიეთ შესანახი მდებარეობა - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns სვეტების ზომის შეცვლა - + Resize all non-hidden columns to the size of their contents ყველა ხილული სვეტის ზომის გასწორება მათი შიგთავსის მიხედვით. - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - ტეგების დამატება + ტეგების დამატება - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags ყველა ტეგის წაშლა - + Remove all tags from selected torrents? ყველა ტეგის წაშლა ამორჩეული ტორენტებიდან? - + Comma-separated tags: - + Invalid tag არასწორი ტეგი - + Tag name: '%1' is invalid ტეგის სახელი '%1' არასწორია - &Resume Resume/start the torrent - &გაგრძელება + &გაგრძელება - &Pause Pause the torrent - &პაუზა - - - - Force Resu&me - Force Resume/start the torrent - + &პაუზა - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order თანმიმდევრობით ჩამოტვირთვა - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first პირველ რიგში ჩამოიტვირთოს პირველი და ბოლო ნაწილი - + Automatic Torrent Management ტორენტის ავტომატური მართვა - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode სუპერ სიდირების რეჟიმი @@ -11793,28 +12337,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11822,7 +12366,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11853,20 +12402,21 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". @@ -11907,27 +12457,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11991,72 +12541,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12064,138 +12614,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + უცნობი შეცდომა + + misc - + B bytes - + KiB kibibytes (1024 bytes) კბ - + MiB mebibytes (1024 kibibytes) მბ - + GiB gibibytes (1024 mibibytes) გბ - + TiB tebibytes (1024 gibibytes) ტბ - + PiB pebibytes (1024 tebibytes) - + EiB exbibytes (1024 pebibytes) - + /s per second /წამი - + %1s e.g: 10 seconds - %1წთ {1s?} + - + %1m e.g: 10 minutes - %1წთ + %1წთ - + %1h %2m e.g: 3 hours 5 minutes - %1ს %2წთ + %1ს %2წთ - + %1d %2h e.g: 2 days 10 hours - %1დ %2ს + %1დ %2ს - + %1y %2d e.g: 2 years 10 days - %1დ %2ს {1y?} {2d?} - - - %1h %2m - e.g: 3hours 5minutes - %1ს %2წთ - - - %1d %2h - e.g: 2days 10hours - %1დ %2ს + - - + + Unknown Unknown (size) უცნობია - + qBittorrent will shutdown the computer now because all downloads are complete. იმის გამო რომ ყველა ჩამოტვირთვა დასრულდა, ახლა qBittorrent გამორთავს კომპიტერს. - + < 1m < 1 minute < 1წთ - - %1m - e.g: 10minutes - %1წთ - diff --git a/src/lang/qbittorrent_ko.ts b/src/lang/qbittorrent_ko.ts index 252d7b0abe87..36b0e2e9dd0f 100644 --- a/src/lang/qbittorrent_ko.ts +++ b/src/lang/qbittorrent_ko.ts @@ -14,77 +14,77 @@ 정보 - + Authors 작성자 - + Current maintainer 현재 관리자 - + Greece 그리스 - - + + Nationality: 국적: - - + + E-mail: 이메일: - - + + Name: 이름: - + Original author 원본 작성자 - + France 프랑스 - + Special Thanks 고마운 분들 - + Translators 번역자 - + License 라이선스 - + Software Used 사용된 소프트웨어 - + qBittorrent was built with the following libraries: qBittorrent는 다음 라이브러리로 만들어졌습니다: - + Copy to clipboard - + 클립보드에 복사 @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 qBittorrent 프로젝트 + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 qBittorrent 프로젝트 @@ -166,14 +166,13 @@ 저장 위치 - + Never show again 다시 표시 안함 - Torrent settings - 토렌트 설정 + 토렌트 설정 @@ -191,12 +190,12 @@ 토렌트 시작 - + Torrent information 토렌트 정보 - + Skip hash check 해시 검사 건너뛰기 @@ -205,6 +204,11 @@ Use another path for incomplete torrent 불완전한 토렌트에 다른 경로 사용 + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ 중지 조건: - - + + None 없음 - - + + Metadata received 수신된 메타데이터 - - + + Torrents that have metadata initially will be added as stopped. + 처음에 메타데이터가 포함된 토렌트는 중지된 상태로 추가됩니다. + + + + Files checked 파일 확인됨 - + Add to top of queue 대기열 맨 위에 추가하기 - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog 이 옵션을 선택하면 옵션 대화 상자의 "내려받기" 페이지 설정에 관계없이 .torrent 파일이 삭제되지 않습니다. - + Content layout: 내용 배치: - + Original 원본 - + Create subfolder 하위 폴더 만들기 - + Don't create subfolder 하위 폴더 만들지 않기 - + Info hash v1: 정보 해시 v1: - + Size: 크기: - + Comment: 주석: - + Date: 날짜: @@ -324,245 +333,182 @@ 마지막으로 사용한 저장 경로 기억 - + Do not delete .torrent file .torrent 파일 삭제 안 함 - + Download in sequential order 순차 내려받기 - + Download first and last pieces first 처음과 마지막 조각을 먼저 내려받기 - + Info hash v2: 정보 해시 v2: - + Select All 모두 선택 - + Select None 선택 없음 - + Save as .torrent file... .torrent 파일로 저장… - + I/O Error I/O 오류 - Invalid torrent - 잘못된 토렌트 - - - + Not Available This comment is unavailable 사용할 수 없음 - + Not Available This date is unavailable 사용할 수 없음 - + Not available 사용할 수 없음 - Invalid magnet link - 잘못된 마그넷 링크 - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - 토렌트 읽기 실패: %1 -오류: %2 - - - This magnet link was not recognized - 이 마그넷 링크를 인식할 수 없습니다 - - - + Magnet link 마그넷 링크 - + Retrieving metadata... 메타데이터 검색 중… - - + + Choose save path 저장 경로 선정 - Torrent is already present - 토렌트가 이미 존재합니다 - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - 전송 목록에 '%1' 토렌트가 있습니다. 비공개 토렌트이므로 트래커를 합치지 않았습니다. - - - Torrent is already queued for processing. - 토렌트가 처리 대기 중입니다. - - - + No stop condition is set. 중지 조건이 설정되지 않았습니다. - + Torrent will stop after metadata is received. 메타데이터가 수신되면 토렌트가 중지됩니다. - - Torrents that have metadata initially aren't affected. - 처음에 메타데이터가 있는 토렌트는 영향을 받지 않습니다. - - - + Torrent will stop after files are initially checked. 파일을 처음 확인한 후에는 토렌트가 중지됩니다. - + This will also download metadata if it wasn't there initially. 처음에 메타데이터가 없는 경우 메타데이터 또한 내려받기됩니다. - - + + N/A 해당 없음 - Magnet link is already queued for processing. - 마그넷 링크가 이미 대기열에 있습니다. - - - + %1 (Free space on disk: %2) %1 (디스크 남은 용량: %2) - + Not available This size is unavailable. 사용할 수 없음 - + Torrent file (*%1) 토렌트 파일 (*%1) - + Save as torrent file 토렌트 파일로 저장 - + Couldn't export torrent metadata file '%1'. Reason: %2. '%1' 토렌트 메타데이터 파일을 내보낼 수 없습니다. 원인: %2. - + Cannot create v2 torrent until its data is fully downloaded. 데이터를 완전히 내려받을 때까지 v2 토렌트를 만들 수 없습니다. - Cannot download '%1': %2 - '%1'을(를) 내려받기할 수 없음: %2 - - - + Filter files... 파일 필터링... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - '%1' 토렌트가 이미 전송 목록에 있습니다. 비공개 토렌트이기 때문에 트래커를 병합할 수 없습니다. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - '%1' 토렌트가 이미 전송 목록에 있습니다. 새 소스의 트래커를 병합하시겠습니까? - - - + Parsing metadata... 메타데이터 분석 중… - + Metadata retrieval complete 메타데이터 복구 완료 - - Failed to load from URL: %1. -Error: %2 - URL에서 읽기 실패: %1. -오류: %2 - - - Download Error - 내려받기 오류 - AddTorrentManager Downloading torrent... Source: "%1" - + 토렌트 내려받는 중... 소스 : "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + 토렌트를 추가하지 못했습니다. 소스 : "%1". 이유 : "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + 중복 토렌트를 추가하려는 시도를 감지했습니다. 소스 : %1. 기존 토렌트 : %2. 결과 : %3 - + Merging of trackers is disabled - + 트래커 병합이 비활성화됨 - + Trackers cannot be merged because it is a private torrent - + 비공개 토렌트이기 때문에 트래커를 병합할 수 없음 - + Trackers are merged from new source - + 새 소스에서 트래커가 병합됨 @@ -648,72 +594,77 @@ Error: %2 해시 검사 건너뛰기 - - - Choose save path - 저장 경로 선정 + + Torrent share limits + 토렌트 공유 제한 - - - - - - - Default - 기본 + + + Choose save path + 저장 경로 선정 + + + - Yes - + Default + 기본 + Yes + + + + + + No 아니요 - + Manual 수동 - + Automatic 자동 - + Original 원본 - + Create subfolder 하위 폴더 만들기 - + Don't create subfolder 하위 폴더 만들지 않기 - + None 없음 - + Metadata received 수신된 메타데이터 - + Files checked 파일 확인됨 @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion 완료했을 때 토렌트 다시 검사 - - + + ms milliseconds ms - + Setting 설정 - + Value Value set for this setting - + (disabled) (비활성화됨) - + (auto) (자동) - + + min minutes - + All addresses 모든 주소 - + qBittorrent Section qBittorrent 부분 - - + + Open documentation 문서 열기 - + All IPv4 addresses 모든 IPv4 주소 - + All IPv6 addresses 모든 IPv6 주소 - + libtorrent Section libtorrent 부분 - + Fastresume files Fastresume 파일 - + SQLite database (experimental) SQLite 데이터베이스 (실험적) - + Resume data storage type (requires restart) - 이어받기 데이터 저장 유형 (다시 시작 필요) + 이어받기 데이터 저장소 유형 (다시 시작 필요) - + Normal 보통 - + Below normal 보통 이하 - + Medium 중간 - + Low 낮음 - + Very low 매우 낮음 - - Process memory priority (Windows >= 8 only) - 프로세스 메모리 우선순위 (Windows 8 이상) - - - + Physical memory (RAM) usage limit 물리적 메모리(RAM) 사용량 제한 - + Asynchronous I/O threads 비동기 I/O 스레드 - + Hashing threads 해싱 스레드 - + File pool size 파일 풀 크기 - + Outstanding memory when checking torrents 토렌트를 확인할 때 사용할 초과 메모리 - + Disk cache 디스크 캐시 - - - - + + + + s seconds - + Disk cache expiry interval 디스크 캐시 만료 간격 - + Disk queue size 디스크 대기열 크기 - - + + Enable OS cache OS 캐시 활성화 - + Coalesce reads & writes 읽기 및 쓰기 통합 - + Use piece extent affinity 조각 범위 선호도 사용 - + Send upload piece suggestions 조각 올려주기 제안 보내기 - - - - + + + + + 0 (disabled) 0 (비활성화됨) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - 이어받기 데이터 간격 저장 [0: 비활성화됨] + 이어받기 데이터 저장 간격 [0: 비활성화됨] - + Outgoing ports (Min) [0: disabled] 나가는 포트 (최소) [0: 비활성화됨] - + Outgoing ports (Max) [0: disabled] 나가는 포트 (최대) [0: 비활성화됨] - + 0 (permanent lease) 0 (영구 임대) - + UPnP lease duration [0: permanent lease] UPnP 임대 기간 [0: 영구 임대] - + Stop tracker timeout [0: disabled] 중지 트래커 만료시간 [0: 비활성화됨] - + Notification timeout [0: infinite, -1: system default] 알림 만료시간 [0: 무한, -1: 시스템 기본값] - + Maximum outstanding requests to a single peer 단일 피어에 대한 최대 미해결 요청 - - - - - + + + + + KiB KiB - + (infinite) (무한) - + (system default) (시스템 기본값) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux 이 옵션은 Linux에서 효과적이지 않습니다 - + + Process memory priority + 프로세스 메모리 우선순위 + + + Bdecode depth limit Bdecode 깊이 제한 - + Bdecode token limit Bdecode 토큰 제한 - + Default 기본값 - + Memory mapped files 메모리 매핑된 파일 - + POSIX-compliant POSIX 호환 - + + Simple pread/pwrite + + + + Disk IO type (requires restart) 디스크 IO 유형 (다시 시작 필요) - - + + Disable OS cache OS 캐시 비활성화 - + Disk IO read mode 디스크 IO 읽기 모드 - + Write-through 연속 기입 - + Disk IO write mode 디스크 IO 쓰기 모드 - + Send buffer watermark 전송 버퍼 워터마크 - + Send buffer low watermark 전송 버퍼 낮은 워터마크 - + Send buffer watermark factor 전송 버퍼 워터마크 인자 - + Outgoing connections per second 초당 나가는 연결 수 - - + + 0 (system default) 0 (시스템 기본값) - + Socket send buffer size [0: system default] 소켓 전송 버퍼 크기 [0: 시스템 기본값] - + Socket receive buffer size [0: system default] 소켓 수신 버퍼 크기 [0: 시스템 기본값] - + Socket backlog size 소켓 백로그 크기 - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent 파일 크기 제한 - + Type of service (ToS) for connections to peers 피어 연결에 대한 서비스 유형 (ToS) - + Prefer TCP TCP 우선 - + Peer proportional (throttles TCP) 피어 비례 (TCP 조절) - + Support internationalized domain name (IDN) 국제 도메인 이름(IDN) 지원 - + Allow multiple connections from the same IP address 같은 IP 주소의 다중 접속 허용하기 - + Validate HTTPS tracker certificates HTTPS 트래커 인증서 유효성 검사 - + Server-side request forgery (SSRF) mitigation SSRF(서버 측 요청 변조) 완화 - + Disallow connection to peers on privileged ports 권한 있는 포트에 대한 피어 연결 허용 안 함 - + + It appends the text to the window title to help distinguish qBittorent instances + qBittorent 인스턴스를 구별할 수 있도록 창 제목에 텍스트를 추가 + + + + Customize application instance name + 앱 인스턴스 이름 사용자 지정 + + + It controls the internal state update interval which in turn will affect UI updates UI 업데이트에 영향을 주는 내부 상태 업데이트 간격을 제어합니다 - + Refresh interval 새로고침 간격 - + Resolve peer host names 피어 호스트 이름 분석 - + IP address reported to trackers (requires restart) 트래커에 보고된 IP 주소 (다시 시작 필요) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed IP 또는 포트가 변경되면 모든 트래커에게 다시 알림 - + Enable icons in menus 메뉴에서 아이콘 활성화 - + Enable port forwarding for embedded tracker 임베디드 트래커에 대한 포트 포워딩 활성화 - - (Auto detect if empty) + + Enable quarantine for downloaded files + 내려받은 파일에 대한 격리 활성화 + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + 내려받은 파일에 대해 MOTW(Mark-of-the-Web) 활성화 + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (비어있는 경우 자동 감지) + + + Python executable path (may require restart) + Python 실행 경로(다시 시작해야 할 수 있음) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + 모든 토렌트에서 트래커 제거 확인 + + + Peer turnover disconnect percentage 피어 전환 연결 해제율(%) - + Peer turnover threshold percentage 피어 전환 임계율(%) - + Peer turnover disconnect interval 피어 전환 연결 해제 간격 - + Resets to default if empty - + 비어 있는 경우 기본값으로 재설정 - + DHT bootstrap nodes - + DHT 부트스트랩 노드 - + I2P inbound quantity I2P 인바운드 분량 - + I2P outbound quantity I2P 아웃바운드 분량 - + I2P inbound length I2P 인바운드 길이 - + I2P outbound length I2P 아웃바운드 길이 - + Display notifications 알림 표시 - + Display notifications for added torrents 추가된 토렌트에 대한 알림 화면표시 - + Download tracker's favicon 내려받기 트래커의 즐겨찾기 아이콘 - + Save path history length 저장 경로 목록 길이 - + Enable speed graphs 속도 그래프 활성화 - + Fixed slots 고정 슬롯 - + Upload rate based 올려주기 속도 기반 - + Upload slots behavior 올려주기 슬롯 동작 - + Round-robin 라운드 로빈 - + Fastest upload 가장 빠른 올려주기 - + Anti-leech 리치 방지 - + Upload choking algorithm 올려주기 억제 알고리즘 - + Confirm torrent recheck 토렌트 다시 검사 확인 - + Confirm removal of all tags 모든 태그 제거 확인 - + Always announce to all trackers in a tier 계층 내 모든 트래커에 항상 알리기 - + Always announce to all tiers 모든 계층에 항상 알리기 - + Any interface i.e. Any network interface 모든 인터페이스 - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP 혼합 모드 알고리즘 - + Resolve peer countries 피어 국가 분석 - + Network interface 네트워크 인터페이스 - + Optional IP address to bind to 결합할 선택적 IP 주소 - + Max concurrent HTTP announces 최대 동시 HTTP 알림 - + Enable embedded tracker 내장 트래커 활성화 - + Embedded tracker port 내장 트래커 포트 - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 시작됨 + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 휴대 모드로 실행 중입니다. %1에서 프로필 폴더가 자동으로 탐지되었습니다. - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. 중복 명령줄 플래그가 감지됨: "%1". 포터블 모드는 상대적인 fastresume을 사용합니다. - + Using config directory: %1 사용할 구성 디렉터리: %1 - + Torrent name: %1 토렌트 이름: %1 - + Torrent size: %1 토렌트 크기: %1 - + Save path: %1 저장 경로: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds 토렌트가 %1에 내려받았습니다. - + + Thank you for using qBittorrent. qBittorrent를 사용해 주셔서 감사합니다. - + Torrent: %1, sending mail notification 토렌트: %1, 알림 메일 전송 중 - + Add torrent failed - + 토렌트 추가 실패 - + Couldn't add torrent '%1', reason: %2. - + 토렌트 '%1'을(를) 추가할 수 없음, 이유 : %2. + + + + The WebUI administrator username is: %1 + WebUI 관리자 사용자 이름: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + WebUI 관리자 비밀번호가 설정되지 않았습니다. 이 세션에 임시 비밀번호가 제공되었습니다: %1 + + + + You should set your own password in program preferences. + 프로그램 환경설정에서 자신만의 비밀번호를 설정해야 합니다. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI가 비활성화되었습니다! WebUI를 활성화하려면 구성 파일을 수동으로 편집하세요. - + Running external program. Torrent: "%1". Command: `%2` 외부 프로그램을 실행 중입니다. 토렌트: "%1". 명령: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` 외부 프로그램을 실행하지 못했습니다. 토렌트: "%1". 명령: `%2` - + Torrent "%1" has finished downloading "%1" 토렌트 내려받기를 완료했습니다 - + WebUI will be started shortly after internal preparations. Please wait... WebUI는 내부 준비를 마친 후 곧 시작할 예정입니다. 기다려 주십시오... - - + + Loading torrents... 토렌트 불러오는 중... - + E&xit 종료(&X) - + I/O Error i.e: Input/Output Error I/O 오류 - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 원인: %2 - Error - 오류 - - - Failed to add torrent: %1 - 토렌트 추가 실패: %1 - - - + Torrent added 토렌트 추가됨 - + '%1' was added. e.g: xxx.avi was added. '%1'이(가) 추가되었습니다. - + Download completed 내려받기 완료됨 - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' 내려받기를 완료했습니다. - - - URL download error - URL 내려받기 오류 + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1이(가) 시작되었습니다. 프로세스 ID : %2 - Couldn't download file at URL '%1', reason: %2. - URL '%1'의 파일을 내려받을 수 없습니다. 원인: %2. + + This is a test email. + - Torrent file association - 토렌트 파일 연계 + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent는 토렌트 파일이나 마그넷 링크를 여는 기본 응용 프로그램이 아닙니다. -qBittorrent를 이에 대한 기본 응용 프로그램으로 만드시겠습니까? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' 내려받기를 완료했습니다. - + Information 정보 - + To fix the error, you may need to edit the config file manually. - + 오류를 수정하려면 구성 파일을 수동으로 편집해야 할 수 있습니다. - + To control qBittorrent, access the WebUI at: %1 qBittorrent를 제어하려면 다음에서 웹 UI에 접속: %1 - - The Web UI administrator username is: %1 - 웹 UI 관리자 이름: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - 웹 UI 관리자 암호가 기본값에서 변경되지 않았습니다: %1 - - - - This is a security risk, please change your password in program preferences. - 보안상 위험이 있습니다. 프로그램 환경설정에서 암호를 변경하십시오. - - - Application failed to start. - 응용 프로그램을 실행하지 못했습니다. - - - + Exit 종료 - + Recursive download confirmation - 반복적으로 내려받기 확인 + 반복적으로 내려받기 확인 - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - 토렌트 '%1'에 .torrent 파일이 포함되어 있습니다. 내려받기를 계속하시겠습니까? + 토렌트 '%1'에 .torrent 파일이 포함되어 있습니다. 내려받기를 계속하시겠습니까? - + Never - 절대 안함 + 절대 안함 - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 토렌트 내의 .torent 파일을 반복적으로 내려받기합니다. 원본 토렌트: "%1". 파일: "%2" + 토렌트 내의 .torent 파일을 반복적으로 내려받기합니다. 원본 토렌트: "%1". 파일: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" 물리적 메모리(RAM) 사용량 제한을 설정하지 못했습니다. 오류 코드: %1. 오류 메시지: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" 물리적 메모리(RAM) 사용량 하드 제한을 설정하지 못했습니다. 요청된 크기: %1. 시스템 하드 제한: %2. 오류 코드: %3. 오류 메시지: "%4" - + qBittorrent termination initiated qBittorrent 종료가 시작되었습니다 - + qBittorrent is shutting down... qBittorrent가 종료되고 있습니다... - + Saving torrent progress... 토렌트 진행 상태 저장 중… - + qBittorrent is now ready to exit qBittorrent가 이제 종료할 준비가 되었습니다. @@ -1597,7 +1637,7 @@ qBittorrent를 이에 대한 기본 응용 프로그램으로 만드시겠습니 AsyncFileStorage - + Could not create directory '%1'. '%1' 디렉터리를 만들 수 없습니다. @@ -1605,22 +1645,22 @@ qBittorrent를 이에 대한 기본 응용 프로그램으로 만드시겠습니 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI 로그인 실패. 원인: 차단된 IP, IP: %1, 사용자 이름: %2 - + Your IP address has been banned after too many failed authentication attempts. 인증에 너무 많이 실패하여 당신의 IP 주소가 차단되었습니다. - + WebAPI login success. IP: %1 WebAPI 로그인 성공. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI 로그인 실패. 원인: 잘못된 자격 증명, 시도 횟수: %1, IP: %2, 사용자 이름: %3 @@ -1655,7 +1695,7 @@ qBittorrent를 이에 대한 기본 응용 프로그램으로 만드시겠습니 Auto downloading of RSS torrents is currently disabled. You can enable it in application settings. - RSS 토렌트의 자동 내려받기는 현재 비활성화되었습니다. 응용 프로그램 설정에서 활성화 설정할 수 있습니다. + RSS 토렌트의 자동 내려받기는 현재 비활성화되었습니다. 앱 설정에서 활성화 설정할 수 있습니다. @@ -1668,12 +1708,12 @@ qBittorrent를 이에 대한 기본 응용 프로그램으로 만드시겠습니 우선순위: - + Must Not Contain: 무조건 제외: - + Episode Filter: 에피소드 필터: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 내보내기(&E)… - + Matches articles based on episode filter. 에피소드 필터를 기반으로 규약을 일치시킵니다. - + Example: 예시: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match 시즌 1의 2, 5, 8~15, 30 및 이후 에피소드와 일치됩니다 - + Episode filter rules: 에피소드 필터 규칙: - + Season number is a mandatory non-zero value 시즌 번호는 0이 아닌 값을 적어야 합니다 - + Filter must end with semicolon 필터는 쌍반점으로 끝나야 합니다 - + Three range types for episodes are supported: 에피소드에 대한 세 가지 범위 유형이 지원됩니다: - + Single number: <b>1x25;</b> matches episode 25 of season one 단일 번호: <b>1x25;</b> 시즌 1의 에피소드 25와 일치됩니다 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one 정상 범위: <b>1x25-40;</b> 가 시즌 1의 에피소드 25~40과 일치됩니다 - + Episode number is a mandatory positive value 에피소드 숫자는 양수여야 합니다 - + Rules 규칙 - + Rules (legacy) 규칙 (이전) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons 무한 범위: <b>1x25-;</b> 시즌 1의 회차 25 이후, 그리고 이후 시즌의 모든 회차를 찾습니다 - + Last Match: %1 days ago 최근 일치: %1일 전 - + Last Match: Unknown 최근 일치: 알 수 없음 - + New rule name 새 규칙 이름 - + Please type the name of the new download rule. 새 내려받기 규칙의 이름을 입력하십시오. - - + + Rule name conflict 규칙 이름 충돌 - - + + A rule with this name already exists, please choose another name. 같은 이름의 규칙이 있습니다. 다른 이름을 선정하십시오. - + Are you sure you want to remove the download rule named '%1'? '%1' 내려받기 규칙을 제거하시겠습니까? - + Are you sure you want to remove the selected download rules? 선택한 내려받기 규칙을 제거하시겠습니까? - + Rule deletion confirmation 규칙 삭제 확인 - + Invalid action 잘못된 동작 - + The list is empty, there is nothing to export. 목록이 비어 있으므로 내보낼 항목이 없습니다. - + Export RSS rules RSS 규칙 내보내기 - + I/O Error I/O 오류 - + Failed to create the destination file. Reason: %1 대상 파일을 만들지 못했습니다. 원인: %1 - + Import RSS rules RSS 규칙 가져오기 - + Failed to import the selected rules file. Reason: %1 선택한 규칙 파일을 가져오지 못했습니다. 원인: %1 - + Add new rule... 새 규칙 추가… - + Delete rule 규칙 삭제 - + Rename rule... 규칙 이름 바꾸기… - + Delete selected rules 선택한 규칙 삭제 - + Clear downloaded episodes... 내려받은 에피소드 지우기… - + Rule renaming 규칙 이름 바꾸기 - + Please type the new rule name 새 규칙 이름을 입력하십시오 - + Clear downloaded episodes 내려받은 에피소드 지우기 - + Are you sure you want to clear the list of downloaded episodes for the selected rule? 선택한 규칙으로 내려받은 에피소드 목록을 지우시겠습니까? - + Regex mode: use Perl-compatible regular expressions 정규표현식 모드: Perl 호환 정규표현식 사용 - - + + Position %1: %2 위치 %1: %2 - + Wildcard mode: you can use 와일드카드 모드: 사용 가능 - - + + Import error 가져오기 오류 - + Failed to read the file. %1 파일을 읽지 못했습니다. %1 - + ? to match any single character ? = 임의의 글자 하나와 일치 - + * to match zero or more of any characters * = 0개 이상의 모든 글자 - + Whitespaces count as AND operators (all words, any order) 공백 = AND 연산자 (모든 단어, 모든 순서) - + | is used as OR operator | = OR 연산자 - + If word order is important use * instead of whitespace. 단어 순서가 중요하다면 공백 대신 *를 사용하십시오. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) 빈 %1 절이 있는 표현식 (예: %2) - + will match all articles. 은(는) 모든 규약과 일치됩니다. - + will exclude all articles. 은(는) 모든 규약을 제외합니다. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" 토렌트 이어받기 폴더를 만들 수 없습니다. "%1" - + Cannot parse resume data: invalid format 이어받기 데이터를 구문 분석할 수 없음: 잘못된 형식 - - + + Cannot parse torrent info: %1 토렌트 정보를 분석할 수 없음: %1 - + Cannot parse torrent info: invalid format 토렌트 정보를 분석할 수 없음: 잘못된 형식 - + + Mismatching info-hash detected in resume data + 이력 데이터에서 불일치하는 정보 해시 발견 + + + Couldn't save torrent metadata to '%1'. Error: %2. 토렌트 메타데이터를 '%1'에 저장할 수 없습니다. 오류: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. 토렌트 이어받기 데이터를 '%1'에 저장할 수 없습니다. 오류: %2. - + Couldn't load torrents queue: %1 토렌트 대기열을 불러올 수 없음: %1 - + Cannot parse resume data: %1 이어받기 데이터를 분석할 수 없음: %1 - + Resume data is invalid: neither metadata nor info-hash was found 이어받기 데이터가 잘못되었습니다. 메타데이터나 정보 해시를 찾을 수 없습니다. - + Couldn't save data to '%1'. Error: %2 데이터를 '%1'에 저장할 수 없습니다. 오류: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. 찾지 못했습니다. - + Couldn't load resume data of torrent '%1'. Error: %2 토렌트 '%1'의 이어받기 데이터를 불러올 수 없습니다. 오류: %2 - - + + Database is corrupted. 데이터베이스가 손상되었습니다. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. WAL(Write-Ahead Logging) 저널링 모드를 활성화할 수 없습니다. 오류: %1. - + Couldn't obtain query result. 쿼리 결과를 확인할 수 없습니다. - + WAL mode is probably unsupported due to filesystem limitations. 파일 시스템 제한으로 인해 WAL 모드가 지원되지 않을 수 있습니다. - + Couldn't begin transaction. Error: %1 트랜잭션을 시작할 수 없습니다. 오류: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. 토렌트 메타데이터를 저장할 수 없습니다. 오류: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 토렌트 '%1'의 이어받기 데이터를 저장할 수 없습니다. 오류: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 토렌트 '%1'의 이어받기 데이터를 삭제할 수 없습니다. 오류: %2 - + Couldn't store torrents queue positions. Error: %1 토렌트 대기열 위치를 저장할 수 없습니다. 오류: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 분산 해시 테이블(DHT) 지원: %1 - - - - - - - - - + + + + + + + + + ON 켜짐 - - - - - - - - - + + + + + + + + + OFF 꺼짐 - - + + Local Peer Discovery support: %1 로컬 피어 찾기 지원: %1 - + Restart is required to toggle Peer Exchange (PeX) support 피어 익스체인지(PeX) 지원을 전환하려면 다시 시작해야 합니다 - + Failed to resume torrent. Torrent: "%1". Reason: "%2" 토렌트를 이어받지 못했습니다. 토렌트: "%1". 원인: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" 토렌트 이어받기 실패: 일치하지 않는 토렌트 ID가 감지되었습니다. 토렌트: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" 일치하지 않는 데이터 감지됨: 구성 파일에서 범주가 누락되었습니다. 범주는 복구되지만 해당 설정은 기본값으로 재설정됩니다. 토렌트: "%1". 범주: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" 일치하지 않는 데이터 감지됨: 잘못된 범주입니다. 토렌트: "%1". 범주: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" 복구된 범주의 저장 경로와 토렌트의 현재 저장 경로 간의 불일치가 감지되었습니다. 지금부터 토렌트가 수동 모드로 전환되었습니다. 토렌트: "%1". 범주: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" 일치하지 않는 데이터 감지됨: 구성 파일에서 태그가 누락되었습니다. 태그가 복구됩니다. 토렌트: "%1". 태그: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" 일치하지 않는 데이터 감지됨: 잘못된 태그입니다. 토렌트: "%1". 태그: "%2" - + System wake-up event detected. Re-announcing to all the trackers... 시스템 깨우기 이벤트가 감지되었습니다. 모든 트래커에게 다시 알립니다... - + Peer ID: "%1" 피어 ID: "%1" - + HTTP User-Agent: "%1" HTTP 사용자-에이전트: "%1" - + Peer Exchange (PeX) support: %1 피어 익스체인지(PeX) 지원: %1 - - + + Anonymous mode: %1 익명 모드: %1 - - + + Encryption support: %1 암호화 지원: %1 - - + + FORCED 강제 적용됨 - + Could not find GUID of network interface. Interface: "%1" 네트워크 인터페이스의 GUID를 찾을 수 없습니다. 인터페이스: "%1" - + Trying to listen on the following list of IP addresses: "%1" 다음 IP 주소 목록에서 수신하기 위해 시도하는 중: "%1" - + Torrent reached the share ratio limit. 토렌트가 공유 비율 제한에 도달했습니다. - - - + Torrent: "%1". 토렌트: "%1". - - - Removed torrent. - 토렌트를 제거했습니다. + 토렌트를 제거했습니다. - - - Removed torrent and deleted its content. - 토렌트를 제거하고 내용을 삭제했습니다. + 토렌트를 제거하고 내용을 삭제했습니다. - - - Torrent paused. - 토렌트가 일시정지되었습니다. + 토렌트가 일시정지되었습니다. - - - + Super seeding enabled. 초도 배포가 활성화되었습니다. - + Torrent reached the seeding time limit. 토렌트가 배포 제한 시간에 도달했습니다. - + Torrent reached the inactive seeding time limit. 토렌트가 비활성 시드 시간 제한에 도달했습니다. - + Failed to load torrent. Reason: "%1" 토렌트를 불러오지 못했습니다. 원인: "%1" - + I2P error. Message: "%1". + I2P 오류. 메시지: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP 지원: 켬 + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - 토렌트를 내려받기하는 중입니다. 기다려 주십시오… 소스: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - 토렌트를 불러오지 못했습니다. 소스: "%1". 원인: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - 중복 토렌트를 추가하려는 시도를 감지했습니다. 트래커 병합이 비활성화됩니다. 토렌트: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - 중복 토렌트를 추가하려는 시도를 감지했습니다. 트래커는 개인 토렌트이기 때문에 병합할 수 없습니다. 토렌트: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - 중복 토렌트를 추가하려는 시도를 감지했습니다. 트래커는 새 소스에서 병합됩니다. 토렌트: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP 지원: 켬 + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP 지원: 끔 + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - 토렌트를 내보내지 못했습니다. 토렌트: "%1". 대상: %2. 원인: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - 이어받기 데이터 저장을 중단했습니다. 미해결 토렌트 수: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + 트래커 병합이 비활성화됨 + + + + Trackers cannot be merged because it is a private torrent + 비공개 토렌트이기 때문에 트래커를 병합할 수 없음 - System network status changed to %1 - e.g: System network status changed to ONLINE - 시스템 네트워크 상태가 %1(으)로 변경되었습니다 + + Trackers are merged from new source + 새 소스에서 트래커가 병합됨 - ONLINE - 온라인 + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP 지원: 끔 - OFFLINE - 오프라인 + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + 토렌트를 내보내지 못했습니다. 토렌트: "%1". 대상: %2. 원인: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1의 네트워크 구성이 변경되었으므로, 세션 바인딩을 새로 고칩니다 + + Aborted saving resume data. Number of outstanding torrents: %1 + 이어받기 데이터 저장을 중단했습니다. 미해결 토렌트 수: %1 - + The configured network address is invalid. Address: "%1" 구성된 네트워크 주소가 잘못되었습니다. 주소: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" 수신 대기하도록 구성된 네트워크 주소를 찾지 못했습니다. 주소: "%1" - + The configured network interface is invalid. Interface: "%1" 구성된 네트워크 인터페이스가 잘못되었습니다. 인터페이스: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" 금지된 IP 주소 목록을 적용하는 동안 잘못된 IP 주소를 거부했습니다. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" 토렌트에 트래커를 추가했습니다. 토렌트: "%1". 트래커: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" 토렌트에서 트래커를 제거했습니다. 토렌트: "%1". 트래커: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" 토렌트에 URL 배포를 추가했습니다. 토렌트: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" 토렌트에서 URL 배포를 제거했습니다. 토렌트: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - 토렌트가 일시정지되었습니다. 토렌트: "%1" + 토렌트가 일시정지되었습니다. 토렌트: "%1" - + Torrent resumed. Torrent: "%1" 토렌트가 이어받기되었습니다. 토렌트: "%1" - + Torrent download finished. Torrent: "%1" 토렌트 내려받기를 완료했습니다. 토렌트: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" 토렌트 이동이 취소되었습니다. 토렌트: "%1". 소스: "%2". 대상: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination 토렌트 이동을 대기열에 넣지 못했습니다. 토렌트: "%1". 소스: "%2". 대상: "%3". 원인: 현재 토렌트가 대상으로 이동 중입니다 - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location 토렌트 이동을 대기열에 넣지 못했습니다. 토렌트: "%1". 소스: "%2" 대상: "%3". 원인: 두 경로 모두 동일한 위치를 가리킵니다 - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" 대기열에 있는 토렌트 이동입니다. 토렌트: "%1". 소스: "%2". 대상: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" 토렌트 이동을 시작합니다. 토렌트: "%1". 대상: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" 범주 구성을 저장하지 못했습니다. 파일: "%1". 오류: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" 범주 구성을 분석하지 못했습니다. 파일: "%1". 오류: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 토렌트 내의 .torent 파일을 반복적으로 내려받기합니다. 원본 토렌트: "%1". 파일: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - 토렌트 내에서 .torrent 파일을 불러오지 못했습니다. 원본 토렌트: "%1". 파일: "%2". 오류: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP 필터 파일을 성공적으로 분석했습니다. 적용된 규칙 수: %1 - + Failed to parse the IP filter file IP 필터 파일을 분석하지 못했습니다 - + Restored torrent. Torrent: "%1" 토렌트를 복원했습니다. 토렌트: "%1" - + Added new torrent. Torrent: "%1" 새로운 토렌트를 추가했습니다. 토렌트: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" 토렌트 오류가 발생했습니다. 토렌트: "%1". 오류: "%2" - - Removed torrent. Torrent: "%1" - 토렌트를 제거했습니다. 토렌트: "%1" + 토렌트를 제거했습니다. 토렌트: "%1" - Removed torrent and deleted its content. Torrent: "%1" - 토렌트를 제거하고 내용을 삭제했습니다. 토렌트: "%1" + 토렌트를 제거하고 내용을 삭제했습니다. 토렌트: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + 토렌트에 SSL 매개변수가 누락되었음. 토렌트: "%1". 메시지: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" 파일 오류 경고입니다. 토렌트: "%1". 파일: "%2" 원인: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP 포트 매핑에 실패했습니다. 메시지: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP 포트 매핑에 성공했습니다. 메시지: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP 필터 - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). 필터링된 포트 (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). 특별 허가된 포트 (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent 세션에 심각한 오류가 발생했습니다. 이유: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 프록시 오류입니다. 주소: %1. 메시지: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 혼합 모드 제한 - + Failed to load Categories. %1 범주를 불러오지 못했습니다. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" 범주 구성을 불러오지 못했습니다. 파일: "%1". 오류: "잘못된 데이터 형식" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - 토렌트를 제거했지만 해당 콘텐츠 및/또는 파트파일을 삭제하지 못했습니다. 토렌트: "%1". 오류: "%2" + 토렌트를 제거했지만 해당 콘텐츠 및/또는 파트파일을 삭제하지 못했습니다. 토렌트: "%1". 오류: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 비활성화됨 - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 비활성화됨 - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL 배포 DNS를 조회하지 못했습니다. 토렌트: "%1". URL: "%2". 오류: "%3" + URL 배포 DNS를 조회하지 못했습니다. 토렌트: "%1". URL: "%2". 오류: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" URL 배포에서 오류 메시지를 수신했습니다. 토렌트: "%1". URL: "%2". 메시지: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" IP에서 성공적으로 수신 대기 중입니다. IP: "%1". 포트: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" IP 수신에 실패했습니다. IP: "%1" 포트: %2/%3. 원인: "%4" - + Detected external IP. IP: "%1" 외부 IP를 감지했습니다. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" 오류: 내부 경고 대기열이 가득 차서 경고가 삭제되었습니다. 성능이 저하될 수 있습니다. 삭제된 경고 유형: "%1". 메시지: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" 토렌트를 성공적으로 이동했습니다. 토렌트: "%1". 대상: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" 토렌트를 이동하지 못했습니다. 토렌트: "%1". 소스: "%2". 대상: %3. 원인: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - 작업 중단됨 - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - 새 토렌트 파일을 만들지 못했습니다. 원인: %1. + + Failed to start seeding. + 배포하지 못했습니다. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - 작업 중단됨 + 작업 중단됨 + + Create new torrent file failed. Reason: %1. - 새 토렌트 파일을 만들지 못했습니다. 원인: %1. + 새 토렌트 파일을 만들지 못했습니다. 원인: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 "%2" 토렌트에 "%1" 피어를 추가하지 못했습니다. 원인: %3 - + Peer "%1" is added to torrent "%2" "%1" 피어를 "%2" 토렌트에 추가했습니다 - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. 예기치 않은 데이터가 감지되었습니다. 토렌트: %1. 데이터: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. 파일에 쓸 수 없습니다. 원인: %1. 토렌트는 이제 "올려주기 전용" 모드입니다. - + Download first and last piece first: %1, torrent: '%2' 처음과 마지막 조각 먼저 내려받기: %1, 토렌트: '%2' - + On 켜기 - + Off 끄기 - + + Failed to reload torrent. Torrent: %1. Reason: %2 + 토렌트를 다시 불러오지 못했습니다. 토렌트: "%1". 사유: "%2" + + + Generate resume data failed. Torrent: "%1". Reason: "%2" 이어받기 데이터를 생성하지 못했습니다. 토렌트: "%1". 원인: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" 토렌트를 복원하지 못했습니다. 파일이 이동했거나 저장소에 접속할 수 없습니다. 토렌트: %1. 원인: %2 - + Missing metadata 누락된 메타데이터 - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" 파일 이름 바꾸기 실패. 토렌트: "%1". 파일: "%2", 원인: "%3" - + Performance alert: %1. More info: %2 성능 경고: %1. 추가 정보: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' 매개변수 '%1'은(는) '%1=%2' 구문을 따라야 합니다 - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' 매개변수 '%1'은(는) '%1=%2' 구문을 따라야 합니다 - + Expected integer number in environment variable '%1', but got '%2' 환경 변수 '%1'에 정수가 있어야 하지만 '%2'(이)가 있습니다 - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - 매개변수 '%1'은(는) '%1=%2' 구문을 따라야 합니다 + 매개변수 '%1'은(는) '%1=%2' 구문을 따라야 합니다 - + Expected %1 in environment variable '%2', but got '%3' 환경 변수 '%1'에 '%2'가 있어야 하지만 '%3'(이)가 있습니다 - - + + %1 must specify a valid port (1 to 65535). %1은 타당한 포트 번호여야 합니다(1 ~ 65535). - + Usage: 사용법: - + [options] [(<filename> | <url>)...] [옵션] [(<filename> | <url>)...] - + Options: 옵션: - + Display program version and exit 프로그램 버전을 표시 후 종료 - + Display this help message and exit 이 도움말 메시지를 표시하고 종료 - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + 매개변수 '%1'은(는) '%1=%2' 구문을 따라야 합니다 + + + + Confirm the legal notice + 법적 고지 확인 + + + + port 포트 - - Change the Web UI port - 웹 UI 포트 바꾸기 + + Change the WebUI port + WebUI 포트 변경하기 - + Change the torrenting port 토렌트 중인 포트 변경 - + Disable splash screen 시작 화면 비활성화 - + Run in daemon-mode (background) 데몬 모드로 실행 (백그라운드) - + dir Use appropriate short form or abbreviation of "directory" 폴더 - + Store configuration files in <dir> <dir>에 구성 파일 저장 - - + + name 이름 - + Store configuration files in directories qBittorrent_<name> qBittorrent_<name> 폴더에 구성 파일 저장 - + Hack into libtorrent fastresume files and make file paths relative to the profile directory libtorrent Fastresume 파일을 해킹하여 프로필 디렉터리를 기준으로 파일 경로를 만듭니다. - + files or URLs 파일 또는 URL - + Download the torrents passed by the user 사용자가 건넨 토렌트 내려받기 - + Options when adding new torrents: 새 토렌트를 추가 할 때 옵션: - + path 경로 - + Torrent save path 토렌트 저장 경로 - + + Add torrents as running or stopped + + + Add torrents as started or paused - 시작 또는 일시정지된 토렌트 추가 + 시작 또는 일시정지된 토렌트 추가 - + Skip hash check 해시 검사 건너뛰기 - + Assign torrents to category. If the category doesn't exist, it will be created. 범주에 토렌트를 할당합니다. 범주가 존재하지 않으면 만들어집니다. - + Download files in sequential order 순차적으로 파일 내려받기 - + Download first and last pieces first 처음과 마지막 조각 먼저 내려받기 - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. 토렌트를 추가할 때 "새 토렌트 추가" 창을 열 것인지 지정합니다. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: 옵션 값은 환경 변수로 제공될 수 있습니다. 'parameter-name'이라는 옵션의 경우 환경 변수 이름은 'QBT_PARAMETER_NAME'(대문자의 경우 '-'는 '_'로 대체)입니다. 플래그 값을 전달하려면 변수를 '1' 또는 'TRUE'로 설정하십시오. 다음은 시작 화면 사용을 중지하는 예시입니다: - + Command line parameters take precedence over environment variables 명령줄 매개 변수는 환경 변수보다 우선됩니다 - + Help 도움말 @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories 범주 - + All 전체 - + Uncategorized 범주 없음 @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - 토렌트 이어받기 + Start torrents + + Stop torrents + + + + Resume torrents + 토렌트 이어받기 + + Pause torrents - 토렌트 일시정지 + 토렌트 일시정지 @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... 편집... - + Reset 초기화 + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 사용자 지정 테마 스타일 시트를 불러오지 못했습니다. %1 - + Failed to load custom theme colors. %1 사용자 지정 테마 색상을 불러오지 못했습니다. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 기본 테마 색상을 불러오지 못했습니다. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - 또한 파일을 영구적으로 삭제합니다 + 또한 파일을 영구적으로 삭제합니다 - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? 전송 목록에서 '%1'을(를) 제거하시겠습니까? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? 전송 목록에서 이 %1 토렌트를 제거하시겠습니까? - + Remove 제거 @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also URL에서 내려받기 - + Add torrent links 토렌트 링크 추가 - + One link per line (HTTP links, Magnet links and info-hashes are supported) 한 줄에 링크 하나 (HTTP 링크, 마그넷 링크, 정보 해시 지원) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 내려받기 - + No URL entered 입력한 URL 없음 - + Please type at least one URL. 적어도 URL 하나를 입력하세요. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 분석 오류: 해당 필터 파일은 유효한 PeerGuardian P2B 파일이 아닙니다. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + 토렌트 내려받는 중... 소스 : "%1" - Trackers cannot be merged because it is a private torrent - + 비공개 토렌트이기 때문에 트래커를 병합할 수 없음 - + Torrent is already present - 토렌트가 이미 존재합니다 + 토렌트가 이미 존재합니다 + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - '%1' 토렌트가 이미 전송 목록에 있습니다. 새 소스의 트래커를 병합하시겠습니까? + '%1' 토렌트가 이미 전송 목록에 있습니다. 새 소스의 트래커를 병합하시겠습니까? GeoIPDatabase - - + + Unsupported database file size. 지원하지 않는 데이터베이스 파일 크기. - + Metadata error: '%1' entry not found. 메타데이터 오류: '%1' 항목을 찾을 수 없습니다. - + Metadata error: '%1' entry has invalid type. 메타데이터 오류: '%1' 항목에 잘못된 형식이 있습니다. - + Unsupported database version: %1.%2 지원되지 않는 데이터베이스 버전: %1.%2 - + Unsupported IP version: %1 지원되지 않는 IP 버전: %1 - + Unsupported record size: %1 지원하지 않는 레코드 크기: %1 - + Database corrupted: no data section found. 손상된 데이터베이스: 데이터 섹션이 없습니다. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP 요청 크기 제한을 초과하여 소켓을 닫는 중입니다. 제한: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" 잘못된 Http 요청 방법, 소켓을 닫는 중입니다. IP: %1. 방법: "%2" - + Bad Http request, closing socket. IP: %1 잘못된 HTTP 요청으로 인해 소켓을 닫는 중입니다. IP: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... 찾아보기... - + Reset 초기화 - + Select icon 아이콘 선택 - + Supported image files 지원되는 이미지 파일 + + LegalNotice + + + Legal Notice + 이용 약관 + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent는 파일 공유 프로그램입니다. 토렌트를 실행하면 올려주기를 통해 해당 데이터를 다른 사람이 사용할 수 있습니다. 당신이 공유하는 모든 콘텐츠는 전적으로 당신의 책임입니다. + + + + No further notices will be issued. + 더 이상 알리지 않습니다. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + 법적 고지를 읽은 후에는 명령줄 옵션 `--confirm-legal-notice` 을 사용하여 이 메시지를 숨길 수 있습니다. + + + + Press 'Enter' key to continue... + 계속하려면 'Enter' 키를 입력하세요... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 차단됨. 원인: %2. - + %1 was banned 0.0.0.0 was banned %1 차단됨 @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1은 알 수 없는 명령줄 매개변수입니다. - - + + %1 must be the single command line parameter. %1은 단일 명령줄 매개변수여야 합니다. - - You cannot use %1: qBittorrent is already running for this user. - %1을 사용할 수 없음: 이 사용자에 대해 qBittorrent를 실행하고 있습니다. - - - + Run application with -h option to read about command line parameters. - 명령줄 매개변수에 대해 읽으려면 -h 옵션을 사용하여 응용 프로그램을 실행합니다. + 명령줄 매개변수에 대해 읽으려면 -h 옵션을 사용하여 앱을 실행합니다. - + Bad command line 잘못된 명령줄 - + Bad command line: 잘못된 명령줄: - + An unrecoverable error occurred. - + 복구할 수 없는 오류가 발생했습니다. - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent에 복구할 수 없는 오류가 발생했습니다. - - Legal Notice - 법적 공지 - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent는 파일 공유 프로그램입니다. 토렌트를 실행하면 올려주기를 통해 해당 데이터를 다른 사람이 사용할 수 있습니다. 당신이 공유하는 모든 콘텐츠는 전적으로 당신의 책임입니다. - - - - No further notices will be issued. - 더 이상 알리지 않습니다. - - - - Press %1 key to accept and continue... - %1 키를 눌러 수락 후 계속… - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent는 파일 공유 프로그램입니다. 토렌트를 실행하면 올려주기를 통해 해당 데이터를 다른 사람이 사용할 수 있습니다. 당신이 공유하는 모든 콘텐츠는 전적으로 당신의 책임입니다. - -더 이상 이 알림을 표시하지 않습니다. + + You cannot use %1: qBittorrent is already running. + %1를 사용할 수 없습니다: qBittorrent가 이미 실행 중입니다. - - Legal notice - 법적 공지 + + Another qBittorrent instance is already running. + 다른 qBittorrent 인스턴스가 이미 실행 중입니다. - - Cancel - 취소 + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + 예기치 못한 qBittorrent 인스턴스가 발견되었습니다. 이 인스턴스를 종료합니다. 현재 프로세스 ID: %1. - - I Agree - 동의 + + Error when daemonizing. Reason: "%1". Error code: %2. + 데몬화에 오류가 발생했습니다. 사유: "%1". 오류 코드: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. 편집(&E) - + &Tools 도구(&T) - + &File 파일(&F) - + &Help 도움말(&H) - + On Downloads &Done 내려받기 완료 후(&D) - + &View 보기(&V) - + &Options... 옵션(&O)… - &Resume - 이어받기(&R) + 이어받기(&R) - + &Remove 제거(&R) - + Torrent &Creator 토렌트 생성기(&C) - - + + Alternative Speed Limits 대체 속도 제한 - + &Top Toolbar 기본 도구 모음(&T) - + Display Top Toolbar 기본 도구 모음 표시 - + Status &Bar 상태 표시줄(&B) - + Filters Sidebar 필터 사이드바 - + S&peed in Title Bar 제목 표시줄에 속도 표시(&P) - + Show Transfer Speed in Title Bar 제목 표시줄에 전송 속도 표시 - + &RSS Reader RSS 리더(&R) - + Search &Engine 검색 엔진(&E) - + L&ock qBittorrent qBittorrent 잠금(&O) - + Do&nate! 기부(&N) - + + Sh&utdown System + + + + &Do nothing 아무것도 안 함(&D) - + Close Window 창 닫기 - R&esume All - 모두 이어받기(&E) + 모두 이어받기(&E) - + Manage Cookies... 쿠키 관리… - + Manage stored network cookies 저장된 쿠키 관리 - + Normal Messages 일반 메시지 - + Information Messages 정보 메시지 - + Warning Messages 경고 메시지 - + Critical Messages 중요 메시지 - + &Log 로그(&L) - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... 전역 속도 제한 설정… - + Bottom of Queue 대기열 맨 아래 - + Move to the bottom of the queue 대기열 맨 아래로 이동 - + Top of Queue 대기열 맨 위 - + Move to the top of the queue 대기열 맨 위로 이동 - + Move Down Queue 대기열 아래로 이동 - + Move down in the queue 대기열에서 아래로 이동 - + Move Up Queue 대기열 위로 이동 - + Move up in the queue 대기열에서 위로 이동 - + &Exit qBittorrent qBittorrent 종료(&E) - + &Suspend System 시스템 절전모드(&S) - + &Hibernate System 시스템 최대 절전모드(&H) - S&hutdown System - 시스템 전원 끄기(&H) + 시스템 전원 끄기(&H) - + &Statistics 통계(&S) - + Check for Updates 업데이트 확인 - + Check for Program Updates 프로그램 업데이트 확인 - + &About 정보(&A) - &Pause - 일시정지(&P) + 일시정지(&P) - P&ause All - 모두 일시정지(&A) + 모두 일시정지(&A) - + &Add Torrent File... 토렌트 파일 추가(&A)… - + Open 열기 - + E&xit 종료(&X) - + Open URL URL 열기 - + &Documentation 문서(&D) - + Lock 잠금 - - - + + + Show 표시 - + Check for program updates 프로그램 업데이트 확인 - + Add Torrent &Link... 토렌트 링크 추가(&L)… - + If you like qBittorrent, please donate! qBittorrent가 마음에 든다면 기부하세요! - - + + Execution Log 실행 로그 - + Clear the password 암호 지우기 - + &Set Password 암호 설정(&S) - + Preferences 환경설정 - + &Clear Password 암호 지우기(&C) - + Transfers 전송 - - + + qBittorrent is minimized to tray 알림 영역으로 최소화 - - - + + + This behavior can be changed in the settings. You won't be reminded again. 이 동작은 설정에서 변경할 수 있으며 다시 알리지 않습니다. - + Icons Only 아이콘만 - + Text Only 이름만 - + Text Alongside Icons 아이콘 옆 이름 - + Text Under Icons 아이콘 아래 이름 - + Follow System Style 시스템 스타일에 따름 - - + + UI lock password UI 잠금 암호 - - + + Please type the UI lock password: UI 잠금 암호를 입력하십시오: - + Are you sure you want to clear the password? 암호를 지우시겠습니까? - + Use regular expressions 정규표현식 사용 - - Search - 검색 + + + Search Engine + 검색 엔진 - - Transfers (%1) - 전송 (%1) + + Search has failed + 검색이 실패했습니다 - Recursive download confirmation - 반복적으로 내려받기 확인 + + Search has finished + 검색이 완료되었습니다 - Never - 절대 안함 + + Search + 검색 + + + + Transfers (%1) + 전송 (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent가 방금 업데이트되었으며 변경 사항을 적용하려면 다시 시작해야 합니다. - + qBittorrent is closed to tray 종료하지 않고 알림 영역으로 최소화 - + Some files are currently transferring. 현재 파일 전송 중입니다. - + Are you sure you want to quit qBittorrent? qBittorrent를 종료하시겠습니까? - + &No 아니요(&N) - + &Yes 예(&Y) - + &Always Yes 항상 예(&A) - + Options saved. 옵션이 저장되었습니다. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime - Python 런타임 누락 + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D : %1, U : %2] %3 - + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Python 런타임 누락 + + + qBittorrent Update Available qBittorrent 업데이트 사용 가능 - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? 검색 엔진을 사용하기 위해서는 Python이 필요하지만 설치되지 않은 것 같습니다. 지금 설치하시겠습니까? - + Python is required to use the search engine but it does not seem to be installed. 검색 엔진을 사용하기 위해서는 Python이 필요하지만 설치되지 않은 것 같습니다. - - + + Old Python Runtime 오래된 Python 런타임 - + A new version is available. 새 버전을 사용할 수 있습니다. - + Do you want to download %1? %1을(를) 내려받기하시겠습니까? - + Open changelog... 변경 내역 열기… - + No updates available. You are already using the latest version. 사용 가능한 업데이트가 없습니다. 이미 최신 버전을 사용하고 있습니다. - + &Check for Updates 업데이트 확인(&C) - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Python 버전(%1)이 오래되었습니다. 최소 요구 사항: %2. 지금 최신 버전을 설치하시겠습니까? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Python 버전(%1)이 오래되었습니다. 검색 엔진을 사용하려면 최신 버전으로 업그레이드하십시오. 최소 요구 사항: %2. - + + Paused + 일시정지됨 + + + Checking for Updates... 업데이트 확인 중… - + Already checking for program updates in the background 이미 백그라운드에서 프로그램 업데이트를 확인 중입니다 - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error 내려받기 오류 - Python setup could not be downloaded, reason: %1. Please install it manually. - Python 설치 파일을 내려받을 수 없습니다. 원인: %1. + Python 설치 파일을 내려받을 수 없습니다. 원인: %1. 직접 설치하십시오. - - + + Invalid password 잘못된 암호 - + Filter torrents... 토렌트 필터링... - + Filter by: 필터링 기준: - + The password must be at least 3 characters long 비밀번호는 3자 이상이어야 합니다 - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - 토렌트 '%1'에 .torrent 파일이 포함되어 있습니다. 내려받기를 계속하시겠습니까? - - - + The password is invalid 암호가 올바르지 않습니다 - + DL speed: %1 e.g: Download speed: 10 KiB/s DL 속도: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s UP 속도: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide 숨김 - + Exiting qBittorrent qBittorrent 종료 중 - + Open Torrent Files 토렌트 파일 열기 - + Torrent Files 토렌트 파일 @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O 오류: %1 - + The file size (%1) exceeds the download limit (%2) 파일 크기(%1)가 내려받기 제한(%2)을 초과했습니다 - + Exceeded max redirections (%1) 최대 재전송 초과 (%1) - + Redirected to magnet URI 마그넷 URI로 재전송됨 - + The remote host name was not found (invalid hostname) 원격 호스트 이름을 찾을 수 없습니다 (잘못된 호스트 이름) - + The operation was canceled 작업이 취소되었습니다 - + The remote server closed the connection prematurely, before the entire reply was received and processed 원격 서버가 전체 응답을 수신하고 처리하기 전에 연결을 조기에 종료했습니다 - + The connection to the remote server timed out 원격 서버에 대한 연결 시간이 초과되었습니다 - + SSL/TLS handshake failed SSL/TLS 핸드셰이크 실패함 - + The remote server refused the connection 원격 서버에서 연결을 거부했습니다 - + The connection to the proxy server was refused 프록시 서버에 연결이 거부되었습니다 - + The proxy server closed the connection prematurely 프록시 서버가 연결을 조기에 닫았습니다 - + The proxy host name was not found 프록시 호스트 이름을 찾을 수 없습니다 - + The connection to the proxy timed out or the proxy did not reply in time to the request sent 프록시 연결 시간이 초과되었거나 프록시가 전송된 요청에 제시간에 응답하지 않았습니다 - + The proxy requires authentication in order to honor the request but did not accept any credentials offered 프록시가 요청을 처리하기 위해 인증이 필요하지만 제공된 자격 증명을 수락하지 않았습니다 - + The access to the remote content was denied (401) 원격 콘텐츠에 대한 액세스가 거부되었습니다 (401) - + The operation requested on the remote content is not permitted 원격 콘텐츠에 요청된 작업은 허용되지 않습니다 - + The remote content was not found at the server (404) 서버에서 원격 콘텐츠를 찾을 수 없습니다 (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted 원격 서버에서 콘텐츠를 제공하기 위해 인증이 필요하지만 제공된 자격 증명이 수락되지 않았습니다 - + The Network Access API cannot honor the request because the protocol is not known 프로토콜을 알 수 없으므로 네트워크 액세스 API가 요청을 처리할 수 없습니다 - + The requested operation is invalid for this protocol 요청한 작업이 이 프로토콜에 유효하지 않습니다 - + An unknown network-related error was detected 알 수 없는 네트워크 관련 오류가 감지되었습니다 - + An unknown proxy-related error was detected 알 수 없는 프록시 관련 오류가 감지되었습니다 - + An unknown error related to the remote content was detected 원격 콘텐츠와 관련된 알 수 없는 오류가 감지되었습니다 - + A breakdown in protocol was detected 프로토콜의 오작동이 감지되었습니다 - + Unknown error 알 수 없는 오류 @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSL 오류 무시: URL: "%1", 오류: "%2" @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - 웹 UI + 웹 UI - + Advanced 고급 - + Customize UI Theme... UI 테마 사용자 정의... - + Transfer List 전송 목록 - + Confirm when deleting torrents 토렌트를 삭제할 때 확인 - Shows a confirmation dialog upon pausing/resuming all the torrents - 모든 토렌트를 일시정지/이어받기할 때 확인 대화상자를 표시합니다 + 모든 토렌트를 일시정지/이어받기할 때 확인 대화상자를 표시합니다 - Confirm "Pause/Resume all" actions - '모두 일시정지/이어받기' 작업 확인 + '모두 일시정지/이어받기' 작업 확인 - + Use alternating row colors In table elements, every other row will have a grey background. 행 색상 번갈아 사용 - + Hide zero and infinity values 0 및 무한대 값 숨김 - + Always 항상 - Paused torrents only - 일시정지한 토렌트만 + 일시정지한 토렌트만 - + Action on double-click 두 번 클릭 동작 - + Downloading torrents: 내려받는 중인 토렌트: - - Start / Stop Torrent - 토렌트 시작/중지 + 토렌트 시작/중지 - - + + Open destination folder 대상 폴더 열기 - - + + No action 동작 없음 - + Completed torrents: 내려받기 완료된 토렌트: - + Auto hide zero status filters 0 상태 필터 자동 숨기기 - + Desktop 바탕 화면 - + Start qBittorrent on Windows start up Windows 시작 시 qBittorrent 시작 - + Show splash screen on start up 시작할 때 시작 화면 표시 - + Confirmation on exit when torrents are active 토렌트 사용 중이면 종료할 때 확인 - + Confirmation on auto-exit when downloads finish 내려받기가 완료되면 자동 종료 시 확인 - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>qBittorrent를 .torrent 파일 및/또는 자석 링크에 대한 기본 프로그램으로 설정하려면 <span style=" font-weight:600;">제어판</span>에서 <span style=" font-weight:600;">기본 프로그램</span> 대화 상자를 사용할 수 있습니다.</p></body></html> - + KiB KiB - + Torrent content layout: 토렌트 내용 배치: - + Original 원본 - + Create subfolder 하위 폴더 만들기 - + Don't create subfolder 하위 폴더 만들지 않기 - + The torrent will be added to the top of the download queue - 토렌트가 다운로드 대기열의 맨 위에 추가됩니다 + 토렌트가 내려받기 대기열의 맨 위에 추가됩니다 - + Add to top of queue The torrent will be added to the top of the download queue 대기열 맨 위에 추가 - + When duplicate torrent is being added 중복 토렌트가 추가되는 경우 - + Merge trackers to existing torrent 트래커를 기존 토렌트에 병합 - + + Keep unselected files in ".unwanted" folder + 선택하지 않은 파일을 ".unwanted" 폴더에 보관하기 + + + Add... 추가… - + Options.. 옵션… - + Remove 제거 - + Email notification &upon download completion 내려받기가 완료되면 이메일로 알림(&U) - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: 피어 연결 프로토콜: - + Any 전체 - + I2P (experimental) I2P (실험적) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>&quot;혼합 모드&quot;를 활성화하면 I2P 토렌트는 트래커가 아닌 다른 소스에서 피어를 가져올 수 있으며 익명화를 제공하지 않고 일반 IP에 연결할 수 있습니다. 이 모드는 사용자가 I2P 익명화에는 관심이 없지만 I2P 피어에 연결할 수 있기를 원하는 경우에 유용할 수 있습니다.</p></body></html> + <html><head/><body><p>&quot;혼합 모드&quot;를 활성화하면 I2P 토렌트는 트래커가 아닌 다른 소스에서 피어를 가져올 수 있으며 익명화를 제공하지 않고 일반 IP에 연결할 수 있습니다. 이 모드는 사용자가 I2P 익명화에는 관심이 없지만 I2P 피어에 연결할 수 있기를 원하는 경우에 유용할 수 있습니다.</p></body></html> - + Mixed mode 혼합 모드 - + Some options are incompatible with the chosen proxy type! 일부 옵션은 선택한 프록시 유형과 호환되지 않습니다! - + If checked, hostname lookups are done via the proxy 체크하면, 프록시를 통해 호스트 이름 조회가 수행됩니다 - + Perform hostname lookup via proxy 프록시를 통한 호스트 이름 조회 수행 - + Use proxy for BitTorrent purposes BitTorrent 용도로 프록시 사용 - + RSS feeds will use proxy RSS 피드는 프록시를 사용합니다 - + Use proxy for RSS purposes RSS 용도로 프록시 사용 - + Search engine, software updates or anything else will use proxy 검색 엔진, 소프트웨어 업데이트 또는 기타 모든 항목은 프록시를 사용합니다 - + Use proxy for general purposes 일반적인 용도로 프록시 사용 - + IP Fi&ltering IP 필터링(&l) - + Schedule &the use of alternative rate limits 대체 속도 제한 사용 예정(&T) - + From: From start time 발신: - + To: To end time 수신: - + Find peers on the DHT network DHT 네트워크에서 피어를 찾습니다 - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption 암호화 비활성화: 프로토콜 암호화 없이 피어에만 연결 - + Allow encryption 암호화 허용 - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">더 많은 정보</a>) - + Maximum active checking torrents: 최대 활성 확인 토렌트: - + &Torrent Queueing 토렌트 대기열(&T) - + When total seeding time reaches 총 시딩 시간에 도달한 경우 - + When inactive seeding time reaches 비활성 시딩 시간에 도달한 경우 - A&utomatically add these trackers to new downloads: - 새 내려받기에 자동 추가할 트래커(&U): + 새 내려받기에 자동 추가할 트래커(&U): - + RSS Reader RSS 리더 - + Enable fetching RSS feeds RSS 피드 가져오기 활성화 - + Feeds refresh interval: 피드 갱신 간격: - + + Same host request delay: + 동일 호스트 요청 지연 시간: + + + Maximum number of articles per feed: 피드당 최대 규약 수: - - - + + + min minutes - + Seeding Limits 배포 제한 - Pause torrent - 토렌트 일시정지 + 토렌트 일시정지 - + Remove torrent 토렌트 제거 - + Remove torrent and its files 토렌트 및 파일 제거 - + Enable super seeding for torrent 토렌트에 대해 초도 배포 활성화 - + When ratio reaches 비율에 도달했을 때 - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS 토렌트 자동 내려받기 도구 - + Enable auto downloading of RSS torrents RSS 자동 내려받기 활성화 - + Edit auto downloading rules... 자동 내려받기 규칙 편집… - + RSS Smart Episode Filter RSS 스마트 에피소드 필터 - + Download REPACK/PROPER episodes REPACK/PROPER된 에피소드 내려받기 - + Filters: 필터: - + Web User Interface (Remote control) 웹 인터페이스 (원격 제어) - + IP address: IP 주소: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ IPv4나 IPV6 주소를 지정하십시오. IPv4 주소에 "0.0.0.0"을 또는 IPV4/IPv6 모두 "*"를 지정할 수 있습니다. - + Ban client after consecutive failures: 클라이언트를 차단할 연속 시도 횟수: - + Never 절대 안함 - + ban for: 차단할 시간: - + Session timeout: 세션 만료 시간: - + Disabled 비활성화됨 - Enable cookie Secure flag (requires HTTPS) - 쿠키 보안 플래그 활성화 (HTTPS 필요) + 쿠키 보안 플래그 활성화 (HTTPS 필요) - + Server domains: 서버 도메인: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ DNS 재결합 공격을 방어하기 위해 ';'를 사용해서 항목을 구분하며 와일드카드 '*'를 사용할 수 있습니다. - + &Use HTTPS instead of HTTP HTTP 대신 HTTPS 사용(&U) - + Bypass authentication for clients on localhost localhost의 클라이언트에 대한 인증 우회 - + Bypass authentication for clients in whitelisted IP subnets 허용 목록에 있는 IP 서브넷의 클라이언트에 대한 인증 우회 - + IP subnet whitelist... IP 서브넷 허용 목록… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. 전달된 클라이언트 주소(X-Forwarded-헤더의 경우)를 사용하려면 역방향 프록시 IP(또는 서브넷, 예: 0.0.0.0/24)를 지정합니다. 여러 항목을 분할하려면 ';'를 사용하십시오. - + Upda&te my dynamic domain name 내 동적 도메인 이름 업데이트(&T) - + Minimize qBittorrent to notification area 알림 영역으로 최소화 - + + Search + 검색 + + + + WebUI + + + + Interface 인터페이스 - + Language: 언어: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: 알림 영역 아이콘: - - + + Normal 보통 - + File association 파일 연계 - + Use qBittorrent for .torrent files .torrent 파일에 qBittorrent 사용 - + Use qBittorrent for magnet links 마그넷 링크에 qBittorrent 사용 - + Check for program updates 프로그램 업데이트 확인 - + Power Management 전원 관리 - + + &Log Files + + + + Save path: 저장 경로: - + Backup the log file after: 백업할 로그 파일 크기: - + Delete backup logs older than: 다음 기간보다 오래된 백업 로그 삭제: - + + Show external IP in status bar + + + + When adding a torrent 토렌트를 추가할 때 - + Bring torrent dialog to the front 토렌트 창을 맨 앞으로 가져오기 - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled 또한 추가가 취소된 .torrent 파일을 삭제합니다 - + Also when addition is cancelled 또한 추가가 취소된 경우에도 삭제 - + Warning! Data loss possible! 경고! 데이터를 잃을 수 있습니다! - + Saving Management 저장 관리 - + Default Torrent Management Mode: 기본 토렌트 관리 모드: - + Manual 수동 - + Automatic 자동 - + When Torrent Category changed: 토렌트 범주가 바뀌었을 때: - + Relocate torrent 토렌트 위치 이동 - + Switch torrent to Manual Mode 토렌트를 수동 모드로 전환 - - + + Relocate affected torrents 영향 받는 토렌트 이동 - - + + Switch affected torrents to Manual Mode 영향 받는 토렌트를 수동 모드로 전환 - + Use Subcategories 하위 범주 사용 - + Default Save Path: 기본 저장 경로: - + Copy .torrent files to: .torrent 파일을 복사할 경로: - + Show &qBittorrent in notification area 알림 영역에 qBittorrent 아이콘 표시(&Q) - &Log file - 로그 파일(&L) + 로그 파일(&L) - + Display &torrent content and some options 토렌트 내용 및 일부 옵션 표시(&T) - + De&lete .torrent files afterwards - 내려받은 후 .torrent 파일 삭제(&L) + 완료 후 .torrent 파일 삭제(&L) - + Copy .torrent files for finished downloads to: - 내려받기 완료된 .torrent 파일을 복사할 경로: + 다운로드 완료된 .torrent 파일을 복사할 경로: - + Pre-allocate disk space for all files 모든 파일에 디스크 공간 미리 할당 - + Use custom UI Theme 사용자 지정 UI 테마 사용 - + UI Theme file: UI 테마 파일: - + Changing Interface settings requires application restart - 인터페이스 설정을 변경하려면 응용 프로그램을 다시 시작해야 합니다 + 인터페이스 설정을 변경하려면 앱을 다시 시작해야 합니다 - + Shows a confirmation dialog upon torrent deletion 토렌트를 삭제할 때 확인 대화상자 표시 - - + + Preview file, otherwise open destination folder 파일 미리보기, 그렇지 않으면 대상 폴더 열기 - - Show torrent options - 토렌트 옵션 표시 + 토렌트 옵션 표시 - + Shows a confirmation dialog when exiting with active torrents 사용 중인 토렌트가 있을 때 확인 대화상자 표시 - + When minimizing, the main window is closed and must be reopened from the systray icon 최소화할 때 메인 창이 닫히고 시스템 알림 영역에서 다시 열어야 합니다. - + The systray icon will still be visible when closing the main window 메인 창을 닫을 때 시스템 알림 영역 아이콘을 표시합니다. - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window 닫을 때 알림 영역으로 최소화 - + Monochrome (for dark theme) 단색(어두운 테마용) - + Monochrome (for light theme) 단색(밝은 테마용) - + Inhibit system sleep when torrents are downloading 토렌트 내려받는 중에 시스템 휴면모드 억제 - + Inhibit system sleep when torrents are seeding 토렌트를 배포하고 있을 때 시스템 휴면모드 억제 - + Creates an additional log file after the log file reaches the specified file size 로그 파일이 지정된 파일 크기에 도달한 후 추가 로그 파일을 만듭니다 - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings 성능 경고 로그 - The torrent will be added to download list in a paused state - 일시정지된 상태에서 토렌트가 내려받기 목록에 추가됩니다 + 일시정지된 상태에서 토렌트가 내려받기 목록에 추가됩니다 - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state 자동으로 내려받지 않음 - + Whether the .torrent file should be deleted after adding it .torrent 파일을 추가한 후 삭제할지 여부 - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. 조각화를 최소화하기 위해 내려받기를 시작하기 전에 디스크에 전체 파일 크기를 할당합니다. HDD에만 유용합니다. - + Append .!qB extension to incomplete files 내려받기 중인 파일에 .!qB 확장자 덧붙이기 - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it 토렌트가 내려받기되면, 그 안에 있는 .torrent 파일에서 토렌트를 추가하도록 제안합니다 - + Enable recursive download dialog 반복적으로 내려받기 창 활성화 - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually 자동: 여러 토렌트 속성(예: 저장 경로)은 관련 범주에 따라 결정됩니다 수동: 여러 토렌트 속성(예: 저장 경로)을 수동으로 할당해야 합니다 - + When Default Save/Incomplete Path changed: 기본 저장/불완전 경로가 변경된 경우: - + When Category Save Path changed: 범주 저장 경로가 바뀌었을 때: - + Use Category paths in Manual Mode 수동 모드에서 범주 경로 사용 - + Resolve relative Save Path against appropriate Category path instead of Default one 기본 경로 대신 적절한 범주 경로에 대해 상대 저장 경로를 확인합니다 - + Use icons from system theme 시스템 테마의 아이콘 사용 - + Window state on start up: 시작 시 창 상태: - + qBittorrent window state on start up 시작 시 qBittorrent 창 상태 - + Torrent stop condition: 토렌트 중지 조건: - - + + None 없음 - - + + Metadata received 수신된 메타데이터 - - + + Files checked 파일 확인됨 - + Ask for merging trackers when torrent is being added manually 토렌트를 수동으로 추가할 때 트래커 병합 요청 - + Use another path for incomplete torrents: 불완전한 토렌트에 다른 경로 사용: - + Automatically add torrents from: 토렌트를 자동 추가할 경로: - + Excluded file names 제외된 파일 이름 - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,843 +6994,916 @@ readme.txt: 정확한 파일 이름을 필터링합니다. readme[0-9].txt: 'readme1.txt', 'readme2.txt'를 필터링하지만, 'readme10.txt'는 필터링하지 않습니다. - + Receiver 받는사람 - + To: To receiver 받는사람: - + SMTP server: SMTP 서버: - + Sender 보낸사람 - + From: From sender 보낸사람: - + This server requires a secure connection (SSL) 이 서버는 보안 연결(SSL)이 필요합니다 - - + + Authentication 인증 - - - - + + + + Username: 사용자 이름: - - - - + + + + Password: 암호: - + Run external program 외부 프로그램 실행 - Run on torrent added - 추가된 토렌트에서 실행 + 추가된 토렌트에서 실행 - Run on torrent finished - 완료된 토렌트에서 실행 + 완료된 토렌트에서 실행 - + Show console window 콘솔 창 표시 - + TCP and μTP TCP 및 μTP - + Listening Port 수신 포트 - + Port used for incoming connections: 수신 연결에 사용되는 포트: - + Set to 0 to let your system pick an unused port 시스템이 사용하지 않는 포트를 선택하도록 하려면 0으로 설정하십시오 - + Random 무작위 - + Use UPnP / NAT-PMP port forwarding from my router 라우터에서 포트 포워딩하기 위해 UPnP / NAT-PMP 사용 - + Connections Limits 연결 제한 - + Maximum number of connections per torrent: 토렌트당 최대 연결: - + Global maximum number of connections: 전역 최대 연결: - + Maximum number of upload slots per torrent: 토렌트당 최대 올려주기 슬롯: - + Global maximum number of upload slots: 전역 최대 올려주기 슬롯: - + Proxy Server 프록시 서버 - + Type: 형식: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: 호스트: - - - + + + Port: 포트: - + Otherwise, the proxy server is only used for tracker connections 설정하지 않으면 프록시 서버는 트래커 연결에만 사용됩니다. - + Use proxy for peer connections 피어 연결에 프록시 사용 - + A&uthentication 인증(&A) - + Info: The password is saved unencrypted 정보: 암호는 평문으로 저장됩니다 - + Filter path (.dat, .p2p, .p2b): 필터 경로 (.dat, .p2p, .p2b): - + Reload the filter 필터 다시 불러오기 - + Manually banned IP addresses... 직접 차단한 IP 주소… - + Apply to trackers 트래커에 적용 - + Global Rate Limits 전역 속도 제한 - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: 올려주기: - - + + Download: 내려받기: - + Alternative Rate Limits 대체 속도 제한 - + Start time 시작 시간 - + End time 종료 시간 - + When: 시기: - + Every day 매일 - + Weekdays 평일 - + Weekends 주말 - + Rate Limits Settings 속도 제한 설정 - + Apply rate limit to peers on LAN LAN 피어에 속도 제한 적용 - + Apply rate limit to transport overhead 오버헤드 전송에 속도 제한 적용 - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol μTP 프로토콜에 속도 제한 적용 - + Privacy 개인 정보 - + Enable DHT (decentralized network) to find more peers DHT(분산 네트워크)를 활성화하여 더 많은 피어 찾기 - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) 호환 BitTorrent 클라이언트(µTorrent, Vuze 등)와 피어 교환 - + Enable Peer Exchange (PeX) to find more peers 피어 교환(PeX)을 활성화하여 더 많은 피어 찾기 - + Look for peers on your local network 로컬 네트워크 피어 찾기 - + Enable Local Peer Discovery to find more peers 로컬 피어 찾기를 활성화해서 더 많은 피어 찾기 - + Encryption mode: 암호화 모드: - + Require encryption 암호화 필요 - + Disable encryption 암호화 비활성화 - + Enable when using a proxy or a VPN connection 프록시나 VPN 연결을 이용할 때 활성화 - + Enable anonymous mode 익명 모드 활성화 - + Maximum active downloads: 최대 내려받기: - + Maximum active uploads: 최대 올려주기: - + Maximum active torrents: 최대 활성 토렌트: - + Do not count slow torrents in these limits 이 제한에 느린 토렌트는 계산하지 않음 - + Upload rate threshold: 올려주기 속도 임계값: - + Download rate threshold: 내려받기 속도 임계값: - - - + + + + sec seconds - + Torrent inactivity timer: 토렌트 비활성 타이머: - + then 제한 조치: - + Use UPnP / NAT-PMP to forward the port from my router 라우터에서 포트 포워딩하기 위해 UPnP / NAT-PMP 사용 - + Certificate: 인증서: - + Key: 키: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>인증서 정보</a> - + Change current password 현재 암호 바꾸기 - Use alternative Web UI - 대체 웹 UI 사용 + 대체 웹 UI 사용 - + Files location: 파일 위치: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security 보안 - + Enable clickjacking protection 클릭 가로채기 방지 활성화 - + Enable Cross-Site Request Forgery (CSRF) protection 사이트 간 요청 위조(CSRF) 보호 활성화 - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation 호스트 헤더 유효성 검사 활성화 - + Add custom HTTP headers 사용자 지정 HTTP 헤더 추가 - + Header: value pairs, one per line 헤더: 값, 한 줄에 하나 - + Enable reverse proxy support 역방향 프록시 지원 활성화 - + Trusted proxies list: 신뢰할 수 있는 프록시 목록: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: 서비스: - + Register 등록 - + Domain name: 도메인 이름: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! 이 옵션으로 .torrent 파일을 <strong>복구 불가능하게 제거</strong>할 수 있습니다! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog 두 번째 옵션을 활성화하도록 설정하면(&ldquo;또한 추가가 취소된 경우에도&rdquo;) &ldquo;토렌트 추가&rdquo; 대화상자에서 &ldquo;<strong>취소</strong>&rdquo; 버튼을 누르면 .torrent 파일이 <strong>삭제</strong>됩니다 - + Select qBittorrent UI Theme file qBittorrent UI 테마 파일 선택 - + Choose Alternative UI files location 대체 UI 파일 위치 선정 - + Supported parameters (case sensitive): 지원 변수 (대소문자 구분): - + Minimized 최소화됨 - + Hidden 숨겨짐 - + Disabled due to failed to detect system tray presence 시스템 트레이 존재를 감지하지 못하여 비활성화됨 - + No stop condition is set. 중지 조건이 설정되지 않았습니다. - + Torrent will stop after metadata is received. 메타데이터가 수신되면 토렌트가 중지됩니다. - - Torrents that have metadata initially aren't affected. - 처음에 메타데이터가 있는 토렌트는 영향을 받지 않습니다. - - - + Torrent will stop after files are initially checked. 파일을 처음 확인한 후에는 토렌트가 중지됩니다. - + This will also download metadata if it wasn't there initially. 처음에 메타데이터가 없는 경우 메타데이터 또한 내려받기됩니다. - + %N: Torrent name %N: 토렌트 이름 - + %L: Category %L: 범주 - + %F: Content path (same as root path for multifile torrent) %F: 내용 경로 (다중 파일 토렌트의 루트 경로와 동일) - + %R: Root path (first torrent subdirectory path) %R: 루트 경로 (첫 토렌트의 하위 디렉터리 경로) - + %D: Save path %D: 저장 경로 - + %C: Number of files %C: 파일 수 - + %Z: Torrent size (bytes) %Z: 토렌트 크기 (바이트) - + %T: Current tracker %T: 현재 트래커 - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") 도움말: 텍스트가 공백에서 잘리지 않게 하려면 변수를 따옴표로 감싸십시오. (예: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (없음) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds "토렌트 비활성 시간(초)"동안 내려받기/올려주기 속도가 이 값 이하면 느린 토렌트로 간주합니다. - + Certificate 자격 증명 - + Select certificate 자격 증명 선택 - + Private key 개인 키 - + Select private key 개인 키 선택 - + + WebUI configuration failed. Reason: %1 + WebUI 구성에 실패했습니다. 원인: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor 모니터할 폴더 선택 - + Adding entry failed 항목을 추가하지 못했습니다 - - Location Error - 위치 오류 + + The WebUI username must be at least 3 characters long. + WebUI 사용자이름은 3자 이상이어야 합니다. - - The alternative Web UI files location cannot be blank. - 대체 웹 UI 파일 위치는 꼭 입력해야 합니다. + + The WebUI password must be at least 6 characters long. + WebUI 비밀번호는 6자 이상이어야 합니다. - - + + Location Error + 위치 오류 + + + + Choose export directory 내보낼 디렉터리 선정 - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well 이 옵션이 활성화되면, qBittorrent는 .torrent 파일이 내려받기 대기열에 성공적으로 추가되거나(첫 번째 옵션) 추가되지 않았을 때(두 번째 옵션) 해당 파일을 <strong>삭제</strong>합니다. 이 옵션은 &ldquo;토렌트 추가&rdquo; 메뉴를 통해 연 파일<strong>뿐만 아니라</strong> <strong>파일 유형 연계</strong>를 통해 연 파일에도 적용됩니다. - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI 테마 파일(*.qbtheme config.json) - + %G: Tags (separated by comma) %G: 태그(쉼표로 분리) - + %I: Info hash v1 (or '-' if unavailable) %J: 정보 해시 v1 (사용할 수 없는 경우 '-') - + %J: Info hash v2 (or '-' if unavailable) %J: 정보 해시 v2 (사용할 수 없는 경우 '-') - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: 토렌트 ID (v1 토렌트에 대한 sha-1 정보 해시 또는 v2/하이브리드 토렌트에 대한 몹시 생략된 sha-256 정보 해시) - - - + + + Choose a save directory 저장 디렉터리 선정 - + + Torrents that have metadata initially will be added as stopped. + 처음에 메타데이터가 포함된 토렌트는 중지된 상태로 추가 + + + Choose an IP filter file IP 필터 파일 선정 - + All supported filters 지원하는 모든 필터 - + + The alternative WebUI files location cannot be blank. + 대체 WebUI 파일 위치는 비워둘 수 없습니다. + + + Parsing error 분석 오류 - + Failed to parse the provided IP filter 제공한 IP 필터를 분석하지 못했습니다 - + Successfully refreshed 새로 고쳤습니다 - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number 제공한 IP 필터를 분석했습니다: %1개 규칙을 적용했습니다. - + Preferences 환경설정 - + Time Error 시간 오류 - + The start time and the end time can't be the same. 시작 시간과 종료 시간은 같을 수 없습니다. - - + + Length Error 길이 오류 - - - The Web UI username must be at least 3 characters long. - 웹 UI 사용자 이름은 최소 3자 이상이어야 합니다. - - - - The Web UI password must be at least 6 characters long. - 웹 UI 암호는 최소 6자 이상이어야 합니다. - PeerInfo - + Unknown 알 수 없음 - + Interested (local) and choked (peer) 관심 있음 (로컬) / 혼잡 (피어) - + Interested (local) and unchoked (peer) 관심 있음 (로컬) / 혼잡 해소됨 (피어) - + Interested (peer) and choked (local) 관심 있음 (피어) / 혼잡 (로컬) - + Interested (peer) and unchoked (local) 관심 있음 (피어) / 혼잡 해소됨 (로컬) - + Not interested (local) and unchoked (peer) 관심 없음 (로컬) / 혼잡 해소됨 (피어) - + Not interested (peer) and unchoked (local) 관심 없음 (피어) / 혼잡 해소됨 (로컬) - + Optimistic unchoke 낙관적인 혼잡 해소 - + Peer snubbed 피어 차단됨 - + Incoming connection 수신 연결 - + Peer from DHT DHT 피어 - + Peer from PEX PEX 피어 - + Peer from LSD LSD 피어 - + Encrypted traffic 암호화된 트래픽 - + Encrypted handshake 암호화된 핸드셰이크 - - + + + Peer is using NAT hole punching + + + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'를 필터링 "%1" 피어가 수동으로 차단되었습니다 - + N/A 없음 @@ -7668,7 +8080,7 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'를 필터링 추가할 피어 목록 (줄 당 IP 하나): - + Format: IPv4:port / [IPv6]:port 형식: IPv4:포트 / [IPv6]:포트 @@ -7709,27 +8121,27 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'를 필터링 PiecesBar - + Files in this piece: 이 조각의 파일: - + File in this piece: 이 조각의 파일: - + File in these pieces: 이 조각들의 파일 : - + Wait until metadata become available to see detailed information 메타데이터를 사용할 수 있을 때까지 기다린 뒤 자세한 정보를 확인하세요 - + Hold Shift key for detailed information 자세한 정보를 보려면 Shift 키를 누르십시오 @@ -7742,58 +8154,58 @@ readme[0-9].txt: 'readme1.txt', 'readme2.txt'를 필터링 검색 플러그인 - + Installed search plugins: 설치한 검색 플러그인: - + Name 이름 - + Version 버전 - + Url URL - - + + Enabled 활성화됨 - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. 경고: 검색 엔진에서 토렌트를 내려받기할 때 해당 국가의 저작권법을 준수해야 합니다. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> 여기에서 새로운 검색 엔진 플러그인을 받을 수 있습니다: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one 새 플러그인 설치 - + Check for updates 업데이트 확인 - + Close 닫기 - + Uninstall 설치 삭제 @@ -7913,17 +8325,17 @@ Those plugins were disabled. 플러그인 소스 - + Search plugin source: 검색 플러그인 소스: - + Local file 로컬 파일 - + Web link 웹 링크 @@ -7941,70 +8353,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + 전원 관리에서 적합한 D-Bus 인터페이스를 찾았습니다. 인터페이스 : %1 Power management error. Did not found suitable D-Bus interface. - + 전원 관리 오류입니다. 적합한 D-Bus 인터페이스를 찾지 못했습니다. Power management error. Action: %1. Error: %2 - + 전원 관리 오류입니다. 작업 : %1. 오류 : %2 Power management unexpected error. State: %1. Error: %2 - + 전원 관리 예기치 않은 오류가 발생했습니다. 상태 : %1. 오류 : %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: "%1" 토렌트의 다음 파일은 미리보기를 지원합니다. 파일 중 하나를 선택하세요: - + Preview 미리보기 - + Name 이름 - + Size 크기 - + Progress 진행률 - + Preview impossible 미리볼 수 없음 - + Sorry, we can't preview this file: "%1". 미안합니다. 이 파일을 미리볼 수없습니다: "%1". - + Resize columns 열 크기조정 - + Resize all non-hidden columns to the size of their contents 숨겨지지 않은 모든 열의 크기를 해당 콘텐츠 크기로 조정합니다 @@ -8017,27 +8429,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist 경로가 존재하지 않습니다 - + Path does not point to a directory 경로가 디렉터리를 가리키지 않음 - + Path does not point to a file 경로가 파일을 가리키지 않음 - + Don't have read permission to path 경로에 대한 읽기 권한이 없음 - + Don't have write permission to path 경로에 대한 쓰기 권한이 없음 @@ -8078,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: 내려받음: - + Availability: 가용성: @@ -8098,53 +8510,53 @@ Those plugins were disabled. 전송 - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) 활성 시간: - + ETA: 남은 시간: - + Uploaded: 올려줌: - + Seeds: 배포: - + Download Speed: 내려받기 속도: - + Upload Speed: 올려주기 속도: - + Peers: 피어: - + Download Limit: 내려받기 제한: - + Upload Limit: 올려주기 제한: - + Wasted: 낭비됨: @@ -8154,193 +8566,249 @@ Those plugins were disabled. 연결: - + Information 정보 - + Info Hash v1: 정보 해시 v1: - + Info Hash v2: 정보 해시 v2: - + Comment: 주석: - + Select All 모두 선택 - + Select None 선택 없음 - + Share Ratio: 공유 비율: - + Reannounce In: 다시 알림 시간: - + Last Seen Complete: 최근 완료: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: 전체 크기: - + Pieces: 조각: - + Created By: 생성자: - + Added On: 추가된 날짜: - + Completed On: 완료된 날짜: - + Created On: 만든 날짜: - + + Private: + + + + Save Path: 저장 경로: - + Never 절대 안함 - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (%3개) - - + + %1 (%2 this session) %1 (%2 이 세션) - - + + + N/A 해당 없음 - + + Yes + + + + + No + 아니요 + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (%2 동안 배포됨) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (최대 %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (전체 %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (평균 %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - 새 웹 배포 + 새 웹 배포 - Remove Web seed - 웹 배포 제거 + 웹 배포 제거 - Copy Web seed URL - 웹 배포 URL 복사 + 웹 배포 URL 복사 - Edit Web seed URL - 웹 배포 URL 편집 + 웹 배포 URL 편집 - + Filter files... 파일 필터링… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled 속도 그래프가 비활성화되었습니다 - + You can enable it in Advanced Options 고급 옵션에서 활성화할 수 있습니다 - New URL seed New HTTP source - 새 URL 배포 + 새 URL 배포 - New URL seed: - 새 URL 배포: + 새 URL 배포: - - This URL seed is already in the list. - 이 URL 배포는 이미 목록에 있습니다. + 이 URL 배포는 이미 목록에 있습니다. - + Web seed editing 웹 배포 편집 - + Web seed URL: 웹 배포 URL: @@ -8359,22 +8827,22 @@ Those plugins were disabled. %1에 RSS AutoDownloader 데이터를 저장할 수 없습니다. 오류: %2 - + Invalid data format 잘못된 데이터 형식 - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... '%1' RSS 규약은 규칙 '%2'에서 허용됩니다. 토렌트를 추가하는 중... - + Failed to read RSS AutoDownloader rules. %1 RSS 자동다운로더 규칙을 읽지 못했습니다. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 RSS AutoDownloader 규칙을 불러올 수 없습니다. 원인: %1 @@ -8382,22 +8850,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 '%1'에서 RSS 피드를 내려받기하지 못했습니다. 원인: %2 - + RSS feed at '%1' updated. Added %2 new articles. '%1'의 RSS 피드를 업데이트했습니다. %2개의 새 규약을 추가했습니다. - + Failed to parse RSS feed at '%1'. Reason: %2 '%1'에서 RSS 피드를 분석하지 못했습니다. 원인: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. "%1"에서 RSS 피드를 성공적으로 내려받았습니다. 분석을 시작합니다. @@ -8433,12 +8901,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. 잘못된 RSS 피드. - + %1 (line: %2, column: %3, offset: %4). %1 (형: %2, 열: %3, 상쇄값: %4). @@ -8446,99 +8914,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" RSS 세션 구성을 저장할 수 없습니다. 파일: "%1". 오류: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" RSS 세션 데이터를 저장할 수 없습니다. 파일: "%1". 오류: "%2" - - + + RSS feed with given URL already exists: %1. 같은 URL을 가진 RSS 피드가 존재합니다: %1. - + Feed doesn't exist: %1. 피드가 존재하지 않습니다: %1. - + Cannot move root folder. 루트 폴더를 이동할 수 없습니다. - - + + Item doesn't exist: %1. 항목이 존재하지 않습니다: %1. - + Couldn't move folder into itself. 폴더를 자체적으로 이동할 수 없습니다. - + Cannot delete root folder. 루트 폴더를 삭제할 수 없습니다. - + Failed to read RSS session data. %1 RSS 세션 데이터를 읽지 못했습니다. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" RSS 세션 데이터를 분석하지 못했습니다. 파일: "%1". 오류: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." RSS 세션 데이터를 불러오지 못했습니다. 파일: "%1". 오류: "잘못된 데이터 형식" - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. RSS 피드를 불러올 수 없습니다. 피드: "%1". 원인: URL 필요. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. RSS 피드를 불러올 수 없습니다. 피드: "%1". 원인: UID 잘못됨. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. 중복 RSS 피드를 찾았습니다. UID: "%1". 오류: 구성이 손상된 것 같습니다. - + Couldn't load RSS item. Item: "%1". Invalid data format. RSS 항목을 불러올 수 없습니다. 항목: "%1". 잘못된 데이터 형식입니다. - + Corrupted RSS list, not loading it. RSS 목록이 손상되어 불러오지 못했습니다. - + Incorrect RSS Item path: %1. 잘못된 RSS 항목 경로: %1. - + RSS item with given path already exists: %1. 같은 경로를 가진 RSS 항목이 존재합니다: %1. - + Parent folder doesn't exist: %1. 상위 폴더가 존재하지 않습니다: %1. @@ -8553,7 +9021,7 @@ Those plugins were disabled. Fetching of RSS feeds is disabled now! You can enable it in application settings. - 지금 RSS 피드 가져오기가 비활성화되었습니다! 응용 프로그램 설정에서 활성화할 수 있습니다. + 지금 RSS 피드 가져오기가 비활성화되었습니다! 앱 설정에서 활성화할 수 있습니다. @@ -8562,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read 읽은 항목들 표시 @@ -8588,132 +9056,132 @@ Those plugins were disabled. 토렌트: (두 번 클릭해서 내려받기) - - + + Delete 삭제 - + Rename... 이름 바꾸기… - + Rename 이름 바꾸기 - - + + Update 업데이트 - + New subscription... 새 구독… - - + + Update all feeds 모든 피드 업데이트 - + Download torrent 토렌트 내려받기 - + Open news URL 뉴스 URL 열기 - + Copy feed URL 피드 URL 복사 - + New folder... 새 폴더… - + Edit feed URL... 피드 URL 편집... - + Edit feed URL 피드 URL 편집 - + Please choose a folder name 폴더 이름을 선정하십시오 - + Folder name: 폴더 이름: - + New folder 새 폴더 - - + + Please type a RSS feed URL RSS 피드 URL을 입력하십시오 - - + + Feed URL: 피드 URL: - + Deletion confirmation 삭제 확인 - + Are you sure you want to delete the selected RSS feeds? 선택한 RSS 피드를 정말 삭제하시겠습니까? - + Please choose a new name for this RSS feed 이 RSS 피드에 사용할 새 이름을 선정하십시오 - + New feed name: 새 피드 이름: - + Rename failed 이름 바꾸기 실패 - + Date: 날짜: - + Feed: - + 피드 : - + Author: 작성자: @@ -8721,38 +9189,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. 검색 엔진을 사용하기 위해 Python을 설치해야 합니다. - + Unable to create more than %1 concurrent searches. %1개 이상을 동시에 검색할 수 없습니다. - - + + Offset is out of range 오프셋이 범위를 벗어났습니다 - + All plugins are already up to date. 모든 플러그인이 이미 최신 상태입니다. - + Updating %1 plugins %1 플러그인 업데이트 중 - + Updating plugin %1 %1 플러그인 업데이트 중 - + Failed to check for plugin updates: %1 플러그인 업데이트 확인 실패: %1 @@ -8827,132 +9295,146 @@ Those plugins were disabled. 크기: - + Name i.e: file name 이름 - + Size i.e: file size 크기 - + Seeders i.e: Number of full sources 배포자 - + Leechers i.e: Number of partial sources 공유자 - Search engine - 검색 엔진 + 검색 엔진 - + Filter search results... 필터 검색 결과… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results 결과 (<i>%2</i> 중 <i>%1</i> 표시): - + Torrent names only 토렌트 이름만 - + Everywhere 모두 - + Use regular expressions 정규표현식 사용 - + Open download window 내려받기 창 열기 - + Download 내려받기 - + Open description page 설명 페이지 열기 - + Copy 복사 - + Name 이름 - + Download link 내려받기 링크 - + Description page URL 설명 페이지 URL - + Searching... 검색 중… - + Search has finished 검색이 완료되었습니다 - + Search aborted 검색 중단됨 - + An error occurred during search... 검색 중 오류 발생… - + Search returned no results 검색 결과가 없습니다 - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility 열 표시 여부 - + Resize columns 열 크기조정 - + Resize all non-hidden columns to the size of their contents 숨겨지지 않은 모든 열의 크기를 해당 콘텐츠 크기로 조정합니다 @@ -8960,104 +9442,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. 알 수 없는 검색 엔진 플러그인 파일 형식입니다. - + Plugin already at version %1, which is greater than %2 플러그인은 이미 %1 버전에 있으며, %2보다 더 큽니다 - + A more recent version of this plugin is already installed. 이 플러그인의 최신 버전이 이미 설치되어 있습니다. - + Plugin %1 is not supported. %1 플러그인을 지원하지 않습니다. - - + + Plugin is not supported. 플러그인을 지원하지 않습니다. - + Plugin %1 has been successfully updated. %1 플러그인을 성공적으로 업데이트했습니다. - + All categories 모든 범주 - + Movies 영화 - + TV shows TV 프로그램 - + Music 음악 - + Games 게임 - + Anime 애니메이션 - + Software 소프트웨어 - + Pictures 사진 - + Books - + Update server is temporarily unavailable. %1 업데이트 서버를 일시적으로 사용할 수 없습니다. %1 - - + + Failed to download the plugin file. %1 플러그인 파일을 내려받기하지 못했습니다. %1 - + Plugin "%1" is outdated, updating to version %2 "%1" 플러그인이 오래되어 %2 버전으로 업데이트됩니다 - + Incorrect update info received for %1 out of %2 plugins. 플러그인 %2개 중 %1개에 대해 잘못된 업데이트 정보를 받았습니다. - + Search plugin '%1' contains invalid version string ('%2') 검색 플러그인 '%1'에 잘못된 버전 문자열('%2')이 포함되어 있습니다 @@ -9067,114 +9549,153 @@ Those plugins were disabled. - - - - Search 검색 - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. 검색 플러그인이 설치되어 있지 않습니다. 창 오른쪽 아래 "플러그인 검색…" 버튼을 클릭하여 설치하십시오. - + Search plugins... 플러그인 검색… - + A phrase to search for. 검색할 구문입니다. - + Spaces in a search term may be protected by double quotes. 검색 항목의 공백은 큰따옴표로 감쌉니다. - + Example: Search phrase example 예시: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: <b>foo bar</b>에 대해 검색 - + All plugins 모든 플러그인 - + Only enabled 활성화된 경우만 - + + + Invalid data format. + 잘못된 데이터 형식. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: <b>foo</b> 및 <b>bar</b>에 대해 검색 - + + Refresh + + + + Close tab 탭 닫기 - + Close all tabs 모든 탭 닫기 - + Select... 선택… - - - + + Search Engine 검색 엔진 - + + Please install Python to use the Search Engine. 검색 엔진을 사용하려면 Python을 설치하십시오. - + Empty search pattern 검색 패턴 비우기 - + Please type a search pattern first 검색 패턴을 먼저 입력하십시오 - + + Stop 중지 - Search has finished - 검색이 완료되었습니다 + 검색이 완료되었습니다 - Search has failed - 검색이 실패했습니다 + 검색이 실패했습니다 + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: 올려주기: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: 내려받기: - + Alternative speed limits 대체 속도 제한 @@ -9506,32 +10027,32 @@ Click the "Search plugins..." button at the bottom right of the window 대기열 평균 시간: - + Connected peers: 연결된 피어: - + All-time share ratio: 전체 시간 공유 비율: - + All-time download: 전체 시간 내려받기: - + Session waste: 낭비된 세션: - + All-time upload: 전체 시간 올려주기: - + Total buffer size: 전체 버퍼 크기: @@ -9546,12 +10067,12 @@ Click the "Search plugins..." button at the bottom right of the window 대기 중인 I/O 작업: - + Write cache overload: 쓰기 캐시 과부하: - + Read cache overload: 읽기 캐시 과부하: @@ -9570,51 +10091,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: 연결 상태: - - + + No direct connections. This may indicate network configuration problems. 직접적인 연결이 없습니다. 네트워크 구성에 문제가 있을 수 있습니다. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 노드 - + qBittorrent needs to be restarted! qBittorrent를 다시 시작해야 합니다! - - - + + + Connection Status: 연결 상태: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. 오프라인입니다. 보통 qBittorrent가 들어오는 연결을 위해 선택한 포트를 수신 대기하지 못했을 수 있습니다. - + Online 온라인 - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits 클릭해서 대체 속도 제한으로 전환 - + Click to switch to regular speed limits 클릭해서 일반 속도 제한으로 전환 @@ -9643,14 +10180,22 @@ Click the "Search plugins..." button at the bottom right of the window 완료됨 (0) - Resumed (0) - 이어받음 (0) + 이어받음 (0) - Paused (0) - 일시정지됨 (0) + 일시정지됨 (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) 완료됨 (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - 일시정지됨 (%1) + 일시정지됨 (%1) @@ -9723,14 +10287,12 @@ Click the "Search plugins..." button at the bottom right of the window 이동 중 (%1) - Resume torrents - 토렌트 이어받기 + 토렌트 이어받기 - Pause torrents - 토렌트 일시정지 + 토렌트 일시정지 @@ -9738,9 +10300,8 @@ Click the "Search plugins..." button at the bottom right of the window 토렌트 제거 - Resumed (%1) - 이어받음 (%1) + 이어받음 (%1) @@ -9781,17 +10342,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags 태그 - + All 전체 - + Untagged 태그 없음 @@ -9799,52 +10360,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... 태그 추가… - + Remove tag 태그 제거 - + Remove unused tags 미사용 태그 제거 - Resume torrents - 토렌트 이어받기 + 토렌트 이어받기 - Pause torrents - 토렌트 일시정지 + 토렌트 일시정지 - + Remove torrents 토렌트 제거 - New Tag - 새 태그 + 새 태그 + + + + Start torrents + + + + + Stop torrents + - + Tag: 태그: - + + Add tag + + + + Invalid tag name 잘못된 태그 이름 - + Tag name '%1' is invalid '%1' 태그 이름이 잘못됐습니다 @@ -9984,32 +10557,32 @@ Please choose a different name and try again. TorrentContentModel - + Name 이름 - + Progress 진행률 - + Download Priority 내려받기 우선순위 - + Remaining 남음 - + Availability 가용성 - + Total Size 전체 크기 @@ -10054,102 +10627,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error 이름 바꾸기 오류 - + Renaming 이름 바꾸는 중 - + New name: 새 이름: - + Column visibility 열 표시 여부 - + Resize columns 열 크기조정 - + Resize all non-hidden columns to the size of their contents 숨겨지지 않은 모든 열의 크기를 해당 콘텐츠 크기로 조정합니다 - + Open 열기 - + Open containing folder 포함하는 폴더 열기 - + Rename... 이름 바꾸기… - + Priority 우선순위 - - + + Do not download 내려받지 않음 - + Normal 보통 - + High 높음 - + Maximum 최대 - + By shown file order 표시된 파일 순서대로 - + Normal priority 보통 우선순위 - + High priority 높은 우선순위 - + Maximum priority 최대 우선순위 - + Priority by shown file order 표시된 파일 순서에 따른 우선순위 + + TorrentCreatorController + + + Too many active tasks + 활성화된 작업이 너무 많습니다. + + + + Torrent creation is still unfinished. + 토렌트 생성이 여전히 끝나지 않았습니다. + + + + Torrent creation failed. + 토렌트 생성이 실패했습니다. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Please choose a different name and try again. - + Select file 파일 선택 - + Select folder 폴더 선택 @@ -10205,58 +10796,10 @@ Please choose a different name and try again. 조각 크기: - + Auto 자동 - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Please choose a different name and try again. 토렌트 정보 - + You can separate tracker tiers / groups with an empty line. 트래커 계층/뭉치를 빈줄로 구분할 수 있습니다. - + Web seed URLs: 웹 배포 URL: - + Tracker URLs: 트래커 URL: - + Comments: 주석: - + Source: 소스: - + Progress: 진행률: - + Create Torrent 토렌트 만들기 - - + + Torrent creation failed 토렌트를 만들지 못했습니다 - + Reason: Path to file/folder is not readable. 원인: 파일/폴더 경로를 읽을 수 없습니다. - + Select where to save the new torrent 새 토렌트를 저장할 위치 선택 - + Torrent Files (*.torrent) 토렌트 파일 (*.torrent) - - Reason: %1 - 원인: %1 - - - + Add torrent to transfer list failed. - + 전송 목록에 토렌트 추가에 실패했습니다. - + Reason: "%1" - + 이유 : "%1" - + Add torrent failed - + 토렌트 추가 실패 - Reason: Created torrent is invalid. It won't be added to download list. - 원인: 생성된 토렌트가 잘못되었습니다. 내려받기 목록에 추가되지 않습니다. - - - + Torrent creator 토렌트 생성기 - + Torrent created: 토렌트 생성됨: @@ -10396,32 +10930,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 감시 폴더 구성을 불러오지 못했습니다. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" %1에서 감시 폴더 구성을 분석하지 못했습니다. 오류: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." %1에서 감시 폴더 구성을 불러오지 못했습니다. 오류: "잘못된 데이터 형식" - + Couldn't store Watched Folders configuration to %1. Error: %2 감시 폴더 구성을 %1에 저장할 수 없습니다. 오류: %2 - + Watched folder Path cannot be empty. 주시 중인 폴더 경로는 비워둘 수 없습니다. - + Watched folder Path cannot be relative. 주시 중인 폴더 경로는 상대 경로일 수 없습니다. @@ -10429,27 +10963,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + 잘못된 자석 URI입니다. URI : %1. 이유 : %2 - + Magnet file too big. File: %1 마그넷 파일이 너무 큽니다. 파일: %1 - + Failed to open magnet file: %1 마그넷 파일을 열지 못함: %1 - + Rejecting failed torrent file: %1 실패한 토렌트 파일을 거부하는 중: %1 - + Watching folder: "%1" 주시 중인 폴더: "%1" @@ -10457,14 +10991,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - 파일을 읽을 때 메모리 할당에 실패했습니다. 파일: "%1". 오류: "%2" + 파일을 읽을 때 메모리 할당에 실패했습니다. 파일: "%1". 오류: "%2" - Invalid metadata - 잘못된 메타데이터 + 잘못된 메타데이터 @@ -10495,279 +11027,374 @@ Please choose a different name and try again. 불완전한 토렌트에 다른 경로 사용 - + Category: 범주: - + + Torrent Share Limits + + + Torrent speed limits - 토렌트 속도 제한 + 토렌트 속도 제한 - + Download: 내려받기: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits 이 제한 전역 제한을 초과할 수 없습니다 - + Upload: 올려주기: - Torrent share limits - 토렌트 공유 제한 + 토렌트 공유 제한 - Use global share limit - 전역 공유 제한 사용 + 전역 공유 제한 사용 - Set no share limit - 공유 제한 없음 설정 + 공유 제한 없음 설정 - Set share limit to - 공유 제한 설정 + 공유 제한 설정 - ratio - 비율 + 비율 - total minutes - 총 시간(분) + 총 시간(분) - inactive minutes - 활동하지 않는 시간(분) + 활동하지 않는 시간(분) - + Disable DHT for this torrent 이 토렌트에 DHT 비활성화 - + Download in sequential order 순차 내려받기 - + Disable PeX for this torrent 이 토렌트에 PeX 비활성화 - + Download first and last pieces first 처음과 마지막 조각 먼저 내려받기 - + Disable LSD for this torrent 이 토렌트에 LSD 비활성화 - + Currently used categories 현재 사용되는 범주 - - + + Choose save path 저장 경로 선정 - + Not applicable to private torrents 비공개 토렌트에는 적용할 수 없음 - No share limit method selected - 공유 제한 방법을 선택하지 않았습니다 + 공유 제한 방법을 선택하지 않았습니다 - Please select a limit method first - 제한 방법을 먼저 선택하세요 + 제한 방법을 먼저 선택하세요 - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - 토렌트 태그 + + + + + Default + 기본 - - New Tag - 새 태그 + + + + Unlimited + 무제한 - - Tag: - 태그: + + + + Set to + 다음으로 설정 - - Invalid tag name - 잘못된 태그 이름 + + Seeding time: + 시딩 시간 : - - Tag name '%1' is invalid. - 태그 이름 '%1'이(가) 잘못되었습니다. + + + + + + + min + minutes + - - Tag exists - 태그가 존재합니다 + + Inactive seeding time: + 비활성 시딩 시간 : - - Tag name already exists. - 태그 이름이 존재합니다. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - 오류: '%1'은(는) 올바른 토렌트 파일이 아닙니다. + + Stop torrent + - - Priority must be an integer - 우선순위는 정수여야 합니다 + + Remove torrent + 토렌트 제거 - - Priority is not valid - 우선순위가 잘못되었습니다 + + Remove torrent and its content + - + + Enable super seeding for torrent + 토렌트에 대해 초도 배포 활성화 + + + + Ratio: + 비율 : + + + + TorrentTagsDialog + + + Torrent Tags + 토렌트 태그 + + + New Tag + 새 태그 + + + + Add tag + + + + + Tag: + 태그: + + + + Invalid tag name + 잘못된 태그 이름 + + + + Tag name '%1' is invalid. + 태그 이름 '%1'이(가) 잘못되었습니다. + + + + Tag exists + 태그가 존재합니다 + + + + Tag name already exists. + 태그 이름이 존재합니다. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + 오류: '%1'은(는) 올바른 토렌트 파일이 아닙니다. + + + + Priority must be an integer + 우선순위는 정수여야 합니다 + + + + Priority is not valid + 우선순위가 잘못되었습니다 + + + Torrent's metadata has not yet downloaded 토렌트 메타데이터를 아직 내려받지 못했습니다 - + File IDs must be integers 파일 ID는 정수여야 합니다 - + File ID is not valid 파일 ID가 유효하지 않습니다 - - - - + + + + Torrent queueing must be enabled 토렌트 대기열은 반드시 활성화해야 합니다 - - + + Save path cannot be empty 저장 경로는 반드시 입력해야 합니다 - - + + Cannot create target directory 대상 디렉터리를 만들 수 없습니다 - - + + Category cannot be empty 범주는 비워둘 수 없습니다 - + Unable to create category 범주를 만들 수 없습니다 - + Unable to edit category 범주를 편집할 수 없습니다 - + Unable to export torrent file. Error: %1 토렌트 파일을 내보낼 수 없습니다. 오류: %1 - + Cannot make save path 저장 경로를 만들 수 없습니다 - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid '정렬' 매개변수가 올바르지 않습니다 - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. %1'은(는) 올바른 파일 인덱스가 아닙니다. - + Index %1 is out of bounds. %1 인덱스가 범위를 벗어났습니다. - - + + Cannot write to directory 디렉터리에 쓸 수 없습니다 - + WebUI Set location: moving "%1", from "%2" to "%3" 웹 UI 설정 위치: "%1"을 "%2"에서 "%3"으로 이동 - + Incorrect torrent name 잘못된 토렌트 이름 - - + + Incorrect category name 잘못된 범주 이름 @@ -10798,257 +11425,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - 작동 중 + 작동 중 - + Disabled - 비활성화됨 + 비활성화됨 - + Disabled for this torrent - 이 토렌트에 비활성화됨 + 이 토렌트에 비활성화됨 - + This torrent is private - 이 토렌트는 비공개입니다 + 이 토렌트는 비공개입니다 - + N/A - + 해당사항 없음 - + Updating... - 업데이트 중… + 업데이트 중… - + Not working - 작동하지 않음 + 작동 안 함 - + Tracker error - + 트래커 오류 - + Unreachable - + 연결할 수 없음 - + Not contacted yet - 아직 연결되지 않음 + 아직 연결되지 않음 - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - 계층 + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + 유효하지 않은 상태입니다! + + + URL/Announce endpoint + URL/공지 엔드포인트 + Tier + 계증 + + Protocol - + 프로토콜 - + Status - 상태 + 상태 - + Peers - 피어 + 피어 - + Seeds - 배포 + 배포 - + Leeches - 리치 + 얌체 - + Times Downloaded - 내려받은 시간 + 내려받은 시간 - + Message - 메시지 + 메시지 - Next announce - + 다음 공지 - Min announce - + 최소 공지 - v%1 - + v%1 TrackerListWidget - Working - 작동 중 - - - Disabled - 비활성화됨 - - - Disabled for this torrent - 이 토렌트에 비활성화됨 - - - + This torrent is private 이 토렌트는 비공개입니다 - Updating... - 업데이트 중… - - - Not working - 작동하지 않음 - - - Not contacted yet - 아직 연결되지 않음 - - - N/A - 없음 - - - + Tracker editing 트래커 편집 - + Tracker URL: 트래커 URL: - - + + Tracker editing failed 트래커 편집 실패 - + The tracker URL entered is invalid. 입력한 트래커 URL이 올바르지 않습니다. - + The tracker URL already exists. 트래커 URL이 존재합니다. - + Edit tracker URL... 트래커 URL 편집… - + Remove tracker 트래커 제거 - + Copy tracker URL 트래커 URL 복사 - + Force reannounce to selected trackers 선택한 트래커에 강제로 다시 알리기 - + Force reannounce to all trackers 모든 트래커에 강제로 다시 알리기 - Tier - 계층 - - - URL - URL - - - Status - 상태 - - - Seeds - 배포 - - - Times Downloaded - 내려받은 시간 - - - + Resize columns 열 크기조정 - + Resize all non-hidden columns to the size of their contents 숨겨지지 않은 모든 열의 크기를 해당 콘텐츠 크기로 조정합니다 - Peers - 피어 - - - + Add trackers... 트래커 추가… - Leeches - 리치 - - - Message - 메시지 - - - + Column visibility 열 표시 여부 @@ -11066,37 +11651,37 @@ Please choose a different name and try again. 추가할 트래커 목록(한 줄에 하나): - + µTorrent compatible list URL: µTorrent 호환 목록 URL: - + Download trackers list 트래커 목록 내려받기 - + Add 추가 - + Trackers list URL error 트래커 목록 URL 오류 - + The trackers list URL cannot be empty 트래커 목록 URL은 비워둘 수 없습니다 - + Download trackers list error 트래커 목록 내려받기 오류 - + Error occurred when downloading the trackers list. Reason: "%1" 트래커 목록을 내려받는 동안 오류가 발생했습니다. 원인: "%1" @@ -11104,87 +11689,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - 전체 (0) - - - Trackerless (0) - 트래커 없음 (0) - - - Error (0) - 오류 (0) - - - Warning (0) - 경고 (0) - - - Trackerless - 트래커 없음 - - - Error (%1) - 오류 (%1) - - - + Warning (%1) 경고 (%1) - + Trackerless (%1) 트래커 없음 (%1) - + Tracker error (%1) - + 트래커 오류(%1) - + Other error (%1) - + 기타 오류(%1) - + Remove tracker - 트래커 제거 + 트래커 제거 + + + + Start torrents + + + + + Stop torrents + - Resume torrents - 토렌트 이어받기 + 토렌트 이어받기 - Pause torrents - 토렌트 일시정지 + 토렌트 일시정지 - + Remove torrents 토렌트 제거 - + Removal confirmation - + 제거 확인 - + Are you sure you want to remove tracker "%1" from all torrents? - + 모든 토렌트에서 "%1" 트래커를 제거하시겠습니까? - + Don't ask me again. - + 다시 묻지 마세요. - + All (%1) this is for the tracker filter 전체 (%1) @@ -11193,7 +11761,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument '모드': 잘못된 인수 @@ -11286,9 +11854,8 @@ Please choose a different name and try again. 이어받기 데이터 확인 중 - Paused - 일시정지됨 + 일시정지됨 @@ -11313,220 +11880,262 @@ Please choose a different name and try again. 오류 - + Name i.e: torrent name 이름 - + Size i.e: torrent size 크기 - + Progress % Done 진행률 - Status Torrent status (e.g. downloading, seeding, paused) - 상태 + 상태 - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + 상태 + + + Seeds i.e. full sources (often untranslated) 배포 - + Peers i.e. partial sources (often untranslated) 피어 - + Down Speed i.e: Download speed 받기 속도 - + Up Speed i.e: Upload speed 업로드 속도 - + Ratio Share ratio 비율 - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left 남은 시간 - + Category 범주 - + Tags 태그 - + Added On Torrent was added to transfer list on 01/01/2010 08:00 추가된 날짜 - + Completed On Torrent was completed on 01/01/2010 08:00 완료된 날짜 - + Tracker 트래커 - + Down Limit i.e: Download limit 받기 제한 - + Up Limit i.e: Upload limit 업로드 제한 - + Downloaded Amount of data downloaded (e.g. in MB) 내려받음 - + Uploaded Amount of data uploaded (e.g. in MB) 올려줌 - + Session Download Amount of data downloaded since program open (e.g. in MB) 세션 내려받기 - + Session Upload Amount of data uploaded since program open (e.g. in MB) 세션 올려주기 - + Remaining Amount of data left to download (e.g. in MB) 남음 - + + Time Active + Time (duration) the torrent is active (not stopped) + 활성 시간 + + + + Yes + + + + + No + 아니요 + + Time Active Time (duration) the torrent is active (not paused) - 활성 시간 + 활성 시간 - + Save Path Torrent save path 저장 경로 - + Incomplete Save Path Torrent incomplete save path 불완전한 저장 경로 - + Completed Amount of data completed (e.g. in MB) 완료됨 - + Ratio Limit Upload share ratio limit 비율 제한 - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole 마지막으로 완료된 항목 - + Last Activity Time passed since a chunk was downloaded/uploaded 최근 활동 - + Total Size i.e. Size including unwanted data 전체 크기 - + Availability The number of distributed copies of the torrent 가용도 - + Info Hash v1 i.e: torrent info hash v1 정보 해시 v1 - + Info Hash v2 i.e: torrent info hash v2 정보 해시 v2 - + Reannounce In Indicates the time until next trackers reannounce + 재공지 + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A 없음 - + %1 ago e.g.: 1h 20m ago %1 전 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (%2 동안 배포됨) @@ -11535,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility 열 표시 여부 - + Recheck confirmation 다시 검사 확인 - + Are you sure you want to recheck the selected torrent(s)? 선택한 토렌트를 다시 검사하시겠습니까? - + Rename 이름 바꾸기 - + New name: 새 이름: - + Choose save path 저장 경로 선정 - Confirm pause - 일시중지 확인 + 일시중지 확인 - Would you like to pause all torrents? - 모든 토렌트를 일시 정지하시겠습니까? + 모든 토렌트를 일시 정지하시겠습니까? - Confirm resume - 이어받기 확인 + 이어받기 확인 - Would you like to resume all torrents? - 모든 토렌트를 이어받기하시겠습니까? + 모든 토렌트를 이어받기하시겠습니까? - + Unable to preview 미리볼 수 없음 - + The selected torrent "%1" does not contain previewable files 선택한 "%1" 토렌트는 미리볼 수 있는 파일을 포함하고 있지 않습니다 - + Resize columns 열 크기조정 - + Resize all non-hidden columns to the size of their contents 숨겨지지 않은 모든 열의 크기를 해당 콘텐츠 크기로 조정합니다 - + Enable automatic torrent management 자동 토렌트 관리 활성화 - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. 선택한 토렌트에 대해 자동 토렌트 관리를 활성화하시겠습니까? 재배치될 수 있습니다. - Add Tags - 태그 추가 + 태그 추가 - + Choose folder to save exported .torrent files 내보낸 .torrent 파일을 저장할 폴더 선정 - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" .torrent 파일을 내보내지 못했습니다. 토렌트: %1. 저장 경로: %2. 원인: "%3" - + A file with the same name already exists 이름이 같은 파일이 이미 있습니다 - + Export .torrent file error .torrent 파일 오류 내보내기 - + Remove All Tags 모든 태그 제거 - + Remove all tags from selected torrents? 선택한 토렌트에서 모든 태그를 제거하시겠습니까? - + Comma-separated tags: 쉼표로 구분된 태그: - + Invalid tag 잘못된 태그 - + Tag name: '%1' is invalid 태그 이름: '%1'이(가) 잘못됐습니다 - &Resume Resume/start the torrent - 이어받기(&R) + 이어받기(&R) - &Pause Pause the torrent - 일시정지(&P) + 일시정지(&P) - Force Resu&me Force Resume/start the torrent - 강제 이어받기(&M) + 강제 이어받기(&M) - + Pre&view file... 파일 미리보기(&V)… - + Torrent &options... 토렌트 옵션(&O)… - + Open destination &folder 대상 폴더 열기(&F) - + Move &up i.e. move up in the queue 위로 이동(&U) - + Move &down i.e. Move down in the queue 아래로 이동(&D) - + Move to &top i.e. Move to top of the queue 맨 위로 이동(&T) - + Move to &bottom i.e. Move to bottom of the queue 맨 아래로 이동(&B) - + Set loc&ation... 위치 설정(&A)… - + Force rec&heck 강제 다시 검사(&H) - + Force r&eannounce 강제 다시 알림(&E) - + &Magnet link 마그넷 링크(&M) - + Torrent &ID 토렌트 ID(&I) - + + &Comment + 주석(&C) + + + &Name 이름(&N) - + Info &hash v1 정보 해시 v1(&H) - + Info h&ash v2 정보 해시 v2(&A) - + Re&name... 이름 바꾸기(&N)… - + Edit trac&kers... 트래커 편집(&K)… - + E&xport .torrent... .torrent 내보내기(&X)… - + Categor&y 범주(&Y) - + &New... New category... 신규(&N)… - + &Reset Reset category 초기화(&R) - + Ta&gs 태그(&G) - + &Add... Add / assign multiple tags... 추가(&A)… - + &Remove All Remove all tags 모두 제거(&R) - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue 대기열(&Q) - + &Copy 복사(&C) - + Exported torrent is not necessarily the same as the imported 내보낸 토렌트가 가져온 토렌트와 반드시 같을 필요는 없습니다 - + Download in sequential order 순차 내려받기 - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. .torrent 파일을 내보내는 동안 오류가 발생했습니다. 자세한 내용은 실행 로그를 확인하십시오. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent 제거(&R) - + Download first and last pieces first 처음과 마지막 조각 먼저 내려받기 - + Automatic Torrent Management 자동 토렌트 관리 - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category 자동 모드는 다양한 토렌트 특성(예: 저장 경로)이 관련 범주에 의해 결정됨을 의미합니다 - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - 토렌트가 [일시정지/대기 중/오류 발생/확인 중]이면 강제로 다시 알릴 수 없습니다 + 토렌트가 [일시정지/대기 중/오류 발생/확인 중]이면 강제로 다시 알릴 수 없습니다 - + Super seeding mode 초도 배포 모드 @@ -11907,28 +12540,28 @@ Please choose a different name and try again. 아이콘 ID - + UI Theme Configuration. UI 테마 구성입니다. - + The UI Theme changes could not be fully applied. The details can be found in the Log. UI 테마 변경사항을 완전히 적용하지 못했습니다. 자세한 내용은 로그에서 확인할 수 있습니다. - + Couldn't save UI Theme configuration. Reason: %1 UI 테마 구성을 저장할 수 없습니다. 원인: %1 - - + + Couldn't remove icon file. File: %1. 아이콘 파일을 제거할 수 없습니다. 파일: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. 아이콘 파일을 복사할 수 없습니다. 소스: %1. 대상: %2. @@ -11936,7 +12569,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" 파일에서 UI 테마 읽기 실패: "%1" @@ -11967,89 +12605,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" 환경설정 이전 실패함: WebUI HTTPS, 파일: "%1", 오류: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" 환경설정 이전됨: WebUI HTTPS, 파일로 내보낸 데이터: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". 구성 파일에 잘못된 값이 있습니다. 기본값으로 되돌립니다. 키: "%1". 잘못된 값: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python 감지됨, 실행 이름: '%1', 버전: %2 - - - Python not detected - Python을 찾지 못했습니다 - Found Python executable. Name: "%1". Version: "%2" - + 파이썬 실행 파일을 찾았습니다. 이름 : "%1". 버전 : "%2" Failed to find Python executable. Path: "%1". - + 파이썬 실행 파일을 찾지 못했습니다. 경로 : "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + 경로 환경 변수에서 `파이썬3` 실행 파일을 찾지 못했습니다. 경로 : "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + 경로 환경 변수에서 `파이썬` 실행 파일을 찾지 못했습니다. 경로 : "%1" Failed to find `python` executable in Windows Registry. - + 윈도 레지스트리에서 `파이썬` 실행 파일을 찾지 못했습니다. Failed to find Python executable - + 파이썬 실행 파일을 찾지 못함 Utils::IO - + File open error. File: "%1". Error: "%2" 파일 열기 오류입니다. 파일: "%1". 오류: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 파일 크기가 한도를 초과합니다. 파일: "%1". 파일 크기: %2. 크기 제한: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + 파일 크기가 데이터 크기 제한을 초과합니다: 파일: "%1". 파일 크기: %2. 배열 제한: %3 - + File read error. File: "%1". Error: "%2" 파일 읽기 오류입니다. 파일: "%1". 오류: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 읽기 크기 불일치. 파일: "%1". 예상: %2. 실제: %3 @@ -12113,72 +12744,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. 허용할 수 없는 세션 쿠키 이름이 지정되었습니다: '%1'. 기본 쿠키가 사용됩니다. - + Unacceptable file type, only regular file is allowed. 허용되지 않는 파일 형식, 일반 파일만 허용됩니다. - + Symlinks inside alternative UI folder are forbidden. 대체 UI 폴더의 심볼릭 링크는 금지되어 있습니다. - - Using built-in Web UI. - 내장 Web UI 사용. + + Using built-in WebUI. + 기본 제공 WebUI를 사용합니다. - - Using custom Web UI. Location: "%1". - 사용자 지정 Web UI 사용. 위치: "%1". + + Using custom WebUI. Location: "%1". + 사용자 정의 WebUI를 사용합니다. 위치: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - 선택한 언어(%1)에 대한 Web UI 번역을 읽었습니다. + + WebUI translation for selected locale (%1) has been successfully loaded. + 선택한 로케일 (%1)에 대한 WebUI 번역을 성공적으로 불러왔습니다. - - Couldn't load Web UI translation for selected locale (%1). - 선택한 언어(%1)에 대한 Web UI 번역을 읽지 못했습니다. + + Couldn't load WebUI translation for selected locale (%1). + 선택한 로케일 (%1)에 대한 WebUI 번역을 불러올 수 없습니다. - + Missing ':' separator in WebUI custom HTTP header: "%1" WebUI 사용자 지정 HTTP 헤더에 ':' 구분자 누락: "%1" - + Web server error. %1 웹 서버 오류입니다. %1 - + Web server error. Unknown error. 웹 서버 오류입니다. 알 수 없는 오류입니다. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' 웹 UI: 원본 헤더 및 목표 원점 불일치! 소스 IP: '%1'. 원본 헤더: '%2'. 목표 원점: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' 웹 UI: 출처 헤더 및 목표 원점 불일치! 소스 IP: '%1'. 출처 헤더: '%2'. 목표 원점: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' 웹 UI: 잘못된 호스트 헤더, 포트 불일치. 소스 IP 요청: '%1'. 서버 포트: '%2'. 수신된 호스트 헤더: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' 웹 UI: 잘못된 호스트 헤더. 소스 IP 요청: '%1'. 수신된 호스트 헤더: '%2' @@ -12186,143 +12817,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - 웹 UI: HTTPS 설정에 성공했습니다 + + Credentials are not set + 자격 증명이 지정되지 않았습니다 + + + + WebUI: HTTPS setup successful + WebUI: HTTPS 설정 성공 + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS 설정 실패, HTTP로 대체 - - Web UI: HTTPS setup failed, fallback to HTTP - 웹 UI: HTTPS 설정에 실패했으므로, HTTP로 폴백합니다 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: 현재 IP: %1, 포트: %2에서 수신 중 - - Web UI: Now listening on IP: %1, port: %2 - 웹 UI: IP: %1, 포트: %2에서 수신 대기 중 + + Unable to bind to IP: %1, port: %2. Reason: %3 + IP: %1, 포트: %2에 바인딩할 수 없습니다. 원인: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - 웹 UI: IP: %1, 포트: %2에 결합할 수 없습니다. 원인: %3 + + Unknown error + 알 수 없는 오류 misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1분 {1s?} + %1s - + %1m e.g: 10 minutes - %1분 + %1분 - + %1h %2m e.g: 3 hours 5 minutes - %1시간 %2분 + %1시 %2분 - + %1d %2h e.g: 2 days 10 hours - %1일 %2시간 + %1일 %2시 - + %1y %2d e.g: 2 years 10 days - %1년 %2일 + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1시간 %2분 - - - %1d %2h - e.g: 2days 10hours - %1일 %2시간 - - - %1y %2d - e.g: 2years 10days - %1년 %2일 - - - - + + Unknown Unknown (size) 알 수 없음 - + qBittorrent will shutdown the computer now because all downloads are complete. 모든 내려받기가 완료되었기 때문에 qBittorrent가 지금 컴퓨터의 전원을 끕니다. - + < 1m < 1 minute 1분 미만 - - %1m - e.g: 10minutes - %1분 - diff --git a/src/lang/qbittorrent_lt.ts b/src/lang/qbittorrent_lt.ts index ee4193c880a1..d6cd2ed9fc68 100644 --- a/src/lang/qbittorrent_lt.ts +++ b/src/lang/qbittorrent_lt.ts @@ -14,77 +14,77 @@ Apie - + Authors Autoriai - + Current maintainer Dabartinis prižiūrėtojas - + Greece Graikija - - + + Nationality: Šalis: - - + + E-mail: El. paštas: - - + + Name: Vardas: - + Original author Pradinis autorius - + France Prancūzija - + Special Thanks Ypatingos padėkos - + Translators Vertėjai - + License Licencija - + Software Used Naudojama programinė įranga - + qBittorrent was built with the following libraries: qBittorrent buvo sukurta su šiomis bibliotekomis: - + Copy to clipboard - + Kopijuoti į iškarpinę @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Autorių teisės %1 2006-2023 qBittorrent projektas + Copyright %1 2006-2024 The qBittorrent project + Autorių teisės %1 2006-2024 qBittorrent projektas @@ -166,14 +166,13 @@ Išsaugoti į - + Never show again Daugiau neberodyti - Torrent settings - Torento nuostatos + Torento nuostatos @@ -191,12 +190,12 @@ Paleisti torentą - + Torrent information Torento informacija - + Skip hash check Praleisti maišos tikrinimą @@ -205,20 +204,25 @@ Use another path for incomplete torrent Neužbaigtam torrentui naudokite kitą kelią + + + Torrent options + + Tags: - + Žymės: Click [...] button to add/remove tags. - + Spustelėkite mygtuką [...] norėdami pridėti/šalinti žymes. Add/remove tags - + Pridėti/šalinti žymes @@ -231,70 +235,75 @@ Sustabdymo sąlyga: - - + + None Nė vienas - - + + Metadata received Gauti metaduomenys - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked Failų patikrinta - + Add to top of queue - + Pridėti į eilės viršų - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Pažymėjus failą .torrent failas nebus ištrintas, nepaisantt į nustatymus Pasirinkčių puslapyje, „Atsisiuntimai“ skiltyje. - + Content layout: Turinio išdėstymas - + Original Pradinis - + Create subfolder Sukurti poaplankį - + Don't create subfolder Nesukurti poaplankio - + Info hash v1: Informacija hash v1 - + Size: Dydis: - + Comment: Komentaras: - + Date: Data: @@ -324,220 +333,157 @@ Prisiminti paskiausiai naudotą išsaugojimo kelią - + Do not delete .torrent file Neištrinti .torrent failo - + Download in sequential order Siųsti dalis iš eilės - + Download first and last pieces first Visų pirma siųsti pirmas ir paskutines dalis - + Info hash v2: Informacija hash v2 - + Select All Pažymėti visus - + Select None Nežymėti nieko - + Save as .torrent file... Išsaugoti kaip .torrent file... - + I/O Error I/O klaida - Invalid torrent - Netaisyklingas torentas - - - + Not Available This comment is unavailable Neprieinama - + Not Available This date is unavailable Neprieinama - + Not available Neprieinama - Invalid magnet link - Netaisyklinga magnet nuoroda - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Nepavyko įkelti torento: %1. -Klaida: %2 - - - This magnet link was not recognized - Ši magnet nuoroda neatpažinta - - - + Magnet link Magnet nuoroda - + Retrieving metadata... Atsiunčiami metaduomenys... - - + + Choose save path Pasirinkite išsaugojimo kelią - Torrent is already present - Torentas jau yra - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torentas "%1" jau yra siuntimų sąraše. Seklių sąrašai nebuvo sulieti, nes tai yra privatus torentas. - - - Torrent is already queued for processing. - Torentas jau laukia eilėje apdorojimui. - - - + No stop condition is set. Nenustatyta jokia sustabdymo sąlyga. - + Torrent will stop after metadata is received. Torentas bus sustabdytas gavus metaduomenis. - - Torrents that have metadata initially aren't affected. - Torentai, kurie iš pradžių turi metaduomenis, neturi įtakos. - - - + Torrent will stop after files are initially checked. Torentas bus sustabdytas, kai failai bus iš pradžių patikrinti. - + This will also download metadata if it wasn't there initially. Taip pat bus atsisiunčiami metaduomenys, jei jų iš pradžių nebuvo. - - + + N/A Nėra - Magnet link is already queued for processing. - Magnet nuoroda jau laukia eilėje apdorojimui. - - - + %1 (Free space on disk: %2) %1 (Laisva vieta diske: %2) - + Not available This size is unavailable. Neprieinama - + Torrent file (*%1) Torento failas (*%1) - + Save as torrent file Išsaugoti torento failo pavidalu - + Couldn't export torrent metadata file '%1'. Reason: %2. Nepavyko eksportuoti torento metaduomenų failo '%1'. Priežastis: %2. - + Cannot create v2 torrent until its data is fully downloaded. Negalima sukurti v2 torento, kol jo duomenys nebus visiškai parsiųsti. - Cannot download '%1': %2 - Nepavyksta atsisiųsti "%1": %2 - - - + Filter files... Filtruoti failus... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torentas '%1' jau yra perdavimų sąraše. Stebėjimo priemonių negalima sujungti, nes tai privatus torentas. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torentas '%1' jau yra perdavimo sąraše. Ar norite sujungti stebėjimo priemones iš naujo šaltinio? - - - + Parsing metadata... Analizuojami metaduomenys... - + Metadata retrieval complete Metaduomenų atsiuntimas baigtas - - Failed to load from URL: %1. -Error: %2 - Nepavyko įkelti iš URL: %1. -Klaida: %2 - - - Download Error - Atsiuntimo klaida - AddTorrentManager Downloading torrent... Source: "%1" - + Atsiunčiamas torentas... Šaltinis: „%1“ @@ -545,22 +491,22 @@ Klaida: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -605,17 +551,17 @@ Klaida: %2 Tags: - + Žymės: Click [...] button to add/remove tags. - + Spustelėkite mygtuką [...] norėdami pridėti/šalinti žymes. Add/remove tags - + Pridėti/šalinti žymes @@ -625,7 +571,7 @@ Klaida: %2 Start torrent: - + Paleisti torentą: @@ -640,7 +586,7 @@ Klaida: %2 Add to top of queue: - + Pridėti į eilės viršų: @@ -648,72 +594,77 @@ Klaida: %2 Praleisti maišos tikrinimą - - - Choose save path - Rinktis išsaugojimo kelią. + + Torrent share limits + - - - - - - - Default - Numatyta + + + Choose save path + Rinktis išsaugojimo kelią. + + + - Yes - Taip + Default + Numatyta + Yes + Taip + + + + + No Ne - + Manual Rankinis - + Automatic Savaiminis - + Original Originalas - + Create subfolder Sukurti poaplankį - + Don't create subfolder Nekurti poaplankio - + None Nė vienas - + Metadata received Gauti metaduomenys - + Files checked Failų patikrinta @@ -721,734 +672,852 @@ Klaida: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Pertikrinti torentus baigus atsiuntimą - - + + ms milliseconds ms - + Setting Nuostata - + Value Value set for this setting Reikšmė - + (disabled) (išjungta) - + (auto) (automatinis) - + + min minutes min. - + All addresses Visi adresai - + qBittorrent Section qBittorrent sekcija - - + + Open documentation Atverti žinyną - + All IPv4 addresses Visi IPv4 adresai - + All IPv6 addresses Visi IPv6 adresai - + libtorrent Section libtorrent sekcija - + Fastresume files Fastresume failas - + SQLite database (experimental) SQLite duomenų bazė (eksperimentinė) - + Resume data storage type (requires restart) Tęsti duomenų saugojimo tipą (reikia paleisti iš naujo) - + Normal Normali - + Below normal Žemesnė nei normali - + Medium Vidutinė - + Low Žema - + Very low Labai žema - - Process memory priority (Windows >= 8 only) - Proceso atminties pirmenybė (Tik Windows >= 8) - - - + Physical memory (RAM) usage limit Fizinės atminties (RAM) naudojimo apribojimas - + Asynchronous I/O threads Asinchroninės I/O gijos - + Hashing threads Maišos gijos - + File pool size Failų telkinio dydis - + Outstanding memory when checking torrents Išsiskirianti atmintis tikrinant torentus - + Disk cache Disko podėlis - - - - + + + + s seconds s - + Disk cache expiry interval Podėlio diske galiojimo trukmė - + Disk queue size Disko eilės dydis - - + + Enable OS cache Įgalinti operacinės sistemos spartinančiąją atmintinę - + Coalesce reads & writes Sujungti skaitymai ir rašymai - + Use piece extent affinity Giminingas dalių atsisiuntimas - + Send upload piece suggestions Siųsti išsiuntimo dalių pasiūlymus - - - - + + + + + 0 (disabled) - + 0 (išjungta) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Pratęsimo duomenų saugojimo intervalas [0: išjungta] - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer Didžiausias neįvykdytų užklausų skaičius vienam partneriui - - - - - + + + + + KiB KiB - + (infinite) - + (system default) + (sistemos numatytasis) + + + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode - + This option is less effective on Linux Ši parinktis yra mažiau efektyvi Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default Numatyta - + Memory mapped files Atmintyje susieti failai - + POSIX-compliant Suderinamas su POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disko IO tipas (reikia paleisti iš naujo) - - + + Disable OS cache Išjungti OS talpyklą - + Disk IO read mode Disko IO skaitymo režimas - + Write-through Perrašymas - + Disk IO write mode Disko IO rašymo režimas - + Send buffer watermark Siųsti buferio vandenženklį - + Send buffer low watermark Siųsti buferio žemą vandenženklį - + Send buffer watermark factor Siųsti buferio vandenženklio faktorių - + Outgoing connections per second Išeinantys ryšiai per sekundę - - + + 0 (system default) - + 0 (sistemos numatytasis) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Lizdų atsilikimo dydis - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + .torrent failo dydžio riba + + + Type of service (ToS) for connections to peers Paslaugos tipas (ToS), skirtas ryšiams su partneriais - + Prefer TCP Teikti pirmenybę TCP - + Peer proportional (throttles TCP) Proporcionalus siuntėjams (uždusina TCP) - + Support internationalized domain name (IDN) Internacionalizuoto domeno vardo (IDN) palaikymas - + Allow multiple connections from the same IP address Leisti kelis sujungimus iš to paties IP adreso - + Validate HTTPS tracker certificates Patvirtinkite HTTPS stebėjimo priemonės sertifikatus - + Server-side request forgery (SSRF) mitigation Serverio pusės užklausų klastojimo (SSRF) mažinimas - + Disallow connection to peers on privileged ports Neleisti prisijungti prie partnerių privilegijuotuose prievaduose - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates Jis valdo vidinės būsenos atnaujinimo intervalą, kuris savo ruožtu turės įtakos vartotojo sąsajos naujinimams - + Refresh interval Atnaujinimo intervalas - + Resolve peer host names Gauti siuntėjų stočių vardus - + IP address reported to trackers (requires restart) IP adresas praneštas stebėjimo priemonėms (reikia paleisti iš naujo) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Pakeitus IP arba prievadą, dar kartą pranešti visiems stebėjimo priemonėms - + Enable icons in menus Įjungti meniu piktogramas - + Enable port forwarding for embedded tracker Įjungti įterptosios sekimo priemonės prievado persiuntimą - + + Enable quarantine for downloaded files + Įjungti karantiną parsiųstiems failams + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + sek. + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage Partnerių apyvartos atsijungimo procentas - + Peer turnover threshold percentage Partnerių apyvartos slenkstis procentais - + Peer turnover disconnect interval Partnerių apyvartos atjungimo intervalas - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Rodyti pranešimus - + Display notifications for added torrents Rodyti pranešimus pridedamiems torentams - + Download tracker's favicon Atsisiųsti seklio svetainės piktogramą - + Save path history length Išsaugojimo kelio istorijos ilgis - + Enable speed graphs Įjungti greičio kreives - + Fixed slots Fiksuoti prisijungimai - + Upload rate based Pagrįsta išsiuntimo greičiu - + Upload slots behavior Išsiuntimo prisijungimų elgsena - + Round-robin Ratelio algoritmas - + Fastest upload Greičiausias išsiuntimas - + Anti-leech Anti-siuntėjų - + Upload choking algorithm Išsiuntimo prismaugimo algoritmas - + Confirm torrent recheck Patvirtinti torentų pertikrinimą - + Confirm removal of all tags Patvirtinti visų žymių šalinimą - + Always announce to all trackers in a tier Visada siųsti atnaujinimus visiems sekliams pakopoje - + Always announce to all tiers Visada siųsti atnaujinimus visoms pakopoms - + Any interface i.e. Any network interface Bet kokia sąsaja - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP maišytos veiksenos algoritmas - + Resolve peer countries Išspręskite partnerių šalis - + Network interface Tinklo sąsaja. - + Optional IP address to bind to Pasirenkamas IP adresas, prie kurio reikia susieti - + Max concurrent HTTP announces Maksimalus lygiagretus HTTP pranešimas - + Enable embedded tracker Įjungti įtaisytąjį seklį - + Embedded tracker port Įtaisytojo seklio prievadas - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 paleista + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Veikia nešiojamuoju režimu. Automatiškai aptiktas profilio aplankas: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Aptikta perteklinė komandų eilutės vėliavėlė: „%1“. Nešiojamasis režimas reiškia santykinį greitą atnaujinimą. - + Using config directory: %1 Naudojant konfigūracijos katalogą: %1 - + Torrent name: %1 Torento pavadinimas: %1 - + Torrent size: %1 Torento dydis: %1 - + Save path: %1 Išsaugojimo kelias: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torentas atsiųstas per %1. - + + Thank you for using qBittorrent. Ačiū, kad naudojatės qBittorrent. - + Torrent: %1, sending mail notification Torentas: %1, siunčiamas pašto pranešimas - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` Vykdoma išorinė programa. Torentas: "%1". Komanda: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Torento „%1“ atsisiuntimas baigtas - + WebUI will be started shortly after internal preparations. Please wait... WebUI bus paleista netrukus po vidinių pasiruošimų. Prašome palaukti... - - + + Loading torrents... Įkeliami torrentai... - + E&xit Iš&eiti - + I/O Error i.e: Input/Output Error I/O klaida - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Klaida: %2 Priežastis: %2 - Error - Klaida - - - Failed to add torrent: %1 - Nepavyko pridėti torento: %1 - - - + Torrent added Torentas pridėtas - + '%1' was added. e.g: xxx.avi was added. '%1' buvo pridėtas. - + Download completed Parsisiuntimas baigtas - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' buvo baigtas siųstis. - - - URL download error - URL atsisiuntimo klaida + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - Nepavyko atsisiųsti failo adresu '%1', priežastis: %2. + + This is a test email. + - Torrent file association - Torento failo asociacija + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent nėra numatytoji programa, skirta atidaryti torent failus ar magnetines nuorodas. -Ar norite, kad qBittorrent būtų numatytoji Jūsų programa? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' buvo baigtas siųstis. - + Information Informacija - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 Norėdami valdyti qBittorrent, prieikite prie WebUI adresu: %1 - - The Web UI administrator username is: %1 - Tinklo naudotojo sąsajos administratoriaus naudotojo vardas yra: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Žiniatinklio vartotojo sąsajos administratoriaus slaptažodis nebuvo pakeistas iš numatytojo: %1 - - - - This is a security risk, please change your password in program preferences. - Tai yra saugumo rizika, pakeiskite slaptažodį programos nuostatose. - - - Application failed to start. - Programai nepavyko pasileisti. - - - + Exit Išeiti - + Recursive download confirmation - Rekursyvaus siuntimo patvirtinimas + Rekursyvaus siuntimo patvirtinimas - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torentą sudaro '%1' .torrent failų, ar norite tęsti jų atsisiuntimą? + Torentą sudaro '%1' .torrent failų, ar norite tęsti jų atsisiuntimą? - + Never - Niekada + Niekada - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Nepavyko nustatyti fizinės atminties (RAM) naudojimo limito. Klaidos kodas: %1. Klaidos pranešimas: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated Inicijuotas qBitTorrent nutraukimas - + qBittorrent is shutting down... qBittorrent yra išjungiamas... - + Saving torrent progress... Išsaugoma torento eiga... - + qBittorrent is now ready to exit qBittorrent dabar paruoštas išeiti @@ -1597,7 +1637,7 @@ Ar norite, kad qBittorrent būtų numatytoji Jūsų programa? AsyncFileStorage - + Could not create directory '%1'. Nepavyko sukurti katalogo "%1". @@ -1605,22 +1645,22 @@ Ar norite, kad qBittorrent būtų numatytoji Jūsų programa? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Tinklo API prisijungimo nesėkmė. Priežastis: IP buvo užblokuotas, IP: %1, naudotojo vardas: %2 - + Your IP address has been banned after too many failed authentication attempts. Jūsų IP adresas buvo užblokuotas po per didelio kiekio nepavykusių atpažinimo bandymų. - + WebAPI login success. IP: %1 Tinklo API prisijungimas pavyko. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Tinklo API prisijungimo nesėkmė. Priežastis: neteisingi prisijungimo duomenys, bandymas nr.: %1, IP: %2, naudotojo vardas: %3 @@ -1665,15 +1705,15 @@ Ar norite, kad qBittorrent būtų numatytoji Jūsų programa? Priority: - + Svarba: - + Must Not Contain: Privalo neturėti žodžio: - + Episode Filter: Epizodų filtras: @@ -1687,7 +1727,7 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat Torrent parameters - + Torento parametrai @@ -1726,263 +1766,263 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat &Eksportuoti... - + Matches articles based on episode filter. Atitinka epizodų filtru pagrįstus įrašus. - + Example: Pavyzdys: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match atitiks pirmojo sezono 2, 5, nuo 8 iki 15, 30 ir tolesnius epizodus - + Episode filter rules: Epizodų filtravimo taisyklės: - + Season number is a mandatory non-zero value Sezono numeris yra privaloma nenulinė reikšmė - + Filter must end with semicolon Filtras privalo užsibaigti kabliataškiu - + Three range types for episodes are supported: Yra palaikomi trys epizodų rėžiai: - + Single number: <b>1x25;</b> matches episode 25 of season one Pavienis skaičius: <b>1x25;</b> atitinka 25, pirmojo sezono, epizodą - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normalus rėžis: <b>1x25-40;</b> atitinka pirmojo sezono epizodus nuo 25 iki 40 - + Episode number is a mandatory positive value Epizodo numeris yra privaloma teigiama reikšmė - + Rules Taisyklės - + Rules (legacy) Taisyklės (pasenusios) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Begalinis rėžis: <b>1x25-;</b> atitinka pirmojo sezono epizodus nuo 25 ir toliau bei visus vėlesnių sezonų epizodus - + Last Match: %1 days ago Paskutinis atitikimas: prieš %1 dienų - + Last Match: Unknown Paskutinis atitikimas: Nežinoma - + New rule name Naujas taisyklės vardas - + Please type the name of the new download rule. Įveskite vardą naujai atsiuntimo taisyklei. - - + + Rule name conflict Taisyklių vardų nesuderinamumas - - + + A rule with this name already exists, please choose another name. Taisyklė tokiu vardu jau egzistuoja, pasirinkite kitokį vardą. - + Are you sure you want to remove the download rule named '%1'? Ar tikrai norite pašalinti atsiuntimo taisyklę, pavadinimu "%1"? - + Are you sure you want to remove the selected download rules? Ar tikrai norite pašalinti pasirinktas atsiuntimo taisykles? - + Rule deletion confirmation Taisyklių pašalinimo patvirtinimas - + Invalid action Netinkamas veiksmas - + The list is empty, there is nothing to export. Sąrašas tuščias, nėra ką eksportuoti. - + Export RSS rules Eksportuoti RSS taisykles - + I/O Error I/O klaida - + Failed to create the destination file. Reason: %1 Nepavyko sukurti paskirties failo. Priežastis: %1 - + Import RSS rules Importuoti RSS taisykles - + Failed to import the selected rules file. Reason: %1 Nepavyko importuoti pasirinkto taisyklių failo. Priežastis: %1 - + Add new rule... Pridėti naują taisyklę... - + Delete rule Ištrinti taisyklę - + Rename rule... Pervadinti taisyklę... - + Delete selected rules Ištrinti pasirinktas taisykles - + Clear downloaded episodes... Išvalyti atsisiųstus epizodus... - + Rule renaming Taisyklių pervadinimas - + Please type the new rule name Įveskite naują taisyklės vardą - + Clear downloaded episodes Išvalyti atsisiųstus epizodus - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Ar tikrai norite išvalyti pasirinktos taisyklės atsisiųstų epizodų sąrašą? - + Regex mode: use Perl-compatible regular expressions Reguliariųjų reiškinių veiksena: naudoti su Perl suderinamus reguliariuosius reiškinius - - + + Position %1: %2 Pozicija %1: %2 - + Wildcard mode: you can use Pakaitos simbolių veiksena: galite naudoti - - + + Import error - + Importavimo klaida - + Failed to read the file. %1 - + Nepavyko perskaityti failo. %1 - + ? to match any single character ? norėdami atitikti bet kurį vieną simbolį - + * to match zero or more of any characters * norėdami atitikti nulį ar daugiau bet kokių simbolių - + Whitespaces count as AND operators (all words, any order) Tarpai yra laikomi IR operatoriais (visi žodžiai, bet kokia tvarka) - + | is used as OR operator | yra naudojamas kaip AR operatorius - + If word order is important use * instead of whitespace. Jeigu yra svarbi žodžių tvarka, vietoj tarpų naudokite * - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Reiškinys su tuščia %1 sąlyga (pvz., %2) - + will match all articles. atitiks visus įrašus. - + will exclude all articles. išskirs visus įrašus. @@ -2024,53 +2064,58 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nepavyko sukurti torento atnaujinimo aplanko: "%1" - + Cannot parse resume data: invalid format Neįmanoma išanalizuoti atnaujinimo duomenų: netinkamas formatas - - + + Cannot parse torrent info: %1 Nepavyko išanalizuoti torento informacijos: %1 - + Cannot parse torrent info: invalid format Negalima išanalizuoti torento informacijos: netinkamas formatas - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Nepavyko išsaugoti torento metaduomenų '%1'. Klaida: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Nepavyko išsaugoti torrent atnaujinimo duomenų į '%1'. Klaida: %2. - + Couldn't load torrents queue: %1 Nepavyko įkelti torrentų eilės: %1 - + Cannot parse resume data: %1 Nepavyko išanalizuoti atnaujinimo duomenų: %1 - + Resume data is invalid: neither metadata nor info-hash was found Netinkami atnaujinimo duomenys: nerasta nei metaduomenų, nei hash informacijos - + Couldn't save data to '%1'. Error: %2 Nepavyko išsaugoti duomenų '%1'. Klaida: %2 @@ -2078,38 +2123,38 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat BitTorrent::DBResumeDataStorage - + Not found. Nerasta. - + Couldn't load resume data of torrent '%1'. Error: %2 Nepavyko įkelti torento '%1' atnaujinimo duomenų. Klaida: %2 - - + + Database is corrupted. Duomenų bazė yra pažeista. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2140,554 +2185,604 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON ĮJUNGTA - - - - - - - - - + + + + + + + + + OFF IŠJUNGTA - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + Siuntėjo ID: "%1" - + HTTP User-Agent: "%1" - + HTTP naudotojo agentas: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 Anoniminė veiksena: %1 - - + + Encryption support: %1 Šifravimo palaikymas: %1 - - + + FORCED PRIVERSTINAI - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". Torentas: "%1". - - - Removed torrent. - Pašalintas torentas. - - - - - - Removed torrent and deleted its content. - + Pašalintas torentas. - - - Torrent paused. - Torentas sustabdytas. + Torentas sustabdytas. - - - + Super seeding enabled. - + Super skleidimas įjungtas. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" - + Nepavyko įkelti torento. Priežastis: „%1“ - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - - UPnP/NAT-PMP support: OFF + + Saving resume data completed. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + BitTorrent session successfully finished. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Sistemos tinklo būsena pasikeitė į %1 + + Trackers are merged from new source + - ONLINE - PRISIJUNGTA + + UPnP/NAT-PMP support: OFF + - OFFLINE - ATSIJUNGTA + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Pasikeitė %1 tinklo konfigūracija, iš naujo įkeliamas seanso susiejimas + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent paused. Torrent: "%1" + Torentas pristabdytas. Torentas: „%1“ + + + Torrent resumed. Torrent: "%1" - + Torentas pratęstas. Torentas: „%1“ - + Torrent download finished. Torrent: "%1" - + Torento atsisiuntimas baigtas. Torentas: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Nepavyko išanalizuoti IP filtro failo - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Pridėtas naujas torentas. Torentas: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - + Pašalintas torentas. Torentas: "%1" - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filtras - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Nepavyko įkelti kategorijų. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 yra išjungta - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 yra išjungta - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Aptiktas išorinis IP adresas. IP: „%1“ - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - Operacija nutraukta - - - - - Create new torrent file failed. Reason: %1. + + Failed to start seeding. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operacija nutraukta + Operacija nutraukta + + + + + Create new torrent file failed. Reason: %1. + Nepavyko sukurti naujo torento failo. Priežastis: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Nepavyko pridėti siuntėjo: "%1" torentui "%2". Priežastis: %3 - + Peer "%1" is added to torrent "%2" Siuntėjas '%1' buvo pridėtas prie torento '%2' - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' Visų pirma atsisiųsti pirmą ir paskutinę dalį: %1, torentas: "%2" - + On Įjungta - + Off Išjungta - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata Trūksta metaduomenų - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Failo pervadinimas nepavyko. Torentas: "%1", failas: "%2", priežastis: "%3" - + Performance alert: %1. More info: %2 @@ -2708,184 +2803,198 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametras "%1" privalo atitikti sintaksę "%1=%2" - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametras "%1" privalo atitikti sintaksę "%1=%2" - + Expected integer number in environment variable '%1', but got '%2' Aplinkos kintamajame "%1" tikėtasi sveiko skaičiaus, tačiau gauta "%2" - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametras "%1" privalo atitikti sintaksę "%1=%2" + Parametras "%1" privalo atitikti sintaksę "%1=%2" - + Expected %1 in environment variable '%2', but got '%3' Aplinkos kintamajame "%2" tikėtasi %1, tačiau gauta "%3" - - + + %1 must specify a valid port (1 to 65535). %1 privalo nurodyti teisingą prievadą (1 iki 65535). - + Usage: Naudojimas: - + [options] [(<filename> | <url>)...] - + Options: Parinktys: - + Display program version and exit Rodyti programos versiją ir išeiti - + Display this help message and exit Rodyti šį pagalbos pranešimą ir išeiti - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametras "%1" privalo atitikti sintaksę "%1=%2" + + + + Confirm the legal notice + + + + + port prievadas - - Change the Web UI port - Pakeisti tinklo sąsajos prievadą + + Change the WebUI port + - + Change the torrenting port - + Disable splash screen Išjungti pradžios langą - + Run in daemon-mode (background) Vykdyti foniniame režime - + dir Use appropriate short form or abbreviation of "directory" katalogas - + Store configuration files in <dir> Laikyti konfigūracijos failus ties <dir> - - + + name pavadinimas - + Store configuration files in directories qBittorrent_<name> Laikyti konfigūracijos failus qBittorrent_<name> kataloguose - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Įsilaužti į libtorrent greitojo pratęsimo failus ir padaryti failų kelius santykinius profilio katalogui - + files or URLs failai ar URL - + Download the torrents passed by the user Atsisiųsti naudotojo perduotus torentus - + Options when adding new torrents: Parinktys, pridedant naujus torentus: - + path kelias - + Torrent save path Torento išsaugojimo kelias - + + Add torrents as running or stopped + + + Add torrents as started or paused - Pridėti torentus kaip pradėtus ar pristabdytus + Pridėti torentus kaip pradėtus ar pristabdytus - + Skip hash check Praleisti maišos tikrinimą - + Assign torrents to category. If the category doesn't exist, it will be created. Priskirti torentus kategorijai. Jeigu kategorijos nėra, ji bus sukurta. - + Download files in sequential order Atsisiųsti failus eilės tvarka - + Download first and last pieces first Visų pirma siųsti pirmas ir paskutines dalis - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Nurodyti ar pridedant torentą bus atveriamas "Pridėti naują torentą" dialogas - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Parinkties reikšmės gali būti pateikiamos per aplinkos kintamuosius. Parinkčiai, pavadinimu "parameter-name", aplinkos kintamojo pavadinimas bus "QBT_PARAMETER_NAME" (rašant didžiosiomis raidėmis, "-" pakeičiami "_"). Norėdami perduoti vėliavėlių reikšmes, nustatykite kintamąjį į "1" arba "TRUE". Pavyzdžiui, norint išjungti prisistatymo langą: - + Command line parameters take precedence over environment variables Komandų eilutės parametrai turi pirmumo teisę prieš aplinkos kintamuosius - + Help Žinynas @@ -2893,17 +3002,17 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat CategoryFilterModel - + Categories Kategorijos - + All Visi - + Uncategorized Be kategorijos @@ -2937,13 +3046,21 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat - Resume torrents - Pratęsti torentus + Start torrents + + Stop torrents + + + + Resume torrents + Pratęsti torentus + + Pause torrents - Pristabdyti torentus + Pristabdyti torentus @@ -2954,15 +3071,20 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat ColorWidget - + Edit... - + Taisyti... - + Reset Atstatyti + + + System + + CookiesDialog @@ -3003,12 +3125,12 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3016,7 +3138,7 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3035,23 +3157,27 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat - Also permanently delete the files + Also remove the content files - + Also permanently delete the files + Taip pat visam laikui ištrinti failus + + + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove Pašalinti @@ -3064,12 +3190,12 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat Atsisiųsti iš URL adresų - + Add torrent links Pridėti torentų nuorodas - + One link per line (HTTP links, Magnet links and info-hashes are supported) Po vieną nuorodą eilutėje (palaikomos HTTP nuorodos, Magnet nuorodos bei informacinės maišos) @@ -3079,12 +3205,12 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat Atsiųsti - + No URL entered Neįvestas URL - + Please type at least one URL. Įveskite bent vieną URL adresą. @@ -3244,63 +3370,86 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text - + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + Atsiunčiamas torentas... Šaltinis: „%1“ + + + Torrent is already present - Torentas jau yra + Torentas jau yra - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torentas '%1' jau yra perdavimo sąraše. Ar norite sujungti stebėjimo priemones iš naujo šaltinio? + Torentas '%1' jau yra perdavimo sąraše. Ar norite sujungti stebėjimo priemones iš naujo šaltinio? GeoIPDatabase - - + + Unsupported database file size. Nepalaikomas duomenų bazės failo dydis. - + Metadata error: '%1' entry not found. Metaduomenų klaida: "%1" įrašas nerastas. - + Metadata error: '%1' entry has invalid type. Metaduomenų klaida: "%1" įrašas turi netaisyklingą tipą. - + Unsupported database version: %1.%2 Nepalaikoma duomenų bazės versija: %1.%2 - + Unsupported IP version: %1 Nepalaikoma IP versija: %1 - + Unsupported record size: %1 Nepalaikomas įrašo dydis: %1 - + Database corrupted: no data section found. Duomenų bazė sugadinta: nerasta duomenų sekcija. @@ -3308,17 +3457,17 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http užklausos dydis viršija ribą, lizdas uždaromas. Riba: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Bloga Http užklausa, uždaromas lizdas. IP: %1 @@ -3359,36 +3508,64 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat IconWidget - + Browse... Naršyti... - + Reset Atstatyti - + Select icon - + Pasirinkti piktogramą - + Supported image files + + LegalNotice + + + Legal Notice + Teisinis pranešimas + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent yra dalijimosi failais programa. Vykdant torento siuntimą, jo duomenys bus prieinami kitiems išsiuntimo tikslais. Visas turinys, kuriuo dalinsitės, yra jūsų asmeninė atsakomybė. + + + + No further notices will be issued. + Daugiau apie tai nebus rodoma jokių pranešimų. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned "%1" buvo uždraustas @@ -3397,91 +3574,62 @@ Palaiko formatus: S01E01, 1x1, 2017.12.31 ir 31.12.2017 (Datos formatai taip pat Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 yra nežinomas komandų eilutės parametras. - - + + %1 must be the single command line parameter. %1 privalo būti vienas komandų eilutės parametras. - - You cannot use %1: qBittorrent is already running for this user. - Jūs negalite naudoti %1: programa qBittorrent šiam naudotojui jau yra vykdoma. - - - + Run application with -h option to read about command line parameters. Vykdykite programą su -h parinktimi, norėdami skaityti apie komandų eilutės parametrus. - + Bad command line Bloga komandų eilutė - + Bad command line: Bloga komandų eilutė: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Teisinis pranešimas + + You cannot use %1: qBittorrent is already running. + - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent yra dalijimosi failais programa. Vykdant torento siuntimą, jo duomenys bus prieinami kitiems išsiuntimo tikslais. Visas turinys, kuriuo dalinsitės, yra jūsų asmeninė atsakomybė. + + Another qBittorrent instance is already running. + - - No further notices will be issued. - Daugiau apie tai nebus rodoma jokių pranešimų. - - - - Press %1 key to accept and continue... - Spauskite mygtuką %1, jei sutinkate ir norite tęsti... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent yra dalijimosi failais programa. Vykdant torento siuntimą, jo duomenys bus prieinami kitiems išsiuntimo tikslais. Visas turinys, kuriuo dalinsitės, yra jūsų asmeninė atsakomybė. - -Daugiau apie tai nebus rodoma jokių pranešimų. - - - - Legal notice - Teisinis pranešimas - - - - Cancel - Atšaukti + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Sutinku + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3492,621 +3640,706 @@ Daugiau apie tai nebus rodoma jokių pranešimų. R&edaguoti - + &Tools Priem&onės - + &File &Failas - + &Help &Žinynas - + On Downloads &Done Už&baigus atsiuntimus - + &View Rod&ymas - + &Options... &Parinktys... - &Resume - &Tęsti + &Tęsti - + &Remove - + Ša&linti - + Torrent &Creator Su&kurti torentą - - + + Alternative Speed Limits Alternatyvūs greičio apribojimai - + &Top Toolbar Viršutinė įrankių juos&ta - + Display Top Toolbar Rodyti viršutinę įrankių juostą - + Status &Bar Būsenos &juosta - + Filters Sidebar - + Filtrų šoninė juosta - + S&peed in Title Bar &Greitis pavadinimo juostoje - + Show Transfer Speed in Title Bar Rodyti siuntimų greitį pavadinimo juostoje - + &RSS Reader &RSS skaitytuvas - + Search &Engine Paieškos &sistema - + L&ock qBittorrent Užra&kinti qBittorrent - + Do&nate! &Paaukoti! - + + Sh&utdown System + + + + &Do nothing &Nieko nedaryti - + Close Window Užverti langą - R&esume All - T&ęsti visus + T&ęsti visus - + Manage Cookies... Tvarkyti slapukus... - + Manage stored network cookies Tvarkyti kaupiamus tinklo slapukus - + Normal Messages Normalios žinutės - + Information Messages Informacinės žinutės - + Warning Messages Įspėjamosios žinutės - + Critical Messages Kritinės žinutės - + &Log Ž&urnalas - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Nustatyti visuotinius greičio apribojimus... - + Bottom of Queue Eilės apačia - + Move to the bottom of the queue Perkelti į eilės apačią - + Top of Queue Eilės viršus - + Move to the top of the queue Perkelti į eilės viršų - + Move Down Queue Perkelti eile žemyn - + Move down in the queue Judėti eile žemyn - + Move Up Queue Perkelti eile aukštyn - + Move up in the queue Judėti eile aukštyn - + &Exit qBittorrent Iš&eiti iš qBittorrent - + &Suspend System Pri&stabdyti sistemą - + &Hibernate System &Užmigdyti sistemą - S&hutdown System - Iš&jungti kompiuterį + Iš&jungti kompiuterį - + &Statistics &Statistika - + Check for Updates Tikrinti, ar yra atnaujinimų - + Check for Program Updates Tikrinti, ar yra programos atnaujinimų - + &About &Apie - &Pause - &Pristabdyti + &Pristabdyti - P&ause All - Prist&abdyti visus + Prist&abdyti visus - + &Add Torrent File... &Pridėti torento failą... - + Open Atverti - + E&xit Iš&eiti - + Open URL Atverti URL - + &Documentation &Žinynas - + Lock Užrakinti - - - + + + Show Rodyti - + Check for program updates Tikrinti, ar yra programos atnaujinimų - + Add Torrent &Link... Pridėti torento &nuorodą... - + If you like qBittorrent, please donate! Jei Jums patinka qBittorrent, paaukokite! - - + + Execution Log Vykdymo žurnalas - + Clear the password Išvalyti slaptažodį - + &Set Password &Nustatyti slaptažodį - + Preferences Nuostatos - + &Clear Password &Išvalyti slaptažodį - + Transfers Siuntimai - - + + qBittorrent is minimized to tray qBittorrent suskleista į dėklą - - - + + + This behavior can be changed in the settings. You won't be reminded again. Ši elgsena gali būti pakeista nustatymuose. Daugiau jums apie tai nebebus priminta. - + Icons Only Tik piktogramos - + Text Only Tik tekstas - + Text Alongside Icons Tekstas šalia piktogramų - + Text Under Icons Tekstas po piktogramomis - + Follow System Style Sekti sistemos stilių - - + + UI lock password Naudotojo sąsajos užrakinimo slaptažodis - - + + Please type the UI lock password: Įveskite naudotojo sąsajos užrakinimo slaptažodį: - + Are you sure you want to clear the password? Ar tikrai norite išvalyti slaptažodį? - + Use regular expressions Naudoti reguliariuosius reiškinius - - Search - Paieška + + + Search Engine + Paieškos sistema - - Transfers (%1) - Siuntimai (%1) + + Search has failed + Paieška nepavyko - Recursive download confirmation - Rekursyvaus siuntimo patvirtinimas + + Search has finished + Paieška baigta - Never - Niekada + + Search + Paieška + + + + Transfers (%1) + Siuntimai (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent ką tik buvo atnaujinta ir ją reikia paleisti iš naujo, norint, kad įsigaliotų nauji pakeitimai. - + qBittorrent is closed to tray qBittorrent užverta į dėklą - + Some files are currently transferring. Šiuo metu yra persiunčiami kai kurie failai. - + Are you sure you want to quit qBittorrent? Ar tikrai norite išeiti iš qBittorrent? - + &No &Ne - + &Yes &Taip - + &Always Yes &Visada taip - + Options saved. Parinktys išsaugotos. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Trūksta Python vykdymo aplinkos - + qBittorrent Update Available Yra prieinamas qBittorrent atnaujinimas - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Norint naudoti paieškos sistemą, būtinas Python interpretatorius, tačiau neatrodo, jog jis būtų įdiegtas. Ar norite įdiegti jį dabar? - + Python is required to use the search engine but it does not seem to be installed. Norint naudoti paieškos sistemą, būtinas Python interpretatorius, tačiau neatrodo, jog jis būtų įdiegtas. - - + + Old Python Runtime Sena Python vykdymo aplinka - + A new version is available. Yra prieinama nauja versija. - + Do you want to download %1? Ar norite atsisiųsti %1? - + Open changelog... Atverti keitinių žurnalą... - + No updates available. You are already using the latest version. Nėra prieinamų atnaujinimų. Jūs jau naudojate naujausią versiją. - + &Check for Updates &Tikrinti, ar yra atnaujinimų - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Jūsų Python versija (%1) yra pasenusi. Minimali yra: %2. Ar norite dabar įdiegti naujesnę versiją? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Jūsų Python versija (%1) yra pasenusi. Atnaujinkite į naujausią versiją, kad paieškos sistemos veiktų. Minimali versija yra: %2. - + + Paused + Pristabdyti + + + Checking for Updates... Tikrinama, ar yra atnaujinimų... - + Already checking for program updates in the background Šiuo metu fone jau ieškoma programos atnaujinimų... - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Atsiuntimo klaida - Python setup could not be downloaded, reason: %1. Please install it manually. - Python įdiegties atsiųsti nepavyko, priežastis: %1. + Python įdiegties atsiųsti nepavyko, priežastis: %1. Prašome padaryti tai rankiniu būdu. - - + + Invalid password Neteisingas slaptažodis - + Filter torrents... - + Filtruoti torentus... - + Filter by: - + Filtruoti pagal: - + The password must be at least 3 characters long Slaptažodis turi būti bent 3 simbolių ilgio - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torentą sudaro '%1' .torrent failų, ar norite tęsti jų atsisiuntimą? - - - + The password is invalid Slaptažodis yra neteisingas - + DL speed: %1 e.g: Download speed: 10 KiB/s Ats. greitis: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Išs. greitis: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [A: %1, I: %2] qBittorrent %3 - - - + Hide Slėpti - + Exiting qBittorrent Užveriama qBittorrent - + Open Torrent Files Atverti torentų failus - + Torrent Files Torentų failai @@ -4167,134 +4400,134 @@ Prašome padaryti tai rankiniu būdu. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O klaida: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) Nuotolinio serverio vardas nerastas (negaliojantis serverio vardas) - + The operation was canceled Operacijos buvo atsisakyta - + The remote server closed the connection prematurely, before the entire reply was received and processed Nuotolinis serveris per anksti nutraukė prisijungimą, nespėjus gauti bei apdoroti pilno atsakymo - + The connection to the remote server timed out Baigėsi prisijungimui prie nuotolinio serverio skirtas laikas - + SSL/TLS handshake failed SSL/TLS ryšio suderinimas nepavyko - + The remote server refused the connection Nuotolinis serveris atmetė ryšį - + The connection to the proxy server was refused Ryšys su įgaliotuoju serveriu buvo atmestas - + The proxy server closed the connection prematurely Įgaliotasis serveris per anksti nutraukė ryšį - + The proxy host name was not found Proxy hosto pavadinimas nebuvo rastas - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Baigėsi prisijungimui prie įgaliotojo serverio skirtas laikas arba įgaliotasis serveris laiku neatsakė į užklausą - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Įgaliotasis serveris reikalauja atpažinimo, norint įvykdyti užklausą, tačiau nepriėmė jokių siūlytų prisijungimo duomenų - + The access to the remote content was denied (401) Priėjimas prie nuotolinio turinio buvo uždraustas (401) - + The operation requested on the remote content is not permitted Su nuotoliniu turiniu užklausta operacija neleidžiama - + The remote content was not found at the server (404) Nuotolinis turinys serveryje nerastas (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Serveris reikalauja atpažinimo norėdamas pateikti turinį, tačiau nepriėmė jokių siūlytų prisijungimo duomenų - + The Network Access API cannot honor the request because the protocol is not known Tinklo prieigos API negali įvykdyti užklausos, nes užklausos protokolas nežinomas - + The requested operation is invalid for this protocol 100%match Užklausta operacija šiam protokolui yra neteisinga - + An unknown network-related error was detected Aptikta nežinoma tinklo klaida - + An unknown proxy-related error was detected Aptikta nežinoma su įgaliotuoju serveriu susijusi klaida - + An unknown error related to the remote content was detected Aptikta nežinoma su nuotoliniu turiniu susijusi klaida - + A breakdown in protocol was detected Protokole aptiktas gedimas - + Unknown error Nežinoma klaida @@ -4302,10 +4535,15 @@ Užklausta operacija šiam protokolui yra neteisinga Net::DownloadManager - - Ignoring SSL error, URL: "%1", errors: "%2" + + SSL error, URL: "%1", errors: "%2" + + + Ignoring SSL error, URL: "%1", errors: "%2" + Nepaisoma SSL klaidos, URL: „%1“, klaidos: „%2“ + Net::GeoIPManager @@ -5674,434 +5912,483 @@ Užklausta operacija šiam protokolui yra neteisinga BitTorrent - + RSS RSS - Web UI - Tinklo sąsaja + Tinklo sąsaja - + Advanced Išplėstinės - + Customize UI Theme... - + Transfer List Siuntimų sąrašas - + Confirm when deleting torrents Patvirtinti, kai ištrinama torentus - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Naudoti skirtingas eilučių spalvas - + Hide zero and infinity values Slėpti nulio ir begalybės reikšmes - + Always Visada - Paused torrents only - Tik pristabdytuose torentuose + Tik pristabdytuose torentuose - + Action on double-click Veiksmas, atliekamas du kartus spustelėjus - + Downloading torrents: Atsiunčiamus torentus: - - Start / Stop Torrent - Pratęsti / pristabdyti torentą + Pratęsti / pristabdyti torentą - - + + Open destination folder Atverti paskirties aplanką - - + + No action Jokio veiksmo - + Completed torrents: Užbaigtus torentus: - + Auto hide zero status filters - + Desktop Darbalaukis - + Start qBittorrent on Windows start up Paleisti qBittorrent Windows paleidimo metu - + Show splash screen on start up Paleidžiant programą rodyti prisistatymo langą - + Confirmation on exit when torrents are active Išeinant, klausti patvirtinimo, kai yra aktyvių siuntimų - + Confirmation on auto-exit when downloads finish Užbaigus atsiuntimus ir automatiškai išeinant, klausti patvirtinimo - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Torrent turinio išdėstymas: - + Original Pradinis - + Create subfolder Sukurti poaplankį - + Don't create subfolder Nesukurti poaplankio - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + Pridėti į eilės viršų - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Pridėti... - + Options.. Parinktys.. - + Remove Šalinti - + Email notification &upon download completion Pabaigus a&tsiuntimą, pranešti el. paštu - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Peer ryšio protokolas: - + Any Bet koks - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Maišyta veiksena - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + RSS kanalai naudos įgaliotąjį serverį - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering IP fi&ltravimas - + Schedule &the use of alternative rate limits Planuoti &alternatyvių greičio apribojimų naudojimą - + From: From start time Nuo: - + To: To end time Iki: - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption Leisti šifravimą - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Daugiau informacijos</a>) - + Maximum active checking torrents: - + &Torrent Queueing &Siuntimų eilė - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - Į naujus a&tsiuntimus, automatiškai pridėti šiuos seklius: + Į naujus a&tsiuntimus, automatiškai pridėti šiuos seklius: - + RSS Reader RSS skaitytuvė - + Enable fetching RSS feeds Įjungti RSS kanalų gavimą - + Feeds refresh interval: Kanalų įkėlimo iš naujo intervalas: - + + Same host request delay: + + + + Maximum number of articles per feed: Didžiausias įrašų kanale kiekis: - - - + + + min minutes min. - + Seeding Limits Skleidimo Apribojimai - Pause torrent - Pristabdyti torentą + Pristabdyti torentą - + Remove torrent Šalinti torentą - + Remove torrent and its files Šalinti torentą ir jo failus - + Enable super seeding for torrent Įgalinti super atidavimą torentui - + When ratio reaches Kai dalijimosi santykis pasieks - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS torentų automatinis atsiuntimas - + Enable auto downloading of RSS torrents Įjungti automatinį RSS torentų atsiuntimą - + Edit auto downloading rules... Taisyti automatinio atsiuntimo taisykles... - + RSS Smart Episode Filter RSS išmanusis epizodų filtras - + Download REPACK/PROPER episodes Atsisiųsti REPACK/PROPER epizodus - + Filters: Filtrai: - + Web User Interface (Remote control) Tinklo naudotojo sąsaja (Nuotolinis valdymas) - + IP address: IP adresas: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6110,42 +6397,41 @@ Nurodykite IPv4 ar IPv6 adresą. Bet kokiam IPv4 adresui galite nurodyti "0 Bet kokiam IPv6 adresui galite nurodyti "::", arba galite nurodyti "*" bet kokiam IPv4 ir IPv6. - + Ban client after consecutive failures: Uždrausti klientą po nuoseklių nesėkmių: - + Never Niekada - + ban for: draudimas: - + Session timeout: Sesijos laikas baigėsi - + Disabled Išjungta - Enable cookie Secure flag (requires HTTPS) - Įgalinti slapukų saugos žymą (reikalingas HTTPS) + Įgalinti slapukų saugos žymą (reikalingas HTTPS) - + Server domains: Serverio domenai: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6160,441 +6446,494 @@ Norėdami atskirti kelias reikšmes, naudokite ";". Galima naudoti pakaitos simbolį "*". - + &Use HTTPS instead of HTTP Na&udoti HTTPS vietoje HTTP - + Bypass authentication for clients on localhost Apeiti atpažinimą klientams, esantiems vietiniame serveryje - + Bypass authentication for clients in whitelisted IP subnets Apeiti atpažinimą klientams, kurie yra IP potinklių baltajame sąraše - + IP subnet whitelist... IP potinklių baltasis sąrašas... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Atn&aujinti mano dinaminį domeno vardą - + Minimize qBittorrent to notification area Suskleisti qBittorrent į pranešimų sritį - + + Search + Paieška + + + + WebUI + + + + Interface Sąsaja - + Language: Kalba: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Dėklo piktogramos stilius: - - + + Normal Įprasta - + File association Failų susiejimas - + Use qBittorrent for .torrent files Naudoti qBittorrent .torrent failams - + Use qBittorrent for magnet links Naudoti qBittorrent Magnet nuorodoms - + Check for program updates Tikrinti, ar yra programos atnaujinimų - + Power Management Energijos valdymas - + + &Log Files + + + + Save path: Išsaugojimo kelias: - + Backup the log file after: Daryti atsarginę žurnalo failo kopiją po: - + Delete backup logs older than: Ištrinti atsargines žurnalo kopijas, senesnes nei: - + + Show external IP in status bar + + + + When adding a torrent Kai pridedamas torentas - + Bring torrent dialog to the front Iškelti torento dialogo langą į priekį - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Taip pat ištrinti .torrent failus, kurių pridėjimas buvo atšauktas - + Also when addition is cancelled Taip pat, kai pridėjimas yra atšaukiamas - + Warning! Data loss possible! Įspėjimas! Galimas duomenų praradimas! - + Saving Management Išsaugojimo tvarkymas - + Default Torrent Management Mode: Numatytoji torento tvarkymo veiksena: - + Manual Rankinė - + Automatic Automatinė - + When Torrent Category changed: Kai pakeičiama torento kategorija: - + Relocate torrent Perkelti torentą - + Switch torrent to Manual Mode Perjungti torentą į rankinę veikseną - - + + Relocate affected torrents Perkelti paveiktus torentus - - + + Switch affected torrents to Manual Mode Perjungti paveiktus torentus į rankinę veikseną - + Use Subcategories Naudoti subkategorijas - + Default Save Path: Numatytasis išsaugojimo kelias: - + Copy .torrent files to: Kopijuoti .torrent failus į: - + Show &qBittorrent in notification area Rodyti &qBittorrent piktogramą pranešimų srityje - &Log file - Žu&rnalo failas + Žu&rnalo failas - + Display &torrent content and some options Rodyti &torento turinį ir keletą parinkčių - + De&lete .torrent files afterwards Po to ištri&nti .torrent failus - + Copy .torrent files for finished downloads to: Kopijuoti baigtų atsiuntimų .torrent failus į: - + Pre-allocate disk space for all files Iš anksto priskirti disko vietą visiems failams - + Use custom UI Theme Vartotojo UI temos pasirinkimas - + UI Theme file: UI temos byla: - + Changing Interface settings requires application restart Po sąsajos nustatymų keitimo qbittorrent būtina paleisti iš naujo - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - + Peržiūrėti failą, priešingu atveju atverti paskirties aplanką - - Show torrent options - Rodyti torento pasirinktis + Rodyti torento pasirinktis - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Palikti qBittorrent įrankių juostoje. - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading Neleisti užmigdyti sistemos, kai yra atsiunčiami torentai - + Inhibit system sleep when torrents are seeding Neleisti užmigdyti sistemos, kai yra skleidžiamas turinys - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days dienų - + months Delete backup logs older than 10 months mėnesių - + years Delete backup logs older than 10 years mėtų - + Log performance warnings Registruoti našumo įspėjimus - The torrent will be added to download list in a paused state - Torentas bus įtrauktas į atsisiuntimų sąrašą kaip pristabdytas + Torentas bus įtrauktas į atsisiuntimų sąrašą kaip pristabdytas - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Nepradėti atsiuntimų automatiškai - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Pridėti .!qB plėtinį nebaigtiems siųsti failams - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog Įjungti rekursyvaus atsiuntimo dialogą - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: Kai pasikeičia kategorijos išsaugojimo kelias: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + Lango būsena paleidus: - + qBittorrent window state on start up - + Torrent stop condition: - + Torento sustabdymo sąlyga: - - + + None Nė vienas - - + + Metadata received Metaduomenys gauti - - + + Files checked Failų patikrinta - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: Naudokite kitą kelią neužbaigtiems torentams: - + Automatically add torrents from: Automatiškai pridėti torentus iš: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6611,839 +6950,904 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Gavėjas - + To: To receiver Kam: - + SMTP server: SMTP serveris: - + Sender Siuntėjas - + From: From sender Nuo: - + This server requires a secure connection (SSL) Šis serveris reikalauja saugaus susijungimo (SSL) - - + + Authentication Atpažinimas - - - - + + + + Username: Naudotojo vardas: - - - - + + + + Password: Slaptažodis: - + Run external program - - - - - Run on torrent added - - - - - Run on torrent finished - + Paleisti išorinę programą - + Show console window Rodyti pulto langą - + TCP and μTP TCP ir μTP - + Listening Port Klausymosi prievadas - + Port used for incoming connections: Prievadas, naudojamas įeinantiems sujungimams: - + Set to 0 to let your system pick an unused port - + Random Atsitiktinis - + Use UPnP / NAT-PMP port forwarding from my router Naudoti UPnP / NAT-PMP prievadų nukreipimą mašrutizatoriuje - + Connections Limits Prisijungimų apribojimai - + Maximum number of connections per torrent: Didžiausias prisijungimų skaičius vienam torentui: - + Global maximum number of connections: Visuotinis didžiausias prisijungimų skaičius: - + Maximum number of upload slots per torrent: Didžiausias išsiuntimo prisijungimų skaičius vienam torentui: - + Global maximum number of upload slots: Visuotinis didžiausias leistinas išsiuntimo prisijungimų skaičius: - + Proxy Server Įgaliotasis serveris - + Type: Tipas: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Serveris: - - - + + + Port: Prievadas: - + Otherwise, the proxy server is only used for tracker connections Kitais atvejais įgaliotasis serveris naudojamas tik prisijungimams prie seklių - + Use proxy for peer connections Naudoti įgaliotąjį serverį susijungimams su siuntėjais - + A&uthentication A&tpažinimas - + Info: The password is saved unencrypted Informacija: Slaptažodis yra išsaugomas nešifruotai - + Filter path (.dat, .p2p, .p2b): Kelias iki filtro (.dat, .p2p, .p2b): - + Reload the filter Įkelti filtrą iš naujo - + Manually banned IP addresses... Rankiniu būdu uždrausti IP adresai... - + Apply to trackers Taikyti sekliams - + Global Rate Limits Visuotinis greičio ribojimas - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Išsiuntimo: - - + + Download: Atsiuntimo: - + Alternative Rate Limits Alternatyvūs greičio apribojimai - + Start time - + Pradžios laikas - + End time - + Pabaigos laikas - + When: Kada: - + Every day Kasdieną - + Weekdays Darbo dienomis - + Weekends Savaitgaliais - + Rate Limits Settings Greičio apribojimų nustatymai - + Apply rate limit to peers on LAN Taikyti greičio apribojimus siuntėjams LAN tinkle - + Apply rate limit to transport overhead Taikyti santykio apribojimą perdavimo pertekliui - - Apply rate limit to µTP protocol - Taikyti greičio apribojimus µTP protokolui + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + + Apply rate limit to µTP protocol + Taikyti greičio apribojimus µTP protokolui - + Privacy Privatumas - + Enable DHT (decentralized network) to find more peers Įjungti DHT (decentralizuotą tinklą), kad būtų rasta daugiau siuntėjų - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Keistis siuntėjais su suderinamais BitTorrent klientais (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Įjungti apsikeitimą siuntėjais (PeX), kad būtų rasta daugiau siuntėjų - + Look for peers on your local network Ieškoti siuntėjų vietiniame tinkle - + Enable Local Peer Discovery to find more peers Įjungti vietinių siuntėjų aptikimą, kad būtų rasta daugiau siuntėjų - + Encryption mode: Šifravimo veiksena: - + Require encryption Reikalauti šifravimo - + Disable encryption Išjungti šifravimą - + Enable when using a proxy or a VPN connection Įjunkite, kai naudojate įgaliotąjį serverį ar VPN ryšį - + Enable anonymous mode Įjungti anoniminę veikseną - + Maximum active downloads: Didžiausias aktyvių atsiuntimų skaičius: - + Maximum active uploads: Didžiausias aktyvių išsiuntimų skaičius: - + Maximum active torrents: Didžiausias aktyvių torentų skaičius: - + Do not count slow torrents in these limits Į šiuos apribojimus neįskaičiuoti lėtus torentus - + Upload rate threshold: Išsiuntimo greičio slenkstis: - + Download rate threshold: Atsiuntimo greičio slenkstis: - - - + + + + sec seconds sek. - + Torrent inactivity timer: Torento neveiklumo laikmatis: - + then , o tuomet - + Use UPnP / NAT-PMP to forward the port from my router Naudoti UPnP / NAT-PMP, siekiant nukreipti prievadą iš maršrutizatoriaus - + Certificate: Liudijimas: - + Key: Raktas: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informacija apie liudijimus</a> - + Change current password Keisti dabartinį slaptažodį - Use alternative Web UI - Naudoti alternatyvią tinklo naudotojo sąsają + Naudoti alternatyvią tinklo naudotojo sąsają - + Files location: Failų vieta: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Saugumas - + Enable clickjacking protection Įjungti apsaugą nuo spustelėjimų ant melagingų objektų - + Enable Cross-Site Request Forgery (CSRF) protection Įjungti apsaugą nuo užklausų tarp svetainių klastojimo (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Įjungti serverio antraštės patvirtinimą - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Paslauga: - + Register Registruotis - + Domain name: Domeno vardas: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Įjungdami šias parinktis, jūs galite <strong>neatšaukiamai prarasti</strong> savo .torrent failus! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Jeigu įjungsite antrą parinktį (&ldquo;Taip pat kai pridėjimas yra atšaukiamas&rdquo;), tuomet .torrent failas <strong>bus ištrinamas</strong> netgi tuo atveju, jei dialoge &ldquo;Pridėti torentą&rdquo; nuspausite &ldquo;<strong>Atsisakyti</strong>&rdquo; - + Select qBittorrent UI Theme file - + Choose Alternative UI files location Pasirinkti alternatyvią naudotojo sąsajos failų vietą - + Supported parameters (case sensitive): Palaikomi parametrai (skiriant raidžių dydį): - + Minimized - + Sumažinta - + Hidden - + Paslėpta - + Disabled due to failed to detect system tray presence - + No stop condition is set. Nenustatyta jokia sustabdymo sąlyga. - + Torrent will stop after metadata is received. Torentas bus sustabdytas gavus metaduomenis. - - Torrents that have metadata initially aren't affected. - Torentai, kurie iš pradžių turi metaduomenis, neturi įtakos. - - - + Torrent will stop after files are initially checked. Torentas bus sustabdytas, kai failai bus iš pradžių patikrinti. - + This will also download metadata if it wasn't there initially. Taip pat bus atsisiunčiami metaduomenys, jei jų iš pradžių nebuvo. - + %N: Torrent name %N: Torento pavadinimas - + %L: Category %L: Kategorija - + %F: Content path (same as root path for multifile torrent) %F: Turinio kelias (toks pats kaip šaknies kelias kelių failų torente) - + %R: Root path (first torrent subdirectory path) %R: Šaknies kelias (pirmas torento pakatalogio kelias) - + %D: Save path %D: Išsaugojimo kelias - + %C: Number of files %C: Failų skaičius - + %Z: Torrent size (bytes) %Z: Torento dydis (baitais) - + %T: Current tracker %T: Esamas seklys - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Patarimas: Tam, kad tekstas nebūtų apkirptas ties tarpais, rašykite parametrą kabutėse (pvz., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (jokio) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torentas bus laikomas lėtu, jeigu per "Torento neveiklumo laikmačio" sekundes jo atsiuntimo ir išsiuntimo greičiai išlieka žemiau šių reikšmių - + Certificate Liudijimas - + Select certificate Pasirinkti sertifikatą - + Private key Privatusis raktas - + Select private key Pasirink privatu raktą - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Pasirinkite aplanką, kurį stebėti - + Adding entry failed Įrašo pridėjimas nepavyko - - Location Error - Vietos klaida + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - Alternatyvi tinklo sąsajos failų vieta negali būti tuščia. + + Location Error + Vietos klaida - - + + Choose export directory Pasirinkite eksportavimo katalogą - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Žymės (atskirtos kableliais) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Pasirinkite išsaugojimo katalogą - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Pasirinkite IP filtrų failą - + All supported filters Visi palaikomi filtrai - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Analizavimo klaida - + Failed to parse the provided IP filter Nepavyko išanalizuoti pateikto IP filtro - + Successfully refreshed Sėkmingai atnaujinta - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Pateiktas IP filtras sėkmingai išanalizuotas. Pritaikytos %1 taisyklės. - + Preferences Nuostatos - + Time Error Laiko klaida - + The start time and the end time can't be the same. Pradžios bei pabaigos laikai negali sutapti. - - + + Length Error Ilgio klaida - - - The Web UI username must be at least 3 characters long. - Tinklo sąsajos naudotojo vardas privalo būti bent 3 simbolių ilgio. - - - - The Web UI password must be at least 6 characters long. - Tinklo sąsajos naudotojo slaptažodis privalo būti bent 6 simbolių ilgio. - PeerInfo - + Unknown Nežinoma - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic Šifruotas srautas - + Encrypted handshake + Šifruotas ryšio suderinimas + + + + Peer is using NAT hole punching @@ -7457,7 +7861,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/adresas @@ -7546,7 +7950,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Add peers... - + Pridėti siuntėjus... @@ -7601,7 +8005,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Siuntėjas "%1" rankiniu būdu buvo uždraustas - + N/A Nėra @@ -7624,7 +8028,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Norimų pridėti siuntėjų sąrašas (po vieną IP eilutėje): - + Format: IPv4:port / [IPv6]:port Formatas: IPv4:prievadas/ [IPv6]:prievadas @@ -7654,7 +8058,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Unavailable pieces - + Neprieinamos dalys @@ -7665,27 +8069,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Failų šioje dalyje: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information Norėdami matyti išsamesnę informaciją, laukite, kol taps prieinami metaduomenys - + Hold Shift key for detailed information Išsamesnei informacijai, laikykite nuspaudę Shift klavišą @@ -7698,58 +8102,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Paieškos papildiniai - + Installed search plugins: Įdiegti paieškos papildiniai: - + Name Pavadinimas - + Version Versija - + Url URL - - + + Enabled Įjungta - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Įspėjimas: Atsisiųsdami failus iš šių paieškos sistemų, būkite susipažinę su savo šalies autorių teisių įstatymais. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Įdiegti naują - + Check for updates Tikrinti, ar yra atnaujinimų - + Close Užverti - + Uninstall Pašalinti @@ -7869,17 +8273,17 @@ Tie papildiniai buvo išjungti. Papildinio šaltinis - + Search plugin source: Paieškos papildinio šaltinis: - + Local file Vietinis failas - + Web link Tinklo nuoroda @@ -7920,48 +8324,48 @@ Tie papildiniai buvo išjungti. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Peržiūra - + Name Pavadinimas - + Size Dydis - + Progress Eiga - + Preview impossible Peržiūra neįmanoma - + Sorry, we can't preview this file: "%1". 90%match Atsiprašome, tačiau negalime parodyti šio failo: "%1". - + Resize columns Keisti stulpelių dydį - + Resize all non-hidden columns to the size of their contents Pakeiskite visų nepaslėptų stulpelių dydį iki jų turinio dydžio @@ -7974,27 +8378,27 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". Private::FileLineEdit - + Path does not exist - + Kelio nėra - + Path does not point to a directory - + Kėlias nenurodo į katalogą - + Path does not point to a file - + Kelias nenurodo į failą - + Don't have read permission to path - + Don't have write permission to path @@ -8035,12 +8439,12 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". PropertiesWidget - + Downloaded: Atsisiųsta: - + Availability: Pasiekiamumas: @@ -8055,53 +8459,53 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1".Siuntimas - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktyvus: - + ETA: Dar liko laukti: - + Uploaded: Išsiųsta: - + Seeds: Skleidėjai: - + Download Speed: Atsiuntimo greitis: - + Upload Speed: Išsiuntimo greitis: - + Peers: Siuntėjai: - + Download Limit: Atsiuntimo riba: - + Upload Limit: Išsiuntimo riba: - + Wasted: Iššvaistyta: @@ -8111,193 +8515,249 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1".Prisijungimai: - + Information Informacija - + Info Hash v1: - + Info Hash v2: - + Comment: Komentaras: - + Select All Pažymėti viską - + Select None Nieko nežymėti - + Share Ratio: Dalijimosi santykis: - + Reannounce In: Atnaujinama po: - + Last Seen Complete: Paskutinį kartą matytas užbaigtu: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Bendras dydis: - + Pieces: Dalys: - + Created By: Sukūrė: - + Added On: Pridėta: - + Completed On: Užbaigta: - + Created On: Sukurtas: - + + Private: + + + + Save Path: Išsaugojimo kelias: - + Never Niekada - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (turima %3) - - + + %1 (%2 this session) %1 (%2 šiame seanse) - - + + + N/A Nėra - + + Yes + Taip + + + + No + Ne + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (skleidžiama jau %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (daugiausiai %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (viso %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (vidut. %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Naujas žiniatinklio šaltinis + Naujas žiniatinklio šaltinis - Remove Web seed - Pašalinti žiniatinklio šaltinį + Pašalinti žiniatinklio šaltinį - Copy Web seed URL - Kopijuoti žiniatinklio šaltinio URL + Kopijuoti žiniatinklio šaltinio URL - Edit Web seed URL - Redaguoti žiniatinklio šaltinio URL + Redaguoti žiniatinklio šaltinio URL - + Filter files... Filtruoti failus... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - Naujo šaltinio adresas + Naujo šaltinio adresas - New URL seed: - Naujo šaltinio adresas: + Naujo šaltinio adresas: - - This URL seed is already in the list. - Šis adresas jau yra sąraše. + Šis adresas jau yra sąraše. - + Web seed editing Žiniatinklio šaltinio redagavimas - + Web seed URL: Žiniatinklio šaltinio URL: @@ -8316,22 +8776,22 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1".Nepavyko įrašyti RSS automatinio atsiuntimo duomenų į %1. Klaida: %2 - + Invalid data format Klaidingas duomenų formatas - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Nepavyko įkelti RSS automatinio atsiuntimo taisyklių. Priežastis: %1 @@ -8339,24 +8799,24 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Nepavyko atsisiųsti RSS kanalo ties "%1". Priežastis: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS kanalas ties "%1" atnaujintas. Pridėta %2 naujų įrašų. - + Failed to parse RSS feed at '%1'. Reason: %2 Nepavyko išnagrinėti RSS kanalo ties "%1". Priežastis: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. - + RSS kanalas, esantis „%1“, yra sėkmingai atsisiųstas. Pradedama jį nagrinėti. @@ -8364,12 +8824,12 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". Failed to read RSS session data. %1 - + Nepavyko perskaityti RSS seanso duomenų. %1 Failed to save RSS feed in '%1', Reason: %2 - + Nepavyko įrašyti RSS kanalo ties „%1“, Priežastis: %2 @@ -8390,12 +8850,12 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". RSS::Private::Parser - + Invalid RSS feed. Neteisingas RSS kanalas. - + %1 (line: %2, column: %3, offset: %4). %1 (eilutė: %2, stulpelis: %3, poslinkis: %4). @@ -8403,99 +8863,99 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. RSS kanalas su nurodytu URL jau yra: %1. - + Feed doesn't exist: %1. - + Kanalo nėra: %1. - + Cannot move root folder. Nepavyksta perkelti šakninio aplanko. - - + + Item doesn't exist: %1. Elemento nėra: %1. - + Couldn't move folder into itself. - + Nepavyko perkelti aplanko į jį patį. - + Cannot delete root folder. Nepavyksta ištrinti šakninio aplanko. - + Failed to read RSS session data. %1 - + Nepavyko perskaityti RSS seanso duomenų. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Nepavyko įkelti RSS kanalo. Kanalas: „%1“. Priežastis: Reikia URL adreso. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Nepavyko įkelti RSS kanalo. Kanalas: „%1“. Priežastis: Neteisingas UID. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Rastas besidubliuojantis RSS kanalas. UID: „%1“. Klaida: Atrodo, kad konfigūracija yra sugadinta. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Neteisingas RSS elemento kelias: %1. - + RSS item with given path already exists: %1. RSS elementas su nurodytu keliu jau yra: %1. - + Parent folder doesn't exist: %1. Viršaplankio nėra: %1. @@ -8519,8 +8979,8 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". - - + + Mark items read Žymėti elementus kaip skaitytus @@ -8545,132 +9005,132 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1".Torentai: (norėdami atsisiųsti, dukart spustelėkite) - - + + Delete Ištrinti - + Rename... Pervadinti... - + Rename Pervadinti - - + + Update Atnaujinti - + New subscription... Nauja prenumerata... - - + + Update all feeds Atnaujinti visus kanalus - + Download torrent Atsisiųsti torentą - + Open news URL Atverti naujienos URL - + Copy feed URL Kopijuoti kanalo URL - + New folder... Naujas aplankas... - + Edit feed URL... - + Taisyti kanalo URL... - + Edit feed URL - + Taisyti kanalo URL - + Please choose a folder name Pasirinkite aplanko pavadinimą - + Folder name: Aplanko pavadinimas: - + New folder Naujas aplankas - - + + Please type a RSS feed URL Įrašykite RSS kanalo URL - - + + Feed URL: Kanalo URL: - + Deletion confirmation Ištrynimo patvirtinimas - + Are you sure you want to delete the selected RSS feeds? Ar tikrai norite ištrinti pasirinktus RSS kanalus? - + Please choose a new name for this RSS feed Pasirinkite šiam RSS kanalui naują pavadinimą - + New feed name: Naujas kanalo pavadinimas: - + Rename failed Pervadinimas nepavyko - + Date: Data: - + Feed: - + Kanalas: - + Author: Autorius: @@ -8678,38 +9138,38 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range Poslinkis yra už ribų - + All plugins are already up to date. Visi papildiniai yra naujausios versijos. - + Updating %1 plugins Atnaujinami %1 papildiniai - + Updating plugin %1 Atnaujinamas papildinys %1 - + Failed to check for plugin updates: %1 Nepavyko patikrinti ar papildiniui yra prieinami atnaujinimai: %1 @@ -8754,12 +9214,12 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". Minimum torrent size - + Minimalus torento dydis Maximum torrent size - + Maksimalus torento dydis @@ -8784,132 +9244,146 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1".Dydis: - + Name i.e: file name Pavadinimas - + Size i.e: file size Dydis - + Seeders i.e: Number of full sources Skleidėjai - + Leechers i.e: Number of partial sources Siuntėjai - Search engine - Paieškos sistema + Paieškos sistema - + Filter search results... Filtruoti paieškos rezultatus... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Rezultatai (rodoma <i>%1</i> iš <i>%2</i>): - + Torrent names only Tik torentų pavadinimuose - + Everywhere Visur - + Use regular expressions Naudoti reguliariuosius reiškinius - + Open download window - + Atverti atsiuntimo langą - + Download Atsisiųsti - + Open description page Atverti aprašo puslapį - + Copy Kopijuoti - + Name Pavadinimas - + Download link Atsiuntimo nuoroda - + Description page URL Aprašo puslapio URL - + Searching... Ieškoma... - + Search has finished Paieška baigta - + Search aborted Paieška nutraukta - + An error occurred during search... Paieškos metu įvyko klaida... - + Search returned no results Paieška negrąžino jokių rezultatų - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Stulpelio matomumas - + Resize columns Keisti stulpelių dydį - + Resize all non-hidden columns to the size of their contents Pakeiskite visų nepaslėptų stulpelių dydį iki jų turinio dydžio @@ -8917,104 +9391,104 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". SearchPluginManager - + Unknown search engine plugin file format. Nežinomas paieškos sistemos papildinio failo formatas. - + Plugin already at version %1, which is greater than %2 Papildinys jau yra %1 versijos, kuri naujesnė nei %2 - + A more recent version of this plugin is already installed. Jau yra įdiegta naujesnė šio papildinio versija. - + Plugin %1 is not supported. Papildinys %1 nėra palaikomas. - - + + Plugin is not supported. Papildinys nepalaikomas. - + Plugin %1 has been successfully updated. Papildinys %1 buvo sėkmingai atnaujintas. - + All categories Visos kategorijos - + Movies Filmai - + TV shows TV laidos - + Music Muzika - + Games Žaidimai - + Anime Anime - + Software Programinė įranga - + Pictures Paveikslai - + Books Knygos - + Update server is temporarily unavailable. %1 Atnaujinimų serveris laikinai neprieinamas. %1 - - + + Failed to download the plugin file. %1 Nepavyko atsisiųsti papildinio failo. %1 - + Plugin "%1" is outdated, updating to version %2 Papildinys "%1" yra pasenęs, atnaujinama į %2 versiją - + Incorrect update info received for %1 out of %2 plugins. %1 iš %2 papildinių gauta neteisinga atnaujinimo informacija. - + Search plugin '%1' contains invalid version string ('%2') Paieškos papildinyje "%1" yra neteisinga versijos eilutė ('%2') @@ -9024,114 +9498,153 @@ Atsiprašome, tačiau negalime parodyti šio failo: "%1". - - - - Search Paieška - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Nėra įdiegta jokių paieškos papildinių. Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką "Paieškos papildiniai...". - + Search plugins... Paieškos papildiniai... - + A phrase to search for. Frazė, kurios ieškoti. - + Spaces in a search term may be protected by double quotes. Tarpai paieškos žodžiuose gali būti išsaugoti dvigubomis kabutėmis. - + Example: Search phrase example Pavyzdys: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: bus ieškoma <b>foo bar</b> - + All plugins Visi papildiniai - + Only enabled Tik įjungti - + + + Invalid data format. + Neteisingas duomenų formatas. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: bus ieškoma <b>foo</b> ir <b>bar</b> - + + Refresh + + + + Close tab Užverti kortelę - + Close all tabs Užverti visas korteles - + Select... Pasirinkti... - - - + + Search Engine Paieškos sistema - + + Please install Python to use the Search Engine. Norėdami naudoti paieškos sistemą, įdiekite Python. - + Empty search pattern Tuščias paieškos raktažodis - + Please type a search pattern first Visų pirma nurodykite paieškos raktažodį - + + Stop Stabdyti - Search has finished - Paieška baigta + Paieška baigta - Search has failed - Paieška nepavyko + Paieška nepavyko + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9240,38 +9753,38 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Speed limits - + Greičio apribojimai - + Upload: Išsiuntimo: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Atsiuntimo: - + Alternative speed limits Alternatyvūs greičio apribojimai @@ -9369,7 +9882,7 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo 3 Hours - 24 valandos {3 ?} + 3 valandos @@ -9463,32 +9976,32 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Vidutinė laukimo eilėje trukmė: - + Connected peers: Prisijungusių siuntėjų: - + All-time share ratio: Viso laikotarpio dalijimosi santykis: - + All-time download: Viso laikotarpio atsiuntimas: - + Session waste: Iššvaistyta per seansą: - + All-time upload: Viso laikotarpio išsiuntimas: - + Total buffer size: Bendras buferio dydis: @@ -9503,12 +10016,12 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo I/O darbai eilėje: - + Write cache overload: Rašymo podėlio perkrova: - + Read cache overload: Skaitymo podėlio perkrova: @@ -9527,51 +10040,67 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo StatusBar - + Connection status: Prisijungimo būsena: - - + + No direct connections. This may indicate network configuration problems. Nėra tiesioginių susijungimų. Tai gali reikšti tinklo nustatymo problemas. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 mazgų - + qBittorrent needs to be restarted! qBittorrent turi būti paleista iš naujo! - - - + + + Connection Status: Prisijungimo būsena: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Neprisijungta. Tai dažniausiai reiškia, jog qBittorrent nepavyko klausytis ties pasirinktu prievadu. - + Online Prisijungta - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Spauskite, jei norite įjungti alternatyvius greičio apribojimus - + Click to switch to regular speed limits Spauskite, jei norite įjungti įprastus greičio apribojimus @@ -9600,14 +10129,22 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Užbaigti (0) - Resumed (0) - Pratęsti (0) + Pratęsti (0) - Paused (0) - Pristabdyti (0) + Pristabdyti (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9637,12 +10174,12 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Checking (0) - + Tikrinami (0) Moving (0) - + Perkeliami (0) @@ -9669,25 +10206,42 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Completed (%1) Užbaigti (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pristabdyti (%1) + Pristabdyti (%1) Moving (%1) - + Perkeliami (%1) - Resume torrents - Prastęsti torentus + Prastęsti torentus - Pause torrents - Pristabdyti torentus + Pristabdyti torentus @@ -9695,9 +10249,8 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Pašalinti torentai - Resumed (%1) - Pratęsti (%1) + Pratęsti (%1) @@ -9727,7 +10280,7 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo Checking (%1) - + Tikrinami (%1) @@ -9738,17 +10291,17 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo TagFilterModel - + Tags Žymės - + All Visos - + Untagged Be žymių @@ -9756,52 +10309,64 @@ Norėdami juos įdiegti, spustelėkite lango apatinėje dešinėje mygtuką &quo TagFilterWidget - + Add tag... Pridėti žymę... - + Remove tag Šalinti žymę - + Remove unused tags Šalinti nenaudojamas žymes - Resume torrents - Pratęsti torentus + Pratęsti torentus - Pause torrents - Pristabdyti torentus + Pristabdyti torentus - + Remove torrents Pašalinti torentai - New Tag - Nauja žymė + Nauja žymė + + + + Start torrents + + + + + Stop torrents + - + Tag: Žymė: - + + Add tag + + + + Invalid tag name Neteisingas žymės pavadinimas - + Tag name '%1' is invalid Žymės pavadinimas "%1" yra neteisingas @@ -9941,32 +10506,32 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TorrentContentModel - + Name Vardas - + Progress Eiga - + Download Priority Atsiuntimo svarba - + Remaining Liko - + Availability Prieinamumas - + Total Size Bendras dydis @@ -10011,102 +10576,120 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TorrentContentWidget - + Rename error Pervadinimo klaida - + Renaming Pervadinimas - + New name: Naujas pavadinimas: - + Column visibility Stulpelio matomumas - + Resize columns Keisti stulpelių dydį - + Resize all non-hidden columns to the size of their contents Pakeiskite visų nepaslėptų stulpelių dydį iki jų turinio dydžio - + Open Atverti - + Open containing folder Atverti vidinį aplanką - + Rename... Pervadinti... - + Priority Svarba - - + + Do not download Nesiųsti - + Normal Įprasta - + High Aukšta - + Maximum Aukščiausia - + By shown file order Pagal rodomą failų tvarką - + Normal priority Normalios svarbos - + High priority Didelės svarbos - + Maximum priority Maksimalios svarbos - + Priority by shown file order Svarbumas pagal rodomą failų tvarką + + TorrentCreatorController + + + Too many active tasks + Per daug aktyvių užduočių + + + + Torrent creation is still unfinished. + Torento sukūrimas yra vis dar neužbaigtas. + + + + Torrent creation failed. + Nepavyko sukurti torento. + + TorrentCreatorDialog @@ -10131,13 +10714,13 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. - + Select file Pasirinkti failą - + Select folder Pasirinkti aplanką @@ -10149,12 +10732,12 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Torrent format: - + Torento formatas: Hybrid - + Hibridinis @@ -10162,58 +10745,10 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Dalies dydis: - + Auto nustatyti automatiškai - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10260,92 +10795,83 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Laukai - + You can separate tracker tiers / groups with an empty line. Tuščia eilute galite atskirti seklius į pakopas / grupes. - + Web seed URLs: Saityno skleidimo URL adresai: - + Tracker URLs: Seklių URL: - + Comments: Komentarai: - + Source: Šaltinis: - + Progress: Eiga: - + Create Torrent Sukurti torentą - - + + Torrent creation failed Torento sukūrimas nepavyko - + Reason: Path to file/folder is not readable. Priežastis: Kelias į failą/aplanką nėra skaitomas. - + Select where to save the new torrent Pasirinkite kur išsaugoti naują torentą - + Torrent Files (*.torrent) Torentų failai (*.torrent) - - Reason: %1 - Priežastis: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Priežastis: „%1“ - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - Priežastis: Sukurtas torentas yra sugadintas. Jis nebus pridėtas į siuntimų sąrašą. - - - + Torrent creator Sukurti torentą - + Torrent created: Torentas sukurtas: @@ -10353,32 +10879,32 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10386,27 +10912,27 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10414,14 +10940,8 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Neteisingi metaduomenys + Neteisingi metaduomenys @@ -10429,7 +10949,7 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Torrent Options - + Torento parinktys @@ -10452,127 +10972,191 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Neužbaigtam torrentui naudokite kitą kelią - + Category: Kategorija: - - Torrent speed limits + + Torrent Share Limits - + Torrent speed limits + Torento greičio apribojimai + + + Download: Atsiuntimo: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits - + Upload: Išsiuntimo: - - Torrent share limits - - - - Use global share limit - Naudoti visuotinį dalinimosi apribojimą + Naudoti visuotinį dalinimosi apribojimą - Set no share limit - Nenustatinėti jokio dalinimosi apribojimo + Nenustatinėti jokio dalinimosi apribojimo - Set share limit to - Nustatyti dalinimosi apribojimą į + Nustatyti dalinimosi apribojimą į - ratio - santykis - - - - total minutes - - - - - inactive minutes - + santykis - + Disable DHT for this torrent - + Download in sequential order Siųsti dalis iš eilės - + Disable PeX for this torrent - + Download first and last pieces first Visų pirma siųsti pirmas ir paskutines dalis - + Disable LSD for this torrent - + Currently used categories - - + + Choose save path Rinktis išsaugojimo kelią. - + Not applicable to private torrents - + Netaikoma privatiems torentams - No share limit method selected - Nepasirinktas joks dalijimosi apribojimo metodas + Nepasirinktas joks dalijimosi apribojimo metodas - Please select a limit method first - Iš pradžių, pasirinkite apribojimų metodą + Iš pradžių, pasirinkite apribojimų metodą + + + + TorrentShareLimitsWidget + + + + + + Default + Numatytasis + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min. + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Šalinti torentą + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Įgalinti super atidavimą torentui + + + + Ratio: + Santykis: @@ -10580,35 +11164,39 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Torrent Tags - + Torento žymės - New Tag - Nauja žymė + Nauja žymė + Add tag + + + + Tag: Žymė: - + Invalid tag name Neteisingas žymės pavadinimas - + Tag name '%1' is invalid. - + Tag exists Žymė yra - + Tag name already exists. Žymės pavadinimas jau yra. @@ -10616,115 +11204,130 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TorrentsController - + Error: '%1' is not a valid torrent file. Klaida: '%1' nėra taisyklingas torento failas. - + Priority must be an integer Svarba privalo būti sveikasis skaičius - + Priority is not valid Svarba yra neteisinga - + Torrent's metadata has not yet downloaded Torento metaduomenys dar nebuvo atsisiųsti - + File IDs must be integers Failų ID privalo būti sveikieji skaičiai - + File ID is not valid Failo ID yra neteisingas - - - - + + + + Torrent queueing must be enabled Privalo būti įjungta siuntimų eilė - - + + Save path cannot be empty Išsaugojimo kelias negali būti tuščias - - + + Cannot create target directory - - + + Category cannot be empty Kategorija negali būti tuščia - + Unable to create category Nepavyko sukurti kategorijos - + Unable to edit category Nepavyko taisyti kategorijos - + Unable to export torrent file. Error: %1 - + Cannot make save path Nepavyksta sukurti išsaugojimo kelio - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Nepavyksta rašyti į katalogą - + WebUI Set location: moving "%1", from "%2" to "%3" Tinklo sąsaja Nustatyti vietą: perkeliama "%1", iš "%2" į "%3" - + Incorrect torrent name Neteisingas torento pavadinimas - - + + Incorrect category name Neteisingas kategorijos pavadinimas @@ -10750,253 +11353,211 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TrackerListModel - - + Working - Veikia + Veikia - + Disabled - Išjungta + Išjungta - + Disabled for this torrent - Išjungta šiam torentui + Išjungta šiam torentui - + This torrent is private - Šis torentas yra privatus + Šis torentas yra privatus - + N/A - Nėra + Nėra - + Updating... - Atnaujinama... + Atnaujinama... - + Not working - Neveikia + Neveikia - + Tracker error - + Unreachable - + Nepasiekiamas - + Not contacted yet - Dar nesusisiekta + Dar nesusisiekta - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Pakopa + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Neteisinga būsena! + Tier + Pakopa + + Protocol - + Protokolas - + Status - Būsena + Būsena - + Peers - Siuntėjai + Siuntėjai - + Seeds - Skleidėjai + Skleidėjai - + Leeches - Siunčia + Siunčia - + Times Downloaded - + Parsiųsta kartų - + Message - Žinutė + Žinutė - Next announce - + Kitas skelbimas - Min announce - + Mažiausias skelbimas - v%1 - + v%1 TrackerListWidget - Working - Veikia - - - Disabled - Išjungta - - - Disabled for this torrent - Išjungta šiam torentui - - - + This torrent is private Šis torentas yra privatus - Updating... - Atnaujinama... - - - Not working - Neveikia - - - Not contacted yet - Dar nesusisiekta - - - N/A - Nėra - - - + Tracker editing Seklio taisymas - + Tracker URL: Seklio URL: - - + + Tracker editing failed Nepavyko taisyti seklio - + The tracker URL entered is invalid. Įvestas netaisyklingas seklio URL. - + The tracker URL already exists. Toks seklio URL jau yra. - + Edit tracker URL... Taisyti seklio URL... - + Remove tracker Šalinti seklį - + Copy tracker URL Kopijuoti seklio URL - + Force reannounce to selected trackers Priverstinai siųsti atnaujinimus pasirinktiems sekliams - + Force reannounce to all trackers Priverstinai siųsti atnaujinimus visiems sekliams - Tier - Pakopa - - - URL - URL - - - Status - Būsena - - - Seeds - Skleidėjai - - - + Resize columns Keisti stulpelių dydį - + Resize all non-hidden columns to the size of their contents Pakeiskite visų nepaslėptų stulpelių dydį iki jų turinio dydžio - Peers - Siuntėjai - - - + Add trackers... - Leeches - Siunčia - - - Message - Žinutė - - - + Column visibility Stulpelio matomumas @@ -11014,37 +11575,37 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Norimų pridėti seklių sąrašas (po vieną eilutėje): - + µTorrent compatible list URL: Suderinamo su µTorrent sąrašo URL: - + Download trackers list - + Add Pridėti - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11052,83 +11613,70 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TrackersFilterWidget - All (0) - this is for the tracker filter - Visi (0) - - - Trackerless (0) - Be seklių (0) - - - Error (0) - Klaida (0) - - - Warning (0) - Įspėjimas (0) - - - Error (%1) - Klaida (%1) - - - + Warning (%1) Įspėjimas (%1) - + Trackerless (%1) Be seklių (%1) - + Tracker error (%1) - + Other error (%1) - + Kita klaida (%1) - + Remove tracker - Šalinti seklį + Šalinti seklį + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Prastęsti torentus + Prastęsti torentus - Pause torrents - Pristabdyti torentus + Pristabdyti torentus - + Remove torrents Pašalinti torentai - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Visi (%1) @@ -11137,7 +11685,7 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TransferController - + 'mode': invalid argument @@ -11230,9 +11778,8 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Tikrinami pratęsimo duomenys - Paused - Pristabdyti + Pristabdyti @@ -11257,220 +11804,262 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Klaida - + Name i.e: torrent name Pavadinimas - + Size i.e: torrent size Dydis - + Progress % Done Eiga - Status Torrent status (e.g. downloading, seeding, paused) - Būsena + Būsena - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Būsena + + + Seeds i.e. full sources (often untranslated) Skleidėjai - + Peers i.e. partial sources (often untranslated) Siuntėjai - + Down Speed i.e: Download speed Ats. greitis - + Up Speed i.e: Upload speed Išs. greitis - + Ratio Share ratio Santykis - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Liko - + Category Kategorija - + Tags Žymės - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Pridėta - + Completed On Torrent was completed on 01/01/2010 08:00 Užbaigta - + Tracker Seklys - + Down Limit i.e: Download limit Ats. riba - + Up Limit i.e: Upload limit Išs. riba - + Downloaded Amount of data downloaded (e.g. in MB) Atsiųsta - + Uploaded Amount of data uploaded (e.g. in MB) Išsiųsta - + Session Download Amount of data downloaded since program open (e.g. in MB) Atsiųsta per seansą - + Session Upload Amount of data uploaded since program open (e.g. in MB) Išsiųsta per seansą - + Remaining Amount of data left to download (e.g. in MB) Liko - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktyvus + + + + Yes + Taip + + + + No + Ne + + Time Active Time (duration) the torrent is active (not paused) - Aktyvus + Aktyvus - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Užbaigta - + Ratio Limit Upload share ratio limit Dalijimosi santykio riba - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Paskutinį kartą matytas užbaigtu - + Last Activity Time passed since a chunk was downloaded/uploaded Paskutinė veikla - + Total Size i.e. Size including unwanted data Bendras dydis - + Availability The number of distributed copies of the torrent Prieinamumas - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Nėra - + %1 ago e.g.: 1h 20m ago prieš %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (skleidžiama jau %2) @@ -11479,334 +12068,346 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. TransferListWidget - + Column visibility Stulpelio matomumas - + Recheck confirmation Pertikrinimo patvirtinimas - + Are you sure you want to recheck the selected torrent(s)? Ar tikrai norite pertikrinti pasirinktą torentą (-us)? - + Rename Pervadinti - + New name: Naujas vardas: - + Choose save path Pasirinkite išsaugojimo kelią - - Confirm pause - - - - Would you like to pause all torrents? - - - - - Confirm resume - + Ar norėtumėte pristabdyti visus torentus? - Would you like to resume all torrents? - + Ar norėtumėte pratęsti visus torentus? - + Unable to preview Nepavyko peržiūrėti - + The selected torrent "%1" does not contain previewable files Pasirinktas torentas "%1" neturi failų kuriuos būtu galima peržiūrėti - + Resize columns Keisti stulpelių dydį - + Resize all non-hidden columns to the size of their contents Pakeiskite visų nepaslėptų stulpelių dydį iki jų turinio dydžio - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Pridėti žymes + Pridėti žymes - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Failas tokiu pavadinimu jau yra - + Export .torrent file error - + Remove All Tags Šalinti visas žymes - + Remove all tags from selected torrents? Šalinti pasirinktiems torentams visas žymes? - + Comma-separated tags: Kableliais atskirtos žymės: - + Invalid tag Neteisinga žymė - + Tag name: '%1' is invalid Žymės pavadinimas: "%1" yra neteisingas - &Resume Resume/start the torrent - P&ratęsti + P&ratęsti - &Pause Pause the torrent - &Pristabdyti + &Pristabdyti - Force Resu&me Force Resume/start the torrent - Priverstinai pratę&sti + Priverstinai pratę&sti - + Pre&view file... Perž&iūrėti failą... - + Torrent &options... - + Torento &parinktys... - + Open destination &folder Atverti paskirties a&planką - + Move &up i.e. move up in the queue - + Pa&kelti - + Move &down i.e. Move down in the queue - + &Nuleisti - + Move to &top i.e. Move to top of the queue - + Perkelti į &viršų - + Move to &bottom i.e. Move to bottom of the queue - + Perkelti į &apačią - + Set loc&ation... - + Nustatyti vie&tą... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + &Magnet nuoroda - + Torrent &ID - + Torento &ID - + + &Comment + &Komentaras + + + &Name - + Pavadi&nimas - + Info &hash v1 - + Info h&ash v2 - + Re&name... Per&vadinti... - + Edit trac&kers... - + E&xport .torrent... - + E&ksportuoti .torrent... - + Categor&y - + Kategor&ija - + &New... New category... - + &Nauja... - + &Reset Reset category - + A&tstatyti - + Ta&gs - + Ž&ymės - + &Add... Add / assign multiple tags... &Pridėti... - + &Remove All Remove all tags + Ša&linti visas + + + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking - + &Queue - + &Eilė - + &Copy - + &Kopijuoti - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Siųsti dalis iš eilės - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Ša&linti - + Download first and last pieces first Visų pirma siųsti pirmas ir paskutines dalis - + Automatic Torrent Management Automatinis torento tvarkymas - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatinė veiksena reiškia, kad įvairios torento savybės (pvz., išsaugojimo kelias) bus nuspręstos pagal priskirtą kategoriją. - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Super skleidimo režimas @@ -11821,66 +12422,71 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Colors - + Spalvos Color ID - + Spalvos ID Light Mode - + Šviesi veiksena Dark Mode - + Tamsi veiksena Icons - + Piktogramos Icon ID - + Piktogramos ID - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Nepavyko pašalinti piktogramos failo. Failas: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Nepavyko nukopijuoti piktogramos failo. Šaltinis: %1. Paskirtis: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Nepavyko įkelti naudotojo sąsajos temos iš failo: %1 @@ -11911,34 +12517,27 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python aptikta, vykdomojo pavadinimas: "%1", versija: %2 - - - Python not detected - Python neaptikta - Found Python executable. Name: "%1". Version: "%2" @@ -11973,27 +12572,27 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Failo skaitymo klaida. Failas: „%1“. Klaida: „%2“ - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12018,7 +12617,7 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. Torrent parameters - + Torento parametrai @@ -12057,72 +12656,72 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Nepriimtinas failo tipas, yra leidžiamas tik įprastas failas. - + Symlinks inside alternative UI folder are forbidden. Simbolinės nuorodos alternatyvaus naudotojo sąsajos aplanko viduje yra uždraustos. - - Using built-in Web UI. - Naudojama įtaisytoji tinklo naudotojo sąsaja. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Naudojama tinkinta tinklo naudotojo sąsaja. Vieta: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Tinklo sąsajos vertimas pasirinktai lokalei (%1) sėkmingai įkeltas. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Nepavyko įkelti tinklo sąsajos vertimo pasirinktai lokalei (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Tinklo sąsaja: Kilmės antraštė ir Paskirties kilmė nesutampa! Šaltinio IP: "%1". Kilmės antraštė: "%2". Paskirties kilmė: "%3" - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Tinklo sąsaja: Nukreipėjo antraštė ir Paskirties kilmė nesutampa! Šaltinio IP: "%1". Nukreipėjo antraštė: "%2". Paskirties kilmė: "%3" - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Tinklo sąsaja: Neteisinga Serverio antraštė, prievadai nesutampa. Užklausos šaltinio IP: "%1". Serverio prievadas: "%2". Gauta Serverio antraštė: "%3" - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Tinklo sąsaja: Neteisinga Serverio antraštė. Užklausos šaltinio IP: "%1". Gauta Serverio antraštė: "%2" @@ -12130,143 +12729,136 @@ Pasirinkite kitokį pavadinimą ir bandykite dar kartą. WebUI - - Web UI: HTTPS setup successful - Tinklo sąsaja: HTTPS sąranka sėkminga + + Credentials are not set + Nėra nustatyti prisijungimo duomenys - - Web UI: HTTPS setup failed, fallback to HTTP - Tinklo sąsaja: HTTPS sąranka nepavyko, grįžtama prie HTTP + + WebUI: HTTPS setup successful + - - Web UI: Now listening on IP: %1, port: %2 - Tinklo sąsaja: Dabar klausomasi ties IP: %1, prievadas: %2 + + WebUI: HTTPS setup failed, fallback to HTTP + + + + + WebUI: Now listening on IP: %1, port: %2 + + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Tinklo sąsaja: Nepavyko susieti su IP: %1, prievadas: %2. Priežastis: %3 + + Unknown error + Nežinoma klaida misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 min. {1s?} + %1 sek. - + %1m e.g: 10 minutes - %1 min. + %1 min. - + %1h %2m e.g: 3 hours 5 minutes - %1 val. %2 min. + %1 val. %2 min. - + %1d %2h e.g: 2 days 10 hours - %1 d. %2 val. + %1 d. %2 val. - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1 val. %2 min. + %1y %2d - %1d %2h - e.g: 2days 10hours - %1 d. %2 val. - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Nežinoma - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent dabar išjungs kompiuterį, kadangi visi siuntimai baigti. - + < 1m < 1 minute < 1 min. - - %1m - e.g: 10minutes - %1 min. - diff --git a/src/lang/qbittorrent_ltg.ts b/src/lang/qbittorrent_ltg.ts index fcb6a0d18464..05a273c2341f 100644 --- a/src/lang/qbittorrent_ltg.ts +++ b/src/lang/qbittorrent_ltg.ts @@ -7,105 +7,110 @@ Par qBittorrent - + About Par - + Authors Autori - + Current maintainer Niulejais saiminīks - + Greece Grekeja - - + + Nationality: Piļsuoneiba: - - + + E-mail: E-posts: - - + + Name: Vuords: - + Original author Programmas radeituojs - + France Praņceja - + Special Thanks Cīši paļdis - + Translators Puorvārsuoji - + License Liceņceja - + Software Used Programatura - + qBittorrent was built with the following libraries: qBittorrent tika sastateits lītojūt ituos bibliotekas - + + Copy to clipboard + + + + An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. Izraisteita BitTorrent aplikaceja programeta C++ volūdā iz Qt toolkit i libtorrent-rasterbar bazas. - - Copyright %1 2006-2023 The qBittorrent project + + Copyright %1 2006-2024 The qBittorrent project - + Home Page: Sātyslopa: - + Forum: Forums: - + Bug Tracker: Par klaidom: - + The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License @@ -159,7 +164,7 @@ Izglobuot ite - + Never show again Vairuok naruodeit @@ -184,12 +189,12 @@ Suokt atsasyuteišonu - + Torrent information Torrenta inpormaceja - + Skip hash check Izlaist maiseituojkoda puorbaudi @@ -224,70 +229,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: Satvora izlikaliejums: - + Original - + Create subfolder Radeit zamapvuoci - + Don't create subfolder Naradeit zamapvuoci - + Info hash v1: Maiseituojkods v1: - + Size: Lelums: - + Comment: Komentars: - + Date: Data: @@ -317,234 +327,182 @@ Atguoduot pādejū izglobuošonas vītu - + Do not delete .torrent file Nedzēst torrenta failu - + Download in sequential order Atsasyuteit saksteiguo parādā - + Download first and last pieces first Paprīšķu atsasyuteit pyrmuos i pādejuos dalenis - + Info hash v2: Maiseituojkods v2: - + Select All Izlaseit vysys - + Select None Izlaseit nivīnu - + Save as .torrent file... Izglobuot kai .torrent failu... - + I/O Error I/O klaida - - - Invalid torrent - Nadereigs torrents - - - + Not Available This comment is unavailable Nav daīmams - + Not Available This date is unavailable Nav daīmams - + Not available Nav daīmams - - Invalid magnet link - Nadereiga magnetsaita - - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Naīsadevās īviļkt torrentu: %1. -Kleida: %2 - - - - This magnet link was not recognized - Itei magnetsaita nav atpazeistama. - - - + Magnet link Magnetsaita - + Retrieving metadata... Tiek izdabuoti metadati... - - + + Choose save path Izalaseit izglobuošonas vītu - - - - - - - Torrent is already present - Itys torrents jau ir dalikts - - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrents '%1' jau ir atsasyuteišonas sarokstā. Jaunie trakeri natika dalikti, deļtuo ka jis ir privats torrents. - - - - Torrent is already queued for processing. - - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - - - + + N/A Navā zynoms - - Magnet link is already queued for processing. - - - - + %1 (Free space on disk: %2) %1 (Breivas vītas uz diska: %2) - + Not available This size is unavailable. Nav daīmams - + Torrent file (*%1) Torrenta fails (*%1) - + Save as torrent file Izglobuot kai torrenta failu - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - - Cannot download '%1': %2 - Navar atsasyuteit '%1': %2 - - - + Filter files... Meklēt failuos... - - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. + + Parsing metadata... + Tiek apdareiti metadati... + + + + Metadata retrieval complete + Metadatu izdabuošana dabeigta + + + + AddTorrentManager + + + Downloading torrent... Source: "%1" - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + + Failed to add torrent. Source: "%1". Reason: "%2" - - Parsing metadata... - Tiek apdareiti metadati... + + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 + - - Metadata retrieval complete - Metadatu izdabuošana dabeigta + + Merging of trackers is disabled + - - Failed to load from URL: %1. -Error: %2 - Naīsadevās īviļkt nu URL: %1. -Kleida: %2 + + Trackers cannot be merged because it is a private torrent + - - Download Error - Atsasyuteišonas kleida + + Trackers are merged from new source + @@ -630,72 +588,77 @@ Kleida: %2 Izlaist maiseituojkoda puorbaudi - - - Choose save path - Izalaseit izglobuošonas vītu + + Torrent share limits + Torrenta kūplītuošonas reitinga rūbežs - - - - - - - Default - + + + Choose save path + Izalaseit izglobuošonas vītu + + + - Yes - Nui + Default + + Yes + Nui + + + + + No - + Manual Rūkvaļde - + Automatic Automatiskuo - + Original - + Create subfolder Radeit zamapvuoci - + Don't create subfolder Naradeit zamapvuoci - + None - + Metadata received - + Files checked @@ -703,597 +666,642 @@ Kleida: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Atkuortuotai puorsavērt torrentus piec atsasyuteišonas dabeigšonas. - - + + ms milliseconds ms - + Setting Fuņkcejas - + Value Value set for this setting Vierteiba - + (disabled) (atslēgts) - + (auto) (automatiski) - + min minutes myn - + All addresses Vysas adresas - + qBittorrent Section qBittorent izdola - - + + Open documentation Skaiteit dokumentaceju - + All IPv4 addresses Vysas IPv4 adresas - + All IPv6 addresses Vysas IPv6 adresas - + libtorrent Section libtorrent izdola - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Norma - + Below normal Zam normu - + Medium Vydyskys - + Low Zams - + Very low Cīši zams - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache Cītdiska vydatguods - - - - + + + + s seconds s - + Disk cache expiry interval Cītdiska vydatguoda dereiguma iņtervals - + Disk queue size - - + + Enable OS cache Lītuot sistemys vydatguodu - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) - + (system default) - + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP Dūt pyrmaileibu TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address Atļaut nazcik salaidumus nu vīnas IP adress - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names Ruodeit kūplītuotuoju datoru pasaukas - + IP address reported to trackers (requires restart) IP adress kū paviesteit trakeriem (vajadzeigs restarts) - + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + (Auto detect if empty) + + + + + Python executable path (may require restart) + + + + + Confirm removal of tracker from all torrents + + + + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + + Resets to default if empty + + + + + DHT bootstrap nodes + + + + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Ruodeit viesteņas - + Display notifications for added torrents Ruodeit viesteņas par daliktajiem torrentiem - + Download tracker's favicon Atsasyuteit trakera lopys ikonu - + Save path history length Izglobuošonas vītu viesturis garums - + Enable speed graphs Īslēgt dreizumu grafiku - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload Dreižuokā nūsasyuteišona - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck Apstyprynuot atkuortuotu torrenta puorvēri - + Confirm removal of all tags Apstyprynuot vysu byrku nūjimšonu - + Always announce to all trackers in a tier Vysod atjaunynuot datus ar vysim trakeriem grupā - + Always announce to all tiers Vysod atjaunynuot datus ar vysim trakeriem vysuos grupās - + Any interface i.e. Any network interface Automatiski - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries Ruodeit kūplītuotuoju vaļsteibas - + Network interface Škārsteikla sadurs: - + Optional IP address to bind to Dasaisteit papyldoma IP adresi: - + Max concurrent HTTP announces - + Enable embedded tracker Īslēgt īmontātuo trakeri - + Embedded tracker port Īmontāta trakera ports @@ -1301,96 +1309,120 @@ Kleida: %2 Application - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - Tika īslēgts qBittorrent %1 - - - + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 Niulejuos koņfiguracejis apvuocis: %1 - + Torrent name: %1 Torrenta pasauka: %1 - + Torrent size: %1 Torrenta lelums: %1 - + Save path: %1 Izglobuošonas vīta: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrents tika atsasyuteits %1 - + Thank you for using qBittorrent. Paļdis, ka lītojat qBittorrent. - + Torrent: %1, sending mail notification Torrents: %1, syuta posta viesteņu - + + Add torrent failed + + + + + Couldn't add torrent '%1', reason: %2. + + + + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. + + + + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit Izīt - + I/O Error i.e: Input/Output Error I/O klaida - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1399,120 +1431,100 @@ Kleida: %2 Īmesls: %2 - - Error - Klaida - - - - Failed to add torrent: %1 - Naīsadevās dalikt torrentu: %1 - - - + Torrent added Torrents dalikts - + '%1' was added. e.g: xxx.avi was added. '%1' tika dalikts. - + Download completed - + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + + + + '%1' has finished downloading. e.g: xxx.avi has finished downloading. '%1' atsasyuteišona ir dabeigta. - - URL download error - Puorstaipteikla atsasyuteišonas kleida + + Information + Inpormaceja - - Couldn't download file at URL '%1', reason: %2. + + To fix the error, you may need to edit the config file manually. - - Torrent file association + + To control qBittorrent, access the WebUI at: %1 - - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? + + Exit - - Information - Inpormaceja - - - - To control qBittorrent, access the WebUI at: %1 + + Recursive download confirmation - - The Web UI administrator username is: %1 - Tuolvaļdis riednīka slāgvuords ir: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Tuolvaļdis riednīka paroļs vys vēļ ir nūklusiejuma: %1 - - - - This is a security risk, please change your password in program preferences. - Jis ir drūsuma riskys. Lyudzam pasvērt paroļs meju. + + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? + - - Application failed to start. - Programu naīsadevās palaist + + Never + Nikod - - Exit + + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Izglobuo torrenta progressu... - + qBittorrent is now ready to exit @@ -1520,7 +1532,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Nāisadevās radeit apvuoci '%1'. @@ -1528,22 +1540,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI dasaslēgšuonās naīsadevās. Īmesls: IP adresa ir nūblokēta, IP: %1, lītuotuojs: %2 - + Your IP address has been banned after too many failed authentication attempts. Jiusu IP adress tika nūblokēta, nazcik nalūbeigu dasaslēgšuonās raudzejumu deļ. - + WebAPI login success. IP: %1 WebAPI dasaslēgšuonās lūbeiga: IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI dasaslēgšuonās naīsadevās. Īmesls: Nadereigi dati, raudzejumu skaits: %1, IP: %2, lītuotuojs: %3 @@ -1649,263 +1661,263 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." &Izglobuot fiļtrys... - + Matches articles based on episode filter. Meklej rezultatus piec epizozu fiļtra. - + Example: Pīvadums: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match filtrys atlaseis 2., 5., nū 8. leidz 15., 30. i tuoluokās pirmous sezonys epizozes. - + Episode filter rules: Epizozu filtrys: - + Season number is a mandatory non-zero value Sezonys numurs navar byut 0 - + Filter must end with semicolon Filtri vajag dabeigt ar komatpunkti - + Three range types for episodes are supported: Filtrym lītojami 3 parametri: - + Single number: <b>1x25;</b> matches episode 25 of season one Parametris: <b>1x25;</b> atlaseis tik 1. sezonys 25. epizodi - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Parametris: <b>1x25-40;</b> atlaseis tik 1. sezonys epizodes, nū 25. leidz 40. - + Episode number is a mandatory positive value Epizodys numurs navar byut negativs - + Rules Filtrys - + Rules (legacy) Filtrys (vacajs) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Parametris: <b>1x25-;</b> atlaseis vysas sezonas i epizodes, suokot ar 1. sezonas 25. epizodi. - + Last Match: %1 days ago Pādejī rezultati: pyrms %1 dīnu - + Last Match: Unknown Pādejī rezultati: nav - + New rule name Jauna fiļtra pasauka - + Please type the name of the new download rule. Lyudzu Īvoduot jauna fiļtra pasauku. - - + + Rule name conflict - - + + A rule with this name already exists, please choose another name. Fiļtrys ar itaidu pasauku jau ir, lyudzu izalaseit cytu pasauku. - + Are you sure you want to remove the download rule named '%1'? - + Are you sure you want to remove the selected download rules? - + Rule deletion confirmation Apstyprynuot iztreišonu - + Invalid action Nadereiga darbeiba - + The list is empty, there is nothing to export. Saroksts tukšs, nav kū izglobuot. - + Export RSS rules Izglobuot RSS fiļtru - + I/O Error I/O klaida - + Failed to create the destination file. Reason: %1 Naīsadevās radeit failu. Īmesls: %1 - + Import RSS rules Dalikt RSS fiļtru - + Failed to import the selected rules file. Reason: %1 Naīsadevās dalikt izalaseituo fiļtru. Īmesls: %1 - + Add new rule... Pīlikt jaunu fiļtri... - + Delete rule Iztreit fiļtri - + Rename rule... Puorsaukt fiļtri - + Delete selected rules Iztreit izalaseituos fiļtrus - + Clear downloaded episodes... - + Rule renaming Fiļtra puorsaukšona - + Please type the new rule name Lyudzu Īvoduot jauna fiļtra pasauku - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 Poziceja %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1947,53 +1959,58 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - - Couldn't save torrent metadata to '%1'. Error: %2. + + Mismatching info-hash detected in resume data + Couldn't save torrent metadata to '%1'. Error: %2. + + + + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2001,38 +2018,38 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2040,22 +2057,22 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2063,514 +2080,479 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON ĪGRĪZTS - - - - - - - - - + + + + + + + + + OFF NŪGRĪZTS - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED DASTATEIGS - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + + + Torrent: "%1". - - - + + + Removed torrent. - - - + + + Removed torrent and deleted its content. - - - + + + Torrent paused. - - - + + + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - - + Failed to load torrent. Reason: "%1" - - Downloading torrent, please wait... Source: "%1" - - - - - Failed to load torrent. Source: "%1". Reason: "%2" - - - - - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - - - - - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - - - - - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 + + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - + UPnP/NAT-PMP support: OFF - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 - - System network status changed to %1 - e.g: System network status changed to ONLINE - Škārsteikla salaiduma statuss puormeits da %1 - - - - ONLINE - - - - - OFFLINE - - - - - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - - - - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - + Torrent paused. Torrent: "%1" - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - - - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - - - - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - + + Removed torrent. Torrent: "%1" - + Removed torrent and deleted its content. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + BitTorrent session encountered a serious error. Reason: "%1" + + + + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - + URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreationTask - + + Failed to start seeding. + + + + + BitTorrent::TorrentCreator + + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2578,62 +2560,67 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' Paprīšķu atsasyuteit pyrmuos i pādejuos dalenis: %1, torrents: '%2' - + On Īslēgts - + Off Atslēgts - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2641,12 +2628,12 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." BitTorrent::Tracker - + Embedded Tracker: Now listening on IP: %1, port: %2 - + Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 @@ -2654,184 +2641,189 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: - + [options] [(<filename> | <url>)...] - + Options: Vareibas: - + Display program version and exit - + Display this help message and exit - - + + Confirm the legal notice + + + + + port ports - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" apvuocis - + Store configuration files in <dir> - - + + name pasauka - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs vaili voi saitys - + Download the torrents passed by the user - + Options when adding new torrents: - + path vīta - + Torrent save path Torrenta izglobuošonas vīta - + Add torrents as started or paused - + Skip hash check Izlaist maiseituojkoda puorbaudi - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order Atsasyuteit saksteiguo parādā - + Download first and last pieces first Paprīšķu atsasyuteit pyrmuos i pādejuos dalenis - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Paleigs @@ -2839,17 +2831,17 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." CategoryFilterModel - + Categories Kategorejas - + All Vysys - + Uncategorized Bez kategorejas @@ -2857,42 +2849,42 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." CategoryFilterWidget - + Add category... Pīlikt kategoreju... - + Add subcategory... Pīlikt zamkategoreju... - + Edit category... Lobuot kategoreju... - + Remove category Nūjimt kategoreju - + Remove unused categories Nūjimt nalītuotas kategorejas - + Resume torrents Aizsuokt torrentus - + Pause torrents Nūstuodeit torrentus - + Remove torrents @@ -2900,12 +2892,12 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." ColorWidget - + Edit... - + Reset Atstateit @@ -2949,12 +2941,12 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3093,7 +3085,7 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." FileLogger - + An error occurred while trying to open the log file. Logging to file is disabled. @@ -3189,6 +3181,29 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + + + + + Trackers cannot be merged because it is a private torrent + + + + + Torrent is already present + Itys torrents jau ir dalikts + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + + + GeoIPDatabase @@ -3282,26 +3297,54 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." IconWidget - + Browse... Apsavērt... - + Reset Atstateit - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel @@ -3320,77 +3363,61 @@ Formats: S01E01, 1x1, 2017.12.31 i 31.12.2017 (Datam škiramsimbola "." Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - - Legal Notice - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + An unrecoverable error occurred. - - No further notices will be issued. + + + qBittorrent has encountered an unrecoverable error. - - Press %1 key to accept and continue... + + You cannot use %1: qBittorrent is already running. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + Another qBittorrent instance is already running. - - Legal notice + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - Cancel - Atsaukt - - - - I Agree + + Error when daemonizing. Reason: "%1". Error code: %2. @@ -3680,12 +3707,12 @@ No further notices will be issued. - + Show Ruodeit - + Check for program updates Meklēt aplikacejis atjaunynuojumus @@ -3700,323 +3727,302 @@ No further notices will be issued. - - + + Execution Log - + Clear the password Nūteireit paroli - + &Set Password &Īstateit paroli - + Preferences Īstatejumi - + &Clear Password &Nūteireit paroli - + Transfers Torrenti - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only - + Text Only - + Text Alongside Icons - + Text Under Icons - + Follow System Style - - + + UI lock password - - + + Please type the UI lock password: - + Are you sure you want to clear the password? Voi drūši zini, ka gribi nūteireit paroli? - + Use regular expressions Lītuot Reguļaras izsaceibas - + Search Meklēt - + Transfers (%1) Torrenti (%1) - - Recursive download confirmation - - - - - Never - Nikod - - - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? Voi drūši zini, ka gribi aiztaiseit qBittorrent? - + &No &Nā - + &Yes &Nui - + &Always Yes &Vysod nui - + Options saved. - - %1/s - s is a shorthand for seconds - %1/s + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + - - + + Missing Python Runtime - + qBittorrent Update Available Daīmams qBittorrent atjaunynuojums - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime - + A new version is available. Daīmama jaunuoka verseja. - + Do you want to download %1? Voi gribi atsasyuteit %1? - + Open changelog... - + No updates available. You are already using the latest version. Navā atjaunynuojumu. Jyusim jau irā pošjaunais qBittorrent izlaidums. - + &Check for Updates &Meklēt atjaunynuojumus - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + Checking for Updates... Meklē atjaunynuojumus... - + Already checking for program updates in the background - + Download error Atsasyuteišonas kleida - + Python setup could not be downloaded, reason: %1. Please install it manually. - - + + Invalid password Nadereiga paroļs - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - - - + The password is invalid Paroļs navā dereigs - + DL speed: %1 e.g: Download speed: 10 KiB/s Atsasyut. dreizums: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Nūsasyut. dreizums: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [A: %1, N: %2] qBittorrent %3 - - - + Hide Naruodeit - + Exiting qBittorrent Aiztaiseit qBittorrent - + Open Torrent Files Izalaseit Torrentu failus - + Torrent Files Torrentu faili @@ -4077,133 +4083,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) Faila lelums (%1) viersej atļauto (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) - + The operation was canceled Darbeiba atsaukta - + The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out - + SSL/TLS handshake failed - + The remote server refused the connection - + The connection to the proxy server was refused - + The proxy server closed the connection prematurely - + The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known - + The requested operation is invalid for this protocol - + An unknown network-related error was detected - + An unknown proxy-related error was detected - + An unknown error related to the remote content was detected - + A breakdown in protocol was detected - + Unknown error Nazynoma kleida @@ -5598,456 +5604,471 @@ Please install it manually. Papyldvareibas - + Customize UI Theme... - + Transfer List Torrentu saroksts - + Confirm when deleting torrents - + Shows a confirmation dialog upon pausing/resuming all the torrents - + Confirm "Pause/Resume all" actions - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always Vysod - + Paused torrents only - + Action on double-click - + Downloading torrents: - - + + Start / Stop Torrent Suokt / Nūstuodeit torrentu - - + + Open destination folder Atkluot apvuoci - - + + No action - + Completed torrents: - + Auto hide zero status filters - + Desktop - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> + + + + KiB KiB - + Torrent content layout: Torrenta satvora izlikaliejums: - + Original - + Create subfolder Radeit zamapvuoci - + Don't create subfolder Naradeit zamapvuoci - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Pīlikt byrku... - + Options.. - + Remove - + Email notification &upon download completion - + Peer connection protocol: Kūplītuotuoju salaidumu protokols: - + Any - + I2P (experimental) - + <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits Īstateit laiku Aļternativuo kūpeiguo dreizumu lītuošonai - + From: From start time Nu: - + To: To end time Leidz: - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Vaira dazynuošonys</a>) - + Maximum active checking torrents: - + &Torrent Queueing Torrentu saroksts - + When total seeding time reaches - + When inactive seeding time reaches - + A&utomatically add these trackers to new downloads: Automatiski pīlikt šūs trakerus pi jaunīm torrentīm: - + RSS Reader RSS laseituojs - + Enable fetching RSS feeds Īgrīzt RSS laseituoju - + Feeds refresh interval: Īrokstu atsvīžeišonas iņtervals: - + + Same host request delay: + + + + Maximum number of articles per feed: Īrokstu skaits uz vīnu kanalu: - - - + + + min minutes myn - + Seeding Limits Nūsasyuteišonas rūbežas - + Pause torrent Nūstuodeit torrentu - + Remove torrent Nūjimt torrentu - + Remove torrent and its files Nūjimt torrentu i failus - + Enable super seeding for torrent Īgrīzt super-nūsasyuteišonu - + When ratio reaches - + RSS Torrent Auto Downloader RSS Automatiskys torrentu atsasyuteituojs - + Enable auto downloading of RSS torrents Īgrīzt RSS Automatiskuo atsasyuteišonu - + Edit auto downloading rules... Labuot RSS Automatiskys atsasyuteišonys īstatejumus... - + RSS Smart Episode Filter RSS Gudrais epizozu fiļtrys - + Download REPACK/PROPER episodes Atsasyuteit REPACK/PROPER epizodes - + Filters: Fiļtri: - + Web User Interface (Remote control) Tuolvaļdis sadurs (Web UI) - + IP address: IP adress: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Nikod - + ban for: nūlīgt dativi uz: - + Session timeout: - + Disabled Nūgrīzts - + Enable cookie Secure flag (requires HTTPS) Īgrīzt glabiņu Secure flag (vajadzeigs HTTPS) - + Server domains: Servera domeni: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6056,37 +6077,37 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP HTTP vītā lītuot HTTPS - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Atjaunynuot muna dinamiskuo domena pasauku - + Minimize qBittorrent to notification area @@ -6101,180 +6122,180 @@ Use ';' to split multiple entries. Can use wildcard '*'.Volūda - + Tray icon style: - - + + Normal Norma - + File association Failu asociaceja - + Use qBittorrent for .torrent files Lītuot qBittorrent priekš .torrent failim - + Use qBittorrent for magnet links Lītuot qBittorrent priekš Magnetsaitym - + Check for program updates Meklēt aplikacejis atjaunynuojumus - + Power Management Veikmis puorvolds - + Save path: Izglobuošonas vīta: - + Backup the log file after: - + Delete backup logs older than: - + When adding a torrent - + Bring torrent dialog to the front - + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management Saglabuošonas puorvoļds - + Default Torrent Management Mode: Nūklusiejuma Torrenta puorvaļdis režims: - + Manual Rūkvaļde - + Automatic Automatiskuo - + When Torrent Category changed: - + Relocate torrent Puorceļt torrentu - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories Lītuot zamkategorejas - + Default Save Path: Nūklusiejuma izglobuošonys vīta: - + Copy .torrent files to: Radeit .torrent failu puorspīdumu ite: - + Show &qBittorrent in notification area - + &Log file - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: Radeit .torrent failu puorspīdumu dabeigtīm torrentīm ite: - + Pre-allocate disk space for all files Laiceigi puordrūsynuot vītu uz diska jaunīm failīm - + Use custom UI Theme Lītuot cytu saduri - + UI Theme file: Sadurs fails: @@ -6284,213 +6305,213 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - + + Show torrent options - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days dīnu - + months Delete backup logs older than 10 months mienešīm - + years Delete backup logs older than 10 years godim - + Log performance warnings - + The torrent will be added to download list in a paused state - + Do not start the download automatically The torrent will be added to download list in a paused state Nasuokt atsasyuteišonu automatiski - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Dalikt .!qB golaini nadabeigtīm failīm - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6507,763 +6528,769 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Dabuojiejs - + To: To receiver Iz: - + SMTP server: SMTP servers: - + Sender Syuteituojs - + From: From sender Nu: - + This server requires a secure connection (SSL) - - + + Authentication - - - - + + + + Username: Lītuotuojs: - - - - + + + + Password: Paroļs: - + Run external program - + Run on torrent added - + Run on torrent finished - + Show console window - + TCP and μTP TCP i μTP - + Listening Port - + Port used for incoming connections: Ports priekš atīmūšim salaidumim: - + Set to 0 to let your system pick an unused port - + Random Navuošai - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits Salaidumu skaita rūbežas - + Maximum number of connections per torrent: Salaidumu skaits uz vīnu torrentu: - + Global maximum number of connections: Kūpeigais salaidumu skaits: - + Maximum number of upload slots per torrent: Nūsasyuteišonas slotu skaits uz vīnu torrentu: - + Global maximum number of upload slots: Kūpeigais nūsasyuteišonas slotu skaits: - + Proxy Server Vidinīkservers - + Type: Lītuot: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Saiminīks: - - - + + + Port: Ports: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections Lītuot vidinīkserveri kūplītuotuoju salaidumim - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): Fiļtrys vīta (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... Nūblokētās IP adresas... - + Apply to trackers Lītuot trakerym - + Global Rate Limits Golvonais kūpeigā dreizuma rūbežs - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Nūsasyuteišona: - - + + Download: Atsasyuteišona: - + Alternative Rate Limits Aļternativais kūpeigā dreizuma rūbežs - + Start time Suokšonas laiks - + End time Beigšonas laiks - + When: Kod: - + Every day Kas dīnys - + Weekdays Dorbadīnās - + Weekends Nedeļgolās - + Rate Limits Settings Dreizuma rūbežs īstatejumi - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + Apply rate limit to µTP protocol - + Privacy Privatums - + Enable DHT (decentralized network) to find more peers Īgrīzt DHT (nacentralizātū teiklu), lai atrastu vēļ vaira kūplītuotuoju - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Īgrīzt Datu Meitu kūplītuotuoju vydā (PeX), lai atrastu vēļ vaira kūplītuotuoju - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers Īgrīzt Vītejuo kūplītuotuoju mekliešonu, lai atrastu vēļ vaira kūplītuotuoju - + Encryption mode: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode Īgrīzt anonimū režimu - + Maximum active downloads: Kūpegais aktivuo atsasyuteišonu skaits: - + Maximum active uploads: Kūpegais aktivuo nūsasyuteišonu skaits: - + Maximum active torrents: Kūpegais aktivuo torrentu skaits: - + Do not count slow torrents in these limits Najimt vārā lānuos torrentus - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds sek - + Torrent inactivity timer: Torrenta stibniešonys skaiteklis: - + then tod - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: Sertifikats: - + Key: Atslāgs: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Inpormaceja par sertifikatim</a> - + Change current password Puormeit niulejuo paroli - + Use alternative Web UI Lītuot cytu tuolvaļdis paneļa saduri - + Files location: Failu vīta: - + Security Drūsums - + Enable clickjacking protection Īgrīzt apsardzeibu pret clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Īgrīzt apsardzeibu pret Cross-Site Request Forgery (CSRF) - + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + Service: Serviss: - + Register Registrētīs - + Domain name: Domena pasauka: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file Izlaseit qBittorrent sadurs failu - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: Torrenta pasauka - + %L: Category %L: Kategoreja - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path %D: Izglobuošonas vīta - + %C: Number of files %C: Failu skaits - + %Z: Torrent size (bytes) %Z: Torrenta lelums (baitos) - + %T: Current tracker %T: Niulejais trakeris - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + (None) (Nivīnu) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate Sertifikats - + Select certificate Izlaseit sertifikatu - + Private key - + Select private key - + + WebUI configuration failed. Reason: %1 + + + + Select folder to monitor - + Adding entry failed - - Location Error - Atsarasšonys vītys kleida + + The WebUI username must be at least 3 characters long. + - - The alternative Web UI files location cannot be blank. + + The WebUI password must be at least 6 characters long. - - + + Location Error + Atsarasšonys vītys kleida + + + + Choose export directory Izalaseit izglobuošonas vītu - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Byrkas (atdaleitas ar komatu) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Izalaseit izglobuošonas vītu - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Izalaseit IP fiļtra failu - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences Īstatejumi - + Time Error Laika klaida - + The start time and the end time can't be the same. Suokšonas un beigšonas laiki navar byut vīnaiži. - - + + Length Error Garuma kleida - - - The Web UI username must be at least 3 characters long. - - - - - The Web UI password must be at least 6 characters long. - - PeerInfo @@ -7346,163 +7373,163 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PeerListWidget - + Country/Region Vaļsteiba/Apgabaļs - + IP/Address - + Port Ports - + Flags Karūgi - + Connection Salaidums: - + Client i.e.: Client application Aplikaceja - + Peer ID Client i.e.: Client resolved from Peer ID - + Progress i.e: % downloaded Progress - + Down Speed i.e: Download speed Atsasyuteišonas dreizums - + Up Speed i.e: Upload speed Nūsasyuteišonas dreizums - + Downloaded i.e: total data downloaded Atsasyuteiti - + Uploaded i.e: total data uploaded Nūsasyuteiti - + Relevance i.e: How relevant this peer is to us. How many pieces it has that we don't. Kūplītuotuoja progress - + Files i.e. files that are being downloaded right now Faili - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Add peers... - - + + Adding peers Dalikt kūplītuotuojus - + Some peers cannot be added. Check the Log for details. - + Peers are added to this torrent. - - + + Ban peer permanently Nūblokēt kūplītuotuoju - + Cannot add peers to a private torrent - + Cannot add peers when the torrent is checking - + Cannot add peers when the torrent is queued - + No peer was selected - + Are you sure you want to permanently ban the selected peers? - + Peer "%1" is manually banned - + N/A Navā atrasta - + Copy IP:port Puorspīst IP i portu @@ -7561,27 +7588,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7782,35 +7809,60 @@ Those plugins were disabled. PowerManagement - + qBittorrent is active qBittorrent ir aktīvs + + PowerManagementInhibitor + + + Power management found suitable D-Bus interface. Interface: %1 + + + + + Power management error. Did not found suitable D-Bus interface. + + + + + + + Power management error. Action: %1. Error: %2 + + + + + Power management unexpected error. State: %1. Error: %2 + + + PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Apsvavērt - + Name Pasauka - + Size Lelums - + Progress Progress @@ -7843,27 +7895,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8060,50 +8112,50 @@ Those plugins were disabled. Izglobuošonas vīta: - + Never Nikod - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (atsasyuteiti %3) - - + + %1 (%2 this session) %1 (%2 itymā sesejā) - - + + N/A Navā zynoms - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (daleits %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks.) - + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 kūpā) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 videjais) @@ -8174,33 +8226,33 @@ Those plugins were disabled. RSS::AutoDownloader - - + + Invalid data format. - + Couldn't save RSS AutoDownloader data in %1. Error: %2 - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8208,22 +8260,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8231,27 +8283,27 @@ Those plugins were disabled. RSS::Private::FeedSerializer - + Failed to read RSS session data. %1 - + Failed to save RSS feed in '%1', Reason: %2 - + Couldn't parse RSS Session data. Error: %1 - + Couldn't load RSS Session data. Invalid data format. - + Couldn't load RSS article '%1#%2'. Invalid data format. @@ -8272,99 +8324,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. RSS kanals ar itaidu adresi jau ir: %1 - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. RSS kanals ar itaidu adresi jau ir: %1 - + Parent folder doesn't exist: %1. @@ -8477,64 +8529,69 @@ Those plugins were disabled. - + Please choose a folder name Lyudzu izalaseit apvuoča pasauku - + Folder name: Apvuoča pasauka: - + New folder Jauns apvuocis - - + + Please type a RSS feed URL Lyudzu īvoduot RSS kanala adresi - - + + Feed URL: Kanala adress - + Deletion confirmation Apstyprynuot iztreišonu - + Are you sure you want to delete the selected RSS feeds? Voi drūši zini, ka gribi nūteireit izalaseituos RSS kanalus? - + Please choose a new name for this RSS feed - + New feed name: Jauna kanala pasauke: - + Rename failed Puorsaukšona nāisadevās - + Date: Data: - + + Feed: + + + + Author: Autors: @@ -8648,132 +8705,132 @@ Those plugins were disabled. Lelums: - + Name i.e: file name Pasauka - + Size i.e: file size Lelums - + Seeders i.e: Number of full sources Devieji - + Leechers i.e: Number of partial sources Jāmuoji - + Search engine Maklātivs - + Filter search results... Meklēt rezultatuos... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Rezultati (ruoda <i>%1</i> nu <i>%2</i>): - + Torrent names only Tik torrentu pasaukuos - + Everywhere Vysur - + Use regular expressions Lītuot Reguļaras izsaceibas - + Open download window - + Download Atsasyuteit - + Open description page Atdareit aprakstejuma teiklavītu - + Copy Puorspīst - + Name Pasauka - + Download link Atsasyuteišonys saita - + Description page URL Aprakstejuma teiklavīta - + Searching... Meklē... - + Search has finished Mekliešona dabeigta - + Search aborted Mekliešona puortraukta - + An error occurred during search... - + Search returned no results - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8781,104 +8838,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories Vysys kategorejas - + Movies Filmys - + TV shows Televizejis laidīņi - + Music Muzyka - + Games Datorspieles - + Anime Multiplikaceja - + Software Programatura - + Pictures Atvaigi - + Books Gruomotas - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8888,10 +8945,10 @@ Those plugins were disabled. - - - - + + + + Search Meklēt @@ -8960,39 +9017,39 @@ Click the "Search plugins..." button at the bottom right of the window Izlaseit... - - - + + + Search Engine Maklātivs - + Please install Python to use the Search Engine. - + Empty search pattern - + Please type a search pattern first - + Stop Puortraukt - + Search has finished Mekliešona dabeigta - + Search has failed Mekliešona naīsadevās @@ -9142,52 +9199,52 @@ Click the "Search plugins..." button at the bottom right of the window SpeedPlotView - + Total Upload Kūpeigā nūsasyuteišona - + Total Download Kūpeigā atsasyuteišona - + Payload Upload - + Payload Download - + Overhead Upload - + Overhead Download - + DHT Upload Nūsasyuteišona DHT teiklā - + DHT Download Atsasyuteišona DHT teiklā - + Tracker Upload Nūsasyuteišona trakerous - + Tracker Download Atsasyuteišona trakeruos @@ -9396,13 +9453,13 @@ Click the "Search plugins..." button at the bottom right of the window - + No direct connections. This may indicate network configuration problems. - + DHT: %1 nodes DHT: %1 serveri @@ -9412,29 +9469,29 @@ Click the "Search plugins..." button at the bottom right of the window - - - + + + Connection Status: Škārsteikla salaiduma statuss: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online - + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9601,17 +9658,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Byrkas - + All Vysys - + Untagged Bez byrkas @@ -9619,62 +9676,62 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Pīlikt byrku... - + Remove tag Nūjimt byrku - + Remove unused tags Nūjimt nalītuotas byrkas - + Resume torrents Aizsuokt torrentus - + Pause torrents Nūstuodeit torrentus - + Remove torrents - + New Tag Jauna byrka - + Tag: Byrka: - + Invalid tag name Nadereiga byrkas pasauka - + Tag name '%1' is invalid Byrkas pasauka: '%1' navā dereiga - + Tag exists Kleida pasaukā - + Tag name already exists. Byrka ar itaidu pasauku jau ir. @@ -9802,32 +9859,32 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TorrentContentModel - + Name Pasauka - + Progress Progress - + Download Priority Atsasyuteišonas prioritets - + Remaining Palics - + Availability Daīmamums - + Total Size Kūpeigais lelums @@ -9877,97 +9934,115 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. Klaida puorsaukšonā - + Renaming Puorsaukšona - + New name: Jauna pasauka: - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Atkluot - + Open containing folder - + Rename... Puorsaukt... - + Priority Prioritets - - + + Do not download Naatsasyuteit - + Normal Norma - + High Augsta - + Maximum Pošaugstā - + By shown file order - + Normal priority Norma prioriteta - + High priority Augsta prioriteta - + Maximum priority Pošaugstā prioriteta - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -9992,13 +10067,13 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. - + Select file Izlaseit failu - + Select folder Izlaseit apvuoci @@ -10023,189 +10098,133 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. Dalenu lelums: - + Auto Automatiski - - 16 KiB - 16 KiB - - - - 32 KiB - 32 KiB - - - - 64 KiB - 64 KiB - - - - 128 KiB - 128 KiB - - - - 256 KiB - 256 KiB - - - - 512 KiB - 512 KiB - - - - 1 MiB - 1 MiB - - - - 2 MiB - 2 MiB - - - - 4 MiB - 4 MiB - - - - 8 MiB - 8 MiB - - - - 16 MiB - 16 MiB - - - - 32 MiB - 32 MiB - - - + Calculate number of pieces: - + Private torrent (Won't distribute on DHT network) - + Start seeding immediately - + Ignore share ratio limits for this torrent - + Optimize alignment - + Align to piece boundary for files larger than: - + Disabled Atslēgts - + KiB KiB - + Fields Laukumi - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: Puorstaipteikla devieju adresas: - + Tracker URLs: Trakeru adresas: - + Comments: Komentars: - + Source: Olūts: - + Progress: Progress - + Create Torrent Radeit torrentu - - - + + Torrent creation failed Torrenta radeišona naīsadevās - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent Izlaseit, kur izglobuot jaunū torrentu - + Torrent Files (*.torrent) Torrentu faili (*.torrent) - - Reason: %1 - Īmesls: %1 + + Add torrent to transfer list failed. + - - Reason: Created torrent is invalid. It won't be added to download list. - Īmesls: Darynuotais torrents navā dareigs. Tys natiks dalikts torrentu sarokstā. + + Reason: "%1" + - + + Add torrent failed + + + + Torrent creator Torrentu darynuoja - + Torrent created: Torrents darynuots: @@ -10213,32 +10232,32 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10246,22 +10265,27 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TorrentFilesWatcher::Worker - + + Invalid Magnet URI. URI: %1. Reason: %2 + + + + Magnet file too big. File: %1 - + Failed to open magnet file: %1 Naīsadevās atdareit magnetsaiti. Īmesls: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10415,21 +10439,69 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. Izalaseit izglobuošonas vītu - + Not applicable to private torrents - + No share limit method selected - + Please select a limit method first + + TorrentShareLimitsWidget + + + + + Default + + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + min + minutes + myn + + + + Inactive seeding time: + + + + + Ratio: + + + TorrentTagsDialog @@ -10438,7 +10510,7 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. - + New Tag Jauna byrka @@ -10471,115 +10543,115 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TorrentsController - + Error: '%1' is not a valid torrent file. Kleida: '%1' navā dareigs torrenta fails. - + Priority must be an integer - + Priority is not valid Prioritets nav dereigs - + Torrent's metadata has not yet downloaded Torrenta metadati vēļ navā atsasyuteiti - + File IDs must be integers - + File ID is not valid Faile ID nav dereigs - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty Izglobuošonas vītu navar pamest tukšu - - + + Cannot create target directory - - + + Category cannot be empty Katagoreju navar pamest tukšu - + Unable to create category Nāisadevās radeit kategoreju - + Unable to edit category Naīsadevās lobuot kategoreju - + Unable to export torrent file. Error: %1 - + Cannot make save path Navar īstateit izglobuošonas vītu - + 'sort' parameter is invalid - + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Itymā apvuocī navar izglobuot - + WebUI Set location: moving "%1", from "%2" to "%3" Puorceļšona: Puorceļ "%1", nū "%2" iz "%3" - + Incorrect torrent name Nadereiga torrenta pasauka - - + + Incorrect category name Nadereiga kategorejas pasauka @@ -10603,160 +10675,198 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. - TrackerListWidget + TrackerListModel - - + Working Lobs - + Disabled Atslēgts - + Disabled for this torrent - - + This torrent is private Privats torrents - + + N/A + Navā atrasta + + + Updating... Atjaunynuojas... - + Not working Nalobs - + + Tracker error + + + + + Unreachable + + + + Not contacted yet Vēļ navā salaists - - - - - N/A - Navā atrasta + + Invalid status! + + + + + URL/Announce endpoint + - + + Tier + Grupa + + + + Protocol + + + + + Status + Statuss + + + + Peers + Jāmuoji + + + + Seeds + Devieji + + + + Leeches + Jāmuoji + + + + Times Downloaded + + + + + Message + Viestejums + + + + Next announce + + + + + Min announce + + + + + v%1 + + + + + TrackerListWidget + + + This torrent is private + Privats torrents + + + Tracker editing Trakeru lobuošona - + Tracker URL: Trakera adress: - - + + Tracker editing failed Trakeru lobuošona naīsadevās - + The tracker URL entered is invalid. Īvoduotā trakera adress navā dareiga. - + The tracker URL already exists. Trakers ar itaidu adresi jau ir. - + Edit tracker URL... Lobuot trakera adresi... - + Remove tracker Nūjimt trakeri - + Copy tracker URL Puorspīst trakera adresi - + Force reannounce to selected trackers Dastateigs kontakts ar izalaseitajim trakeriem - + Force reannounce to all trackers Dastateigs kontakts ar vysim trakeriem - - Tier - Leidzīņs - - - - URL - Adress - - - - Status - Statuss - - - - Seeds - Devieji - - - - Times Downloaded - - - - + Resize columns - + Resize all non-hidden columns to the size of their contents - - Peers - Kūplītuotuoji - - - + Add trackers... - - Leeches - Jāmuoji - - - - Message - Viestejums - - - + Column visibility @@ -10764,47 +10874,47 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TrackersAdditionDialog - + Add trackers - + List of trackers to add (one per line): Saroksts ar trakeriem kurus dalikt (pa vīnam katrā aiļā): - + µTorrent compatible list URL: Ar µTorrent kūpeiga saroksta adress: - + Download trackers list - + Add Pīlikt - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10812,67 +10922,62 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TrackersFilterWidget - - All (0) - this is for the tracker filter - Vysi (0) - - - - Trackerless (0) - Bez trakera (0) + + Warning (%1) + Viereibu (%1) - Error (0) - Klaida (0) - - - - Warning (0) - Viereibu (0) + Trackerless (%1) + Bez trakera (%1) - - - Trackerless + + Tracker error (%1) - - - Error (%1) - Klaida (%1) - - - - - Warning (%1) - Viereibu (%1) + + Other error (%1) + - - Trackerless (%1) - Bez trakera (%1) + + Remove tracker + Nūjimt trakeri - + Resume torrents Aizsuokt torrentus - + Pause torrents Nūstuodeit torrentus - + Remove torrents - - + + Removal confirmation + + + + + Are you sure you want to remove tracker "%1" from all torrents? + + + + + Don't ask me again. + + + + All (%1) this is for the tracker filter Vysi (%1) @@ -11001,214 +11106,220 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. Klaideigai - + Name i.e: torrent name Pasauka - + Size i.e: torrent size Lelums - + Progress % Done Progress - + Status Torrent status (e.g. downloading, seeding, paused) Statuss - + Seeds i.e. full sources (often untranslated) Devieji - + Peers i.e. partial sources (often untranslated) Jāmuoji - + Down Speed i.e: Download speed Atsasyuteišonas dreizums - + Up Speed i.e: Upload speed Nūsasyuteišonas dreizums - + Ratio Share ratio Reitings - + ETA i.e: Estimated Time of Arrival / Time left Palyk. syuteišonys laiks - + Category Kategoreja - + Tags Byrkas - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Dalaists - + Completed On Torrent was completed on 01/01/2010 08:00 Dabeidza - + Tracker Trakers - + Down Limit i.e: Download limit Atsasyuteišonas limits - + Up Limit i.e: Upload limit Nūsasyuteišonas limits - + Downloaded Amount of data downloaded (e.g. in MB) Atsasyuteiti - + Uploaded Amount of data uploaded (e.g. in MB) Nūsasyuteiti - + Session Download Amount of data downloaded since program open (e.g. in MB) Atsasyuteiti itymā sesejā - + Session Upload Amount of data uploaded since program open (e.g. in MB) Nūsasyuteiti itymā sesejā - + Remaining Amount of data left to download (e.g. in MB) Palics - + Time Active Time (duration) the torrent is active (not paused) Aktivs jau - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Dabeigti - + Ratio Limit Upload share ratio limit Reitinga limits - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Pādejū reizi dabeigts - + Last Activity Time passed since a chunk was downloaded/uploaded Pādejū reizi kūplītuots - + Total Size i.e. Size including unwanted data Kūpeigais lelums - + Availability The number of distributed copies of the torrent Daīmamums - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - - + + Reannounce In + Indicates the time until next trackers reannounce + + + + + N/A Navā zynoms - + %1 ago e.g.: 1h 20m ago pyrma %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (daleits %2) @@ -11217,334 +11328,339 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. TransferListWidget - + Column visibility - + Recheck confirmation Apstyprynuot puorvēri - + Are you sure you want to recheck the selected torrent(s)? - + Rename Puorsaukt - + New name: Jauna pasauka: - + Choose save path Izalaseit izglobuošonas vītu - + Confirm pause - + Would you like to pause all torrents? - + Confirm resume - + Would you like to resume all torrents? - + Unable to preview Navar apsvavērt - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - + Add Tags Pīlikt byrkas - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags Nūjimt vysys byrkas - + Remove all tags from selected torrents? Nūjimt vysys byrkas izalaseitajim torrentim? - + Comma-separated tags: Atdaleit byrkas ar komatu: - + Invalid tag Nadereiga byrka - + Tag name: '%1' is invalid Byrkas pasauka: '%1' navā dereiga - + &Resume Resume/start the torrent Aizsuokt - + &Pause Pause the torrent Nūstateit - + Force Resu&me Force Resume/start the torrent - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Atsasyuteit saksteiguo parādā - + Errors occurred when exporting .torrent files. Check execution log for details. - + &Remove Remove the torrent - + Download first and last pieces first Paprīšķu atsasyuteit pyrmuos i pādejuos dalenis - + Automatic Torrent Management Automatisks torrentu puorvaļds - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - + Can not force reannounce if torrent is Paused/Queued/Errored/Checking - + Super seeding mode Super nūsasyuteišonas režims @@ -11589,28 +11705,28 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11670,35 +11786,60 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 + + Found Python executable. Name: "%1". Version: "%2" - Python not detected - Python navā atrasts + Failed to find Python executable. Path: "%1". + + + + + Failed to find `python3` executable in PATH environment variable. PATH: "%1" + + + + + Failed to find `python` executable in PATH environment variable. PATH: "%1" + + + + + Failed to find `python` executable in Windows Registry. + + + + + Failed to find Python executable + Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 + + + + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11729,32 +11870,32 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. WatchedFoldersModel - + Watched Folder - + Watched folder path cannot be empty. - + Watched folder path cannot be relative. - + Folder '%1' is already in watch list. - + Folder '%1' doesn't exist. - + Folder '%1' isn't readable. @@ -11762,72 +11903,72 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -11835,116 +11976,128 @@ Lyudzu izalaseit cytu pasauku i raudzeit vēļreiz. WebUI - - Web UI: HTTPS setup successful - Tuolvaļde: HTTPS nūstateišona lūbeiga + + Credentials are not set + - - Web UI: HTTPS setup failed, fallback to HTTP - Tuolvaļde: HTTPS nūstateišona nalūbeiga, atpakaļ pi HTTP + + WebUI: HTTPS setup successful + - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + + + Unable to bind to IP: %1, port: %2. Reason: %3 misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + + %1s + e.g: 10 seconds + + + + + %1m + e.g: 10 minutes + %1m + + + %1h %2m - e.g: 3hours 5minutes + e.g: 3 hours 5 minutes %1st %2m - + %1d %2h - e.g: 2days 10hours - %1d %2m + e.g: 2 days 10 hours + %1d %2st - + %1y %2d - e.g: 2years 10days + e.g: 2 years 10 days %1g %2d - + + Unknown Unknown (size) Nazynoms - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent tiuleņ izslēgs datori aiztuo ka visas atsasyuteišonas ir dabeigtas. - + < 1m < 1 minute < 1m - - - %1m - e.g: 10minutes - %1m - \ No newline at end of file diff --git a/src/lang/qbittorrent_lv_LV.ts b/src/lang/qbittorrent_lv_LV.ts index f60c23c6039d..dadbc5509a26 100644 --- a/src/lang/qbittorrent_lv_LV.ts +++ b/src/lang/qbittorrent_lv_LV.ts @@ -14,77 +14,77 @@ Par - + Authors Autori - + Current maintainer Pašreizējais uzturētājs - + Greece Grieķija - - + + Nationality: Valsts: - - + + E-mail: E-pasts: - - + + Name: Vārds: - + Original author Programmas radītājs - + France Francija - + Special Thanks Īpašs paldies - + Translators Tulkotāji - + License Licence - + Software Used Programmatūra - + qBittorrent was built with the following libraries: Šī qBittorrent versija tika uzbūvēta, izmantojot šīs bibliotēkas: - + Copy to clipboard - + Kopēt uz starpliktuvi @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Autortiesības %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Autortiesības %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Saglabāt šeit - + Never show again Vairs nerādīt - Torrent settings - Torrenta iestatījumi + Torrenta iestatījumi @@ -191,12 +190,12 @@ Sākt lejupielādi - + Torrent information Torrenta informācija - + Skip hash check Izlaist jaucējkoda pārbaudi @@ -205,6 +204,11 @@ Use another path for incomplete torrent Izmantot citu vietu nepabeigtiem torrentiem + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Aptstādināšanas nosacījumi: - - + + None Nevienu - - + + Metadata received Metadati ielādēti - - + + Torrents that have metadata initially will be added as stopped. + Torrenti, kuriem ir metadati tiks pievienoti apstādināti. + + + + Files checked Faili pārbaudīti - + Add to top of queue Novietot saraksta augšā - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Ja atzīmēts, .torrent fails netiks dzēsts, neņemot vērā "Lejupielādes" lappuses iestatījumus - + Content layout: Satura izkārtojums: - + Original Oriģinālais - + Create subfolder Izveidot apakšmapi - + Don't create subfolder Neizveidot apakšmapi - + Info hash v1: Jaucējkods v1: - + Size: Izmērs: - + Comment: Komentārs: - + Date: Datums: @@ -324,245 +333,182 @@ Atcerēties pēdējo norādīto saglabāšanas vietu - + Do not delete .torrent file Neizdzēst .torrent failu - + Download in sequential order Lejupielādēt secīgā kārtībā - + Download first and last pieces first Vispirms ielādēt pirmās un pēdējās daļiņas - + Info hash v2: Jaucējkods v2: - + Select All Izvēlēties visus - + Select None Neizvēlēties nevienu - + Save as .torrent file... Saglabāt kā .torrent failu... - + I/O Error Ievades/izvades kļūda - Invalid torrent - Nederīgs torents - - - + Not Available This comment is unavailable Nav pieejams - + Not Available This date is unavailable Nav pieejams - + Not available Nav pieejams - Invalid magnet link - Nederīga magnētsaite - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Neizdevās ielādēt torrentu: %1 -Kļūda: %2 - - - This magnet link was not recognized - Šī magnētsaite netika atpazīta - - - + Magnet link Magnētsaite - + Retrieving metadata... Tiek izgūti metadati... - - + + Choose save path Izvēlieties vietu, kur saglabāt - Torrent is already present - Šis torrents jau ir pievienots - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrents '%1' jau ir lejupielāžu sarakstā. Jaunie trakeri netika pievienoti, jo tas ir privāts torrents. - - - Torrent is already queued for processing. - Torrents jau ir rindā uz pievienošanu. - - - + No stop condition is set. Aptstādināšanas nosacījumi nav izvēlēti - + Torrent will stop after metadata is received. Torrents tiks apstādināts pēc metadatu ielādes. - - Torrents that have metadata initially aren't affected. - Neattiecas uz torrentiem, kuriem jau sākotnēji ir metadati. - - - + Torrent will stop after files are initially checked. Torrents tiks apstādināts pēc sākotnējo failu pārbaudes. - + This will also download metadata if it wasn't there initially. Tas ielādēs arī metadatus, ja to nebija jau sākotnēji. - - + + N/A Nav zināms - Magnet link is already queued for processing. - Magnētsaite jau ir rindā uz pievienošanu. - - - + %1 (Free space on disk: %2) %1 (Brīvās vietas diskā: %2) - + Not available This size is unavailable. Nav pieejams - + Torrent file (*%1) Torrenta fails (*%1) - + Save as torrent file Saglabāt kā torrenta failu - + Couldn't export torrent metadata file '%1'. Reason: %2. Neizdevās saglabāt torrenta metadatu failu '%1'. Iemesls: %2 - + Cannot create v2 torrent until its data is fully downloaded. Nevar izveidot v2 torrentu kamēr tā datu pilna lejupielāde nav pabeigta. - Cannot download '%1': %2 - Nevar lejupielādēt '%1': %2 - - - + Filter files... Meklēt failos... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrents '%'1 jau ir torrentu sarakstā. Trakerus nevar apvienot, jo tas ir privāts torrents. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrents '%'1 jau ir torrentu sarakstā. Vai vēlies apvienot to trakerus? - - - + Parsing metadata... Tiek parsēti metadati... - + Metadata retrieval complete Metadatu ielāde pabeigta - - Failed to load from URL: %1. -Error: %2 - Neizdevās ielādēt no URL: %1. -Kļūda: %2 - - - Download Error - Lejupielādes kļūda - AddTorrentManager Downloading torrent... Source: "%1" - + Lejupielāde torrentu.... Avots: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Neizdevās ielādēt torrentu. Avots: "%1". Iemesls: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Problēma mēģinājumā pievienot torrenta duplikātu. Avots: %1. Esošais torrents: %2. Rezultāts: %3 - + Merging of trackers is disabled - + Trakeru apvienošanas iespēja ir atslēgta - + Trackers cannot be merged because it is a private torrent - + Trakerus nevar apvienot, jo torrents ir privāts. - + Trackers are merged from new source - + Pievienots trakeris no jaunā avota @@ -648,72 +594,77 @@ Kļūda: %2 Izlaist jaucējkoda pārbaudi - - - Choose save path - Izvēlieties vietu, kur saglabāt + + Torrent share limits + Torrenta dalīšanas ierobežojumi - - - - - - - Default - Noklusētais + + + Choose save path + Izvēlieties vietu, kur saglabāt + + + - Yes - + Default + Noklusētais + Yes + + + + + + No - + Manual Manuāli - + Automatic Automātiski - + Original Oriģinālais - + Create subfolder Izveidot apakšmapi - + Don't create subfolder Neizveidot apakšmapi - + None (Nevienu) - + Metadata received Metadati ielādēti - + Files checked Faili pārbaudīti @@ -721,734 +672,852 @@ Kļūda: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Atkārtoti pārbaudīt torrentus pēc ielādes pabeigšanas - - + + ms milliseconds ms - + Setting Iespējas - + Value Value set for this setting Vērtība - + (disabled) (Atslēgts) - + (auto) (automātiski) - + + min minutes min - + All addresses Visas adreses - + qBittorrent Section qBittorrent sadaļa - - + + Open documentation Atvērt dokumentāciju - + All IPv4 addresses Visas IPv4 adreses - + All IPv6 addresses Visas IPv6 adreses - + libtorrent Section libtorrent sadaļa - + Fastresume files Ātri-atsākt failus - + SQLite database (experimental) SQLite datubāze (eksperimentāla) - + Resume data storage type (requires restart) Atsākšanas datu krātuves veids (nepieciešams restarts) - + Normal Normāls - + Below normal Zem normāla - + Medium Vidējs - + Low Zems - + Very low Ļoti zems - - Process memory priority (Windows >= 8 only) - Operatīvās atmiņas prioritāte (Tikai Windows 8 un jaunākiem) - - - + Physical memory (RAM) usage limit Operētājatmiņas (RAM) patēriņa robeža - + Asynchronous I/O threads Asinhronās I/O plūsmas - + Hashing threads Plūsmu jaukšana - + File pool size Failu kopas lielums - + Outstanding memory when checking torrents Atmiņa straumju pārbaudēm - + Disk cache Diska kešatmiņa - - - - + + + + s seconds s - + Disk cache expiry interval Diska kešatmiņas derīguma intervāls - + Disk queue size Diska rindas izmērs - - + + Enable OS cache Izmantot OS kešatmiņu - + Coalesce reads & writes Apvienot lasīšanas un rakstīšanas darbības - + Use piece extent affinity Izmantot līdzīgu daļiņu grupēšanu - + Send upload piece suggestions Nosūtīt ieteikumus augšupielādes daļiņām - - - - + + + + + 0 (disabled) 0 (atslēgts) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Atsākšanas datu saglabāšanas intervāls [0: atslēgts) - + Outgoing ports (Min) [0: disabled] Izejošie porti (Min) [0: atslēgts) - + Outgoing ports (Max) [0: disabled] Izejošie port (Max) [0: atslēgts] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] UPnP nomas ilgums [0: neierobežots] - + Stop tracker timeout [0: disabled] Atcelt trakeru noildzi [0: atslēgta] - + Notification timeout [0: infinite, -1: system default] Paziņojumu noildze [0: bezgalīga, -1 sistēmas noklusētā] - + Maximum outstanding requests to a single peer Atļautais neapstrādāto pieprasījumu skaits vienam koplietotājam - - - - - + + + + + KiB KiB - + (infinite) - + (system default) (datorsistēmas noklusētais) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Šī iespēja īsti labi nestrādā uz Linux sistēmas - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default Noklusētais - + Memory mapped files Atmiņas kartētie faili - + POSIX-compliant POSIX-saderīgs - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Diska Ievades/Izvades tips (nepieciešama pārstartēšana) - - + + Disable OS cache Atslēgt OS kešatmiņu - + Disk IO read mode Diska Ievades/Izvades lasīšana - + Write-through Pārrakstīšana - + Disk IO write mode Diska Ievades/Izvades rakstīšana - + Send buffer watermark Nosūtīt bufera slieksni - + Send buffer low watermark Zems bufera slieksnis - + Send buffer watermark factor Bufera sliekšņa koeficents - + Outgoing connections per second Izejošo savienojumu skaits sekundē - - + + 0 (system default) 0 (datorsistēmas noklusētais) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Soketa rindas izmērs - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + .torrent faila atļautais izmērs + + + Type of service (ToS) for connections to peers Pakalpojumu veids (ToS) savienojumiem ar koplietotājiem - + Prefer TCP Priekšroku TCP - + Peer proportional (throttles TCP) Vienmērīgi koplietotājiem (regulē TCP) - + Support internationalized domain name (IDN) Atbalsts starptautisko domēnu vārdiem (IDN) - + Allow multiple connections from the same IP address Atļaut vairākus savienojumus no vienas IP adreses - + Validate HTTPS tracker certificates Apstiprināt HTTPS trakeru sertifikātus - + Server-side request forgery (SSRF) mitigation Servera puses pieprasījumu viltošanas (SSRF) aizsardzība - + Disallow connection to peers on privileged ports Neatļaut savienojumu, ja koplietotājs izmanto priviliģētus portus - + + It appends the text to the window title to help distinguish qBittorent instances + Tas pievieno vārdu loga nosaukumam, lai palīdzētu atšķirt vienlaicīgas qBitorrent instances. + + + + Customize application instance name + Izvēlies programmas instances nosaukumu + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval Atsvaidzināšanas intervāls - + Resolve peer host names Rādīt koplietotāju Datoru nosaukumus - + IP address reported to trackers (requires restart) IP adrese, kuru paziņot trakeriem (nepieciešams restarts) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Atjaunināt datus ar trakeriem, ja tiek mainīti IP vai porti - + Enable icons in menus Rādīt ikonas izvēlnē - + Enable port forwarding for embedded tracker Ieslēgt porta pāradresāciju iebūvētajam trakerim - - (Auto detect if empty) + + Enable quarantine for downloaded files + Iespējot karantīnu lejupielādētajiem failiem + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Automātiski, ja tukšs) + + + Python executable path (may require restart) + Python izpildāmās programma (var būt nepieciešama pārstartēšana) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sek + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Apstiprināt trakeru dzēšanu no visiem torrentiem + + + Peer turnover disconnect percentage Koplietotāju atvienošanas procents - + Peer turnover threshold percentage Koplietotāju atvienošanas slieksņa procents - + Peer turnover disconnect interval Koplietotaju atvienošanas intervāls - + Resets to default if empty - + Atiestata uz noklusēto, ja atstāts tukšs - + DHT bootstrap nodes - + I2P inbound quantity - + I2P ienākošais daudzums - + I2P outbound quantity - + I2P izejošais daudzums - + I2P inbound length - + I2P ienākošais garums - + I2P outbound length - + I2P izejošais garums - + Display notifications Rādīt paziņojumus - + Display notifications for added torrents Rādīt paziņojumus par pievienotajiem torrentiem - + Download tracker's favicon Ielādēt trakera adreses ikonu - + Save path history length Saglabāšanas vietu vēstures garums - + Enable speed graphs Ieslēgt ātrumu diagrammas - + Fixed slots Fiksētas laika nišas - + Upload rate based Pamatojoties uz Augšupielādes ātrumu - + Upload slots behavior Augšupielādes nišu darbība: - + Round-robin Vienmērīgi sadalīt - + Fastest upload Ātrākā augšupielāde - + Anti-leech Prioritāte tiko sākušajiem un tuvu beigām esošajiem - + Upload choking algorithm Augšupielādes regulēšanas algoritms - + Confirm torrent recheck Apstiprināt torrentu atkārtotu pārbaudi - + Confirm removal of all tags Apstiprināt visu atzīmju noņemšanu - + Always announce to all trackers in a tier Vienmēr atjaunināt datus ar visiem trakeriem grupā - + Always announce to all tiers Vienmēr atjaunināt datus ar visiem trakeriem visās grupās - + Any interface i.e. Any network interface Automātiski - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP jaukta režīma algoritms - + Resolve peer countries Rādīt koplietotāju valstis - + Network interface Interneta savienojums - + Optional IP address to bind to Piesaistīt papildu IP adresi - + Max concurrent HTTP announces Atļautais kopējais HTTP trakeru skaits - + Enable embedded tracker Ieslēgt iebūvēto trakeri - + Embedded tracker port Iebūvētā trakera ports - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - Tika ieslēgts qBittorrent %1 + + + Invalid directory path + + + + + Directory does not exist + - + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Darbojas pārnēsāmajā režīmā. Automātiski atrastā profila mape: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Konstatēts lieks komandrindas karodziņš: "%1". Pārnēsāmais režīms piedāvā salīdzinoši ātru atsākšanu. - + Using config directory: %1 Esošās konfigurācijas mape: %1 - + Torrent name: %1 Torenta nosaukums: %1 - + Torrent size: %1 Torenta izmērs: %1 - + Save path: %1 Saglabāšanas vieta: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrents tika lejupielādēts %1. - + + Thank you for using qBittorrent. Paldies, ka izmantojāt qBittorrent. - + Torrent: %1, sending mail notification Torrents: %1, sūta e-pasta paziņojumu - + Add torrent failed - + Torrenta pievienošana neizdevās - + Couldn't add torrent '%1', reason: %2. - + Neizdevās pievienot torrentu '%1', iemesls: %2. + + + + The WebUI administrator username is: %1 + Tālvadības paneļa (WebUI) administratora lietotājvārds ir: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Tālvadības paneļa (WebUI) administratoram nav uzstādīta parole. Tiek izveidota īslaicīga parole esošajai sesijai %1 + + + + You should set your own password in program preferences. + Jums vajadzētu uzstādīt savu paroli programmas iestatījumos. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Tālvadības panelis (WebUI) ir atslēgts. Lai ieslēgtu WebUI, veiciet izmaiņas konfigurācijas failā. - + Running external program. Torrent: "%1". Command: `%2` Palaiž ārēju programmu. Torrents: "%1". Komanda: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Neizdevās palaist ārējo programmu. Torrents: "%1". Komanda: `%2` - + Torrent "%1" has finished downloading Torrenta "%1" lejupielāde pabeigta - + WebUI will be started shortly after internal preparations. Please wait... - + Tālvadības panelis (WebUI) tiks palaists īsi pēc sagatavošanas. Lūdzu uzgaidiet... - - + + Loading torrents... Ielādē torrentus... - + E&xit Izslēgt qBittorrent - + I/O Error i.e: Input/Output Error Ievades/izvades kļūda - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Kļūda: %2 Iemesls: %2 - Error - Kļūda - - - Failed to add torrent: %1 - Neizdevās pievienot torentu: %1 - - - + Torrent added Torrents pievienots - + '%1' was added. e.g: xxx.avi was added. '%1' tika pievienots. - + Download completed Lejupielāde pabeigta - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' lejupielāde ir pabeigta. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 palaists. Darbības ID: %2 - URL download error - Tīmekļa lejupielādes kļūda - - - Couldn't download file at URL '%1', reason: %2. - Neizdevās ielādēt failu no '%1', iemesls: %2 + + This is a test email. + - Torrent file association - Torrenta faila piederība + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorent nav uzstādīta kā noklusētā programma torrenta failu un magnētsaišu atvēršanai. -Vai vēlaties to uzstādīt kā noklusēto programmu tagad? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' lejupielāde ir pabeigta. - + Information Informācija - + To fix the error, you may need to edit the config file manually. - + Lai izlabotu kļūdu, jums jāveic izmaiņas konfigurācijas failā. - + To control qBittorrent, access the WebUI at: %1 Lai piekļūtu qBittorrent tālvadības panelim, atveriet: %1 - - The Web UI administrator username is: %1 - Tālvadības kontroles paneļa administratora lietotājvārds ir: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Tālvadības (Web UI) paneļa administratora parole vēl aizvien ir noklusētā: %1 - - - - This is a security risk, please change your password in program preferences. - Tas is drošības risks, lūdzam apsvērt paroles maiņu - - - Application failed to start. - Programmu neizdevās palaist. - - - + Exit Iziet - + Recursive download confirmation - Rekursīvās lejupielādes apstiprināšana + Rekursīvās lejupielādes apstiprināšana - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrenta fails '%1' satur citus .torrent failus, vai vēlaties veikt to lejupielādi? + Torrenta fails '%1' satur citus .torrent failus, vai vēlaties veikt to lejupielādi? - + Never - Nekad + Nekad - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursīva lejupielāde - torrenta fails iekš cita torrenta. Avots: "%1". Fails: "%2" + Rekursīva lejupielāde - torrenta fails iekš cita torrenta. Avots: "%1". Fails: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Neizdevās iestatīt Operētājatmiņas (RAM) patēriņa robežu. Kļūdas kods: %1. Kļūdas ziņojums: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Neizdevās iestatīt Operētājatmiņas (RAM) patēriņa robežu. Noteiktais izmērs: %1. Sistēmas robeža: %2. Kļūdas kods: %3. Kļūdas ziņojums: "%4" - + qBittorrent termination initiated qBittorrent izslēgšana aizsākta - + qBittorrent is shutting down... qBittorrent tiek izslēgts... - + Saving torrent progress... Saglabā torrenta progresu... - + qBittorrent is now ready to exit qBittorrent ir gatavs izslēgšanai @@ -1597,7 +1637,7 @@ Vai vēlaties to uzstādīt kā noklusēto programmu tagad? AsyncFileStorage - + Could not create directory '%1'. Neizdevās izveidot direktoriju '%1'. @@ -1605,22 +1645,22 @@ Vai vēlaties to uzstādīt kā noklusēto programmu tagad? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI autorizācijas kļūda. Iemesls: IP ir bloķēta, IP: %1, lietotājs: %2 - + Your IP address has been banned after too many failed authentication attempts. Jūsu IP adrese ir tikusi nobloķēta, vairāku neveiksmīgu pierakstīšanās mēģinājumu dēļ. - + WebAPI login success. IP: %1 WebAPI autorizācija veiksmīga. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI autorizācijas kļūda. Iemesls: nederīgi autorizācijas dati, mēģinājumu skaits: %1, IP: %2, lietotājvārds: %3 @@ -1668,12 +1708,12 @@ Vai vēlaties to uzstādīt kā noklusēto programmu tagad? Prioritāte: - + Must Not Contain: Neiekļaut: - + Episode Filter: Epizožu filtrs: @@ -1726,263 +1766,263 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā Saglabāt filtru... - + Matches articles based on episode filter. Meklē rezultātus pēc epizožu filtra. - + Example: Piemērs: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match filtrs atlasīs 2., 5., 8. - 15., 30. un turpmākās pirmās sezonas epizodes - + Episode filter rules: Epizožu filtrs: - + Season number is a mandatory non-zero value Sezonas numurs nedrīkst būt 0 - + Filter must end with semicolon Filtram jābeidzas ar semikolu - + Three range types for episodes are supported: Filtram ir atļauti 3 parametru veidi: - + Single number: <b>1x25;</b> matches episode 25 of season one Parametrs <b>1x25;</b> atlasīs tikai 1. sezonas 25. epizodi - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Parametrs <b>1x25-40;</b> atlasīs tikai 1. sezonas epizodes, sākot no 25. līdz 40. - + Episode number is a mandatory positive value Epizodes numurs nedrīkst būt 0 - + Rules Filtrs - + Rules (legacy) Filtrs (vecmodīgais) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Parametrs <b>1x25-;</b> atlasīs visas turpmākās epizodes un sezonas, sākot ar 1. sezonas 25. epizodi - + Last Match: %1 days ago Pēdējie rezultāti: pirms %1 dienām - + Last Match: Unknown Pēdējie rezultāti: nav atrasti - + New rule name Jaunā filtra nosaukums - + Please type the name of the new download rule. Lūdzu ievadiet jaunā filtra nosaukumu. - - + + Rule name conflict Neatļauts nosaukums - - + + A rule with this name already exists, please choose another name. Filtrs ar šādu nosaukumu jau pastāv, lūdzu izvēlieties citu nosaukumu. - + Are you sure you want to remove the download rule named '%1'? Vai esat pārliecināts, ka vēlaties dzēst filtru ar nosaukumu '%1'? - + Are you sure you want to remove the selected download rules? Vai esat pārliecināts, ka vēlāties dzēst atlasītos lejupielādes filtrus? - + Rule deletion confirmation Filtra dzēšanas apstiprināšana - + Invalid action Nederīga darbība - + The list is empty, there is nothing to export. Saraksts ir tukšs, nav ko saglabāt. - + Export RSS rules Saglabāt RSS filtru - + I/O Error Ievades/izvades kļūda - + Failed to create the destination file. Reason: %1 Neizdevās izveidot failu: Iemesls: %1 - + Import RSS rules Pievienot RSS filtru - + Failed to import the selected rules file. Reason: %1 Neizdevās importēt izvēlēto filtra failu. Iemesls: %1 - + Add new rule... Pievienot jaunu filtru... - + Delete rule Dzēst filtru - + Rename rule... Pārdēvēt filtru... - + Delete selected rules Dzēst atlasītos filtrus - + Clear downloaded episodes... Noņemt jau lejupielādētās epizodes... - + Rule renaming Filtra pārdēvēšana - + Please type the new rule name Lūdzu ievadiet jauno filtra nosaukumu - + Clear downloaded episodes Noņemt jau lejupielādētās epizodes... - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Vai esat pārliecināts, ka vēlaties no saraksta nodzēst jau lejupielādētās epizodes? - + Regex mode: use Perl-compatible regular expressions Regex režīms: lietot Perl valodas regulārās izteiksmes - - + + Position %1: %2 Pozīcija %1: %2 - + Wildcard mode: you can use Aizstājējzīmju režīms: jūs varat lietot - - + + Import error Importēšanas kļūda - + Failed to read the file. %1 Neizdevās nolasīt failu. %1 - + ? to match any single character ? lai aizstātu vienu, jebkuru rakstzīmi - + * to match zero or more of any characters * lai aizstātu vairākas, jebkuras rakstzīmes - + Whitespaces count as AND operators (all words, any order) Atstarpes skaitās kā AND operatori (visi vārdi, jebkurā secībā) - + | is used as OR operator | tiek lietots kā OR operators - + If word order is important use * instead of whitespace. Ja vārdu secība ir svarīga, lietojiet * simbolu. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Izteiksme ar tukšu klauzulu %1 (piemēram %2) - + will match all articles. meklēs visos ierakstos. - + will exclude all articles. izlaidīs visus ierakstus. @@ -2024,53 +2064,58 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nevar izveidot torrentu atsākšanas mapi: "%1" - + Cannot parse resume data: invalid format Nespēj parsēt atsākšanas datus: nederīgs formāts - - + + Cannot parse torrent info: %1 Nespēj parsēt torrenta informāciju: %1 - + Cannot parse torrent info: invalid format Nespēj parsēt torrenta informāciju: nederīgs formāts - + + Mismatching info-hash detected in resume data + Atsākšanas datos atklāts nesaderīgs jaucējkods + + + Couldn't save torrent metadata to '%1'. Error: %2. Neizdevās saglabāt torrenta metadatus %1'. Iemesls: %2 - + Couldn't save torrent resume data to '%1'. Error: %2. Neizdevās saglabāt torrenta atsākšanas datus '%1'. Iemesls: %2 - + Couldn't load torrents queue: %1 Neizdevās ielādēt torrentu rindu: %1 - + Cannot parse resume data: %1 Nespēj parsēt atsākšanas datus: %1 - + Resume data is invalid: neither metadata nor info-hash was found Atsākšanas dati nav nederīgi: netika atrasti metadati nedz arī jaucējkoda - + Couldn't save data to '%1'. Error: %2 Neizdevās saglabāt datus '%1'. Kļūda: %2 @@ -2078,38 +2123,38 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā BitTorrent::DBResumeDataStorage - + Not found. .Nav atrasts - + Couldn't load resume data of torrent '%1'. Error: %2 Neizdevās ielādēt atsākšanas datus torrentam "%1". Iemesls: %2 - - + + Database is corrupted. Datubāze ir bojāta. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Neizdevās saglabāt torrenta metadatus. Iemesls: %1 - + Couldn't store resume data for torrent '%1'. Error: %2 Neizdevās saglabāt atsākšanas datus torrentam "%1". Iemesls: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Neizdevās izdzēst atsākšanas datus torrentam "%1". Iemesls: %2 - + Couldn't store torrents queue positions. Error: %1 Neizdevās saglabāt ierindoto torrentu secību: Iemesls: %1 @@ -2140,574 +2185,620 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Necentralizētā tīkla (DHT) atbalsts: %1 - - - - - - - - - + + + + + + + + + ON IESLĒGTS - - - - - - - - - + + + + + + + + + OFF IZSLĒGTS - - + + Local Peer Discovery support: %1 Vietējo koplietotāju meklēšana %1 - + Restart is required to toggle Peer Exchange (PeX) support Nepieciešams pārstartēšana, lai ieslēgtu Apmaiņu koplietotāju starpā (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Neizdevās atsākt torrentu. Torrents: "%1". Iemesls: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Neizdevās atsākt torrentu: nepareizs torrenta ID. Torrents: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Atrasti nepareizi dati: iestatījumu failā netika atrasta kategorijas iestatījumi. Kategorija tiks atjaunota, bet tās iestatījumi tiks atgriezti uz noklusētajiem. Torrents "%1". Kategorija: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Atrasti nepareizi dati: nepareiza kategorija. Torrents: "%1". Kategorija: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Nav atrasta sakritība patreizējajai saglabāšanas vietai ar atjaunotās kategorijas saglabāšanas vietu torrentam. Torrents tiks pārslēgts Manuālajā pārvaldes režīmā. Torrents: "%1". Kategorija: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Atrasti nepareizi dati: iestatījumu failā netika atrasta atzīme. Atzīme tiks atjaunota. Torrents: "%1". Atzīme: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Atrasti nepareizi dati: nederīga atzīme. Torrents: "%1". Atzīme: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Reģistrēta datorsistēmas atmoda no miega režīma. Tiek veikta datu atjaunināšana ar visiem trakeriem... - + Peer ID: "%1" Koplietotāja ID: "%1" - + HTTP User-Agent: "%1" HTTP Lietotāja Aģents ir "%1" - + Peer Exchange (PeX) support: %1 Apmaiņa koplietotāju starpā (PeX): %1 - - + + Anonymous mode: %1 Anonīmais režīms %1 - - + + Encryption support: %1 Šifrēšanas atbalsts: %1 - - + + FORCED PIESPIEDU - + Could not find GUID of network interface. Interface: "%1" Neizdevās iegūt Savienojuma interfeisa GUID: "%1" - + Trying to listen on the following list of IP addresses: "%1" Mēģina savienot ar kādu no sarakstā esošajām IP adresēm: "%1" - + Torrent reached the share ratio limit. Torrents sasniedzis L/A attiecības robežu. - - - + Torrent: "%1". Torrents: "%1". - - - Removed torrent. - Izdzēsts torrents. + Izdzēsts torrents. - - - Removed torrent and deleted its content. - Izdzēsts torrents un tā saturs. + Izdzēsts torrents un tā saturs. - - - Torrent paused. - Torrents apturēts. + Torrents apturēts. - - - + Super seeding enabled. Super-augšupielāde ieslēgta. - + Torrent reached the seeding time limit. Torrents sasniedzis augšupielādes laika robežu. - + Torrent reached the inactive seeding time limit. - + Torrents sasniedzis neaktīvas augšupielādes laika robežu. - + Failed to load torrent. Reason: "%1" Neizdevās ielādēt torrentu. Iemesls "%1" - + I2P error. Message: "%1". + I2P kļūda. Ziņojums: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP ieslēgts + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Lejupielādē torrentu, lūdzu uzgaidi... Avots "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Neizdevās ielādēt torrentu. Avots: "%1". Iemesls: "%2" + + Session shutdown timed out. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP ieslēgts + + Removing torrent. + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP atslēgts + + Removing torrent and deleting its content. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Neizdevās eksportēt torrentu. Torrents: "%1". Vieta: "%2". Iemesls: "%3" + + Torrent stopped. + - - Aborted saving resume data. Number of outstanding torrents: %1 - Atcelta atsākšanas datu saglabāšana norādītajam skaitam torrentu: %1 + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Trakeru apvienošanas iespēja ir atslēgta + + + + Trackers cannot be merged because it is a private torrent + Trakerus nevar apvienot, jo torrents ir privāts. - System network status changed to %1 - e.g: System network status changed to ONLINE - Sistēmas tīkla stāvoklis izmainīts uz %1 + + Trackers are merged from new source + Pievienots trakeris no jaunā avota - ONLINE - PIESLĒDZIES + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP atslēgts - OFFLINE - ATSLĒDZIES + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Neizdevās eksportēt torrentu. Torrents: "%1". Vieta: "%2". Iemesls: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Tīkla %1 uzstādījumi ir izmainīti, atjaunojam piesaistītās sesijas datus + + Aborted saving resume data. Number of outstanding torrents: %1 + Atcelta atsākšanas datu saglabāšana norādītajam skaitam torrentu: %1 - + The configured network address is invalid. Address: "%1" Uzstādītā tīkla adrese nav derīga: Adrese: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Neizdevās atrast uzstādītu, derīgu tīkla adresi. Adrese: "%1" - + The configured network interface is invalid. Interface: "%1" Uzstādītā tīkla adrese nav derīga: Adrese: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" IP adrese: "%1" nav derīga, tādēļ tā netika pievienota bloķēto adrešu sarakstam. - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Torrentam pievienots trakeris. Torrents: "%1". Trakeris: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Torrentam noņemts trakeris. Torrents: "%1". Trakeris: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Torrentam pievienots Tīmekļa devējs. Torrents: "%1". Devējs: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Torrentam noņemts Tīmekļa devējs. Torrents: "%1". Devējs: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrents apturēts. Torrents: "%1" + Torrents apturēts. Torrents: "%1" - + Torrent resumed. Torrent: "%1" Torrents atsākts. Torrents: "%1" - + Torrent download finished. Torrent: "%1" Torrenta lejupielāde pabeigta. Torrents: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrenta pārvietošana atcelta. Torrents: "%1". Avots: "%2". Galavieta: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Neizdevās ierindot torrenta pārvietošanu. Torrents: "%1". Avots: "%2". Galavieta: "%3". Iemesls: torrents jau ir pārvietošanas vidū - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Neizdevās ierindot torrenta pārvietošanu. Torrents: "%1". Avots: "%2". Galavieta: "%3". Iemesls: Esošā un izvēlētā jaunā galavieta ir tā pati. - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Ierindota torrenta pārvietošana. Torrents: "%1". Avots: "%2". Galavieta: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Sākt torrenta pārvietošanu. Torrents: "%1". Galavieta: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Neizdevās saglabāt Kategoriju uzstādījumus. Fails: "%1". Kļūda: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Neizdevās parsēt Kategoriju uzstādījumus. Fails: "%1". Kļūda: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursīva lejupielāde - torrenta fails iekš cita torrenta. Avots: "%1". Fails: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Neizdevās Rekursīvā ielāde, torrenta faila iekš cita torrenta. Torrenta avots: "%1". Fails: "%2". Kļūda: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Veiksmīgi parsēts IP filtrs. Pievienoto filtru skaits: %1 - + Failed to parse the IP filter file Neizdevās parsēt norādīto IP filtru - + Restored torrent. Torrent: "%1" Atjaunots torrents. Torrents: "%1" - + Added new torrent. Torrent: "%1" Pievienots jauns torrents. Torrents: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Kļūda torrentos. Torrents: "%1". Kļūda: "%2" - - Removed torrent. Torrent: "%1" - Izdzēsts torrents. Torrents: "%1" + Izdzēsts torrents. Torrents: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Izdzēsts torrents un tā saturs. Torrents: "%1" + Izdzēsts torrents un tā saturs. Torrents: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentam iztrūkst SSL parametri. Torrents: "%1". Ziņojums: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Kļūda failos. Torrents: "%1". Fails: "%2". Iemesls: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP portu skenēšana neveiksmīga, Ziņojums: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP portu skenēšana veiksmīga, Ziņojums: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filtra dēļ. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). neatļautais ports (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). priviliģētais ports (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent sesija saskārusies ar nopietnu kļūdu. Iemesls: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 starpniekservera kļūda. Adrese: %1. Ziņojums: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 jauktā režīma ierobežojumu dēļ. - + Failed to load Categories. %1 Neizdevās ielādēt Kategorijas. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Neizdevās ielādēt Kategoriju uzstādījumus. Fails: "%1". Iemesls: "nederīgs datu formāts" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Izdzēsts .torrent fails, but neizdevās izdzēst tā saturu vai .partfile. Torrents: "%1". Kļūda: "%2" + Izdzēsts .torrent fails, but neizdevās izdzēst tā saturu vai .partfile. Torrents: "%1". Kļūda: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. jo %1 ir izslēgts - + %1 is disabled this peer was blocked. Reason: TCP is disabled. jo %1 ir izslēgts - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Neizdevās atrast Tīmekļa devēja DNS. Torrents: "%1". Devējs: "%2". Kļūda: "%3" + Neizdevās atrast Tīmekļa devēja DNS. Torrents: "%1". Devējs: "%2". Kļūda: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Saņemts kļūdas ziņojums no tīmekļa devēja. Torrents: "%1". URL: "%2". Ziņojums: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Veiksmīgi savienots. IP: "%1". Ports: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Neizdevās savienot. IP: "%1". Ports: "%2/%3". Iemesls: "%4" - + Detected external IP. IP: "%1" Reģistrētā ārējā IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Kļūda: iekšējā brīdinājumu rinda ir pilna un brīdinājumi tiek pārtraukti. Var tikt ietekmēta veiktspēja. Pārtraukto brīdinājumu veidi: "%1". Ziņojums: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrents pārvietots veiksmīgi. Torrents: "%1". Galavieta: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Neizdevās pārvietot torrentu. Torrents: "%1". Avots: "%2". Galavieta: "%3". Iemesls: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Darbība atcelta - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Neizdevās izveidot jaunu .torrent failu. Iemesls: %1 + + Failed to start seeding. + Neizdevās uzsākt augšupielādi. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Darbība atcelta + Darbība atcelta + + Create new torrent file failed. Reason: %1. - Neizdevās izveidot jaunu .torrent failu. Iemesls: %1 + Neizdevās izveidot jaunu .torrent failu. Iemesls: %1 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Neizdevās pievienot koplietotāju "%1" torrentam "%2". Iemesls: %3 - + Peer "%1" is added to torrent "%2" Koplietotājs "%1" tika pievienots torrentam "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Neizdevās faila rakstīšana. Iemesls: "%1". Tamdēļ šobrīd torrents būs tikai augšupielādes režīmā. - + Download first and last piece first: %1, torrent: '%2' Vispirms ielādēt pirmās un pēdējās daļiņas: %1, torrents: '%2' - + On Ieslēgts - + Off Izslēgts - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Neizdevās ielādēt torrentu. Torrents: %1. Iemesls: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Atsākšanas datu izveidošana nesanāca. Torrents: "%1". Iemesls: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Neizdevās atjaunot torrentu. Visticamāk faili ir pārvietoti vai arī glabātuve nav pieejama. Torrents: "%1". Iemesls: "%2" - + Missing metadata Trūkst metadatu - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Neizdevās faila pārdēvēšana. Torrents: "%1", fails: "%2", iemesls: "%3" - + Performance alert: %1. More info: %2 Veiktspējas brīdinājums: %1. Sīkāka informācija: %2 @@ -2728,184 +2819,198 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametram '%1' ir jāatbilst sintaksei '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametram '%1' ir jāatbilst sintaksei '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Gaidītais veselais skaitlis vides mainīgajā '%1', bet saņemts '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametram '%1' ir jāatbilst sintaksei '%1=%2' + Parametram '%1' ir jāatbilst sintaksei '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Gaidīts %1 vides mainīgajā '%2', bet saņemts '%3'' - - + + %1 must specify a valid port (1 to 65535). %1 norādiet pareizo portu (starp 1 un 65535). - + Usage: Lietojums: - + [options] [(<filename> | <url>)...] [iespējas] [(<filename> | <url>)...] - + Options: Iespējas: - + Display program version and exit Parādīt programmas versiju un aizvērt - + Display this help message and exit Parādīt palīdzības ziņojumu un aizvērt - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametram '%1' ir jāatbilst sintaksei '%1=%2' + + + + Confirm the legal notice + Aptstiprināt legālo ziņojumu + + + + port ports - - Change the Web UI port + + Change the WebUI port Mainīt Tālvadības kontroles paneļa portu - + Change the torrenting port - + Disable splash screen Atslēgt uzlēcošo logu - + Run in daemon-mode (background) Darbināt fonā (daemon-mode) - + dir Use appropriate short form or abbreviation of "directory" mape - + Store configuration files in <dir> Glabāt konfigurācijas failus šeit <dir> - - + + name nosaukums - + Store configuration files in directories qBittorrent_<name> Glabāt konfigurācijas failu mapēs qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Modificēt libtorrent ātratsākšanas failus un izveidot ceļus relatīvu profila mapei - + files or URLs faili vai saites - + Download the torrents passed by the user Lejupielādēt lietotāja norādītos torrentus - + Options when adding new torrents: Iespējas, pievienojot jaunu torrentus: - + path vieta - + Torrent save path Torrenta saglabāšanas vieta - + + Add torrents as running or stopped + + + Add torrents as started or paused - Pievienot torrentus sāktus vai apstādinātus + Pievienot torrentus sāktus vai apstādinātus - + Skip hash check Izlaist jaucējkoda pārbaudi - + Assign torrents to category. If the category doesn't exist, it will be created. Iedalīt torrentus kategorijā. Ja kategorija nepastāv, tā tiks izveidota. - + Download files in sequential order Lejupielādēt secīgā kārtībā - + Download first and last pieces first Vispirms ielādēt pirmās un pēdējās daļiņas - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Norādīt vai, pievienojot torrentu, tiks parādīts "Pievienot jaunu torrentu" logs. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Opciju vērtības var norādīt, izmantojot vides mainīgos. Opcijai ar nosaukumu 'parameter-name', vides mainīgā nosaukums ir 'QBT_PARAMETER_NAME' (lielajiem burtiem, '-' aizstāj ar '_'). Lai iesniegtu vērtības, iestatiet mainīgo uz '1' vai "TRUE". Piemēram, lai atslēgtu sākuma ekrānu: - + Command line parameters take precedence over environment variables Komandrindas parametriem ir prioritāte pār vides mainīgajiem - + Help Palīdzība @@ -2913,17 +3018,17 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā CategoryFilterModel - + Categories Kategorijas - + All Visi - + Uncategorized Bez kategorijas @@ -2957,13 +3062,21 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā - Resume torrents - Atsākt torrentus + Start torrents + + Stop torrents + + + + Resume torrents + Atsākt torrentus + + Pause torrents - Apturēt torrentus + Apturēt torrentus @@ -2974,15 +3087,20 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā ColorWidget - + Edit... Labot... - + Reset Atiestatīt + + + System + + CookiesDialog @@ -3023,22 +3141,22 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Neizdevās ielādēt pielāgoto saskarni. %1 - + Failed to load custom theme colors. %1 - + Neizdevās ielādēt pielāgotās saskarnes krāsas. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Neizdevās ielādēt noklusētās saskarnes krāsas. %1 @@ -3055,23 +3173,27 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā + Also remove the content files + + + Also permanently delete the files - Tāpat neatgriezeniski izdzēst failus + Tāpat neatgriezeniski izdzēst failus - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Vai esat pārliecināts, ka vēlaties izdzēst '%1' no Torrentu saraksta? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Vai esat pārliecināts, ka vēlaties izdzēst šos %1 torrentus no Torrentu saraksta? - + Remove Dzēst @@ -3084,12 +3206,12 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā Lejupielādēt no saitēm - + Add torrent links Pievienot torrentu saites - + One link per line (HTTP links, Magnet links and info-hashes are supported) Katrā rindā pa vienai saitei (Ir atbalstītas HTTP saites, Magnētsaites un Jaucējkodi) @@ -3099,12 +3221,12 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā Lejupielādēt - + No URL entered Netika ievadīta adrese - + Please type at least one URL. Lūdzu ievadiet vismaz vienu adresi. @@ -3263,64 +3385,91 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā Parsēšanas kļūda: Šis filtra fails nav saderīgs are PeerGuardian P2B failu. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Lejupielāde torrentu.... Avots: "%1" - Trackers cannot be merged because it is a private torrent - + Trakerus nevar apvienot, jo torrents ir privāts. - + Torrent is already present - Šis torrents jau ir pievienots + Šis torrents jau ir pievienots + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrents '%'1 jau ir torrentu sarakstā. Vai vēlies apvienot to trakerus? + Torrents '%'1 jau ir torrentu sarakstā. Vai vēlies apvienot to trakerus? GeoIPDatabase - - + + Unsupported database file size. Neatbalstīts datubāzes faila izmērs - + Metadata error: '%1' entry not found. Kļūda Metadatos: "%1' ieraksts nav atrasts. - + Metadata error: '%1' entry has invalid type. Kļūda Metadatos: '%1' nederīgs ieraksts. - + Unsupported database version: %1.%2 Neatbalstīta datubāzes versija: %1.%2 - + Unsupported IP version: %1 Neatbalstīta IP versija: %1 - + Unsupported record size: %1 Neatbalstīts ieraksta izmērs: %1 - + Database corrupted: no data section found. Bojāta datubāze: dati netika atrasti @@ -3328,17 +3477,17 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http pieprasījuma izmērs pārsniedz robežu, aizveram socketu. Robeža: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Slikta Http pieprasījuma metode, aizveram socketu. IP: %1. Metode: "%2" - + Bad Http request, closing socket. IP: %1 Slikts Http pieprasījums, aizveram socketu. IP: %1 @@ -3379,36 +3528,64 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā IconWidget - + Browse... Pārlūkot... - + Reset Atiestatīt - + Select icon Izvēlies ikonu - + Supported image files - + Atbalstītie attēlu faili + + + + LegalNotice + + + Legal Notice + Juridiskais ziņojums + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent ir failu koplietošanas programma. Katra aktīvi koplietotā torrenta saturs caur augšupielādi būs pieejams citiem lietotājiem internetā. Katrs fails, kuru jūs dalāt ir uz jūsu pašu atbildību. + + + + No further notices will be issued. + Tālāki atgādinājumi netiks izsniegti. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Ja esat izlasījis legālo ziņojumu, varat izmantot komandu `--confirm-legal-notice`, lai to vairs nerādītu. + + + + Press 'Enter' key to continue... + Spiediet "Enter", lai turpinātu... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 tika nobloķēts. Iemesls: %2. - + %1 was banned 0.0.0.0 was banned %1 tika aizliegts @@ -3417,91 +3594,62 @@ Atbalsta formātus: S01E01, 1x1, 2017.12.31 un 31.12.2017 (Datumu formātos kā Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 ir nezināms komandlīnijas parametrs. - - + + %1 must be the single command line parameter. %1 ir jābūt vienrindiņas komandlīnijas paramateram. - - You cannot use %1: qBittorrent is already running for this user. - Tu nevari atvērt %1: qBittorrent šim lietotājam jau ir atvērts. - - - + Run application with -h option to read about command line parameters. Palaist programmu ar -h parametru, lai iegūtu informāciju par komandlīnijas parametriem - + Bad command line Slikta komandlīnija - + Bad command line: Slikta komandlīnija: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Juridiskais ziņojums - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent ir failu koplietošanas programma. Katra aktīvi koplietotā torrenta saturs caur augšupielādi būs pieejams citiem lietotājiem internetā. Katrs fails, kuru jūs dalāt ir uz jūsu pašu atbildību. - - - - No further notices will be issued. - Tālāki atgādinājumi netiks izsniegti. - - - - Press %1 key to accept and continue... - Nospiediet taustiņu %1 lai turpinātu... + + You cannot use %1: qBittorrent is already running. + Tu nevari atvērt %1: qBittorrent ir jau atvērts. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent ir failu koplietošanas programma. Katrs jūsu aktīvais koplietotais torrents ar augšupielādes palīdzību būs pieejams citiem lietotājiem. Katrs fails, kuru augšupielādējat ir uz jūsu pašu atbildību. - -Tālāki atgādinājumi netiks izsniegti. - - - - Legal notice - Juridiskais ziņojums + + Another qBittorrent instance is already running. + Cita qBittorrent instance jau ir atvērta. - - Cancel - Atcelt + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Es piekrītu + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3512,621 +3660,706 @@ Tālāki atgādinājumi netiks izsniegti. &Rediģēt - + &Tools &Rīki - + &File &Fails - + &Help &Palīdzība - + On Downloads &Done Kad lejupielādes pabeigtas - + &View &Skats - + &Options... Iestatījumi... - &Resume - Atsākt + Atsākt - + &Remove Dzēst - + Torrent &Creator Torrentu veidotājs - - + + Alternative Speed Limits Alternatīvie atļautie ātrumi - + &Top Toolbar Augšējā rīkjosla - + Display Top Toolbar Rādīt augšējo rīkjoslu - + Status &Bar Stāvokļa josla - + Filters Sidebar Filtru sāna josla - + S&peed in Title Bar Ātrums Nosaukuma joslā - + Show Transfer Speed in Title Bar Rādīt ielādes ātrumus Nosaukuma joslā - + &RSS Reader RSS lasītājs - + Search &Engine Meklētājs - + L&ock qBittorrent Aizslēgt qBittorrent - + Do&nate! Ziedot! - + + Sh&utdown System + + + + &Do nothing Nedarīt neko - + Close Window Aizvērt logu - R&esume All - A&tsākt visus + A&tsākt visus - + Manage Cookies... Sīkfailu pārvaldība... - + Manage stored network cookies Saglabāto tīkla sīkfailu pārvaldība - + Normal Messages Parasti ziņojumi - + Information Messages Informatīvi ziņojumi - + Warning Messages Brīdinājumu ziņojumi - + Critical Messages Kritiski ziņojumi - + &Log Reģistrs - - Set Global Speed Limits... - Uzstādīt atļauto kopējo ātrumu... + + Sta&rt + - - Bottom of Queue - Novietot saraksta apakšā + + Sto&p + - + + R&esume Session + + + + + Pau&se Session + + + + + Set Global Speed Limits... + Uzstādīt atļauto kopējo ātrumu... + + + + Bottom of Queue + Novietot saraksta apakšā + + + Move to the bottom of the queue Novietot saraksta apakšā - + Top of Queue Novietot saraksta augšā - + Move to the top of the queue Novietot saraksta augšā - + Move Down Queue Novietot zemāk sarakstā - + Move down in the queue Novietot zemāk sarakstā - + Move Up Queue Novietot augstāk sarakstā - + Move up in the queue Novietot augstāk sarakstā - + &Exit qBittorrent Aizvērt qBittorrent - + &Suspend System Pārslēgties miega režīmā - + &Hibernate System Pārslēgties hibernācijas režīmā - S&hutdown System - Izslēgt datoru + Izslēgt datoru - + &Statistics Statistika - + Check for Updates Meklēt atjauninājumus - + Check for Program Updates Meklēt programmas atjauninājumus - + &About Par BitTorrent - &Pause - Apturēt + Apturēt - P&ause All - Apturēt visus + Apturēt visus - + &Add Torrent File... Pievienot Torrentu failus... - + Open Atvērt - + E&xit Izslēgt qBittorrent - + Open URL Atvērt adresi - + &Documentation Dokumentācija - + Lock Aizslēgt - - - + + + Show Rādīt - + Check for program updates Meklēt programmas atjauninājumus - + Add Torrent &Link... Pievienot Torrentu &saites... - + If you like qBittorrent, please donate! Ja jums patīk qBittorrent, lūdzu, ziedojiet! - - + + Execution Log Reģistrs - + Clear the password Notīrīt paroli - + &Set Password Uzstādīt paroli - + Preferences Iestatījumi - + &Clear Password Notīrīt paroli - + Transfers Torrenti - - + + qBittorrent is minimized to tray qBittorrent ir samazināts tray ikonā - - - + + + This behavior can be changed in the settings. You won't be reminded again. Šī uzvedība var tikt mainīta uzstādījumos. Jums tas vairs netiks atgādināts. - + Icons Only Tikai ikonas - + Text Only Tikai tekstu - + Text Alongside Icons Teksts blakus ikonām - + Text Under Icons Teksts zem ikonām - + Follow System Style Sistēmas noklusētais - - + + UI lock password qBittorrent atslēgšanas parole - - + + Please type the UI lock password: Izvēlies paroli qBittorrent atslēgšanai: - + Are you sure you want to clear the password? Vai esat pārliecināts, ka vēlaties notīrīt paroli? - + Use regular expressions Lietot regulāras izteiksmes (regex) - - Search - Meklētājs + + + Search Engine + Meklētājs - - Transfers (%1) - Torrenti (%1) + + Search has failed + Meklēšana neizdevās - Recursive download confirmation - Rekursīvās lejupielādes apstiprināšana + + Search has finished + - Never - Nekad + + Search + Meklētājs + + + + Transfers (%1) + Torrenti (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent nupat tika atjaunināts un ir nepieciešams restarts, lai izmaiņas stātos spēkā. - + qBittorrent is closed to tray qBittorrent ir samazināts tray ikonā - + Some files are currently transferring. Dažu failu ielāde vēl nav pabeigta. - + Are you sure you want to quit qBittorrent? Vai esat pārliecināts, ka vēlaties aizvērt qBittorrent? - + &No - + &Yes - + &Always Yes Vienmēr jā - + Options saved. Iestatījumi saglabāti. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [L: %1, A: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Nav atrasts Python interpretētājs - + qBittorrent Update Available Pieejams qBittorrent atjauninājums - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Lai lietotu meklētāju, ir nepieciešams uzinstalēt Python. Vai vēlaties to instalēt tagad? - + Python is required to use the search engine but it does not seem to be installed. Lai lietotu meklētāju, ir nepieciešams uzinstalēt Python. - - + + Old Python Runtime Novecojis Python interpretētājs - + A new version is available. Pieejama jauna versija - + Do you want to download %1? Vai vēlaties lejupielādēt %1? - + Open changelog... Atvērt izmaiņu reģistru... - + No updates available. You are already using the latest version. Atjauninājumi nav pieejami. Jūs jau lietojat jaunāko versiju. - + &Check for Updates Meklēt atjauninājumus - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Jūsu Pythona versija (%1) ir novecojusi. Vecākā atļautā: %2. Vai vēlaties ieinstalēt jaunāku versiju tagad? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Jūsu Python versija (1%) ir novecojusi. Lai darbotos meklētājprogrammas, lūdzu veiciet atjaunināšanu uz jaunāko versiju. Vecākā atļautā: %2. - + + Paused + Apturēts + + + Checking for Updates... Meklē atjauninājumus... - + Already checking for program updates in the background Atjauninājumu meklēšana jau ir procesā - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Lejupielādes kļūda - Python setup could not be downloaded, reason: %1. Please install it manually. - Python instalāciju neizdevās lejupielādēt, iemesls: %1. + Python instalāciju neizdevās lejupielādēt, iemesls: %1. Lūdzam to izdarīt manuāli. - - + + Invalid password Nederīga parole - + Filter torrents... - + Meklēt torrentu.... - + Filter by: - + Meklēt pēc: - + The password must be at least 3 characters long Parolei ir jāsatur vismaz 3 rakstzīmes. - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrenta fails '%1' satur citus .torrent failus, vai vēlaties veikt to lejupielādi? - - - + The password is invalid Parole nav derīga - + DL speed: %1 e.g: Download speed: 10 KiB/s Lejup. ātrums: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Augšup. ātrums: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [L: %1, A: %2] qBittorrent %3 - - - + Hide Paslēpt - + Exiting qBittorrent Aizvērt qBittorrent - + Open Torrent Files Izvēlieties Torrentu failus - + Torrent Files Torrentu faili @@ -4187,133 +4420,133 @@ Lūdzam to izdarīt manuāli. Net::DownloadHandlerImpl - - + + I/O Error: %1 Ievades/izvades kļūda: %1 - + The file size (%1) exceeds the download limit (%2) Faila izmērs (%1) pārsniedz atļauto (%2) - + Exceeded max redirections (%1) Pārsniedz atļauto pāradresēšanas skaitu (%1) - + Redirected to magnet URI Pāradresēts uz magnētsaiti. - + The remote host name was not found (invalid hostname) Datora nosaukums netika atrasts (nederīgs nosaukums) - + The operation was canceled Darbība tika atcelta - + The remote server closed the connection prematurely, before the entire reply was received and processed Serveris pārtrauca savienojumu priekšlaicīgi, pirms tika pagūts saņemt pilnu atbildes ziņojumu no tā. - + The connection to the remote server timed out Neizdevās izveidot savienojumu ar serveri - + SSL/TLS handshake failed SSL/TLS rokasspiediens neizdevās - + The remote server refused the connection Serveris atteicās izveidot savienojumu - + The connection to the proxy server was refused Savienojums ar starpniekserveri tika atteikts - + The proxy server closed the connection prematurely Starpniekserveris pārtrauca savienojumu priekšlaicīgi - + The proxy host name was not found Starpniekservera nosaukums netika atrasts - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Savienojuma prasības laiks iztecējis vai arī starpniekserveris nepaguva laicīgi atbildēt. - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Starpniekserveris pieprasa veikt datu autentifikāciju, lai noslēgtu savienojumu, bet piedāvātie autentifikācijas dati netika pieņemti - + The access to the remote content was denied (401) Piekļuve saturam tika liegta (401) - + The operation requested on the remote content is not permitted Pieprasītā piekļuve materiālam uz servera nav atļauta - + The remote content was not found at the server (404) Meklētais materiāls uz servera netika atrasts (error 404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Serveris pieprasa veikt autorizāciju priekš savienojuma noslēgšanas, bet piedāvātie autorizācijas dati netika pieņemti. - + The Network Access API cannot honor the request because the protocol is not known Protokols nav zināms, līdz ar to tīkla piekļuves API nevar apstrādāt jūsu pieprasījumu - + The requested operation is invalid for this protocol Pieprasītā operācija ar šo protokolu nav saderīga - + An unknown network-related error was detected Atklāta nezināma ar tīklu saistīta kļūda. - + An unknown proxy-related error was detected Atklāta nezināma ar starpniekserveri saistīta kļūda. - + An unknown error related to the remote content was detected Atklāta nezināma ar meklēto materiālu saistīta kļūda - + A breakdown in protocol was detected Konstatēts protokola traucējums - + Unknown error Nezināma kļūda @@ -4321,7 +4554,12 @@ Lūdzam to izdarīt manuāli. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorēta SSL kļūda, URL: "%1", kļūdas: "%2" @@ -5693,294 +5931,307 @@ Lūdzam to izdarīt manuāli. BitTorrent - + RSS RSS - Web UI - Tālvadība + Tālvadība - + Advanced Papildus - + Customize UI Theme... - + Pielāgot saskarni... - + Transfer List Torrentu saraksts - + Confirm when deleting torrents Apstiprināt Torrentu dzēšanu - Shows a confirmation dialog upon pausing/resuming all the torrents - Atsākot/Apstādinot visus torrentus, tiks parādīs apstiprinājuma logs + Atsākot/Apstādinot visus torrentus, tiks parādīs apstiprinājuma logs - Confirm "Pause/Resume all" actions - Apstiprināt "Atsākt/Apstādināt visus" darbības + Apstiprināt "Atsākt/Apstādināt visus" darbības - + Use alternating row colors In table elements, every other row will have a grey background. Iekrāsot katru otro rindiņu - + Hide zero and infinity values Nerādīt nulles un bezgalības vērtības - + Always Vienmēr - Paused torrents only - Tikai apturētajiem torrentiem + Tikai apturētajiem torrentiem - + Action on double-click Dubultklikšķa darbība - + Downloading torrents: Lejupielādējot torrentus: - - Start / Stop Torrent - Sākt / Apturēt torentu + Sākt / Apturēt torentu - - + + Open destination folder Atvērt failu atrašanās vietu - - + + No action Nedarīt neko - + Completed torrents: Pabeigtajiem torentiem: - + Auto hide zero status filters - + Desktop Darbvirsma - + Start qBittorrent on Windows start up Ieslēgt qBittorrent reizē ar Datorsistēmu - + Show splash screen on start up Pirms palaišanas parādīt qBittorrent logo - + Confirmation on exit when torrents are active Apstiprināt programmas aizvēršanu, ja kāda faila ielāde vēl nav pabeigta - + Confirmation on auto-exit when downloads finish Apstiprināt programmas automātisko aizvēršanu pēc lejupielāžu pabeigšanas - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Lai iestatītu qBittorrent kā noklusēto programmu .torrent failu un/vai Magnētsaišu atvēršanai,<br/>jūs varat izmantot <span style=" font-weight:600;">Noklusētās programmas</span> logu <span style=" font-weight:600;">Kontroles panelī</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Torrenta satura izkārtojums: - + Original Oriģinālais - + Create subfolder Izveidot apakšmapi - + Don't create subfolder Neizveidot apakšmapi - + The torrent will be added to the top of the download queue Torrenta tiks pievienots lejupielāžu saraksta augšā - + Add to top of queue The torrent will be added to the top of the download queue Novietot saraksta augšā - + When duplicate torrent is being added - + Pievienojot torrenta duplikātu - + Merge trackers to existing torrent - + Apvienot torrentu trakeru saites + + + + Keep unselected files in ".unwanted" folder + Uzglabāt neizvēlētos failus ".unwanted" mapē - + Add... Pievienot... - + Options.. Iestatījumi... - + Remove Dzēst - + Email notification &upon download completion E-pasta paziņojums par lejupielādes pabeigšanu - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Koplietotāju savienojumu protokols - + Any Vienalga - + I2P (experimental) l2P (eksperimentāls) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + <html><head/><body><p>Ja ir ieslēgts "Jauktais režīms", I2P torrentiem ir atļauts iegūt koplietotājus ne tikai caur trakeru saitēm, bet arī no citiem avotiem, nenodrošinot anonimitāti. Tas var būt noderīgi, ja lietotājam anonimitāte nav svarīgāka par nepieciešamību pēc vairāk I2P koplietotājiem.</p></body></html> - + Mixed mode - + Jauktais režīms - + Some options are incompatible with the chosen proxy type! - + Dažas iespējas nav sadrīgas ar izvēlēto starpniekserveri! - + If checked, hostname lookups are done via the proxy Ja atzīmēts, arī datoru nosaukumu noteikšanai izmantos starpniekserveri - + Perform hostname lookup via proxy Izmantot starpniekserveri datoru nosaukumu noteikšanai - + Use proxy for BitTorrent purposes - + Izmantot starpniekserveri tikai BiTtorrent savienojumiem - + RSS feeds will use proxy RSS kanāli izmantos starpniekserveri - + Use proxy for RSS purposes Izmantot starpniekserveri RSS kanāliem - + Search engine, software updates or anything else will use proxy Meklētājiem, atjaunināšanai un visam citam izmantos starpniekserveri - + Use proxy for general purposes - + Izmantot starpniekserveri visiem savienojumiem - + IP Fi&ltering IP filtrēšana - + Schedule &the use of alternative rate limits Uzstādīt laiku Alternatīvo atļauto ātrumu pielietošanai - + From: From start time No: - + To: To end time Līdz: - + Find peers on the DHT network Atrod koplietotājus publiskajā DHT tīklā - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5989,140 +6240,188 @@ Pieprasīt šifrēšanu: Veidot tikai šifrētus savienojumus, ar citiem kopliet Atslēgt šifrēšanu: Veidot savienojumus ar citiem koplietotājiem, kuriem arī šifrēšana ir atslēgta - + Allow encryption Atļaut šifrēšanu - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Vairāk informācijas</a>) - + Maximum active checking torrents: Atļautais vienlaicīgi pārbaudāmo torrentu skaits: - + &Torrent Queueing Torrentu saraksts - + When total seeding time reaches - + Kad kopējais augšupielādes laiks sasniedz - + When inactive seeding time reaches - + Kad neaktīvais augšupielādes laiks sasniedz - A&utomatically add these trackers to new downloads: - A&utomātiski pievienot šos trakerus jaunajām lejupielādēm: + A&utomātiski pievienot šos trakerus jaunajām lejupielādēm: - + RSS Reader RSS lasītājs - + Enable fetching RSS feeds Ieslēgt RSS kanālu nolasīšanu - + Feeds refresh interval: Ziņu atsvaidzināšanas intervāls: - + + Same host request delay: + + + + Maximum number of articles per feed: Atļautais ziņu skaits katram kanālam: - - - + + + min minutes min - + Seeding Limits Augšupielādes ierobežojumi - Pause torrent - Apturēt torrentu + Apturēt torrentu - + Remove torrent Dzēst torrentu - + Remove torrent and its files Izdzēst torrentu un failus - + Enable super seeding for torrent Ieslēgt torrentu super-augšupielādi - + When ratio reaches Kad L/A attiecība sasniedz - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Adrese: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS automātiskais torrentu lejupielādētājs - + Enable auto downloading of RSS torrents Ieslēgt RSS automātisko lejupielādi - + Edit auto downloading rules... Rediģēt automātiskās lejupielādes nosacījumus... - + RSS Smart Episode Filter RSS viedais epizožu filtrs - + Download REPACK/PROPER episodes Lejupielādēt REPACK/PROPER epizodes - + Filters: Filtri: - + Web User Interface (Remote control) Tālvadības kontroles panelis (Web UI) - + IP address: IP adrese: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6131,42 +6430,41 @@ Norādiet IPv4 vai IPv6 adresi. Varat norādīt "0.0.0.0" jebkurai IPv "::" jebkurai IPv6 adresei, vai "*" abām IPv4 un IPv6. - + Ban client after consecutive failures: Liegt piekļuvi pēc atkārtotiem mēģinājumiem: - + Never Nekad - + ban for: liegt piekļuvi uz: - + Session timeout: Sesijas noildze: - + Disabled Atslēgts - Enable cookie Secure flag (requires HTTPS) - Ieslēgt sīkdatņu Secure Flag (nepieciešams HTTPS) + Ieslēgt sīkdatņu Secure Flag (nepieciešams HTTPS) - + Server domains: Servera domēni: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6179,442 +6477,495 @@ Lai aizsargātu pret DNS atkārtotas atsaukšanas uzbrukumiem, Izmantojiet ';' lai atdalītu vairākus vārdus. Varat izmantot vietturi '*'. - + &Use HTTPS instead of HTTP HTTP vietā izmantot HTTPS - + Bypass authentication for clients on localhost Izlaist pierakstīšanos uz saimnieka datora (localhost) - + Bypass authentication for clients in whitelisted IP subnets Izlaist pierakstīšanos klientiem, kuri atrodas apakštīklu IP baltajā sarakstā - + IP subnet whitelist... Apakštīklu IP baltais saraksts... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Norādiet apgriezto starpniekserveru IP adreses (vai apakštīklus, piem. 0.0.0.0/24), lai izmantotu klienta pārsūtīto adresi (X-Forwarded-For atribūts), izmantojiet ";", lai atdalītu ierakstus. - + Upda&te my dynamic domain name Atjaunināt manu dinamisko domēnu - + Minimize qBittorrent to notification area Ar samazināšanas pogu, novietot qBittorrent paziņojumu joslā - + + Search + + + + + WebUI + + + + Interface Saskarne - + Language: Valoda - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Paziņojumu joslas ikonas stils: - - + + Normal Normāls - + File association Failu piederība - + Use qBittorrent for .torrent files Lietot qBittorrent .torrent failiem - + Use qBittorrent for magnet links Lietot qBittorrent Magnētsaitēm - + Check for program updates Meklēt programmas atjauninājumus - + Power Management Barošanas pārvaldība - + + &Log Files + + + + Save path: Saglabāšanas vieta: - + Backup the log file after: Izveidot reģistra kopiju ik pēc: - + Delete backup logs older than: Dzēst reģistra kopijas vecākas par: - + + Show external IP in status bar + + + + When adding a torrent Pievienojot torrentu - + Bring torrent dialog to the front Novietot torenta dialogu priekšplānā - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled .torrent faili tiks izdzēsti arī pie pievienošanas atcelšanas. - + Also when addition is cancelled Arī atceļot pievienošanu - + Warning! Data loss possible! Brīdinājums! Iespējams datu zudums! - + Saving Management Saglabāšanas iestatījumi - + Default Torrent Management Mode: Noklusējuma torrentu pārvaldības režīms: - + Manual Manuāli - + Automatic Automātiski - + When Torrent Category changed: Mainot torrenta kategoriju: - + Relocate torrent Pārvietot torrentu - + Switch torrent to Manual Mode Pārslēgt torrentu Manuālajā režīmā - - + + Relocate affected torrents Pārvietot ietekmētos torrentus - - + + Switch affected torrents to Manual Mode Pārslēgt ietekmētos torrentus Manuālajā režīmā - + Use Subcategories Lietot apakškategorijas - + Default Save Path: Noklusētā saglabāšanas vieta: - + Copy .torrent files to: Izveidot .torrent failu kopijas šeit: - + Show &qBittorrent in notification area Rādīt &qBittorrent paziņojumu joslā - &Log file - Reģistra fails + Reģistra fails - + Display &torrent content and some options Parādīt torrenta saturu un iestatījumus - + De&lete .torrent files afterwards Izdzēst .torrent failu pēc tā pievienošanas - + Copy .torrent files for finished downloads to: Izveidot .torrent failu kopijas pabeigtajiem torrentiem šeit: - + Pre-allocate disk space for all files Rezervēt brīvu vietu uz diska jaunajiem failiem - + Use custom UI Theme Izmanto pielāgotu saskarni - + UI Theme file: Saskarnes fails: - + Changing Interface settings requires application restart Saskarsnes uzstādījumu maiņai nepieciešams programmas restarts - + Shows a confirmation dialog upon torrent deletion Dzēšot torrentu, tiks parādīts apstiprinājuma logs - - + + Preview file, otherwise open destination folder Priekšskatīt failu. Ja nevar, tad atvērt atrašanās vietu - - Show torrent options - Torrenta iestatījumi + Torrenta iestatījumi - + Shows a confirmation dialog when exiting with active torrents Aizverot programmu ar vēl aktīviem torrentiem, tiks parādīts apstiprinājuma logs - + When minimizing, the main window is closed and must be reopened from the systray icon Samazinot qBittorrent, programmas logs tiek aizvērts un ir atverams ar ikonu paziņojumu joslā - + The systray icon will still be visible when closing the main window Pēc programmas loga aizvēršanas, tās ikona vēl aizvien būs redzama paziņojumu joslā - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Ar aizvēršanas pogu, novietot qBittorrent paziņojumu joslā - + Monochrome (for dark theme) Vienkrāsains (tumšajam motīvam) - + Monochrome (for light theme) Vienkrāsains (gaišajam motīvam) - + Inhibit system sleep when torrents are downloading Neatļaut miega režīmu, ja kādu failu lejupielāde vēl nav pabeigta - + Inhibit system sleep when torrents are seeding Neatļaut miega režīmu, ja kādi faili vēl tiek aktīvi augšupielādēti - + Creates an additional log file after the log file reaches the specified file size Izveidot papildus reģistra failu, kad esošais sasniedzis norādīto faila izmēru - + days Delete backup logs older than 10 days dienām - + months Delete backup logs older than 10 months mēnešiem - + years Delete backup logs older than 10 years gadiem - + Log performance warnings Reģistrēt darbības brīdinājumus - The torrent will be added to download list in a paused state - Torrents lejupielāžu sarakstā tiks pievienots apturēts + Torrents lejupielāžu sarakstā tiks pievienots apturēts - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Neuzsākt lejupielādi automātiski - + Whether the .torrent file should be deleted after adding it Vai .torrent fails ir jāizdzēš pēc tā pievienošanas - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Izbrīvēs pilnu vietu failiem pirms lejupielādes sākšanas, lai mazinātu diska fragmentāciju. Funkcija būtiska tikai HDD diskiem. - + Append .!qB extension to incomplete files Pievienot .!qB galotni nepabeigtajiem failiem - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Kad faili no torrenta ir lejupielādēti, piedāvāt lejupielādēt tajos atrastos citus .torrent failus. - + Enable recursive download dialog Parādīt rekursīvās lejupielādes dialogu - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automātiski: nozīmē, ka torrenta uzstādījumi (piem. saglabāšanas vieta), tiks iestatīti atbilstoši izvēlētajai kategorijai. Manuāli: Nozīmē, ka torrenta uzstādījumi (piem. saglabāšanas vieta) būs jānorāda pašam. - + When Default Save/Incomplete Path changed: Mainot noklusēto Saglabāšanas/Nepabeigto vietu: - + When Category Save Path changed: Mainot kategorijas saglabāšanas vietu: - + Use Category paths in Manual Mode Izmantot Kategoriju vietas manuālajā režīmā - + Resolve relative Save Path against appropriate Category path instead of Default one Noklusētās saglabāšanas vietas vietā izmantot attiecīgās Kategorijas saglabāšanas vietu - + Use icons from system theme Izmantot systēmas saskarnes ikonas - + Window state on start up: - + Loga stāvoklis palaišanas brīdī: - + qBittorrent window state on start up - + qBittorrent loga stāvoklis palaišanas brīdī - + Torrent stop condition: Torrenta apstādināšanas nosacījumi: - - + + None - + Nevienu - - + + Metadata received Metadati ielādēti - - + + Files checked Faili pārbaudīti - + Ask for merging trackers when torrent is being added manually - + Vaicāt pēc trakera saišu pievienošanas, ja torrents tiek pievienots manuāli - + Use another path for incomplete torrents: Izmantot citu vietu nepabeigtiem torrentiem: - + Automatically add torrents from: Automātiski pievienot torrentus no: - + Excluded file names Neiekļaujamo failu nosaukumi - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6643,841 +6994,914 @@ readme.txt: neatļaus failus ar tieši tādu nosaukumu. readme[0-9].txt: neatļaus 'readme1.txt', 'readme2.txt', bet atļaus 'readme10.txt'. - + Receiver Saņēmējs - + To: To receiver Uz: - + SMTP server: SMTP serveris: - + Sender Sūtītājs - + From: From sender No: - + This server requires a secure connection (SSL) Šim serverim ir nepieciešams šifrēts savienojums (SSL) - - + + Authentication Pierakstīšanās - - - - + + + + Username: Lietotājvārds: - - - - + + + + Password: Parole: - + Run external program Palaist ārēju programmu - Run on torrent added - Palaist reizē ar torrenta pievienošanu + Palaist reizē ar torrenta pievienošanu - Run on torrent finished - Palaist pēc torrenta ielādes pabeigšanas + Palaist pēc torrenta ielādes pabeigšanas - + Show console window Parādīt konsoles logu - + TCP and μTP TCP un μTP - + Listening Port Portu iestatījumi - + Port used for incoming connections: Ports, kuru izmanto ienākošajiem savienojumiem: - + Set to 0 to let your system pick an unused port Izvēlies 0, ja vēlies, lai sistēma izvēlas neizmantotu portu - + Random Nejaušs - + Use UPnP / NAT-PMP port forwarding from my router Lietot mana rūtera UPnP / NAT-PMP portu pāradresāciju - + Connections Limits Savienojumu ierobežojumi - + Maximum number of connections per torrent: Atļautais savienojumu skaits katram torrentam: - + Global maximum number of connections: Atlautais kopējais savienojumu skaits: - + Maximum number of upload slots per torrent: Atļautais augšupielādes slotu skaits katram torrentam: - + Global maximum number of upload slots: Atļautais kopējais augšupielādes slotu skaits: - + Proxy Server Starpniekserveris - + Type: Lietot: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Adrese: - - - + + + Port: Ports: - + Otherwise, the proxy server is only used for tracker connections Pretējā gadījumā, starpniekserveris tiks izmantots tikai savienojumiem ar trakeriem - + Use proxy for peer connections Izmantot starpniekserveri koplietotāju savienojumiem - + A&uthentication Pierakstīšanas - + Info: The password is saved unencrypted Brīdinājums: Šī parole netiek glabāta šifrētā veidā - + Filter path (.dat, .p2p, .p2b): Filtra atrašanās vieta (.dat, .p2p, .p2b): - + Reload the filter Pārlādēt filtru - + Manually banned IP addresses... Manuāli bloķētās IP adreses... - + Apply to trackers Pielietot trakeriem - + Global Rate Limits Galvenie atļautie kopējie ātrumi - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Augšupielāde: - - + + Download: Lejupielāde: - + Alternative Rate Limits Alternatīvie atļautie kopējie ātrumi - + Start time Sākšanas laiks - + End time Beigšanas laiks - + When: Kad: - + Every day Katru dienu. - + Weekdays Darbdienās - + Weekends Nedēļas nogalēs - + Rate Limits Settings Ielādes ātrumu ierobežojumu iestatījumi - + Apply rate limit to peers on LAN Pielietot ierobežojumus koplietotājiem LAN tīklā - + Apply rate limit to transport overhead Pielietot ātruma ierobežojums tikai transporta izmaksām - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Pielietot ierobežojumus µTP protokolam - + Privacy Privātums - + Enable DHT (decentralized network) to find more peers Ieslēgt DHT (necentralizēto tīklu), lai atrastu vēl vairāk koplietotājus - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Apmainīties ar koplietotājiem ar saderīgiem Bittorrent klientiem (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Ieslēgt datu apmaiņu koplietotāju starpā (PeX), lai atrastu vairāk koplietotājus - + Look for peers on your local network Meklēt koplietotājus privātajā tīklā - + Enable Local Peer Discovery to find more peers Ieslēgt Vietējo koplietotāju meklēšanu, lai atrastu vēl vairāk koplietotājus - + Encryption mode: Šifrēšanas režīms: - + Require encryption Pieprasīt šifrēšanu - + Disable encryption Atslēgt šifrēšanu - + Enable when using a proxy or a VPN connection Ieslēgt, ja tiek izmantots starpniekserveris vai VPN - + Enable anonymous mode Iespējot anonīmo režīmu - + Maximum active downloads: Atļautais aktīvo lejupielāžu skaits: - + Maximum active uploads: Atļautais aktīvo augšupielāžu skaits: - + Maximum active torrents: Atļautais kopējais aktīvo torrentu skaits: - + Do not count slow torrents in these limits Neiekļaut šajās robežās lēnos torrentus. - + Upload rate threshold: Nepārsniedz Auģsupielādes ātrumu: - + Download rate threshold: Nepārsniedz Lejupielādes ātrumu: - - - + + + + sec seconds sek - + Torrent inactivity timer: Torrentu neaktivitātes skaitītājs: - + then tad - + Use UPnP / NAT-PMP to forward the port from my router Lietot UPnP / NAT-PMP lai pāradresētu portu manā maršrutētājā - + Certificate: Sertifikāts - + Key: Atslēga: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informācija par sertifikātiem</a> - + Change current password Mainīt patreizējo paroli - Use alternative Web UI - Lietot citu Tālvadības paneļa saskarni + Lietot citu Tālvadības paneļa saskarni - + Files location: Failu atrašanās vieta: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Drošība - + Enable clickjacking protection Ieslēgt aizsardzību pret clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Ieslēgt aizsardzību pret Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Ieslēgt Hosta header apstiprināšanu - + Add custom HTTP headers Pievienot pielāgotas HTTP galvenes - + Header: value pairs, one per line Galvene: Katrā rindā pa vienam vērtību pārim - + Enable reverse proxy support Atļaut reversos starptniekserverus - + Trusted proxies list: Uzticamo starpniekserveru saraksts: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Serviss: - + Register Reģistrēties - + Domain name: Domēna vārds: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Iespējojot šo opciju, varat <strong>neatgriezeniski zaudēt</strong> .torrent failus! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Ja tu iespējosi otru opciju (&ldquo;Arī atceļot pievienošanu&rdquo;) .torrent fails <strong>tiks izdzēsts</strong> arī, ja tu piespiedīsi &ldquo;<strong>Atcelt</strong>&rdquo; &ldquo;Pievienot Torrentu failus&rdquo; logā - + Select qBittorrent UI Theme file Izvēlēties qBittorrent saskarnes failu - + Choose Alternative UI files location Izvēlieties interfeisa failu atrašanās vietu - + Supported parameters (case sensitive): Nodrošinātie parametri (reģistrjūtīgi): - + Minimized Samazināts - + Hidden Paslēpts - + Disabled due to failed to detect system tray presence - + No stop condition is set. Aptstādināšanas nosacījumi nav izvēlēti - + Torrent will stop after metadata is received. Torrents tiks apstādināts pēc metadatu ielādes. - - Torrents that have metadata initially aren't affected. - Neattiecas uz torrentiem, kuriem jau sākotnēji ir metadati. - - - + Torrent will stop after files are initially checked. Torrents tiks apstādināts pēc sākotnējo failu pārbaudes. - + This will also download metadata if it wasn't there initially. Tas ielādēs arī metadatus, ja to nebija jau sākotnēji. - + %N: Torrent name %N: Torrent faila nosaukums - + %L: Category %L: Kategorija - + %F: Content path (same as root path for multifile torrent) %F: Satura ceļš (tāpat kā saknes ceļš daudz-failu torrentam) - + %R: Root path (first torrent subdirectory path) %R: Saknes ceļš (pirmā torrenta apakšdirektorijas ceļš) - + %D: Save path %D: Saglabāšanas vieta - + %C: Number of files %C: Failu skaits - + %Z: Torrent size (bytes) %Z: Torrenta izmērs (baitos) - + %T: Current tracker %T: Pašreizējais trakeris - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Padoms: Lai izvairītos no teksta sadalīšanās, ja lietojat atstarpes, ievietojiet parametru pēdiņās (piemēram, "%N") - - (None) - (Nevienu) + + Test email + - - A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds + + Attempted to send email. Check your inbox to confirm success + + + + + (None) + (Nevienu) + + + + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Par lēnajiem torrentiem tiek reģistrēti tie, kuru ātrumi nepārsniedz zemāk norādītos, ilgāk kā norādīts "Torrentu neaktivātes skaitītājā". - + Certificate Sertifikāts - + Select certificate Izvēlieties sertifikātu - + Private key Privāta atslēga - + Select private key Izvēlieties privātu atslēgu - + + WebUI configuration failed. Reason: %1 + Tālvadības paneļa konfigurācija neizdevās. Iemesls: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Izvēlēties mapi, kuru uzraudzīt - + Adding entry failed Ieraksta pievienošana neizdevās - - Location Error - Atrašanās vietas kļūda + + The WebUI username must be at least 3 characters long. + Tālvadības paneļa lietotājvārdam jāsatur vismaz 3 rakstzīmes. + + + + The WebUI password must be at least 6 characters long. + Tālvadības paneļa parolei jāsatur vismaz 6 rakstzīmes. - - The alternative Web UI files location cannot be blank. - Interfeisa failu atrašanās vieta nevar tikt atstāta tukša. + + Location Error + Atrašanās vietas kļūda - - + + Choose export directory Izvēlieties eksportēšanas direktoriju - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Ja šīs opcijas ir iespējotas, qBittorent <strong>dzēsīs</strong> .torrent failus pēc tam, kad tie tiks veiksmīgi (pirmais variants) vai ne (otrais variants) pievienoti lejupielādes sarakstam. Tas tiks piemērots <strong>ne tikai</strong> failiem, kas atvērti, izmantojot &ldquo;Pievienot Torrentu failus&rdquo; izvēlnes darbību, bet arī, to atverot, izmantojot <strong>failu tipu piesaistes</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent saskarnes fails (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Atzīmes (atdalītas ar komatu) - + %I: Info hash v1 (or '-' if unavailable) %I: Jaucējkods v1 (vai '-' ja nav pieejams) - + %J: Info hash v2 (or '-' if unavailable) %J: Jaucējkods v2 (vai '-' ja nav pieejams) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrenta ID (Vai nu sha-1 jaucējukods torrentam v1, vai arī saīsināts sha-256 jaucējkods v2/hibrīda torrentam) - - - + + + Choose a save directory Izvēlieties saglabāšanas direktoriju - + + Torrents that have metadata initially will be added as stopped. + Torrenti, kuriem ir metadati tiks pievienoti apstādināti. + + + Choose an IP filter file Izvēlieties IP filtra failu - + All supported filters Visi atbalstītie filtri - + + The alternative WebUI files location cannot be blank. + Saskarnes failu atrašanās vieta nevar tikt atstāta tukša. + + + Parsing error Parsēšanas kļūda - + Failed to parse the provided IP filter Neizdevās parsēt norādīto IP filtru - + Successfully refreshed Veiksmīgi atsvaidzināts - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number IP filtra parsēšana veiksmīga: piemēroti %1 nosacījumi. - + Preferences Iestatījumi - + Time Error Laika kļūda - + The start time and the end time can't be the same. Sākuma un beigu laiks nevar būt vienāds - - + + Length Error Garuma kļūda - - - The Web UI username must be at least 3 characters long. - Tālvadības paneļa lietotājvārdam ir jāsatur vismaz 3 rakstzīmes. - - - - The Web UI password must be at least 6 characters long. - Tālvadības paneļa parolei ir jāsatur vismaz 6 rakstzīmes. - PeerInfo - + Unknown Nezināms - + Interested (local) and choked (peer) Ieinteresēti (vietējie) un aizņemti (koplietotāji) - + Interested (local) and unchoked (peer) Ieinteresēti (vietējie) un nav aizņemti (koplietotāji) - + Interested (peer) and choked (local) Ieinteresēti (koplietotāji) un aizņemti (vietējie) - + Interested (peer) and unchoked (local) Ieinteresēti (koplietotāji) un nav aizņemti (vietējie) - + Not interested (local) and unchoked (peer) Nav ieinteresēti (vietējie) un nav aizņemti (koplietotāji) - + Not interested (peer) and unchoked (local) Nav ieinteresēti (koplietotāji) un nav aizņemti (vietējie) - + Optimistic unchoke Optimistisks unchoke - + Peer snubbed Koplietotājs noraidīts - + Incoming connection Ienākošs savienojums - + Peer from DHT Koplietotājs no DHT - + Peer from PEX Koplietotājs no PEX - + Peer from LSD Koplietotājs no LSD - + Encrypted traffic Šifrēta datplūsma - + Encrypted handshake Šifrēts rokasspiediens + + + Peer is using NAT hole punching + + PeerListWidget @@ -7633,7 +8057,7 @@ readme[0-9].txt: neatļaus 'readme1.txt', 'readme2.txt', bet Koplietotājs "%1" tika manuāli aizliegts - + N/A Nav zināms @@ -7656,7 +8080,7 @@ readme[0-9].txt: neatļaus 'readme1.txt', 'readme2.txt', bet Saraksts ar jaunajiem koplietotājiem (katrā rindā pa vienam): - + Format: IPv4:port / [IPv6]:port Paraugs: IPv4:ports / [IPv6]:ports @@ -7697,27 +8121,27 @@ readme[0-9].txt: neatļaus 'readme1.txt', 'readme2.txt', bet PiecesBar - + Files in this piece: Faili šajā daļā: - + File in this piece: Fails šajā daļā: - + File in these pieces: Fails šajās daļās: - + Wait until metadata become available to see detailed information Uzgaidiet līdz kļūs pieejami Metadati, lai iegūtu sīkāku informāciju. - + Hold Shift key for detailed information Plašākai informācijai turiet nospiestu Shift taustiņu @@ -7730,58 +8154,58 @@ readme[0-9].txt: neatļaus 'readme1.txt', 'readme2.txt', bet Meklētāju spraudņi - + Installed search plugins: Ieinstalētie meklētāju spraudņi: - + Name Nosaukums - + Version Versija - + Url Adrese - - + + Enabled Ieslēgts - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Uzmanību: Pārliecinieties, ka ievērojat jūsu valsts autortiesību likumus, pirms lejupielādējat šajos meklētājos atrastos torrentus. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Jūs varat atrast jaunus meklētāju spraudņus šeit: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instalēt jaunu spraudni - + Check for updates Meklēt atjauninājumus - + Close Aizvērt - + Uninstall Atinstalēt @@ -7901,17 +8325,17 @@ Esošie spraudņi tika atslēgti. Spraudņa avots - + Search plugin source: Meklēt spraudņa avotu: - + Local file Datorā - + Web link Internetā @@ -7952,47 +8376,47 @@ Esošie spraudņi tika atslēgti. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Sekojošie faili no torrenta "%1" atbalsta priekšskatīšanu, lūdzu izvēlieties vienu no tiem: - + Preview Priekšskatīt - + Name Nosaukums - + Size Izmērs - + Progress Pabeigti - + Preview impossible Priekšskatīšana nav iespējama - + Sorry, we can't preview this file: "%1". Atvainojiet, šo failu nevar priekšskatīt: "%1". - + Resize columns Mainīt kolonnu izmērus - + Resize all non-hidden columns to the size of their contents Pielāgot visu kolonnu izmērus attiecīgi to saturam @@ -8005,27 +8429,27 @@ Esošie spraudņi tika atslēgti. Private::FileLineEdit - + Path does not exist Norādītā vieta nepastāv - + Path does not point to a directory Šajā ceļā nav norādīta mape - + Path does not point to a file Šajā ceļā nav norādīts fails - + Don't have read permission to path Nav lasīšanas tiesību šajā vietā - + Don't have write permission to path Nav rakstīšanas tiesību šajā vietā @@ -8066,12 +8490,12 @@ Esošie spraudņi tika atslēgti. PropertiesWidget - + Downloaded: Lejupielādēti: - + Availability: Pieejamība: @@ -8086,53 +8510,53 @@ Esošie spraudņi tika atslēgti. Koplietošanas dati - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktīvs jau: - + ETA: Aptuvenais ielādes laiks: - + Uploaded: Augšupielādēti: - + Seeds: Devēji: - + Download Speed: Lejupielādes ātrums: - + Upload Speed: Augšupielādes ātrums: - + Peers: Ņēmēji: - + Download Limit: Lejupielādes robeža: - + Upload Limit: Augšupielādes robeža: - + Wasted: Izmesti: @@ -8142,193 +8566,249 @@ Esošie spraudņi tika atslēgti. Savienojumi: - + Information Informācija - + Info Hash v1: Jaucējkods v1: - + Info Hash v2: Jaucējkods v2: - + Comment: Komentārs: - + Select All Izvēlēties visus - + Select None Neizvēlēties nevienu - + Share Ratio: Lejup/Augšup attiecība: - + Reannounce In: Savienojums ar trakeri pēc: - + Last Seen Complete: Pēdējo reizi koplietots: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Kopējais izmērs: - + Pieces: Daļiņas: - + Created By: Izveidots ar: - + Added On: Pievienots: - + Completed On: Pabeigts: - + Created On: Izveidots: - + + Private: + + + + Save Path: Saglabāšanas vieta: - + Never Nekad - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ielādētas %3) - - + + %1 (%2 this session) %1 (%2 šajā sesijā) - - + + + N/A Nav zināms - + + Yes + + + + + No + + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (augšupielādē jau %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 atļauti) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 kopā) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 vidējais) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Pievienot tīmekļa devēju + Pievienot tīmekļa devēju - Remove Web seed - Noņemt tīmekļa devēju + Noņemt tīmekļa devēju - Copy Web seed URL - Kopēt tīmekļa devēja adresi + Kopēt tīmekļa devēja adresi - Edit Web seed URL - Izlabot tīmekļa devēja adresi + Izlabot tīmekļa devēja adresi - + Filter files... Meklēt failos... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Ātrumu diagrammas ir atslēgtas - + You can enable it in Advanced Options Varat tās ieslēgt Papildus Iestatījumos - New URL seed New HTTP source - Pievienot tīmekļa devēju + Pievienot tīmekļa devēju - New URL seed: - Pievienot tīmekļa devēju + Pievienot tīmekļa devēju - - This URL seed is already in the list. - Šis tīmekļa devējs jau ir sarakstā. + Šis tīmekļa devējs jau ir sarakstā. - + Web seed editing Tīmekļa devēja labošana - + Web seed URL: Tīmekļa devēja adrese: @@ -8347,22 +8827,22 @@ Esošie spraudņi tika atslēgti. Neizdevās saglabāt RSS automātiskā ielādētāja datus %1. Kļūda: %2 - + Invalid data format Nederīgs datu formāts. - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + '%2' filtrs atzīmējis RSS ierakstu '%1'. Mēģina pievienot torrentu... - + Failed to read RSS AutoDownloader rules. %1 Neizdevās ielādēt RSS automātiskā ielādētāja filtru. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Neizdevās ielādēt RSS automātiskā ielādētāja filtru. Iemesls: %1 @@ -8370,22 +8850,22 @@ Esošie spraudņi tika atslēgti. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Neizdevās ielādēt RSS kanālu no '%1'. Iemesls: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS kanāls '%1' veiksmīgi atjaunināts. Tika pievienoti %2 jauni ieraksti. - + Failed to parse RSS feed at '%1'. Reason: %2 Neizdevās parsēt RSS kanālu no '%1'. Iemesls: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS kanāla '%1' saturs veiksmīgi lejupielādēts. Tiek sākta datu pārstrāde. @@ -8421,12 +8901,12 @@ Esošie spraudņi tika atslēgti. RSS::Private::Parser - + Invalid RSS feed. Nederīgs RSS kanāls. - + %1 (line: %2, column: %3, offset: %4). %1 (rinda: %2, kolonna: %3, nobīde: %4). @@ -8434,99 +8914,99 @@ Esošie spraudņi tika atslēgti. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Neizdevās saglabāt RSS sesijas iestatījumus. Fails: "%1". Iemesls: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Neizdevās saglabāt RSS sesijas datus. Fails: "%1". Iemesls: "%2" - - + + RSS feed with given URL already exists: %1. Šis RSS kanāls jau ir pievienots: %1. - + Feed doesn't exist: %1. Kanāls nepastāv: %1. - + Cannot move root folder. Nevar pārvietot root mapi. - - + + Item doesn't exist: %1. Fails nepastāv: %1. - + Couldn't move folder into itself. - + Nevar mapi ievietot sevī. - + Cannot delete root folder. Nevar izdzēst root mapi. - + Failed to read RSS session data. %1 Neizdevās nolasīt RSS sesijas datus. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Neizdevās parsēt RSS sesijas datus. Fails: "%1". Iemesls: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Neizdevās ielādēt RSS sesijas datus. Fails: "%1". Iemesls: "Nederīgs datu formāts." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Neizdevās ielādēt RSS kanālu. Kanāls: "%1". Iemesls: Nepieciešama kanāla adrese. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Neizdevās ielādēt RSS kanālu. Kanāls: "%1". Iemesls: UID nav derīga. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Atrasts RSS kanāla duplikāts. UID: "%1". Kļūda: Satur kļūdainu informāciju. - + Couldn't load RSS item. Item: "%1". Invalid data format. Neizdevās ielādēt ziņu no RSS kanāla. Ziņa: "%1". Nederīgs datu formāts. - + Corrupted RSS list, not loading it. Kļūdaina RSS informācija, to neielādēs. - + Incorrect RSS Item path: %1. Nepareiza vieta failam no RSS: %1. - + RSS item with given path already exists: %1. Fails no RSS ar norādīto vietu jau pastāv: %1. - + Parent folder doesn't exist: %1. Virsmape nepastāv: %1. @@ -8550,8 +9030,8 @@ Esošie spraudņi tika atslēgti. - - + + Mark items read Atzīmēt visus kā skatītus @@ -8576,132 +9056,132 @@ Esošie spraudņi tika atslēgti. Torrenti: (dubultklikšķis, lai lejupielādētu) - - + + Delete Dzēst - + Rename... Pārdēvēt... - + Rename Pārdēvēt - - + + Update Atsvaidzināt - + New subscription... Pievienot kanālu... - - + + Update all feeds Atsvaidzināt visus kanālus - + Download torrent Lejupielādēt torrentu - + Open news URL Atvērt ieraksta adresi - + Copy feed URL Kopēt kanāla adresi - + New folder... Jauna mape... - + Edit feed URL... Rediģēt kanāla adresi... - + Edit feed URL Rediģēt kanāla adresi - + Please choose a folder name Lūdzu, izvēlēties mapes nosaukumu - + Folder name: Mapes nosaukums: - + New folder Jauna mape - - + + Please type a RSS feed URL Lūdzu ievadiet RSS kanāla adresi - - + + Feed URL: Kanāla adrese: - + Deletion confirmation Dzēšanas apstiprināšana - + Are you sure you want to delete the selected RSS feeds? Vai esat pārliecināts, ka vēlaties izdzēst atlasītos RSS kanālus? - + Please choose a new name for this RSS feed Lūdzu izvēlēties jaunu nosaukumu šim RSS kanālam - + New feed name: Jaunais kanāla nosaukums: - + Rename failed Pārdēvēšana neizdevās - + Date: Datums: - + Feed: - + Kanāls: - + Author: Autors: @@ -8709,38 +9189,38 @@ Esošie spraudņi tika atslēgti. SearchController - + Python must be installed to use the Search Engine. Lai lietotu Meklētāju, ir nepieciešams Python. - + Unable to create more than %1 concurrent searches. Nevar veikt vairāk kā %1 meklējumus vienlaicīgi. - - + + Offset is out of range Nobīde ir ārpus robežas - + All plugins are already up to date. Visi jūsu spraudņi jau ir atjaunināti. - + Updating %1 plugins Atjaunina %1 spraudņus - + Updating plugin %1 Atjaunina spraudni %1 - + Failed to check for plugin updates: %1 Neizdevās sameklēt spraudņu atjauninājumus: %1 @@ -8815,132 +9295,146 @@ Esošie spraudņi tika atslēgti. Izmērs: - + Name i.e: file name - Nosaukums + Nosaukuma - + Size i.e: file size Izmērs - + Seeders i.e: Number of full sources Devēji - + Leechers i.e: Number of partial sources Ņēmēji - Search engine - Meklētājs + Meklētājs - + Filter search results... Meklēt rezultātos... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Rezultāti (parādīti <i>%1</i> no <i>%2</i>): - + Torrent names only Tikai torrentu nosaukumos - + Everywhere Visur - + Use regular expressions Lietot Regulārās izteiksmes - + Open download window Atvērt lejupielādes logu - + Download Lejupielādēt - + Open description page Atvērt torrenta apraksta lapu - + Copy Kopēt - + Name Nosaukumu - + Download link Lejupielādes saiti - + Description page URL Apraksta lapas adresi - + Searching... Meklē... - + Search has finished Meklēšana pabeigta. - + Search aborted Meklēšana pārtraukta - + An error occurred during search... Meklēšanas laikā radās kļūda... - + Search returned no results Meklēšana nedeva rezultātus - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Kolonnas redzamība - + Resize columns Mainīt kolonnu izmērus - + Resize all non-hidden columns to the size of their contents Pielāgot visu kolonnu izmērus attiecīgi to saturam @@ -8948,104 +9442,104 @@ Esošie spraudņi tika atslēgti. SearchPluginManager - + Unknown search engine plugin file format. Nezināms meklētāja spraudņa faila formāts. - + Plugin already at version %1, which is greater than %2 Pluginam jau ir versija %1, kas ir jaunāka par %2 - + A more recent version of this plugin is already installed. Šobrīd jau ir ieinstalēta šī spraudņa jaunāka versija. - + Plugin %1 is not supported. Spraudnis %1 nav atbalstīts. - - + + Plugin is not supported. Spraudnis nav atbalstīts - + Plugin %1 has been successfully updated. Spraudnis %1 veiksmīgi atjaunināts. - + All categories Visas kategorijas - + Movies Filmas - + TV shows TV raidījumi - + Music Mūzika - + Games Spēles - + Anime Animācija - + Software Programmatūra - + Pictures Attēli - + Books Grāmatas - + Update server is temporarily unavailable. %1 Atjauninājumu serveris šobrīd nav pieejams. %1 - - + + Failed to download the plugin file. %1 Neizdevās lejupielādēt spraudņa failu. %1 - + Plugin "%1" is outdated, updating to version %2 Spraudnis "%1" ir novecojis, atjauninām uz versiju %2 - + Incorrect update info received for %1 out of %2 plugins. Par %1 no %2 spraudņiem saņemta kļūdaina atjauninājumu informācija. - + Search plugin '%1' contains invalid version string ('%2') Meklētāja spraudnis '%1' satur nederīgus datus par versiju ('%22') @@ -9055,114 +9549,153 @@ Esošie spraudņi tika atslēgti. - - - - Search Meklēt - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Nav atrasti uzinstalēti meklētāju spraudņi. Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. - + Search plugins... Meklētāju spraudņi... - + A phrase to search for. Frāze, ko meklēt. - + Spaces in a search term may be protected by double quotes. Meklējot terminu ar atstarpēm, iekļaujiet to pēdiņās. - + Example: Search phrase example Piemērs: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: meklēs <b>foo bar</b> - + All plugins Visi spraudņi - + Only enabled Tikai ieslēgtie - + + + Invalid data format. + Nederīgs datu formāts. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: meklēs <b>foo</b> un <b>bar</b> - + + Refresh + + + + Close tab Aizvērt cilni - + Close all tabs Aizvērt visas cilnes - + Select... Izvēlēties... - - - + + Search Engine Meklētājs - + + Please install Python to use the Search Engine. Lūdzu uzinstalējiet Python, lai lietotu meklētāju. - + Empty search pattern Ievadiet atslēgas vārdus - + Please type a search pattern first Lūdzu meklētājā ievadiet atslēgas vārdus - + + Stop Pārtraukt - Search has finished - Meklēšana pabeigta + Meklēšana pabeigta - Search has failed - Meklēšana neizdevās + Meklēšana neizdevās + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9275,34 +9808,34 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. - + Upload: Augšupielāde: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Lejupielāde: - + Alternative speed limits Alternatīvie ātrumu ierobežojumi @@ -9494,32 +10027,32 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. Vidējais laiks rindā: - + Connected peers: Pievienotie koplietotāji: - + All-time share ratio: Kopējā Lejup/Augšup attiecība: - + All-time download: Kopējais lejupielādes daudzums: - + Session waste: Izmesti šajā sesijā: - + All-time upload: Kopējais augšupielādes daudzums: - + Total buffer size: Kopējais bufera izmērs: @@ -9534,12 +10067,12 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. I/O darbības rindā: - + Write cache overload: Kešatmiņas rakstīšanas noslodze: - + Read cache overload: Kešatmiņas lasīšanas noslodze: @@ -9558,51 +10091,67 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. StatusBar - + Connection status: Savienojuma stāvoklis: - - + + No direct connections. This may indicate network configuration problems. Nav tieša savienojuma. Tas var norādīt uz nepareizi nokonfigurētu tīkla savienojumu. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 serveri - + qBittorrent needs to be restarted! qBittorrent ir nepieciešams restarts! - - - + + + Connection Status: Savienojuma stāvoklis: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Atslēdzies. Tas parasti nozīmē to, ka qBittorrent neizdevās izveidot kontaktu ar ienākošo savienojumu portu. - + Online Pieslēdzies. Tas parasti nozīmē, ka vajadzīgie porti ir atvērti un viss strādā kā nākas. - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klikšķiniet šeit, lai pielietotu alternatīvos ielādes ātrumus - + Click to switch to regular speed limits Klikšķiniet šeit, lai pielietotu regulāros ielādes ātrumus @@ -9631,14 +10180,22 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. Pabeigti (0) - Resumed (0) - Atsākti (0) + Atsākti (0) - Paused (0) - Apturēti (0) + Apturēti (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9700,10 +10257,29 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. Completed (%1) Pabeigti (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Apturēti (%1) + Apturēti (%1) @@ -9711,14 +10287,12 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. Pārvieto (%1) - Resume torrents - Atsākt torrentus + Atsākt torrentus - Pause torrents - Apturēt torrentus + Apturēt torrentus @@ -9726,9 +10300,8 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. Dzēst torrentus - Resumed (%1) - Atsākti (%1) + Atsākti (%1) @@ -9769,17 +10342,17 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. TagFilterModel - + Tags Atzīmes - + All Visi - + Untagged Bez atzīmes @@ -9787,52 +10360,64 @@ Spiediet uz "Meklētāju spraudņi..." pogas, lai kādu uzinstalētu. TagFilterWidget - + Add tag... Pievienot atzīmi... - + Remove tag Dzēst atzīmi - + Remove unused tags Dzēst neizmantotās atzīmes - Resume torrents - Atsākt torrentus + Atsākt torrentus - Pause torrents - Apturēt torrentus + Apturēt torrentus - + Remove torrents Dzēst torrentus - New Tag - Jauna atzīme + Jauna atzīme + + + + Start torrents + + + + + Stop torrents + - + Tag: Atzīme: - + + Add tag + + + + Invalid tag name Nederīgs Atzīmes nosaukums - + Tag name '%1' is invalid Atzīmes nosaukums '%1' nav derīgs @@ -9972,32 +10557,32 @@ Lūdzu izvēlieties citu nosaukumu. TorrentContentModel - + Name Nosaukums - + Progress Pabeigti - + Download Priority Lejupielādes prioritāte - + Remaining Atlikuši - + Availability Pieejamība - + Total Size Kopējais izmērs @@ -10042,102 +10627,120 @@ Lūdzu izvēlieties citu nosaukumu. TorrentContentWidget - + Rename error Kļūda pārdēvēšanā - + Renaming Pārdēvēšana - + New name: Jaunais nosaukums: - + Column visibility Kolonnas redzamība - + Resize columns Pielāgot kolonnu izmērus - + Resize all non-hidden columns to the size of their contents Pielāgot visu kolonnu izmērus attiecīgi to saturam - + Open Atvērt failu - + Open containing folder Atvērt failu atrašanās vietu - + Rename... Pārdēvēt... - + Priority Prioritāte - - + + Do not download Nelejupielādēt - + Normal Normāla - + High Augsta - + Maximum Augstākā - + By shown file order Pēc redzamās failu secības - + Normal priority Normāla - + High priority Augsta - + Maximum priority Augstākā - + Priority by shown file order Pēc redzamās failu secības + + TorrentCreatorController + + + Too many active tasks + Pārāk daudz aktīvu darbību + + + + Torrent creation is still unfinished. + Torrenta izveide vēl nav pabeigta. + + + + Torrent creation failed. + Torrenta izveida neizdevās. + + TorrentCreatorDialog @@ -10162,13 +10765,13 @@ Lūdzu izvēlieties citu nosaukumu. - + Select file Izvēlies failu - + Select folder Izvēlies mapi @@ -10193,58 +10796,10 @@ Lūdzu izvēlieties citu nosaukumu. Daļiņas izmērs: - + Auto Automātiski - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10291,92 +10846,83 @@ Lūdzu izvēlieties citu nosaukumu. Laukumi - + You can separate tracker tiers / groups with an empty line. Jūs varat atdalīt trakeru adrešu grupas ar tukšu līniju - + Web seed URLs: Tīmekļa devēju adreses: - + Tracker URLs: Trakeru adreses: - + Comments: Komentārs: - + Source: Avots: - + Progress: Pabeigti: - + Create Torrent Izveidot torrentu - - + + Torrent creation failed Torrenta izveida neizdevās - + Reason: Path to file/folder is not readable. Iemesls: Faila/mapes atrašanās vieta nav nolasāma. - + Select where to save the new torrent Izvēlieties, kur saglabāt jauno torrentu - + Torrent Files (*.torrent) Torrentu faili (*.torrent) - - Reason: %1 - Iemesls: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Iemesls: "%1" - + Add torrent failed - + Torrenta pievienošana neizdevās - Reason: Created torrent is invalid. It won't be added to download list. - Iemesls: Izveidotais torrenta fails nav derīgs. Tas netiks pievienots torrentu sarakstam. - - - + Torrent creator Torrentu veidotājs - + Torrent created: Torrents izveidots: @@ -10384,32 +10930,32 @@ Lūdzu izvēlieties citu nosaukumu. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Neizdevās ielādēt Uzraudzīto mapju uzstādījumus. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Neizdevās parsēt Uzraudzīto mapju uzstādījumus no %1. Iemesls: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Neizdevās ielādēt Uzraudzīto mapju uzstādījumus no %1. Iemesls: "Nederīgs datu formāts." - + Couldn't store Watched Folders configuration to %1. Error: %2 Neizdevās saglabāt Uzraudzīto mapju uzstādījumus %1. Iemesls: %2 - + Watched folder Path cannot be empty. Uzraudzītās mapes atrašanās vietu nevar atstāt tukšu. - + Watched folder Path cannot be relative. Uzraudzītās mapes atrašanās vieta nevar būt relatīva. @@ -10417,27 +10963,27 @@ Lūdzu izvēlieties citu nosaukumu. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Nederīga Magnētsaite. Magnētsaite: %1. Iemesls: %2 - + Magnet file too big. File: %1 Magnētfails pārāk liels. Fails: %1 - + Failed to open magnet file: %1 Neizdevās atvērt magnētsaiti: %1 - + Rejecting failed torrent file: %1 Noraidīts neizdevies torrenta fails: %1 - + Watching folder: "%1" Uzraugāmā mape: "%1" @@ -10445,14 +10991,12 @@ Lūdzu izvēlieties citu nosaukumu. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Neizdevās piešķirt atmiņu faila nolasīšanai. Fails: "%1". Kļūda: "%2" - Invalid metadata - Nederīgi metadati + Nederīgi metadati @@ -10483,127 +11027,203 @@ Lūdzu izvēlieties citu nosaukumu. Izmantot citu vietu nepabeigtiem torrentiem - + Category: Kategorija: - + + Torrent Share Limits + + + Torrent speed limits - Torrenta ātrumu ierobežojumi + Torrenta ātrumu ierobežojumi - + Download: Lejupielāde: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Šie ierobežojumi nepārsniegs Galvenos ātruma ierobežojumus - + Upload: Augšupielāde: - Torrent share limits - Torrenta dalīšanas ierobežojumi + Torrenta dalīšanas ierobežojumi - Use global share limit - Lietot Galvenos dalīšanas ierobežojumus + Lietot Galvenos dalīšanas ierobežojumus - Set no share limit - Neierobežot + Neierobežot - Set share limit to - Ierobežot + Ierobežot - ratio - L/A attiecība + L/A attiecība - total minutes - + kopējās minūtes - inactive minutes - + neaktīvās minūtes - + Disable DHT for this torrent Atslēgt DHT šim torrentam - + Download in sequential order Lejupielādēt secīgā kārtībā - + Disable PeX for this torrent Atslēgt PeX šim torrentam - + Download first and last pieces first Vispirms ielādēt pirmās un pēdējās daļiņas - + Disable LSD for this torrent Atslēgt LSD šim torrentam - + Currently used categories Patreiz izmantotās kategorijas - - + + Choose save path Izvēlieties saglabāšanas vietu - + Not applicable to private torrents Nav pielāgojams privātiem torrentiem - No share limit method selected - Nav izvēlēts ierobežošanas veids + Nav izvēlēts ierobežošanas veids - Please select a limit method first - Lūdzu izvēlieties ierobežošanas veidu + Lūdzu izvēlieties ierobežošanas veidu + + + + TorrentShareLimitsWidget + + + + + + Default + Noklusētais + + + + + + Unlimited + Neierobežots + + + + + + Set to + Uzstādīt + + + + Seeding time: + Augšupielādes laiks: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Neaktīvais augšupielādes laiks: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Dzēst torrentu + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Ieslēgt torrentu super-augšupielādi + + + + Ratio: + L/A Attiecība: @@ -10614,32 +11234,36 @@ Lūdzu izvēlieties citu nosaukumu. Torrenta atzīmes - New Tag - Jauna atzīme + Jauna atzīme + Add tag + + + + Tag: Atzīme: - + Invalid tag name Nederīgs Atzīmes nosaukums - + Tag name '%1' is invalid. Atzīmes nosaukums '%1' nav derīgs. - + Tag exists Kļūda nosaukumā - + Tag name already exists. Atzīme ar šādu nosaukumu jau pastāv. @@ -10647,115 +11271,130 @@ Lūdzu izvēlieties citu nosaukumu. TorrentsController - + Error: '%1' is not a valid torrent file. Kļūda. '%1' nav derīgs torrenta fails. - + Priority must be an integer Prioritātei ir jānorāda vesels skaitlis - + Priority is not valid Prioritāte nav derīga - + Torrent's metadata has not yet downloaded Torrenta metadati vēl nav lejupielādēti - + File IDs must be integers Failu ID jānorāda veseli skaitļi - + File ID is not valid Faila ID nav derīgs - - - - + + + + Torrent queueing must be enabled Ir jāieslēdz Torrentu ierindošana - - + + Save path cannot be empty Saglabāšanas vietu nevar atstāt tukšu - - + + Cannot create target directory Neizdevās izveidot norādīto mapi - - + + Category cannot be empty Kategoriju nevar atstāt tukšu - + Unable to create category Neizdevās izveidot kategoriju - + Unable to edit category Neizdevās labot kategoriju - + Unable to export torrent file. Error: %1 Neizdevās eksportēt .torrent failu. Kļūda: %1 - + Cannot make save path Nevar izveidot saglabāšanas vietu - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sort' parameters nav derīgs - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" nav derīgs failu indekss. - + Index %1 is out of bounds. Indekss %1 ir ārpus robežas. - - + + Cannot write to directory Šajā mapē nevar saglabāt - + WebUI Set location: moving "%1", from "%2" to "%3" Pārvietošana: pārvietot "%1", no "%2" uz "%3" - + Incorrect torrent name Nepareizs torrenta nosaukums - - + + Incorrect category name Nepareizs kategorijas nosaukums @@ -10786,257 +11425,207 @@ Lūdzu izvēlieties citu nosaukumu. TrackerListModel - - + Working - Strādā + Strādā - + Disabled - Atslēgts + Atslēgts - + Disabled for this torrent - Atslēgts šim torrentam + Atslēgts šim torrentam - + This torrent is private - Privāts torrents + Privāts torrents - + N/A - Nav zināms + Nav zināms - + Updating... - Atjaunina... + Atjaunina... - + Not working - Nestrādā + Nestrādā - + Tracker error - + Trakera kļūda - + Unreachable - + Nesasniedzams - + Not contacted yet - Vēl nav savienots + Vēl nav savienots - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Grupa + + BT Protocol + - - Protocol + + Next Announce - - Status - Stāvoklis + + Min Announce + + + + Invalid status! + Nederīgs stāvoklis! + + + + Tier + Grupa + + + Protocol + Protokols - Peers - + Status + Stāvoklis - Seeds - Devēji + Peers + Koplietotāji - Leeches - Ņēmēji + Seeds + Devēji - Times Downloaded - Lejupielādes skaits + Leeches + Ņēmēji - Message - Ziņojums + Times Downloaded + Lejupielāžu skaits - Next announce - + Message + Ziņojums - - Min announce - + Next announce + Nākamā datu atjaunināšana - v%1 - + v%1 TrackerListWidget - Working - Strādā - - - Disabled - Atslēgts - - - Disabled for this torrent - Atslēgts šim torrentam - - - + This torrent is private Privāts torrents - Updating... - Atjaunina... - - - Not working - Nestrādā - - - Not contacted yet - Vēl nav savienots - - - N/A - Nav zināms - - - + Tracker editing Trakera rediģēšana - + Tracker URL: Trakera adrese: - - + + Tracker editing failed Trakera rediģēšana neizdevās - + The tracker URL entered is invalid. Ievadītā trakera adrese nav derīga. - + The tracker URL already exists. Šī trakera adrese jau ir pievienota. - + Edit tracker URL... Rediģēt trakeri adresi... - + Remove tracker Noņemt trakeri - + Copy tracker URL Kopēt trakera adresi - + Force reannounce to selected trackers Piespiedu datu atjaunināšana ar izvēlētajiem trakeriem - + Force reannounce to all trackers Piespiedu datu atjaunināšana ar visiem trakeriem - Tier - Grupa - - - URL - Adrese - - - Status - Stāvoklis - - - Seeds - Devēji - - - Times Downloaded - Lejupielādes skaits - - - + Resize columns Mainīt kolonnu izmērus - + Resize all non-hidden columns to the size of their contents Pielāgot visu kolonnu izmērus attiecīgi to saturam - Peers - Koplietotāji - - - + Add trackers... Pievienot trakerus... - Leeches - Ņēmēji - - - Message - Ziņojums - - - + Column visibility Kolonnas redzamība @@ -11054,37 +11643,37 @@ Lūdzu izvēlieties citu nosaukumu. Saraksts ar jaunajiem trakeriem (katrā rindā pa vienam): - + µTorrent compatible list URL: Ar µTorrent saderīgas sarakstes URL: - + Download trackers list Ielādēt trakeru sarakstu - + Add Pievienot - + Trackers list URL error Trakeru saraksta adreses kļūda - + The trackers list URL cannot be empty Trakeru saraksta adresi nevar atstāt tukšu - + Download trackers list error Kļūda trakeru saraksta ielādē - + Error occurred when downloading the trackers list. Reason: "%1" Radās kļūda, lejupielādējot trakeru sarakstu. Iemesls: "%1" @@ -11092,87 +11681,70 @@ Lūdzu izvēlieties citu nosaukumu. TrackersFilterWidget - All (0) - this is for the tracker filter - Visi (0) - - - Trackerless (0) - Bez trakeriem (0) - - - Error (0) - Kļūda (0) - - - Warning (0) - Brīdinājums (0) - - - Trackerless - Bez trakeriem - - - Error (%1) - Kļūda (%1) - - - + Warning (%1) Brīdinājums (%1) - + Trackerless (%1) Bez trakeriem (%1) - + Tracker error (%1) - + Trakera kļūda (%1) - + Other error (%1) - + Cita kļūda (%1) - + Remove tracker - Noņemt trakeri + Noņemt trakeri + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Atsākt torrentus + Atsākt torrentus - Pause torrents - Apturēt torrentus + Apturēt torrentus - + Remove torrents Dzēst torrentus - + Removal confirmation - + Dzēšanas apstiprināšana - + Are you sure you want to remove tracker "%1" from all torrents? - + Vai esat pārliecināts, ka vēlaties noņemt trakeri "%1" no visiem torrentiem? - + Don't ask me again. - + Vairs neprasīt - + All (%1) this is for the tracker filter Visi (%1) @@ -11181,7 +11753,7 @@ Lūdzu izvēlieties citu nosaukumu. TransferController - + 'mode': invalid argument @@ -11274,9 +11846,8 @@ Lūdzu izvēlieties citu nosaukumu. Pārbaudām atsākšanas datus - Paused - Apturēts + Apturēts @@ -11301,220 +11872,262 @@ Lūdzu izvēlieties citu nosaukumu. Kļūdaini - + Name i.e: torrent name Nosaukums - + Size i.e: torrent size Izmērs - + Progress % Done Pabeigti - Status Torrent status (e.g. downloading, seeding, paused) - Stāvoklis + Stāvoklis - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stāvoklis + + + Seeds i.e. full sources (often untranslated) Devēji - + Peers i.e. partial sources (often untranslated) Ņēmēji - + Down Speed i.e: Download speed Lejupielādes ātrums - + Up Speed i.e: Upload speed Augšupielādes ātrums - + Ratio Share ratio L/A Attiecība - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Apt. Ielādes laiks - + Category Kategorija - + Tags Atzīmes - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Pievienots - + Completed On Torrent was completed on 01/01/2010 08:00 Pabeigts - + Tracker Trakeris - + Down Limit i.e: Download limit Lejupielādes robeža - + Up Limit i.e: Upload limit Augšupielādes robeža - + Downloaded Amount of data downloaded (e.g. in MB) Lejupielādēti - + Uploaded Amount of data uploaded (e.g. in MB) Augšupielādēti - + Session Download Amount of data downloaded since program open (e.g. in MB) Lejupielādēti šajā sesijā - + Session Upload Amount of data uploaded since program open (e.g. in MB) Augšupielādēti šajā sesijā - + Remaining Amount of data left to download (e.g. in MB) Atlikuši - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktīvs jau + + + + Yes + + + + + No + + + Time Active Time (duration) the torrent is active (not paused) - Aktīvs jau + Aktīvs jau - + Save Path Torrent save path Saglabāšanas vieta - + Incomplete Save Path Torrent incomplete save path Saglabāšanas vieta nepabeigtajam - + Completed Amount of data completed (e.g. in MB) Pabeigti - + Ratio Limit Upload share ratio limit L/A attiecības robeža - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Pēdējo reizi koplietots - + Last Activity Time passed since a chunk was downloaded/uploaded Pēdējā aktivitāte - + Total Size i.e. Size including unwanted data Kopējais izmērs - + Availability The number of distributed copies of the torrent Pieejamība - + Info Hash v1 i.e: torrent info hash v1 Jaucējkods v1 - + Info Hash v2 i.e: torrent info hash v2 Jaucējkods v2 - + Reannounce In Indicates the time until next trackers reannounce + Kontakts ar trakeri pēc + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Nav zināms - + %1 ago e.g.: 1h 20m ago pirms %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (augšupielādē jau %2) @@ -11523,334 +12136,358 @@ Lūdzu izvēlieties citu nosaukumu. TransferListWidget - + Column visibility Kolonnas redzamība - + Recheck confirmation Pārbaudes apstiprināšana - + Are you sure you want to recheck the selected torrent(s)? Vai esat pārliecināts, ka vēlāties pārbaudīt izvēlētos torrentus?() - + Rename Pārdēvēt - + New name: Jaunais nosaukums: - + Choose save path Izvēlieties vietu, kur saglabāt - Confirm pause - Apstiprināt apturēšanu + Apstiprināt apturēšanu - Would you like to pause all torrents? - Vai vēlies apturēt visus torrentus? + Vai vēlies apturēt visus torrentus? - Confirm resume - Apstiprināt atsākšanu + Apstiprināt atsākšanu - Would you like to resume all torrents? - Vai vēlies atsākt visus torrentus? + Vai vēlies atsākt visus torrentus? - + Unable to preview Nevar priekšskatīt - + The selected torrent "%1" does not contain previewable files Izvēlētais torrents "%1" nesatur priekšskatāmus failus - + Resize columns Mainīt kolonnu izmērus - + Resize all non-hidden columns to the size of their contents Pielāgot visu kolonnu izmērus attiecīgi to saturam - + Enable automatic torrent management Ieslēgt Automātisko torrentu pārvaldību - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Vai esat drošs, ka vēlaties ieslēgt Automātisko torrentu pārvaldību priekš atlasītājiem torrentiem? Attiecīgi Auto uzstādījumiem, to saturs var tikt pārvietots. - Add Tags - Pievienot atzīmes + Pievienot atzīmes - + Choose folder to save exported .torrent files Izvēlies mapi, kur eksportēt .torrent failus - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" .torrent faila eksportēšana neizdvās: "%1". Saglabāšanas vieta: "%2". Iemesls: "%3" - + A file with the same name already exists Fails ar tādu nosaukumu jau pastāv - + Export .torrent file error .torrent faila eksportēšanas kļūda - + Remove All Tags Dzēst visas atzīmes - + Remove all tags from selected torrents? Noņemt visas atzīmes no atlasītajiem torrentiem? - + Comma-separated tags: Atdalīt atzīmes ar komatu: - + Invalid tag Nederīga atzīme - + Tag name: '%1' is invalid Atzīmes nosaukums: '%1' nav derīgs - &Resume Resume/start the torrent - Atsākt + Atsākt - &Pause Pause the torrent - Apturēt + Apturēt - Force Resu&me Force Resume/start the torrent - Piespiedu atsākšana + Piespiedu atsākšana - + Pre&view file... Priekšskatīt failu... - + Torrent &options... Torrenta iestatījumi... - + Open destination &folder Atvērt failu atrašanās vietu - + Move &up i.e. move up in the queue Novietot augstāk sarakstā - + Move &down i.e. Move down in the queue Novietot zemāk sarakstā - + Move to &top i.e. Move to top of the queue Novietot saraksta augšā - + Move to &bottom i.e. Move to bottom of the queue Novietot saraksta apakšā - + Set loc&ation... Mainīt saglabāšanas vietu... - + Force rec&heck Piespiedu pārbaude - + Force r&eannounce Piespiedu datu atjaunošana ar trakeri - + &Magnet link Magnētsaite - + Torrent &ID Torrenta ID - + + &Comment + &Komentārs + + + &Name Nosaukums - + Info &hash v1 Jaucējkods v1 - + Info h&ash v2 Jaucējkods v2 - + Re&name... Pārdēvēt... - + Edit trac&kers... Rediģēt trakerus... - + E&xport .torrent... Eksportēt .torrent failu... - + Categor&y Kategorija - + &New... New category... Jauna... - + &Reset Reset category Noņemt - + Ta&gs Atzīmes - + &Add... Add / assign multiple tags... Pievienot... - + &Remove All Remove all tags Dzēst visas - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue Rindošana - + &Copy Kopēt - + Exported torrent is not necessarily the same as the imported Eksportētais torrents ne obligāti būs tāds pats kā importētais - + Download in sequential order Lejupielādēt secīgā kārtībā - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Radās kļūda, eksportējot .torrent failus. Vairāk informācijas reģistrā. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Dzēst - + Download first and last pieces first Vispirms ielādēt pirmās un pēdējās daļiņas - + Automatic Torrent Management Automātiska torrentu pārvaldība - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automātiskais režīms nozīmē, ka vairāki torrenta iestatījumi (piem. saglabāšanas vieta), tiks pielāgoti atbilstoši izvēlētajai kategorijai - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Nevar veikt piespiedu datu atjaunošanu ar trakeri, ja torrents ir Apturēts, Gaida Rindā, Kļūdains, vai Pārbaudes vidū. + Nevar veikt piespiedu datu atjaunošanu ar trakeri, ja torrents ir Apturēts, Gaida Rindā, Kļūdains, vai Pārbaudes vidū. - + Super seeding mode Super-augšupielādēšanas režīms @@ -11895,28 +12532,28 @@ Lūdzu izvēlieties citu nosaukumu. Ikonas ID - + UI Theme Configuration. Saskarnes iestatījumi. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Saskarnes izmaiņas netika pilnībā pielāgotas. Sīkākā informācija atrodama reģistrā. - + Couldn't save UI Theme configuration. Reason: %1 Neizdevās saglabāt Saskarnes iestatījumus. Iemesls: %1 - - + + Couldn't remove icon file. File: %1. Neizdevās izdzēst ikonas failu. Fails: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Neizdevās nokopēt ikonas failu. Avots: %1. Galavieta: %2. @@ -11924,7 +12561,12 @@ Lūdzu izvēlieties citu nosaukumu. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Neizdevās ielādēt saskarni no faila: "%1" @@ -11955,43 +12597,36 @@ Lūdzu izvēlieties citu nosaukumu. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Uzstādījumu pārkopēšana neizdevās: WebUI https, fails: "%1", kļūda: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Pārkopētie uzstādījumi: WebUI https, data saglabāti failā: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Konfigurācijas failā atrasta nederīga vērtība, tiek pārmainīta uz noklusēto. Atslēga: "%1". Nederīgā vērtība: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python atrasts, nosaukums: '%1', versija: %2 - - - Python not detected - Python nav atrasts - Found Python executable. Name: "%1". Version: "%2" - + Atrasta Python izpildāmā programma. Nosaukums: "%1". Versija: "%2" Failed to find Python executable. Path: "%1". - + Neizdevās atrast Python izpildāmo programmu. Vieta: "%1" @@ -12006,38 +12641,38 @@ Lūdzu izvēlieties citu nosaukumu. Failed to find `python` executable in Windows Registry. - + Neizdevās atrast `python` izpildāmo programmu Windows reģistrā. Failed to find Python executable - + Neizdevās atrast Python izpildāmo programmu Utils::IO - + File open error. File: "%1". Error: "%2" Faila atvēršanas kļūda. Fails: "%1". Kļūda: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Faila izmērs pārāk liels. Fails. "%1". Faila izmērs: %2. Izmēra robeža: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Faila izmērs pārsniedz izmēra robežu. Fails: "%1". Faila izmērs: %2. Izmēra robeža: %3 - + File read error. File: "%1". Error: "%2" - + Faila atvēršanas kļūda. Fails: "%1". Kļūda: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Izmēra nesakritība. Fails: "%1". Gaidītais: %2. Esošais: %3 @@ -12101,72 +12736,72 @@ Lūdzu izvēlieties citu nosaukumu. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Norādīts nepieņemams sesijas cepuma nosaukums: '%1'. Tiks izmantots noklusētais. - + Unacceptable file type, only regular file is allowed. Nepieņemams faila tips, atļauts ir tikai parasts fails. - + Symlinks inside alternative UI folder are forbidden. Alternatīvās lietotāja saskarnes mapē nav atļautas simboliskās saites. - - Using built-in Web UI. - Izmanto iebūvēto Tālvadības paneļa saskarni. + + Using built-in WebUI. + Izmanto iebūvēto Tālvadības paneli. - - Using custom Web UI. Location: "%1". - Izmanto pielāgotu Tālvadības paneļa saskarni: "%1". + + Using custom WebUI. Location: "%1". + Izmanto pielāgotu Tālvadības paneli. Vieta: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Tālvadības paneļa tulkojums (%1) veiksmīgi ielādēts. + + WebUI translation for selected locale (%1) has been successfully loaded. + Tālvadības paneļa tulkojums izvēlētajai valodai (%1) veiksmīgi ielādēts. - - Couldn't load Web UI translation for selected locale (%1). - Neizdevās ielādet Tālvadības paneļa tulkojumu (%1). + + Couldn't load WebUI translation for selected locale (%1). + Neizdevās ielādēt Tālvadības paneļa tulkojumu izvēlētajai valodai (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Tīmekļa saskarnes (WebUI) pielāgotajā HTTP galvenē "%1" trūkst atdalītāja ':' - + Web server error. %1 - + Web servera kļūda. %1 - + Web server error. Unknown error. - + Web servera kļūda. Neatpazīstama kļūda. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Izcelsmes galvene un Mērķa izcelsme nesakrīt! Avota IP: '%1'. Izcelsmes galvene: '%2'. Mērķa izcelsme: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Atsauces galvene un Mērķa izcelsme nesakrīt! Avota IP: '%1'. Atsauces galvene: '%2'. Mērķa izcelsme: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: nederīga Resursdatora galvene, porti nesakrīt. Pieprasīt avota IP: '%1'. Servera ports: '%2'. Saņemtā Resursdatora galvene: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Nederīga Resursdatora galvene. Pieprasīt avota IP: '%1'. Saņemtā Resursdatora galvene: '%2' @@ -12174,143 +12809,136 @@ Lūdzu izvēlieties citu nosaukumu. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + Nav iestatīti autorizācijas dati + + + + WebUI: HTTPS setup successful Tālvadības panelis: HTTPS uzstādīts veiksmīgi - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP Tālvadības panelis: HTTPS uzstādīšana neizdevās, atgriežamies pie HTTP - - Web UI: Now listening on IP: %1, port: %2 - Web UI: Tagad savienots ar IP: %1, ports: %2 + + WebUI: Now listening on IP: %1, port: %2 + Tālvadības panelis: Tagad savienots ar IP: %1, ports: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Neizdevās savienot ar IP: %1, ports: %2. Iemesls: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Neizdevās savienot ar IP: %1, ports: %2. Iemesls: %3 + + Unknown error + Nezināma kļūda misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1st %2m + %1st %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2st + %1d %2st - + %1y %2d e.g: 2 years 10 days - %1g %2d + %1g %2d - %1h %2m - e.g: 3hours 5minutes - %1st %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2st - - - %1y %2d - e.g: 2years 10days - %1g %2d - - - - + + Unknown Unknown (size) Nezināms - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorent tagad izslēgs datoru, jo visas lejupielādes ir pabeigtas. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_mn_MN.ts b/src/lang/qbittorrent_mn_MN.ts index 59c630dbe662..521fec63b952 100644 --- a/src/lang/qbittorrent_mn_MN.ts +++ b/src/lang/qbittorrent_mn_MN.ts @@ -14,75 +14,75 @@ Тухай - + Authors - + Current maintainer Одоогийн хөгжүүлэгч - + Greece Грек - - + + Nationality: Улс: - - + + E-mail: Ц-шуудан: - - + + Name: Нэр: - + Original author Анхны зохиогч - + France Франц - + Special Thanks Талархал - + Translators Орчуулагчид - + License Эрх - + Software Used Хэрэглэгдсэн програмууд - + qBittorrent was built with the following libraries: qBittorrent-ийг дараах сангууд дээр тулгуурлан бүтээсэн: - + Copy to clipboard @@ -93,7 +93,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Замд хадгалах - + Never show again Дахиж бүү харуул - Torrent settings - Торрентийн тохиргоо + Торрентийн тохиргоо @@ -191,12 +190,12 @@ Торрентыг эхлүүлэх - + Torrent information Торрентийн мэдээлэл - + Skip hash check Хеш шалгалтыг алгасах @@ -205,6 +204,11 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: Контентийн төлөвлөлт: - + Original Ерөнхий - + Create subfolder Дэд хавтас үүсгэх - + Don't create subfolder Дэд хавтас үүсгэхгүй - + Info hash v1: - + Size: Хэмжээ: - + Comment: Сэтгэгдэл: - + Date: Огноо: @@ -324,42 +333,42 @@ Сүүлийн сонгосон замыг санах - + Do not delete .torrent file .torrent файлыг бүү устга - + Download in sequential order Дарааллаар нь татах - + Download first and last pieces first Эхний болон сүүлийн хэсгүүдийг эхэлж татах - + Info hash v2: - + Select All - + Select None - + Save as .torrent file... .torrent файлаар хадгалах... - + I/O Error О/Г-ийн алдаа @@ -368,19 +377,19 @@ Алдаатай торрент - + Not Available This comment is unavailable Боломжгүй - + Not Available This date is unavailable Боломжгүй - + Not available Боломжгүй @@ -401,18 +410,18 @@ Error: %2 Уг соронзон холбоос танигдсангүй - + Magnet link Соронзон холбоос - + Retrieving metadata... Цөм өгөгдлийг цуглуулж байна... - - + + Choose save path Хадгалах замыг сонгох @@ -429,33 +438,28 @@ Error: %2 Торрент боловсруулах дараалалд бүртгэгдсэн байна. - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A @@ -464,33 +468,33 @@ Error: %2 Соронзон холбоос боловсруулах дараалалд бүртгэгдсэн байна. - + %1 (Free space on disk: %2) %1 (Дискний сул зай: %2) - + Not available This size is unavailable. Боломжгүй - + Torrent file (*%1) - + Save as torrent file Торрент файлаар хадгалах - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. @@ -499,17 +503,17 @@ Error: %2 '%1'-ийг татаж чадахгүй: %2 - + Filter files... - + Parsing metadata... Цөм өгөгдлийг шалгаж байна... - + Metadata retrieval complete Цөм өгөгдлийг татаж дууссан @@ -537,22 +541,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -640,72 +644,77 @@ Error: %2 Хеш шалгалтыг алгасах - - - Choose save path - Хадгалах замыг сонгох + + Torrent share limits + - - - - - - - Default - + + + Choose save path + Хадгалах замыг сонгох + + + - Yes - Тийм + Default + + Yes + Тийм + + + + + No Үгүй - + Manual Гараар - + Automatic Шууд - + Original - + Create subfolder Дэд хавтас үүсгэх - + Don't create subfolder Дэд хавтас үүсгэхгүй - + None - + Metadata received - + Files checked @@ -713,734 +722,877 @@ Error: %2 AdvancedSettings - - - - + + + + MiB МиБ - + Recheck torrents on completion Торрентыг татагдаж дуусмагц шалгах - - + + ms milliseconds мс - + Setting Тохиргоо - + Value Value set for this setting Утга - + (disabled) (идэвхгүй) - + (auto) (шууд) - + + min minutes минут - + All addresses Бүх хаягууд - + qBittorrent Section qBittorrent Хэсэг - - + + Open documentation Баримт бичигтэй танилцах - + All IPv4 addresses Бүх IPv4 хаягууд - + All IPv6 addresses Бүх IPv6 хаягууд - + libtorrent Section libtorrent Хэсэг - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Хэвийн - + Below normal Хэвийнээс бага - + Medium Дундаж - + Low Бага - + Very low Маш бага - Process memory priority (Windows >= 8 only) - Санах ойн ачаалал (Windows >= 8) + Санах ойн ачаалал (Windows >= 8) - + Physical memory (RAM) usage limit - + Asynchronous I/O threads Асинхрон О/Г-ийн утгууд - + Hashing threads Хэшлэх утгууд - + File pool size Файлын сангийн хэмжээ - + Outstanding memory when checking torrents Торрентийг шалгах үед хэрэглэх санах ой - + Disk cache Дискний кэш - - - - + + + + s seconds с - + Disk cache expiry interval Дискний кэшийн мөчлөг - + Disk queue size - - + + Enable OS cache Үйлдлийн системийн кэшийг идэвхжүүлэх - + Coalesce reads & writes Нийт унших & бичих - + Use piece extent affinity - + Send upload piece suggestions Хуулах нэгжийг санал болгон илгээх - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB КиБ - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark Буферийн тамга илгээх - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP TCP-г илүүд үзэх - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) Олон улсын домэйн нэрс (IDN)-ийг дэмжих - + Allow multiple connections from the same IP address 1 IP хаягаас олон зэрэгцээ холбогдохыг зөвшөөрөх - + Validate HTTPS tracker certificates HTTPS дамжуулагчийн гэрчилгээг баталгаажуулж байх - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names Пеерүүдийг хост нэрээн нь эрэмблэх - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus Цэсүүдэд дүрс харуулах - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Мэдэгдэл харуулах - + Display notifications for added torrents Нэмэгдсэн торрентуудад мэдэгдэл харуулах - + Download tracker's favicon - + Save path history length Хадгалах замыг бүртгэх хэмжээ - + Enable speed graphs Хурдны үзүүлэлтийг идэвхжүүлэх - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload Дээд хурд - + Anti-leech - + Upload choking algorithm Боох алгоритмийг хуулах - + Confirm torrent recheck Торрентийг дахин-шалгахыг батлах - + Confirm removal of all tags Бүх шошгыг арилгахыг зөвшөөрөх - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface Ямар ч үзэмж - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP холимог горимт алгоритм - + Resolve peer countries - + Network interface Сүлжээний төрөл - + Optional IP address to bind to Нэмэлтээр холбох IP хаягууд - + Max concurrent HTTP announces - + Enable embedded tracker Суулгагдсан мөрдөгчийг идэвхжүүлэх нь - + Embedded tracker port Жагсаасан тракеруудын порт + + AppController + + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + Application - qBittorrent %1 started qBittorrent v3.2.0alpha started - qBittorrent %1 ачааллалаа + qBittorrent %1 ачааллалаа - + Running in portable mode. Auto detected profile folder at: %1 Зөөврийн горимд ажиллаж байна. Хэрэглэгчийн хавтсыг дараах замаас илрүүллээ: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 Хэрэглэж буй тохируулгын хаяг: %1 - + Torrent name: %1 Торрентийн нэр: %1 - + Torrent size: %1 Торрентийн хэмжээ: %1 - + Save path: %1 Хадгалах зам: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Торрентийг татсан: %1. - + + Thank you for using qBittorrent. qBittorrent-г хэрэглэж байгаад баярлалаа. + This is a test email. + + + + + Test email + + + + Torrent: %1, sending mail notification Торрент: %1, ц-шуудангаар мэдэгдэл илгээж байна - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + + + + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit - + I/O Error i.e: Input/Output Error О/Г-ийн алдаа - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1448,23 +1600,23 @@ Error: %2 - + Torrent added - + '%1' was added. e.g: xxx.avi was added. - + Download completed - + '%1' has finished downloading. e.g: xxx.avi has finished downloading. @@ -1474,91 +1626,80 @@ Error: %2 Torrent файл холбоо - + Information Мэдээлэл - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - The Web UI administrator username is: %1 - Веб ХИ-ийн админ хэрэглэгчийн нэр: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - + Веб ХИ-ийн админ хэрэглэгчийн нэр: %1 Application failed to start. Ачаалж чадсангүй. - + Exit Гарах - + Recursive download confirmation Рекурсив татаж авах баталгаа - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Торрентийн гүйцэтгэлийг сануулж байна... - + qBittorrent is now ready to exit @@ -1566,7 +1707,7 @@ Error: %2 AsyncFileStorage - + Could not create directory '%1'. '%1' хавтас үүсгэж чадсангүй. @@ -1574,22 +1715,22 @@ Error: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Веб API нэвтрэхэд алдаа гарлаа. Шалтгаан: IP хаягыг хорьсон байна, IP: %1, хэрэглэгчийн нэр: %2 - + Your IP address has been banned after too many failed authentication attempts. Олон дараалан алдаатай нэвтрэх оролдлого хийсэн учир Таны IP хаягын хандах эрхийг түтгэлдүүллээ. - + WebAPI login success. IP: %1 Веб API нэвтрэлт амжилттай боллоо. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Веб API нэвтрэлт амжилтгүй боллоо. Шалтгаан: нэвтрэх мэдээлэл алдаатай байна, нийт алдаатай оролдлогын тоо: %1, IP: %2, хэрэглэгчийн нэр: %3 @@ -1645,12 +1786,12 @@ Error: %2 - + Must Not Contain: Агуулж үл болох: - + Episode Filter: Ангийн шүүлтүүр: @@ -1743,115 +1884,115 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Гаргах... - + Matches articles based on episode filter. Хэрэг явдал шүүлтүүр тулгуурлан нийтлэл тааруулна. - + Example: Жишээ: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match улиралд нэг нь 15, 30 -нд тохиолдох 2, 5, 8 тохирох болно - + Episode filter rules: Улирал шүүх дүрэм: - + Season number is a mandatory non-zero value Улирал тоо заавал тэгээс ялгаатай утга нь - + Filter must end with semicolon Цэг таслалаар төгсөх ёстой - + Three range types for episodes are supported: Тохиолдож Гурван хүрээ төрлийн дэмжигдсэн байна: - + Single number: <b>1x25;</b> matches episode 25 of season one Нэг тоо: <б> 1x25; </ B> улиралд нэг нь түүхийг 25-таарч - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Энгийн хүрээ: <б> 1x25-40b> улиралд нэг нь 40 замаар тохиолдолууд 25 таарч - + Episode number is a mandatory positive value Ангийн дугаар нь заавал бичигдсэн байх шаардлагатай - + Rules Дүрмүүд - + Rules (legacy) Дүрмүүд (өвлөгдсөн) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago - + Last Match: Unknown - + New rule name Шинэ дүрмийн нэр - + Please type the name of the new download rule. Шинэ татах дүрмийн нэрээ бичнэ үү. - - + + Rule name conflict Дүрмийн нэр - - + + A rule with this name already exists, please choose another name. Дүрэм аль хэдийн байна. Өөр нэр сонгоно уу. - + Are you sure you want to remove the download rule named '%1'? - + Are you sure you want to remove the selected download rules? Таны сонгосон татаж авах журам устгахыг хүсч та итгэлтэй байна уу? - + Rule deletion confirmation Дүрмийг устгахад баталгаажуулах @@ -1860,32 +2001,32 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Зааж өгөх газар - + Invalid action Буруу үйлдэл байна - + The list is empty, there is nothing to export. Жагсаалт хоосон байгаа учир гаргах зүйл олдсонгүй. - + Export RSS rules RSS дүрмүүдийг гаргах - + I/O Error О/Г-ын алдаа - + Failed to create the destination file. Reason: %1 Байршлын файлыг үүсгэж чадсангүй. Шалтгаан: %1 - + Import RSS rules RSS дүрмүүдийг оруулах @@ -1898,120 +2039,120 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Оруулалтын алдаа - + Failed to import the selected rules file. Reason: %1 Сонгогдсон дүрмийн файлыг оруулж чадсангүй. Шалтгаан: %1 - + Add new rule... Шинэ дүрэм нэмэх... - + Delete rule Дүрэмийг устгах - + Rename rule... Дүрмийн нэрийг өөрчлөх... - + Delete selected rules Сонгогдсон дүрмүүдийг устгах - + Clear downloaded episodes... Татагдсан ангиудыг арилгах... - + Rule renaming Дүрмийн нэрийг нь өөрчилснөөр - + Please type the new rule name Шинэ дүрэм нэрийг оруулна уу - + Clear downloaded episodes Татагдсан ангиудыг арилгах - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Сонгогдсон дүрэмд хамаарах татагдсан ангиудын жагсаалтыг цэвэрлэх гэж байгаадаа итгэлтэй байна уу? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 %1 байршил: %2 - + Wildcard mode: you can use Тусгай тэмдэгтийн горим: хэрэглэж болох - - + + Import error - + Failed to read the file. %1 - + ? to match any single character Дурын 1 тэмдэгтийг илэрхийлэхэд ? - + * to match zero or more of any characters Дурын тооны тэмдэгтүүдийг илэрхийлэхэд * - + Whitespaces count as AND operators (all words, any order) Хоосон зайг БА нөхцөлтэй адилтгана (дараалал хамаарахгүй, бүх үгэнд) - + | is used as OR operator | тэмдэгтийг ЭСВЭЛ нөхцөлтэй адилтгана - + If word order is important use * instead of whitespace. Үгсийн дарааллыг чухалчлах бол хоосон зайны оронд * хэрэглээрэй. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. бүх нийтлэлд хамаарна. - + will exclude all articles. бүх нийтлэлд үл хамаарна. @@ -2053,53 +2194,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - - Couldn't save torrent metadata to '%1'. Error: %2. + + Mismatching info-hash detected in resume data - - Couldn't save torrent resume data to '%1'. Error: %2. + + Couldn't save torrent metadata to '%1'. Error: %2. + + + + + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2107,38 +2253,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2146,22 +2292,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2169,209 +2315,184 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED ХҮЧИТГЭСЭН - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. - - - - - - - Removed torrent and deleted its content. - - - - - - - Torrent paused. - - - - - - + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - + UPnP/NAT-PMP support: OFF - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 @@ -2394,259 +2515,338 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also %1-ийн сүлжээний тохируулга өөрчлөгдлөө, холболтыг шинэчлэж байна - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" - - - - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Saving resume data completed. + + + + + BitTorrent session successfully finished. + + + + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + + + + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2654,62 +2854,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2730,184 +2935,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: - + [options] [(<filename> | <url>)...] - + Options: - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check Хеш шалгалтыг алгасах - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first Эхний болон сүүлийн хэсгүүдийг эхэлж татах - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Тусламж @@ -2915,17 +3125,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories - + All Бүгд - + Uncategorized Ангилалгүй @@ -2959,13 +3169,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Торрентуудыг үргэлжлүүлэх + Start torrents + + Stop torrents + + + + Resume torrents + Торрентуудыг үргэлжлүүлэх + + Pause torrents - Торрентуудыг зогсоох + Торрентуудыг зогсоох @@ -2976,15 +3194,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset + + + System + + CookiesDialog @@ -3025,12 +3248,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3038,7 +3261,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3057,23 +3280,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove @@ -3086,12 +3309,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - + Add torrent links - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3101,12 +3324,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Татах - + No URL entered - + Please type at least one URL. @@ -3266,24 +3489,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards - + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + + + + Torrent is already present Уг торрент хэдийн ачааллагдсан байна - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3291,38 +3537,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. - + Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 - + Unsupported IP version: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3330,17 +3576,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3381,36 +3627,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Нээх... - + Reset - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned @@ -3419,89 +3693,66 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - - No further notices will be issued. + + You cannot use %1: qBittorrent is already running. - - Press %1 key to accept and continue... + + Another qBittorrent instance is already running. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - Legal notice + + Error when daemonizing. Reason: "%1". Error code: %2. - Cancel - Цуцлах - - - - I Agree - + Цуцлах @@ -3512,404 +3763,472 @@ No further notices will be issued. &Засах - + &Tools &Багажууд - + &File &Файл - + &Help &Тусламж - + On Downloads &Done - + &View &Харах - + &Options... &Тохиргоо... - &Resume - &Үргэлжлүүлэх + &Үргэлжлүүлэх - + &Remove - + Torrent &Creator - - + + Alternative Speed Limits - + &Top Toolbar - + Display Top Toolbar - + Status &Bar - + Filters Sidebar - + S&peed in Title Bar - + Show Transfer Speed in Title Bar - + &RSS Reader - + Search &Engine - + L&ock qBittorrent - + Do&nate! - + + Sh&utdown System + + + + &Do nothing - + Close Window - R&esume All - Б&үгдийг нь үргэлжлүүлэх + Б&үгдийг нь үргэлжлүүлэх - + Manage Cookies... - + Manage stored network cookies - + Normal Messages - + Information Messages - + Warning Messages - + Critical Messages - + &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue Дарааллын төгсгөл - + Move to the bottom of the queue Дарааллыг төгсгөлд аваачих - + Top of Queue Дарааллын эхлэл - + Move to the top of the queue Дараалын эхэнд аваачих - + Move Down Queue Дарааллыг ухраах - + Move down in the queue Дараалал дунд ухраах - + Move Up Queue Дарааллыг урагшлуулах - + Move up in the queue Дараалалд дунд урагшлуулах - + &Exit qBittorrent - + &Suspend System - + &Hibernate System - - S&hutdown System - - - - + &Statistics - + Check for Updates - + Check for Program Updates - + &About &Тухай - &Pause - &Завсарлах + &Завсарлах - P&ause All - Бүгдийг нь түр зогсоох + Бүгдийг нь түр зогсоох - + &Add Torrent File... - + Open Нээх - + E&xit - + Open URL УРЛ нээх - + &Documentation Бичиг баримт - + Lock Түгжих - - - + + + Show Харуулах - + Check for program updates Программын шинэчлэлийг шалгах - + Add Torrent &Link... - + If you like qBittorrent, please donate! Танд qBittorrent таалагдаж байвал хандив өргөнө үү! - - + + Execution Log Гүйцэтгэх Нэвтрэх - + Clear the password нууц үг арилгах - + &Set Password - + Preferences - + &Clear Password - + Transfers Шилжүүлгүүд - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only Зөвхөн Иконууд - + Text Only Зөвхөн бичиг - + Text Alongside Icons Дүрснүүдийг хажуугаар Текст - + Text Under Icons Текст дагуу дүрс - + Follow System Style Системийн Style дагаарай - - + + UI lock password UI нууц цоож - - + + Please type the UI lock password: UI цоож нууц үгээ оруулна уу: - + Are you sure you want to clear the password? Та нууц үгээ чөлөөлөхийн тулд хүсэж Та итгэлтэй байна уу? - + Use regular expressions Тогтмол хэллэг ашиглах - + + + Search Engine + Хайлт + + + + Search has failed + + + + + Search has finished + + + + Search Хайх - + Transfers (%1) Шилжүүлэг (% 1) + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + Recursive download confirmation Рекурсив татаж авах баталгаа @@ -3919,201 +4238,236 @@ No further notices will be issued. Хэзээч - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? qBittorrent-ийг хаахдаа итгэлтэй байна уу? - + &No - + &Yes - + &Always Yes - + Options saved. - - + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Missing Python Runtime - + qBittorrent Update Available - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - + Python is required to use the search engine but it does not seem to be installed. - - + + Old Python Runtime - + A new version is available. - + Do you want to download %1? - + Open changelog... - + No updates available. You are already using the latest version. - + &Check for Updates - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + + + + Checking for Updates... - + Already checking for program updates in the background Аль хэдийн цаана нь програмын шинэчлэлийг шалгах - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Торрент татах - Python setup could not be downloaded, reason: %1. Please install it manually. - Python setup could not be downloaded, reason: %1. + Python setup could not be downloaded, reason: %1. Please install it manually. - - + + Invalid password Буруу нууц үг - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) - + The password is invalid Буруу нууц үг - + DL speed: %1 e.g: Download speed: 10 KiB/s Та Хурд: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Тү Хурд: %1 - [D: %1, U: %2] qBittorrent %3 D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 + [D: %1, U: %2] qBittorrent %3 - + Hide Нуух - + Exiting qBittorrent qBittorrent гарах - + Open Torrent Files Торрент файлуудыг нээх - + Torrent Files Торрент файлууд @@ -4174,134 +4528,134 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) Алсын хостын нэрийг олж чадаагүй байна (хүчингүй хостын нэр) - + The operation was canceled Үйл ажиллагаа нь цуцлагдсан байна - + The remote server closed the connection prematurely, before the entire reply was received and processed Бүхэлд нь хариу хүлээн авсан, боловсруулсан өмнө алсын сервер, дутуу холболт хаалттай - + The connection to the remote server timed out Алсын сервер уруу холболт нь цаг хугацааны - + SSL/TLS handshake failed SSL / TLS рүү чадаагүй - + The remote server refused the connection Алсын сервер холболт татгалзсан - + The connection to the proxy server was refused Прокси сервер уруу холболт татгалзсан байна - + The proxy server closed the connection prematurely Прокси сервер хугацаанаас нь өмнө холболт хаалттай - + The proxy host name was not found Прокси хостын нэр олж чадаагүй байсан юм - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Прокситой холболт нь цаг хугацааны буюу прокси илгээсэн хүсэлтийн хугацаанд нь хариулт өгөөгүй байв - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) Үгүйсгэсэн юм алсын гарчиг руу хандах (401) - + The operation requested on the remote content is not permitted Алсын агуулгын талаар хүсэлт үйл ажиллагаа байж болохгүй - + The remote content was not found at the server (404) Алсын агуулгын сервер олж чадаагүй байна (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Алсын сервер агуулгыг үйлчлэх танилтыг шаарддаг боловч заасан итгэмжлэл хүлээн зөвшөөрдөггүй байсан - + The Network Access API cannot honor the request because the protocol is not known Протокол нь мэдэгдэж байгаа биш юм, учир нь Сүлжээний Хандалт API хүсэлтийг хүндэтгэж чадахгүй байгаа - + The requested operation is invalid for this protocol Хүсэлт гаргасан үйл ажиллагаа нь энэ протокол нь хүчин төгөлдөр бус байна - + An unknown network-related error was detected Тодорхой бус сүлжээний холбоотой алдаа илэрсэн байна - + An unknown proxy-related error was detected Үл мэдэгдэх прокси-тэй холбоотой алдаа илэрсэн байна - + An unknown error related to the remote content was detected Алсын агуулгатай холбоотой нь үл мэдэгдэх алдаа илэрсэн байна - + A breakdown in protocol was detected Протоколд задлахад илэрсэн байна - + Unknown error Үл мэдэх алдаа @@ -4309,7 +4663,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5681,476 +6040,504 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Веб ХИ + Веб ХИ - + Advanced - + Customize UI Theme... - + Transfer List - + Confirm when deleting torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always Үргэлж - - Paused torrents only - - - - + Action on double-click - + Downloading torrents: - - - Start / Stop Torrent - - - - - + + Open destination folder - - + + No action - + Completed torrents: - + Auto hide zero status filters - + Desktop - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB КиБ - + Torrent content layout: Торрентийн контент төлөвлөлт: - + Original Анхны загвар - + Create subfolder Дэд хавтас үүсгэх - + Don't create subfolder Дэд хавтас үүсгэхгүй - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... - + Options.. - + Remove - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + Any + + + + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time Эхлэх: - + To: To end time Дуусах: - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader RSS Уншигч - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: - - - + + + min minutes минут - + Seeding Limits - - Pause torrent - - - - + Remove torrent - + Remove torrent and its files - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: - + Web User Interface (Remote control) Веб Хэрэглэгчийн Интерфейс (Зайнаас удирдах) - + IP address: IP хаяг: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Үгүй - + ban for: - + Session timeout: - + Disabled Идэвхгүй - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: Серверийн домэйнууд: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6159,441 +6546,482 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost localhost дээр хэрэглэгчийн хандалтыг бүртгэл баталгаажуулалгүй зөвшөөрөх - + Bypass authentication for clients in whitelisted IP subnets Цагаан жагсаалтан дахь IP сабнетүүдийн хандалтыг бүртгэл баталгаажуулалгүй зөвшөөрөх - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area - + + Search + Хайх + + + + WebUI + + + + Interface - + Language: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal Хэвийн - + File association - + Use qBittorrent for .torrent files - + Use qBittorrent for magnet links - + Check for program updates Программын шинэчлэлийг шалгах - + Power Management - + + &Log Files + + + + Save path: - + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management Хадгалалт зохион байгуулалт - + Default Torrent Management Mode: - + Manual Гараар - + Automatic Шууд - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + Copy .torrent files to: .torrent файлуудыг хуулах: - + Show &qBittorrent in notification area - - &Log file - - - - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: Татаж дууссаны дараа .torrent файлуудыг хуулах: - + Pre-allocate disk space for all files Бүх файлд шаардлагатай зайг урьдчилж өмчлөх - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Дуусаагүй байгаа файлуудад .!qB өргөтгөл оноох - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: Торрентуудыг шууд нэмж байх: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6610,841 +7038,906 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver Дуусах: - + SMTP server: SMTP сервер: - + Sender - + From: From sender Эхлэх: - + This server requires a secure connection (SSL) Энэ сервер хамгаалалттай холболт (SSL) шаардана - - + + Authentication Бүртгэл - - - - + + + + Username: Хэрэглэгчийн нэр: - - - - + + + + Password: Нууц үг: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP TCP болон μTP - + Listening Port Чагнах оролт - + Port used for incoming connections: Гаднаас ирэх холболтуудад хэрэглэгдэх оролт: - + Set to 0 to let your system pick an unused port - + Random - + Use UPnP / NAT-PMP port forwarding from my router Рүтэрийн UPnP / NAT-PMP оролт дамжуулгыг хэрэглэх - + Connections Limits Холболтуудын хязгаар - + Maximum number of connections per torrent: Торрент бүрт харгалзах холболтын дээд хэмжээ: - + Global maximum number of connections: Ерөнхий холболтын зөвшөөрөгдөх дээд хэмжээ: - + Maximum number of upload slots per torrent: Торрент тус бүрт харгалзах оролтын дээд хэмжээ: - + Global maximum number of upload slots: Илгээлтийн оролтуудын ерөнхий хэмжээ: - + Proxy Server Прокси сервер - + Type: Төрөл: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Хост: - - - + + + Port: Оролт: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): Замыг шүүх (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... Хэрэглэгчийн хориглосон IP хаягууд... - + Apply to trackers - + Global Rate Limits Зэргийн ерөнхий хязгаарууд - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s - - + + Upload: Илгээлт: - - + + Download: Таталт: - + Alternative Rate Limits Ялгаатай зэргийн хязгаарлалтууд: - + Start time - + End time - + When: Хэзээ: - + Every day Өдөр бүр - + Weekdays Ажлын өдрүүдэд - + Weekends Амралтын өдрүүдэд - + Rate Limits Settings Зэргийн хязгаарлалтын тохиргоо - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + Torrent inactivity timer: - + then - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: - + Key: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - - Use alternative Web UI + + Files location: - - Files location: + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> - + Security - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: - + Register - + Domain name: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name - + %L: Category - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files - + %Z: Torrent size (bytes) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Select certificate - + Private key - + Select private key - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences - + Time Error Цаг Алдаа - + The start time and the end time can't be the same. - - + + Length Error - The Web UI username must be at least 3 characters long. - Вэб UI Хэрэглэгчийн нэр 3-аас доошгүй тэмдэгтүүд нь урт байх ёстой. - - - - The Web UI password must be at least 6 characters long. - + Вэб UI Хэрэглэгчийн нэр 3-аас доошгүй тэмдэгтүүд нь урт байх ёстой. PeerInfo - + Unknown Тодорхойгүй - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7604,7 +8097,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A @@ -7627,7 +8120,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Format: IPv4:port / [IPv6]:port @@ -7668,27 +8161,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7701,58 +8194,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Installed search plugins: - + Name - + Version - + Url - - + + Enabled - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one - + Check for updates Программын шинэчлэлийг шалгах - + Close - + Uninstall @@ -7871,17 +8364,17 @@ Those plugins were disabled. Плугын эх - + Search plugin source: Хайлтын плугын: - + Local file Локал файл - + Web link Веб хаяг @@ -7922,47 +8415,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Харах - + Name - + Size - + Progress Явц - + Preview impossible - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7975,27 +8468,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8036,12 +8529,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: - + Availability: @@ -8056,53 +8549,53 @@ Those plugins were disabled. - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) - + ETA: - + Uploaded: - + Seeds: - + Download Speed: - + Upload Speed: - + Peers: - + Download Limit: - + Upload Limit: - + Wasted: @@ -8112,193 +8605,220 @@ Those plugins were disabled. - + Information Мэдээлэл - + Info Hash v1: - + Info Hash v2: - + Comment: Сэтгэгдэл: - + Select All - + Select None - + Share Ratio: - + Reannounce In: - + Last Seen Complete: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: - + Pieces: - + Created By: - + Added On: - + Completed On: - + Created On: - + + Private: + + + + Save Path: - + Never Үгүй - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - - + + %1 (%2 this session) - - + + + N/A - + + Yes + Тийм + + + + No + Үгүй + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) - - New Web seed + + Add web seed + Add HTTP source - - Remove Web seed + + Add web seed: - - Copy Web seed URL + + + This web seed is already in the list. - - Edit Web seed URL + + Filter files... - - Filter files... + + Add web seed... - - Speed graphs are disabled + + Remove web seed - - You can enable it in Advanced Options + + Copy web seed URL - - New URL seed - New HTTP source + + Edit web seed URL... - - New URL seed: + + Speed graphs are disabled - - - This URL seed is already in the list. + + You can enable it in Advanced Options - + Web seed editing - + Web seed URL: @@ -8336,22 +8856,22 @@ Those plugins were disabled. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8359,22 +8879,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8410,12 +8930,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). @@ -8423,99 +8943,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8539,8 +9059,8 @@ Those plugins were disabled. - - + + Mark items read @@ -8565,132 +9085,132 @@ Those plugins were disabled. - - + + Delete Устгах - + Rename... Нэр солих... - + Rename - - + + Update - + New subscription... - - + + Update all feeds - + Download torrent - + Open news URL - + Copy feed URL - + New folder... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name - + Folder name: - + New folder - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed - + New feed name: - + Rename failed - + Date: - + Feed: - + Author: @@ -8698,38 +9218,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 - + Failed to check for plugin updates: %1 @@ -8804,132 +9324,142 @@ Those plugins were disabled. Хэмжээ: - + Name i.e: file name - + Size i.e: file size - + Seeders i.e: Number of full sources - + Leechers i.e: Number of partial sources - - Search engine - - - - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere - + Use regular expressions Тогтмол хэллэг ашиглах - + Open download window - + Download Татах - + Open description page - + Copy Хуулбарлах - + Name - + Download link - + Description page URL - + Searching... - + Search has finished - + Search aborted - + An error occurred during search... - + Search returned no results - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8937,104 +9467,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories - + Movies - + TV shows - + Music - + Games - + Anime - + Software - + Pictures - + Books - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -9044,112 +9574,143 @@ Those plugins were disabled. - - - - Search Хайх - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins - + Only enabled - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab - + Close all tabs - + Select... - - - + + Search Engine Хайлт - + + Please install Python to use the Search Engine. - + Empty search pattern - + Please type a search pattern first - + + Stop + + + SearchWidget::DataStorage - - Search has finished + + Failed to load Search UI saved state data. File: "%1". Error: "%2" - - Search has failed + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" @@ -9263,34 +9824,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Илгээлт: - - - + + + - - - + + + KiB/s - - + + Download: Таталт: - + Alternative speed limits Ялгаатай хурдны хязгаарлалтууд @@ -9482,32 +10043,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: @@ -9522,12 +10083,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -9546,51 +10107,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: - - + + No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes - + qBittorrent needs to be restarted! - - - + + + Connection Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9620,12 +10197,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resumed (0) + Running (0) - Paused (0) + Stopped (0) @@ -9688,9 +10265,24 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) + + + Running (%1) + + - Paused (%1) + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents @@ -9699,25 +10291,18 @@ Click the "Search plugins..." button at the bottom right of the window - Resume torrents - Торрентуудыг үргэлжлүүлэх + Торрентуудыг үргэлжлүүлэх - Pause torrents - Торрентуудыг зогсоох + Торрентуудыг зогсоох Remove torrents - - - Resumed (%1) - - Active (%1) @@ -9757,17 +10342,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags - + All Бүгд - + Untagged @@ -9775,52 +10360,60 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... - + Remove tag - + Remove unused tags - Resume torrents - Торрентуудыг үргэлжлүүлэх + Торрентуудыг үргэлжлүүлэх - Pause torrents - Торрентуудыг зогсоох + Торрентуудыг зогсоох - + Remove torrents - - New Tag + + Start torrents + + + + + Stop torrents - + Tag: - + + Add tag + + + + Invalid tag name - + Tag name '%1' is invalid @@ -9957,32 +10550,32 @@ Please choose a different name and try again. TorrentContentModel - + Name - + Progress Явц - + Download Priority - + Remaining - + Availability - + Total Size @@ -10027,102 +10620,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error - + Renaming - + New name: Шинэ нэр: - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Нээх - + Open containing folder - + Rename... Нэр солих... - + Priority Ээлж - - + + Do not download Бүү тат - + Normal Хэвийн - + High Их - + Maximum Маш их - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10147,13 +10758,13 @@ Please choose a different name and try again. - + Select file - + Select folder @@ -10178,7 +10789,7 @@ Please choose a different name and try again. - + Auto @@ -10228,88 +10839,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: - + Comments: - + Source: - + Progress: - + Create Torrent - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) - - Reason: %1 - - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Torrent creator - + Torrent created: @@ -10317,32 +10923,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10350,27 +10956,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10378,14 +10984,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Алдаатай цөм өгөгдөл + Алдаатай цөм өгөгдөл @@ -10416,126 +11016,162 @@ Please choose a different name and try again. - + Category: Ангилал: - - Torrent speed limits + + Torrent Share Limits - + Download: Таталт: - - + + - - + + Torrent Speed Limits + + + + + KiB/s - + These will not exceed the global limits - + Upload: Илгээлт: - - Torrent share limits + + Disable DHT for this torrent - - Use global share limit - + + Download in sequential order + Дарааллаар нь татах - - Set no share limit + + Disable PeX for this torrent - - Set share limit to + + Download first and last pieces first + Эхний болон сүүлийн хэсгүүдийг эхэлж татах + + + + Disable LSD for this torrent - - ratio + + Currently used categories - - total minutes + + + Choose save path + Хадгалах замыг сонгох + + + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - inactive minutes + + + + + Default - - Disable DHT for this torrent + + + + Unlimited - - Download in sequential order - Дарааллаар нь татах + + + + Set to + - - Disable PeX for this torrent + + Seeding time: - - Download first and last pieces first - Эхний болон сүүлийн хэсгүүдийг эхэлж татах + + + + + + + min + minutes + минут - - Disable LSD for this torrent + + Inactive seeding time: - - Currently used categories + + Action when the limit is reached: - - - Choose save path - Хадгалах замыг сонгох + + Stop torrent + - - Not applicable to private torrents + + Remove torrent - - No share limit method selected + + Remove torrent and its content - - Please select a limit method first + + Enable super seeding for torrent + + + + + Ratio: @@ -10548,31 +11184,31 @@ Please choose a different name and try again. - New Tag + Add tag - + Tag: - + Invalid tag name - + Tag name '%1' is invalid. - + Tag exists - + Tag name already exists. @@ -10580,115 +11216,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category Ангилал үүсгэж чадсангүй - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name @@ -10714,119 +11365,113 @@ Please choose a different name and try again. TrackerListModel - - + Working - + Disabled Идэвхгүй - + Disabled for this torrent - + This torrent is private - + N/A - + Updating... - + Not working - + Tracker error - + Unreachable - + Not contacted yet - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol - - Protocol + + Next Announce - - Status + + Min Announce + + + + + Tier - Peers + Status - Seeds + Peers - Leeches + Seeds - Times Downloaded + Leeches - Message + Times Downloaded - Next announce - - - - - Min announce - - - - - v%1 + Message @@ -10837,78 +11482,78 @@ Please choose a different name and try again. Идэвхгүй - + This torrent is private - + Tracker editing - + Tracker URL: - - + + Tracker editing failed - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... - + Remove tracker - + Copy tracker URL - + Force reannounce to selected trackers - + Force reannounce to all trackers - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Add trackers... - + Column visibility @@ -10926,37 +11571,37 @@ Please choose a different name and try again. - + µTorrent compatible list URL: - + Download trackers list - + Add Нэмэх - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10969,62 +11614,70 @@ Please choose a different name and try again. Бүгд (0) - + Warning (%1) - + Trackerless (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - + + Start torrents + + + + + Stop torrents + + + Resume torrents - Торрентуудыг үргэлжлүүлэх + Торрентуудыг үргэлжлүүлэх - Pause torrents - Торрентуудыг зогсоох + Торрентуудыг зогсоох - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Бүгд (%1) @@ -11033,7 +11686,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11125,11 +11778,6 @@ Please choose a different name and try again. Used when loading the torrents from disk after qbt is launched. It checks the correctness of the .fastresume file. Normally it is completed in a fraction of a second, unless loading many many torrents. - - - Paused - - Completed @@ -11153,220 +11801,252 @@ Please choose a different name and try again. - + Name i.e: torrent name - + Size i.e: torrent size - + Progress % Done Явц - + + Stopped + + + + Status - Torrent status (e.g. downloading, seeding, paused) + Torrent status (e.g. downloading, seeding, stopped) - + Seeds i.e. full sources (often untranslated) - + Peers i.e. partial sources (often untranslated) - + Down Speed i.e: Download speed Татах хурд - + Up Speed i.e: Upload speed Түгээх хурд - + Ratio Share ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left - + Category - + Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 - + Completed On Torrent was completed on 01/01/2010 08:00 - + Tracker - + Down Limit i.e: Download limit - + Up Limit i.e: Upload limit - + Downloaded Amount of data downloaded (e.g. in MB) Татагдсан - + Uploaded Amount of data uploaded (e.g. in MB) Түгээсэн - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Remaining Amount of data left to download (e.g. in MB) - + Time Active - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) - + + Yes + Тийм + + + + No + Үгүй + + + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) - + Ratio Limit Upload share ratio limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Activity Time passed since a chunk was downloaded/uploaded - + Total Size i.e. Size including unwanted data - + Availability The number of distributed copies of the torrent - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A - + %1 ago e.g.: 1h 20m ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) @@ -11375,334 +12055,329 @@ Please choose a different name and try again. TransferListWidget - + Column visibility - + Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? - + Rename - + New name: Шинэ нэр: - + Choose save path Хадгалах замыг сонгох - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - - Add Tags - - - - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags - + Remove all tags from selected torrents? - + Comma-separated tags: - + Invalid tag - + Tag name: '%1' is invalid - &Resume Resume/start the torrent - &Үргэлжлүүлэх + &Үргэлжлүүлэх - &Pause Pause the torrent - &Завсарлах - - - - Force Resu&me - Force Resume/start the torrent - + &Завсарлах - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Дарааллаар нь татах - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first Эхний болон сүүлийн хэсгүүдийг эхэлж татах - + Automatic Torrent Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode @@ -11747,28 +12422,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11776,7 +12451,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11807,20 +12487,21 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". @@ -11861,27 +12542,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11997,72 +12678,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12070,120 +12751,133 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + Үл мэдэх алдаа + + misc - + B bytes - + KiB kibibytes (1024 bytes) - + MiB mebibytes (1024 kibibytes) - + GiB gibibytes (1024 mibibytes) - + TiB tebibytes (1024 gibibytes) - + PiB pebibytes (1024 tebibytes) - + EiB exbibytes (1024 pebibytes) - + /s per second /s - + %1s e.g: 10 seconds - + %1m e.g: 10 minutes - + %1h %2m e.g: 3 hours 5 minutes - + %1d %2h e.g: 2 days 10 hours - + %1y %2d e.g: 2 years 10 days - - + + Unknown Unknown (size) Тодорхойгүй - + qBittorrent will shutdown the computer now because all downloads are complete. - + < 1m < 1 minute diff --git a/src/lang/qbittorrent_ms_MY.ts b/src/lang/qbittorrent_ms_MY.ts index d28aad1b82d5..df7e13e8376b 100644 --- a/src/lang/qbittorrent_ms_MY.ts +++ b/src/lang/qbittorrent_ms_MY.ts @@ -14,75 +14,75 @@ Perihal - + Authors - + Current maintainer Penyelenggaran semasa - + Greece Yunani - - + + Nationality: Kerakyatan: - - + + E-mail: E-mel: - - + + Name: Nama: - + Original author Pengarang asal - + France Perancis - + Special Thanks Penghargaan Istimewa - + Translators Penterjemah - + License Lesen - + Software Used Perisian Digunakan - + qBittorrent was built with the following libraries: qBittorrent telah dibina dengan pustaka berikut: - + Copy to clipboard @@ -93,7 +93,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Disimpan di - + Never show again Jangan sesekali tunjuk lagi - Torrent settings - Tetapan Torrent + Tetapan Torrent @@ -191,12 +190,12 @@ Mula torrent - + Torrent information Maklumat torrent - + Skip hash check Langkau semakan cincangan @@ -205,6 +204,11 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: Bentangan kandungan: - + Original Asal - + Create subfolder Cipta subfolder - + Don't create subfolder Jangan cipta subfolder - + Info hash v1: - + Size: Saiz: - + Comment: Ulasan: - + Date: Tarikh: @@ -324,205 +333,150 @@ Ingat laluan simpan simpan terakhir digunakan - + Do not delete .torrent file Jangan padam fail .torrent - + Download in sequential order Muat turun dalam tertib berjujukan - + Download first and last pieces first Muat turn cebisan pertama dan terakhir dahulu - + Info hash v2: - + Select All Pilih Semua - + Select None Pilih Tiada - + Save as .torrent file... Simpan sebagai fail .torrent... - + I/O Error Ralat I/O - Invalid torrent - Torrent tidak sah - - - + Not Available This comment is unavailable Tidak Tersedia - + Not Available This date is unavailable Tidak Tersedia - + Not available Tidak tersedia - Invalid magnet link - Pautan magnet tidak sah - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Gagal memuatkan torrent: %1. -Ralat: %2 - - - This magnet link was not recognized - Pautan magnet ini tidak dikenali - - - + Magnet link Pautan magnet - + Retrieving metadata... Mendapatkan data meta... - - + + Choose save path Pilih laluan simpan - Torrent is already present - Torrent sudah ada - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' sudah ada dalam senarai pemindahan. Penjejak tidak digabungkan kerana ia merupakan torrent persendirian. - - - Torrent is already queued for processing. - Torrent sudah dibaris gilir untuk diproses. - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A T/A - Magnet link is already queued for processing. - Pautan magnet sudah dibaris gilir untuk diproses. - - - + %1 (Free space on disk: %2) %1 (Ruang bebas dalam cakera: %2) - + Not available This size is unavailable. Tidak tersedia - + Torrent file (*%1) - + Save as torrent file Simpan sebagai fail torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - Cannot download '%1': %2 - Tidak dapat muat turun '%1': %2 - - - + Filter files... Tapis fail... - + Parsing metadata... Menghurai data meta... - + Metadata retrieval complete Pemerolehan data meta selesai - - Failed to load from URL: %1. -Error: %2 - Gagal memuatkan dari URL: %1. -Ralat: %2 - - - Download Error - Ralat Muat Turun - AddTorrentManager @@ -537,22 +491,22 @@ Ralat: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -640,72 +594,77 @@ Ralat: %2 Langkau semakan cincangan - - - Choose save path - Pilih laluan simpan + + Torrent share limits + - - - - - - - Default - Lalai + + + Choose save path + Pilih laluan simpan + + + - Yes - Ya + Default + Lalai + Yes + Ya + + + + + No Tidak - + Manual Manual - + Automatic Automatik - + Original Asal - + Create subfolder Cipta subfolder - + Don't create subfolder Jangan cipta subfolder - + None - + Metadata received - + Files checked @@ -713,734 +672,852 @@ Ralat: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Semak semula torrent seusai lengkap - - + + ms milliseconds ms - + Setting Tetapan - + Value Value set for this setting Nilai - + (disabled) (dilumpuhkan) - + (auto) (auto) - + + min minutes min - + All addresses Semua alamat - + qBittorrent Section Seksyen qBittorrent - - + + Open documentation Buka dokumentasi - + All IPv4 addresses Semua alamat IPv4 - + All IPv6 addresses Semua alamat IPv6 - + libtorrent Section Seksyen libtorrent - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Biasa - + Below normal Bawah biasa - + Medium Sederhana - + Low Rendah - + Very low Sangat rendah - - Process memory priority (Windows >= 8 only) - Proses keutamaan ingatan (Windows >= 8 sahaja) - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads Jaluran i/O tak segerak - + Hashing threads - + File pool size Saiz kolam fail - + Outstanding memory when checking torrents Ingatan belum jelas bila memeriksa torrent - + Disk cache Cache cakera - - - - + + + + s seconds s - + Disk cache expiry interval Sela luput cache cakera - + Disk queue size - - + + Enable OS cache Benarkan cache OS - + Coalesce reads & writes baca & tulis bertaut - + Use piece extent affinity Guna afiniti tambahan cebisan - + Send upload piece suggestions Hantar cadangan cebisan muat naik - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default Lalai - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark Hantar tera air penimbal - + Send buffer low watermark Hantar tera air penimbal rendah - + Send buffer watermark factor Hantar faktor tera air penimbal - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Saiz log belakang soket - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP Utamakan TCP - + Peer proportional (throttles TCP) Perkadaran rakan (TCP berdikit) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address Benarkan sambungan berbilang daripada alamat IP yang sama - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names Lerai nama hos rakan - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + saat + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Papar pemberitahuan - + Display notifications for added torrents Papar pemberitahuan untuk torrent yang ditambah - + Download tracker's favicon Muat turun favicon penjejak - + Save path history length Panjang sejarah laluan simpan - + Enable speed graphs Benarkan graf kelajuan - + Fixed slots Slot tetap - + Upload rate based Muat naik berasaskan penarafan - + Upload slots behavior Kelakuan slot muat naik - + Round-robin Round-robin - + Fastest upload Muat naik terpantas - + Anti-leech Anti-penyedut - + Upload choking algorithm Algoritma pencekik muat naik - + Confirm torrent recheck Sahkan semakan semula torrent - + Confirm removal of all tags Sahkan pembuangan semua tag - + Always announce to all trackers in a tier Sentiasa umum kepada semua penjejak dalam satu peringkat - + Always announce to all tiers Sentiasa umum kepada semua peringkat - + Any interface i.e. Any network interface Mana-mana antaramuka - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritma mod bercampur %1-TCP - + Resolve peer countries Lerai negara rakan - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker Benarkan penjejak terbenam - + Embedded tracker port Port penjejak terbenam - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 bermula + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Berjalan dalam mod mudah alih. Auto-kesan folder profil pada: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Bendera baris perintah berulang dikesan: "%1". Mod mudah alih melaksanakan sambung semula pantas secara relatif. - + Using config directory: %1 Menggunakan direktori konfig: %1 - + Torrent name: %1 Nama torrent: %1 - + Torrent size: %1 Saiz torrent: %1 - + Save path: %1 Laluan simpan: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent telah dimuat turun dalam %1. - + + Thank you for using qBittorrent. Terima kasih kerana menggunakan qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, menghantar pemberitahuan mel - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit Ke&luar - + I/O Error i.e: Input/Output Error Ralat I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1449,133 +1526,110 @@ Ralat: %2 Sebab: %2 - Error - Ralat - - - Failed to add torrent: %1 - Gagal menambah torrent: %1 - - - + Torrent added Torrent ditambah - + '%1' was added. e.g: xxx.avi was added. '%1' telah ditambah. - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' telah selesai dimuat turun. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - Ralat muat turun URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Tidak dapat muat turun fail pada URL '%1', sebab: %2. + + Test email + - Torrent file association - Perkaitan fail torrent + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' telah selesai dimuat turun. - + Information Maklumat - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - Nama pengguna pentadbir UI Sesawang ialah: %1 + + Exit + - - The Web UI administrator password has not been changed from the default: %1 - + + Recursive download confirmation + Pengesahan muat turun rekursif - - This is a security risk, please change your password in program preferences. + + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Application failed to start. - Aplikasi gagal dimulakan. + + Never + Tidak Sesekali - - Exit + + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - - Recursive download confirmation - Pengesahan muat turun rekursif - - - - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - - - - Never - - - - - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - - - - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Menyimpan kemajuan torrent... - + qBittorrent is now ready to exit @@ -1583,7 +1637,7 @@ Sebab: %2 AsyncFileStorage - + Could not create directory '%1'. Tidak dapat cipta direktori "%1". @@ -1591,22 +1645,22 @@ Sebab: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Kegagalan daftar masuk WebAPI. Sebab: IP telah disekat, IP: %1, nama pengguna: %2 - + Your IP address has been banned after too many failed authentication attempts. Alamat IP anda telah disekat selepas terlalu banyak percubaan pengesahihan yang gagal. - + WebAPI login success. IP: %1 Daftar masuk WebAPI berjaya. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Kegagalan daftar masuk WebAPI. Sebab: kelayakan tidak sah, kiraan percubaan: %1, IP: %2, nama pengguna: %3 @@ -1654,12 +1708,12 @@ Sebab: %2 - + Must Not Contain: Tidak Boleh Kandungi: - + Episode Filter: Penapis Episod: @@ -1711,263 +1765,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Eksport... - + Matches articles based on episode filter. Artikel sepadan berdasarkan penapis episod. - + Example: Contoh: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match akan padankan 2, 5, 8 menerusi 15, 30 dan episod seterusnya bagi musim pertama - + Episode filter rules: Peraturan penapis episod: - + Season number is a mandatory non-zero value Bilangan musim adalah nilai bukan-sifar yang mandatori - + Filter must end with semicolon Penapis mesti diakhir dengan tanda titik bertindih - + Three range types for episodes are supported: Tiga jenis julat untuk episod disokong: - + Single number: <b>1x25;</b> matches episode 25 of season one Nombor tunggal: <b>1x25;</b> sepadan episod 25 bagi musim pertama - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Julat biasa: <b>1x25-40;</b> sepadan 25 hingga 40 episod bagi musim pertama - + Episode number is a mandatory positive value Bilangan episod adalah nilai positif yang mandatori - + Rules Peraturan - + Rules (legacy) Peraturan (lama) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Julat tak terhingga: <b>1x25-;</b> sepadan 25 episod dan ke atas bagi musim pertama, dan semua episod bagi musim berikutnya - + Last Match: %1 days ago Padanan Terakhir: %1 hari yang lalu - + Last Match: Unknown Padanan Terakhir: Tidak diketahui - + New rule name Nama peraturan baharu - + Please type the name of the new download rule. Sila taip nama bagi peraturan muat turun baharu. - - + + Rule name conflict Nama peraturan berkonflik - - + + A rule with this name already exists, please choose another name. Satu nama peraturan dengan nama ini telah wujud, sila pilih nama lain. - + Are you sure you want to remove the download rule named '%1'? Anda pasti mahu buang peraturan muat turun bernama '%1'? - + Are you sure you want to remove the selected download rules? Anda pasti mahu buang peraturan muat turun terpilih? - + Rule deletion confirmation Pengesahan pemadaman peraturan - + Invalid action Tindakan tidak sah - + The list is empty, there is nothing to export. Senarai kosong, tiada apa hendak dieksportkan. - + Export RSS rules Eksport peraturan RSS - + I/O Error Ralat I/O - + Failed to create the destination file. Reason: %1 Gagal mencipta fail destinasi. Sebab: %1 - + Import RSS rules Import peraturan RSS - + Failed to import the selected rules file. Reason: %1 Gagal mengimport fail peraturan terpilih. Sebab: %1 - + Add new rule... Tambah peraturan baharu... - + Delete rule Padam peraturan - + Rename rule... Nama semula peraturan... - + Delete selected rules Padam peraturan terpilih - + Clear downloaded episodes... Kosongkan episod dimuat turun... - + Rule renaming Penamaan semula peraturan - + Please type the new rule name Sila taip nama peraturan yang baharu - + Clear downloaded episodes Kosongkan episod dimuat turun - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Anda pasti mahu kosongkan senarai episod dimuat turun untuk peraturan terpilih? - + Regex mode: use Perl-compatible regular expressions Mod ungkapan nalar: guna ungkapan nalar serasi-Perl - - + + Position %1: %2 Kedudukan %1: %2 - + Wildcard mode: you can use Mod kad liar: anda boleh gunakan - - + + Import error - + Failed to read the file. %1 - + ? to match any single character ? untuk padankan mana-mana aksara tunggal - + * to match zero or more of any characters * untuk padankan sifar atau lagi mana-mana aksara - + Whitespaces count as AND operators (all words, any order) Kiraan ruang putih dan operator AND (semua perkataan, mana-mana tertib) - + | is used as OR operator digunakan sebagai operator OR - + If word order is important use * instead of whitespace. Jika tertib perkataan adalah mustahak guna * selain dari ruang putih. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Satu ungkapan dengan klausa %1 kosong (seperti %2) - + will match all articles. akan padankan semua artikel. - + will exclude all articles. akan asingkan semua artikel. @@ -2009,53 +2063,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Tidak dapat mencipta folder sambung semula torrent: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 Tidak dapat menyimpan data ke dalam '%1'. Ralat: %2 @@ -2063,38 +2122,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2102,22 +2161,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2125,484 +2184,520 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON HIDUP - - - - - - - - - + + + + + + + + + OFF MATI - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED DIPAKSA - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. - - UPnP/NAT-PMP support: OFF + + Removing torrent. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Removing torrent and deleting its content. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Status rangkaian sistem berubah ke %1 + + Trackers are merged from new source + - ONLINE - ATAS-TALIAN + + UPnP/NAT-PMP support: OFF + - OFFLINE - LUAR-TALIAN + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Konfigurasi rangkaian %1 telah berubah, menyegar semula pengikatan sesi + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2610,62 +2705,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Gagal menambah rakan "%1" ke torrent "%2". Sebab: %3 - + Peer "%1" is added to torrent "%2" Rakan "%1" telah ditambah ke dalam torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' Muat turun cebisan pertama dan terakhir dahulu: %1, torrent: '%2' - + On Hidup - + Off Mati - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Gagal menamakan semula fail. Torrent: "%1", fail: "%2", sebab: "%3" - + Performance alert: %1. More info: %2 @@ -2686,184 +2786,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' mesti ikuti sintak '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' mesti ikuti sintak '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Dijangka nombor integer dalam pembolehubah persekitaran '%1', tetapi dapat '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' mesti ikuti sintak '%1=%2' + Parameter '%1' mesti ikuti sintak '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Dijangka %1 dalam pembolehubah persekitaran '%2', tetapi dapat '%3' - - + + %1 must specify a valid port (1 to 65535). %1 mestilah nyatakan port yang sah (1 hingga 65535). - + Usage: Penggunaan: - + [options] [(<filename> | <url>)...] - + Options: Pilihan: - + Display program version and exit Papar versi program kemudian keluar - + Display this help message and exit Papar mesej bantuan ini kemudian keluar - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' mesti ikuti sintak '%1=%2' + + + + Confirm the legal notice + + + + + port port - - Change the Web UI port - Ubah port UI Sesawang + + Change the WebUI port + - + Change the torrenting port - + Disable splash screen Lumpuhkan skrin percikan - + Run in daemon-mode (background) Jalankan dalam mod-daemon (disebalik tabir) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Simpan fail konfigurasi dalam <dir> - - + + name nama - + Store configuration files in directories qBittorrent_<name> Simpan fail konfigurasi dalam direktori qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Godam ke dalam fail fastresume libtorrent dan buat laluan fail yang relatif dengan direktori profil - + files or URLs fail atau URL - + Download the torrents passed by the user Muat turun torrent diluluskan oleh pengguna - + Options when adding new torrents: Pilihan bila menambah torrent baharu: - + path laluan - + Torrent save path Laluan simpan Torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Tambah torrent sebagai dimulakan atau dijeda + Tambah torrent sebagai dimulakan atau dijeda - + Skip hash check Langkau semakan cincangan - + Assign torrents to category. If the category doesn't exist, it will be created. Umpuk torrent dengan kategori. Jika kategori tidak wujuf, ia akan diciptakan. - + Download files in sequential order Muat turun fail dalam tertib berjujukan - + Download first and last pieces first Muat turn cebisan pertama dan terakhir dahulu - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Nyatakan sama ada dialog "Tambah Torrent Baharu" dibuka ketika menambah sebuah torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Nilai pilihan boleh dibekalkan melalui pembolehubah persekitaran. Untuk pilihan bernama 'parameter-name', nama pembolehubah persekitaran ialah 'QBT_PARAMETER_NAME' (dalam huruf besar, '-' diganti dengan '_'). Untuk melepasi nilai bendera, tetapkan pembolehubah ke '1' atau 'TRUE'. Sebagai contoh, untuk lumpuhkan skrin percikan: - + Command line parameters take precedence over environment variables Parameter baris perintah mengambil alih pembolehubah persekitaran - + Help Bantuan @@ -2871,17 +2985,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Kategori - + All Semua - + Uncategorized Tiada Kategori @@ -2915,13 +3029,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Sambung semula torrent + Start torrents + + Stop torrents + + + + Resume torrents + Sambung semula torrent + + Pause torrents - Jeda torrent + Jeda torrent @@ -2932,15 +3054,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset Tetap Semula + + + System + + CookiesDialog @@ -2981,12 +3108,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2994,7 +3121,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3013,23 +3140,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove @@ -3042,12 +3169,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Muat turun dari URL - + Add torrent links Tambah pautan torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Satu pautan per baris (pautan HTTP, pautan Magnet dan cincangan-maklumat disokong) @@ -3057,12 +3184,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Muat turun - + No URL entered Tiada URL dimasukkan - + Please type at least one URL. Sila taip sekurang-kurangnya satu URL. @@ -3222,24 +3349,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - Torrent sudah ada + Torrent sudah ada + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3247,38 +3397,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. Saiz fail pengkalan data tidak disokong. - + Metadata error: '%1' entry not found. Ralat data meta: masukan '%1' tidak ditemui. - + Metadata error: '%1' entry has invalid type. Ralat data meta: masukan '%1' mempunyai jenis yang tidak sah. - + Unsupported database version: %1.%2 Versi pangkalan data tidak disokong: %1.%2 - + Unsupported IP version: %1 Versi IP tidak disokong: %1 - + Unsupported record size: %1 Saiz rekod tidak disokong: %1 - + Database corrupted: no data section found. Pangkalan data telah rosak: tiada seksyen data ditemui. @@ -3286,17 +3436,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Permintaan Http teruk, menutup soket. IP: %1 @@ -3337,36 +3487,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Layar... - + Reset Tetap Semula - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + Notis Perundangan + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent ialah program perkongsian fail. Bila anda menjalankan sebuah torrent, datanya akan tersedia kepada orang lain melalui muat naik. Apa-apa kandungan yang anda kongsikan adalah tanggungjawab anda sendiri. + + + + No further notices will be issued. + Tiada notis lanjutan akan diutarakan. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned %1 telah disekat @@ -3375,91 +3553,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 bukanlah parameter baris perintah yang tidak diketahui. - - + + %1 must be the single command line parameter. %1 mestilah parameter baris perintah tunggal. - - You cannot use %1: qBittorrent is already running for this user. - Anda tidak boleh guna %1: qBittorrent sudah dijalankan untuk pengguna ini. - - - + Run application with -h option to read about command line parameters. Jalankan aplikasi dengan pilihan -h untuk baca berkenaan parameter baris perintah. - + Bad command line Baris perintah teruk - + Bad command line: Baris perintah teruk: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Notis Perundangan - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent ialah program perkongsian fail. Bila anda menjalankan sebuah torrent, datanya akan tersedia kepada orang lain melalui muat naik. Apa-apa kandungan yang anda kongsikan adalah tanggungjawab anda sendiri. - - - - No further notices will be issued. - Tiada notis lanjutan akan diutarakan. - - - - Press %1 key to accept and continue... - Tekan kekunci %1 untuk terima dan teruskan... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent ialah program perkongsian fail. Bila anda menjalankan sebuah torrent, datanya akan tersedia kepada orang lain melalui muat naik. Apa-apa kandungan yang anda kongsikan adalah tanggungjawab anda sendiri. - -Tiada lagi notis lanjutan akan dikeluarkan. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Notis perundangan + + Another qBittorrent instance is already running. + - - Cancel - Batal + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Saya Setuju + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3470,615 +3619,704 @@ Tiada lagi notis lanjutan akan dikeluarkan. &Sunting - + &Tools &Alat - + &File &Fail - + &Help &Bantuan - + On Downloads &Done Jika Muat Turun &Selesai - + &View &Lihat - + &Options... &Pilihan... - &Resume - Sa&mbung Semula + Sa&mbung Semula - + &Remove - + Torrent &Creator Pen&cipta Torrent - - + + Alternative Speed Limits Had Kelajuan Alternatif - + &Top Toolbar Palang Ala&t Atas - + Display Top Toolbar Papar Palang Alat Atas - + Status &Bar &Palang Status - + Filters Sidebar - + S&peed in Title Bar Ke&lajuan dalam Palang Tajuk - + Show Transfer Speed in Title Bar Tunjuk Kelajuan Pemindahan dalam Palang Tajuk - + &RSS Reader Pembaca &RSS - + Search &Engine &Enjin Gelintar - + L&ock qBittorrent K&unci qBittorrent - + Do&nate! Be&ri &Derma! - + + Sh&utdown System + + + + &Do nothing - + Close Window Tutup Tetingkap - R&esume All - Samb&ung Semula Semua + Samb&ung Semula Semua - + Manage Cookies... Urus Kuki... - + Manage stored network cookies Urus kuki rangkaian tersimpan - + Normal Messages Mesesj Biasa - + Information Messages Mesej Maklumat - + Warning Messages Mesej Amaran - + Critical Messages Mesej Kritikal - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue Terbawah Baris Gilir - + Move to the bottom of the queue Alih ke terbawah dalam baris gilir - + Top of Queue Teratas Baris Gilir - + Move to the top of the queue Alih ke teratas dalam baris gilir - + Move Down Queue Alih ke Bawah Baris Gilir - + Move down in the queue Alih ke bawah dalam baris gilir - + Move Up Queue Alih ke Atas Baris Gilir - + Move up in the queue Alih ke atas dalam baris gilir - + &Exit qBittorrent &Keluar qBittorrent - + &Suspend System Tan&gguh Sistem - + &Hibernate System &Hibernasi Sistem - S&hutdown System - &Matikan Sistem + &Matikan Sistem - + &Statistics &Statistik - + Check for Updates Semak Kemaskini - + Check for Program Updates Semak Kemaskini Program - + &About Perih&al - &Pause - &Jeda + &Jeda - P&ause All - J&eda Semua + J&eda Semua - + &Add Torrent File... T&ambah Fail Torrent... - + Open Buka - + E&xit Ke&luar - + Open URL Buka URL - + &Documentation &Dokumentasi - + Lock Kunci - - - + + + Show Tunjuk - + Check for program updates Semak kemaskini program - + Add Torrent &Link... Tambah Pa&utan Torrent... - + If you like qBittorrent, please donate! Jika anda menyukai qBittorrent, sila beri derma! - - + + Execution Log Log Pelakuan - + Clear the password Kosongkan kata laluan - + &Set Password &Tetapkan Kata Laluan - + Preferences Keutamaan - + &Clear Password &Kosongkan Kata Laluan - + Transfers Pemindahan - - + + qBittorrent is minimized to tray qBittorrent diminimumkan ke dalam talam - - - + + + This behavior can be changed in the settings. You won't be reminded again. Kelakuan ini boleh diubah dalam tetapan. Anda tidak akan diingatkan lagi. - + Icons Only Ikon Sahaja - + Text Only Teks Sahaja - + Text Alongside Icons Teks Bersebelahan Ikon - + Text Under Icons Teks Di Bawah Ikon - + Follow System Style Ikut Gaya Sistem - - + + UI lock password Kata laluan kunci UI - - + + Please type the UI lock password: Sila taip kata laluan kunci UI: - + Are you sure you want to clear the password? Anda pasti mahu kosongkan kata laluan? - + Use regular expressions Guna ungkapan nalar - - Search - Gelintar + + + Search Engine + Enjin Gelintar - - Transfers (%1) - Pemindahan (%1) + + Search has failed + Gelintar telah gagal - Recursive download confirmation - Pengesahan muat turun rekursif + + Search has finished + Gelintar selesai - Never - Tidak Sesekali + + Search + Gelintar - + + Transfers (%1) + Pemindahan (%1) + + + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent baru sahaja dikemaskini dan perlu dimulakan semula supaya perubahan berkesan. - + qBittorrent is closed to tray qBittorrent ditutup ke dalam talam - + Some files are currently transferring. Beberapa fail sedang dipindahkan. - + Are you sure you want to quit qBittorrent? Anda pasti mahu keluar dari qBittorrent? - + &No &Tidak - + &Yes &Ya - + &Always Yes &Sentiasa Ya - + Options saved. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Masa Jalan Python Hilang - + qBittorrent Update Available Kemaskini qBittorrent Tersedia - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python diperlukan untuk guna enjin gelintar tetapi tidak kelihatan dipasang. Anda mahu pasangkannya sekarang? - + Python is required to use the search engine but it does not seem to be installed. Python diperlukan untuk guna enjin gelintar tetapi tidak kelihatan dipasang. - - + + Old Python Runtime Masa Jalan Python Lama - + A new version is available. Satu versi baharu telah tersedia. - + Do you want to download %1? Anda mahu memuat turun %1? - + Open changelog... Buka log perubahan... - + No updates available. You are already using the latest version. Tiada kemaskinitersedia. Anda sudah ada versi yang terkini. - + &Check for Updates &Semak Kemaskini - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + Dijeda + + + Checking for Updates... Menyemak Kemaskini... - + Already checking for program updates in the background Sudah memeriksa kemaskini program disebalik tabir - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Ralat muat turun - Python setup could not be downloaded, reason: %1. Please install it manually. - Persediaan Pythin tidak dapat dimuat turun, sebab: %1. + Persediaan Pythin tidak dapat dimuat turun, sebab: %1. Sila pasangkannya secara manual. - - + + Invalid password Kata laluan tidak sah - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid Kata laluan tidak sah - + DL speed: %1 e.g: Download speed: 10 KiB/s Kelajuan MT: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Kelajuan MN: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [T: %1, N: %2] qBittorrent %3 - - - + Hide Sembunyi - + Exiting qBittorrent Keluar qBittorrent - + Open Torrent Files Buka Fail Torrent - + Torrent Files Fail Torrent @@ -4139,133 +4377,133 @@ Sila pasangkannya secara manual. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) Saiz fail (%1) melangkaui had muat turun (%2) - + Exceeded max redirections (%1) Arah semula maksimum dilangkaui (%1) - + Redirected to magnet URI Arah semula ke URI magnet - + The remote host name was not found (invalid hostname) Nama hos jauh tidak ditemui (nama hos tidak sah) - + The operation was canceled Operasi telah dibatalkan - + The remote server closed the connection prematurely, before the entire reply was received and processed Pelayan jauh telah ditutup sambungannya secara pramatang, sebelum keseluruhan balasan diterima dan diproses - + The connection to the remote server timed out Sambungan ke pelayan jauh telah tamat masa - + SSL/TLS handshake failed Jabat tangan SSL/TLS telah gagal - + The remote server refused the connection Pelayan jauh menafikan sambungan - + The connection to the proxy server was refused Sambungan ke pelayan proksi telah dinafikan - + The proxy server closed the connection prematurely Pelayan proksi telah ditutup sambungannya secara pramatang - + The proxy host name was not found Nama hos proksi tidak ditemui - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Sambungan ke proksi telah tamat masa atau proksi tidak membalas dalam tempoh permintaan dihantar - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proksi memerlukan pengesahihan untuk menawarkan permintaan tetapi tidak menerima apa-apa kelayakan yang ditawarkan - + The access to the remote content was denied (401) Capaian ke kandungan jauh telah dinafikan (401) - + The operation requested on the remote content is not permitted Operasi yang dipinta pada kandungan jauh tidak dibenarkan - + The remote content was not found at the server (404) Kandungan jauh tidak ditemui di dalam pelayan (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Pelayan jauh memerlukan pengesahihan untuk menawarkan kandungan tetapi kelayakan yang diberi tidak dapat diterima - + The Network Access API cannot honor the request because the protocol is not known API Capaian Rangkaian tidak dapat meneruskan permintaan kerana protokol tidak diketahui - + The requested operation is invalid for this protocol Operasi yang dipinta tidak sah untuk protokol ini - + An unknown network-related error was detected Satu ralat berkaitan-rangkaian tidak diketahui telah dikesan - + An unknown proxy-related error was detected Satu ralat berkaitan-proksi tidak diketahui telah dikesan - + An unknown error related to the remote content was detected Satu ralat tidak diketahui berkaitan dengan kandungan jauh telah dikesan - + A breakdown in protocol was detected Satu kerosakan pada protokol telah dikesan - + Unknown error Ralat tidak diketahui @@ -4273,7 +4511,12 @@ Sila pasangkannya secara manual. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Mengabaikan ralat SSL. URL: "%1", ralat: "%2" @@ -5645,294 +5888,295 @@ Sila pasangkannya secara manual. BitTorrent - + RSS RSS - Web UI - UI Sesawang + UI Sesawang - + Advanced Lanjutan - + Customize UI Theme... - + Transfer List Senarai Pemindahan) - + Confirm when deleting torrents Sahkan bila memadam torrent - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Guna warna baris alternatif - + Hide zero and infinity values Sembunyi nilai sifar dan tak terhingga - + Always Sentiasa - Paused torrents only - Torrent dijeda sahaja + Torrent dijeda sahaja - + Action on double-click Tindakan bila dwi-klik - + Downloading torrents: Torrent dimuat turun: - - Start / Stop Torrent - Mula / Henti Torrent + Mula / Henti Torrent - - + + Open destination folder Buka folder destinasi - - + + No action Tiada tindakan - + Completed torrents: Torrent selesai: - + Auto hide zero status filters - + Desktop Desktop - + Start qBittorrent on Windows start up Mulakan qBittorrent ketika permulaan Windows - + Show splash screen on start up Tunjuk skrin percikan ketika permulaan - + Confirmation on exit when torrents are active Pengesahan ketika keluar jika torrent masih aktif - + Confirmation on auto-exit when downloads finish Pengesahan ketika auto-keluar bila muat turun selesai - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Bentangan kandungan torrent: - + Original Asal - + Create subfolder Cipta subfolder - + Don't create subfolder Jangan cipta subfolder - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Tambah... - + Options.. - + Remove - + Email notification &upon download completion Pemberitahuan emel se&usai muat turun lengkap - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: + + + + + Any - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering Penap&isan IP - + Schedule &the use of alternative rate limits Jadualkan penggunaan &had kadar alternatif - + From: From start time Daripada: - + To: To end time Kepada: - + Find peers on the DHT network Cari rakan dalam rangkaian DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5941,140 +6185,188 @@ Perlu penyulitan: Hanya sambung dengan rakan dengan penyulitan protokol Lumpuhkan penyulitan: Hanya sambung dengan rakan tanpa penyulitan protokol - + Allow encryption Benarkan penyulitan - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Lagi maklumat</a>) - + Maximum active checking torrents: - + &Torrent Queueing Pembarisan Gilir &Torrent - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - Tambah penjejak ini secara automatik ke muat turun baharu: + Tambah penjejak ini secara automatik ke muat turun baharu: - + RSS Reader Pembaca RSS - + Enable fetching RSS feeds Benarkan mendapatkan suapan RSS - + Feeds refresh interval: Sela segar semula suapan: - + + Same host request delay: + + + + Maximum number of articles per feed: Bilangan maksimum artikel per suapan: - - - + + + min minutes min - + Seeding Limits Had Menyemai - Pause torrent - Jeda torrent + Jeda torrent - + Remove torrent Buang torrent - + Remove torrent and its files Buang torrent dan fail-failnya - + Enable super seeding for torrent Benarkan super penyemaian untuk torrent - + When ratio reaches Bila nisbah dicapai - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Auto Pemuat Turun Torrent RSS - + Enable auto downloading of RSS torrents Benarkan auto muat turun torrent RSS - + Edit auto downloading rules... Sunting peraturan auto muat turun... - + RSS Smart Episode Filter Penapis Episod Pintar RSS - + Download REPACK/PROPER episodes Muat turun episod REPACK/PROPER - + Filters: Penapis: - + Web User Interface (Remote control) Antaramuka Pengguna Sesawang (Kawalan jauh) - + IP address: Alamat IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6083,42 +6375,41 @@ Nyatakan satu alamat IPv4 atau IPv6. Anda boleh nyatakan "0.0.0.0" unt "::" untuk mana-mana alamat IPv6, atau "*" untuk kedua-dua IPv4 dan IPv6. - + Ban client after consecutive failures: Sekat klien selepas kegagalan berturutan: - + Never Tidak sesekali - + ban for: sekat selama: - + Session timeout: Had masa tamat sesi: - + Disabled Dilumpuhkan - Enable cookie Secure flag (requires HTTPS) - Benarkan bendera Selamat kuki (perlukan HTTPS) + Benarkan bendera Selamat kuki (perlukan HTTPS) - + Server domains: Domain pelayan: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6131,442 +6422,491 @@ anda patut letak nama domain yang digunakan oleh pelayan WebUI. Guna ';' untuk asingkan masukan berbilang. Boleh guna kad liar '*'. - + &Use HTTPS instead of HTTP G&una HTTPS selain dari HTTP - + Bypass authentication for clients on localhost Lepasi pengesahihan untuk klien pada localhost - + Bypass authentication for clients in whitelisted IP subnets Lepasi pengesahihan untuk klien dalam subnet IP tersenarai putih - + IP subnet whitelist... Senarai putih subnet IP... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name Ke&maskini nama domain dinamik saya - + Minimize qBittorrent to notification area Minimumkan qBittorrent ke ruang pemberitahuan - + + Search + Gelintar + + + + WebUI + + + + Interface Antara Muka - + Language: Bahasa: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Gaya ikon talam: - - + + Normal Biasa - + File association Perkaitan fail - + Use qBittorrent for .torrent files Guna qBittorrent untuk fail .torrent - + Use qBittorrent for magnet links Guna qBittorrent untuk pautan magnet - + Check for program updates Periksa kemas kini program - + Power Management Pengurusan Kuasa - + + &Log Files + + + + Save path: Laluan simpan: - + Backup the log file after: Sandar fail log selepas: - + Delete backup logs older than: Padam log sandar lebih tua dari: - + + Show external IP in status bar + + + + When adding a torrent Bila menambah sebuah torrent - + Bring torrent dialog to the front Bawa dialog torrent ke hadapan - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Juga pada fail .torrent yang mana penambahannya telah dibatalkan - + Also when addition is cancelled Juga bila penambahan dibatalkan - + Warning! Data loss possible! Amaran! Kehilangan data mungkin berlaku! - + Saving Management Pengurusan Penyimpanan - + Default Torrent Management Mode: Mod Pengurusan Torrent Lalai: - + Manual Manual - + Automatic Automatik - + When Torrent Category changed: Bila Kategori Torrent berubah: - + Relocate torrent Tempat semula torrent - + Switch torrent to Manual Mode Tular torrent ke Mod Manual - - + + Relocate affected torrents Tempat semula torrent yang dipengaruhi - - + + Switch affected torrents to Manual Mode Tukar torrent yang dipengaruhi ke Mod Manual - + Use Subcategories Guna Subkategori - + Default Save Path: Laluan Simpan Lalai: - + Copy .torrent files to: Salin fail .torrent ke: - + Show &qBittorrent in notification area Tunjuk &qBittorrent dalam ruang pemberitahuan - &Log file - Fail &log: + Fail &log: - + Display &torrent content and some options Papar kandungan &torrent dan beberapa pilihan - + De&lete .torrent files afterwards Pa&dam fail .torrent selepas itu - + Copy .torrent files for finished downloads to: Salin fail .torrent bagi muat turun yang selesai ke: - + Pre-allocate disk space for all files Pra-peruntuk ruang cakera untuk semua fail - + Use custom UI Theme Guna Tema UI suai - + UI Theme file: Fail Tema UI: - + Changing Interface settings requires application restart Pengubahan tetapan Antara Muka memerlukan mula semula aplikasi - + Shows a confirmation dialog upon torrent deletion Tunjuk satu dialog pengesahan ketika pemadaman torrent - - + + Preview file, otherwise open destination folder Pratonton fail, jika tidak buka folder destinasi - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents Tunjuk satu dialog pengesahan ketika keluar dengan torrent aktif - + When minimizing, the main window is closed and must be reopened from the systray icon Bila diminimumkan, tetingkap utama ditutup dan mesti dibuka semula melalui ikon talam sistem - + The systray icon will still be visible when closing the main window Ikon talam sistem akan kekal tampak ketika menutup tetingkap utama - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Tutup qBittorrent masuk ke ruang pemberitahuan - + Monochrome (for dark theme) Monokrom (untuk tema gelap) - + Monochrome (for light theme) Monokrom (untuk tema cerah) - + Inhibit system sleep when torrents are downloading Sekat tidur sistem bila torrent masih memuat turun - + Inhibit system sleep when torrents are seeding Sekat tidur sistem bila torrent masih menyemai - + Creates an additional log file after the log file reaches the specified file size Cipta satu fail log tambahan selepas fail log mencapai saiz fail yang ditentukan - + days Delete backup logs older than 10 days hari - + months Delete backup logs older than 10 months bulan - + years Delete backup logs older than 10 years tahun - + Log performance warnings - The torrent will be added to download list in a paused state - Torrent akan ditambah ke dalam senarai muat turun dalam keadaan terjeda + Torrent akan ditambah ke dalam senarai muat turun dalam keadaan terjeda - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Jangan mulakan muat turun secara automatik - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Peruntuk saiz fail penuh dalam cakera sebelum memulakan muat turun, untuk mengurangkan fragmentasi. Hanya berguna kepada HDD. - + Append .!qB extension to incomplete files Tambah sambungan .!qB pada fail tidak lengkap - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Bila satu torrent dimuat turun, tawar penambahan torrent dari mana-mana fail .torrent yang ditemui di dalamnya - + Enable recursive download dialog Benarkan dialog muat turun rekursif - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatik: Pelbagai sifat torrent (seperti laluan simpan) akan ditentukan oleh kategori berkaitan Manual: Pelbagai sifat torrent (seperti laluan simpan) mesti diumpuk secara manual - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: Bila Laluan Simpan Kategori berubah: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: Tambah torrent secara automatik dari: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6583,841 +6923,906 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Penerima - + To: To receiver Kepada: - + SMTP server: Pelayan SMTP: - + Sender Pengirim - + From: From sender Daripada: - + This server requires a secure connection (SSL) Pelayan ini memerlukan satu sambungan selamat (SSL) - - + + Authentication Pengesahihan - - - - + + + + Username: Nama pengguna: - - - - + + + + Password: Kata laluan: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window Tunjuk tetingkap konsol - + TCP and μTP TCP dan μTP - + Listening Port Port Dengar - + Port used for incoming connections: Port yang digunakan untuk sambungan masuk: - + Set to 0 to let your system pick an unused port - + Random Rawak - + Use UPnP / NAT-PMP port forwarding from my router Guna pemajuan port UPnP / NAT-PMP daripada penghala saya - + Connections Limits Had Sambungan - + Maximum number of connections per torrent: Bilangan sambungan per torrent maksimum: - + Global maximum number of connections: Bilangan sambungan maksimum sejagat: - + Maximum number of upload slots per torrent: Bilangan slot muat naik per torrent maksimum: - + Global maximum number of upload slots: Bilangan maksimum sejagat bagi slot muat naik: - + Proxy Server Pelayan Proksi - + Type: Jenis: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Hos: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Jika tidak, pelayan proksi hanya digunakan untuk sambungan penjejak - + Use proxy for peer connections Guna proksi untuk sambungan rakan - + A&uthentication Pen&gesahihan - + Info: The password is saved unencrypted Maklumat: Kata laluan disimpan secara tak sulit - + Filter path (.dat, .p2p, .p2b): Tapis laluan (.dat, .p2p, .p2b): - + Reload the filter Muat semula penapis - + Manually banned IP addresses... Alamat IP dilarang secara manual... - + Apply to trackers Laksana kepada penjejak - + Global Rate Limits Had Kadar Sejagat - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Muat naik: - - + + Download: Muat Turun: - + Alternative Rate Limits Had Kadar Alternatif - + Start time Masa mula - + End time Masa tamat - + When: Bila: - + Every day Setiap hari - + Weekdays Hari biasa - + Weekends Hujung minggu - + Rate Limits Settings Tetapan Had Kadar - + Apply rate limit to peers on LAN Laksana had kadar kepada rakan dalam LAN - + Apply rate limit to transport overhead Laksana had kadar untuk overhed angkutan - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Laksana had kadar ke protokol µTP - + Privacy Kerahsiaan - + Enable DHT (decentralized network) to find more peers Benarkan DHT (rangkaian tak sepusat) untuk dapatkan lagi rakan - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Tukar rakan dengan klien Bittorrent yang serasi (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Benarkan Pertukaran Rakan (PeX) untuk dapatkan lagi rakan - + Look for peers on your local network Cari rakan dalam rangkaian setempat anda - + Enable Local Peer Discovery to find more peers Benarkan Penemuan Rakan Setempat untuk cari lagi rakan - + Encryption mode: Mod penyulitan: - + Require encryption Perlu penyulitan - + Disable encryption Lumpuhkan penyulitan - + Enable when using a proxy or a VPN connection Benarkan bila menggunakan proksi atau sambungan VPN - + Enable anonymous mode Benarkan mod awanama - + Maximum active downloads: Muat turun aktif maksimum: - + Maximum active uploads: Muat naik aktif maksimum: - + Maximum active torrents: Torrent aktif maksimum: - + Do not count slow torrents in these limits Jangan kira torrent lembab dalam had ini - + Upload rate threshold: Ambang kadar muat naik: - + Download rate threshold: Ambang kadar muat turun: - - - + + + + sec seconds saat - + Torrent inactivity timer: Pemasa ketidakaktifan torrent: - + then maka - + Use UPnP / NAT-PMP to forward the port from my router Guna UPnP / NAT-PMP untuk majukan port daripada penghala saya - + Certificate: Sijil: - + Key: Kunci: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Maklumat berkenaan sijil</a> - + Change current password Ubah kata laluan semasa - Use alternative Web UI - Guna UI Sesawang alternatif + Guna UI Sesawang alternatif - + Files location: Lokasi fail: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Keselamatan - + Enable clickjacking protection Benarkan perlindungan godaman klik - + Enable Cross-Site Request Forgery (CSRF) protection Benarkan perlindungan Pemalsuan Pintaan Silang-Laman (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Benarkan pengesahan pengepala hos - + Add custom HTTP headers Tambah pengepala HTTP suai - + Header: value pairs, one per line Pengepala: pasangan nilai, satu per baris - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Perkhidmatan: - + Register Daftar - + Domain name: Nama domain: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Dengan membenarkan pilihan ini, anda boleh <strong>kehilangan terus</strong> fail .torrent anda! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Jika anda benarkan pilihan kedua (&ldquo;Juga bila penambahan dibatalkan&rdquo;) fail .torrent <strong>akan dipadamkan</strong> walaupun jika anda menekan &ldquo;<strong>Batal</strong>&rdquo; di dalam dialog &ldquo;Tambah torrent&rdquo; - + Select qBittorrent UI Theme file Pilih fail Tema UI qBittorrent - + Choose Alternative UI files location Pilih lokasi fail UI alternatif - + Supported parameters (case sensitive): Parameter disokong (peka kata): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: Nama torrent - + %L: Category %L: Kategori - + %F: Content path (same as root path for multifile torrent) %F: Laluan kandungan (sama dengan laluan root untuk torrent berbilang-fail) - + %R: Root path (first torrent subdirectory path) %R: Laluan root (laluan subdirektori torrent pertama) - + %D: Save path %D: Laluan simpan - + %C: Number of files %C: Bilangan fail - + %Z: Torrent size (bytes) %Z: Saiz torrent (bait) - + %T: Current tracker %T: Penjejak semasa - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Petua: Parameter dalam kurungan dengan tanda petikan untuk menghindari teks dipotong pada ruang putih (contohnya., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Tiada) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Sebuah torrent akan dianggap perlahan jika kadar muat turun dan muat naiknya kekal di bawah nilai ini "Torrent inactivity timer" dalam saat - + Certificate Sijil - + Select certificate Pilih sijil - + Private key Kunci persendirian - + Select private key Pilih kunci persendirian - - Select folder to monitor - Pilih folder untuk dipantau + + WebUI configuration failed. Reason: %1 + - - Adding entry failed - Penambahan masukan gagal + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + - - Location Error - Ralat Lokasi + + System + System default Qt style + - - The alternative Web UI files location cannot be blank. - Lokasi fail UI Sesawang alternatif tidak boleh kosong. + + Let Qt decide the style for this system + - - - Choose export directory - Pilih direktori eksport + + Dark + Dark color scheme + - - When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well + + Light + Light color scheme - - qBittorrent UI Theme file (*.qbtheme config.json) + + System + System color scheme - - %G: Tags (separated by comma) - %G: Tag (diasing dengan tanda koma) - + + Select folder to monitor + Pilih folder untuk dipantau + + + + Adding entry failed + Penambahan masukan gagal + + + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + + + + + Location Error + Ralat Lokasi + + + + + Choose export directory + Pilih direktori eksport + + + + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well + + + + + qBittorrent UI Theme file (*.qbtheme config.json) + + + + + %G: Tags (separated by comma) + %G: Tag (diasing dengan tanda koma) + - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Pilih satu direktori simpan - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Pilih satu fail penapis IP - + All supported filters Semua penapis disokong - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Ralat penghuraian - + Failed to parse the provided IP filter Gagal menghurai penapis IP yang disediakan - + Successfully refreshed Berjaya disegar semulakan - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Berjaya menghurai penapis IP yang disediakan: %1 peraturan telah dilaksanakan. - + Preferences Keutamaan - + Time Error Ralat Masa - + The start time and the end time can't be the same. Masa mula dan masa tamat tidak boleh serupa. - - + + Length Error Ralat Panjang - - - The Web UI username must be at least 3 characters long. - Nama pengguna UI Sesawang mestilah sekurang-kurangnya 3 aksara panjangnya. - - - - The Web UI password must be at least 6 characters long. - Kata laluan UI Sesawang mestilah sekurang-kurangnya 6 aksara panjangnya. - PeerInfo - + Unknown Tidak diketahui - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7573,7 +7978,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Rakan "%1" disekat secara manual - + N/A T/A @@ -7596,7 +8001,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Senarai rakan untuk ditambah (satu IP per baris): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7637,27 +8042,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Fail dalam cebisan ini: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information Tunggu sehingga data meta telah tersedia untuk melihat maklumat terperincinya - + Hold Shift key for detailed information Tahan kekunci Shift untuk maklumat lanjut @@ -7670,58 +8075,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Pemalam gelintar - + Installed search plugins: Pemalam gelintar terpasang: - + Name Nama - + Version Versi - + Url Url - - + + Enabled Dibenarkan - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Amaran: Pastikan menuruti undang-undang hakcipta negara anda ketika memuat turun torrent dari mana-mana enjin gelintar. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Pasang satu yang baharu - + Check for updates Periksa kemaskini - + Close Tutup - + Uninstall Nyahpasang @@ -7841,17 +8246,17 @@ Pemalam tersebut telah dilumpuhkan. Sumber pemalam - + Search plugin source: Sumber pemalam gelintar: - + Local file Fail setempat - + Web link Pautan Sesawang @@ -7892,47 +8297,47 @@ Pemalam tersebut telah dilumpuhkan. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Fail berikut daripada torrent "%1" menyokong pratonton, sila pilih salah satu: - + Preview Pratonton - + Name Nama - + Size Saiz - + Progress Kemajuan - + Preview impossible Pratonton adalah mustahil - + Sorry, we can't preview this file: "%1". Maaf, kami tidak dapat pratonton fail ini: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7945,27 +8350,27 @@ Pemalam tersebut telah dilumpuhkan. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8006,12 +8411,12 @@ Pemalam tersebut telah dilumpuhkan. PropertiesWidget - + Downloaded: Dimuat Turun: - + Availability: Ketersediaan: @@ -8026,53 +8431,53 @@ Pemalam tersebut telah dilumpuhkan. Pemindahan - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Masa Aktif: - + ETA: ETA: - + Uploaded: Dimuat Naik: - + Seeds: Semaian: - + Download Speed: Kelajuan Muat Turun: - + Upload Speed: Kelajuan Muat Naik: - + Peers: Rakan: - + Download Limit: Had Muat Turun: - + Upload Limit: Had Muat Naik: - + Wasted: Tersia: @@ -8082,193 +8487,249 @@ Pemalam tersebut telah dilumpuhkan. Sambungan: - + Information Maklumat - + Info Hash v1: - + Info Hash v2: - + Comment: Ulasan: - + Select All Pilih Semua - + Select None Pilih Tiada - + Share Ratio: Nisbah Kongsi: - + Reannounce In: Diumum Semula Dalam Tempoh: - + Last Seen Complete: Terakhir Dilihat Selesai: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Jumlah Saiz: - + Pieces: Cebisan: - + Created By: Dicipta Oleh: - + Added On: Ditambah Pada: - + Completed On: Selesai Pada: - + Created On: Dicipta Pada: - + + Private: + + + + Save Path: Laluan Simpan: - + Never Tidak sesekali - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (mempunyai %3) - - + + %1 (%2 this session) %1 (%2 sesi ini) - - + + + N/A T/A - + + Yes + Ya + + + + No + Tidak + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (disemai untuk %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 jumlah) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 pur.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Semai Sesawang Baharu + Semai Sesawang Baharu - Remove Web seed - Buang semaian Sesawang + Buang semaian Sesawang - Copy Web seed URL - Salin URL semai Sesawang + Salin URL semai Sesawang - Edit Web seed URL - Sunting URL semai Sesawang + Sunting URL semai Sesawang - + Filter files... Tapis fail... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - Semai URL baharu + Semai URL baharu - New URL seed: - Semai URL baharu: + Semai URL baharu: - - This URL seed is already in the list. - Semaian URL ini sudah ada dalam senarai. + Semaian URL ini sudah ada dalam senarai. - + Web seed editing Penyuntingan semaian Sesawang - + Web seed URL: URL semaian Sesawang: @@ -8287,22 +8748,22 @@ Pemalam tersebut telah dilumpuhkan. Tidak dapat simpan data Auto-Pemuat Turun dalam %1. Ralat: %2 - + Invalid data format Format data tidak sah - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Tidak dapat memuatkan peraturan Auto-Pemuat Turun RSS. Sebab: %1 @@ -8310,22 +8771,22 @@ Pemalam tersebut telah dilumpuhkan. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Gagal memuat turun suapan RSS pada '%1', sebab: %2. - + RSS feed at '%1' updated. Added %2 new articles. Suapan RSS pada '%1' dikemaskinikan. %2 artikel baharu ditambah. - + Failed to parse RSS feed at '%1'. Reason: %2 Gagal menghurai suapan RSS pada '%1', sebab: %2. - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Suapan RSS pada '%1' berjaya dimuat turun. Mula menghurainya. @@ -8361,12 +8822,12 @@ Pemalam tersebut telah dilumpuhkan. RSS::Private::Parser - + Invalid RSS feed. Suapan RSS tidak sah. - + %1 (line: %2, column: %3, offset: %4). %1 (baris: %2, lajur: %3, ofset: %4). @@ -8374,99 +8835,99 @@ Pemalam tersebut telah dilumpuhkan. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. Suapan RSS dengan URL diberi sudah wujud: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. Tidak dapat alih folder root. - - + + Item doesn't exist: %1. Item tidak wujud: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. Tidak dapat padam folder root. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Laluan Item RSS salah: %1. - + RSS item with given path already exists: %1. Suapan RSS dengan URL diberi sudah wujud: %1. - + Parent folder doesn't exist: %1. Folder induk tidak wujud: %1. @@ -8490,8 +8951,8 @@ Pemalam tersebut telah dilumpuhkan. - - + + Mark items read Tanda item telah dibaca @@ -8516,132 +8977,132 @@ Pemalam tersebut telah dilumpuhkan. Torrent: (dwi-klik untuk muat turun) - - + + Delete Padam - + Rename... Nama semula... - + Rename Nama semula - - + + Update Kemaskini - + New subscription... Langganan baharu... - - + + Update all feeds Kemaskini semua suapan - + Download torrent Muat turun torrent - + Open news URL Buka URL berita - + Copy feed URL Salin URL suapan - + New folder... Folder baharu... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Sila pilih satu nama folder - + Folder name: Nama folder: - + New folder Folder baharu - - + + Please type a RSS feed URL Sila taip satu URL suapan RSS. - - + + Feed URL: URL Suapan: - + Deletion confirmation Pengesahan pemadaman - + Are you sure you want to delete the selected RSS feeds? Anda pasti mahu memadam suapan RSS terpilih? - + Please choose a new name for this RSS feed Sila pilih satu nama baharu untuk suapan RSS ini - + New feed name: Nama suapan baharu: - + Rename failed Nama semula gagal - + Date: Tarikh: - + Feed: - + Author: Pengarang: @@ -8649,38 +9110,38 @@ Pemalam tersebut telah dilumpuhkan. SearchController - + Python must be installed to use the Search Engine. Python mesti dipasang supaya dapat guna Enjin Gelintar. - + Unable to create more than %1 concurrent searches. Tidak boleh mencipta lebih dari %1 penggelintaran berturutan. - - + + Offset is out of range Ofset diluar julat - + All plugins are already up to date. Semua pemalam sudah pun dikemaskinikan. - + Updating %1 plugins Mengemaskini %1 pemalam - + Updating plugin %1 Mengemaskini pemalam %1 - + Failed to check for plugin updates: %1 Gagal memeriksa kemaskini pemalam: %1 @@ -8755,132 +9216,146 @@ Pemalam tersebut telah dilumpuhkan. Saiz: - + Name i.e: file name Nama - + Size i.e: file size Saiz - + Seeders i.e: Number of full sources Penyemai - + Leechers i.e: Number of partial sources Penyedut - Search engine - Enjin gelintar + Enjin gelintar - + Filter search results... Tapis keputusan gelintar... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Keputusan (menunjukkan <i>%1</i> dari <i>%2</i>): - + Torrent names only Nama torrent sahaja - + Everywhere Di mana sahaja - + Use regular expressions Guna ungkapan nalar - + Open download window - + Download Muat turun - + Open description page Buka halaman keterangan - + Copy Salin - + Name Nama - + Download link Pautan muat turun - + Description page URL URL halaman keterangan - + Searching... Menggelintar... - + Search has finished Gelintar selesai - + Search aborted Gelintar dihenti paksa - + An error occurred during search... Satu ralat berlaku ketika menggelintar... - + Search returned no results Gelintar tidak kembalikan keputusan - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Ketampakan lajur - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8888,104 +9363,104 @@ Pemalam tersebut telah dilumpuhkan. SearchPluginManager - + Unknown search engine plugin file format. Format fail pemalam enjin gelintar tidak diketahui. - + Plugin already at version %1, which is greater than %2 Pemalam sudah pun dalam versi %1, yang mana lebih baharu daripada %2 - + A more recent version of this plugin is already installed. Versi terkini pemalam ini sudah pun dipasang. - + Plugin %1 is not supported. Pemalam %1 tidak disokong - - + + Plugin is not supported. Pemalam tidak disokong. - + Plugin %1 has been successfully updated. Pemalam %1 berjaya dikemaskinikan. - + All categories Semua kategori - + Movies Cereka - + TV shows Rancangan TV - + Music Muzik - + Games Permainan - + Anime Anime - + Software Perisian - + Pictures Gambar - + Books Buku - + Update server is temporarily unavailable. %1 Pelayan kemaskini buat masa ini tidak tersedia. %1 - - + + Failed to download the plugin file. %1 Gagal memuat turun fail pemalam. %1 - + Plugin "%1" is outdated, updating to version %2 Pemalam "%1" sudah lapuk, mengemaskini ke versi %2 - + Incorrect update info received for %1 out of %2 plugins. Maklumat kemaskini tidak betul diterima %1 dari %2 pemalam. - + Search plugin '%1' contains invalid version string ('%2') Pemalam gelintar '%1' mengandungi rentetan versi tidak sah ('%2') @@ -8995,114 +9470,153 @@ Pemalam tersebut telah dilumpuhkan. - - - - Search Gelintar - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Tiada mana-mana pelama gelintar dipasang. Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap untuk pasangkannya. - + Search plugins... Gelintar pemalam... - + A phrase to search for. Satu frasa untuk digelintarkan. - + Spaces in a search term may be protected by double quotes. Jarak dalam terma gelintar dilindungi dengan tanda petikan ganda dua. - + Example: Search phrase example Contoh: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> - + All plugins Semua pemalam - + Only enabled Hanya dibenarkan - + + + Invalid data format. + Format data tidak sah. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> - + + Refresh + + + + Close tab - + Close all tabs - + Select... Pilih... - - - + + Search Engine Enjin Gelintar - + + Please install Python to use the Search Engine. Sila pasang Python untuk guna Enjin Gelintar. - + Empty search pattern Kosongkan pola gelintar - + Please type a search pattern first Sila taip satu pola gelintar dahulu - + + Stop Henti - Search has finished - Gelintar selesai + Gelintar selesai - Search has failed - Gelintar telah gagal + Gelintar telah gagal + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9215,34 +9729,34 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un - + Upload: Muat naik: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Muat Turun: - + Alternative speed limits Had kelajuan alternatif @@ -9340,7 +9854,7 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un 3 Hours - 24 Jam {3 ?} + @@ -9434,32 +9948,32 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un Masa purata dalam baris gilir: - + Connected peers: Rakan bersambung: - + All-time share ratio: Nisbah kongsi sepanjang-masa: - + All-time download: Muat turun sepanjang-masa: - + Session waste: Sisa sesi: - + All-time upload: Muat naik sepanjang-masa - + Total buffer size: Jumlah saiz penimbal: @@ -9474,12 +9988,12 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un Kerja I/O dibaris gilir: - + Write cache overload: Beban lampau cache tulis: - + Read cache overload: Beban lampau cache tulis: @@ -9498,51 +10012,67 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un StatusBar - + Connection status: Status sambungan: - - + + No direct connections. This may indicate network configuration problems. Tiada sambungan terus. Ini menunjukkan masalah konfigurasi rangkaian. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nod - + qBittorrent needs to be restarted! qBittorrent perlu dimulakan semula! - - - + + + Connection Status: Status Sambungan: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Luar talian. Ia bermaksud qBittorrent gagal mendengar port terpilih bagi sambungan masuk. - + Online Atas-Talian - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klik untuk tukar ke had kelajuan alternatif - + Click to switch to regular speed limits Klik untuk tukar ke had kelajuan biasa @@ -9571,14 +10101,22 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un Selesai (0) - Resumed (0) - Disambung Semula (0) + Disambung Semula (0) - Paused (0) - Dijeda (0) + Dijeda (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9640,10 +10178,29 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un Completed (%1) Selesai (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Dijeda (%1) + Dijeda (%1) @@ -9651,14 +10208,12 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un - Resume torrents - Sambung semula torrent + Sambung semula torrent - Pause torrents - Jeda torrent + Jeda torrent @@ -9666,9 +10221,8 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un - Resumed (%1) - Disambung Semula (%1) + Disambung Semula (%1) @@ -9709,17 +10263,17 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un TagFilterModel - + Tags Tag - + All Semua - + Untagged Tanpa Tag @@ -9727,52 +10281,64 @@ Klik butang "Gelintar pemalam..." di bahagian bawah kanan tetingkap un TagFilterWidget - + Add tag... Tambah tag... - + Remove tag Buang tag - + Remove unused tags Buang tag yang tidak digunakan - Resume torrents - Sambung semula torrent + Sambung semula torrent - Pause torrents - Jeda torrent + Jeda torrent - + Remove torrents - New Tag - Tag Baharu + Tag Baharu + + + + Start torrents + - + + Stop torrents + + + + Tag: Tag: - + + Add tag + + + + Invalid tag name Nama tag tidak sah - + Tag name '%1' is invalid Nama tag '%1' tidak sah @@ -9912,32 +10478,32 @@ Sila pilih nama lain dan cuba sekali lagi. TorrentContentModel - + Name Nama - + Progress Kemajuan - + Download Priority Keutamaan Muat Turun - + Remaining Berbaki - + Availability Ketersediaan - + Total Size Jumlah Saiz @@ -9982,102 +10548,120 @@ Sila pilih nama lain dan cuba sekali lagi. TorrentContentWidget - + Rename error Ralat nama semula - + Renaming Penamaan semula - + New name: Nama baharu: - + Column visibility Ketampakan lajur - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Buka - + Open containing folder - + Rename... Nama Semula... - + Priority Keutamaan - - + + Do not download Jangan muat turun - + Normal Biasa - + High Tinggi - + Maximum Maksimum - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10102,13 +10686,13 @@ Sila pilih nama lain dan cuba sekali lagi. - + Select file Pilih fail - + Select folder Pilih folder @@ -10133,58 +10717,10 @@ Sila pilih nama lain dan cuba sekali lagi. Saiz cebisan: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10231,92 +10767,83 @@ Sila pilih nama lain dan cuba sekali lagi. Medan - + You can separate tracker tiers / groups with an empty line. Anda boleh asingkan kumpulan / tier penjejak dengan baris kosong. - + Web seed URLs: URL semaian Sesawang: - + Tracker URLs: URL penjejak: - + Comments: Ulasan: - + Source: Sumber: - + Progress: Kemajuan: - + Create Torrent Cipta Torrent - - + + Torrent creation failed Penciptaan Torrent gagal - + Reason: Path to file/folder is not readable. Sebab: Laluan ke fail/folder tidak boleh dibaca. - + Select where to save the new torrent Pilih sama ada hendak menyimpan torrent baharu - + Torrent Files (*.torrent) Fail Torrent (*.torrent) - - Reason: %1 - Sebab: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - Sebab: Torrent yang dicipta tidak sah. Ia tidak akan ditambah ke dalam senarai muat turun. - - - + Torrent creator Pencipta Torrent - + Torrent created: Torrent dicipta: @@ -10324,32 +10851,32 @@ Sila pilih nama lain dan cuba sekali lagi. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10357,27 +10884,27 @@ Sila pilih nama lain dan cuba sekali lagi. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10385,14 +10912,8 @@ Sila pilih nama lain dan cuba sekali lagi. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Data meta tidak sah + Data meta tidak sah @@ -10423,127 +10944,187 @@ Sila pilih nama lain dan cuba sekali lagi. - + Category: Kategori: - - Torrent speed limits + + Torrent Share Limits - + Download: Muat Turun: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits - + Upload: Muat naik: - - Torrent share limits - - - - Use global share limit - Guna had kongsi sejagat + Guna had kongsi sejagat - Set no share limit - Tetapkan had tanpa kongsi + Tetapkan had tanpa kongsi - Set share limit to - Tetapkan had kongsi sehingga + Tetapkan had kongsi sehingga - ratio - nisbah + nisbah - - total minutes - - - - - inactive minutes - - - - + Disable DHT for this torrent - + Download in sequential order Muat turun dalam tertib berjujukan - + Disable PeX for this torrent - + Download first and last pieces first Muat turn cebisan pertama dan terakhir dahulu - + Disable LSD for this torrent - + Currently used categories - - + + Choose save path Pilih laluan simpan - + Not applicable to private torrents - No share limit method selected - Tiada kaedah had kongsi terpilih + Tiada kaedah had kongsi terpilih - Please select a limit method first - Sila pilih satu kaedah had dahulu + Sila pilih satu kaedah had dahulu + + + + TorrentShareLimitsWidget + + + + + + Default + Lalai + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Buang torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Benarkan super penyemaian untuk torrent + + + + Ratio: + @@ -10554,32 +11135,36 @@ Sila pilih nama lain dan cuba sekali lagi. - New Tag - Tag Baharu + Tag Baharu + Add tag + + + + Tag: Tag: - + Invalid tag name Nama tag tidak sah - + Tag name '%1' is invalid. - + Tag exists Tag wujud - + Tag name already exists. Nama tag sudah wujud. @@ -10587,115 +11172,130 @@ Sila pilih nama lain dan cuba sekali lagi. TorrentsController - + Error: '%1' is not a valid torrent file. Ralat: '%1' bukanlah fail torrent yang sah. - + Priority must be an integer Prioriti mestilah integer - + Priority is not valid Prioriti tidak sah - + Torrent's metadata has not yet downloaded Data meta torrent belum lagi dimuat turun - + File IDs must be integers ID fail mestilah integer - + File ID is not valid ID fail tidak sah - - - - + + + + Torrent queueing must be enabled Pembarisan gilir torrent mesti dibenarkan - - + + Save path cannot be empty Laluan simpan tidak boleh kosong - - + + Cannot create target directory - - + + Category cannot be empty Kategori tidak boleh kosong - + Unable to create category Tidak boleh cipta kategori - + Unable to edit category Tidak boleh sunting kategori - + Unable to export torrent file. Error: %1 - + Cannot make save path Tidak dapat buat laluan simpan - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Tidak dapat tulis ke direktori - + WebUI Set location: moving "%1", from "%2" to "%3" Lokasi Tetap WebUI: mengalih "%1", dari "%2" ke "%3" - + Incorrect torrent name Nama torrent salah - - + + Incorrect category name Nama kategori salah @@ -10726,249 +11326,191 @@ Sila pilih nama lain dan cuba sekali lagi. TrackerListModel - - + Working - Berfungsi + Berusaha - + Disabled - Dilumpuhkan + Dilumpuhkan - + Disabled for this torrent - + This torrent is private - Torrent ini adalah persendirian + Torrent ini adalah persendirian - + N/A - T/A + T/A - + Updating... - Mengemaskini... + Mengemaskini... - + Not working - Tidak berfungsi + Tidak berfungsi - + Tracker error - + Unreachable - + Not contacted yet - Belum dihubungi lagi + Belum dihubungi lagi - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Peringkat + + BT Protocol + - - Protocol + + Next Announce - - Status - Status + + Min Announce + + + + + Tier + Peringkat - Peers - Rakan + Status + Status - Seeds - + Peers + Rakan - Leeches - Penyedut + Seeds + Semai - Times Downloaded - + Leeches + Sedut - Message - Mesej - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + Mesej TrackerListWidget - Working - Berfungsi - - - Disabled - Dilumpuhkan - - - + This torrent is private Torrent ini adalah persendirian - Updating... - Mengemaskini... - - - Not working - Tidak berfungsi - - - Not contacted yet - Belum dihubungi lagi - - - N/A - T/A - - - + Tracker editing Penyuntingan penjejak - + Tracker URL: URL penjejak: - - + + Tracker editing failed Penyuntingan penjejak gagal - + The tracker URL entered is invalid. URL penjejak yang dimasukkan tidak sah. - + The tracker URL already exists. URL penjejak sudah wujud. - + Edit tracker URL... Sunting URL penjejak... - + Remove tracker Buang penjejak - + Copy tracker URL Salin URL penjejak - + Force reannounce to selected trackers Paksa umum semula pada penjejak terpilih - + Force reannounce to all trackers Paksa umum semula pada semua penjejak - Tier - Peringkat - - - URL - URL - - - Status - Status - - - Seeds - Semai - - - + Resize columns - + Resize all non-hidden columns to the size of their contents - Peers - Rakan - - - + Add trackers... - Leeches - Penyedut - - - Message - Mesej - - - + Column visibility Ketampakan lajur @@ -10986,37 +11528,37 @@ Sila pilih nama lain dan cuba sekali lagi. Senarai penjejak yang ditambahkan (satu per baris): - + µTorrent compatible list URL: URL senarai keserasian µTorrent: - + Download trackers list - + Add Tambah - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11024,83 +11566,70 @@ Sila pilih nama lain dan cuba sekali lagi. TrackersFilterWidget - All (0) - this is for the tracker filter - Semua (0) - - - Trackerless (0) - Tanpa Penjejak (0) - - - Error (0) - Ralat (0) - - - Warning (0) - Amaran (0) - - - Error (%1) - Ralat (%1) - - - + Warning (%1) Amaran (%1) - + Trackerless (%1) Tanpa Penjejak (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - Buang penjejak + Buang penjejak + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Sambung semula torrent + Sambung semula torrent - Pause torrents - Jeda torrent + Jeda torrent - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Semua (%1) @@ -11109,7 +11638,7 @@ Sila pilih nama lain dan cuba sekali lagi. TransferController - + 'mode': invalid argument @@ -11202,9 +11731,8 @@ Sila pilih nama lain dan cuba sekali lagi. Menyemak data sambung semula - Paused - Dijeda + Dijeda @@ -11229,220 +11757,262 @@ Sila pilih nama lain dan cuba sekali lagi. Dengan ralat - + Name i.e: torrent name Nama - + Size i.e: torrent size Saiz - + Progress % Done Kemajuan - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Semaian - + Peers i.e. partial sources (often untranslated) Rakan - + Down Speed i.e: Download speed Kelajuan Turun - + Up Speed i.e: Upload speed Kelajuan Naik - + Ratio Share ratio Nibah - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category Kategori - + Tags Tag: - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Ditambah Pada - + Completed On Torrent was completed on 01/01/2010 08:00 Selesai Pada - + Tracker Penjejak - + Down Limit i.e: Download limit Had Turun - + Up Limit i.e: Upload limit Had Naik - + Downloaded Amount of data downloaded (e.g. in MB) Dimuat turun - + Uploaded Amount of data uploaded (e.g. in MB) Dimuat Naik - + Session Download Amount of data downloaded since program open (e.g. in MB) Sesi Muat Turun - + Session Upload Amount of data uploaded since program open (e.g. in MB) Sesi Muat Naik - + Remaining Amount of data left to download (e.g. in MB) Berbaki - + + Time Active + Time (duration) the torrent is active (not stopped) + Masa Aktif + + + + Yes + Ya + + + + No + Tidak + + Time Active Time (duration) the torrent is active (not paused) - Masa Aktif + Masa Aktif - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Selesai - + Ratio Limit Upload share ratio limit Had Nisbah - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Terakhir Dilihat Selesai - + Last Activity Time passed since a chunk was downloaded/uploaded Aktiviti Terakhir - + Total Size i.e. Size including unwanted data Jumlah Saiz - + Availability The number of distributed copies of the torrent Ketersediaan - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A T/A - + %1 ago e.g.: 1h 20m ago %1 yang lalu - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (disemai untuk %2) @@ -11451,334 +12021,333 @@ Sila pilih nama lain dan cuba sekali lagi. TransferListWidget - + Column visibility Ketampakan lajur - + Recheck confirmation Pengesahan semak semula - + Are you sure you want to recheck the selected torrent(s)? Anda pasti mahu menyemak semula torrent(s) terpilih? - + Rename Nama semula - + New name: Nama baharu: - + Choose save path Pilih laluan simpan - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview Tidak boleh pratonton - + The selected torrent "%1" does not contain previewable files Torrent terpilih "%1" tidak mengandungi fail-fail boleh pratonton - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - Tambah Tag + Tambah Tag - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags Buang Semua Tag - + Remove all tags from selected torrents? Buang semua tag dari torrent terpilih? - + Comma-separated tags: Tag dipisah-tanda-koma: - + Invalid tag Tag tidak sah - + Tag name: '%1' is invalid Nama tag: '%1' tidak sah - &Resume Resume/start the torrent - Sa&mbung Semula + Sa&mbung Semula - &Pause Pause the torrent - &Jeda - - - - Force Resu&me - Force Resume/start the torrent - + &Jeda - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Muat turun dalam tertib berjujukan - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first Muat turn cebisan pertama dan terakhir dahulu - + Automatic Torrent Management Pengurusan Torrent Automatik - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Mod automatik bermaksud pelbagai sifat torrent (seperti laluan simpan) akan ditentukan oleh kategori berkaitan - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Mod penyemaian super @@ -11823,28 +12392,28 @@ Sila pilih nama lain dan cuba sekali lagi. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11852,7 +12421,12 @@ Sila pilih nama lain dan cuba sekali lagi. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Gagal memuatkan tema UI dari fail: "%1" @@ -11883,34 +12457,27 @@ Sila pilih nama lain dan cuba sekali lagi. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Pemindahan keutamaan gagal: https UI Sesawang, fail: "%1", ralat: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Pemindahan keutamaan: https data dieksport ke fail: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python dikesan, nama bolehlaku: '%1', versi: %2 - - - Python not detected - Python tidak dikesan - Found Python executable. Name: "%1". Version: "%2" @@ -11945,27 +12512,27 @@ Sila pilih nama lain dan cuba sekali lagi. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12029,72 +12596,72 @@ Sila pilih nama lain dan cuba sekali lagi. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Jenis fail tidak diterima, hanya fail biasa dibenarkan. - + Symlinks inside alternative UI folder are forbidden. Pautan simbolik di dalam folder UI alternatif adalah dilarang. - - Using built-in Web UI. - Menggunakan UI Sesawang terbina-dalam. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Menggunakan UI Sesawang suai. Lokasi: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Terjemahan UI Sesawang untuk lokal terpilih (%1) berjaya dimuatkan. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Tidak dapat memuatkan terjemahan UI Sesawang untuk lokal terpilih (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" Tanda pemisah ':' hilang dalam pengepala HTTP suai WebUI: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' UISesawang: Pengepala asal & asal sasaran tidak sepadan! IP Sumber: '%1'. Pengepala asal: '%2'. Sasaran asal: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' UISesawang: Pengepala rujukan & asal sasaran tidak sepadan! IP Sumber: '%1'. Pengepala rujukan: '%2'. Sasaran asal: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' UISesawang: Pengepala Hos tidak sah, port tidak sepadan. IP sumber permintaan: '%1'. Port pelayan: '%2'. Pengepala Hos diterima: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' UISesawang: Pengepala Hos tidak sah. IP sumber permintaan: '%1'. Pengepala Hos diterima: '%2' @@ -12102,143 +12669,136 @@ Sila pilih nama lain dan cuba sekali lagi. WebUI - - Web UI: HTTPS setup successful - UI Sesawang: Persediaan HTPPS berjaya + + Credentials are not set + - - Web UI: HTTPS setup failed, fallback to HTTP - UI Sesawang: Persediaan HTTPS gagal, jatuh balik ke HTTP + + WebUI: HTTPS setup successful + - - Web UI: Now listening on IP: %1, port: %2 - UI Sesawang: Kini mendengar pada IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - UI Sesawang: Tidak boleh ikat ke IP: %1, port %2. Sebab: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + + fs + + + Unknown error + Ralat tidak diketahui misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1j %2m + %1j %2m - + %1d %2h e.g: 2 days 10 hours - %1h %2j + %1h %2j - + %1y %2d e.g: 2 years 10 days - %1t %2h + %1t %2h - %1h %2m - e.g: 3hours 5minutes - %1j %2m - - - %1d %2h - e.g: 2days 10hours - %1h %2j - - - %1y %2d - e.g: 2years 10days - %1t %2h - - - - + + Unknown Unknown (size) Tidak diketahui - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent akan matikan komputer sekarang kerana semua muat turun telah selesai. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_nb.ts b/src/lang/qbittorrent_nb.ts index de6aa0245430..cd70913fe059 100644 --- a/src/lang/qbittorrent_nb.ts +++ b/src/lang/qbittorrent_nb.ts @@ -14,77 +14,77 @@ Om - + Authors Opphavspersoner - + Current maintainer Nåværende vedlikeholder - + Greece Hellas - - + + Nationality: Nasjonalitet: - - + + E-mail: E-post: - - + + Name: Navn: - + Original author Opprinnelig opphavsperson - + France Frankrike - + Special Thanks Spesiell takk til - + Translators Oversettere - + License Lisens - + Software Used Programvare som er brukt - + qBittorrent was built with the following libraries: qBittorrent ble bygd med følgende biblioteker: - + Copy to clipboard - + Kopier til utklippstavla @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Opphavsrett %1 2006-2023 qBittorrent-prosjektet + Copyright %1 2006-2024 The qBittorrent project + Opphavsrett %1 2006-2024 qBittorrent-prosjektet @@ -166,14 +166,13 @@ Lagre i - + Never show again Aldri vis igjen - Torrent settings - Torrentinnstillinger + Torrentinnstillinger @@ -191,12 +190,12 @@ Start torrent - + Torrent information Informasjon om torrent - + Skip hash check Hopp over sjekksummering @@ -205,6 +204,11 @@ Use another path for incomplete torrent Bruk en annen sti for ufullstendig torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Stopp-betingelse: - - + + None Ingen - - + + Metadata received Metadata mottatt - - + + Torrents that have metadata initially will be added as stopped. + Torrenter som har metadata innledningsvis vil legges til som stoppet. + + + + Files checked Filer er kontrollert - + Add to top of queue Legg øverst i køen - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Forhindrer sletting av .torrent-filen uavhenging av innstillinger på siden 'Nedlastinger', under 'Alternativer' - + Content layout: Innholdsoppsett: - + Original Opprinnelig - + Create subfolder Opprett undermappe - + Don't create subfolder Ikke opprett undermappe - + Info hash v1: Info-hash v1: - + Size: Størrelse: - + Comment: Kommentar: - + Date: Dato: @@ -324,245 +333,182 @@ Husk senest brukte lagringssti - + Do not delete .torrent file Ikke slett .torrent-filen - + Download in sequential order Last ned i rekkefølge - + Download first and last pieces first Last ned første og siste delene først - + Info hash v2: Info-hash v2: - + Select All Velg alle - + Select None Fravelg alle - + Save as .torrent file... Lagre som .torrent-fil … - + I/O Error Inn/ut-datafeil - Invalid torrent - Ugyldig torrent - - - + Not Available This comment is unavailable Ikke tilgjengelig - + Not Available This date is unavailable Ikke tilgjengelig - + Not available Ikke tilgjengelig - Invalid magnet link - Ugyldig magnetlenke - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Mislyktes i å laste inn torrenten: %1. -Feil: %2 - - - This magnet link was not recognized - Denne magnetlenken ble ikke gjenkjent - - - + Magnet link Magnetlenke - + Retrieving metadata... Henter metadata … - - + + Choose save path Velg lagringsmappe - Torrent is already present - Torrenten er allerede til stede - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - «%1»-torrenten er allerede i overføringslisten. Sporere har ikke blitt slått sammen fordi det er en privat torrent. - - - Torrent is already queued for processing. - Torrent er allerede i kø for behandling. - - - + No stop condition is set. Ingen stopp-betingelse er valgt. - + Torrent will stop after metadata is received. Torrent vil stoppe etter at metadata er mottatt. - - Torrents that have metadata initially aren't affected. - Torrenter som har metadata innledningsvis påvirkes ikke. - - - + Torrent will stop after files are initially checked. Torrent vil stoppe etter innledende kontroll. - + This will also download metadata if it wasn't there initially. Dette vil også laste ned metadata som ikke ble mottatt i begynnelsen. - - + + N/A I/T - Magnet link is already queued for processing. - Magnetlenken er allerede i kø for behandling. - - - + %1 (Free space on disk: %2) %1 (Ledig diskplass: %2) - + Not available This size is unavailable. Ikke tilgjengelig - + Torrent file (*%1) Torrentfil (*%1) - + Save as torrent file Lagre som torrentfil - + Couldn't export torrent metadata file '%1'. Reason: %2. Klarte ikke eksportere fil med torrent-metadata «%1» fordi: %2. - + Cannot create v2 torrent until its data is fully downloaded. Kan ikke lage v2-torrent før dens data er fullstendig nedlastet. - Cannot download '%1': %2 - Kan ikke laste ned «%1»: %2 - - - + Filter files... Filtrer filer … - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - «%1»-torrenten er allerede i overføringslisten. Sporere har ikke blitt slått sammen fordi det er en privat torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - «%1»-torrenten er allerede i overføringslisten. Vil du slå sammen sporere fra den nye kilden? - - - + Parsing metadata... Analyserer metadata … - + Metadata retrieval complete Fullførte henting av metadata - - Failed to load from URL: %1. -Error: %2 - Klarte ikke laste fra URL: %1. -Feil: %2 - - - Download Error - Nedlastingsfeil - AddTorrentManager Downloading torrent... Source: "%1" - + Laster ned torrent … Kilde: «%1» Failed to add torrent. Source: "%1". Reason: "%2" - + Klarte ikke legge til torrent. Kilde: «%1». Årsak: «%2» - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Oppdaget et forsøk på å legge til duplisert torrent. Kilde: %1. Eksisterende torrent: %2. Resultat: %3 - + Merging of trackers is disabled - + Sammenslåing av sporere er avslått - + Trackers cannot be merged because it is a private torrent - + Kan ikke slå sammen sporere fordi det er en privat torrent - + Trackers are merged from new source - + Sporere slås sammen fra ny kilde @@ -648,72 +594,77 @@ Feil: %2 Hopp over sjekksummering - - - Choose save path - Velg lagringssti + + Torrent share limits + Delingsgrenser for torrent - - - - - - - Default - Forvalgt + + + Choose save path + Velg lagringssti + + + - Yes - Ja + Default + Forvalgt + Yes + Ja + + + + + No Nei - + Manual Manuell - + Automatic Automatisk - + Original Opprinnelig - + Create subfolder Lag undermappe - + Don't create subfolder Ikke lag undermappe - + None Ingen - + Metadata received Metadata mottatt - + Files checked Filer er kontrollert @@ -721,734 +672,852 @@ Feil: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Gjennomsjekk torrenter på nytt ved fullførelse - - + + ms milliseconds ms - + Setting Innstilling - + Value Value set for this setting Verdi - + (disabled) (slått av) - + (auto) (auto) - + + min minutes min - + All addresses Alle adresser - + qBittorrent Section qBittorrent-seksjon - - + + Open documentation Åpne dokumentasjon - + All IPv4 addresses Alle IPv4-adresser - + All IPv6 addresses Alle IPv6-adresser - + libtorrent Section libtorrent-seksjon - + Fastresume files Filer for rask gjenopptakelse - + SQLite database (experimental) SQLite-database (eksperimentell) - + Resume data storage type (requires restart) Lagringstype for gjenopptakelse (krever omstart) - + Normal Normal - + Below normal Under normal - + Medium Medium - + Low Lav - + Very low Veldig lav - - Process memory priority (Windows >= 8 only) - Prosessens minneprioritet (kun Windows >= 8) - - - + Physical memory (RAM) usage limit Grense for bruk av fysisk minne (RAM) - + Asynchronous I/O threads Usynkrone I/O-tråder - + Hashing threads Hasher tråder - + File pool size Filforrådets størrelse - + Outstanding memory when checking torrents Grense for minnebruk ved kontroll av torrenter - + Disk cache Disk-hurtiglager - - - - + + + + s seconds sek - + Disk cache expiry interval Utløpsintervall for hurtiglager på disk - + Disk queue size Køstørrelse på disk - - + + Enable OS cache Aktiver OS-hurtiglager - + Coalesce reads & writes Bland sammen lesinger og skrivinger - + Use piece extent affinity La likemenn foretrekke nærliggende deler - + Send upload piece suggestions Send forslag om opplastingsdeler - - - - + + + + + 0 (disabled) 0 (slått av) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Intervall for lagring av gjenopptakelsesdata [0: slått av] - + Outgoing ports (Min) [0: disabled] Utgående porter (Min) [0: slått av] - + Outgoing ports (Max) [0: disabled] Utgående porter (Maks) [0: slått av] - + 0 (permanent lease) 0 (fast adresse) - + UPnP lease duration [0: permanent lease] UPnP-adressens varighet [0: Fast adresse] - + Stop tracker timeout [0: disabled] Tidsavbrudd for sporers stopp-hendelse [0: slått av] - + Notification timeout [0: infinite, -1: system default] Tidsavbrudd for varsling [0: uendelig, -1: systemets standardverdi] - + Maximum outstanding requests to a single peer Største antall utestående forespørsler hos én likemann - - - - - + + + + + KiB KiB - + (infinite) (uendelig) - + (system default) (systemets standardverdi) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Dette alternativet har mindre effekt på Linux - + + Process memory priority + Prosessens minneprioritet + + + Bdecode depth limit Dybdegrense for bdecode - + Bdecode token limit Tokengrense for bdecode - + Default Forvalgt - + Memory mapped files Minneavbildede filer - + POSIX-compliant Iht. POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Type disk-IU (krever omstart) - - + + Disable OS cache Slå av OS-hurtiglager - + Disk IO read mode Lesemodus for disk-I/U - + Write-through Skriv-gjennom - + Disk IO write mode Lesemodus for disk-I/U - + Send buffer watermark Send mellomlagringsvannmerke - + Send buffer low watermark Send lavt mellomlager-vannmerke - + Send buffer watermark factor Send mellomlagringsvannmerkefaktor - + Outgoing connections per second Utgående tilkoblinger per sekund - - + + 0 (system default) 0 (systemets standardverdi) - + Socket send buffer size [0: system default] Bufferstørrelse for sending over socket [0: systemets standardverdi] - + Socket receive buffer size [0: system default] Bufferstørrelse for mottak over socket [0: systemets standardverdi] - + Socket backlog size Socket-køens størrelse - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Grense for .torrent-filens størrelse - + Type of service (ToS) for connections to peers Tjenestetype (ToS) for tilkobling til likemenn - + Prefer TCP Foretrekk TCP - + Peer proportional (throttles TCP) Likemannsproporsjonalitet (Setter flaskehals på TCPen) - + Support internationalized domain name (IDN) Støtte for internasjonale domenenavn (IDN) - + Allow multiple connections from the same IP address Tillat flere tilkoblinger fra samme IP-adresse - + Validate HTTPS tracker certificates Valider sertifikat til HTTPS-sporer - + Server-side request forgery (SSRF) mitigation Forebygging av forfalskede forespørsler på tjenersiden (SSRF) - + Disallow connection to peers on privileged ports Ikke tillat tilkobling til likemenn på priviligerte porter - + + It appends the text to the window title to help distinguish qBittorent instances + Legger til teksten i vindustittelen for å skille ulike qBittorrent-vinduer + + + + Customize application instance name + Tilpass vindusnavn + + + It controls the internal state update interval which in turn will affect UI updates Styrer internt oppdateringsintervall for status, som igjen påvirker oppdatering av brukergrensesnitt - + Refresh interval Oppdateringsintervall - + Resolve peer host names Finn frem til vertsnavn for likemenn - + IP address reported to trackers (requires restart) IP-adressen som skal rapporteres til sporere (krever omstart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Reannonser til alle sporerne når IP eller port endres - + Enable icons in menus Slå på ikoner i menyer - + Enable port forwarding for embedded tracker Slå på portviderekobling for innebygd sporer - - (Auto detect if empty) + + Enable quarantine for downloaded files + Slå på karantene for nedlastede filer + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Slå på MOTW (internett-markør) for nedlastede filer + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Gjenkjenn automatisk hvis tom) + + + Python executable path (may require restart) + Sti til python-fortolker (krever omstart) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sek + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Bekreft fjerning av sporer fra alle torrenter + + + Peer turnover disconnect percentage Frakoblingsprosent for utskiftning av likemenn - + Peer turnover threshold percentage Terskelprosent for utskiftning av likemenn - + Peer turnover disconnect interval Frakoblingsintervall for utskiftning av likemenn - + Resets to default if empty - + Tilbakestill til standardverdi hvis tom - + DHT bootstrap nodes - + Startnoder for DHT - + I2P inbound quantity I2P inngående mengde - + I2P outbound quantity I2P utgående mengde - + I2P inbound length I2P inngående lengde - + I2P outbound length I2P utgående lengde - + Display notifications Vis varslinger - + Display notifications for added torrents Vis varslinger for tillagte torrenter - + Download tracker's favicon Last ned sporerens favikon - + Save path history length Antall lagringsstier som skal lagres - + Enable speed graphs Aktiver hastighetsgrafer - + Fixed slots Fastsatte plasser - + Upload rate based Opplastingsforholdsbasert - + Upload slots behavior Oppførsel for opplastingsplasser - + Round-robin Rundgang - + Fastest upload Raskeste opplasting - + Anti-leech Anti-snylting - + Upload choking algorithm Kvelningsalgoritme for opplastninger - + Confirm torrent recheck Bekreft ny gjennomsjekking av torrent - + Confirm removal of all tags Bekreft fjerning av alle etiketter - + Always announce to all trackers in a tier Alltid annonsér til alle sporere på ett nivå - + Always announce to all tiers Alltid annonsér til alle nivåer - + Any interface i.e. Any network interface Vilkårlig grensesnitt - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-algoritme for sammenblandet TCP-modus - + Resolve peer countries Finn fram til geografisk tilhørighet for likemenn - + Network interface Nettverksgrensesnitt - + Optional IP address to bind to Valgfri IP-adresse å tilknytte seg - + Max concurrent HTTP announces Største antall samtidige HTTP-annonseringer - + Enable embedded tracker Aktiver innebygd sporer - + Embedded tracker port Innebygd sporerport - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 startet + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Kjører i portabel modus. Fant profilmappe på: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Fant overflødig kommandolinjeflagg: «%1». Portabel modus innebærer relativ hurtiggjenopptakelse. - + Using config directory: %1 Bruker oppsettsmappe: %1 - + Torrent name: %1 Torrentnavn: %1 - + Torrent size: %1 Torrentstørrelse: %1 - + Save path: %1 Lagringssti: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrenten ble lastet ned på %1. - + + Thank you for using qBittorrent. Takk for at du bruker qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, sender e-postmerknad - + Add torrent failed - + Klarte ikke legge til torrent - + Couldn't add torrent '%1', reason: %2. - + Klarte ikke legge til torrent «%1» fordi %2. + + + + The WebUI administrator username is: %1 + Admin-brukernavnet for nettgrensesnittet er: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Admin-passord for nettgrensesnittet mangler. Her er et midlertidig passord for denne økta: %1 - + + You should set your own password in program preferences. + Velg ditt eget passord i programinnstillingene. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Webgrensesnittet er slått av. Rediger oppsettsfila manuelt for å slå på webgrensesnittet. - + Running external program. Torrent: "%1". Command: `%2` Kjører eksternt program. Torrent: «%1». Kommando: «%2» - + Failed to run external program. Torrent: "%1". Command: `%2` Klarte ikke kjøre eksternt program. Torrent: «%1». Kommando: «%2» - + Torrent "%1" has finished downloading Torrenten «%1» er ferdig nedlastet - + WebUI will be started shortly after internal preparations. Please wait... Webgrensesnittet vil startes snart etter interne forberedelser. Vennligst vent … - - + + Loading torrents... Laster torrenter … - + E&xit &Avslutt - + I/O Error i.e: Input/Output Error Inn/ut-datafeil - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Feil: %2 Årsak: %2 - Error - Feil - - - Failed to add torrent: %1 - Klarte ikke legge til torrent. Feil: «%1» - - - + Torrent added Torrent lagt til - + '%1' was added. e.g: xxx.avi was added. La til «%1». - + Download completed Nedlasting fullført - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - «%1» er ferdig nedlastet. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 kjører. Prosess-ID: %2 - URL download error - Nedlastingsfeil for URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Klarte ikke laste ned fil på nettadressen «%1» fordi: %2. + + Test email + - Torrent file association - Filtilknytning for torrenter + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + «%1» er ferdig nedlastet. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent er ikke forvalgt program for åpning av hverken torrentfiler eller magnetlenker. -Vil du tilknytte qBittorrent med disse? - - - + Information Informasjon - + To fix the error, you may need to edit the config file manually. - + For å fikse feilen må du kanskje redigere oppsettsfila manuelt. - + To control qBittorrent, access the WebUI at: %1 Bruk nettgrensesnittet for å styre qBittorrent: %1 - - The Web UI administrator username is: %1 - Nettbrukergrensesnittets administrator-brukernavn er: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Nettbrukergrensesnittets administrator-passord er fremdeles standardpassordet: %1 - - - - This is a security risk, please change your password in program preferences. - Dette er en sikkerhetsrisiko, vurder å endre passordet ditt i programinnstillingene. - - - Application failed to start. - Programmet kunne ikke starte. - - - + Exit Avslutt - + Recursive download confirmation - Rekursiv nedlastingsbekreftelse + Rekursiv nedlastingsbekreftelse - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrenten «%1» inneholder torrentfiler, vil du fortsette nedlastingen av dem? + Torrenten «%1» inneholder torrentfiler, vil du fortsette nedlastingen av dem? - + Never - Aldri + Aldri - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursiv nedlasting av .torrent-fil inni torrent. Kildetorrent: «%1». Fil: «%2» + Rekursiv nedlasting av .torrent-fil inni torrent. Kildetorrent: «%1». Fil: «%2» - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Klarte ikke å angi grense for bruk av fysisk minne (RAM). Feilkode: %1. Feilmelding: «%2» - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Klarte ikke angi grense for bruk av fysisk minne (RAM). Forespurt størrelse: %1. Systemets grense: %2. Feilkode: %3. Feilmelding: «%4» - + qBittorrent termination initiated avslutning av qBittorrent er igangsatt - + qBittorrent is shutting down... qBittorrent avslutter … - + Saving torrent progress... Lagrer torrent-framdrift … - + qBittorrent is now ready to exit qBittorrent er nå klar til avslutning @@ -1597,7 +1637,7 @@ Vil du tilknytte qBittorrent med disse? AsyncFileStorage - + Could not create directory '%1'. Klarte ikke opprette mappen «%1». @@ -1605,22 +1645,22 @@ Vil du tilknytte qBittorrent med disse? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI-innloggingsfeil. Årsak: IP-adressen har blitt bannlyst, IP: %1, brukernavn: %2 - + Your IP address has been banned after too many failed authentication attempts. Din IP-adresse er blitt bannlyst etter for mange mislykkede autentiseringsforsøk. - + WebAPI login success. IP: %1 WebAPI-påloggingen var vellykket. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI-innloggingsfeil. Årsak: Ugyldige brukerdetaljer, antall forsøk: %1, IP: %2, brukernavn: %3 @@ -1668,12 +1708,12 @@ Vil du tilknytte qBittorrent med disse? Prioritet: - + Must Not Contain: Kan ikke inneholde: - + Episode Filter: Episodefilter: @@ -1726,263 +1766,263 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor &Eksporter … - + Matches articles based on episode filter. Samsvarende artikler i henhold til episodefilter. - + Example: Eksempel: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match vil samsvare med 2, 5, de fra 8 til 15, 30, samt påfølgende episoder av sesong 1 - + Episode filter rules: Episodefiltreringsregler: - + Season number is a mandatory non-zero value Sesongnummeret er en påkrevd verdi som må være over null - + Filter must end with semicolon Filtre må avsluttes med semikolon - + Three range types for episodes are supported: Tre grupperingstyper for episoder er støttet: - + Single number: <b>1x25;</b> matches episode 25 of season one Enkeltnummer: <b>1x25;</b> samsvarer med episode 25 av sesong én - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normalgruppering: <b>1x25-40;</b> samsvarer med episode 25 til og med 40 av sesong én - + Episode number is a mandatory positive value Episodenummeret er en påkrevd verdi som må være over null - + Rules Regler - + Rules (legacy) Regler (foreldet) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Uendelig gruppering: <b>1x25-;</b> samsvarer med episode 25 og utover i sesong én og alle episoder i senere sesonger - + Last Match: %1 days ago Siste treff: %1 dager siden - + Last Match: Unknown Siste treff: Ukjent - + New rule name Navn på ny regel - + Please type the name of the new download rule. Skriv navnet på den nye nedlastingsregelen. - - + + Rule name conflict Regelnavnskonflikt - - + + A rule with this name already exists, please choose another name. En regel med dette navnet eksisterer allerede, velg et annet navn. - + Are you sure you want to remove the download rule named '%1'? Er du sikker på at du vil fjerne nedlastingsregelen som heter «%1»? - + Are you sure you want to remove the selected download rules? Er du sikker på at du vil fjerne de valgte nedlastingsreglene? - + Rule deletion confirmation Regelslettingsbekreftelse - + Invalid action Ugyldig handling - + The list is empty, there is nothing to export. Listen er tom, ingenting å eksportere. - + Export RSS rules Eksporter RSS-regler - + I/O Error Inn/ut-datafeil - + Failed to create the destination file. Reason: %1 Klarte ikke opprette målfilen. Årsak: %1 - + Import RSS rules Importer RSS-regler - + Failed to import the selected rules file. Reason: %1 Klarte ikke importere den valgte regelfilen. Årsak: %1 - + Add new rule... Legg til ny regel … - + Delete rule Slett regel - + Rename rule... Gi regel nytt navn … - + Delete selected rules Slett valgte regler - + Clear downloaded episodes... Fjern nedlastede episoder … - + Rule renaming Bytting av regelnavn - + Please type the new rule name Skriv inn nytt regelnavn - + Clear downloaded episodes Fjern nedlastede episoder - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Er du sikker på at du vil tømme den valgte regelens liste over nedlastede episoder? - + Regex mode: use Perl-compatible regular expressions Regex-modus: Bruk Perl-kompatible regulære uttrykk - - + + Position %1: %2 Posisjon %1: %2 - + Wildcard mode: you can use Joker-modus: Du kan bruke - - + + Import error Importeringsfeil - + Failed to read the file. %1 Klarte ikke lese fila. %1 - + ? to match any single character ? for å samsvare med ethvert enkeltstående tegn - + * to match zero or more of any characters * for å samsvare med null eller flere av ethvert tegn - + Whitespaces count as AND operators (all words, any order) Blanktegn teller som OG-operatorer (alle ord, vilkårlig forordning) - + | is used as OR operator | brukes som ELLER-operator - + If word order is important use * instead of whitespace. Hvis ord-rekkefølgen er viktig, bruk * i stedet for tomrom. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Et uttrykk med en tom %1-klausul (f.eks. %2) - + will match all articles. vil samsvare med alle artikler. - + will exclude all articles. vil utelate alle artikler. @@ -2024,53 +2064,58 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Kan ikke opprette gjenopptakelsesmappe for torrenter: «%1» - + Cannot parse resume data: invalid format Kan ikke tolke gjenopptakelsesdata: ugyldig format - - + + Cannot parse torrent info: %1 Kan ikke tolke informasjon om torrent: %1 - + Cannot parse torrent info: invalid format Kan ikke tolke informasjon om torrent: ugyldig format - + + Mismatching info-hash detected in resume data + Fant info-hash som ikke samsvarer i gjenopptakelsesdata + + + Couldn't save torrent metadata to '%1'. Error: %2. Klarte ikke lagre torrent-metadata til «%1». Feil: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Klarte ikke lagre gjenopprettelsesdata for torrent til «%1». Feil: %2. - + Couldn't load torrents queue: %1 Klarte ikke laste torrentkø: %1 - + Cannot parse resume data: %1 Kan ikke tolke gjenopptakelsesdata: %1 - + Resume data is invalid: neither metadata nor info-hash was found Gjenopptakelsesdata er ugyldig: fant verken metadata eller info-hash - + Couldn't save data to '%1'. Error: %2 Klarte ikke lagre data til «%1». Feil: %2 @@ -2078,38 +2123,38 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor BitTorrent::DBResumeDataStorage - + Not found. Fant ikke. - + Couldn't load resume data of torrent '%1'. Error: %2 Klarte ikke laste gjenopprettelsesdata til torrenten «%1». Feil: %2 - - + + Database is corrupted. Databasen er ødelagt. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Klarte ikke slå på journal med gjenopprettelsesdata («WAL – write ahead logging»). Feilmelding: %1. - + Couldn't obtain query result. Klarte ikke hente resultatet av spørringen. - + WAL mode is probably unsupported due to filesystem limitations. WAL-modus støttes ikke, kanskje på grunn av begrensninger i filsystemet. - + Couldn't begin transaction. Error: %1 Klarte ikke begynne transaksjon. Feil: %1 @@ -2117,22 +2162,22 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Klarte ikke lagre torrent-metadata. Feil: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Klarte ikke lagre gjenopprettelsesdata for torrenten «%1». Feil: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Klarte ikke slette gjenopptakelsesdata til torrenten «%1». Feil: %2 - + Couldn't store torrents queue positions. Error: %1 Klarte ikke lagre kø-posisjoner til torrenter. Feil: %1 @@ -2140,586 +2185,620 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Støtte for distribuert hash-tabell (DHT): %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF AV - - + + Local Peer Discovery support: %1 Støtte for lokal likemannsoppdagelse: %1 - + Restart is required to toggle Peer Exchange (PeX) support Omstart kreves for å veksle utveksling av likemenn (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Klarte ikke gjenoppta torrent «%1» fordi «%2» - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Klarte ikke gjenoppta torrent: Fant inkonsistent torrent-ID. Torrent: «%1» - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Fant inkonsistente data: Kategori mangler i oppsettsfilen. Kategori vil gjenopprettes, men med forvalgt verdi. Torrent: «%1». Kategori: «%2» - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Fant inkonsistente data: Ugyldig kategori. Torrent: «%1». Kategori: «%2» - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Ikke samsvar mellom lagringssti i gjenopprettet kategori og torrentens gjeldende lagringssti. Torrent er endret til manuell modus. Torrent: «%1». Kategori: «%2» - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Fant inkonsistente data: tagg mangler i oppsettsfila, men vil gjenopprettes. Torrent: «%1». Tagg: «%2» - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Fant inkonsistente data: Ugyldig tagg. Torrent «%1». Tagg: «%2» - + System wake-up event detected. Re-announcing to all the trackers... Oppdaget at systemet har våknet opp. Reannonserer til alle sporere … - + Peer ID: "%1" Likemanns-ID: «%1» - + HTTP User-Agent: "%1" HTTP-brukeragent: «%1» - + Peer Exchange (PeX) support: %1 Støtte for utveksling av likemenn (PeX): %1 - - + + Anonymous mode: %1 Anonym modus: %1 - - + + Encryption support: %1 Støtte for kryptering: %1 - - + + FORCED TVUNGET - + Could not find GUID of network interface. Interface: "%1" Fant ikke GUID til nettverksgrensesnittet. Grensesnitt: «%1» - + Trying to listen on the following list of IP addresses: "%1" Forsøker å lytte på følgende liste med IP-adresser: «%1» - + Torrent reached the share ratio limit. Torrent oppnådde grense for delingsforhold. - - - + Torrent: "%1". Torrent: «%1». - - - Removed torrent. - Fjernet torrent. + Fjernet torrent. - - - Removed torrent and deleted its content. - Fjernet torrent og slettet innholdet. + Fjernet torrent og slettet innholdet. - - - Torrent paused. - Torrent satt på pause. + Torrent satt på pause. - - - + Super seeding enabled. Superdeling er slått på. - + Torrent reached the seeding time limit. Torrent oppnådde grense for delingstid. - + Torrent reached the inactive seeding time limit. Torrent oppnådde grense for inaktiv delingstid. - + Failed to load torrent. Reason: "%1" Klarte ikke laste torrent. Årsak: «%1» - + I2P error. Message: "%1". + I2P-feil. Melding: «%1». + + + + UPnP/NAT-PMP support: ON + Støtte for UPnP/NAT-PMP: PÅ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Laster ned torrent, vennligst vent … Kilde: «%1» + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Klarte ikke laste torrent. Kilde: «%1». Årsak: «%2» + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Oppdaget et forsøk på å legge til duplisert torrent. Sammenslåing av torrenter er slått av. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Oppdaget et forsøk på å legge til duplisert torrent. Sporere kan ikke slås sammen fordi det er en privat torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Oppdaget et forsøk på å legge til duplisert torrent. Sporere er sammenslått fra ny kilde. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Støtte for UPnP/NAT-PMP: PÅ + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Støtte for UPnP/NAT-PMP: AV + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Klarte ikke eksportere torrent. Torrent: «%1». Mål: «%2». Årsak: «%3» + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Avbrøt lagring av gjenopptakelsesdata. Antall gjenværende torrenter: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Sammenslåing av sporere er avslått - System network status changed to %1 - e.g: System network status changed to ONLINE - Systemets nettverkstatus ble endret til %1 + + Trackers cannot be merged because it is a private torrent + Kan ikke slå sammen sporere fordi det er en privat torrent + + + + Trackers are merged from new source + Sporere slås sammen fra ny kilde - ONLINE - TILKOBLET + + UPnP/NAT-PMP support: OFF + Støtte for UPnP/NAT-PMP: AV - OFFLINE - FRAKOBLET + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Klarte ikke eksportere torrent. Torrent: «%1». Mål: «%2». Årsak: «%3» - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Nettverksoppsettet av %1 har blitt forandret, oppdaterer øktbinding + + Aborted saving resume data. Number of outstanding torrents: %1 + Avbrøt lagring av gjenopptakelsesdata. Antall gjenværende torrenter: %1 - + The configured network address is invalid. Address: "%1" Den oppsatte nettverksadressen er ugyldig. Adresse: «%1» - - + + Failed to find the configured network address to listen on. Address: "%1" Fant ikke noen nettverksadresse å lytte på. Adresse: «%1» - + The configured network interface is invalid. Interface: "%1" Det oppsatte nettverksgrensesnittet er ugyldig. Grensesnitt: «%1» - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Forkastet ugyldig IP-adresse i listen over bannlyste IP-adresser. IP: «%1» - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" La sporer til i torrent. Torrent: «%1». Sporer: «%2» - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Fjernet sporer fra torrent. Torrent: «%1». Sporer: «%2» - + Added URL seed to torrent. Torrent: "%1". URL: "%2" La nettadressedeler til i torrent. Torrent: «%1». Adresse: «%2» - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Fjernet nettadressedeler fra torrent. Torrent: «%1». Adresse: «%2» - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent satt på pause. Torrent: «%1» + Torrent satt på pause. Torrent: «%1» - + Torrent resumed. Torrent: "%1" Gjenoptok torrent. Torrent: «%1» - + Torrent download finished. Torrent: "%1" Nedlasting av torrent er fullført. Torrent: «%1» - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Avbrøt flytting av torrent. Torrent: «%1». Kilde: «%2». Mål: «%3» - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Klarte ikke legge flytting av torrent i kø. Torrent: «%1». Kilde: «%2». Mål: «%3». Årsak: Torrenten flyttes nå til målet - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Klarte ikke legge flytting av torrent i kø. Torrent: «%1». Kilde: «%2». Mål: «%3». Årsak: Begge stiene peker til samme sted - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" La flytting av torrent i kø. Torrent: «%1». Kilde: «%2». Mål: «%3» - + Start moving torrent. Torrent: "%1". Destination: "%2" Start flytting av torrent. Torrent: «%1». Mål: «%2» - + Failed to save Categories configuration. File: "%1". Error: "%2" Klarte ikke lagre oppsett av kategorier. Fil: «%1». Feil: «%2» - + Failed to parse Categories configuration. File: "%1". Error: "%2" Klarte ikke fortolke oppsett av kategorier. Fil: «%1». Feil: «%2» - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursiv nedlasting av .torrent-fil inni torrent. Kildetorrent: «%1». Fil: «%2» - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Klarte ikke laste .torrent-fil inni torrent. Kildetorrent: «%1». Fil: «%2». Feil: «%3» - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Fortolket fil med IP-filter. Antall regler tatt i bruk: %1 - + Failed to parse the IP filter file Klarte ikke fortolke fil med IP-filter - + Restored torrent. Torrent: "%1" Gjenopprettet torrent. Torrent: «%1» - + Added new torrent. Torrent: "%1" La til ny torrent. Torrent: «%1» - + Torrent errored. Torrent: "%1". Error: "%2" Torrent mislyktes. Torrent: «%1». Feil: «%2» - - Removed torrent. Torrent: "%1" - Fjernet torrent. Torrent: «%1» + Fjernet torrent. Torrent: «%1» - Removed torrent and deleted its content. Torrent: "%1" - Fjernet torrent og slettet innholdet. Torrent: «%1» + Fjernet torrent og slettet innholdet. Torrent: «%1» + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrenten mangler SSL-parametre. Torrent: «%1». Melding: «%2» - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Varsel om filfeil. Torrent: «%1». Fil: «%2». Årsak: «%3» - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP: Portviderekobling mislyktes. Melding: «%1» - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP: Portviderekobling lyktes. Melding: «%1» - + IP filter this peer was blocked. Reason: IP filter. IP-filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtrert port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). priviligert port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Det oppstod en alvorlig feil i BitTorrent-økta. Årsak: «%1» + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5-proxyfeil. Adresse: «%1». Melding: «%2». - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 blandingsmodusbegrensninger - + Failed to load Categories. %1 Klarte ikke laste kategorier. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Klarte ikke laste oppsett av kategorier. Fil: «%1». Feil: «Ugyldig dataformat» - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Fjernet torrent, men klarte ikke å slette innholdet. Torrent: «%1». Feil: «%2» + Fjernet torrent, men klarte ikke å slette innholdet. Torrent: «%1». Feil: «%2» - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 er slått av - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 er slått av - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - DNS-oppslag av nettadressedelernavn mislyktes. Torrent: «%1». URL: «%2». Feil: «%3». + DNS-oppslag av nettadressedelernavn mislyktes. Torrent: «%1». URL: «%2». Feil: «%3». - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Mottok feilmelding fra nettadressedeler. Torrent: «%1». URL: «%2». Melding: «%3». - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Lytter på IP. IP: «%1». Port: «%2/%3» - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Mislyktes i å lytte på IP. IP: «%1». Port: «%2/%3». Årsak: «%4» - + Detected external IP. IP: "%1" Oppdaget ekstern IP. IP: «%1» - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Feil: Den interne varselkøen er full, og varsler forkastes. Ytelsen kan være redusert. Forkastede varseltyper: «%1». Melding: «%2». - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Flytting av torrent er fullført. Torrent: «%1». Mål: «%2» - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Klarte ikke flytte torrent. Torrent: «%1». Kilde: «%2». Mål: «%3». Årsak: «%4» - BitTorrent::TorrentCreator - - - Operation aborted - Handling avbrutt - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Klarte ikke opprette ny torrentfil fordi: %1. + + Failed to start seeding. + Klarte ikke starte deling. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Handling avbrutt + Handling avbrutt + + Create new torrent file failed. Reason: %1. - Klarte ikke opprette ny torrentfil fordi: %1. + Klarte ikke opprette ny torrentfil fordi: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Klarte ikke legge likemann «%1» til torrentfil «%2» fordi: %3 - + Peer "%1" is added to torrent "%2" La likemann «%1» til torrent «%2» - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Oppdaget uventede data. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Klarte ikke skrive til fil fordi: «%1». Torrenten har nå modusen «kun opplasting». - + Download first and last piece first: %1, torrent: '%2' Last ned første og siste bit først: %1, torrent: «%2» - + On - + Off Av - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Klarte ikke gjeninnlaste torrent «%1» fordi «%2» + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Klarte ikke danne gjenopptakelsesdata. Torrent: «%1», feil: «%2» - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Klarte ikke gjenopprette torrent. Filene ble kanskje flyttet eller lagringsenheten er utilgjengelig. Torrent: «%1». Årsak: «%2». - + Missing metadata Mangler metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Klarte ikke endre navn. Torrent: «%1», fil: «%2», årsak: «%3» - + Performance alert: %1. More info: %2 Varsel om ytelse: %1. Mer info: %2 @@ -2740,184 +2819,198 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameteret '%1' må følge syntaksen '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameteret '%1' må følge syntaksen '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Forventet heltall i miljøvariabel '%1', men fikk '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameteret '%1' må følge syntaksen '%1=%2' + Parameteret '%1' må følge syntaksen '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Forventet %1 i miljøvariabel '%2', men fikk '%3' - - + + %1 must specify a valid port (1 to 65535). %1 må spesifisere en gyldig port (1 til 65535). - + Usage: Bruk: - + [options] [(<filename> | <url>)...] [alternativer] [(<filename> | <url>)...] - + Options: Alternativer: - + Display program version and exit Vis programversjon og avslutt - + Display this help message and exit Vis denne hjelpemeldingen og avslutt - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameteret '%1' må følge syntaksen '%1=%2' + + + + Confirm the legal notice + Bekreft juridisk merknad + + + + port port - - Change the Web UI port - Endre nettbrukergrensesnittets port + + Change the WebUI port + Endre port for nettgrensesnittet - + Change the torrenting port Endre torrent-port - + Disable splash screen Skru av velkomstskjerm - + Run in daemon-mode (background) Kjør i bakgrunnsmodus - + dir Use appropriate short form or abbreviation of "directory" kat. - + Store configuration files in <dir> Lagre oppsettsfiler i <dir> - - + + name navn - + Store configuration files in directories qBittorrent_<name> Lagre oppsettsfiler i mapper qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hack inn i libtorrents hurtigopptakelsesfiler og gjør filstier relative til profilmappen - + files or URLs filer eller URL-er - + Download the torrents passed by the user Last ned torrenter godkjent av brukeren - + Options when adding new torrents: Valg ved tillegg av nye torrenter: - + path sti - + Torrent save path Torrentlagringssti - + + Add torrents as running or stopped + + + Add torrents as started or paused - Legg til torrenter som startet eller pauset + Legg til torrenter som startet eller pauset - + Skip hash check Hopp over sjekksummering - + Assign torrents to category. If the category doesn't exist, it will be created. Tildel torrenter til kategori. Hvis kategorien ikke finnes vil den bli opprettes. - + Download files in sequential order Last ned filer i sekvensiell rekkefølge - + Download first and last pieces first Last ned de første og siste delene først - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Angi hvorvidt dialogvinduet «Legg til ny torrent» åpnes når en torrent legges til. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Valgbare verdier kan angis via miljøvariabler. For valget ved navn "parameter-name" er miljøvariabelen "QBT_PARAMETER_NAME" (med store bokstaver "-" erstattet med "_". For å sende flaggverdier, sett variabelen til "1" eller "TRUE". For eksempel for å skru av oppstartsskjermen: - + Command line parameters take precedence over environment variables Kommandolinjeparameter overstyrer miljøvariabler - + Help Hjelp @@ -2925,17 +3018,17 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor CategoryFilterModel - + Categories Kategorier - + All Alle - + Uncategorized Ukategoriserte @@ -2969,13 +3062,21 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor - Resume torrents - Gjenoppta torrenter + Start torrents + + Stop torrents + + + + Resume torrents + Gjenoppta torrenter + + Pause torrents - Sett torrenter på pause + Sett torrenter på pause @@ -2986,15 +3087,20 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor ColorWidget - + Edit... Rediger … - + Reset Tilbakestill + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor CustomThemeSource - + Failed to load custom theme style sheet. %1 Klarte ikke laste stilark for selvvalgt grensesnittdrakt. %1 - + Failed to load custom theme colors. %1 Klarte ikke laste farger for selvvalgt grensesnittdrakt. %1 @@ -3048,7 +3154,7 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor DefaultThemeSource - + Failed to load default theme colors. %1 Klarte ikke laste farger for standard grensesnittdrakt. %1 @@ -3067,23 +3173,27 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor + Also remove the content files + + + Also permanently delete the files - Slett også filene permanent + Slett også filene permanent - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Er du sikker på at du vil fjerne «%1» fra overføringslisten? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Er du sikker på at du vil fjerne disse %1 torrentene fra overføringslisten? - + Remove Fjern @@ -3096,12 +3206,12 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor Last ned fra URLer - + Add torrent links Legg til torrentlenker - + One link per line (HTTP links, Magnet links and info-hashes are supported) Én lenke per linje (HTTP-lenker, magnetlenker, og informative verifiseringsnøkler er støttet) @@ -3111,12 +3221,12 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor Last ned - + No URL entered Ingen URL er skrevet inn - + Please type at least one URL. Vennligst skriv inn minst én URL. @@ -3275,64 +3385,91 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor Fortolkningsfil: Filterfilen er ikke en gyldig PeerGuardian-P2B-fil. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Laster ned torrent … Kilde: «%1» - Trackers cannot be merged because it is a private torrent - + Kan ikke slå sammen sporere fordi det er en privat torrent - + Torrent is already present - Torrenten er allerede til stede + Torrenten er allerede til stede + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - «%1»-torrenten er allerede i overføringslisten. Vil du slå sammen sporere fra den nye kilden? + «%1»-torrenten er allerede i overføringslisten. Vil du slå sammen sporere fra den nye kilden? GeoIPDatabase - - + + Unsupported database file size. Databasefilens størrelse støttes ikke. - + Metadata error: '%1' entry not found. Metadata-feil: Fant ikke oppføringen «%1». - + Metadata error: '%1' entry has invalid type. Metadata-feil: Oppføringen «%1» har ugyldig type. - + Unsupported database version: %1.%2 Ustøttet database-versjon: %1.%2 - + Unsupported IP version: %1 Ustøttet IP-versjon: %1 - + Unsupported record size: %1 Ustøttet oppføringsstørrelse: %1 - + Database corrupted: no data section found. Ødelagt database: Ingen dataseksjon funnet. @@ -3340,17 +3477,17 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP-forespørselens størrelse overskrider grensen, derfor lukkes socketen. Grense: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Ugyldig HTTP-forespørselsmetode, lukker socketen. IP: %1. Metode: «%2» - + Bad Http request, closing socket. IP: %1 Ugyldig HTTP-forespørsel, lukker socketen. IP: %1 @@ -3391,36 +3528,64 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor IconWidget - + Browse... Bla gjennom … - + Reset Tilbakestill - + Select icon Velg ikon - + Supported image files Støttede bildefiler + + LegalNotice + + + Legal Notice + Juridisk Notat + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent er et fildelingsprogram. Når du driver en torrent, blir dataene gjort tilgjengelig for andre ved hjelp av opplasting. Alt innhold du deler, er ditt eget ansvar. + + + + No further notices will be issued. + Ingen flere beskjeder om dette vil bli gitt. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Hvis du har lest denne juridiske merknaden så kan du bruke kommandolinjevalget «--confirm-legal-notice» for å ikke vise meldingen på nytt. + + + + Press 'Enter' key to continue... + Trykk «Enter» for å fortsette … + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 ble blokkert fordi: %2. - + %1 was banned 0.0.0.0 was banned %1 ble bannlyst @@ -3429,91 +3594,62 @@ Støtter de følgende formatene: S01E01, 1x1, 2017.12.31, og 31.12.2017 (Datofor Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 er et ukjent kommandolinje-parameter. - - + + %1 must be the single command line parameter. %1 må være det enkle kommandolinje-parametret. - - You cannot use %1: qBittorrent is already running for this user. - Du kan ikke bruke %1: qBittorrent kjører allerede for denne brukeren. - - - + Run application with -h option to read about command line parameters. Kjør programmet med -h flagg for å lese om kommandolinje-parametre. - + Bad command line Dårlig kommandolinje - + Bad command line: Dårlig kommandolinje: - + An unrecoverable error occurred. - + Det oppstod en ubotelig feil. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Juridisk notis - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent er et fildelingsprogram. Når du driver en torrent, blir dataene gjort tilgjengelig for andre ved hjelp av opplasting. Alt innhold du deler, er ditt eget ansvar. + Det oppstod en ubotelig feil i qBittorrent. - - No further notices will be issued. - Ingen flere beskjeder om dette vil bli gitt. - - - - Press %1 key to accept and continue... - Trykk %1-tasten for å akseptere og fortsette … - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent er et fildelingsprogram. Når du kjører en torrent, vil dens data bli gjort tilgjengelig for andre gjennom opplasting. Innhold som du deler er ene og alene ditt ansvar. - -Ingen flere notiser vil bli gitt. + + You cannot use %1: qBittorrent is already running. + Du kan ikke bruke %1: qBittorrent kjører allerede. - - Legal notice - Juridisk notis + + Another qBittorrent instance is already running. + En annen qBittorrent-instans kjører allerede. - - Cancel - Avbryt + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Fant uventet qBittorrent-instans. Avslutter denne instansen. Gjeldende prosess-ID: %1 - - I Agree - Jeg samtykker + + Error when daemonizing. Reason: "%1". Error code: %2. + Klarte ikke gå inn i nissemodus fordi «%1». Feilkode: %2. @@ -3524,621 +3660,706 @@ Ingen flere notiser vil bli gitt. R&ediger - + &Tools Verk&tøy - + &File &Fil - + &Help &Hjelp - + On Downloads &Done Når nedlastinger er fer&dige - + &View &Vis - + &Options... &Alternativer … - &Resume - &Gjenoppta + &Gjenoppta - + &Remove Fje&rn - + Torrent &Creator &Torrentoppretter - - + + Alternative Speed Limits Alternative hastighetsgrenser - + &Top Toolbar &Toppverktøylinje - + Display Top Toolbar Vis toppverktøylinjen - + Status &Bar Status&felt - + Filters Sidebar Sidestolpe med filter - + S&peed in Title Bar &Hastighet i tittellinjen - + Show Transfer Speed in Title Bar Vis overføringshastighet i tittellinjen - + &RSS Reader Nyhetsmatingsleser (&RSS) - + Search &Engine Søke&motor - + L&ock qBittorrent Lås qBitt&orrent - + Do&nate! Do&ner! - + + Sh&utdown System + + + + &Do nothing &Ikke gjør noe - + Close Window Lukk vindu - R&esume All - Gj&enoppta alle + Gj&enoppta alle - + Manage Cookies... Behandle informasjonskapsler … - + Manage stored network cookies Behandle lagrede nettverksinformasjonskapsler - + Normal Messages Normale meldinger - + Information Messages Informasjonsmeldinger - + Warning Messages Advarselsmeldinger - + Critical Messages Kritiske meldinger - + &Log &Logg - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Velg globale hastighetsgrenser … - + Bottom of Queue Nederst i køen - + Move to the bottom of the queue Flytt nederst i køen - + Top of Queue Øverst i køen - + Move to the top of the queue Flytt øverst i køen - + Move Down Queue Flytt ned i køen - + Move down in the queue Flytt ned i køen - + Move Up Queue Flytt opp i køen - + Move up in the queue Flytt opp i køen - + &Exit qBittorrent Avslutt qBittorr&ent - + &Suspend System &Sett system i hvilemodus - + &Hibernate System Sett system i &dvalemodus - S&hutdown System - Sk&ru av systemet + Sk&ru av systemet - + &Statistics &Statistikk - + Check for Updates Se etter oppdateringer - + Check for Program Updates Se etter programoppdateringer - + &About &Om - &Pause - Sett på &pause + Sett på &pause - P&ause All - Sett alt på p&ause + Sett alt på p&ause - + &Add Torrent File... Legg til torrent&fil … - + Open Åpne - + E&xit &Avslutt - + Open URL Åpne nettadresse - + &Documentation &Dokumentasjon - + Lock Lås - - - + + + Show Vis - + Check for program updates Se etter programoppdateringer - + Add Torrent &Link... Legg til torrent&lenke … - + If you like qBittorrent, please donate! Send noen kroner hvis du liker qBittorrent. - - + + Execution Log Utførelseslogg - + Clear the password Fjern passordet - + &Set Password &Sett passord - + Preferences Innstillinger - + &Clear Password &Fjern passord - + Transfers Overføringer - - + + qBittorrent is minimized to tray qBittorrent er minimert til verktøykassen - - - + + + This behavior can be changed in the settings. You won't be reminded again. Denne oppførselen kan bli endret i innstillingene. Du vil ikke bli minnet på det igjen. - + Icons Only Kun ikoner - + Text Only Kun tekst - + Text Alongside Icons Tekst ved siden av ikoner - + Text Under Icons Tekst under ikoner - + Follow System Style Følg systemsøm - - + + UI lock password Låsepassord for brukergrensesnitt - - + + Please type the UI lock password: Skriv låsepassordet for brukergrensesnittet: - + Are you sure you want to clear the password? Er du sikker på at du vil fjerne passordet? - + Use regular expressions Bruk regulære uttrykk - - Search - Søk + + + Search Engine + Søkemotor - - Transfers (%1) - Overføringer (%1) + + Search has failed + Søket mislyktes - Recursive download confirmation - Rekursiv nedlastingsbekreftelse + + Search has finished + Søket er ferdig - Never - Aldri + + Search + Søk + + + + Transfers (%1) + Overføringer (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent ble nettopp oppdatert og trenger å bli omstartet for at forandringene skal tre i kraft. - + qBittorrent is closed to tray qBittorrent er lukket til verktøykassen - + Some files are currently transferring. Noen filer overføres for øyeblikket. - + Are you sure you want to quit qBittorrent? Er du sikker på at du vil avslutte qBittorrent? - + &No &Nei - + &Yes &Ja - + &Always Yes &Alltid Ja - + Options saved. Valg er lagret. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime Manglende Python-kjøretidsfil - + qBittorrent Update Available qBittorrent-oppdatering tilgjengelig - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python kreves for å bruke søkemotoren, men det synes ikke å være installert. Vil du installere det nå? - + Python is required to use the search engine but it does not seem to be installed. Python kreves for å bruke søkemotoren, men det synes ikke å være installert. - - + + Old Python Runtime Gammel Python-kjøretidsfil - + A new version is available. En ny versjon er tilgjengelig. - + Do you want to download %1? Vil du laste ned %1? - + Open changelog... Åpne endringslogg … - + No updates available. You are already using the latest version. Ingen oppdateringer tilgjengelig. Du bruker allerede den seneste versjonen. - + &Check for Updates &Se etter oppdateringer - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Python-versjonen din (%1) er utdatert. Minstekravet er: %2. Vil du installere en nyere versjon nå? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Din Python-versjon (%1) er utdatert. Oppgrader til siste versjon for at søkemotorene skal virke. Minimumskrav: %2. - + + Paused + Satt på pause + + + Checking for Updates... Ser etter oppdateringer … - + Already checking for program updates in the background Ser allerede etter programoppdateringer i bakgrunnen - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Nedlastingsfeil - Python setup could not be downloaded, reason: %1. Please install it manually. - Klarte ikke laste ned Python-oppsettet fordi: %1. + Klarte ikke laste ned Python-oppsettet fordi: %1. Installer det manuelt. - - + + Invalid password Ugyldig passord - + Filter torrents... Filtrer torrenter … - + Filter by: Filtrer etter: - + The password must be at least 3 characters long Passordet må være minst 3 tegn langt - - - + + + RSS (%1) Nyhetsmating (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrenten «%1» inneholder torrentfiler, vil du fortsette nedlastingen av dem? - - - + The password is invalid Passordet er ugyldig - + DL speed: %1 e.g: Download speed: 10 KiB/s ↓-hastighet: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s ↑-hastighet: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [↓: %1, ↑: %2] qBittorrent %3 - - - + Hide Skjul - + Exiting qBittorrent Avslutter qBittorrent - + Open Torrent Files Åpne torrentfiler - + Torrent Files Torrentfiler @@ -4199,133 +4420,133 @@ Installer det manuelt. Net::DownloadHandlerImpl - - + + I/O Error: %1 Inn/ut-datafeil: %1 - + The file size (%1) exceeds the download limit (%2) Filstørrelsen (%1) overskrider nedlastingsgrensen (%2) - + Exceeded max redirections (%1) Overskred største antall omadresseringer (%1) - + Redirected to magnet URI Omadresserte til magnet-URI - + The remote host name was not found (invalid hostname) Fant ikke det eksterne vertsnavnet (ugyldig vertsnavn) - + The operation was canceled Handlingen ble avbrutt - + The remote server closed the connection prematurely, before the entire reply was received and processed Den eksterne tjeneren stengte tilkoblingen for tidlig, før hele svaret ble mottatt og bearbeidet - + The connection to the remote server timed out Tilkoblingen til den eksterne tjeneren endte i tidsavbrudd - + SSL/TLS handshake failed SSL/TLS-håndtrykk mislyktes - + The remote server refused the connection Den eksterne tjeneren nektet tilkoblingen - + The connection to the proxy server was refused Tilkoblingen til mellomtjeneren ble nektet - + The proxy server closed the connection prematurely Mellomtjeneren stengte tilkoblingen for tidlig - + The proxy host name was not found Fant ikke mellomtjenerens vertsnavn - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Tilkoblingen til mellomtjeneren endte i tidsavbrudd, eller mellomtjeneren svarte ikke tidsnok på forespørselen som ble sendt - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Mellomtjeneren krever autentisering for å godta forespørselen, men avslo alle de oppgitte referansene - + The access to the remote content was denied (401) Tilgangen til det eksterne innholdet ble avslått (401) - + The operation requested on the remote content is not permitted Handlingen som forespørres på det eksterne innholdet er ikke tillatt - + The remote content was not found at the server (404) Fant ikke det eksterne innholdet hos tjeneren (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Fjerntjeneren krever autentisering for å levere innholdet, men aksepterte ikke de oppgitte referansene - + The Network Access API cannot honor the request because the protocol is not known Nettverktilgangs-APIen kan ikke godta forespørselen fordi protokollen ikke er kjent - + The requested operation is invalid for this protocol Den forespurte handlingen er ugyldig for denne protokollen - + An unknown network-related error was detected Oppdaget en ukjent nettverksrelatert feil - + An unknown proxy-related error was detected Oppdaget en ukjent mellomtjenerrelatert feil - + An unknown error related to the remote content was detected Oppdaget en ukjent feil relatert til fjerninnholdet - + A breakdown in protocol was detected Oppdaget et protokollsammenbrudd - + Unknown error Ukjent feil @@ -4333,7 +4554,12 @@ Installer det manuelt. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorerer SSL-fil, URL: «%1», feil: «%2» @@ -5705,294 +5931,307 @@ Installer det manuelt. BitTorrent - + RSS Nyhetsmating (RSS) - Web UI - Nettgrensesnitt + Nettgrensesnitt - + Advanced Avansert - + Customize UI Theme... Velg grensesnittdrakt … - + Transfer List Overføringsliste - + Confirm when deleting torrents Bekreft ved sletting av torrenter - Shows a confirmation dialog upon pausing/resuming all the torrents - Vis bekreftelsesdialog når torrenter pauses/gjenopptas + Vis bekreftelsesdialog når torrenter pauses/gjenopptas - Confirm "Pause/Resume all" actions - Bekreft handlingene «Pause/Gjenoppta alle» + Bekreft handlingene «Pause/Gjenoppta alle» - + Use alternating row colors In table elements, every other row will have a grey background. Bruk alternerende radfarger - + Hide zero and infinity values Skjul null- og uendelighets -verdier - + Always Alltid - Paused torrents only - Kun torrenter satt på pause + Kun torrenter satt på pause - + Action on double-click Handling ved dobbelklikk - + Downloading torrents: Nedlastende torrenter: - - Start / Stop Torrent - Start / stopp torrent + Start / stopp torrent - - + + Open destination folder Åpne målmappe - - + + No action Ingen handling - + Completed torrents: Fullførte torrenter: - + Auto hide zero status filters Skjul automatisk filtre som mangler status - + Desktop Skrivebord - + Start qBittorrent on Windows start up Start qBittorrent ved Windows-oppstart - + Show splash screen on start up Vis velkomstskjerm ved oppstart - + Confirmation on exit when torrents are active Bekreftelse ved programavslutning når torrenter er aktive - + Confirmation on auto-exit when downloads finish Bekreftelse ved auto-programavslutning når nedlastinger er ferdige - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>For å bruke qBittorrent som standardprogram for .torrent-filer og/eller Magnet-lenker <br/> kan du bruke <span style=" font-weight:600;">Standardprogrammer</span> i <span style=" font-weight:600;">Kontrollpanelet</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Oppsett av innhold i torrent: - + Original Opprinnelig - + Create subfolder Lag undermappe - + Don't create subfolder Ikke lag undermappe - + The torrent will be added to the top of the download queue Torrenten vil legges øverst i nedlastingskøen - + Add to top of queue The torrent will be added to the top of the download queue Legg øverst i køen - + When duplicate torrent is being added Når duplisert torrent legges til - + Merge trackers to existing torrent Slå sammen sporere til eksisterende torrent - + + Keep unselected files in ".unwanted" folder + Behold fravalgte filer i mappa «.unwanted» + + + Add... Legg til … - + Options.. Alternativer … - + Remove Fjern - + Email notification &upon download completion E-postvarsling &ved nedlastingsfullførelse - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protokoll for tilkoblinger fra likemenn: - + Any Hvilken som helst - + I2P (experimental) I2P (eksperimentell) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Hvis &quo;blandet modus&quot; er slått på, så vil I2P-torrenter kunne få likemenn fra andre kilder enn sporeren og koble til vanlige IP-adresser uten anonymisering. Dette kan være nyttig hvis brukeren ikke er interessert i anonymisering, men likevel vil koble til I2P-likemenn.</p></body></html> + <html><head/><body><p>Hvis &quo;blandet modus&quot; er slått på, så vil I2P-torrenter kunne få likemenn fra andre kilder enn sporeren og koble til vanlige IP-adresser uten anonymisering. Dette kan være nyttig hvis brukeren ikke er interessert i anonymisering, men likevel vil koble til I2P-likemenn.</p></body></html> - + Mixed mode Blandet modus - + Some options are incompatible with the chosen proxy type! Noen alternativer passer ikke med valgt type mellomtjener. - + If checked, hostname lookups are done via the proxy Velg for å slå opp vertsnavn via mellomtjener - + Perform hostname lookup via proxy Slå opp vertsnavn via mellomtjener - + Use proxy for BitTorrent purposes Bruk mellomtjener for BitTorrent-formål - + RSS feeds will use proxy Informasjonskanaler vil bruke mellomtjener - + Use proxy for RSS purposes Bruk mellomtjener for informasjonskanaler (RSS) - + Search engine, software updates or anything else will use proxy Søkemotor, programvareoppdateringer og alt annet vil bruke mellomtjener - + Use proxy for general purposes Bruk alltid mellomtjener - + IP Fi&ltering IP-fil&trering - + Schedule &the use of alternative rate limits Planlegg &bruken av alternative hastighetsgrenser - + From: From start time Fra: - + To: To end time Til: - + Find peers on the DHT network Finn likemenn på DHT-nettverket - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Krev kryptering: Koble kun til likemenn med protokollkryptering Slå av kryptering: Koble kun til likemenn uten protokollkryptering - + Allow encryption Tillat kryptering - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mer informasjon</a>) - + Maximum active checking torrents: Største antall aktive kontroller av torrenter: - + &Torrent Queueing &Torrentkødanning - + When total seeding time reaches Når total delingstid når - + When inactive seeding time reaches Når inaktiv delingstid når - A&utomatically add these trackers to new downloads: - A&utomatisk legg disse sporerne til nye nedlastinger: + A&utomatisk legg disse sporerne til nye nedlastinger: - + RSS Reader Nyhetsmatingsleser (RSS) - + Enable fetching RSS feeds Skru på innhenting av RSS-informasjonskanaler - + Feeds refresh interval: Oppdateringsintervall for informasjonskanaler: - + + Same host request delay: + Forespørselsforsinkelse samme vert: + + + Maximum number of articles per feed: Maksimalt antall artikler per mating: - - - + + + min minutes min - + Seeding Limits Delegrenser - Pause torrent - Sett torrent på pause + Sett torrent på pause - + Remove torrent Fjern torrent - + Remove torrent and its files Fjern torrent og dens filer - + Enable super seeding for torrent Skru på superdeling av torrent - + When ratio reaches Når forholdet når - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Automatisk RSS-informasjonskanalsnedlaster - + Enable auto downloading of RSS torrents Skru på automatisk nedlasting av RSS-torrenter - + Edit auto downloading rules... Rediger automatiske nedlastingsregler … - + RSS Smart Episode Filter RSS-episodesmartfilter - + Download REPACK/PROPER episodes Last ned REPACK-/PROPER-episoder - + Filters: Filtre: - + Web User Interface (Remote control) Nettbrukergrenesnitt (fjernkontroll) - + IP address: IP-adresse: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Angi en IPv4- eller IPv6-adresse. Du kan oppgi "0.0.0.0" for enhver IP "::" for enhver IPv6-adresse, eller "*" for både IPv4 og IPv6. - + Ban client after consecutive failures: Bannlys klient etter påfølgende feil: - + Never Aldri - + ban for: bannlys i: - + Session timeout: Tidsavbrudd for økt: - + Disabled Slått av - Enable cookie Secure flag (requires HTTPS) - Slå på Secure-flagget i informasjonskapsler (HTTPS) + Slå på Secure-flagget i informasjonskapsler (HTTPS) - + Server domains: Tjenerdomener: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ burde du skrive inn domenenavn brukt av vevgrensesnittjeneren. Bruk ";" for å splitte flerfoldige oppføringer. Jokertegnet "*" kan brukes. - + &Use HTTPS instead of HTTP &Bruk HTTPS istedenfor HTTP - + Bypass authentication for clients on localhost Omgå autentisering for klienter på lokalvert - + Bypass authentication for clients in whitelisted IP subnets Omgå autentisering for klienter i hvitelistede IP-subnett - + IP subnet whitelist... Hviteliste for IP-undernett … - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Angi IP-er til reverserte mellomtjenere (f.eks. 0.0.0.0/24 for subnett) for å bruke videresendte klientaddresser (attributtet X-Forwarded-For). Bruk «;» for å adskille flere oppføringer. - + Upda&te my dynamic domain name Oppda&ter mitt dynamiske domenenavn - + Minimize qBittorrent to notification area Minimer qBittorrent til varslingsområdet - + + Search + Søk + + + + WebUI + + + + Interface Grensesnitt - + Language: Språk: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Systemkurvikonets stil: - - + + Normal Normal - + File association Filtilknytning - + Use qBittorrent for .torrent files Bruk qBittorrent for .torrent-filer - + Use qBittorrent for magnet links Bruk qBittorrent for magnetlenker - + Check for program updates Se etter programoppdateringer - + Power Management Strømstyring - + + &Log Files + + + + Save path: Lagringssti: - + Backup the log file after: Sikkerhetskopier loggfilen etter: - + Delete backup logs older than: Slett sikkerhetskopier av loggføringer som er eldre enn: - + + Show external IP in status bar + + + + When adding a torrent Når en torrent legges til - + Bring torrent dialog to the front Hent torrentdialog til forgrunnen - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Slett .torrent-filer som hvis tillegg i listen ble avbrutt samtidig - + Also when addition is cancelled Også når tillegging blir avbrutt - + Warning! Data loss possible! Advarsel! Datatap mulig! - + Saving Management Lagringsbehandling - + Default Torrent Management Mode: Forvalgt torrentbehandlingsmodus: - + Manual Manuell - + Automatic Automatisk - + When Torrent Category changed: Når torrentkategori endres: - + Relocate torrent Omplasser torrent - + Switch torrent to Manual Mode Bytt torrent til manuell modus - - + + Relocate affected torrents Omplasser berørte torrenter - - + + Switch affected torrents to Manual Mode Bytt berørte torrenter til manuell modus - + Use Subcategories Bruk underkategorier - + Default Save Path: Forvalgt lagringsmappe: - + Copy .torrent files to: Kopier .torrent-filer til: - + Show &qBittorrent in notification area Vis &qBittorrent i varslingsområdet - &Log file - &Loggfil + &Loggfil - + Display &torrent content and some options Vis &torrentinnhold og noen alternativer - + De&lete .torrent files afterwards Sl&ett .torrent-filer etterpå - + Copy .torrent files for finished downloads to: Kopier .torrent-filer for fullførte nedlastinger til: - + Pre-allocate disk space for all files Forhåndstildel diskplass for alle filer - + Use custom UI Theme Bruk selvvalgt grensesnittdrakt - + UI Theme file: Fil med grensesnittdrakt: - + Changing Interface settings requires application restart Programmet må startes på nytt for å ta i bruk endringer i brukergrensesnitt - + Shows a confirmation dialog upon torrent deletion Vis bekreftelsesdialog ved sletting av torrenter - - + + Preview file, otherwise open destination folder Forhåndsvis fil, eller åpne målmappe - - Show torrent options - Vis innstillinger for torrent + Vis innstillinger for torrent - + Shows a confirmation dialog when exiting with active torrents Vis bekreftelsesdialog når torrenter er aktive ved programavslutning - + When minimizing, the main window is closed and must be reopened from the systray icon Hovedvinduet vil lukkes og må gjenåpnes fra systemkurven når det minimeres - + The systray icon will still be visible when closing the main window Ikonet i systemkurven vil fortsatt være synlig når hovedvinduet lukkes - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Steng qBittorrent til varslingsområdet - + Monochrome (for dark theme) Monokromt (mørk drakt) - + Monochrome (for light theme) Monokromt (lys drakt) - + Inhibit system sleep when torrents are downloading Hindre systemhvile når torrenter er aktive - + Inhibit system sleep when torrents are seeding Hindre systemhvile når torrenter deler - + Creates an additional log file after the log file reaches the specified file size Lager en ny loggfil når loggfilen når angitt filstørrelse - + days Delete backup logs older than 10 days dager - + months Delete backup logs older than 10 months måneder - + years Delete backup logs older than 10 years år - + Log performance warnings Varsel om logg-ytelse - The torrent will be added to download list in a paused state - Torrenten vil legges til nedlastingslisten og settes på pause + Torrenten vil legges til nedlastingslisten og settes på pause - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ikke start nedlastingen automatisk - + Whether the .torrent file should be deleted after adding it Skal .torrent-filen slettes etter å ha blitt lagt til - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Reserver full filstørrelse på disk før nedlasting startes, for å hindre fragmentering. Dette er kun nyttig for spinnedisker. - + Append .!qB extension to incomplete files Tilføy en .!qB-benevnelse til ikke-fullførte filer - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Spør om å legge til torrenter fra .torrent-filer inni nylig nedlastet torrent - + Enable recursive download dialog Skru på rekursiv nedlastingsbekreftelse - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatisk: Diverse torrent-egenskaper (f.eks. lagringssti) vil bestemmes av tilordnet kategori Manuelt: Diverse torrent-egenskaper (f.eks. lagringssti) må tilordnes manuelt - + When Default Save/Incomplete Path changed: Når forvalgt lagringssti/ufullstendig sti endres: - + When Category Save Path changed: Når kategoriens lagringssti endres: - + Use Category paths in Manual Mode Bruk kategoristier i manuell modus - + Resolve relative Save Path against appropriate Category path instead of Default one Slå opp relativ lagringssti mot passende kategoristi i stedet for den forvalge - + Use icons from system theme Bruk ikoner fra systemdrakt - + Window state on start up: Vindustilstand ved oppstart: - + qBittorrent window state on start up Vindustilstanden til qBittorrent ved oppstart - + Torrent stop condition: Stopp-betingelse for torrent: - - + + None Ingen - - + + Metadata received Metadata mottatt - - + + Files checked Filer er kontrollert - + Ask for merging trackers when torrent is being added manually Spør om å slå sammen sporere når torrent legges til manuelt - + Use another path for incomplete torrents: Bruk en annen sti for ufullstendige torrenter: - + Automatically add torrents from: Legg automatisk til torrenter fra: - + Excluded file names Utelatte filnavn - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,842 +6994,915 @@ readme.txt: filtrerer eksakt filnavn. readme{0-9].txt: filtrerer «readme1.txt», «readme2.txt», men ikke «readme10.txt». - + Receiver Mottaker - + To: To receiver Til: - + SMTP server: SMTP-tjener: - + Sender Sender - + From: From sender Fra: - + This server requires a secure connection (SSL) Denne tjeneren krever en sikker tilkobling (SSL) - - + + Authentication Autentisering - - - - + + + + Username: Brukernavn: - - - - + + + + Password: Passord: - + Run external program Kjør eksternt program - Run on torrent added - Kjør når torrent legges til + Kjør når torrent legges til - Run on torrent finished - Kjør når torrent er fullført + Kjør når torrent er fullført - + Show console window Vis konsollvindu - + TCP and μTP TCP og μTP - + Listening Port Lytteport - + Port used for incoming connections: Port brukt for innkommende tilkoblinger: - + Set to 0 to let your system pick an unused port Sett lik 0 for å la systemet velge en port som ikke brukes - + Random Tilfeldig - + Use UPnP / NAT-PMP port forwarding from my router Bruk UPnP / NAT-PMP port-videresending fra min ruter - + Connections Limits Tilkoblingsgrenser - + Maximum number of connections per torrent: Maksimalt antall tilkoblinger per torrent: - + Global maximum number of connections: Globalt maksimumsantall for tilkoblinger: - + Maximum number of upload slots per torrent: Maksimalt antall opplastingsåpninger per torrent: - + Global maximum number of upload slots: Globalt maksimumsantall for opplastingsåpninger: - + Proxy Server Mellomtjener - + Type: Type: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Vert: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Ellers blir mellomtjeneren bare brukt til sporertilkoblinger - + Use proxy for peer connections Bruk mellomtjener for likemannstilkoblinger - + A&uthentication Id&entitetsbekreftelse - + Info: The password is saved unencrypted Info: Passordet er lagret ukryptert - + Filter path (.dat, .p2p, .p2b): Filtermappe (.dat, .p2p, .p2b): - + Reload the filter Last inn filteret på nytt - + Manually banned IP addresses... Manuelt bannlyste IP-adresser … - + Apply to trackers Bruk for sporere - + Global Rate Limits Globale hastighetsgrenser - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Opplasting: - - + + Download: Nedlasting: - + Alternative Rate Limits Alternative hastighetsgrenser - + Start time Starttid - + End time Sluttid - + When: Når: - + Every day Hver dag - + Weekdays Ukedager - + Weekends Helger - + Rate Limits Settings Innstillinger for hastighetsgrenser - + Apply rate limit to peers on LAN Bruk hastighetsgrense for likemenn på lokalnett - + Apply rate limit to transport overhead Bruk hastighetsgrense for transportering av tilleggsdata - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Bruk hastighetsgrense for µTP-protokoll - + Privacy Personvern - + Enable DHT (decentralized network) to find more peers Aktiver DHT (desentralisert nettverk) for å finne flere likemenn - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Utveksle likemenn med kompatible Bittorrent-klienter (µTorrent, Vuze, …) - + Enable Peer Exchange (PeX) to find more peers Skru på likemennsutveksling (PeX) for å finne flere likemenn - + Look for peers on your local network Se etter likemenn i ditt lokalnettverk - + Enable Local Peer Discovery to find more peers Aktiver lokal likemannsoppdaging for å finne flere likemenn - + Encryption mode: Krypteringsmodus: - + Require encryption Krev kryptering - + Disable encryption Deaktiver kryptering - + Enable when using a proxy or a VPN connection Aktiver ved bruk av mellomtjener eller en VPN-tilkobling - + Enable anonymous mode Aktiver anonymitetsmodus - + Maximum active downloads: Maksimalt antall aktive nedlastinger: - + Maximum active uploads: Maksimalt antall aktive opplastinger: - + Maximum active torrents: Maksimalt antall aktive torrenter: - + Do not count slow torrents in these limits Ikke ta med trege torrenter i regnskapet for disse grensene - + Upload rate threshold: Opplastingsforholdsgrense: - + Download rate threshold: Nedlastingsforholdsgrense: - - - + + + + sec seconds sek - + Torrent inactivity timer: Torrent-inaktivitetsklokke: - + then deretter - + Use UPnP / NAT-PMP to forward the port from my router Bruk UPnP / NAT-PMP for å videresende porten fra min ruter - + Certificate: Sertifikat: - + Key: Nøkkel: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informasjon om sertifikater</a> - + Change current password Endre gjeldende passord - Use alternative Web UI - Bruk et alternativt nettgrensesnitt + Bruk et alternativt nettgrensesnitt - + Files location: Filenes plassering: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Sikkerhet - + Enable clickjacking protection Aktiver beskyttelse mot klikkoverstyring - + Enable Cross-Site Request Forgery (CSRF) protection Skru på «Cross-Site Request Forgery»-beskyttelse (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Skru på validering av «Host»-feltet i hodet - + Add custom HTTP headers Legg til brukervalgte HTTP-hoder - + Header: value pairs, one per line Hode: verdipar, ett per linje - + Enable reverse proxy support Slå på støtte for reversert mellomtjener - + Trusted proxies list: Liste over tiltrodde mellomtjenere: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Tjeneste: - + Register Registrer - + Domain name: Domenenavn: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Ved å aktivere disse alternativene kan du miste dine .torrent-filer <strong>for godt</strong>! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Hvis du aktiverer det andre alternativet (&ldquo;Også når tillegging blir avbrutt&rdquo;) vil .torrent-filen <strong>bli slettet</strong> selv om du trykker &ldquo;<strong>Avbryt</strong>&rdquo; i &ldquo;Legg til torrent&rdquo;-dialogen - + Select qBittorrent UI Theme file Velg draktfil for qBittorrent - + Choose Alternative UI files location Plasseringen til «Alternativt grensesnitt»-filene - + Supported parameters (case sensitive): Støttede parametre (forskjell på små og store bokstaver): - + Minimized Minimert - + Hidden Skjult - + Disabled due to failed to detect system tray presence Slått av fordi tilstedeværelse i systemkurv er ukjent - + No stop condition is set. Ingen stopp-betingelse er valgt. - + Torrent will stop after metadata is received. Torrent vil stoppe etter at metadata er mottatt. - - Torrents that have metadata initially aren't affected. - Torrenter som har metadata innledningsvis påvirkes ikke. - - - + Torrent will stop after files are initially checked. Torrent vil stoppe etter innledende kontroll. - + This will also download metadata if it wasn't there initially. Dette vil også laste ned metadata som ikke ble mottatt i begynnelsen. - + %N: Torrent name %N: Torrentnavn - + %L: Category %L: Kategori - + %F: Content path (same as root path for multifile torrent) %F: Innholdsmappe (samme som rotmappe for flerfilstorrenter) - + %R: Root path (first torrent subdirectory path) %R: Rotmappe (første undermappe for torrenter) - + %D: Save path %D: Lagringsmappe - + %C: Number of files %C: Antall filer - + %Z: Torrent size (bytes) %Z: Torrentstørrelse (Byte) - + %T: Current tracker %T: Nåværende sporer - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tips: Innkapsle parameter med anførselstegn for å unngå at teksten blir avskåret ved mellomrom (f.eks., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Ingen) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds En torrent vil bli ansett for å være treg dersom dens ned- og opp-lastingsfrekvenser holder seg under disse verdiene, i det antall sekunder som er valgt i «Torrent-inaktivitetsklokke» - + Certificate Sertifikat - + Select certificate Velg sertifikat - + Private key Privat nøkkel - + Select private key Velg privat nøkkel - + + WebUI configuration failed. Reason: %1 + Oppsett av nettgrensesnittet mislyktes fordi: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Velg mappe å overvåke - + Adding entry failed Tillegg av oppføring mislyktes - - Location Error - Stedsfeil + + The WebUI username must be at least 3 characters long. + Brukernavn for nettgrensesnittet må være minst 3 tegn. - - The alternative Web UI files location cannot be blank. - Filplasseringen til det alternative nettgrensesnittet kan ikke være blank. + + The WebUI password must be at least 6 characters long. + Passordet for nettgrensesnittet må være minst 6 tegn. - - + + Location Error + Stedsfeil + + + + Choose export directory Velg eksporteringsmappe - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Når disse alternativene er aktivert vil qBittorrent <strong>slette</strong> .torrentfiler etter at de har blitt vellykket (det første alternativet), eller ikke (det andre alternativet), lagt til nedlastingskøen. Dette vil bli brukt <strong>ikke bare</strong> for filer åpnet via meny-handlingen &ldquo;Legg til torrent&rdquo;, men også for dem som blir åpnet via <strong>filtypetilknytning</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent draktfil (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiketter (adskilt med kommaer) - + %I: Info hash v1 (or '-' if unavailable) %I: Info-hash v1 (eller «-» hvis utilgjengelig) - + %J: Info hash v2 (or '-' if unavailable) %J: Info-hash v2 (eller «-» hvis utilgjengelig) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent-ID (enten sha-1 info-hash for v1-torrenter, eller forkortet sha-256 info-hash for v2/hybrid-torrenter) - - - + + + Choose a save directory Velg en lagringsmappe - + + Torrents that have metadata initially will be added as stopped. + Torrenter som har metadata innledningsvis vil legges til som stoppet. + + + Choose an IP filter file Velg en IP-filterfil - + All supported filters Alle støttede filter - + + The alternative WebUI files location cannot be blank. + Filplasseringen til det alternative nettgrensesnittet kan ikke være blank. + + + Parsing error Tolkningsfeil - + Failed to parse the provided IP filter Klarte ikke å fortolke oppgitt IP-filter - + Successfully refreshed Oppdatert - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Fortolket oppgitt IP-filter: La til %1 regler. - + Preferences Innstillinger - + Time Error Tidsfeil - + The start time and the end time can't be the same. Start- og slutt -tidspunktet kan ikke være det samme. - - + + Length Error Lengdefeil - - - The Web UI username must be at least 3 characters long. - Brukernavn for nettbrukergrensesnittet må være minst 3 tegn. - - - - The Web UI password must be at least 6 characters long. - Passordet for nettbrukergrensesnittet må være minst 6 tegn. - PeerInfo - + Unknown Ukjent - + Interested (local) and choked (peer) Interessert (lokal) og kvalt (likemann) - + Interested (local) and unchoked (peer) Interessert (lokal) og ukvalt (likemann) - + Interested (peer) and choked (local) Interessert (likemann) og kvalt (lokal) - + Interested (peer) and unchoked (local) Interessert (likemann) og ukvalt (lokal) - + Not interested (local) and unchoked (peer) Ikke interessert (lokal) og ukvalt (likemann) - + Not interested (peer) and unchoked (local) Ikke interessert (likemann) og ukvalt (lokal) - + Optimistic unchoke Optimistisk avkvelning - + Peer snubbed Likemann avbrutt - + Incoming connection Innkommende tilkobling - + Peer from DHT Likemann fra DHT - + Peer from PEX Likemann fra PEX - + Peer from LSD Likemann fra LSD - + Encrypted traffic Kryptert trafikk - + Encrypted handshake Kryptert håndtrykk - + + + Peer is using NAT hole punching + + + PeerListWidget @@ -7645,7 +8057,7 @@ readme{0-9].txt: filtrerer «readme1.txt», «readme2.txt», men ikke «readme10 Likemannen «%1» er manuelt bannlyst - + N/A I/T @@ -7668,7 +8080,7 @@ readme{0-9].txt: filtrerer «readme1.txt», «readme2.txt», men ikke «readme10 Liste over likemenn som skal legges til (Én IP per linje): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme{0-9].txt: filtrerer «readme1.txt», «readme2.txt», men ikke «readme10 PiecesBar - + Files in this piece: Filer i denne biten: - + File in this piece: Fil i denne biten: - + File in these pieces: Fil i disse bitene: - + Wait until metadata become available to see detailed information Vent til metadata blir tilgjengelig for å se detaljert informasjon - + Hold Shift key for detailed information Hold Shift-tasten for detaljert informasjon @@ -7742,58 +8154,58 @@ readme{0-9].txt: filtrerer «readme1.txt», «readme2.txt», men ikke «readme10 Søketillegg - + Installed search plugins: Installerte søketillegg: - + Name Navn - + Version Versjon - + Url Url - - + + Enabled Skrudd på - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Advarsel: Pass på å overholde landets opphavsrettslover når du laster ned torrenter fra noen av disse søkemotorene. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Du kan få nye søkemotormoduler her: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installer en ny en - + Check for updates Se etter oppdateringer - + Close Lukk - + Uninstall Avinstaller @@ -7913,17 +8325,17 @@ De uavinstallerbare programtilleggene ble avskrudd. Tilleggets kilde - + Search plugin source: Søketilleggets kilde: - + Local file Lokal fil - + Web link Nettlenke @@ -7941,70 +8353,70 @@ De uavinstallerbare programtilleggene ble avskrudd. Power management found suitable D-Bus interface. Interface: %1 - + Strømstyringen fant passende D-Bus-grensesnitt. Grensesnitt: %1 Power management error. Did not found suitable D-Bus interface. - + Strømstyringsfeil. Fant ikke noe passende D-Bus-grensesnitt. Power management error. Action: %1. Error: %2 - + Strømstyringsfeil. Handling: %1. Feil: %2 Power management unexpected error. State: %1. Error: %2 - + Uventet feil ved strømstyring. Tilstand: %1. Feil: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: De følgende filene fra torrent «%1» støtter forhåndsvisning. Velg en av dem: - + Preview Forhåndsvis - + Name Navn - + Size Størrelse - + Progress Fremdrift - + Preview impossible Forhåndsvisning er ikke mulig - + Sorry, we can't preview this file: "%1". Denne fila kan ikke forhåndsvises: «%1». - + Resize columns Tilpass kolonnebredde - + Resize all non-hidden columns to the size of their contents Tilpass bredden til alle synlige kolonner til innholdet @@ -8017,27 +8429,27 @@ De uavinstallerbare programtilleggene ble avskrudd. Private::FileLineEdit - + Path does not exist Sti finnes ikke - + Path does not point to a directory Sti peker ikke til noen mappe - + Path does not point to a file Sti peker ikke til noen fil - + Don't have read permission to path Mangler lesetilgang til sti - + Don't have write permission to path Mangler skrivetilgang til sti @@ -8078,12 +8490,12 @@ De uavinstallerbare programtilleggene ble avskrudd. PropertiesWidget - + Downloaded: Nedlastet: - + Availability: Tilgjengelighet: @@ -8098,53 +8510,53 @@ De uavinstallerbare programtilleggene ble avskrudd. Overføring - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktivitetstid: - + ETA: Gjenværende tid: - + Uploaded: Opplastet: - + Seeds: Delere: - + Download Speed: Nedlastingshastighet: - + Upload Speed: Opplastingshastighet: - + Peers: Likemenn: - + Download Limit: Nedlastingsgrense: - + Upload Limit: Opplastingsgrense: - + Wasted: Ødslet: @@ -8154,193 +8566,249 @@ De uavinstallerbare programtilleggene ble avskrudd. Tilkoblinger: - + Information Informasjon - + Info Hash v1: Info-hash v1: - + Info Hash v2: Info-hash v2: - + Comment: Kommentar: - + Select All Velg alle - + Select None Fravelg alt - + Share Ratio: Delingsforhold: - + Reannounce In: Reannonsering om: - + Last Seen Complete: Sist sett fullført: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Total størrelse: - + Pieces: Deler: - + Created By: Opprettet av: - + Added On: Lagt til: - + Completed On: Fullført: - + Created On: Opprettet: - + + Private: + + + + Save Path: Lagringsmappe: - + Never Aldri - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (har %3) - - + + %1 (%2 this session) %1 (%2 denne økt) - - + + + N/A I/T - + + Yes + Ja + + + + No + Nei + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (delt i %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maks) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 totalt) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 gj.sn.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Ny nettdeler + Ny nettdeler - Remove Web seed - Fjern nettdeler + Fjern nettdeler - Copy Web seed URL - Kopier adresse for nettdeler + Kopier adresse for nettdeler - Edit Web seed URL - Rediger adresse for nettdeler + Rediger adresse for nettdeler - + Filter files... Filtrer filer … - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Hastighetsgrafer er slått av - + You can enable it in Advanced Options Kan slås på under avanserte innstillinger - New URL seed New HTTP source - Ny nettadressedeler + Ny nettadressedeler - New URL seed: - Ny nettadressedeler + Ny nettadressedeler - - This URL seed is already in the list. - Denne nettadressedeleren er allerede i listen. + Denne nettadressedeleren er allerede i listen. - + Web seed editing Nettdeler-redigering - + Web seed URL: Nettdeleradresse: @@ -8359,22 +8827,22 @@ De uavinstallerbare programtilleggene ble avskrudd. Kunne ikke lagre RSS AutoDownloader-data i %1. Feil: %2 - + Invalid data format Ugyldig dataformat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS-artikkel «%1» aksepteres av regel «%2». Forsøker å legge til torrent … - + Failed to read RSS AutoDownloader rules. %1 Klarte ikke laste inn RSS AutoDownloader-regler. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Kunne ikke laste inn RSS AutoDownloader-regler. Grunn: %1 @@ -8382,22 +8850,22 @@ De uavinstallerbare programtilleggene ble avskrudd. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Mislyktes i å laste ned RSS-kanalen hos «%1». Årsak: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-kanalen hos «%1» ble oppdatert. %2 nye artikler ble lagt til. - + Failed to parse RSS feed at '%1'. Reason: %2 Klarte ikke å fortolke RSS-kanalen hos «%1». Årsak: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Lastet ned RSS-kanalen fra «%1». Starter analysering. @@ -8433,12 +8901,12 @@ De uavinstallerbare programtilleggene ble avskrudd. RSS::Private::Parser - + Invalid RSS feed. Ugyldig RSS-informasjonskanal. - + %1 (line: %2, column: %3, offset: %4). %1 (linje: %2, kolonne: %3, forskyvning: %4). @@ -8446,99 +8914,99 @@ De uavinstallerbare programtilleggene ble avskrudd. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Klarte ikke lagre oppsett av RSS-økt. Fil: «%1». Feil: «%2» - + Couldn't save RSS session data. File: "%1". Error: "%2" Klarte ikke lagre øktdata for RSS. Fil: «%1». Feil: «%2» - - + + RSS feed with given URL already exists: %1. RSS-informasjonskanal med angitt nettadresse finnes allerede: %1|. - + Feed doesn't exist: %1. Informasjonskanal finnes ikke: %1. - + Cannot move root folder. Kan ikke flytte rotmappe. - - + + Item doesn't exist: %1. Elementet finnes ikke: %1 - + Couldn't move folder into itself. Kan ikke flytte mappe til seg selv. - + Cannot delete root folder. Kan ikke slette rotmappe. - + Failed to read RSS session data. %1 Klarte ikke lese øktdata for RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Klarte ikke tolke øktdata for RSS. Fil: «%1». Feil: «%2» - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Klarte ikke laste øktdata for RSS. Fil: «%1». Feil: «Ugyldig dataformat.» - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Klarte ikke laste RSS-kilde. Kilde: «%1». Årsak: URL kreves. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Klarte ikke laste RSS-kilde. Kilde: «%1». Årsak: Ugyldig UID. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Fant duplisert RSS-kilde. UID: «%1». Feil: Oppsettet er ugyldig. - + Couldn't load RSS item. Item: "%1". Invalid data format. Klarte ikke laste RSS-element. Element: «%1». Ugyldig dataformat. - + Corrupted RSS list, not loading it. Ugyldig RSS-liste lastes ikke. - + Incorrect RSS Item path: %1. Uriktig nyhetsmatingselemetsti: %1. - + RSS item with given path already exists: %1. RSS-informasjonskanal med angitt sti finnes allerede: %1|. - + Parent folder doesn't exist: %1. Overnevnte mappe finnes ikke: %1 @@ -8562,8 +9030,8 @@ De uavinstallerbare programtilleggene ble avskrudd. - - + + Mark items read Marker ting som lest @@ -8588,132 +9056,132 @@ De uavinstallerbare programtilleggene ble avskrudd. Torrenter: (dobbel-klikk for å laste ned) - - + + Delete Slett - + Rename... Gi nytt navn … - + Rename Gi nytt navn - - + + Update Oppdater - + New subscription... Nytt abonnement … - - + + Update all feeds Oppdater alle informasjonskanaler - + Download torrent Last ned torrent - + Open news URL Åpne nyhetsnettadresse - + Copy feed URL Kopier informasjonskanalens adresse - + New folder... Ny mappe … - + Edit feed URL... Rediger informasjonskanalens adresse … - + Edit feed URL Rediger informasjonskanalens adresse - + Please choose a folder name Velg et mappenavn - + Folder name: Mappenavn: - + New folder Ny mappe - - + + Please type a RSS feed URL Skriv inn informasjonskanalens nettadresse - - + + Feed URL: Informasjonskanalens adresse: - + Deletion confirmation Slettingsbekreftelse - + Are you sure you want to delete the selected RSS feeds? Er du sikker på at du vil slette de valgte informasjonskanalene? - + Please choose a new name for this RSS feed Velg et nytt navn for denne informasjonskanalen - + New feed name: Nytt navn for informasjonskanal: - + Rename failed Klarte ikke endre navn - + Date: Dato: - + Feed: - + Informasjonskanal: - + Author: Utvikler: @@ -8721,38 +9189,38 @@ De uavinstallerbare programtilleggene ble avskrudd. SearchController - + Python must be installed to use the Search Engine. Installer Python for å bruke søkemotoren. - + Unable to create more than %1 concurrent searches. Klarte ikke lage mer enn %1 samtidige søk. - - + + Offset is out of range Avviket er utenfor rekkevidden - + All plugins are already up to date. Alle tilleggene er allerede fullt oppdatert. - + Updating %1 plugins Oppdaterer %1 tillegg - + Updating plugin %1 Oppdaterer «%1»-tillegget - + Failed to check for plugin updates: %1 Klarte ikke se etter programtilleggsoppdateringer: %1 @@ -8827,132 +9295,146 @@ De uavinstallerbare programtilleggene ble avskrudd. Størrelse: - + Name i.e: file name Navn - + Size i.e: file size Størrelse - + Seeders i.e: Number of full sources Givere - + Leechers i.e: Number of partial sources Snyltere - Search engine - Søkemotor + Søkemotor - + Filter search results... Filtrer søkeresultater … - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultater (viser <i>%1</i> av <i>%2</i>): - + Torrent names only Kun torrentnavn - + Everywhere Overalt - + Use regular expressions Bruk regulære uttrykk - + Open download window Åpne nedlastingsvindu - + Download Last ned - + Open description page Åpne beskrivelsesside - + Copy Kopier - + Name Navn - + Download link Nedlastingslenke - + Description page URL Adressen til beskrivelsessiden - + Searching... Søker … - + Search has finished Søket er ferdig - + Search aborted Søket ble avbrutt - + An error occurred during search... En feil oppstod under søket … - + Search returned no results Søket ga ingen resultater - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Kolonnesynlighet - + Resize columns Tilpass kolonnebredde - + Resize all non-hidden columns to the size of their contents Tilpass bredden til alle synlige kolonner til innholdet @@ -8960,104 +9442,104 @@ De uavinstallerbare programtilleggene ble avskrudd. SearchPluginManager - + Unknown search engine plugin file format. Ukjent søkemotor-tilleggsfilformat. - + Plugin already at version %1, which is greater than %2 Tillegget er allerede ved versjon %1, som er større enn %2 - + A more recent version of this plugin is already installed. En nyere versjon av dette tillegget er allerede installert. - + Plugin %1 is not supported. %1-tillegget er ikke støttet. - - + + Plugin is not supported. Tillegget er ikke støttet. - + Plugin %1 has been successfully updated. %1-tillegget har blitt vellykket oppdatert. - + All categories Alle kategorier - + Movies Filmer - + TV shows TV-serier - + Music Musikk - + Games Spill - + Anime Anime - + Software Programvare - + Pictures Bilder - + Books Bøker - + Update server is temporarily unavailable. %1 Oppdateringstjeneren er midlertidlig utilgjengelig. %1 - - + + Failed to download the plugin file. %1 Nedlasting av tilleggsfilen mislyktes. %1 - + Plugin "%1" is outdated, updating to version %2 «%1»-tillegget er utdatert, derfor oppdateres den til versjon %2 - + Incorrect update info received for %1 out of %2 plugins. Feilaktig oppdateringsinfo ble mottatt for %1 av %2 tillegg. - + Search plugin '%1' contains invalid version string ('%2') Søkemotortillegget «%1» inneholder en ugyldig versjonsstreng («%2») @@ -9067,114 +9549,153 @@ De uavinstallerbare programtilleggene ble avskrudd. - - - - Search Søk - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Ingen søkeprogramtillegg installert. Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for å installere det. - + Search plugins... Søk i programtillegg … - + A phrase to search for. Søkefrase. - + Spaces in a search term may be protected by double quotes. Mellomrom i søkebegrep kan være beskyttet av doble anførselstegn. - + Example: Search phrase example Eksempel: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: søk etter <b>foo bar</b> - + All plugins Alle programtillegg - + Only enabled Kun aktiverte - + + + Invalid data format. + Ugyldig dataformat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: søk etter <b>foo</b> og <b>bar</b> - + + Refresh + + + + Close tab Lukk fane - + Close all tabs Lukk alle faner - + Select... Velg … - - - + + Search Engine Søkemotor - + + Please install Python to use the Search Engine. Installer Python for å bruke søkemotoren. - + Empty search pattern Tom søkestreng - + Please type a search pattern first Skriv en søkestreng først - + + Stop Stopp - Search has finished - Søket er ferdig + Søket er ferdig - Search has failed - Søket mislyktes + Søket mislyktes + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for - + Upload: Opplasting: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Nedlasting: - + Alternative speed limits Alternative hastighetsgrenser @@ -9506,32 +10027,32 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for Gjennomsnittlig tid i kø: - + Connected peers: Tilkoblede likemenn: - + All-time share ratio: Totalt deleforhold: - + All-time download: Totalt nedlastet: - + Session waste: Økts-ødsling: - + All-time upload: Totalt opplastet: - + Total buffer size: Total mellomlagerstørrelse: @@ -9546,12 +10067,12 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for Inn- ut -jobber i kø: - + Write cache overload: Overlast i skrivingshurtiglager: - + Read cache overload: Overlast i lesingshurtiglager: @@ -9570,51 +10091,67 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for StatusBar - + Connection status: Tilkoblingsstatus: - - + + No direct connections. This may indicate network configuration problems. Ingen direkte tilkoblinger. Dette kan indikere problemer med nettverksoppsettet. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 noder - + qBittorrent needs to be restarted! qBittorrent må startes på nytt. - - - + + + Connection Status: Tilkoblingsstatus: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Frakoblet. Dette betyr vanligvis at qBittorrent ikke klarte å lytte til den valgte porten for innkommende tilkoblinger. - + Online Tilkoblet - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klikk for å bytte til alternative hastighetsgrenser - + Click to switch to regular speed limits Klikk for å bytte til vanlige hastighetsgrenser @@ -9643,14 +10180,22 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for Fullførte (0) - Resumed (0) - Gjenopptatte (0) + Gjenopptatte (0) - Paused (0) - Satt på pause (0) + Satt på pause (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for Completed (%1) Fullførte (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Satt på pause (%1) + Satt på pause (%1) @@ -9723,14 +10287,12 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for Flytter (%1) - Resume torrents - Gjenoppta torrenter + Gjenoppta torrenter - Pause torrents - Sett torrenter på pause + Sett torrenter på pause @@ -9738,9 +10300,8 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for Fjern torrenter - Resumed (%1) - Gjenopptatte (%1) + Gjenopptatte (%1) @@ -9781,17 +10342,17 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for TagFilterModel - + Tags Etiketter - + All Alle - + Untagged Umerket @@ -9799,52 +10360,64 @@ Klikk «Søk etter programtillegg …»-knappen nederst til høyre i vinduet for TagFilterWidget - + Add tag... Legg til etikett … - + Remove tag Fjern etikett - + Remove unused tags Fjern ubrukte etiketter - Resume torrents - Gjenoppta torrenter + Gjenoppta torrenter - Pause torrents - Sett torrenter på pause + Sett torrenter på pause - + Remove torrents Fjern torrenter - New Tag - Ny etikett + Ny etikett + + + + Start torrents + - + + Stop torrents + + + + Tag: Etikett: - + + Add tag + + + + Invalid tag name Ugyldig etikettnavn - + Tag name '%1' is invalid Etikettnavnet «%1» er ugyldig @@ -9984,32 +10557,32 @@ Velg et annet navn og prøv igjen. TorrentContentModel - + Name Navn - + Progress Framdrift - + Download Priority Nedlastingsprioritet - + Remaining Gjenstående - + Availability Tilgjengelighet - + Total Size Total størrelse @@ -10054,102 +10627,120 @@ Velg et annet navn og prøv igjen. TorrentContentWidget - + Rename error Klarte ikke endre navn - + Renaming Gir nytt navn - + New name: Nytt navn: - + Column visibility Kolonnesynlighet - + Resize columns Tilpass kolonnebredde - + Resize all non-hidden columns to the size of their contents Tilpass bredden til alle synlige kolonner til innholdet - + Open Åpne - + Open containing folder Åpne relevant mappe - + Rename... Gi nytt navn … - + Priority Prioritet - - + + Do not download Ikke last ned - + Normal Normal - + High Høy - + Maximum Maksimal - + By shown file order Etter vist filrekkefølge - + Normal priority Normal prioritet - + High priority Høy prioritet - + Maximum priority Maksimal prioritet - + Priority by shown file order Prioriter etter vist filrekkefølge + + TorrentCreatorController + + + Too many active tasks + For mange aktive oppgaver + + + + Torrent creation is still unfinished. + Torrenten er fortsatt ikke opprettet. + + + + Torrent creation failed. + Klarte ikke opprette torrent. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Velg et annet navn og prøv igjen. - + Select file Velg fil - + Select folder Velg mappe @@ -10205,58 +10796,10 @@ Velg et annet navn og prøv igjen. Stykkestørrelse: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Velg et annet navn og prøv igjen. Felter - + You can separate tracker tiers / groups with an empty line. Du kan adskille sporerlag/grupper med en tom linje. - + Web seed URLs: Nettdeler-URLer: - + Tracker URLs: Sporer-URLer: - + Comments: Kommentarer: - + Source: Kilde: - + Progress: Framdrift: - + Create Torrent Opprett torrent - - + + Torrent creation failed Klarte ikke opprette torrent - + Reason: Path to file/folder is not readable. Årsak: Stien til filen/mappen kan ikke leses. - + Select where to save the new torrent Velg hvor den nye torrenten skal lagres - + Torrent Files (*.torrent) Torrentfiler (*.torrent) - - Reason: %1 - Årsak: %1 - - - + Add torrent to transfer list failed. - + Klarte ikke legge til torrent i overføringsliste. - + Reason: "%1" - + Årsak: «%1» - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Årsak: Den opprettede torrenten er ugyldig. Den vil ikke bli lagt til i nedlastingslisten. + Klarte ikke legge til torrent - + Torrent creator Torrentens oppretter - + Torrent created: Torrent opprettet: @@ -10396,32 +10930,32 @@ Velg et annet navn og prøv igjen. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Klarte ikke laste oppsett for overvåkede mapper. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Klarte ikke å fortolke oppsett av overvåkede mapper fra %1. Feil: «%2» - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Klarte ikke laste oppsett for overvåkede mapper fra %1. Feil: «Ugyldig dataformat.» - + Couldn't store Watched Folders configuration to %1. Error: %2 Klarte ikke lagre oppsett for overvåkede mapper til %1. Feil: %2 - + Watched folder Path cannot be empty. Sti til overvåkede mapper kan ikke være tom. - + Watched folder Path cannot be relative. Sti til overvåkede mapper kan ikke være relativ. @@ -10429,27 +10963,27 @@ Velg et annet navn og prøv igjen. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Ugyldig Magnet-URI. URI: %1. Årsak: %2 - + Magnet file too big. File: %1 Magnet-fila er for stor. Fil: %1 - + Failed to open magnet file: %1 Klarte ikke åpne magnet-fil: %1 - + Rejecting failed torrent file: %1 Avviser mislykket torrent-fil: %1 - + Watching folder: "%1" Overvåker mappe: «%1» @@ -10457,14 +10991,12 @@ Velg et annet navn og prøv igjen. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Klarte ikke allokere minne ved lesing av fil. Fil: «%1». Feil: «%2» + Klarte ikke allokere minne ved lesing av fil. Fil: «%1». Feil: «%2» - Invalid metadata - Ugyldig metadata + Ugyldig metadata @@ -10495,279 +11027,374 @@ Velg et annet navn og prøv igjen. Bruk en annen sti for ufullstendig torrent - + Category: Kategori: - + + Torrent Share Limits + + + Torrent speed limits - Hastighetsgrenser for torrent + Hastighetsgrenser for torrent - + Download: Nedlasting: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Disse vil ikke overskride de globale grensene - + Upload: Opplasting: - Torrent share limits - Delingsgrenser for torrent + Delingsgrenser for torrent - Use global share limit - Bruk global delingsgrense + Bruk global delingsgrense - Set no share limit - Fri delingsgrense + Fri delingsgrense - Set share limit to - Sett delingsgrense til + Sett delingsgrense til - ratio - forhold + forhold - total minutes - totalt antall minutter + totalt antall minutter - inactive minutes - antall inaktive minutter + antall inaktive minutter - + Disable DHT for this torrent Slå av DHT for denne torrenten - + Download in sequential order Last ned i rekkefølge - + Disable PeX for this torrent Slå av PeX for denne torrenten - + Download first and last pieces first Last ned de første og siste delene først - + Disable LSD for this torrent Slå av LSD for denne torrenten - + Currently used categories Kategorier som er i bruk - - + + Choose save path Velg lagringssti - + Not applicable to private torrents Kan ikke anvendes på private torrenter - No share limit method selected - Ingen delegrensemetode har blitt valgt + Ingen delegrensemetode har blitt valgt - Please select a limit method first - Velg en begrensningsmetode først + Velg en begrensningsmetode først - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Torrent-etiketter + + + + + Default + Forvalgt - - New Tag - Ny etikett + + + + Unlimited + Ubegrenset - - Tag: - Etikett: + + + + Set to + Velg - - Invalid tag name - Ugyldig etikettnavn + + Seeding time: + Delingstid: - - Tag name '%1' is invalid. - Etikettnavnet «%1» er ugyldig. + + + + + + + min + minutes + min - - Tag exists - Etiketten finnes + + Inactive seeding time: + Inaktiv delingstid: - - Tag name already exists. - Etikettnavnet finnes allerede. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Feil: «%1» er ikke en gyldig torrentfil. + + Stop torrent + - - Priority must be an integer - Prioritet må være et helt tall + + Remove torrent + Fjern torrent - - Priority is not valid - Prioritet er ikke gyldig + + Remove torrent and its content + - - Torrent's metadata has not yet downloaded - Torrents metadata har ikke lastet ned ennå + + Enable super seeding for torrent + Skru på superdeling av torrent + + + + Ratio: + Forhold: + + + + TorrentTagsDialog + + + Torrent Tags + Torrent-etiketter + + + New Tag + Ny etikett + + + + Add tag + + + + + Tag: + Etikett: + + + + Invalid tag name + Ugyldig etikettnavn - + + Tag name '%1' is invalid. + Etikettnavnet «%1» er ugyldig. + + + + Tag exists + Etiketten finnes + + + + Tag name already exists. + Etikettnavnet finnes allerede. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Feil: «%1» er ikke en gyldig torrentfil. + + + + Priority must be an integer + Prioritet må være et helt tall + + + + Priority is not valid + Prioritet er ikke gyldig + + + + Torrent's metadata has not yet downloaded + Torrents metadata har ikke lastet ned ennå + + + File IDs must be integers Fil-ID-er må være heltall - + File ID is not valid Fil-ID er ugyldig - - - - + + + + Torrent queueing must be enabled Køoppstilling av torrenter må være skrudd på - - + + Save path cannot be empty Lagringsstien kan ikke være tom - - + + Cannot create target directory Kan ikke opprette målmappe - - + + Category cannot be empty Kategorien kan ikke være tom - + Unable to create category Kunne ikke opprette kategorien - + Unable to edit category Kunne ikke redigere kategorien - + Unable to export torrent file. Error: %1 Klarte ikke eksportere torrent-fil. Feil: %1 - + Cannot make save path Kan ikke opprette lagringsstien - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Parameteren «sort» er ugyldig - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. «%1» er ikke en gyldig filindeks. - + Index %1 is out of bounds. Indeksen %1 kan ikke nås. - - + + Cannot write to directory Kan ikke skrive til mappen - + WebUI Set location: moving "%1", from "%2" to "%3" Velg nettgrensesnitt-plassering: Flytter «%1», fra «%2» til «%3» - + Incorrect torrent name Feil torrentnavn - - + + Incorrect category name Feil kategorinavn @@ -10798,257 +11425,215 @@ Velg et annet navn og prøv igjen. TrackerListModel - - + Working - Virker + Virker - + Disabled - Slått av + Deaktivert - + Disabled for this torrent - Slått av for denne torrenten + Slått av for denne torrenten - + This torrent is private - Denne torrenten er privat + Denne torrenten er privat - + N/A - + Irrelevant - + Updating... - Oppdaterer … + Oppdaterer … - + Not working - Virker ikke + Virker ikke - + Tracker error - + Sporerfeil - + Unreachable - + Kan ikke nås - + Not contacted yet - Ikke kontaktet ennå + Ikke kontaktet ennå - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Nivå + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Ugyldig status! + + + URL/Announce endpoint + URL/annonseringsendepunkt + Tier + Nivå + + Protocol - + Protokoll - + Status - Status + Status - + Peers - Likemenn + Likemenn - + Seeds - Delere + Delere - + Leeches - Snyltere + Snyltere - + Times Downloaded - Ganger nedlastet + Ganger nedlastet - + Message - Melding + Melding - Next announce - + Neste annonsering - Min announce - + Minste annonsering - v%1 - + v%1 TrackerListWidget - Working - Virker - - - Disabled - Slått av - - - Disabled for this torrent - Slått av for denne torrenten - - - + This torrent is private Denne torrenten er privat - Updating... - Oppdaterer … - - - Not working - Virker ikke - - - Not contacted yet - Ikke kontaktet ennå - - - N/A - Irrelevant - - - + Tracker editing Sporer-redigering - + Tracker URL: Sporer-URL: - - + + Tracker editing failed Sporer-redigering mislyktes - + The tracker URL entered is invalid. Sporer-URLen som ble skrevet inn er ugyldig - + The tracker URL already exists. Sporer-URLen finnes allerede. - + Edit tracker URL... Rediger sporerens nettadresse … - + Remove tracker Fjern sporer - + Copy tracker URL Kopier sporer-URLen - + Force reannounce to selected trackers Tving reannonsering til de valgte sporerne - + Force reannounce to all trackers Tving reannonsering til alle sporerne - Tier - Nivå - - - URL - Nettadresse - - - Status - Status - - - Seeds - Delere - - - Times Downloaded - Ganger nedlastet - - - + Resize columns Tilpass kolonnebredde - + Resize all non-hidden columns to the size of their contents Tilpass bredden til alle synlige kolonner til innholdet - Peers - Likemenn - - - + Add trackers... Legg til sporere … - Leeches - Snyltere - - - Message - Melding - - - + Column visibility Kolonnesynlighet @@ -11066,37 +11651,37 @@ Velg et annet navn og prøv igjen. Liste over sporere som skal legges til (én per linje): - + µTorrent compatible list URL: Nettadresse for µTorrent-kompatibel liste: - + Download trackers list Last ned liste over sporere - + Add Legg til - + Trackers list URL error Feil med adressen til sporerlisten - + The trackers list URL cannot be empty Adressen til sporerlisten kan ikke være tom - + Download trackers list error Feil ved nedlasting av sporerliste - + Error occurred when downloading the trackers list. Reason: "%1" Feil ved nedlasting av sporerliste. Årsak: «%1» @@ -11104,87 +11689,70 @@ Velg et annet navn og prøv igjen. TrackersFilterWidget - All (0) - this is for the tracker filter - Alle (0) - - - Trackerless (0) - Sporerløse (0) - - - Error (0) - Feil (0) - - - Warning (0) - Advarsel (0) - - - Trackerless - Sporerløse - - - Error (%1) - Feil (%1) - - - + Warning (%1) Advarsel (%1) - + Trackerless (%1) Sporerløse (%1) - + Tracker error (%1) - + Sporerfeil (%1) - + Other error (%1) - + Andre feil (%1) - + Remove tracker - Fjern sporer + Fjern sporer + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Gjenoppta torrenter + Gjenoppta torrenter - Pause torrents - Sett torrenter på pause + Sett torrenter på pause - + Remove torrents Fjern torrenter - + Removal confirmation - + Bekreft fjerning - + Are you sure you want to remove tracker "%1" from all torrents? - + Er du sikker på at du vil fjerne sporeren «%1» fra alle torrenter? - + Don't ask me again. - + Ikke spør igjen. - + All (%1) this is for the tracker filter Alle (%1) @@ -11193,7 +11761,7 @@ Velg et annet navn og prøv igjen. TransferController - + 'mode': invalid argument «mode»: ugyldig argument @@ -11286,9 +11854,8 @@ Velg et annet navn og prøv igjen. Kontrollerer gjenopptakelsesdata - Paused - Satt på pause + Satt på pause @@ -11313,220 +11880,262 @@ Velg et annet navn og prøv igjen. Mislyktes - + Name i.e: torrent name Navn - + Size i.e: torrent size Størrelse - + Progress % Done Framdrift - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Delere - + Peers i.e. partial sources (often untranslated) Likemenn - + Down Speed i.e: Download speed Nedlast-fart - + Up Speed i.e: Upload speed Opplast-fart - + Ratio Share ratio Forhold - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Anslått tid igjen - + Category Kategori - + Tags Etiketter - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Lagt til den - + Completed On Torrent was completed on 01/01/2010 08:00 Fullført den - + Tracker Sporer - + Down Limit i.e: Download limit Nedlastingsgrense - + Up Limit i.e: Upload limit Opplastingsgrense - + Downloaded Amount of data downloaded (e.g. in MB) Nedlastet - + Uploaded Amount of data uploaded (e.g. in MB) Opplastet - + Session Download Amount of data downloaded since program open (e.g. in MB) Øktnedlasting - + Session Upload Amount of data uploaded since program open (e.g. in MB) Øktopplasting - + Remaining Amount of data left to download (e.g. in MB) Gjenværende - + + Time Active + Time (duration) the torrent is active (not stopped) + Har vært aktiv i + + + + Yes + Ja + + + + No + Nei + + Time Active Time (duration) the torrent is active (not paused) - Har vært aktiv i + Har vært aktiv i - + Save Path Torrent save path Lagringssti - + Incomplete Save Path Torrent incomplete save path Ufullstendig lagringssti - + Completed Amount of data completed (e.g. in MB) Ferdig - + Ratio Limit Upload share ratio limit Forholdsgrense - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Senest sett i fullført tilstand - + Last Activity Time passed since a chunk was downloaded/uploaded Seneste aktivitet - + Total Size i.e. Size including unwanted data Total størrelse - + Availability The number of distributed copies of the torrent Tilgjengelighet - + Info Hash v1 i.e: torrent info hash v1 Info-hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info-hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Reannonsering om + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A I/T - + %1 ago e.g.: 1h 20m ago %1 siden - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (delt i %2) @@ -11535,334 +12144,358 @@ Velg et annet navn og prøv igjen. TransferListWidget - + Column visibility Kolonnesynlighet - + Recheck confirmation Bekreftelse av ny gjennomsjekking - + Are you sure you want to recheck the selected torrent(s)? Er du sikker på at du vil sjekke valgte torrent(er) på nytt? - + Rename Gi nytt navn - + New name: Nytt navn: - + Choose save path Velg lagringsmappe - Confirm pause - Bekreft pause + Bekreft pause - Would you like to pause all torrents? - Vil du sette alle torrenter på pause? + Vil du sette alle torrenter på pause? - Confirm resume - Bekreft gjenopptaking + Bekreft gjenopptaking - Would you like to resume all torrents? - Vil du gjenoppta alle torrenter? + Vil du gjenoppta alle torrenter? - + Unable to preview Kan ikke forhåndsvise - + The selected torrent "%1" does not contain previewable files Den valgte torrenten «%1» har ingen filer som kan forhåndsvises - + Resize columns Tilpass kolonnebredde - + Resize all non-hidden columns to the size of their contents Tilpass bredden til alle synlige kolonner til innholdet - + Enable automatic torrent management Slå på automatisk torrentbehandling - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Vil du virkelig slå på automatisk torrentbehandling for valgt(e) torrent(er)? De kan bli flyttet. - Add Tags - Legg til etiketter + Legg til etiketter - + Choose folder to save exported .torrent files Hvor skal eksporterte .torrent-filer lagres - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Klarte ikke eksportere .torrent-fil. Torrent: «%1». Sti: «%2». Årsak: «%3» - + A file with the same name already exists Det finnes allerede en fil med dette navnet - + Export .torrent file error Feil ved eksportering av .torrent - + Remove All Tags Fjern alle etiketter - + Remove all tags from selected torrents? Fjern alle etiketter fra valgte torrenter? - + Comma-separated tags: Kommainndelte etiketter: - + Invalid tag Ugyldig etikett - + Tag name: '%1' is invalid Etikettnavnet: «%1» er ugyldig - &Resume Resume/start the torrent - &Gjenoppta + &Gjenoppta - &Pause Pause the torrent - &Pause + &Pause - Force Resu&me Force Resume/start the torrent - P&åtving gjenopptakelse + P&åtving gjenopptakelse - + Pre&view file... &Forhåndsvis fil … - + Torrent &options... Torrent&innstillinger … - + Open destination &folder Åpne &målmappe - + Move &up i.e. move up in the queue Flytt &opp - + Move &down i.e. Move down in the queue Flytt &ned - + Move to &top i.e. Move to top of the queue Flytt til &toppen - + Move to &bottom i.e. Move to bottom of the queue Flytt til &bunnen - + Set loc&ation... Velg pl&assering - + Force rec&heck Påtving n&y gjennomsjekk - + Force r&eannounce Tving r&eannonsering - + &Magnet link &Magnetlenke - + Torrent &ID Torrent-&ID - + + &Comment + &Kommentar + + + &Name &Navn - + Info &hash v1 Info-hash v&1 - + Info h&ash v2 Info-hash v&2 - + Re&name... Endre &navn … - + Edit trac&kers... Rediger &sporere … - + E&xport .torrent... E&ksporter torrent … - + Categor&y Kategor&i - + &New... New category... &Ny … - + &Reset Reset category Til&bakestill - + Ta&gs Merke&lapper - + &Add... Add / assign multiple tags... Le&gg til … - + &Remove All Remove all tags F&jern alle - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue K&ø - + &Copy &Kopier - + Exported torrent is not necessarily the same as the imported Den eksporterte torrenten er ikke nødvendigvis lik den importerte - + Download in sequential order Last ned i rekkefølge - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Det oppstod feil ved eksportering av .torrent-filer. Undersøk kjøreloggen for flere detaljer. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Fje&rn - + Download first and last pieces first Last ned de første og siste delene først - + Automatic Torrent Management Automatisk torrentbehandling - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatisk modus betyr at diverse torrent-egenskaper (f.eks. lagringsmappe) vil bli bestemt av tilknyttet kategori - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Kan ikke tvinge reannonsering når torrenten er pauset/i kø/har feil/kontrolleres + Kan ikke tvinge reannonsering når torrenten er pauset/i kø/har feil/kontrolleres - + Super seeding mode Superdelingsmodus @@ -11907,28 +12540,28 @@ Velg et annet navn og prøv igjen. Ikon-ID - + UI Theme Configuration. Oppsett av grensesnittdrakt. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Klarte ikke ta i bruk alle endringene i grensesnittdrakta. Detaljene finner du i loggen. - + Couldn't save UI Theme configuration. Reason: %1 Klarte ikke lagre oppsett av grensesnittdrakt fordi: %1 - - + + Couldn't remove icon file. File: %1. Klarte ikke fjerne ikonfil. Fil: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Klarte ikke kopiere ikonfil. Kilde: %1. Mål: %2. @@ -11936,7 +12569,12 @@ Velg et annet navn og prøv igjen. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Klarte ikke laste draktfil for brukergrensesnitt: «%1» @@ -11967,89 +12605,82 @@ Velg et annet navn og prøv igjen. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Klarte ikke migrere innstillinger: WebUI https, fil: «%1», feil: «%2» - + Migrated preferences: WebUI https, exported data to file: "%1" Migrerte innstillinger: WebUI https, eksporterte data til fil: «%1» - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Fant ugyldig verdi i oppsettsfila og tilbakestiller til standardverdi. Nøkkel: «%1». Ugyldig verdi: «%2». Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python er oppdaget, den iverksettbare filens navn: «%1», versjon: %2 - - - Python not detected - Python ble ikke oppdaget - Found Python executable. Name: "%1". Version: "%2" - + Fant python-fortolker. Navn: «%1». Versjon: «%2» Failed to find Python executable. Path: "%1". - + Fant ikke python-fortolker. Sti: «%1». Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Fant ikke python3-fortolker i miljøvariabelen PATH. PATH: «%1» Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Fant ikke python-fortolker i miljøvariabelen PATH. PATH: «%1» Failed to find `python` executable in Windows Registry. - + Fant ikke python-fortolker i Windows-registeret Failed to find Python executable - + Fant ikke python-fortolker Utils::IO - + File open error. File: "%1". Error: "%2" Klarte ikke åpne fil. Fil: «%1». Feil: «%2» - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Fila overskrider grensa. Fil: «%1». Filstørrelse: %2. Grense: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Fila overskrider grense for datastørrelse. Fil: «%1». Filstørrelse: %2. Tabellstørrelse: %3 - + File read error. File: "%1". Error: "%2" Klarte ikke lese fil. Fil: «%1». Feil: «%2» - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Lest størrelse samsvarer ikke. Fil: «%1». Forventet: %2. Faktisk: %3 @@ -12113,72 +12744,72 @@ Velg et annet navn og prøv igjen. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Ugyldig økt-informasjonskapsel er oppgitt: «%1». Bruker standard i stedet for. - + Unacceptable file type, only regular file is allowed. Uakseptabel filtype, bare ordinære filer er tillatt. - + Symlinks inside alternative UI folder are forbidden. Symbolske lenker inni mapper for alternative grensesnitt er forbudt. - - Using built-in Web UI. + + Using built-in WebUI. Bruker det innebygde nettgrensesnittet. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". Bruker et tilpasset nettgrensesnitt. Plassering: «%1». - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. Lastet inn nettgrensesnittets oversettelse for det valgte språket (%1). - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). Klarte ikke laste inn nettgrensesnittets oversettelse for det valgte språket (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Mangler skilletegn «:» i webgrensesnittets brukervalgte HTTP-hode: «%1» - + Web server error. %1 Feil fra web-tjener. %1 - + Web server error. Unknown error. Feil fra web-tjener. Ukjent feil. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Nettgrensesnitt: Opprinnelseshodet og målopprinnelsen samsvarer ikke! Kilde-IP: «%1». Opprinnelseshode: «%2». Målopprinnelse: «%3» - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Nettgrensesnitt: Henvisningsshodet og målopprinnelsen samsvarer ikke! Kilde-IP: «%1». Henvisningshode: «%2». Målopprinnelse: «%3» - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Nettgrensesnitt: Ugyldig vertsoverskrift, porter samsvarer ikke. Forespørselens kilde-IP: «%1». Tjenerport: «%2». Mottatt vertsoverskrift: «%3» - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Nettgrensesnitt: Ugyldig vertsoverskrift. Forespørselens kilde-IP: «%1». Mottatt vertsoverskrift: «%2» @@ -12186,143 +12817,136 @@ Velg et annet navn og prøv igjen. WebUI - - Web UI: HTTPS setup successful - Vevgrensesnitt: HTTPS satt opp + + Credentials are not set + Referanser ikke angitt + + + + WebUI: HTTPS setup successful + Nettgrensesnitt: HTTPS satt opp + + + + WebUI: HTTPS setup failed, fallback to HTTP + Nettgrensesnitt: Oppsett av HTTPS mislyktes, faller tilbake til HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Vevgrensesnitt: HTTPS oppsett mislyktes, faller tilbake til HTTP + + WebUI: Now listening on IP: %1, port: %2 + Nettgrensesnitt: Lytter nå på IP. %1, port: %2 - - Web UI: Now listening on IP: %1, port: %2 - Vevgrensesnitt: Lytter nå på IP: %1, port: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Klarte ikke binde til IP. %1, port: %2, fordi: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Vevgrensesnitt: Ikke i stand til å binde til IP: %1, port: %2. Grunn: %3 + + Unknown error + Ukjent feil misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1t %2m + %1t %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2t + %1d %2t - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1t %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2t - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Ukjent - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent vil nå slå av datamaskinen fordi alle nedlastinger er fullført. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_nl.ts b/src/lang/qbittorrent_nl.ts index cdcdcd9d53e2..e4d5e7f04be5 100644 --- a/src/lang/qbittorrent_nl.ts +++ b/src/lang/qbittorrent_nl.ts @@ -14,77 +14,77 @@ Over - + Authors Auteurs - + Current maintainer Huidige beheerder - + Greece Griekenland - - + + Nationality: Nationaliteit: - - + + E-mail: E-mail: - - + + Name: Naam: - + Original author Oorspronkelijke auteur - + France Frankrijk - + Special Thanks Speciale dank - + Translators Vertalers - + License Licentie - + Software Used Gebruikte software - + qBittorrent was built with the following libraries: qBittorrent werd gebouwd met de volgende bibliotheken: - + Copy to clipboard - + Naar klembord kopiëren @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Auteursrecht %1 2006-2023 het qBittorrent-project + Copyright %1 2006-2024 The qBittorrent project + Auteursrecht %1 2006-2024 het qBittorrent-project @@ -166,14 +166,13 @@ Opslaan op - + Never show again Nooit meer weergeven - Torrent settings - Torrent-instellingen + Torrent-instellingen @@ -191,12 +190,12 @@ Torrent starten - + Torrent information Torrent-informatie - + Skip hash check Hash-check overslaan @@ -205,6 +204,11 @@ Use another path for incomplete torrent Ander pad gebruiken voor onvolledige torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Stop-voorwaarde: - - + + None Geen - - + + Metadata received Metadata ontvangen - - + + Torrents that have metadata initially will be added as stopped. + Torrents die in eerste instantie metadata hebben, worden toegevoegd als gestopt. + + + + Files checked Bestanden gecontroleerd - + Add to top of queue Bovenaan wachtrij toevoegen - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Indien aangevinkt zal het .torrent-bestand niet verwijderd worden, ongeacht de instellingen op de "download"-pagina van het opties-dialoogvenster. - + Content layout: Indeling van inhoud: - + Original Oorspronkelijk - + Create subfolder Submap aanmaken - + Don't create subfolder Geen submap aanmaken - + Info hash v1: Info-hash v1: - + Size: Grootte: - + Comment: Opmerking: - + Date: Datum: @@ -324,245 +333,182 @@ Laatst gebruikte opslagpad onthouden - + Do not delete .torrent file .torrent-bestand niet verwijderen - + Download in sequential order In sequentiële volgorde downloaden - + Download first and last pieces first Eerste en laatste deeltjes eerst downloaden - + Info hash v2: Info-hash v2: - + Select All Alles selecteren - + Select None Niets selecteren - + Save as .torrent file... Opslaan als .torrent-bestand... - + I/O Error I/O-fout - Invalid torrent - Ongeldige torrent - - - + Not Available This comment is unavailable Niet beschikbaar - + Not Available This date is unavailable Niet beschikbaar - + Not available Niet beschikbaar - Invalid magnet link - Ongeldige magneetkoppeling - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Laden van torrent mislukt: %1. -Fout: %2 - - - This magnet link was not recognized - Deze magneetkoppeling werd niet herkend - - - + Magnet link Magneetkoppeling - + Retrieving metadata... Metadata ophalen... - - + + Choose save path Opslagpad kiezen - Torrent is already present - Torrent is reeds aanwezig - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' staat reeds in de overdrachtlijst. Trackers werden niet samengevoegd omdat het een privé-torrent is. - - - Torrent is already queued for processing. - Torrent staat reeds in wachtrij voor verwerking. - - - + No stop condition is set. Er is geen stop-voorwaarde ingesteld. - + Torrent will stop after metadata is received. Torrent zal stoppen nadat metadata is ontvangen. - - Torrents that have metadata initially aren't affected. - Torrents die in eerste instantie metadata hebben worden niet beïnvloed. - - - + Torrent will stop after files are initially checked. Torrent zal stoppen nadat de bestanden in eerste instantie zijn gecontroleerd. - + This will also download metadata if it wasn't there initially. Dit zal ook metadata downloaden als die er aanvankelijk niet was. - - + + N/A N/B - Magnet link is already queued for processing. - Magneetkoppeling staat reeds in wachtrij voor verwerking. - - - + %1 (Free space on disk: %2) %1 (vrije ruimte op schijf: %2) - + Not available This size is unavailable. Niet beschikbaar - + Torrent file (*%1) Torrentbestand (*%1) - + Save as torrent file Opslaan als torrentbestand - + Couldn't export torrent metadata file '%1'. Reason: %2. Kon torrent-metadatabestand '%1' niet exporteren. Reden: %2. - + Cannot create v2 torrent until its data is fully downloaded. Kan v2-torrent niet aanmaken totdat de gegevens ervan volledig zijn gedownload. - Cannot download '%1': %2 - Kan '%1' niet downloaden: %2 - - - + Filter files... Bestanden filteren... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' staat reeds in de overdrachtlijst. Trackers konden niet samengevoegd worden omdat het een privé-torrent is. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' staat reeds in de overdrachtlijst. Wilt u trackers samenvoegen vanuit de nieuwe bron? - - - + Parsing metadata... Metadata verwerken... - + Metadata retrieval complete Metadata ophalen voltooid - - Failed to load from URL: %1. -Error: %2 - Laden vanuit URL mislukt: %1. -Fout: %2 - - - Download Error - Downloadfout - AddTorrentManager Downloading torrent... Source: "%1" - + Torrent downloaden... Bron: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Toevoegen van torrent mislukt. Bron: "%1". Reden: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Poging gedetecteerd om een dubbele torrent toe te voegen. Bron: %1. Bestaande torrent: %2. Resultaat: %3 - + Merging of trackers is disabled - + Samenvoegen van trackers is uitgeschakeld - + Trackers cannot be merged because it is a private torrent - + Trackers kunnen niet worden samengevoegd omdat het een privétorrent is - + Trackers are merged from new source - + Trackers worden samengevoegd vanaf nieuwe bron @@ -648,72 +594,77 @@ Fout: %2 Hash-check overslaan - - - Choose save path - Opslagpad kiezen + + Torrent share limits + Torrent-deelbegrenzing - - - - - - - Default - Standaard + + + Choose save path + Opslagpad kiezen + + + - Yes - Ja + Default + Standaard + Yes + Ja + + + + + No Nee - + Manual Handmatig - + Automatic Automatisch - + Original Oorspronkelijk - + Create subfolder Submap aanmaken - + Don't create subfolder Geen submap aanmaken - + None Geen - + Metadata received Metadata ontvangen - + Files checked Bestanden gecontroleerd @@ -721,734 +672,852 @@ Fout: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Torrents opnieuw controleren bij voltooiing - - + + ms milliseconds ms - + Setting Instelling - + Value Value set for this setting Waarde - + (disabled) (uitgeschakeld) - + (auto) (automatisch) - + + min minutes min - + All addresses Alle adressen - + qBittorrent Section qBittorrent-sectie - - + + Open documentation Documentatie openen - + All IPv4 addresses Alle IPv4-adressen - + All IPv6 addresses Alle IPv6-adressen - + libtorrent Section libtorrent-sectie - + Fastresume files Bestanden voor snel hervatten - + SQLite database (experimental) SQLite-database (experimenteel) - + Resume data storage type (requires restart) Opslagtype hervattingsgegevens (opnieuw starten vereist) - + Normal Normaal - + Below normal Lager dan normaal - + Medium Gemiddeld - + Low Laag - + Very low Zeer laag - - Process memory priority (Windows >= 8 only) - Procesgeheugenprioriteit (alleen Windows >= 8) - - - + Physical memory (RAM) usage limit Gebruikslimiet fysiek geheugen (RAM) - + Asynchronous I/O threads Asynchrone I/O-threads - + Hashing threads Hashing-threads - + File pool size Grootte filepool - + Outstanding memory when checking torrents Vrij geheugen bij controleren van torrents - + Disk cache Schijfbuffer - - - - + + + + s seconds s - + Disk cache expiry interval Interval voor verstrijken van schijfbuffer - + Disk queue size Grootte van wachtrij op schijf - - + + Enable OS cache Systeembuffer inschakelen - + Coalesce reads & writes Lezen en schrijven combineren - + Use piece extent affinity Affiniteit voor deeltjes in de buurt gebruiken - + Send upload piece suggestions Suggesties voor uploaden van deeltjes zenden - - - - + + + + + 0 (disabled) 0 (uitgeschakeld) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Interval voor opslaan van hervattingsgegevens [0: uitgeschakeld] - + Outgoing ports (Min) [0: disabled] Uitgaande poorten (min) [0: uitgeschakeld] - + Outgoing ports (Max) [0: disabled] Uitgaande poorten (max) [0: uitgeschakeld] - + 0 (permanent lease) 0 (permanente lease) - + UPnP lease duration [0: permanent lease] UPnP-leaseduur [0: permanente lease] - + Stop tracker timeout [0: disabled] Timeout voor stoppen van tracker [0: uitgeschakeld] - + Notification timeout [0: infinite, -1: system default] Time-out melding [0: oneindig, -1: systeemstandaard] - + Maximum outstanding requests to a single peer Maximaal aantal openstaande verzoeken aan een enkele peer - - - - - + + + + + KiB KiB - + (infinite) (oneindig) - + (system default) (systeemstandaard) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Deze optie is minder effectief op Linux - + + Process memory priority + Proces-geheugenprioriteit + + + Bdecode depth limit Limiet Bdecode-diepte - + Bdecode token limit Limiet Bdecode-token - + Default Standaard - + Memory mapped files Bestanden opgeslagen in geheugen - + POSIX-compliant POSIX-conform - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Type schijf-IO (opnieuw starten vereist) - - + + Disable OS cache Systeembuffer uitschakelen - + Disk IO read mode Schijf-IO leesmodus - + Write-through Write-through - + Disk IO write mode Schijf-IO schrijfmodus - + Send buffer watermark Verzendbuffer-watermerk - + Send buffer low watermark Verzendbuffer laag watermerk - + Send buffer watermark factor Verzendbuffer watermerk factor - + Outgoing connections per second Uitgaande verbindingen per seconde - - + + 0 (system default) 0 (systeemstandaard) - + Socket send buffer size [0: system default] Socket-verzendbuffergrootte [0: systeemstandaard] - + Socket receive buffer size [0: system default] Socket-ontvangstbuffergrootte [0: systeemstandaard] - + Socket backlog size Grootte socket-backlog - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Limiet .torrent-bestandsgrootte - + Type of service (ToS) for connections to peers Type dienst (ToS) voor verbindingen naar peers - + Prefer TCP TCP verkiezen - + Peer proportional (throttles TCP) Peer-proportioneel (vermindert TCP) - + Support internationalized domain name (IDN) Ondersteuning voor geïnternationaliseerde domeinnamen (IDN) - + Allow multiple connections from the same IP address Meerdere verbindingen van hetzelfde IP-adres toestaan - + Validate HTTPS tracker certificates Certificaten van HTTPS-trackers valideren - + Server-side request forgery (SSRF) mitigation Beperking van verzoekvervalsing aan de serverzijde (SSRF) - + Disallow connection to peers on privileged ports Verbinding met peers via systeempoorten weigeren - + + It appends the text to the window title to help distinguish qBittorent instances + Het voegt de tekst toe aan de venstertitel om qBittorrent-instanties te helpen onderscheiden + + + + Customize application instance name + Naam van instantie van toepassing aanpassen + + + It controls the internal state update interval which in turn will affect UI updates Het regelt het update-interval van de interne status, dat op zijn beurt UI-updates zal beïnvloeden - + Refresh interval Vernieuwinterval - + Resolve peer host names Hostnamen van peers oplossen - + IP address reported to trackers (requires restart) IP-adres gemeld aan trackers (opnieuw starten vereist) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Alle trackers opnieuw aankondigen wanneer IP of poort wijzigt - + Enable icons in menus Pictogrammen in menu's inschakelen - + Enable port forwarding for embedded tracker Port forwarding inschakelen voor ingebedde tracker - - (Auto detect if empty) + + Enable quarantine for downloaded files + Quarantaine voor gedownloade bestanden inschakelen + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Mark-of-the-Web (MOTW) voor gedownloade bestanden inschakelen + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (automatisch detecteren wanneer leeg) + + + Python executable path (may require restart) + Pad naar python-executable (kan herstart vereisen) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Verwijdering van tracker uit alle torrents bevestigen + + + Peer turnover disconnect percentage Peer-omloop ontkoppelingspercentage - + Peer turnover threshold percentage Peer-omloop drempelpercentage - + Peer turnover disconnect interval Peer-omloop ontkoppelingsinterval - + Resets to default if empty - + Wordt teruggezet op standaard als deze leeg is - + DHT bootstrap nodes - + DHT-bootstrap-nodes - + I2P inbound quantity I2P inkomende hoeveelheid - + I2P outbound quantity I2P uitgaande hoeveelheid - + I2P inbound length I2P inkomende lengte - + I2P outbound length I2P uitgaande lengte - + Display notifications Meldingen weergeven - + Display notifications for added torrents Meldingen weergeven voor toegevoegde torrents - + Download tracker's favicon Favicon van tracker downloaden - + Save path history length Lengte geschiedenis opslagpaden - + Enable speed graphs Snelheidsgrafieken inschakelen - + Fixed slots Vaste slots - + Upload rate based Gebaseerd op uploadsnelheid - + Upload slots behavior Gedrag van uploadslots - + Round-robin Elk om beurt - + Fastest upload Snelste upload - + Anti-leech Anti-leech - + Upload choking algorithm Upload-choking-algoritme - + Confirm torrent recheck Torrent opnieuw controleren bevestigen - + Confirm removal of all tags Verwijderen van alle labels bevestigen - + Always announce to all trackers in a tier Altijd aankondigen bij alle trackers in een niveau - + Always announce to all tiers Altijd aankondigen bij alle niveaus - + Any interface i.e. Any network interface Om het even welke interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP gemengde modus algoritme - + Resolve peer countries Landen van peers oplossen - + Network interface Netwerkinterface - + Optional IP address to bind to Optioneel IP-adres om aan te binden - + Max concurrent HTTP announces Maximaal aantal gelijktijdige HTTP-aankondigingen - + Enable embedded tracker Ingebedde tracker inschakelen - + Embedded tracker port Poort ingebedde tracker - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 gestart + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Actief in draagbare modus. Profielmap automatisch gedetecteerd in: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Redundante opdrachtregelvlag gedetecteerd: "%1". Draagbare modus impliceert een relatieve snelhervatting. - + Using config directory: %1 Configuratiemap gebruiken: %1 - + Torrent name: %1 Naam torrent: %1 - + Torrent size: %1 Grootte torrent: %1 - + Save path: %1 Opslagpad: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds De torrent werd gedownload in %1. - + + Thank you for using qBittorrent. Bedankt om qBittorrent te gebruiken. - + Torrent: %1, sending mail notification Torrent: %1, melding via mail verzenden - + Add torrent failed - + Toevoegen van torrent mislukt - + Couldn't add torrent '%1', reason: %2. - + Kon torrent '%1' niet toevoegen. Reden: %2 + + + + The WebUI administrator username is: %1 + De WebUI-administrator-gebruikersnaam is: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Het administratorwachtwoord voor WebUI is niet ingesteld. Er wordt een tijdelijk wachtwoord gegeven voor deze sessie: %1 + + + + You should set your own password in program preferences. + U moet uw eigen wachtwoord instellen in de programmavoorkeuren. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + De WebUI is uitgeschakeld! Bewerk het configuratiebestand handmatig om de WebUI in te schakelen. - + Running external program. Torrent: "%1". Command: `%2` Extern programma uitvoeren. Torrent: "%1". Opdracht: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Extern programma uitvoeren mislukt. Torrent: "%1". Opdracht: `%2` - + Torrent "%1" has finished downloading Torrent '%1' is klaar met downloaden - + WebUI will be started shortly after internal preparations. Please wait... WebUI zal kort na de interne voorbereidingen worden opgestart. Even geduld... - - + + Loading torrents... Torrents laden... - + E&xit Sluiten - + I/O Error i.e: Input/Output Error I/O-fout - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Fout: %2 Reden: %2 - Error - Fout - - - Failed to add torrent: %1 - Toevoegen van torrent mislukt: %1 - - - + Torrent added Torrent toegevoegd - + '%1' was added. e.g: xxx.avi was added. '%1' werd toegevoegd. - + Download completed Download voltooid - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' is klaar met downloaden. - - - URL download error - URL-downloadfout + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 gestart. Proces-ID: %2 - Couldn't download file at URL '%1', reason: %2. - Kon bestand niet downloaden vanaf URL '%1', reden: %2. + + This is a test email. + - Torrent file association - Torrent-bestandsassociatie + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent is niet het standaardprogramma voor het openen van torrentbestanden of magneetkoppelingen. -Wilt u qBittorrent hiervoor het standaardprogramma maken? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' is klaar met downloaden. - + Information Informatie - + To fix the error, you may need to edit the config file manually. - + Om de fout te herstellen, moet u mogelijk het configuratiebestand handmatig bewerken. - + To control qBittorrent, access the WebUI at: %1 - Gebruik de Web-UI op %1 om qBittorrent te besturen - - - - The Web UI administrator username is: %1 - De Web-UI administrator-gebruikersnaam is: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Het Web UI administratorwachtwoord is niet gewijzigd ten opzichte van de standaardwaarde: %1 - - - - This is a security risk, please change your password in program preferences. - Dit is een veiligheidsrisico. Wijzig uw wachtwoord in de programmavoorkeuren. - - - Application failed to start. - Starten van toepassing mislukt. + Gebruik de WebUI op %1 om qBittorrent te besturen - + Exit Afsluiten - + Recursive download confirmation - Recursieve donwloadbevestiging + Bevestiging voor recursief downloaden - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' bevat .torrent-bestanden, wilt u verdergaan met hun download? + Torrent '%1' bevat .torrent-bestanden, wilt u verdergaan met hun download? - + Never - Nooit + Nooit - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - .torrent-bestand binnenin torrent recursief downloaden. Bron-torrent: "%1". Bestand: "%2" + .torrent-bestand binnenin torrent recursief downloaden. Bron-torrent: "%1". Bestand: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Instellen van gebruikslimiet fysiek geheugen (RAM) mislukt. Foutcode: %1. Foutbericht: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Instellen van gebruikslimiet fysiek geheugen (RAM) mislukt. Gevraagde grootte: %1. Harde systeemlimiet: %2. Foutcode: %3. Foutbericht: "%4" - + qBittorrent termination initiated Afsluiten van qBittorrent gestart - + qBittorrent is shutting down... qBittorrent wordt afgesloten... - + Saving torrent progress... Torrent-voortgang opslaan... - + qBittorrent is now ready to exit qBittorrent is nu klaar om af te sluiten @@ -1597,7 +1637,7 @@ Wilt u qBittorrent hiervoor het standaardprogramma maken? AsyncFileStorage - + Could not create directory '%1'. Kon map '%1' niet aanmaken. @@ -1605,22 +1645,22 @@ Wilt u qBittorrent hiervoor het standaardprogramma maken? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI aanmeldfout. Reden: IP werd verbannen, IP: %1, gebruikersnaam: %2 - + Your IP address has been banned after too many failed authentication attempts. Uw IP-adres is verbannen na te veel mislukte authenticatie-pogingen. - + WebAPI login success. IP: %1 WebAPI-aanmelding gelukt. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI aanmeldfout. Reden: ongeldige aanmeldgegevens, aantal pogingen: %1, IP: %2, gebruikersnaam: %3 @@ -1668,12 +1708,12 @@ Wilt u qBittorrent hiervoor het standaardprogramma maken? Prioriteit: - + Must Not Contain: Mag niet bevatten: - + Episode Filter: Afleveringsfilter: @@ -1726,263 +1766,263 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o Exporteren... - + Matches articles based on episode filter. Komt overeen met artikels gebaseerd op afleveringsfilter. - + Example: Voorbeeld: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match zal overeenkomen met aflevering 2, 5, 8 tot 15, 30 en verdere van seizoen 1 - + Episode filter rules: Afleveringsfilter-regels: - + Season number is a mandatory non-zero value Seizoensnummer is een verplichte "geen nul"-waarde - + Filter must end with semicolon Filter moet eindigen met een puntkomma - + Three range types for episodes are supported: Er worden drie bereiktypes voor afleveringen ondersteund: - + Single number: <b>1x25;</b> matches episode 25 of season one Enkel cijfer: <b>1x25;</b> komt overeen met aflevering 25 van seizoen 1 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normaal bereik: <b>1x25-40;</b> komt overeen met aflevering 25 tot 40 van seizoen 1 - + Episode number is a mandatory positive value Afleveringsnummer is een verplichte positieve waarde - + Rules Regels - + Rules (legacy) Regels (oud) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Oneindig bereik: <b>1x25-;</b> komt overeen met aflevering 25 en verder van seizoen 1, en alle afleveringen van latere seizoenen - + Last Match: %1 days ago Laatste overeenkomst: %1 dagen geleden - + Last Match: Unknown Laatste overeenkomst: onbekend - + New rule name Naam van nieuwe regel - + Please type the name of the new download rule. Typ de naam van de nieuwe downloadregel. - - + + Rule name conflict Regelnaam-conflict - - + + A rule with this name already exists, please choose another name. Een regel met deze naam bestaat reeds. Kies een andere naam. - + Are you sure you want to remove the download rule named '%1'? Weet u zeker dat u de downloadregel met naam '%1' wilt verwijderen? - + Are you sure you want to remove the selected download rules? Weet u zeker dat u de geselecteerde downloadregels wilt verwijderen? - + Rule deletion confirmation Bevestiging verwijderen regel - + Invalid action Ongeldige handeling - + The list is empty, there is nothing to export. De lijst is leeg, er is niets om te exporteren. - + Export RSS rules RSS-regels exporteren - + I/O Error I/O-fout - + Failed to create the destination file. Reason: %1 Doelbestand aanmaken mislukt. Reden: %1 - + Import RSS rules RSS-regels importeren - + Failed to import the selected rules file. Reason: %1 Importeren van geselecteerd regelbestand mislukt. Reden: %1 - + Add new rule... Nieuwe regel toevoegen... - + Delete rule Regel verwijderen - + Rename rule... Regel hernoemen... - + Delete selected rules Geselecteerde regels verwijderen - + Clear downloaded episodes... Gedownloade afleveringen wissen... - + Rule renaming Regelhernoeming - + Please type the new rule name Typ de naam van de nieuwe regel - + Clear downloaded episodes Gedownloade afleveringen wissen - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Weet u zeker dat u de lijst van gedownloade afleveringen voor de geselecteerde regel wilt wissen? - + Regex mode: use Perl-compatible regular expressions Regex-modus: Perl-compatibele reguliere expressies gebruiken - - + + Position %1: %2 Positie %1: %2 - + Wildcard mode: you can use U kunt volgende jokertekens gebruiken: - - + + Import error Importeerfout - + Failed to read the file. %1 Lezen van bestand mislukt. %1 - + ? to match any single character ? voor een enkel teken - + * to match zero or more of any characters * voor nul of meerdere tekens - + Whitespaces count as AND operators (all words, any order) Spaties tellen als AND-operatoren (alle woorden, om het even welke volgorde) - + | is used as OR operator | wordt gebruikt als OR-operator - + If word order is important use * instead of whitespace. Gebruik * in plaats van een spatie als woordvolgorde belangrijk is. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Een expressie met een lege %1-clausule (bijvoorbeeld %2) - + will match all articles. zal met alle artikels overeenkomen. - + will exclude all articles. zal alle artikels uitsluiten. @@ -2024,53 +2064,58 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Kan torrent-hervattingsmap niet aanmaken: "%1" - + Cannot parse resume data: invalid format Kan hervattingsgegevens niet verwerken: ongeldig formaat - - + + Cannot parse torrent info: %1 Kan torrent-informatie niet verwerken: %1 - + Cannot parse torrent info: invalid format Kan torrent-informatie niet verwerken: ongeldig formaat - + + Mismatching info-hash detected in resume data + Niet-overeenkomende info-hash gedetecteerd in hervattingsgegevens + + + Couldn't save torrent metadata to '%1'. Error: %2. Kon metadata van torrent niet opslaan naar '%1'. Fout: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Kon hervattingsgegevens van torrent niet opslaan naar '%1'. Fout: %2. - + Couldn't load torrents queue: %1 Kon torrent-wachtrij niet laden: %1 - + Cannot parse resume data: %1 Kan hervattingsgegevens niet verwerken: %1 - + Resume data is invalid: neither metadata nor info-hash was found Hervattingsgegevens zijn ongeldig: geen metadata of info-hash gevonden - + Couldn't save data to '%1'. Error: %2 Kon gegevens niet opslaan naar '%1'. Fout: %2 @@ -2078,38 +2123,38 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o BitTorrent::DBResumeDataStorage - + Not found. Niet gevonden. - + Couldn't load resume data of torrent '%1'. Error: %2 Kon hervattingsgegevens van torrent '%1' niet laden. Fout: %2 - - + + Database is corrupted. Database is beschadigd. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Kon Write-Ahead Logging (WAL) logboekmodus niet inschakelen. Fout: %1. - + Couldn't obtain query result. Kon zoekresultaat niet verkrijgen. - + WAL mode is probably unsupported due to filesystem limitations. WAL-modus wordt waarschijnlijk niet ondersteund door beperkingen in het bestandssysteem. - + Couldn't begin transaction. Error: %1 Kon transactie niet starten. Fout: %1 @@ -2117,22 +2162,22 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Kon metadata van torrent niet opslaan. Fout: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Kon hervattingsgegevens voor torrent '%1' niet opslaan. Fout: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Kon hervattingsgegevens van torrent '%1' niet verwijderen. Fout: %2 - + Couldn't store torrents queue positions. Error: %1 Kon torrentwachtrijposities niet opslaan. Fout: %1 @@ -2140,586 +2185,620 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Ondersteuning voor Distributed Hash Table (DHT): %1 - - - - - - - - - + + + + + + + + + ON AAN - - - - - - - - - + + + + + + + + + OFF UIT - - + + Local Peer Discovery support: %1 Ondersteuning voor lokale peer-ontdekking: %1 - + Restart is required to toggle Peer Exchange (PeX) support Opnieuw opstarten is vereist om ondersteuning voor peer-uitwisseling (PeX) in/uit te schakelen - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Hervatten van torrent mislukt. Torrent: "%1". Reden: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Hervatten van torrent mislukt. Inconsistente torrent-ID gedetecteerd. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Inconsistente gegevens gedetecteerd: categorie ontbreekt in het configuratiebestand. Categorie zal worden hersteld, maar de instellingen worden teruggezet naar standaard. Torrent: "%1". Categorie: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Inconsistente gegevens gedetecteerd: ongeldige categorie. Torrent: "%1". Categorie: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Gedetecteerd dat de opslagpaden van de herstelde categorie en het huidige opslagpad van de torrent niet overeenkomen. Torrent is nu overgeschakeld naar handmatige modus. Torrent: "%1". Categorie: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Inconsistente gegevens gedetecteerd: label ontbreekt in het configuratiebestand. Het label zal worden hersteld. Torrent: "%1". Label: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Inconsistente gegevens gedetecteerd: ongeldig label. Torrent: "%1". Label: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Systeem-wake-up-gebeurtenis gedetecteerd. Opnieuw aankondigen bij alle trackers... - + Peer ID: "%1" Peer-ID: "%1" - + HTTP User-Agent: "%1" HTTP user-agent: "%1" - + Peer Exchange (PeX) support: %1 Ondersteuning voor peer-uitwisseling (PeX): %1 - - + + Anonymous mode: %1 Anonieme modus: %1 - - + + Encryption support: %1 Versleutelingsondersteuning %1 - - + + FORCED GEFORCEERD - + Could not find GUID of network interface. Interface: "%1" Kon GUID van netwerkinterface niet terugvinden. Interface: %1 - + Trying to listen on the following list of IP addresses: "%1" Proberen luisteren op de volgende lijst van IP-adressen: "%1" - + Torrent reached the share ratio limit. Torrent heeft de limiet voor deelverhouding bereikt. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent verwijderd. + Torrent verwijderd. - - - Removed torrent and deleted its content. - Torrent en zijn inhoud verwijderd. + Torrent en zijn inhoud verwijderd. - - - Torrent paused. - Torrent gepauzeerd. + Torrent gepauzeerd. - - - + Super seeding enabled. Super-seeding ingeschakeld. - + Torrent reached the seeding time limit. Torrent heeft de limiet voor seed-tijd bereikt. - + Torrent reached the inactive seeding time limit. Torrent heeft de limiet voor inactieve seed-tijd bereikt. - + Failed to load torrent. Reason: "%1" Laden van torrent mislukt. Reden: "%1 - + I2P error. Message: "%1". + I2P-fout. Bericht: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP-ondersteuning: AAN + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Torrent downloaden. Even geduld... Bron: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Laden van torrent mislukt. Bron: "%1". Reden: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Poging gedetecteerd om een dubbele torrent toe te voegen. Samenvoegen van trackers is uitgeschakeld. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Poging gedetecteerd om een dubbele torrent toe te voegen. Trackers kunnen niet worden samengevoegd omdat het een privétorrent is. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Poging gedetecteerd om een dubbele torrent toe te voegen. Trackers worden samengevoegd vanaf nieuwe bron. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP-ondersteuning: AAN + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP-ondersteuning: UIT + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Exporteren van torrent mislukt. Torrent: "%1". Bestemming: "%2". Reden: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Opslaan van hervattingsgegevens afgebroken. Aantal openstaande torrents: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Samenvoegen van trackers is uitgeschakeld + + + + Trackers cannot be merged because it is a private torrent + Trackers kunnen niet worden samengevoegd omdat het een privétorrent is - System network status changed to %1 - e.g: System network status changed to ONLINE - Systeem-netwerkstatus gewijzigd in %1 + + Trackers are merged from new source + Trackers worden samengevoegd vanaf nieuwe bron - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP-ondersteuning: UIT - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Exporteren van torrent mislukt. Torrent: "%1". Bestemming: "%2". Reden: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Netwerkconfiguratie van %1 is gewijzigd, sessie-koppeling vernieuwen + + Aborted saving resume data. Number of outstanding torrents: %1 + Opslaan van hervattingsgegevens afgebroken. Aantal openstaande torrents: %1 - + The configured network address is invalid. Address: "%1" Het geconfigureerde netwerkadres is ongeldig. Adres: "%1 - - + + Failed to find the configured network address to listen on. Address: "%1" Kon het geconfigureerde netwerkadres om op te luisteren niet vinden. Adres: "%1" - + The configured network interface is invalid. Interface: "%1" De geconfigureerde netwerkinterface is ongeldig. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Ongeldig IP-adres verworpen tijdens het toepassen van de lijst met verbannen IP-adressen. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Tracker aan torrent toegevoegd. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Tracker uit torrent verwijderd. Torrent: "%1". Tracker: "%2". - + Added URL seed to torrent. Torrent: "%1". URL: "%2" URL-seed aan torrent toegevoegd. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" URL-seed uit torrent verwijderd. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent gepauzeerd. Torrent: "%1" + Torrent gepauzeerd. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent hervat. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Downloaden van torrent voltooid. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Verplaatsen van torrent geannuleerd. Torrent: "%1". Bron: "%2". Bestemming: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Verplaatsen van torrent in wachtrij zetten mislukt. Torrent: "%1". Bron: "%2". Bestemming: "%3". Reden: torrent wordt momenteel naar de bestemming verplaatst - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Verplaatsen van torrent in wachtrij zetten mislukt. Torrent: "%1". Bron: "%2". Bestemming: "%3". Reden: beide paden verwijzen naar dezelfde locatie - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Verplaatsen van torrent in wachtrij gezet. Torrent: "%1". Bron: "%2". Bestemming: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Torrent beginnen verplaatsen. Torrent: "%1". Bestemming: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Opslaan van configuratie van categorieën mislukt. Bestand: "%1". Fout: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Verwerken van configuratie van categorieën mislukt. Bestand: "%1". Fout: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - .torrent-bestand binnenin torrent recursief downloaden. Bron-torrent: "%1". Bestand: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Laden van .torrent-bestand binnenin torrent mislukt. Bron-torrent: "%1". Bestand: "%2". Fout: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP-filterbestand met succes verwerkt. Aantal toegepaste regels: %1 - + Failed to parse the IP filter file Verwerken van IP-filterbestand mislukt - + Restored torrent. Torrent: "%1" Torrent hersteld. Torrent: "%1" - + Added new torrent. Torrent: "%1" Nieuwe torrent toegevoegd. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrentfout. Torrent: "%1". Fout: "%2". - - Removed torrent. Torrent: "%1" - Torrent verwijderd. Torrent: "%1" + Torrent verwijderd. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent en zijn inhoud verwijderd. Torrent: "%1" + Torrent en zijn inhoud verwijderd. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent mist SSL-parameters. Torrent: “%1”. Bericht: “%2” - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Bestandsfoutwaarschuwing. Torrent: "%1". Bestand: "%2". Reden: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP: port mapping mislukt. Bericht: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP: port mapping gelukt. Bericht: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP-filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). gefilterde poort (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). systeempoort (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent-sessie heeft een ernstige fout ondervonden. Reden: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5-proxyfout. Adres: %1. Bericht: "%2" - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 gemengde modus beperkingen - + Failed to load Categories. %1 Laden van categorieën mislukt: %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Laden van configuratie van categorieën mislukt. Bestand: "%1". Fout: "ongeldig gegevensformaat" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent verwijderd maar verwijderen van zijn inhoud en/of part-bestand is mislukt. Torrent: "%1". Fout: "%2" + Torrent verwijderd maar verwijderen van zijn inhoud en/of part-bestand is mislukt. Torrent: "%1". Fout: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 is uitgeschakeld - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 is uitgeschakeld - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Raadpleging van URL-seed-DNS mislukt. Torrent: "%1". URL: "%2". Fout: "%3" + Raadpleging van URL-seed-DNS mislukt. Torrent: "%1". URL: "%2". Fout: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Foutmelding ontvangen van URL-seed. Torrent: "%1". URL: "%2". Bericht: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Luisteren naar IP gelukt: %1. Poort: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Luisteren naar IP mislukt. IP: "%1". Poort: "%2/%3". Reden: "%4" - + Detected external IP. IP: "%1" Externe IP gedetecteerd. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Fout: de interne waarschuwingswachtrij is vol en er zijn waarschuwingen weggevallen, waardoor u mogelijk verminderde prestaties ziet. Soort weggevallen waarschuwingen: "%1". Bericht: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Verplaatsen van torrent gelukt. Torrent: "%1". Bestemming: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Verplaatsen van torrent mislukt. Torrent: "%1". Bron: "%2". Bestemming: "%3". Reden: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Bewerking afgebroken - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Aanmaken van nieuw torrentbestand mislukt. Reden: %1. + + Failed to start seeding. + Beginnen met seeden mislukt. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Bewerking afgebroken + Bewerking afgebroken + + Create new torrent file failed. Reason: %1. - Aanmaken van nieuw torrentbestand mislukt. Reden: %1. + Aanmaken van nieuw torrentbestand mislukt. Reden: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Toevoegen van peer "%1" aan torrent "%2" mislukt. Reden: %3 - + Peer "%1" is added to torrent "%2" Peer "%1" is toegevoegd aan torrent "%2". - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Onverwachte gegevens gedetecteerd. Torrent: %1. Gegevens: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Kon niet schrijven naar bestand. Reden: "%1". Torrent is nu in modus "alleen uploaden". - + Download first and last piece first: %1, torrent: '%2' Eerste en laatste deeltjes eerst downloaden: %1, torrent: '%2' - + On Aan - + Off Uit - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Herladen van torrent mislukt. Torrent: %1. Reden: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Genereren van hervattingsgegevens mislukt. Torrent: "%1". Reden: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Herstellen van torrent mislukt. Bestanden zijn waarschijnlijk verplaatst of opslag is niet toegankelijk. Torrent: "%1". Reden: "%2". - + Missing metadata Ontbrekende metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Naam wijzigen van bestand mislukt. Torrent: "%1", bestand: "%2", reden: "%3" - + Performance alert: %1. More info: %2 Prestatiewaarschuwing: %1. Meer informatie: %2 @@ -2740,184 +2819,198 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' moet syntax '%1 = %2' volgen - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' moet syntax '%1 = %2' volgen - + Expected integer number in environment variable '%1', but got '%2' Geheel nummer verwacht in omgevingsvariabele '%1', maar kreeg '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' moet syntax '%1 = %2' volgen + Parameter '%1' moet syntax '%1 = %2' volgen - + Expected %1 in environment variable '%2', but got '%3' %1 verwacht in omgevingsvariabele '%2', maar kreeg '%3' - - + + %1 must specify a valid port (1 to 65535). %1 moet een geldige poort opgeven (1 tot 65535). - + Usage: Gebruik: - + [options] [(<filename> | <url>)...] [opties] [(<filename> | <url>)...] - + Options: Opties: - + Display program version and exit Programmaversie weergeven en afsluiten - + Display this help message and exit Dit helpbericht weergeven en afsluiten - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' moet syntax '%1 = %2' volgen + + + + Confirm the legal notice + Bevestig de juridische mededeling + + + + port poort - - Change the Web UI port - De web-UI-poort wijzigen + + Change the WebUI port + De WebUI-poort wijzigen - + Change the torrenting port De torrent-poort wijzigen - + Disable splash screen Opstartscherm uitschakelen - + Run in daemon-mode (background) Uitvoeren in daemon-modus (achtergrond) - + dir Use appropriate short form or abbreviation of "directory" map - + Store configuration files in <dir> Configuratiebestanden opslaan in <dir> - - + + name naam - + Store configuration files in directories qBittorrent_<name> Configuratiebestanden opslaan in mappen qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory In de bestanden voor snel hervatten van libtorrent hacken en bestandspaden relatief aan de profielmap maken. - + files or URLs bestanden of URL's - + Download the torrents passed by the user Torrents doorgegeven door de gebruiker downloaden - + Options when adding new torrents: Opties bij het toevoegen van nieuwe torrents: - + path pad - + Torrent save path Opslagpad torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Torrents als gestart of gepauzeerd toevoegen + Torrents als gestart of gepauzeerd toevoegen - + Skip hash check Hash-check overslaan - + Assign torrents to category. If the category doesn't exist, it will be created. Torrents aan categorie toewijzen. Als de categorie niet bestaat, zal hij aangemaakt worden. - + Download files in sequential order Bestanden in sequentiële volgorde downloaden - + Download first and last pieces first Eerste en laatste deeltjes eerst downloaden - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Opgeven of het "nieuwe torrent toevoegen"-venster opent bij het toevoegen van een torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Optiewaarden kunnen voorzien worden via omgevingsvariabelen. Voor optie 'parameter-naam' is de naam van de omgevingsvariabele 'QBT_PARAMETER_NAAM' (in hoofdletters, '-' vervangen door '_'). Om vlagwaarden door te geven stelt u de variabele in op '1' of 'TRUE'. Om bijvoorbeeld het 'splash screen' uit te schakelen: - + Command line parameters take precedence over environment variables Opdrachtregelparameters krijgen voorrang op omgevingsvariabelen - + Help Help @@ -2925,17 +3018,17 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o CategoryFilterModel - + Categories Categorieën - + All Alle - + Uncategorized Zonder categorie @@ -2969,13 +3062,21 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o - Resume torrents - Torrents hervatten + Start torrents + + Stop torrents + + + + Resume torrents + Torrents hervatten + + Pause torrents - Torrents pauzeren + Torrents pauzeren @@ -2986,15 +3087,20 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o ColorWidget - + Edit... Bewerken... - + Reset Herstellen + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o CustomThemeSource - + Failed to load custom theme style sheet. %1 Laden van aangepast thema-stijlblad mislukt. %1 - + Failed to load custom theme colors. %1 Laden van aangepaste themakleuren mislukt. %1 @@ -3048,7 +3154,7 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o DefaultThemeSource - + Failed to load default theme colors. %1 Laden van standaard themakleuren mislukt. %1 @@ -3067,23 +3173,27 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o + Also remove the content files + + + Also permanently delete the files - Bestanden ook permanent verwijderen + Bestanden ook permanent verwijderen - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Weet u zeker dat u '%1' uit de overdrachtlijst wilt verwijderen? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Weet u zeker dat u deze %1 torrents uit de overdrachtlijst wilt verwijderen? - + Remove Verwijderen @@ -3096,12 +3206,12 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o Downloaden uit URL's - + Add torrent links Torrent-koppelingen toevoegen - + One link per line (HTTP links, Magnet links and info-hashes are supported) Een koppeling per regel (http-verbindingen, magneetkoppelingen en info-hashes worden ondersteund) @@ -3111,12 +3221,12 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o Downloaden - + No URL entered Geen URL opgegeven - + Please type at least one URL. Typ op zijn minst één URL. @@ -3275,64 +3385,91 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o Fout bij verwerken: het filterbestand is geen geldig PeerGuardian P2B-bestand. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Torrent downloaden... Bron: "%1" - Trackers cannot be merged because it is a private torrent - + Trackers kunnen niet worden samengevoegd omdat het een privétorrent is - + Torrent is already present - Torrent is reeds aanwezig + Torrent is reeds aanwezig + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' staat reeds in de overdrachtlijst. Wilt u trackers samenvoegen vanuit de nieuwe bron? + Torrent '%1' staat reeds in de overdrachtlijst. Wilt u trackers samenvoegen vanuit de nieuwe bron? GeoIPDatabase - - + + Unsupported database file size. Database-bestandsgrootte niet ondersteund. - + Metadata error: '%1' entry not found. Metadata-fout: '%1' item niet gevonden. - + Metadata error: '%1' entry has invalid type. Metadata-fout: '%1' item heeft een ongeldig type. - + Unsupported database version: %1.%2 Database-versie niet ondersteund: %1.%2 - + Unsupported IP version: %1 IP-versie niet ondersteund: %1 - + Unsupported record size: %1 Opnamegrootte niet ondersteund: %1 - + Database corrupted: no data section found. Database beschadigd: geen gegevenssectie teruggevonden. @@ -3340,17 +3477,17 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP-aanvraaggrootte overschrijdt grens. Socket sluiten. Grens: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Foute HTTP-aanvraag-methode. Socket sluiten. IP: %1. Methode: "%2" - + Bad Http request, closing socket. IP: %1 Foute HTTP-aanvraag. Socket sluiten. IP: %1 @@ -3391,36 +3528,64 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o IconWidget - + Browse... Bladeren... - + Reset Herstellen - + Select icon Pictogram selecteren - + Supported image files Ondersteunde afbeeldingsbestanden + + LegalNotice + + + Legal Notice + Juridische mededeling + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent is een programma voor het delen van bestanden. Wanneer u een torrent uitvoert, worden de gegevens ervan beschikbaar gesteld aan anderen door ze te uploaden. Elke inhoud die u deelt is uw eigen verantwoordelijkheid. + + + + No further notices will be issued. + Er worden geen verdere meldingen meer gedaan. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Als u de juridische mededeling hebt gelezen, kunt u de opdrachtregeloptie '--confirm-legal-notice' gebruiken om deze melding te onderdrukken. + + + + Press 'Enter' key to continue... + Druk op 'Enter' om door te gaan... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 werd geblokkeerd. Reden: %2. - + %1 was banned 0.0.0.0 was banned %1 werd verbannen @@ -3429,91 +3594,62 @@ Ondersteunt de formaten: S01E01, 1x1, 2017.12.31 en 31.12.2017 (datumformaten o Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 is een onbekende opdrachtregelparameter - - + + %1 must be the single command line parameter. %1 moet de enige opdrachtregelparameter zijn - - You cannot use %1: qBittorrent is already running for this user. - U kunt %1 niet gebruiken: qBittorrent wordt al uitgevoerd voor deze gebruiker. - - - + Run application with -h option to read about command line parameters. Voer de toepassing uit met optie -h om te lezen over opdrachtregelparameters - + Bad command line Slechte opdrachtregel - + Bad command line: Slechte opdrachtregel: - + An unrecoverable error occurred. - + Er is een onherstelbare fout opgetreden. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Juridische mededeling - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent is een programma voor het delen van bestanden. Wanneer u een torrent uitvoert, worden de gegevens ervan beschikbaar gesteld aan anderen door ze te uploaden. Elke inhoud die u deelt is uw eigen verantwoordelijkheid. - - - - No further notices will be issued. - Er worden geen verdere meldingen meer gedaan. - - - - Press %1 key to accept and continue... - Druk op de %1-toets om te accepteren en verder te gaan... + qBittorrent heeft een onherstelbare fout ondervonden. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent is een programma voor het delen van bestanden. Wanneer u een torrent uitvoert, worden de gegevens ervan beschikbaar gesteld aan anderen door ze te uploaden. Elke inhoud die u deelt is uw eigen verantwoordelijkheid. - -Er worden geen verdere mededelingen gedaan. + + You cannot use %1: qBittorrent is already running. + U kunt %1 niet gebruiken: qBittorrent wordt al uitgevoerd. - - Legal notice - Juridische mededeling + + Another qBittorrent instance is already running. + Er wordt al een andere instantie van qBittorrent uitgevoerd. - - Cancel - Annuleren + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Onverwachte qBittorrent-instantie gevonden. Deze instantie wordt afgesloten. Huidige proces-ID: %1. - - I Agree - Akkoord + + Error when daemonizing. Reason: "%1". Error code: %2. + Fout bij daemoniseren. Reden: "%1". Foutcode: %2. @@ -3524,621 +3660,706 @@ Er worden geen verdere mededelingen gedaan. B&ewerken - + &Tools &Gereedschap - + &File &Bestand - + &Help &Help - + On Downloads &Done Wanneer downloads voltooid zijn - + &View Beel&d - + &Options... Opties... - &Resume - Hervatten + Hervatten - + &Remove Verwijderen - + Torrent &Creator Torrent aanmaken - - + + Alternative Speed Limits Alternatieve snelheidsbegrenzing - + &Top Toolbar Bovenste werkbalk - + Display Top Toolbar Bovenste werkbalk weergeven - + Status &Bar Statusbalk - + Filters Sidebar Filter-zijbalk - + S&peed in Title Bar Snelheid in titelbalk - + Show Transfer Speed in Title Bar Overdrachtsnelheid weergeven in titelbalk - + &RSS Reader RSS-lezer - + Search &Engine Zoekmachine - + L&ock qBittorrent qBittorrent vergrendelen - + Do&nate! Doneren! - + + Sh&utdown System + + + + &Do nothing Niets doen - + Close Window Venster sluiten - R&esume All - Alles hervatten + Alles hervatten - + Manage Cookies... Cookies beheren... - + Manage stored network cookies Opgeslagen netwerkcookies beheren - + Normal Messages Normale berichten - + Information Messages Informatieberichten - + Warning Messages Waarschuwingsberichten - + Critical Messages Kritieke berichten - + &Log Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Algemene snelheidsbegrenzing instellen... - + Bottom of Queue Onderaan wachtrij - + Move to the bottom of the queue Naar onderkant van de wachtrij verplaatsen - + Top of Queue Bovenaan wachtrij - + Move to the top of the queue Naar bovenkant van de wachtrij verplaatsen - + Move Down Queue Naar beneden in wachtrij - + Move down in the queue Naar beneden in de wachtrij verplaatsen - + Move Up Queue Naar boven in wachtrij - + Move up in the queue Naar boven in de wachtrij verplaatsen - + &Exit qBittorrent qBittorrent afsluiten - + &Suspend System Slaapstand - + &Hibernate System Sluimerstand - S&hutdown System - Afsluiten + Afsluiten - + &Statistics Statistieken - + Check for Updates Controleren op updates - + Check for Program Updates Op programma-updates controleren - + &About Over - &Pause - Pauzeren + Pauzeren - P&ause All - Alles pauzeren + Alles pauzeren - + &Add Torrent File... Torrentbestand toevoegen... - + Open Openen - + E&xit Sluiten - + Open URL URL openen - + &Documentation Documentatie - + Lock Vergrendelen - - - + + + Show Weergeven - + Check for program updates Op programma-updates controleren - + Add Torrent &Link... Torrent-koppeling toevoegen - + If you like qBittorrent, please donate! Als u qBittorrent leuk vindt, doneer dan! - - + + Execution Log Uitvoeringslog - + Clear the password Wachtwoord wissen - + &Set Password Wachtwoord instellen - + Preferences Voorkeuren - + &Clear Password Wachtwoord wissen - + Transfers Overdrachten - - + + qBittorrent is minimized to tray qBittorrent is naar systeemvak geminimaliseerd - - - + + + This behavior can be changed in the settings. You won't be reminded again. Dit gedrag kan veranderd worden in de instellingen. U zult niet meer herinnerd worden. - + Icons Only Alleen pictogrammen - + Text Only Alleen tekst - + Text Alongside Icons Tekst naast pictogrammen - + Text Under Icons Tekst onder pictogrammen - + Follow System Style Systeemstijl volgen - - + + UI lock password Wachtwoord UI-vergrendeling - - + + Please type the UI lock password: Geef het wachtwoord voor UI-vergrendeling op: - + Are you sure you want to clear the password? Weet u zeker dat u het wachtwoord wilt wissen? - + Use regular expressions Reguliere expressies gebruiken - + + + Search Engine + Zoekmachine + + + + Search has failed + Zoeken mislukt + + + + Search has finished + Zoeken is voltooid + + + Search Zoeken - + Transfers (%1) Overdrachten (%1) - Recursive download confirmation - Recursieve donwloadbevestiging + + qBittorrent was just updated and needs to be restarted for the changes to be effective. + qBittorrent is bijgewerkt en moet opnieuw gestart worden om de wijzigingen toe te passen. - Never - Nooit - - - - qBittorrent was just updated and needs to be restarted for the changes to be effective. - qBittorrent is bijgewerkt en moet opnieuw gestart worden om de wijzigingen toe te passen. - - - + qBittorrent is closed to tray qBittorrent is naar systeemvak gesloten - + Some files are currently transferring. Er worden momenteel een aantal bestanden overgedragen. - + Are you sure you want to quit qBittorrent? Weet u zeker dat u qBittorrent wilt afsluiten? - + &No Nee - + &Yes Ja - + &Always Yes Altijd ja - + Options saved. Opties opgeslagen - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Ontbrekende Python-runtime - + qBittorrent Update Available qBittorrent-update beschikbaar - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python is vereist om de zoekmachine te gebruiken maar dit lijkt niet geïnstalleerd. Wilt u het nu installeren? - + Python is required to use the search engine but it does not seem to be installed. Python is vereist om de zoekmachine te gebruiken maar dit lijkt niet geïnstalleerd. - - + + Old Python Runtime Verouderde Python-runtime - + A new version is available. Er is een nieuwe versie beschikbaar. - + Do you want to download %1? Wilt u %1 downloaden? - + Open changelog... Wijzigingenlogboek openen... - + No updates available. You are already using the latest version. Geen updates beschikbaar. U gebruikt de laatste versie. - + &Check for Updates Controleren op updates - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Uw Python-versie (%1) is verouderd. Minimale vereiste: %2 Wilt u nu een nieuwere versie installeren? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Uw Pythonversie (%1) is verouderd. Werk bij naar de laatste versie om zoekmachines te laten werken. Minimale vereiste: %2. - + + Paused + Gepauzeerd + + + Checking for Updates... Controleren op updates... - + Already checking for program updates in the background Reeds aan het controleren op programma-updates op de achtergrond - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Downloadfout - Python setup could not be downloaded, reason: %1. Please install it manually. - Python-installatie kon niet gedownload worden, reden: %1. + Python-installatie kon niet gedownload worden, reden: %1. Gelieve het handmatig te installeren. - - + + Invalid password Ongeldig wachtwoord - + Filter torrents... Torrents filteren... - + Filter by: Filteren op: - + The password must be at least 3 characters long Het wachtwoord moet minstens 3 tekens lang zijn - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' bevat .torrent-bestanden, wilt u verdergaan met hun download? - - - + The password is invalid Het wachtwoord is ongeldig - + DL speed: %1 e.g: Download speed: 10 KiB/s Downloadsnelheid: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Uploadsnelheid: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Verbergen - + Exiting qBittorrent qBittorrent afsluiten - + Open Torrent Files Torrentbestanden openen - + Torrent Files Torrentbestanden @@ -4199,133 +4420,133 @@ Gelieve het handmatig te installeren. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O-fout: %1 - + The file size (%1) exceeds the download limit (%2) De bestandsgrootte (%1) overschrijdt de downloadlimiet (%2). - + Exceeded max redirections (%1) Maximum aantal omleidingen overschreden (%1) - + Redirected to magnet URI Omgeleid naar magneetkoppeling - + The remote host name was not found (invalid hostname) De externe hostnaam werd niet gevonden (ongeldige hostnaam) - + The operation was canceled De bewerking werd geannuleerd - + The remote server closed the connection prematurely, before the entire reply was received and processed De externe server heeft de verbinding vroegtijdig afgesloten, voordat het volledige antwoord ontvangen en verwerkt werd - + The connection to the remote server timed out De verbinding met de externe server is verlopen - + SSL/TLS handshake failed SSL/TLS handshake mislukt - + The remote server refused the connection De externe server heeft de verbinding geweigerd - + The connection to the proxy server was refused De verbinding naar de proxyserver werd geweigerd - + The proxy server closed the connection prematurely De proxyserver heeft de verbinding vroegtijdig afgesloten - + The proxy host name was not found De proxy-hostnaam werd niet gevonden - + The connection to the proxy timed out or the proxy did not reply in time to the request sent De verbinding naar de proxy is verlopen of de proxy reageerde niet op tijd op het verzonden verzoek - + The proxy requires authentication in order to honor the request but did not accept any credentials offered De proxy vereist authenticatie om in te kunnen gaan op het verzoek maar accepteerde geen van de aangeboden aanmeldingsgegevens - + The access to the remote content was denied (401) De toegang tot de externe inhoud werd geweigerd (401) - + The operation requested on the remote content is not permitted De gevraagde bewerking op de externe inhoud is niet toegestaan - + The remote content was not found at the server (404) De externe inhoud werd niet teruggevonden op de server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted De externe server vereist authenticatie om de inhoud aan te bieden maar de gegeven aanmeldingsgegevens werden niet geaccepteerd - + The Network Access API cannot honor the request because the protocol is not known De netwerktoegang-API kon niet ingaan op het verzoek omdat het protocol niet bekend is - + The requested operation is invalid for this protocol De gevraagde bewerking is niet geldig voor dit protocol - + An unknown network-related error was detected Er werd een onbekende netwerkgerelateerde fout gevonden - + An unknown proxy-related error was detected Er werd een onbekende proxy-gerelateerde fout gevonden - + An unknown error related to the remote content was detected Er werd een onbekende fout, gerelateerd aan de externe inhoud, gevonden - + A breakdown in protocol was detected Er werd een storing in het protocol gedetecteerd - + Unknown error Onbekende fout @@ -4333,7 +4554,12 @@ Gelieve het handmatig te installeren. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSL-fout negeren, URL: "%1", fouten: "%2" @@ -5705,294 +5931,307 @@ Gelieve het handmatig te installeren. BitTorrent - + RSS RSS - Web UI - Web-UI + Web-UI - + Advanced Geavanceerd - + Customize UI Theme... UI-thema aanpassen... - + Transfer List Overdrachtlijst - + Confirm when deleting torrents Bevestigen bij verwijderen van torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - + Geeft een bevestigingsvenster weer bij het pauzeren/hervatten van alle torrents - Confirm "Pause/Resume all" actions - + Bevestigen van "Alles pauzeren/hervatten"-acties - + Use alternating row colors In table elements, every other row will have a grey background. Afwisselende rijkleuren gebruiken - + Hide zero and infinity values Waarden nul en oneindig verbergen - + Always Altijd - Paused torrents only - Alleen gepauzeerde torrents + Alleen gepauzeerde torrents - + Action on double-click Actie bij dubbelklikken - + Downloading torrents: Downloadende torrents: - - Start / Stop Torrent - Torrent starten/stoppen + Torrent starten/stoppen - - + + Open destination folder Doelmap openen - - + + No action Geen actie - + Completed torrents: Voltooide torrents: - + Auto hide zero status filters Filters met nulstatus automatisch verbergen - + Desktop Bureaublad - + Start qBittorrent on Windows start up qBittorrent starten bij opstarten van Windows - + Show splash screen on start up Splash-screen weergeven bij opstarten - + Confirmation on exit when torrents are active Bevestiging bij afsluiten wanneer torrents actief zijn - + Confirmation on auto-exit when downloads finish Bevestiging bij automatisch afsluiten wanneer downloads voltooid zijn - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Om qBittorrent in te stellen als standaardprogramma voor .torrent-bestanden en/of magneetkoppelingen<br/>kunt u het dialoogvenster <span style=" font-weight:600;">Standaardprogramma's</span> via het <span style=" font-weight:600;">configuratiescherm</span> gebruiken.</p></body></html> - + KiB KiB - + Torrent content layout: Indeling van torrent-inhoud: - + Original Oorspronkelijk - + Create subfolder Submap aanmaken - + Don't create subfolder Geen submap aanmaken - + The torrent will be added to the top of the download queue De torrent wordt bovenaan de downloadwachtrij toegevoegd - + Add to top of queue The torrent will be added to the top of the download queue Bovenaan wachtrij toevoegen - + When duplicate torrent is being added - + Wanneer een dubbele torrent toegevoegd wordt - + Merge trackers to existing torrent - + Trackers samenvoegen in bestaande torrent + + + + Keep unselected files in ".unwanted" folder + Niet-geselecteerde bestanden in ".unwanted"-map houden - + Add... Toevoegen... - + Options.. Opties... - + Remove Verwijderen - + Email notification &upon download completion Melding via e-mail wanneer download voltooid is - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Peer-verbindingsprotocol: - + Any Om het even welke - + I2P (experimental) I2P (experimenteel) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Als &quot;gemengde modus&quot; is ingeschakeld, kunnen I2P-torrents ook peers krijgen van andere bronnen dan de tracker, en verbinding maken met gewone IP's, zonder enige anonimisering. Dit kan nuttig zijn als de gebruiker niet geïnteresseerd is in de anonimisering van I2P, maar toch wil kunnen verbinden met I2P-peers.</p></body></html> + <html><head/><body><p>Als &quot;gemengde modus&quot; is ingeschakeld, kunnen I2P-torrents ook peers krijgen van andere bronnen dan de tracker, en verbinding maken met gewone IP's, zonder enige anonimisering. Dit kan nuttig zijn als de gebruiker niet geïnteresseerd is in de anonimisering van I2P, maar toch wil kunnen verbinden met I2P-peers.</p></body></html> - + Mixed mode Gemengde modus - + Some options are incompatible with the chosen proxy type! Sommige opties zijn niet compatibel met het gekozen proxy-type! - + If checked, hostname lookups are done via the proxy Indien aangevinkt, worden hostnamen opgezocht via de proxy - + Perform hostname lookup via proxy Opzoeken van hostnamen uitvoeren via proxy - + Use proxy for BitTorrent purposes Proxy gebruiken voor BitTorrent-doeleinden - + RSS feeds will use proxy RSS-feeds zullen proxy gebruiken - + Use proxy for RSS purposes Proxy gebruiken voor RSS-doeleinden - + Search engine, software updates or anything else will use proxy Zoekmachine, software updates of iets anders zal gebruik maken van proxy - + Use proxy for general purposes Proxy gebruiken voor algemene doeleinden - + IP Fi&ltering IP-filtering - + Schedule &the use of alternative rate limits Gebruik van alternatieve snelheidsbegrenzing inplannen - + From: From start time Van: - + To: To end time Tot: - + Find peers on the DHT network Peers zoeken op het DHT-netwerk - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Versleuteling vereisen: uitsluitend verbinden met peers met protocolversleutelin Versleuteling uitschakelen: uitsluitend verbinden met peers zonder protocolversleuteling - + Allow encryption Versleuteling toestaan - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Meer informatie</a>) - + Maximum active checking torrents: Maximaal aantal actieve controlerende torrents: - + &Torrent Queueing Torrents in wachtrij plaatsen - + When total seeding time reaches - + Wanneer een totale seed-tijd bereikt wordt van - + When inactive seeding time reaches - + Wanneer een niet-actieve seed-tijd bereikt wordt van - A&utomatically add these trackers to new downloads: - Deze trackers automatisch toevoegen aan nieuwe downloads: + Deze trackers automatisch toevoegen aan nieuwe downloads: - + RSS Reader RSS-lezer - + Enable fetching RSS feeds Ophalen van RSS-feeds inschakelen - + Feeds refresh interval: Vernieuwinterval feeds: - + + Same host request delay: + Vertraging voor verzoek van dezelfde host: + + + Maximum number of articles per feed: Maximaal aantal artikels per feed: - - - + + + min minutes min - + Seeding Limits Begrenzing voor seeden - Pause torrent - Torrent pauzeren + Torrent pauzeren - + Remove torrent Torrent verwijderen - + Remove torrent and its files Torrent en zijn bestanden verwijderen - + Enable super seeding for torrent Superseeden inschakelen voor torrent - + When ratio reaches Wanneer verhouding bereikt wordt van - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Automatische RSS-torrent-downloader - + Enable auto downloading of RSS torrents Automatisch downloaden van RSS-torrents inschakelen - + Edit auto downloading rules... Regels voor automatisch downloaden bewerken... - + RSS Smart Episode Filter RSS slimme afleveringsfilter - + Download REPACK/PROPER episodes REPACK/PROPER-afleveringen downloaden - + Filters: Filters: - + Web User Interface (Remote control) Web-gebruikersinterface (bediening op afstand) - + IP address: IP-adres: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Geef een IPv4- of IPv6-adres op. U kunt "0.0.0.0" opgeven voor om het "::" voor om het even welk IPv6-adres of "*" voor IPv4 en IPv6. - + Ban client after consecutive failures: Cliënt verbannen na opeenvolgende fouten: - + Never Nooit - + ban for: verbannen voor: - + Session timeout: Sessie-timeout: - + Disabled Uitgeschakeld - Enable cookie Secure flag (requires HTTPS) - Secure-flag van cookie inschakelen (vereist HTTPS) + Secure-flag van cookie inschakelen (vereist HTTPS) - + Server domains: Server-domeinen: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ zet u er domeinnamen in die gebruikt worden door de WebUI-server. Gebruik ';' om meerdere items te splitsen. Jokerteken '*' kan gebruikt worden. - + &Use HTTPS instead of HTTP HTTPS in plaats van HTTP gebruiken - + Bypass authentication for clients on localhost Authenticatie overslaan voor clients op localhost - + Bypass authentication for clients in whitelisted IP subnets Authenticatie overslaan voor clients in toegestane IP-subnets - + IP subnet whitelist... Toegestane IP-subnets... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Geef reverse proxy IP's (of subnets, bijvoorbeeld 0.0.0.0/24) op om forwarded client adres te gebruiken (X-Forwarded-For header). Gebruik ';' om meerdere items te splitsen. - + Upda&te my dynamic domain name Mijn dynamische domeinnaam bijwerken - + Minimize qBittorrent to notification area qBittorrent naar systeemvak minimaliseren - + + Search + Zoeken + + + + WebUI + + + + Interface Interface - + Language: Taal: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Stijl systeemvakpictogram - - + + Normal Normaal - + File association Bestandskoppeling - + Use qBittorrent for .torrent files qBittorrent gebruiken voor .torrent-bestanden - + Use qBittorrent for magnet links qBittorrent gebruiken voor magneetkoppelingen - + Check for program updates Op programma-updates controleren - + Power Management Energiebeheer - + + &Log Files + + + + Save path: Opslagpad: - + Backup the log file after: Back-up maken van logbestand na: - + Delete backup logs older than: Back-up-logs verwijderen die ouder zijn dan: - + + Show external IP in status bar + + + + When adding a torrent Bij toevoegen torrent - + Bring torrent dialog to the front Torrent-dialoogvenster naar voor brengen - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Ook .torrent-bestanden verwijderen waarvan de toevoeging geannuleerd werd. - + Also when addition is cancelled Ook wanneer toevoeging geannuleerd is - + Warning! Data loss possible! Waarschuwing! Gegevensverlies mogelijk! - + Saving Management Opslagbeheer - + Default Torrent Management Mode: Standaard torrent-beheermodus: - + Manual Handmatig - + Automatic Automatisch - + When Torrent Category changed: Wanneer torrentcategorie wijzigt: - + Relocate torrent Torrent verplaatsen - + Switch torrent to Manual Mode Torrent overschakelen naar handmatige modus - - + + Relocate affected torrents Beïnvloede torrents verplaatsen - - + + Switch affected torrents to Manual Mode Beïnvloede torrents overschakelen naar handmatige modus - + Use Subcategories Subcategorieën gebruiken - + Default Save Path: Standaard opslagpad: - + Copy .torrent files to: .torrent-bestanden kopiëren naar: - + Show &qBittorrent in notification area qBittorrent weergeven in systeemvak - &Log file - Logbestand + Logbestand - + Display &torrent content and some options Torrentinhoud en enkele opties weergeven - + De&lete .torrent files afterwards .torrent-bestanden nadien verwijderen - + Copy .torrent files for finished downloads to: .torrent-bestanden voor voltooide downloads kopiëren naar: - + Pre-allocate disk space for all files Schijfruimte vooraf toewijzen voor alle bestanden - + Use custom UI Theme Aangepast UI-thema gebruiken - + UI Theme file: UI-themabestand: - + Changing Interface settings requires application restart Wijzigen van interface-instellingen vereist opnieuw starten van de toepassing - + Shows a confirmation dialog upon torrent deletion Geeft een bevestigingsvenster weer bij verwijderen van een torrent - - + + Preview file, otherwise open destination folder Voorbeeld van bestand weergeven, anders doelmap openen - - Show torrent options - Torrent-opties weergeven + Torrent-opties weergeven - + Shows a confirmation dialog when exiting with active torrents Geeft een bevestigingsvenster weer bij het afsluiten wanneer er actieve torrents zijn - + When minimizing, the main window is closed and must be reopened from the systray icon Bij het minimaliseren wordt het hoofdventer gesloten en moet het opnieuw geopend worden via het systeemvakpictogram - + The systray icon will still be visible when closing the main window Het systeemvakpictogram zal nog steeds zichtbaar zijn bij het sluiten van het hoofdvenster - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window qBittorrent naar systeemvak sluiten - + Monochrome (for dark theme) Monochroom (voor donker thema) - + Monochrome (for light theme) Monochroom (voor licht thema) - + Inhibit system sleep when torrents are downloading Slaapstand voorkomen wanneer torrents aan het downloaden zijn - + Inhibit system sleep when torrents are seeding Slaapstand voorkomen wanneer torrents aan het seeden zijn - + Creates an additional log file after the log file reaches the specified file size Maakt een extra logbestand aan nadat het logbestand de opgegeven bestandsgrootte bereikt heeft - + days Delete backup logs older than 10 days dagen - + months Delete backup logs older than 10 months maand - + years Delete backup logs older than 10 years jaar - + Log performance warnings Prestatiewaarschuwingen loggen - The torrent will be added to download list in a paused state - De torrent zal in een gepauzeerde status aan de downloadlijst toegevoegd worden + De torrent zal in een gepauzeerde status aan de downloadlijst toegevoegd worden - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Download niet automatisch starten - + Whether the .torrent file should be deleted after adding it Of het .torrent-bestand moet worden verwijderd nadat het is toegevoegd - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Volledige bestandsgroottes toewijzen op schijf voordat het downloaden begint om fragmentatie tot een minimum te beperken. Alleen nuttig voor HDD's. - + Append .!qB extension to incomplete files .!qB-extensie toevoegen aan onvolledige bestanden - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Wanneer een torrent gedownload is, aanbieden om torrents toe te voegen van alle .torrent-bestanden die er zich in bevinden - + Enable recursive download dialog Venster voor recursieve download inschakelen - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatisch: verschillende torrent-eigenschappen (bijvoorbeeld opslagpad) worden bepaald door de bijbehorende categorie Handmatig: verschillende torrent-eigenschappen (bijvoorbeeld opslagpad) moeten handmatig worden toegewezen - + When Default Save/Incomplete Path changed: Wanneer standaard opslagpad of onvolledig pad wijzigt: - + When Category Save Path changed: Wanneer categorie-opslagpad wijzigt: - + Use Category paths in Manual Mode Categoriepaden gebruiken in handmatige modus - + Resolve relative Save Path against appropriate Category path instead of Default one Relatief opslagpad omzetten in het juiste categoriepad in plaats van het standaardpad - + Use icons from system theme Pictogrammen van systeemthema gebruiken - + Window state on start up: Vensterstatus bij opstarten: - + qBittorrent window state on start up Status van qBittorrent-venster bij opstarten - + Torrent stop condition: Stop-voorwaarde torrent: - - + + None Geen - - + + Metadata received Metadata ontvangen - - + + Files checked Bestanden gecontroleerd - + Ask for merging trackers when torrent is being added manually - + Vragen om trackers samen te voegen wanneer torrent handmatig toegevoegd wordt - + Use another path for incomplete torrents: Ander pad gebruiken voor onvolledige torrents: - + Automatically add torrents from: Torrents automatisch toevoegen vanuit: - + Excluded file names Uitgesloten bestandsnamen - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: filtert de exacte bestandsnaam. readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt' maar niet 'readme10.txt'. - + Receiver Ontvanger - + To: To receiver Aan: - + SMTP server: SMTP-server: - + Sender Afzender - + From: From sender Van: - + This server requires a secure connection (SSL) Deze server vereist een veilige verbinding (SSL) - - + + Authentication Authenticatie - - - - + + + + Username: Gebruikersnaam: - - - - + + + + Password: Wachtwoord: - + Run external program Extern programma uitvoeren - Run on torrent added - Uitvoeren wanneer torrent toegevoegd wordt + Uitvoeren wanneer torrent toegevoegd wordt - Run on torrent finished - Uitvoeren wanneer torrent klaar is + Uitvoeren wanneer torrent klaar is - + Show console window Consolevenster weergeven - + TCP and μTP TCP en µTP - + Listening Port Luisterpoort - + Port used for incoming connections: Poort voor binnenkomende verbindingen: - + Set to 0 to let your system pick an unused port Instellen op 0 om uw systeem een ongebruikte poort te laten kiezen - + Random Willekeurig - + Use UPnP / NAT-PMP port forwarding from my router UPnP/NAT-PMP port forwarding van mijn router gebruiken - + Connections Limits Begrenzing verbindingen - + Maximum number of connections per torrent: Maximaal aantal verbindingen per torrent: - + Global maximum number of connections: Algemeen maximaal aantal verbindingen: - + Maximum number of upload slots per torrent: Maximaal aantal uploadslots per torrent: - + Global maximum number of upload slots: Algemeen maximaal aantal uploadslots: - + Proxy Server Proxy-server - + Type: Type: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Poort: - + Otherwise, the proxy server is only used for tracker connections Anders wordt de proxy server alleen gebruikt voor trackerverbindingen - + Use proxy for peer connections Proxy gebruiken voor peer-verbindingen - + A&uthentication Authenticatie - + Info: The password is saved unencrypted Info: het wachtwoord wordt onversleuteld opgeslagen - + Filter path (.dat, .p2p, .p2b): Filterpad (.dat, p2p, p2b): - + Reload the filter Filter opnieuw laden - + Manually banned IP addresses... Handmatig verbannen IP-adressen... - + Apply to trackers Toepassen op trackers - + Global Rate Limits Algemene snelheidsbegrenzing - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Upload: - - + + Download: Download: - + Alternative Rate Limits Alternatieve snelheidsbegrenzing - + Start time Begintijd - + End time Eindtijd - + When: Wanneer: - + Every day Elke dag - + Weekdays Weekdagen - + Weekends Weekends - + Rate Limits Settings Instellingen snelheidsbegrenzing - + Apply rate limit to peers on LAN Snelheidsbegrenzing toepassen op peers op LAN - + Apply rate limit to transport overhead Snelheidsbegrenzing toepassen op transport-overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Snelheidsbegrenzing toepassen op µTP-protocol - + Privacy Privacy - + Enable DHT (decentralized network) to find more peers DHT (decentralized network) inschakelen om meer peers te vinden - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Peers uitwisselen met compatibele Bittorrent-clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Peer-uitwisseling (PeX) inschakelen om meer peers te vinden - + Look for peers on your local network Zoeken naar peers in uw lokaal netwerk - + Enable Local Peer Discovery to find more peers Lokale peer-ontdekking inschakelen om meer peers te vinden - + Encryption mode: Versleutelingsmodus: - + Require encryption Versleuteling vereisen - + Disable encryption Versleuteling uitschakelen - + Enable when using a proxy or a VPN connection Inschakelen bij gebruik van een proxy of vpn-verbinding - + Enable anonymous mode Anonieme modus inschakelen - + Maximum active downloads: Maximaal aantal actieve downloads: - + Maximum active uploads: Maximaal aantal actieve uploads: - + Maximum active torrents: Maximaal aantal actieve torrents: - + Do not count slow torrents in these limits Trage torrents niet meerekenen bij deze begrenzing - + Upload rate threshold: Uploadsnelheid-drempel: - + Download rate threshold: Downloadsnelheid-drempel: - - - + + + + sec seconds sec - + Torrent inactivity timer: Inactiviteitstimer van torrent: - + then en daarna - + Use UPnP / NAT-PMP to forward the port from my router UPnP/NAT-PMP gebruiken om de poort van mijn router te forwarden - + Certificate: Certificaat: - + Key: Sleutel: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informatie over certificaten</a> - + Change current password Huidig wachtwoord wijzigen - Use alternative Web UI - Alternatieve web-UI gebruiken + Alternatieve web-UI gebruiken - + Files location: Locatie van bestanden: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Beveiliging - + Enable clickjacking protection Clickjacking-bescherming inschakelen - + Enable Cross-Site Request Forgery (CSRF) protection Bescherming tegen Cross-Site Request Forgery (CSRF) inschakelen - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Validatie van host-header inschakelen - + Add custom HTTP headers Aangepaste HTTP-headers toevoegen - + Header: value pairs, one per line Header: waardeparen, één per regel - + Enable reverse proxy support Ondersteuning voor reverse proxy inschakelen - + Trusted proxies list: Lijst van vertrouwde proxy's: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Dienst: - + Register Registreren - + Domain name: Domeinnaam: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Door deze opties in te schakelen, kunt u uw .torrent-bestanden <strong>onomkeerbaar kwijtraken</strong>! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Als u de tweede optie inschakelt (&ldquo;Ook als toevoegen geannuleerd wordt&rdquo;), zal het .torrent-bestand <strong>verwijderd worden</strong>, zelfs als u op &ldquo;<strong>annuleren</strong>&rdquo; drukt in het &ldquo;torrent toevoegen&rdquo;-scherm - + Select qBittorrent UI Theme file qBittorrent-UI-themabestand selecteren - + Choose Alternative UI files location Locatie van bestanden van alternatieve UI kiezen - + Supported parameters (case sensitive): Ondersteunde parameters (hoofdlettergevoelig): - + Minimized Geminimaliseerd - + Hidden Verborgen - + Disabled due to failed to detect system tray presence Uitgeschakeld omdat de aanwezigheid van het systeemvak niet is gedetecteerd - + No stop condition is set. Er is geen stop-voorwaarde ingesteld. - + Torrent will stop after metadata is received. Torrent zal stoppen nadat metadata is ontvangen. - - Torrents that have metadata initially aren't affected. - Torrents die in eerste instantie metadata hebben worden niet beïnvloed. - - - + Torrent will stop after files are initially checked. Torrent zal stoppen nadat de bestanden in eerste instantie zijn gecontroleerd. - + This will also download metadata if it wasn't there initially. Dit zal ook metadata downloaden als die er aanvankelijk niet was. - + %N: Torrent name %N: naam torrent - + %L: Category %L: categorie - + %F: Content path (same as root path for multifile torrent) %F: pad naar inhoud (zelfde als root-pad voor torrent met meerdere bestanden) - + %R: Root path (first torrent subdirectory path) %R: root-pad (pad naar eerste submap van torrent) - + %D: Save path %D: opslagpad - + %C: Number of files %C: aantal bestanden - + %Z: Torrent size (bytes) %Z: grootte torrent (bytes) - + %T: Current tracker %T: huidige tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: omring de parameter met aanhalingstekens om te vermijden dat tekst afgekapt wordt bij witruimte (bijvoorbeeld: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Geen) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Een torrent zal als traag beschouwd worden als zijn download- en uploadsnelheden onder deze waarden blijven voor het aantal seconden in "inactiviteitstimer van torrent". - + Certificate Certificaat - + Select certificate Certificaat selecteren - + Private key Privésleutel - + Select private key Privésleutel selecteren - + + WebUI configuration failed. Reason: %1 + WebUI-configuratie mislukt. Reden: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Map selecteren om te monitoren - + Adding entry failed Item toevoegen mislukt - - Location Error - Locatiefout + + The WebUI username must be at least 3 characters long. + De WebUI-gebruikersnaam moet minstens 3 tekens lang zijn. - - The alternative Web UI files location cannot be blank. - De alternatieve locatie van Web-UI-bestanden mag niet leeg zijn. + + The WebUI password must be at least 6 characters long. + Het WebUI-wachtwoord moet minstens 6 tekens lang zijn. + + + + Location Error + Locatiefout - - + + Choose export directory Export-map kiezen - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Wanneer deze opties ingeschakeld zijn, zal qBittorrent .torrent-bestanden <strong>verwijderen</strong> nadat ze met succes (de eerste optie) of niet (de tweede optie) toegevoegd zijn aan de downloadwachtrij. Dit wordt <strong>niet alleen</strong> toegepast op de bestanden die via de &ldquo;torrent toevoegen&rdquo;-menu-optie geopend worden, maar ook op de bestanden die via de <strong>bestandskoppeling</strong> geopend worden - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent-UI-themabestand (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: labels (gescheiden door komma) - + %I: Info hash v1 (or '-' if unavailable) %I: Info-hash v1 (of '-' indien niet beschikbaar) - + %J: Info hash v2 (or '-' if unavailable) %J: Info-hash v2 (of '-' indien niet beschikbaar) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent ID (ofwel sha-1 info-hash voor v1-torrent of afgekapte sha-256 info-hash voor v2/hybride-torrent) - - - + + + Choose a save directory Opslagmap kiezen - + + Torrents that have metadata initially will be added as stopped. + Torrents die in eerste instantie metadata hebben, worden toegevoegd als gestopt. + + + Choose an IP filter file IP-filterbestand kiezen - + All supported filters Alle ondersteunde filters - + + The alternative WebUI files location cannot be blank. + De alternatieve locatie van WebUI-bestanden mag niet leeg zijn. + + + Parsing error Verwerkingsfout - + Failed to parse the provided IP filter Verwerken van opgegeven IP-filter mislukt - + Successfully refreshed Vernieuwen gelukt - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Verwerken van opgegeven IP-filter gelukt: er werden %1 regels toegepast. - + Preferences Voorkeuren - + Time Error Tijd-fout - + The start time and the end time can't be the same. De starttijd en de eindtijd kan niet hetzelfde zijn. - - + + Length Error Lengte-fout - - - The Web UI username must be at least 3 characters long. - De Web-UI-gebruikersnaam moet minstens 3 tekens lang zijn. - - - - The Web UI password must be at least 6 characters long. - Het Web-UI-wachtwoord moet minstens 6 tekens lang zijn. - PeerInfo - + Unknown Onbekend - + Interested (local) and choked (peer) Geïnteresseerd (lokaal) en choked (peer) - + Interested (local) and unchoked (peer) Geïnteresseerd (lokaal) en unchoked (peer) - + Interested (peer) and choked (local) Geïnteresseerd (peer) en choked (lokaal) - + Interested (peer) and unchoked (local) Geïnteresseerd (peer) en unchoked (lokaal) - + Not interested (local) and unchoked (peer) Niet geïnteresseerd (lokaal) en unchoked (peer) - + Not interested (peer) and unchoked (local) Niet geïnteresseerd (peer) en unchoked (lokaal) - + Optimistic unchoke Optimistische unchoke - + Peer snubbed Peer gestopt met uploaden - + Incoming connection Binnenkomende verbinding - + Peer from DHT Peer van DHT - + Peer from PEX Peer via PEX - + Peer from LSD Peer van LSD - + Encrypted traffic Versleuteld verkeer - + Encrypted handshake Versleutelde handdruk + + + Peer is using NAT hole punching + + PeerListWidget @@ -7501,7 +7913,7 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt' maar n IP/Address - + IP/adres @@ -7645,7 +8057,7 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt' maar n Peer "%1" is manueel verbannen - + N/A N/B @@ -7668,7 +8080,7 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt' maar n Lijst van toe te voegen peers (een IP per regel): - + Format: IPv4:port / [IPv6]:port Formaat: IPv4:poort / [IPv6]:poort @@ -7709,27 +8121,27 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt' maar n PiecesBar - + Files in this piece: Bestanden in dit deeltje: - + File in this piece: Bestand in dit deeltje: - + File in these pieces: Bestand in deze deeltjes: - + Wait until metadata become available to see detailed information Wacht totdat metadata beschikbaar wordt om gedetailleerde informatie te zien - + Hold Shift key for detailed information Shif-toets ingedrukt houden voor gedetailleerde informatie @@ -7742,58 +8154,58 @@ readme[0-9].txt: filtert 'readme1.txt', 'readme2.txt' maar n Zoekplugins - + Installed search plugins: Geïnstalleerde zoekplugins: - + Name Naam - + Version Versie - + Url URL - - + + Enabled Ingeschakeld - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Waarschuwing: verzeker u ervan dat u voldoet aan de wetten op auteursrecht in uw land wanneer u torrents downloadt via een van deze zoekmachines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> U kunt hier nieuwe zoekmachineplugins vinden: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Een nieuwe installeren - + Check for updates Op updates controleren - + Close Sluiten - + Uninstall Verwijderen @@ -7913,17 +8325,17 @@ Deze plugins zijn uitgeschakeld. Plugin-bron - + Search plugin source: Zoekplugin-bron: - + Local file Lokaal bestand - + Web link Webkoppeling @@ -7941,70 +8353,70 @@ Deze plugins zijn uitgeschakeld. Power management found suitable D-Bus interface. Interface: %1 - + Energiebeheer heeft geschikte D-Bus interface gevonden. Interface: %1 Power management error. Did not found suitable D-Bus interface. - + Fout in energiebeheer. Geen geschikte D-Bus interface gevonden. Power management error. Action: %1. Error: %2 - + Fout in energiebeheer. Actie: %1. Fout: %2 Power management unexpected error. State: %1. Error: %2 - + Onverwachte fout in energiebeheer. Status: %1. Error: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: De volgende bestanden uit torrent "%1" ondersteunen het weergeven van een voorbeeld. Selecteer er een van: - + Preview Voorbeeld - + Name Naam - + Size Grootte - + Progress Voortgang - + Preview impossible Voorbeeld onmogelijk - + Sorry, we can't preview this file: "%1". Sorry, we kunnen geen voorbeeld weergeven van dit bestand: "%1". - + Resize columns Kolomgroottes aanpassen - + Resize all non-hidden columns to the size of their contents Alle niet-verborgen kolommen aanpassen aan de grootte van hun inhoud @@ -8017,27 +8429,27 @@ Deze plugins zijn uitgeschakeld. Private::FileLineEdit - + Path does not exist Pad bestaat niet - + Path does not point to a directory Pad wijst niet naar een map - + Path does not point to a file Pad wijst niet naar een bestand - + Don't have read permission to path Geen leesrechten voor pad - + Don't have write permission to path Geen schrijfrechten voor pad @@ -8078,12 +8490,12 @@ Deze plugins zijn uitgeschakeld. PropertiesWidget - + Downloaded: Gedownload: - + Availability: Beschikbaarheid: @@ -8098,53 +8510,53 @@ Deze plugins zijn uitgeschakeld. Overdracht - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Tijd actief: - + ETA: Geschatte resterende tijd: - + Uploaded: Geüpload: - + Seeds: Seeds: - + Download Speed: Downloadsnelheid: - + Upload Speed: Uploadsnelheid: - + Peers: Peers: - + Download Limit: Downloadbegrenzing: - + Upload Limit: Uploadbegrenzing: - + Wasted: Verloren: @@ -8154,193 +8566,249 @@ Deze plugins zijn uitgeschakeld. Verbindingen: - + Information Informatie - + Info Hash v1: Info-hash v1: - + Info Hash v2: Info-hash v2: - + Comment: Opmerkingen: - + Select All Alles selecteren - + Select None Niets selecteren - + Share Ratio: Deelverhouding: - + Reannounce In: Opnieuw aankondigen over: - + Last Seen Complete: Laatst volledig gezien: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Totale grootte: - + Pieces: Deeltjes: - + Created By: Aangemaakt door: - + Added On: Toegevoegd op: - + Completed On: Voltooid op: - + Created On: Aangemaakt op: - + + Private: + + + + Save Path: Opslagpad: - + Never Nooit - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (%3 in bezit) - - + + %1 (%2 this session) %1 (%2 deze sessie) - - + + + N/A N/B - + + Yes + Ja + + + + No + Nee + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (geseed voor %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 totaal) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 gem.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nieuwe webseed + Nieuwe webseed - Remove Web seed - Webseed verwijderen + Webseed verwijderen - Copy Web seed URL - Webseed-URL kopiëren + Webseed-URL kopiëren - Edit Web seed URL - Webseed-URL bewerken + Webseed-URL bewerken - + Filter files... Bestanden filteren... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Snelheidsgrafieken zijn uitgeschakeld - + You can enable it in Advanced Options U kunt het inschakelen in de geavanceerde opties - New URL seed New HTTP source - Nieuwe URL-seed + Nieuwe URL-seed - New URL seed: - Nieuwe URL-seed: + Nieuwe URL-seed: - - This URL seed is already in the list. - Deze URL-seed staat al in de lijst. + Deze URL-seed staat al in de lijst. - + Web seed editing Webseed bewerken - + Web seed URL: Webseed-URL: @@ -8359,22 +8827,22 @@ Deze plugins zijn uitgeschakeld. Kon gegevens van automatische RSS-downloader niet opslaan in %1. Fout: %2 - + Invalid data format Ongeldig gegevensformaat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + RSS-artikel '%1' wordt geaccepteerd door regel '%2'. Proberen om torrent toe te voegen... - + Failed to read RSS AutoDownloader rules. %1 - + Lezen van regels van automatische RSS-downloader mislukt. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Kon regels van automatische RSS-downloader niet laden. Reden: %1 @@ -8382,22 +8850,22 @@ Deze plugins zijn uitgeschakeld. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Downloaden van RSS-feed op '%1' mislukt. Reden: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-feed op '%1' bijgewerkt. %2 nieuwe artikels toegevoegd. - + Failed to parse RSS feed at '%1'. Reason: %2 Verwerken van RSS-feed op '%1' mislukt. Reden: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS-feed op '%1' is met succes gedownload. Beginnen met verwerken van de feed. @@ -8407,7 +8875,7 @@ Deze plugins zijn uitgeschakeld. Failed to read RSS session data. %1 - + Lezen van RSS-sessiegegevens mislukt. %1 @@ -8433,12 +8901,12 @@ Deze plugins zijn uitgeschakeld. RSS::Private::Parser - + Invalid RSS feed. Ongeldige RSS-feed. - + %1 (line: %2, column: %3, offset: %4). %1 (regel: %2, kolom: %3, offset: %4). @@ -8446,99 +8914,99 @@ Deze plugins zijn uitgeschakeld. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Kon de configuratie van de RSS-sessie niet opslaan. Bestand: "%1". Fout: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Kon de gegevens van de RSS-sessie niet opslaan. Bestand: "%1". Fout: "%2" - - + + RSS feed with given URL already exists: %1. RSS-feed met opgegeven URL bestaat reeds: %1. - + Feed doesn't exist: %1. Feed bestaat niet: %1. - + Cannot move root folder. Kan hoofdmap niet verplaatsen. - - + + Item doesn't exist: %1. Item bestaat niet: %1. - + Couldn't move folder into itself. Kon map niet in zichzelf verplaatsen - + Cannot delete root folder. Kan hoofdmap niet verwijderen. - + Failed to read RSS session data. %1 - + Lezen van RSS-sessiegegevens mislukt. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Verwerken van RSS-sessiegegevens mislukt. Bestand: "%1". Fout: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Laden van RSS-sessiegegevens mislukt. Bestand: "%1". Fout: "ongeldig gegevensformaat". - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Kon RSS-feed niet laden. Feed: "%1". Reden: URL is vereist. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Kon RSS-feed niet laden. Feed: "%1". Reden: UID is ongeldig. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Dubbele RSS-feed gevonden. UID: "%1". Fout: de configuratie lijkt beschadigd te zijn. - + Couldn't load RSS item. Item: "%1". Invalid data format. Kon RSS-item niet laden. Item: "%1". Ongeldig gegevensformaat. - + Corrupted RSS list, not loading it. Beschadigde RSS-lijst. Wordt niet geladen. - + Incorrect RSS Item path: %1. Onjuist RSS-item-pad: %1. - + RSS item with given path already exists: %1. RSS-item met opgegeven pad bestaat reeds: %1. - + Parent folder doesn't exist: %1. Bovenliggende map bestaat niet: %1. @@ -8562,8 +9030,8 @@ Deze plugins zijn uitgeschakeld. - - + + Mark items read Items als gelezen markeren @@ -8588,132 +9056,132 @@ Deze plugins zijn uitgeschakeld. Torrents (dubbelklikken om te downloaden): - - + + Delete Verwijderen - + Rename... Naam wijzigen... - + Rename Naam wijzigen - - + + Update Bijwerken - + New subscription... Nieuw abonnement... - - + + Update all feeds Alle feeds bijwerken - + Download torrent Torrent downloaden - + Open news URL Nieuws-URL openen - + Copy feed URL Feed-URL kopiëren - + New folder... Nieuwe map... - + Edit feed URL... Feed-URL bewerken... - + Edit feed URL Feed-URL bewerken - + Please choose a folder name Mapnaam kiezen - + Folder name: Mapnaam: - + New folder Nieuwe map - - + + Please type a RSS feed URL Typ een RSS-feed-URL - - + + Feed URL: Feed-URL: - + Deletion confirmation Bevestiging verwijdering - + Are you sure you want to delete the selected RSS feeds? Weet u zeker dat u de geselecteerde RSS-feeds wilt verwijderen? - + Please choose a new name for this RSS feed Kies een nieuwe naam voor deze RSS-feed - + New feed name: Nieuwe feed-naam: - + Rename failed Naam wijzigen mislukt - + Date: Datum: - + Feed: - + Feed: - + Author: Auteur: @@ -8721,38 +9189,38 @@ Deze plugins zijn uitgeschakeld. SearchController - + Python must be installed to use the Search Engine. Python moet geïnstalleerd worden om de zoekmachine te gebruiken. - + Unable to create more than %1 concurrent searches. Kan niet meer dan %1 gelijktijdige zoekopdrachten aanmaken. - - + + Offset is out of range Offset is buiten bereik - + All plugins are already up to date. Alle plugins zijn al bijgewerkt. - + Updating %1 plugins %1 plugins bijwerken - + Updating plugin %1 Plugin %1 bijwerken - + Failed to check for plugin updates: %1 Controleren op plugin-updates mislukt: %1 @@ -8827,132 +9295,146 @@ Deze plugins zijn uitgeschakeld. Grootte: - + Name i.e: file name Naam - + Size i.e: file size Grootte - + Seeders i.e: Number of full sources Seeders - + Leechers i.e: Number of partial sources Leechers - Search engine - Zoekmachine + Zoekmachine - + Filter search results... Zoekresultaten filteren... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultaten (<i>%1</i> van <i>%2</i>): - + Torrent names only Alleen torrentnamen - + Everywhere Overal - + Use regular expressions Reguliere expressies gebruiken - + Open download window Downloadvenster openen - + Download Downloaden - + Open description page Beschrijvingspagina openen - + Copy Kopiëren - + Name Naam - + Download link Downloadkoppeling - + Description page URL URL van beschrijvingspagina - + Searching... Zoeken... - + Search has finished Zoeken is voltooid - + Search aborted Zoeken afgebroken - + An error occurred during search... Er trad een fout op tijdens het zoeken... - + Search returned no results Zoeken gaf geen resultaten - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Kolom-zichtbaarheid - + Resize columns Kolomgroottes aanpassen - + Resize all non-hidden columns to the size of their contents Alle niet-verborgen kolommen aanpassen aan de grootte van hun inhoud @@ -8960,104 +9442,104 @@ Deze plugins zijn uitgeschakeld. SearchPluginManager - + Unknown search engine plugin file format. Onbekend bestandsformaat van zoekmachineplugin. - + Plugin already at version %1, which is greater than %2 Plugin is al op versie %1, die hoger is dan %2 - + A more recent version of this plugin is already installed. Er is al een nieuwere versie van deze plugin geïnstalleerd. - + Plugin %1 is not supported. Plugin %1 wordt niet ondersteund. - - + + Plugin is not supported. Plugin wordt niet ondersteund. - + Plugin %1 has been successfully updated. Plugin %1 werd met succes bijgewerkt. - + All categories Alle categorieën - + Movies Films - + TV shows Tv-shows - + Music Muziek - + Games Spellen - + Anime Anime - + Software Software - + Pictures Afbeeldingen - + Books Boeken - + Update server is temporarily unavailable. %1 Updateserver is tijdelijk niet bereikbaar. %1 - - + + Failed to download the plugin file. %1 Downloaden van pluginbestand mislukt. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" is verouderd. bijwerken naar versie %2 - + Incorrect update info received for %1 out of %2 plugins. Onjuiste update-info ontvangen voor %1 van %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') Zoekplugin '%1' bevat ongeldige versie-string ('%2') @@ -9067,114 +9549,153 @@ Deze plugins zijn uitgeschakeld. - - - - Search Zoeken - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Er zijn geen zoekplugins geïnstalleerd. Klik op de knop "zoekplugins..." rechtsonder in het venster om er een aantal te installeren. - + Search plugins... Zoekplugins... - + A phrase to search for. Een zin om naar te zoeken. - + Spaces in a search term may be protected by double quotes. Spaties in een zoekterm kunnen beschermd worden door dubbele aanhalingstekens. - + Example: Search phrase example Voorbeeld: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: zoekt naar <b>foo bar</b> - + All plugins Alle plugins - + Only enabled Alleen ingeschakeld - + + + Invalid data format. + Ongeldig gegevensformaat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: zoekt naar <b>foo</b> en <b>bar</b> - + + Refresh + + + + Close tab Tabblad sluiten - + Close all tabs Alle tabbladen sluiten - + Select... Selecteren... - - - + + Search Engine Zoekmachine - + + Please install Python to use the Search Engine. Installeer Python om de zoekmachine te gebruiken. - + Empty search pattern Leeg zoekpatroon - + Please type a search pattern first Typ eerst een zoekpatroon - + + Stop Stoppen - Search has finished - Zoeken is voltooid + Zoeken is voltooid - Search has failed - Zoeken mislukt + Zoeken mislukt + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een - + Upload: Upload: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Download: - + Alternative speed limits Alternatieve snelheidsbegrenzing @@ -9506,32 +10027,32 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een Gemiddelde tijd in wachtrij: - + Connected peers: Verbonden peers: - + All-time share ratio: Deelverhouding van altijd: - + All-time download: Download van altijd: - + Session waste: Sessie-verlies: - + All-time upload: Upload van altijd: - + Total buffer size: Totale buffergrootte: @@ -9546,12 +10067,12 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een I/O-taken in wachtrij: - + Write cache overload: Schrijfbuffer-overbelasting: - + Read cache overload: Leesbuffer-overbelasting: @@ -9570,51 +10091,67 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een StatusBar - + Connection status: Verbindingsstatus: - - + + No direct connections. This may indicate network configuration problems. Geen directe verbindingen. Dit kan komen door netwerkconfiguratieproblemen. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nodes - + qBittorrent needs to be restarted! qBittorrent moet opnieuw gestart worden! - - - + + + Connection Status: Verbindingsstatus: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. Dit betekent meestal dat qBittorrent mislukte om te luisteren naar de geselecteerde poort voor binnenkomende verbindingen. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klikken om over te schakelen naar alternatieve snelheidbegrenzing - + Click to switch to regular speed limits Klikken om over te schakelen naar algemene snelheidbegrenzing @@ -9643,14 +10180,22 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een Voltooid (0) - Resumed (0) - Hervat (0) + Hervat (0) - Paused (0) - Gepauzeerd (0) + Gepauzeerd (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een Completed (%1) Voltooid (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Gepauzeerd (%1) + Gepauzeerd (%1) @@ -9723,14 +10287,12 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een Verplaatsen (%1) - Resume torrents - Torrents hervatten + Torrents hervatten - Pause torrents - Torrents pauzeren + Torrents pauzeren @@ -9738,9 +10300,8 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een Torrents verwijderen - Resumed (%1) - Hervat (%1) + Hervat (%1) @@ -9781,17 +10342,17 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een TagFilterModel - + Tags Labels - + All Alle - + Untagged Niet gelabeld @@ -9799,52 +10360,64 @@ Klik op de knop "zoekplugins..." rechtsonder in het venster om er een TagFilterWidget - + Add tag... Label toevoegen... - + Remove tag Label verwijderen - + Remove unused tags Niet-gebruikte labels verwijderen - Resume torrents - Torrents hervatten + Torrents hervatten - Pause torrents - Torrents pauzeren + Torrents pauzeren - + Remove torrents Torrents verwijderen - New Tag - Nieuw label + Nieuw label + + + + Start torrents + - + + Stop torrents + + + + Tag: Label: - + + Add tag + + + + Invalid tag name Ongeldige labelnaam - + Tag name '%1' is invalid Labelnaam '%1' is ongeldig @@ -9984,32 +10557,32 @@ Kies een andere naam en probeer het opnieuw. TorrentContentModel - + Name Naam - + Progress Voortgang - + Download Priority Downloadprioriteit - + Remaining Resterend - + Availability Beschikbaarheid - + Total Size Totale grootte @@ -10054,102 +10627,120 @@ Kies een andere naam en probeer het opnieuw. TorrentContentWidget - + Rename error Fout bij naam wijzigen - + Renaming Naam wijzigen - + New name: Nieuwe naam: - + Column visibility Kolom-zichtbaarheid - + Resize columns Kolomgroottes aanpassen - + Resize all non-hidden columns to the size of their contents Alle niet-verborgen kolommen aanpassen aan de grootte van hun inhoud - + Open Openen - + Open containing folder Bijbehorende map openen - + Rename... Naam wijzigen... - + Priority Prioriteit - - + + Do not download Niet downloaden - + Normal Normaal - + High Hoog - + Maximum Maximum - + By shown file order Op weergegeven bestandsvolgorde - + Normal priority Normale prioriteit - + High priority Hoge prioriteit - + Maximum priority Maximale prioriteit - + Priority by shown file order Prioriteit volgens weergegeven bestandsvolgorde + + TorrentCreatorController + + + Too many active tasks + Te veel actieve taken + + + + Torrent creation is still unfinished. + Torrent aanmaken is nog niet voltooid. + + + + Torrent creation failed. + Torrent aanmaken mislukt. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Kies een andere naam en probeer het opnieuw. - + Select file Bestand selecteren - + Select folder Map selecteren @@ -10205,58 +10796,10 @@ Kies een andere naam en probeer het opnieuw. Grootte deeltjes: - + Auto Automatisch - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Kies een andere naam en probeer het opnieuw. Velden - + You can separate tracker tiers / groups with an empty line. U kunt tracker tiers/groepen scheiden met een lege regel. - + Web seed URLs: Webseed-URL's: - + Tracker URLs: Tracker-URL's: - + Comments: Opmerkingen: - + Source: Bron: - + Progress: Voortgang: - + Create Torrent Torrent aanmaken - - + + Torrent creation failed Torrent aanmaken mislukt - + Reason: Path to file/folder is not readable. Reden: pad naar bestand/map is niet leesbaar. - + Select where to save the new torrent Selecteer waar de nieuwe torrent moet opgeslagen worden - + Torrent Files (*.torrent) Torrentbestanden (*.torrent) - - Reason: %1 - Reden: %1 - - - + Add torrent to transfer list failed. - + Torrent toevoegen aan overdrachtlijst mislukt. - + Reason: "%1" - + Reden: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Reden: aangemaakte torrent is ongeldig. Hij zal niet aan de downloadlijst toegevoegd worden. + Toevoegen van torrent mislukt - + Torrent creator Torrent aanmaken - + Torrent created: Torrent aangemaakt: @@ -10396,32 +10930,32 @@ Kies een andere naam en probeer het opnieuw. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Laden van configuratie van gevolgde mappen mislukt. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Verwerken van configuratie van gevolgde mappen van %1 mislukt. Fout: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Laden van configuratie van gevolgde mappen van %1 mislukt. Fout: "ongeldig gegevensformaat". - + Couldn't store Watched Folders configuration to %1. Error: %2 Kon configuratie van gevolgde mappen niet opslaan in %1. Fout: %2 - + Watched folder Path cannot be empty. Het pad van de gevolgde map mag niet leeg zijn. - + Watched folder Path cannot be relative. Het pad van de gevolgde map mag niet relatief zijn. @@ -10429,27 +10963,27 @@ Kies een andere naam en probeer het opnieuw. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Ongeldige magneet-URI. URI: %1. Reden: %2 - + Magnet file too big. File: %1 - + Magneetbestand te groot. Bestand: %1 - + Failed to open magnet file: %1 Openen van magneetbestand mislukt: %1 - + Rejecting failed torrent file: %1 Mislukt torrentbestand verwerpen: %11 - + Watching folder: "%1" Map volgen: "%1" @@ -10457,14 +10991,12 @@ Kies een andere naam en probeer het opnieuw. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Toewijzen van geheugen bij lezen van bestand mislukt. Bestand: "%1". Fout: "%2" - Invalid metadata - Ongeldige metadata + Ongeldige metadata @@ -10495,163 +11027,243 @@ Kies een andere naam en probeer het opnieuw. Ander pad gebruiken voor onvolledige torrent - + Category: Categorie: - + + Torrent Share Limits + + + Torrent speed limits - Torrent-snelheidsbegrenzing + Torrent-snelheidsbegrenzing - + Download: Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Deze zullen de algemene begrenzing niet overschrijden. - + Upload: Upload: - Torrent share limits - Torrent-deelbegrenzing + Torrent-deelbegrenzing - Use global share limit - Algemene deelbegrenzing gebruiken + Algemene deelbegrenzing gebruiken - Set no share limit - Geen deelbegrenzing instellen + Geen deelbegrenzing instellen - Set share limit to - Deelbegrenzing instellen op + Deelbegrenzing instellen op - ratio - ratio + ratio - total minutes - + totaal aantal minuten - inactive minutes - + aantal minuten niet actief - + Disable DHT for this torrent DHT voor deze torrent uitschakelen - + Download in sequential order In sequentiële volgorde downloaden - + Disable PeX for this torrent PeX voor deze torrent uitschakelen - + Download first and last pieces first Eerste en laatste deeltjes eerst downloaden - + Disable LSD for this torrent LSD voor deze torrent uitschakelen - + Currently used categories Momenteel gebruikte categorieën - - + + Choose save path Opslagpad kiezen - + Not applicable to private torrents Niet van toepassing op privétorrents - No share limit method selected - Geen deelbegrenzingsmethode geselecteerd + Geen deelbegrenzingsmethode geselecteerd - Please select a limit method first - Selecteer eerst een begrenzingsmethode + Selecteer eerst een begrenzingsmethode - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Torrent-labels + + + + + Default + Standaard - - New Tag - Nieuw label + + + + Unlimited + Onbegrensd - - Tag: - Label: + + + + Set to + Instellen op - - Invalid tag name - Ongeldige labelnaam + + Seeding time: + Seed-tijd: - - Tag name '%1' is invalid. + + + + + + + min + minutes + min + + + + Inactive seeding time: + Niet-actieve seed-tijd: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Torrent verwijderen + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Superseeden inschakelen voor torrent + + + + Ratio: + Verhouding: + + + + TorrentTagsDialog + + + Torrent Tags + Torrent-labels + + + New Tag + Nieuw label + + + + Add tag + + + + + Tag: + Label: + + + + Invalid tag name + Ongeldige labelnaam + + + + Tag name '%1' is invalid. Labelnaam '%1' is ongeldig. - + Tag exists Label bestaat - + Tag name already exists. Labelnaam bestaat al. @@ -10659,115 +11271,130 @@ Kies een andere naam en probeer het opnieuw. TorrentsController - + Error: '%1' is not a valid torrent file. Fout: '%1' is geen geldig torrentbestand. - + Priority must be an integer Prioriteit moet een geheel getal zijn - + Priority is not valid Prioriteit is niet geldig - + Torrent's metadata has not yet downloaded Metadata van torrent is nog niet gedownload - + File IDs must be integers Bestand-ID's moeten gehele getallen zijn - + File ID is not valid Bestand-ID is niet geldig - - - - + + + + Torrent queueing must be enabled Torrents in wachtrij plaatsen moet ingeschakeld zijn - - + + Save path cannot be empty Opslagpad mag niet leeg zijn - - + + Cannot create target directory Kan doelmap niet aanmaken - - + + Category cannot be empty Categorie mag niet leeg zijn - + Unable to create category Kan categorie niet aanmaken - + Unable to edit category Kan categorie niet bewerken - + Unable to export torrent file. Error: %1 Kan torrentbestand niet exporteren. Fout: %1 - + Cannot make save path Kan opslagpad niet aanmaken - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid De 'sort'-parameter is ongeldig - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" is geen geldige bestandsindex. - + Index %1 is out of bounds. Index %1 is buiten de grenzen. - - + + Cannot write to directory Kan niet schrijven naar map - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI locatie instellen: "%1" verplaatsen van "%2" naar "%3" - + Incorrect torrent name Incorrecte torrentnaam - - + + Incorrect category name Incorrecte categorienaam @@ -10798,257 +11425,215 @@ Kies een andere naam en probeer het opnieuw. TrackerListModel - - + Working - Werkend + Werkend - + Disabled - Uitgeschakeld + Uitgeschakeld - + Disabled for this torrent - Uitgeschakeld voor deze torrent + Uitgeschakeld voor deze torrent - + This torrent is private - Deze torrent is privé + Deze torrent is privé - + N/A - N/B + N/B - + Updating... - Bijwerken... + Bijwerken... - + Not working - Niet werkend + Niet werkend - + Tracker error - + Tracker-fout - + Unreachable - + Niet bereikbaar - + Not contacted yet - Nog niet gecontacteerd + Nog niet gecontacteerd - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Niveau + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Ongeldige status! + + + URL/Announce endpoint + URL/aankondiging-endpoint + Tier + Niveau + + Protocol - + Protocol - + Status - Status + Status - + Peers - Peers + Peers - + Seeds - Seeds + Seeds - + Leeches - Leeches + Leeches - + Times Downloaded - Aantal keer gedownload + Aantal keer gedownload - + Message - Bericht + Bericht - Next announce - + Volgende aankondiging - Min announce - + Min aankondiging - v%1 - + v%1 TrackerListWidget - Working - Werkend - - - Disabled - Uitgeschakeld - - - Disabled for this torrent - Uitgeschakeld voor deze torrent - - - + This torrent is private Deze torrent is privé - Updating... - Bijwerken... - - - Not working - Niet werkend - - - Not contacted yet - Nog niet gecontacteerd - - - N/A - N/B - - - + Tracker editing Tracker bewerken - + Tracker URL: Tracker-URL: - - + + Tracker editing failed Tracker bewerken mislukt - + The tracker URL entered is invalid. De ingevoerde tracker-URL is ongeldig - + The tracker URL already exists. De tracker-URL bestaat al - + Edit tracker URL... Tracker-URL bewerken... - + Remove tracker Tracker verwijderen - + Copy tracker URL Tracker-URL kopiëren - + Force reannounce to selected trackers Opnieuw aankondigen bij geselecteerde trackers forceren - + Force reannounce to all trackers Opnieuw aankondigen bij alle trackers forceren - Tier - Niveau - - - URL - URL - - - Status - Status - - - Seeds - Seeds - - - Times Downloaded - Aantal keer gedownload - - - + Resize columns Kolomgroottes aanpassen - + Resize all non-hidden columns to the size of their contents Alle niet-verborgen kolommen aanpassen aan de grootte van hun inhoud - Peers - Peers - - - + Add trackers... Trackers toevoegen... - Leeches - Leeches - - - Message - Bericht - - - + Column visibility Kolom-zichtbaarheid @@ -11066,37 +11651,37 @@ Kies een andere naam en probeer het opnieuw. Lijst van toe te voegen trackers (een per regel): - + µTorrent compatible list URL: URL van µTorrent-compatibele lijst: - + Download trackers list Lijst met trackers downloaden - + Add Toevoegen - + Trackers list URL error URL-fout van lijst met trackers - + The trackers list URL cannot be empty URL van lijst met trackers mag niet leeg zijn - + Download trackers list error Fout bij downloaden van lijst met trackers - + Error occurred when downloading the trackers list. Reason: "%1" Fout opgetreden bij het downloaden van de lijst met trackers. Reden: "%1" @@ -11104,87 +11689,70 @@ Kies een andere naam en probeer het opnieuw. TrackersFilterWidget - All (0) - this is for the tracker filter - Alle (0) - - - Trackerless (0) - Zonder trackers (0) - - - Error (0) - Fout (0) - - - Warning (0) - Waarschuwing (0) - - - Trackerless - Zonder trackers - - - Error (%1) - Fout (%1) - - - + Warning (%1) Waarschuwing (%1) - + Trackerless (%1) Zonder trackers (%1) - + Tracker error (%1) - + Tracker-fout (%1) - + Other error (%1) - + Andere fout (%1) - + Remove tracker - Tracker verwijderen + Tracker verwijderen + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Torrents hervatten + Torrents hervatten - Pause torrents - Torrents pauzeren + Torrents pauzeren - + Remove torrents Torrents verwijderen - + Removal confirmation - + Bevestiging verwijdering - + Are you sure you want to remove tracker "%1" from all torrents? - + Weet u zeker dat u tracker "%1" uit alle torrents wilt verwijderen? - + Don't ask me again. - + Niet meer vragen. - + All (%1) this is for the tracker filter Alle (%1) @@ -11193,7 +11761,7 @@ Kies een andere naam en probeer het opnieuw. TransferController - + 'mode': invalid argument 'modus': ongeldig argument @@ -11286,9 +11854,8 @@ Kies een andere naam en probeer het opnieuw. Hervattingsgegevens controleren - Paused - Gepauzeerd + Gepauzeerd @@ -11313,220 +11880,262 @@ Kies een andere naam en probeer het opnieuw. Met fouten - + Name i.e: torrent name Naam - + Size i.e: torrent size Grootte - + Progress % Done Voortgang - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Seeds - + Peers i.e. partial sources (often untranslated) Peers - + Down Speed i.e: Download speed Downloadsnelheid - + Up Speed i.e: Upload speed Uploadsnelheid - + Ratio Share ratio Verhouding - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Geschatte resterende tijd - + Category Categorie - + Tags Labels - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Toegevoegd op - + Completed On Torrent was completed on 01/01/2010 08:00 Voltooid op - + Tracker Tracker - + Down Limit i.e: Download limit Downloadbegrenzing - + Up Limit i.e: Upload limit Uploadbegrenzing - + Downloaded Amount of data downloaded (e.g. in MB) Gedownload - + Uploaded Amount of data uploaded (e.g. in MB) Geüpload - + Session Download Amount of data downloaded since program open (e.g. in MB) Sessie-download - + Session Upload Amount of data uploaded since program open (e.g. in MB) Sessie-upload - + Remaining Amount of data left to download (e.g. in MB) Resterend - + + Time Active + Time (duration) the torrent is active (not stopped) + Tijd actief + + + + Yes + Ja + + + + No + Nee + + Time Active Time (duration) the torrent is active (not paused) - Tijd actief + Tijd actief - + Save Path Torrent save path Opslagpad - + Incomplete Save Path Torrent incomplete save path Onvolledig opslagpad - + Completed Amount of data completed (e.g. in MB) Voltooid - + Ratio Limit Upload share ratio limit Begrenzing deelverhouding - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Laatst volledig gezien - + Last Activity Time passed since a chunk was downloaded/uploaded Laatste activiteit - + Total Size i.e. Size including unwanted data Totale grootte - + Availability The number of distributed copies of the torrent Beschikbaarheid - + Info Hash v1 i.e: torrent info hash v1 Info-hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info-hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Opnieuw aankondigen over + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/B - + %1 ago e.g.: 1h 20m ago %1 geleden - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (geseed voor %2) @@ -11535,334 +12144,358 @@ Kies een andere naam en probeer het opnieuw. TransferListWidget - + Column visibility Kolom-zichtbaarheid - + Recheck confirmation Bevestiging opnieuw controleren - + Are you sure you want to recheck the selected torrent(s)? Weet u zeker dat u de geselecteerde torrent(s) opnieuw wilt controleren? - + Rename Naam wijzigen - + New name: Nieuwe naam: - + Choose save path Opslagpad kiezen - Confirm pause - Pauzeren bevestigen + Pauzeren bevestigen - Would you like to pause all torrents? - Wilt u alle torrents pauzeren? + Wilt u alle torrents pauzeren? - Confirm resume - Hervatten bevestigen + Hervatten bevestigen - Would you like to resume all torrents? - Wilt u alle torrents hervatten? + Wilt u alle torrents hervatten? - + Unable to preview Kan geen voorbeeld weergeven - + The selected torrent "%1" does not contain previewable files De geselecteerde torrent "%1" bevat geen bestanden waarvan een voorbeeld kan worden weergegeven - + Resize columns Kolomgroottes aanpassen - + Resize all non-hidden columns to the size of their contents Alle niet-verborgen kolommen aanpassen aan de grootte van hun inhoud - + Enable automatic torrent management Automatisch torrent-beheer inschakelen - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Weet u zeker dat u automatisch torrent-beheer wilt inschakelen voor de geselecteerde torrent(s)? Mogelijk worden ze verplaatst. - Add Tags - Labels toevoegen + Labels toevoegen - + Choose folder to save exported .torrent files Map kiezen om geëxporteerde .torrent-bestanden op te slaan - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Exporteren van .torrent-bestand mislukt. Torrent: "%1". Opslagpad: "%2". Reden: "%3". - + A file with the same name already exists Er bestaat al een bestand met dezelfde naam - + Export .torrent file error Fout bij exporteren van .torrent-bestand - + Remove All Tags Alle labels verwijderen - + Remove all tags from selected torrents? Alle labels van geselecteerde torrents verwijderen? - + Comma-separated tags: Kommagescheiden labels: - + Invalid tag Ongeldig label - + Tag name: '%1' is invalid Labelnaam '%1' is ongeldig - &Resume Resume/start the torrent - Hervatten + Hervatten - &Pause Pause the torrent - Pauzeren + Pauzeren - Force Resu&me Force Resume/start the torrent - Geforceerd hervatten + Geforceerd hervatten - + Pre&view file... Voorbeeld van bestand weergeven... - + Torrent &options... Torrent-opties... - + Open destination &folder Doelmap openen - + Move &up i.e. move up in the queue Omhoog verplaatsen - + Move &down i.e. Move down in the queue Omlaag verplaatsen - + Move to &top i.e. Move to top of the queue Bovenaan plaatsen - + Move to &bottom i.e. Move to bottom of the queue Onderaan plaatsen - + Set loc&ation... Locatie instellen... - + Force rec&heck Opnieuw controleren forceren - + Force r&eannounce Opnieuw aankondigen forceren - + &Magnet link Magneetkoppeling - + Torrent &ID Torrent-ID - + + &Comment + Opmerking + + + &Name Naam - + Info &hash v1 Info-hash v1 - + Info h&ash v2 Info-hash v2 - + Re&name... Naam wijzigen... - + Edit trac&kers... Trackers bewerken... - + E&xport .torrent... .torrent exporteren... - + Categor&y Categorie - + &New... New category... Nieuw... - + &Reset Reset category Herstellen - + Ta&gs Labels - + &Add... Add / assign multiple tags... Toevoegen... - + &Remove All Remove all tags Alles verwijderen - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue Wachtrij - + &Copy Kopiëren - + Exported torrent is not necessarily the same as the imported De geëxporteerde torrent is niet noodzakelijk dezelfde als de geïmporteerde - + Download in sequential order In sequentiële volgorde downloaden - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Er zijn fouten opgetreden bij het exporteren van .torrent-bestanden. Controleer het uitvoeringslogboek voor details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Verwijderen - + Download first and last pieces first Eerste en laatste deeltjes eerst downloaden - + Automatic Torrent Management Automatisch torrent-beheer - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatische modus betekent dat verschillende torrent-eigenschappen (bijvoorbeeld opslagpad) bepaald zullen worden door de bijbehorende categorie. - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Kan opnieuw aankondigen niet forceren als een torrent gepauzeerd is, in wachtrij geplaatst is, fouten heeft of aan het controleren is. + Kan opnieuw aankondigen niet forceren als een torrent gepauzeerd is, in wachtrij geplaatst is, fouten heeft of aan het controleren is. - + Super seeding mode Super-seeding-modus @@ -11907,28 +12540,28 @@ Kies een andere naam en probeer het opnieuw. Pictogram-ID - + UI Theme Configuration. Configuratie UI-thema. - + The UI Theme changes could not be fully applied. The details can be found in the Log. De wijzigingen aan het UI-thema konden niet volledig worden toegepast. De details staan in het logboek. - + Couldn't save UI Theme configuration. Reason: %1 Kon de configuratie van het UI-thema niet opslaan. Reden: %1 - - + + Couldn't remove icon file. File: %1. Kon pictogrambestand niet verwijderen. Bestand: %1 - + Couldn't copy icon file. Source: %1. Destination: %2. Kon pictogrambestand niet kopiëren. Bron: %1. Bestemming: %2 @@ -11936,7 +12569,12 @@ Kies een andere naam en probeer het opnieuw. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Laden van UI-thema uit bestand "%1" mislukt @@ -11967,91 +12605,84 @@ Kies een andere naam en probeer het opnieuw. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Migreren van voorkeuren mislukt: WebUI https, bestand: "%1", fouten: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Voorkeuren gemigreerd: WebUI https, gegevens geëxporteerd naar bestand: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Ongeldige waarde gevonden in configuratiebestand. Terugzetten naar standaard. Sleutel: "%1". Ongeldige waarde: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python gedetecteerd, naam uitvoerbaar bestand: '%1', versie: %2 - - - Python not detected - Python niet gedetecteerd - Found Python executable. Name: "%1". Version: "%2" - + Python-executable teruggevonden. Naam: "%1". Versie: "%2" Failed to find Python executable. Path: "%1". - + Python-executable niet gevonden. Pad: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + 'Python3'-executable niet gevonden in PATH-omgevingsvariabele. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + 'Python'-executable niet gevonden in PATH-omgevingsvariabele. PATH: "%1" Failed to find `python` executable in Windows Registry. - + 'Python'-executable niet gevonden in Windows-register. Failed to find Python executable - + Python-excecutable niet gevonden Utils::IO - + File open error. File: "%1". Error: "%2" - + Fout bij openen bestand. Bestand: "%1". Fout: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + Bestand is te groot. Bestand: "%1". Bestandsgrootte: %2. Limiet: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Bestand bevat te veel gegevens. Bestand: "%1". Bestandsgrootte: %2. Array-limiet: %3 - + File read error. File: "%1". Error: "%2" - + Fout bij lezen bestand. Bestand: "%1". Fout: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - + Leesgrootte komt niet overeen. Bestand: "%1". Verwacht: %2. Werkelijk: %3 @@ -12113,72 +12744,72 @@ Kies een andere naam en probeer het opnieuw. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Er is een onacceptabele sessie-cookienaam opgegeven: '%1'. De standaard wordt gebruikt. - + Unacceptable file type, only regular file is allowed. Niet-aanvaardbaar bestandstype, alleen gewoon bestand is toegestaan. - + Symlinks inside alternative UI folder are forbidden. Symlinks in map van alternatieve UI zijn verboden. - - Using built-in Web UI. - Ingebouwde Web-UI gebruiken + + Using built-in WebUI. + Ingebouwde WebUI gebruiken - - Using custom Web UI. Location: "%1". - Aangepaste Web-UI gebruiken. Locatie: "%1". + + Using custom WebUI. Location: "%1". + Aangepaste WebUI gebruiken. Locatie: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Vertaling van Web-UI voor geselecteerde taal (%1) werd met succes geladen. + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI-vertaling voor geselecteerde taal (%1) is met succes geladen. - - Couldn't load Web UI translation for selected locale (%1). - Kon vertaling van Web-UI voor geselecteerde taal (%1) niet laden. + + Couldn't load WebUI translation for selected locale (%1). + Kon vertaling van WebUI voor geselecteerde taal (%1) niet laden. - + Missing ':' separator in WebUI custom HTTP header: "%1" Ontbrekende ':'-separator in aangepaste HTTP-header van de WebUI: "%1" - + Web server error. %1 - + Webserver-fout; %1 - + Web server error. Unknown error. - + Webserver-fout. Onbekende fout. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: oorsprong-header en doel-oorsprong komen niet overeen! Bron-IP: '%1'. Oorsprong-header: '%2'. Doel-oorsprong: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: referer-header en doel-oorsprong komen niet overeen! Bron-IP: '%1'. Referer-header: '%2'. Doel-oorsprong: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: ongeldige host-header, poorten komen niet overeen. Aanvragen bron-IP: '%1'. Server-poort: '%2'. Ontvangen host-header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: ongeldige host-header. Aanvragen bron-IP: '%1'. Ontvangen host-header: '%2' @@ -12186,143 +12817,136 @@ Kies een andere naam en probeer het opnieuw. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS-instelling gelukt + + Credentials are not set + Aanmeldingsgegevens zijn niet ingesteld + + + + WebUI: HTTPS setup successful + WebUI: HTTPS-instelling gelukt + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS-instelling mislukt, terugvallen op HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: HTTPS-instelling mislukt, terugvallen op HTTP + + WebUI: Now listening on IP: %1, port: %2 + WebUI: luisteren naar IP: %1, poort: %2 - - Web UI: Now listening on IP: %1, port: %2 - Web UI: luisteren naar IP: %1, poort: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Kan niet binden aan IP: %1, poort: %2. Reden: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: kan niet binden aan IP: %1, poort: %2. Reden: %3 + + Unknown error + Onbekende fout misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 m {1s?} + %1 s - + %1m e.g: 10 minutes - %1 m + %1 m - + %1h %2m e.g: 3 hours 5 minutes - %1 h %2 m + %1 h %2 m - + %1d %2h e.g: 2 days 10 hours - %1 d %2 h + %1 d %2 h - + %1y %2d e.g: 2 years 10 days - %1 j %2 d + %1 j %2 d - %1h %2m - e.g: 3hours 5minutes - %1 h %2 m - - - %1d %2h - e.g: 2days 10hours - %1 d %2 h - - - %1y %2d - e.g: 2years 10days - %1 j %2 d - - - - + + Unknown Unknown (size) Onbekend - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent zal de computer afsluiten omdat alle downloads voltooid zijn. - + < 1m < 1 minute < 1 m - - %1m - e.g: 10minutes - %1 m - diff --git a/src/lang/qbittorrent_oc.ts b/src/lang/qbittorrent_oc.ts index cf741c671c87..108332b87447 100644 --- a/src/lang/qbittorrent_oc.ts +++ b/src/lang/qbittorrent_oc.ts @@ -14,75 +14,75 @@ A prepaus - + Authors - + Current maintainer Manteneire actual - + Greece Grècia - - + + Nationality: Nacionalitat : - - + + E-mail: Corrièr electronic : - - + + Name: Nom : - + Original author Autor original - + France França - + Special Thanks Mercejaments - + Translators Traductors - + License Licéncia - + Software Used - + qBittorrent was built with the following libraries: qBittorrent es estat compilat amb las bibliotècas seguentas : - + Copy to clipboard @@ -93,7 +93,7 @@ - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Enregistrar jos - + Never show again Afichar pas mai - Torrent settings - Paramètres del torrent + Paramètres del torrent @@ -191,12 +190,12 @@ Aviar lo torrent - + Torrent information Informacions sul torrent - + Skip hash check Verificar pas las donadas del torrent @@ -205,6 +204,11 @@ Use another path for incomplete torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: - + Original - + Create subfolder - + Don't create subfolder - + Info hash v1: - + Size: Talha : - + Comment: Comentari : - + Date: Data : @@ -324,179 +333,150 @@ - + Do not delete .torrent file suprimir pas lo fichièr .torrent - + Download in sequential order Telecargament sequencial - + Download first and last pieces first Telecargar primièras e darrièras pèças en primièr - + Info hash v2: - + Select All Seleccionar tot - + Select None Seleccionar pas res - + Save as .torrent file... - + I/O Error ErrorE/S - Invalid torrent - Torrent invalid - - - + Not Available This comment is unavailable Pas disponible - + Not Available This date is unavailable Pas disponible - + Not available Pas disponible - Invalid magnet link - Ligam magnet invalid - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Error al moment del chargement del torrent '%1'. -Error : %2 - - - This magnet link was not recognized - Aqueste ligam magnet es pas estat reconegut - - - + Magnet link Ligam magnet - + Retrieving metadata... Recuperacion de las metadonadas… - - + + Choose save path Causir un repertòri de destinacion - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A N/A - + %1 (Free space on disk: %2) - + Not available This size is unavailable. Pas disponible - + Torrent file (*%1) - + Save as torrent file - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - + Filter files... Filtrar los fichièrs… - + Parsing metadata... Analisi sintaxica de las metadonadas... - + Metadata retrieval complete Recuperacion de las metadonadas acabada - - Download Error - Error de telecargament - AddTorrentManager @@ -511,22 +491,22 @@ Error : %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -614,72 +594,77 @@ Error : %2 Verificar pas las donadas del torrent - - - Choose save path - Causida del repertòri de destinacion + + Torrent share limits + - - - - - - - Default - + + + Choose save path + Causida del repertòri de destinacion + + + - Yes - Òc + Default + + Yes + Òc + + + + + No Non - + Manual Manual - + Automatic Automatic - + Original - + Create subfolder - + Don't create subfolder - + None - + Metadata received - + Files checked @@ -687,734 +672,852 @@ Error : %2 AdvancedSettings - - - - + + + + MiB Mio - + Recheck torrents on completion Reverificar los torrents quand son acabats - - + + ms milliseconds ms - + Setting Paramètre - + Value Value set for this setting Valor - + (disabled) - + (auto) (automatic) - + + min minutes min - + All addresses Totas las adreças - + qBittorrent Section Seccion qBittorrent - - + + Open documentation Dobrir documentacion - + All IPv4 addresses - + All IPv6 addresses - + libtorrent Section Seccion libtorrent - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Normala - + Below normal - + Medium - + Low - + Very low - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache - - - - + + + + s seconds s - + Disk cache expiry interval Interval de l'expiracion del cache disc - + Disk queue size - - + + Enable OS cache Activar lo cache del sistèma operatiu - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names Afichar lo nom d'òste dels pars - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Afichar las notificacions - + Display notifications for added torrents Afichar las notificacions pels torrents aponduts - + Download tracker's favicon - + Save path history length - + Enable speed graphs - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck Confirmer la reverificacion del torrent - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface Quina interfàcia que siá - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker Activar lo tracker integrat - + Embedded tracker port Pòrt del tracker integrat - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 aviat. + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 Nom del torrent : %1 - + Torrent size: %1 Talha del torrent : %1 - + Save path: %1 Camin de salvament : %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Lo torrent es estat telecargat dins %1. - + + Thank you for using qBittorrent. Mercé d'utilizar qBittorrent. - + Torrent: %1, sending mail notification - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit &Quitar - + I/O Error i.e: Input/Output Error ErrorE/S - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1423,129 +1526,110 @@ Error : %2 Rason : %2 - Error - Error - - - Failed to add torrent: %1 - Fracàs de l'apondon del torrent : %1 - - - + Torrent added Torrent apondut - + '%1' was added. e.g: xxx.avi was added. '%1' es estat apondut. - + Download completed - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Lo telecargament de « %1 » es acabat. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - Error de telecargament URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Impossible de telecargar lo fichièr a l'adreça « %1 », rason : %2. + + Test email + - Torrent file association - Associacion als fichièrs torrent + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Lo telecargament de « %1 » es acabat. - + Information Informacion - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - + Exit - + Recursive download confirmation - Confirmacion per telecargament recursiu + Confirmacion per telecargament recursiu - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - Pas jamai + Pas jamai - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Salvament de l'avançament del torrent. - + qBittorrent is now ready to exit @@ -1553,7 +1637,7 @@ Rason : %2 AsyncFileStorage - + Could not create directory '%1'. @@ -1561,22 +1645,22 @@ Rason : %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. Vòstra adreça IP es estada bandida aprèp un nombre excessiu de temptativas d'autentificacion fracassadas. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1624,12 +1708,12 @@ Rason : %2 - + Must Not Contain: Deu pas conténer : - + Episode Filter: Filtre d'episòdi : @@ -1681,263 +1765,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Exportar... - + Matches articles based on episode filter. Articles correspondents basats sul filtratge episòdi - + Example: Exemple : - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match correspondrà als episòdis 2, 5, 8 e 15-30 e superiors de la sason 1 - + Episode filter rules: Règlas de filtratge d'episòdis : - + Season number is a mandatory non-zero value Lo numèro de sason es una valor obligatòria diferenta de zèro - + Filter must end with semicolon Lo filtre se deu acabar amb un punt-virgula - + Three range types for episodes are supported: Tres tipes d'intervals d'episòdis son preses en carga : - + Single number: <b>1x25;</b> matches episode 25 of season one Nombre simple : <b>1×25;</b> correspond a l'episòdi 25 de la sason 1 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Interval standard : <b>1×25-40;</b> correspond als episòdis 25 a 40 de la saison 1 - + Episode number is a mandatory positive value - + Rules - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago Darrièra correspondéncia : i a %1 jorns - + Last Match: Unknown Darrièra correspondéncia : desconegut - + New rule name Novèl nom per la règla - + Please type the name of the new download rule. Entratz lo nom de la novèla règla de telecargament. - - + + Rule name conflict Conflicte dins los noms de règla - - + + A rule with this name already exists, please choose another name. Una règla amb aqueste nom existís ja, causissètz-ne un autre. - + Are you sure you want to remove the download rule named '%1'? Sètz segur que volètz suprimir la règla de telecargament '%1' - + Are you sure you want to remove the selected download rules? Sètz segur que volètz suprimir las règlas seleccionadas ? - + Rule deletion confirmation Confirmacion de la supression - + Invalid action Accion invalida - + The list is empty, there is nothing to export. La lista es voida, i a pas res a exportar. - + Export RSS rules - + I/O Error Error E/S - + Failed to create the destination file. Reason: %1 - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Add new rule... Apondre una novèla règla… - + Delete rule Suprimir la règla - + Rename rule... Renomenar la règla… - + Delete selected rules Suprimir las règlas seleccionadas - + Clear downloaded episodes... - + Rule renaming Renommage de la règla - + Please type the new rule name Entratz lo novèl nom per la règla - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1979,53 +2063,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -2033,38 +2122,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2072,22 +2161,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2095,484 +2184,520 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - - - - Removed torrent. + + Super seeding enabled. - - - - Removed torrent and deleted its content. + + Torrent reached the seeding time limit. - - - - Torrent paused. + + Torrent reached the inactive seeding time limit. - - - - Super seeding enabled. + + Failed to load torrent. Reason: "%1" - - Torrent reached the seeding time limit. + + I2P error. Message: "%1". - - Torrent reached the inactive seeding time limit. + + UPnP/NAT-PMP support: ON - - Failed to load torrent. Reason: "%1" + + Saving resume data completed. - - I2P error. Message: "%1". + + BitTorrent session successfully finished. - - UPnP/NAT-PMP support: ON + + Session shutdown timed out. - - UPnP/NAT-PMP support: OFF + + Removing torrent. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Removing torrent and deleting its content. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Estatut ret del sistèma cambiat en %1 + + Trackers are merged from new source + - ONLINE - EN LINHA + + UPnP/NAT-PMP support: OFF + - OFFLINE - FÒRA LINHA + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - La configuracion ret de %1 a cambiat, refrescament de la session + + Aborted saving resume data. Number of outstanding torrents: %1 + - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" + + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2580,62 +2705,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2656,184 +2786,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: Utilizacion : - + [options] [(<filename> | <url>)...] - + Options: Opcions - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen Desactivar l'ecran d'aviada - + Run in daemon-mode (background) Executar en prètzfait de fons - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check Verificar pas las donadas del torrent - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first Telecargar primièras e darrièras pèças en primièr - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Ajuda @@ -2841,17 +2976,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Categorias - + All Totes - + Uncategorized @@ -2885,13 +3020,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Aviar los torrents + Start torrents + + Stop torrents + + + + Resume torrents + Aviar los torrents + + Pause torrents - Metre en pausa los torrents + Metre en pausa los torrents @@ -2902,15 +3045,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset Reïnicializar + + + System + + CookiesDialog @@ -2951,12 +3099,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -2964,7 +3112,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -2983,23 +3131,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove @@ -3012,12 +3160,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Telecargar dempuèi d'URLs - + Add torrent links Apondon de ligams cap a de torrents - + One link per line (HTTP links, Magnet links and info-hashes are supported) @@ -3027,12 +3175,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Telecargar - + No URL entered Cap d'URL pas entrada - + Please type at least one URL. Entratz al mens una URL. @@ -3191,25 +3339,48 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Error d'analisi : lo fichièr de filtratge es pas un fichièr P2B PeerGuardian valid. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - - Trackers cannot be merged because it is a private torrent + + Torrent is already present - - Torrent is already present + + Trackers cannot be merged because it is a private torrent. - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3217,38 +3388,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. Talha del fichièr de basa de donadas pas suportat. - + Metadata error: '%1' entry not found. Error de las metadonadas : '%1' pas trobat. - + Metadata error: '%1' entry has invalid type. Error de las metadonadas : lo tipe de '%1' es invalid. - + Unsupported database version: %1.%2 Version de basa de donadas pas suportada : %1.%2 - + Unsupported IP version: %1 Version IP pas suportada : %1 - + Unsupported record size: %1 Talha del registre pas suportada : %1 - + Database corrupted: no data section found. Basa de donadas corrompuda : seccion data introbabla. @@ -3256,17 +3427,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3307,36 +3478,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Percórrer... - + Reset Reïnicializar - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + Informacion legala + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. - + %1 was banned 0.0.0.0 was banned @@ -3345,91 +3544,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 es un paramètre de linha de comanda desconegut. - - + + %1 must be the single command line parameter. %1 deu èsser lo paramètre de linha de comanda unica. - - You cannot use %1: qBittorrent is already running for this user. - Podètz pas utilizar% 1: qBittorrent es ja en cors d'execucion per aqueste utilizaire. - - - + Run application with -h option to read about command line parameters. Executar lo programa amb l'opcion -h per afichar los paramètres de linha de comanda. - + Bad command line Marrida linha de comanda - + Bad command line: Marrida linha de comanda : - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Informacion legala - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + You cannot use %1: qBittorrent is already running. - - No further notices will be issued. + + Another qBittorrent instance is already running. - - Press %1 key to accept and continue... - Quichatz sus la tòca %1 per acceptar e contunhar… - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent es un logicial de partiment de fichièrs. Al moment de l'apondon d'un torrent, las donadas que telecargatz son mesas a disposicion dels autres utilizaires. Sètz responsable del contengut que partejatz. - -Aqueste messatge d'avertiment serà pas mai afichat. - - - - Legal notice - Informacion legala - - - - Cancel - Anullar + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Accèpti + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3440,610 +3610,704 @@ Aqueste messatge d'avertiment serà pas mai afichat. &Edicion - + &Tools Ai&sinas - + &File &Fichièr - + &Help &Ajuda - + On Downloads &Done Accion quand los telecargaments son acaba&ts - + &View A&fichatge - + &Options... &Opcions... - &Resume - &Aviar + &Aviar - + &Remove - + Torrent &Creator &Creator de torrent - - + + Alternative Speed Limits Limits de velocitat alternativas - + &Top Toolbar Barra d'ai&sinas - + Display Top Toolbar Afichar la barra d'aisinas - + Status &Bar - + Filters Sidebar - + S&peed in Title Bar &Velocitat dins lo títol de la fenèstra - + Show Transfer Speed in Title Bar Afichar la velocitat dins lo títol de la fenèstra - + &RSS Reader Lector &RSS - + Search &Engine &Motor de recèrca - + L&ock qBittorrent &Verrolhar qBittorrent - + Do&nate! Far un do&n ! - + + Sh&utdown System + + + + &Do nothing - + Close Window - R&esume All - A&viar tot + A&viar tot - + Manage Cookies... Gerir los Cookies... - + Manage stored network cookies Gerir les cookies ret emmagazinats - + Normal Messages Messatges normals - + Information Messages Messatges d'informacion - + Warning Messages Messatges d'avertiment - + Critical Messages Messatges critics - + &Log &Jornal - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue - + Move to the bottom of the queue - + Top of Queue - + Move to the top of the queue - + Move Down Queue - + Move down in the queue - + Move Up Queue - + Move up in the queue - + &Exit qBittorrent &Quitar qBittorrent - + &Suspend System &Metre en velha lo sistèma - + &Hibernate System &Metre en velha perlongada lo sistèma - S&hutdown System - A&tudar lo sistèma + A&tudar lo sistèma - + &Statistics &Estatisticas - + Check for Updates Verificar las mesas a jorn - + Check for Program Updates Verificar las mesas a jorn del programa - + &About &A prepaus - &Pause - Metre en &pausa + Metre en &pausa - P&ause All - Tout &metre en pausa + Tout &metre en pausa - + &Add Torrent File... &Apondre un fichièr torrent… - + Open Dobrir - + E&xit &Quitar - + Open URL Dobrir URL - + &Documentation &Documentacion - + Lock Verrolhar - - - + + + Show Afichar - + Check for program updates Verificar la disponibilitat de mesas a jorn del logicial - + Add Torrent &Link... Apondre &ligam cap a un torrent… - + If you like qBittorrent, please donate! Se qBittorrent vos agrada, fasètz un don ! - - + + Execution Log Jornal d'execucion - + Clear the password Escafar lo senhal - + &Set Password &Definir lo senhal - + Preferences - + &Clear Password &Suprimir lo mot de pass - + Transfers Transferiments - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only Icònas solament - + Text Only Tèxte solament - + Text Alongside Icons Tèxte al costat de las Icònas - + Text Under Icons Tèxte jos las Icònas - + Follow System Style Seguir l'estil del sistèma - - + + UI lock password Senhal de verrolhatge - - + + Please type the UI lock password: Entratz lo senhal de verrolhatge : - + Are you sure you want to clear the password? Sètz segur que volètz escafar lo senhal ? - + Use regular expressions - - Search - Recèrca + + + Search Engine + Motor de recèrca - - Transfers (%1) - Transferiments (%1) + + Search has failed + La recèrca a fracassat - Recursive download confirmation - Confirmacion per telecargament recursiu + + Search has finished + Recèrca acabada - Never - Pas jamai + + Search + Recèrca + + + + Transfers (%1) + Transferiments (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent ven d'èsser mes a jorn e deu èsser reaviat per que los cambiaments sián preses en compte. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + &No &Non - + &Yes &Òc - + &Always Yes &Òc, totjorn - + Options saved. - - - Missing Python Runtime + + [PAUSED] %1 + %1 is the rest of the window title - - qBittorrent Update Available - Mesa a jorn de qBittorrent disponibla + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + - - Python is required to use the search engine but it does not seem to be installed. -Do you want to install it now? - Python es necessari per fin d'utilizar lo motor de recèrca mas sembla pas èsser installat. -Lo volètz installar ara ? + + Python installer could not be downloaded. Error: %1. +Please install it manually. + - - Python is required to use the search engine but it does not seem to be installed. - Python es necessari per fin d'utilizar lo motor de recèrca mas sembla pas èsser installat. + + Rename Python installer failed. Source: "%1". Destination: "%2". + - - - Old Python Runtime + + Python installation success. - - A new version is available. + + Exit code: %1. - - Do you want to download %1? + + Reason: installer crashed. - + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + + + + + qBittorrent Update Available + Mesa a jorn de qBittorrent disponibla + + + + Python is required to use the search engine but it does not seem to be installed. +Do you want to install it now? + Python es necessari per fin d'utilizar lo motor de recèrca mas sembla pas èsser installat. +Lo volètz installar ara ? + + + + Python is required to use the search engine but it does not seem to be installed. + Python es necessari per fin d'utilizar lo motor de recèrca mas sembla pas èsser installat. + + + + + Old Python Runtime + + + + + A new version is available. + + + + + Do you want to download %1? + + + + Open changelog... - + No updates available. You are already using the latest version. Pas de mesas a jorn disponiblas. Utilizatz ja la darrièra version. - + &Check for Updates &Verificar las mesas a jorn - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + En pausa + + + Checking for Updates... Verificacion de las mesas a jorn… - + Already checking for program updates in the background Recèrca de mesas a jorn ja en cors en prètzfait de fons - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Error de telecargament - Python setup could not be downloaded, reason: %1. Please install it manually. - L’installador Python pòt pas èsser telecargat per la rason seguenta : %1. + L’installador Python pòt pas èsser telecargat per la rason seguenta : %1. Installatz-lo manualament. - - + + Invalid password Senhal invalid - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - + The password is invalid Lo senhal fourni es invalid - + DL speed: %1 e.g: Download speed: 10 KiB/s Velocitat de recepcion : %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Velocitat de mandadís : %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [R : %1, E : %2] qBittorrent %3 - - - + Hide Amagar - + Exiting qBittorrent Tampadura de qBittorrent - + Open Torrent Files Dobrir fichièrs torrent - + Torrent Files Fichièrs torrent @@ -4104,133 +4368,133 @@ Installatz-lo manualament. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) Òste distant introbable (nom d'òste invalid) - + The operation was canceled L'operacion es estada anullada - + The remote server closed the connection prematurely, before the entire reply was received and processed Lo servidor distant a interromput la connexion prematuradament, abans la recepcion completa de la responsa - + The connection to the remote server timed out Relambi de connexion al servidor distant expirat - + SSL/TLS handshake failed Punhada de man SSL/TLS fracassada - + The remote server refused the connection Lo servidor distant a refusat la connexion - + The connection to the proxy server was refused La connexion al servidor proxy es estada refusada - + The proxy server closed the connection prematurely Lo servidor proxy a tampat la connexion prematuradament - + The proxy host name was not found Lo nom d'òste del proxy es pas estat trobat - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Relambi de connexion al servidor mandatari expirat o lo servidor a pas respondut a temps a la requèsta - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Lo proxy requerís una autentificacion per fin de respondre a la requèsta, mas accèpta pas cap dels identificants especificats - + The access to the remote content was denied (401) L'accès al contengut distant es estat refusat (401) - + The operation requested on the remote content is not permitted L'operacion demandada sul contengut distant es pas autorizada - + The remote content was not found at the server (404) Lo contengut distant es pas estat trobat sul servidor (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Lo servidor distant demanda una autentificacion abans de distribuir lo contengut, mas los identificants provesits son pas estats acceptats - + The Network Access API cannot honor the request because the protocol is not known L'API d'Accès Ret pòt pas tractar la requèsta perque lo protocòl es desconegut - + The requested operation is invalid for this protocol L'operacion demandada es invalida per aqueste protocòl - + An unknown network-related error was detected Una error desconeguda relativa a la ret es estada detectada - + An unknown proxy-related error was detected Una error desconeguda relativa al servidor mandatari es estada detectada - + An unknown error related to the remote content was detected Una error desconeguda relativa al contengut distant es estada detectada - + A breakdown in protocol was detected Una ruptura de protocòl es estada detectada - + Unknown error Error desconeguda @@ -4238,7 +4502,12 @@ Installatz-lo manualament. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" @@ -5610,476 +5879,504 @@ Installatz-lo manualament. BitTorrent - + RSS - Web UI - Interfàcia web + Interfàcia web - + Advanced Avançat - + Customize UI Theme... - + Transfer List Lista dels transferiments - + Confirm when deleting torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always Totjorn - - Paused torrents only - - - - + Action on double-click - + Downloading torrents: - - - Start / Stop Torrent - - - - - + + Open destination folder Dobrir lo repertòri de destinacion - - + + No action Pas cap d'accion - + Completed torrents: Torrents telecargats : - + Auto hide zero status filters - + Desktop Burèu - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB - + Torrent content layout: - + Original - + Create subfolder - + Don't create subfolder - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... - + Options.. - + Remove - + Email notification &upon download completion - - Peer connection protocol: + + Send test email - - Any + + Run on torrent added: - - I2P (experimental) + + Run on torrent finished: + + + + + Peer connection protocol: - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + Any + + + + + I2P (experimental) - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time De : - + To: To end time A : - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: Nombre maximum d'articles per flux : - - - + + + min minutes min - + Seeding Limits - - Pause torrent - - - - + Remove torrent - + Remove torrent and its files - + Enable super seeding for torrent - + When ratio reaches - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: - + Web User Interface (Remote control) - + IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Pas jamai - + ban for: - + Session timeout: - + Disabled Desactivat - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6088,441 +6385,482 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area - + + Search + Recèrca + + + + WebUI + + + + Interface - + Language: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal Normala - + File association - + Use qBittorrent for .torrent files - + Use qBittorrent for magnet links - + Check for program updates Verificar la disponibilitat de mesas a jorn del logicial - + Power Management - + + &Log Files + + + + Save path: - + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management - + Default Torrent Management Mode: - + Manual Manual - + Automatic Automatic - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + Copy .torrent files to: - + Show &qBittorrent in notification area - - &Log file - - - - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days jorns - + months Delete backup logs older than 10 months meses - + years Delete backup logs older than 10 years ans - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6539,841 +6877,902 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver A : - + SMTP server: Servidor SMTP : - + Sender - + From: From sender De : - + This server requires a secure connection (SSL) - - + + Authentication Autentificacion - - - - + + + + Username: Nom d'utilizaire : - - - - + + + + Password: Senhal : - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP - + Listening Port - + Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Random - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits - + Maximum number of connections per torrent: - + Global maximum number of connections: - + Maximum number of upload slots per torrent: - + Global maximum number of upload slots: - + Proxy Server - + Type: Tipe : - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Òste : - - - + + + Port: Pòrt : - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... - + Apply to trackers - + Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s - - + + Upload: Mandadís : - - + + Download: Telecargament : - + Alternative Rate Limits - + Start time - + End time - + When: Quora : - + Every day Cada jorn - + Weekdays Jorns de setmana - + Weekends Fins de setmanas - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + Torrent inactivity timer: - + then - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: Certificat : - + Key: Clau : - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - - Use alternative Web UI + + Files location: - - Files location: + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> - + Security - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Servici : - + Register - + Domain name: Nom de domeni : - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N : Nom del torrent - + %L: Category %L : Categoria - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path %D : Camin de salvament - + %C: Number of files %C : Nombre de fichièrs - + %Z: Torrent size (bytes) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Pas cap) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Select certificate - + Private key - + Select private key - - Select folder to monitor + + WebUI configuration failed. Reason: %1 - + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + + Select folder to monitor + + + + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. - - The alternative Web UI files location cannot be blank. + + The WebUI password must be at least 6 characters long. - - + + Location Error + + + + + Choose export directory - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Lo filtre IP es estat cargat corrèctament : %1 règlas son estadas aplicadas. - + Preferences - + Time Error - + The start time and the end time can't be the same. - - + + Length Error - - - The Web UI username must be at least 3 characters long. - - - - - The Web UI password must be at least 6 characters long. - - PeerInfo - + Unknown Desconeguda - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7529,7 +7928,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + N/A N/A @@ -7552,7 +7951,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Format: IPv4:port / [IPv6]:port Format : IPv4:port / [IPv6]:port @@ -7593,27 +7992,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7626,58 +8025,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Empeutons de recèrca - + Installed search plugins: Empeutons de recèrca installats : - + Name Nom - + Version Version - + Url URL - - + + Enabled Activat - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installar un novèl - + Check for updates Recercar de mesas a jorn - + Close Tampar - + Uninstall Desinstallar @@ -7797,17 +8196,17 @@ Los empeutons en question son estats desactivats. Font de l'empeuton - + Search plugin source: Font de l'empeuton de recèrca : - + Local file Fichièr local - + Web link Ligam web @@ -7848,47 +8247,47 @@ Los empeutons en question son estats desactivats. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview Previsualizar - + Name Nom - + Size Talha - + Progress Progression - + Preview impossible Previsualizacion impossibla - + Sorry, we can't preview this file: "%1". - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -7901,27 +8300,27 @@ Los empeutons en question son estats desactivats. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -7962,12 +8361,12 @@ Los empeutons en question son estats desactivats. PropertiesWidget - + Downloaded: Telecargat : - + Availability: Disponibilitat : @@ -7982,53 +8381,53 @@ Los empeutons en question son estats desactivats. Transferiment - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Actiu pendent : - + ETA: Temps restant : - + Uploaded: Mandat : - + Seeds: Fonts : - + Download Speed: Velocitat de telecargament : - + Upload Speed: Velocitat d'emission : - + Peers: Pars : - + Download Limit: Limit de telecargament : - + Upload Limit: Limit de mandadís : - + Wasted: Degalhat : @@ -8038,193 +8437,249 @@ Los empeutons en question son estats desactivats. Connexions : - + Information Informacions - + Info Hash v1: - + Info Hash v2: - + Comment: Comentari : - + Select All Seleccionar tot - + Select None Seleccionar pas res - + Share Ratio: Ratio de partiment : - + Reannounce In: Anonciar dins : - + Last Seen Complete: Darrièra fois vu complet : - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Talha totala : - + Pieces: Tròces : - + Created By: Creat per : - + Added On: Apondut lo : - + Completed On: Completat lo : - + Created On: Creat lo : - + + Private: + + + + Save Path: Camin de salvament : - + Never Pas jamai - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 × %2 (a %3) - - + + %1 (%2 this session) %1 (%2 aquesta session) - - + + + N/A N/A - + + Yes + Òc + + + + No + Non + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (partejat pendent %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maximum) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 en mejana) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Novèla font web + Novèla font web - Remove Web seed - Suprimir la font web + Suprimir la font web - Copy Web seed URL - Copiar l'URL de la font web + Copiar l'URL de la font web - Edit Web seed URL - Modificar l'URL de la font web + Modificar l'URL de la font web - + Filter files... Filtrar los fichièrs… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled - + You can enable it in Advanced Options - New URL seed New HTTP source - Novèla font URL + Novèla font URL - New URL seed: - Novèla font URL : + Novèla font URL : - - This URL seed is already in the list. - Aquesta font URL es ja sus la liste. + Aquesta font URL es ja sus la liste. - + Web seed editing Modificacion de la font web - + Web seed URL: URL de la font web : @@ -8243,22 +8698,22 @@ Los empeutons en question son estats desactivats. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8266,22 +8721,22 @@ Los empeutons en question son estats desactivats. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8317,12 +8772,12 @@ Los empeutons en question son estats desactivats. RSS::Private::Parser - + Invalid RSS feed. Flux RSS invalid. - + %1 (line: %2, column: %3, offset: %4). @@ -8330,99 +8785,99 @@ Los empeutons en question son estats desactivats. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8446,8 +8901,8 @@ Los empeutons en question son estats desactivats. - - + + Mark items read Marcar coma legit @@ -8472,132 +8927,132 @@ Los empeutons en question son estats desactivats. Torrents : (doble-clic per telecargar) - - + + Delete Suprimir - + Rename... Renomenar… - + Rename Renomenar - - + + Update Metre a jorn - + New subscription... Novèla soscripcion… - - + + Update all feeds Tot metre a jorn - + Download torrent Telecargar lo torrent - + Open news URL Dobrir l'URL de l'article - + Copy feed URL Copiar l'URL del flux - + New folder... Novèl dorsièr… - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Indicatz un nom de dorsièr - + Folder name: Nom del dorsièr : - + New folder Novèl dorsièr - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation Confirmacion de supression - + Are you sure you want to delete the selected RSS feeds? Sètz segur que volètz suprimir los fluxes RSS seleccionats ? - + Please choose a new name for this RSS feed Causissètz un novèl nom per aqueste flux RSS - + New feed name: Novèl nom del flux : - + Rename failed - + Date: Data : - + Feed: - + Author: Autor : @@ -8605,38 +9060,38 @@ Los empeutons en question son estats desactivats. SearchController - + Python must be installed to use the Search Engine. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + Updating %1 plugins - + Updating plugin %1 - + Failed to check for plugin updates: %1 @@ -8711,132 +9166,146 @@ Los empeutons en question son estats desactivats. Talha : - + Name i.e: file name Nom - + Size i.e: file size Talha - + Seeders i.e: Number of full sources Fonts completas - + Leechers i.e: Number of partial sources Fonts parcialas - Search engine - Motor de recèrca + Motor de recèrca - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultats (afichatge <i>%1</i> de <i>%2</i>) : - + Torrent names only Noms de torrent solament - + Everywhere Pertot - + Use regular expressions - + Open download window - + Download Telecargar - + Open description page - + Copy Copiar - + Name Nom - + Download link - + Description page URL - + Searching... Recèrca... - + Search has finished Recèrca acabada - + Search aborted Recèrca interrompuda - + An error occurred during search... Una error s'es produita pendent la recèrca.. - + Search returned no results La recèrca a pas tornat cap de resultat - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilitat de las colomnas - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8844,104 +9313,104 @@ Los empeutons en question son estats desactivats. SearchPluginManager - + Unknown search engine plugin file format. Format de fichièrs de l'empeuton de recèrca desconegut. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. Una version mai recenta d'aqueste empeuton es ja installada. - + Plugin %1 is not supported. - - + + Plugin is not supported. L'empeuton es pas suportat. - + Plugin %1 has been successfully updated. - + All categories Totas las categorias - + Movies Filmes - + TV shows Serias TV - + Music Musica - + Games Jòcs - + Anime Anime - + Software Logicials - + Pictures Fòtos - + Books Libres - + Update server is temporarily unavailable. %1 O planhèm, lo servidor de mesa a jorn es temporàriament indisponible. %1 - - + + Failed to download the plugin file. %1 Impossible de telecargar l'empeuton. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8951,113 +9420,152 @@ Los empeutons en question son estats desactivats. - - - - Search Recèrca - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... Empeutons de recèrca... - + A phrase to search for. Una frasa de recercar - + Spaces in a search term may be protected by double quotes. Los espacis dins un tèrme de recèrca pòdon èsser protegits per de verguetas. - + Example: Search phrase example Exemple : - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: recèrca <b>foo bar</b> - + All plugins Totes los empeutons - + Only enabled Unicament activat(s) - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: recèrca <b>foo</b> e <b>bar</b> - + + Refresh + + + + Close tab - + Close all tabs - + Select... Causir... - - - + + Search Engine Motor de recèrca - + + Please install Python to use the Search Engine. Installatz Python per fin d'utilizar lo motor de recèrca. - + Empty search pattern Motiu de recèrca void - + Please type a search pattern first Entratz un motiu de recèrca - + + Stop Arrestar - Search has finished - Recèrca acabada + Recèrca acabada - Search has failed - La recèrca a fracassat + La recèrca a fracassat + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9170,34 +9678,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Mandadís : - - - + + + - - - + + + KiB/s - - + + Download: Telecargament : - + Alternative speed limits @@ -9295,17 +9803,17 @@ Click the "Search plugins..." button at the bottom right of the window 3 Hours - 6 oras {3 ?} + 12 Hours - 6 oras {12 ?} + 24 Hours - 6 oras {24 ?} + @@ -9389,32 +9897,32 @@ Click the "Search plugins..." button at the bottom right of the window Temps mejan passat en fila d'espèra : - + Connected peers: - + All-time share ratio: - + All-time download: - + Session waste: - + All-time upload: - + Total buffer size: @@ -9429,12 +9937,12 @@ Click the "Search plugins..." button at the bottom right of the window Accions d'E/S en fila d'espèra : - + Write cache overload: Subrecarga del tampon d'escritura : - + Read cache overload: Subrecarga del tampon de lectura : @@ -9453,51 +9961,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Estatut de la connexion : - - + + No direct connections. This may indicate network configuration problems. Pas cap de connexion dirècta. Aquò pòt èsser signe d'una marrida configuracion de la ret. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT : %1 nosèls - + qBittorrent needs to be restarted! - - - + + + Connection Status: Estat de la connexion : - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Fòra linha. Aquò significa generalament que qBittorrent a pas pogut se metre en escota sul pòrt definit per las connexions entrantas. - + Online Connectat - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Clicatz aicí per utilizar los limits de velocitat alternatius - + Click to switch to regular speed limits Clicatz aicí per utilizar los limits de velocitat normals @@ -9526,14 +10050,22 @@ Click the "Search plugins..." button at the bottom right of the window Acabats (0) - Resumed (0) - Aviats (0) + Aviats (0) - Paused (0) - En Pausa (0) + En Pausa (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9595,10 +10127,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Acabats (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - En Pausa (%1) + En Pausa (%1) @@ -9606,14 +10157,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resume torrents - Aviar los torrents + Aviar los torrents - Pause torrents - Metre en pausa los torrents + Metre en pausa los torrents @@ -9621,9 +10170,8 @@ Click the "Search plugins..." button at the bottom right of the window - Resumed (%1) - Aviats (%1) + Aviats (%1) @@ -9664,17 +10212,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags - + All Totes - + Untagged @@ -9682,52 +10230,60 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... - + Remove tag - + Remove unused tags - Resume torrents - Aviar los torrents + Aviar los torrents - Pause torrents - Metre en pausa los torrents + Metre en pausa los torrents - + Remove torrents - - New Tag + + Start torrents + + + + + Stop torrents - + Tag: - + + Add tag + + + + Invalid tag name - + Tag name '%1' is invalid @@ -9864,32 +10420,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Nom - + Progress Progression - + Download Priority Prioritat de telecargament - + Remaining Restant - + Availability - + Total Size Talha totala @@ -9934,102 +10490,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error - + Renaming - + New name: Novèl nom : - + Column visibility Visibilitat de las colomnas - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Dobèrt - + Open containing folder - + Rename... Renomenar… - + Priority Prioritat - - + + Do not download Telecargar pas - + Normal Normala - + High Nauta - + Maximum Maximala - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10054,13 +10628,13 @@ Please choose a different name and try again. - + Select file - + Select folder @@ -10085,54 +10659,10 @@ Please choose a different name and try again. Talha dels tròces : - + Auto Automatic - - 16 KiB - 16 Kio - - - 32 KiB - 32 Kio - - - 64 KiB - 64 Kio - - - 128 KiB - 128 Kio - - - 256 KiB - 256 Kio - - - 512 KiB - 512 Kio - - - 1 MiB - 1 Mio - - - 2 MiB - 2 Mio - - - 4 MiB - 4 Mio - - - 8 MiB - 8 Mio - - - 16 MiB - 16 Mio - Calculate number of pieces: @@ -10179,88 +10709,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. Podètz separar los nivèls / gropes del tracker per una linha voida. - + Web seed URLs: - + Tracker URLs: URL dels trackers : - + Comments: - + Source: - + Progress: Progression : - + Create Torrent - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) Fichièrs torrent (*.torrent) - - Reason: %1 - - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + Torrent creator - + Torrent created: @@ -10268,32 +10793,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10301,27 +10826,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10329,14 +10854,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Metadata invalidas. + Metadata invalidas. @@ -10367,126 +10886,162 @@ Please choose a different name and try again. - + Category: Categoria : - - Torrent speed limits + + Torrent Share Limits - + Download: Telecargament : - - + + - - - KiB/s + + Torrent Speed Limits - - These will not exceed the global limits + + + KiB/s + + + + + These will not exceed the global limits - + Upload: Mandadís : - - Torrent share limits + + Disable DHT for this torrent - - Use global share limit - + + Download in sequential order + Telecargament sequencial - - Set no share limit + + Disable PeX for this torrent - - Set share limit to + + Download first and last pieces first + Telecargar primièras e darrièras pèças en primièr + + + + Disable LSD for this torrent - - ratio + + Currently used categories - - total minutes + + + Choose save path + Causida del repertòri de destinacion + + + + Not applicable to private torrents + + + TorrentShareLimitsWidget - - inactive minutes + + + + + Default - - Disable DHT for this torrent + + + + Unlimited - - Download in sequential order - Telecargament sequencial + + + + Set to + - - Disable PeX for this torrent + + Seeding time: - - Download first and last pieces first - Telecargar primièras e darrièras pèças en primièr + + + + + + + min + minutes + min - - Disable LSD for this torrent + + Inactive seeding time: - - Currently used categories + + Action when the limit is reached: - - - Choose save path - Causida del repertòri de destinacion + + Stop torrent + - - Not applicable to private torrents + + Remove torrent + + + + + Remove torrent and its content - - No share limit method selected + + Enable super seeding for torrent - - Please select a limit method first + + Ratio: @@ -10499,31 +11054,31 @@ Please choose a different name and try again. - New Tag + Add tag - + Tag: - + Invalid tag name - + Tag name '%1' is invalid. - + Tag exists - + Tag name already exists. @@ -10531,115 +11086,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name Nom de categoria incorrect @@ -10665,241 +11235,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - Fonciona + Fonciona - + Disabled - Desactivat + Desactivat - + Disabled for this torrent - + This torrent is private - Aqueste torrent es privat + Aqueste torrent es privat - + N/A - N/A + N/A - + Updating... - Mesa a jorn… + Mesa a jorn… - + Not working - Fonciona pas + Fonciona pas - + Tracker error - + Unreachable - + Not contacted yet - Pas encara contactat + Pas encara contactat - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier + + BT Protocol - - Protocol + + Next Announce - - Status - Estatut + + Min Announce + + + + + Tier + - Peers - Pars + Status + Estatut - Seeds - Fonts + Peers + Pars - Leeches - + Seeds + Fonts - Times Downloaded + Leeches - Message - Messatge - - - - Next announce - - - - - Min announce + Times Downloaded - - v%1 - + + Message + Messatge TrackerListWidget - Working - Fonciona - - - Disabled - Desactivat - - - + This torrent is private Aqueste torrent es privat - Updating... - Mesa a jorn… - - - Not working - Fonciona pas - - - Not contacted yet - Pas encara contactat - - - N/A - N/A - - - + Tracker editing Modificacion del tracker - + Tracker URL: URL del tracker : - - + + Tracker editing failed Fracàs de la modificacion del tracker - + The tracker URL entered is invalid. L'URL del tracker provesit es invalid. - + The tracker URL already exists. L'URL del tracker existís ja. - + Edit tracker URL... - + Remove tracker Suprimir lo tracker - + Copy tracker URL Copiar l'URL del tracker - + Force reannounce to selected trackers Forçar una novèla anóncia als trackers seleccionats - + Force reannounce to all trackers Forçar una novèla anóncia a totes los trackers - URL - URL - - - Status - Estatut - - - Seeds - Fonts - - - + Resize columns - + Resize all non-hidden columns to the size of their contents - Peers - Pars - - - + Add trackers... - Message - Messatge - - - + Column visibility Visibilitat de las colomnas @@ -10917,37 +11437,37 @@ Please choose a different name and try again. Lista dels trackers d'apondre (un per linha) : - + µTorrent compatible list URL: URL de la lista compatibla amb µTorrent : - + Download trackers list - + Add Apondre - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10955,83 +11475,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Totes (0) - - - Trackerless (0) - Sens tracker (0) - - - Error (0) - Error (0) - - - Warning (0) - Alèrta (0) - - - Error (%1) - Error (%1) - - - + Warning (%1) Alèrta (%1) - + Trackerless (%1) Sens tracker (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - Suprimir lo tracker + Suprimir lo tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Aviar los torrents + Aviar los torrents - Pause torrents - Metre en pausa los torrents + Metre en pausa los torrents - + Remove torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Totes (%1) @@ -11040,7 +11547,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11133,9 +11640,8 @@ Please choose a different name and try again. Verificacion de las donadas de reaviada - Paused - En pausa + En pausa @@ -11160,220 +11666,262 @@ Please choose a different name and try again. Error - + Name i.e: torrent name Nom - + Size i.e: torrent size Talha - + Progress % Done Progression - Status Torrent status (e.g. downloading, seeding, paused) - Estatut + Estatut - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Estatut + + + Seeds i.e. full sources (often untranslated) Fonts - + Peers i.e. partial sources (often untranslated) Pars - + Down Speed i.e: Download speed Velocitat DL - + Up Speed i.e: Upload speed Velocitat UP - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Temps restant - + Category Categoria - + Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Apondut lo - + Completed On Torrent was completed on 01/01/2010 08:00 Acabat lo - + Tracker Tracker - + Down Limit i.e: Download limit Limit recepcion - + Up Limit i.e: Upload limit Limit mandadís - + Downloaded Amount of data downloaded (e.g. in MB) Telecargat - + Uploaded Amount of data uploaded (e.g. in MB) Mandat - + Session Download Amount of data downloaded since program open (e.g. in MB) Telecargament de la session - + Session Upload Amount of data uploaded since program open (e.g. in MB) Emission de la session - + Remaining Amount of data left to download (e.g. in MB) Restant - + + Time Active + Time (duration) the torrent is active (not stopped) + Actiu pendent + + + + Yes + Òc + + + + No + Non + + Time Active Time (duration) the torrent is active (not paused) - Actiu pendent + Actiu pendent - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Acabat - + Ratio Limit Upload share ratio limit Limit de ratio - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Darrièr còp vist complet - + Last Activity Time passed since a chunk was downloaded/uploaded Darrièra activitat - + Total Size i.e. Size including unwanted data Talha totala - + Availability The number of distributed copies of the torrent - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago i a %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (partejat pendent %2) @@ -11382,334 +11930,329 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Visibilitat de las colomnas - + Recheck confirmation Reverificar la confirmacion - + Are you sure you want to recheck the selected torrent(s)? Sètz segur que volètz reverificar lo o los torrent(s) seleccionat(s) ? - + Rename Renomenar - + New name: Novèl nom : - + Choose save path Causida del repertòri de destinacion - - Confirm pause - - - - - Would you like to pause all torrents? - - - - - Confirm resume - - - - - Would you like to resume all torrents? - - - - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - - Add Tags - - - - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags - + Remove all tags from selected torrents? - + Comma-separated tags: - + Invalid tag - + Tag name: '%1' is invalid - &Resume Resume/start the torrent - &Aviar + &Aviar - &Pause Pause the torrent - Metre en &pausa - - - - Force Resu&me - Force Resume/start the torrent - + Metre en &pausa - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Telecargament sequencial - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - + Download first and last pieces first Telecargar primièras e darrièras pèças en primièr - + Automatic Torrent Management Gestion de torrent automatique - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode Mòde de superpartiment @@ -11754,28 +12297,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11783,7 +12326,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" @@ -11814,30 +12362,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python not detected - Python pas detectat - Found Python executable. Name: "%1". Version: "%2" @@ -11872,27 +12417,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11956,72 +12501,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12029,138 +12574,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + Error desconeguda + + misc - + B bytes Oct - + KiB kibibytes (1024 bytes) Kio - + MiB mebibytes (1024 kibibytes) Mio - + GiB gibibytes (1024 mibibytes) Gio - + TiB tebibytes (1024 gibibytes) Tio - + PiB pebibytes (1024 tebibytes) Pio - + EiB exbibytes (1024 pebibytes) Eio - + /s per second /s - + %1s e.g: 10 seconds - %1min {1s?} + - + %1m e.g: 10 minutes - %1min + %1min - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1j %2h + %1j %2h - + %1y %2d e.g: 2 years 10 days - %1j %2h {1y?} {2d?} - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1j %2h + - - + + Unknown Unknown (size) Desconeguda - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent, ara, va atudar l'ordenador perque totes los telecargaments son acabats. - + < 1m < 1 minute < 1min - - %1m - e.g: 10minutes - %1min - diff --git a/src/lang/qbittorrent_pl.ts b/src/lang/qbittorrent_pl.ts index 188b80fca83b..23568ae199dd 100644 --- a/src/lang/qbittorrent_pl.ts +++ b/src/lang/qbittorrent_pl.ts @@ -14,77 +14,77 @@ O programie - + Authors Autorzy - + Current maintainer Aktualny opiekun - + Greece Grecja - - + + Nationality: Narodowość: - - + + E-mail: E-mail: - - + + Name: Imię i nazwisko: - + Original author Pierwotny autor - + France Francja - + Special Thanks Specjalne podziękowania - + Translators Tłumacze - + License Licencja - + Software Used Użyte oprogramowanie - + qBittorrent was built with the following libraries: qBittorrent został stworzony z wykorzystaniem następujących bibliotek: - + Copy to clipboard - + Skopiuj do schowka @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 Projekt qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 Projekt qBittorrent @@ -114,7 +114,7 @@ The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License - Bezpłatna baza danych „IP to Country Lite” firmy DB-IP służy do uzgadniania krajów partnerów. Baza danych jest licencjonowana na podstawie licencji Creative Commons Attribution 4.0 International + Bezpłatna baza danych "IP to Country Lite" firmy DB-IP służy do uzgadniania krajów partnerów. Baza danych jest licencjonowana na podstawie licencji Creative Commons Attribution 4.0 International @@ -166,14 +166,13 @@ Zapisz w - + Never show again Nigdy więcej nie pokazuj - Torrent settings - Ustawienia torrenta + Ustawienia torrenta @@ -191,12 +190,12 @@ Rozpocznij pobieranie - + Torrent information Informacje o torrencie - + Skip hash check Pomiń sprawdzanie danych @@ -205,6 +204,11 @@ Use another path for incomplete torrent Używaj innej ścieżki do niekompletnego torrenta + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Warunek zatrzymania: - - + + None Żaden - - + + Metadata received Odebrane metadane - - + + Torrents that have metadata initially will be added as stopped. + Torrenty, które mają metadane, początkowo zostaną dodane jako zatrzymane. + + + + Files checked Sprawdzone pliki - + Add to top of queue Dodaj na początek kolejki - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - Gdy zaznaczone, plik .torrent nie zostanie usunięty niezależnie od ustawień na stronie „Pobieranie” okna dialogowego Opcje + Gdy zaznaczone, plik .torrent nie zostanie usunięty niezależnie od ustawień na stronie "Pobieranie" okna dialogowego Opcje - + Content layout: Układ zawartości: - + Original Pierwotny - + Create subfolder Utwórz podfolder - + Don't create subfolder Nie twórz podfolderu - + Info hash v1: Info hash v1: - + Size: Rozmiar: - + Comment: Komentarz: - + Date: Data: @@ -324,245 +333,182 @@ Zapamiętaj ostatnią użytą ścieżkę zapisu - + Do not delete .torrent file Nie usuwaj pliku .torrent - + Download in sequential order Pobierz w kolejności sekwencyjnej - + Download first and last pieces first Pobierz najpierw część pierwszą i ostatnią - + Info hash v2: Info hash v2: - + Select All Zaznacz wszystko - + Select None Odznacz wszystko - + Save as .torrent file... Zapisz jako plik .torrent... - + I/O Error Błąd we/wy - Invalid torrent - Nieprawidłowy torrent - - - + Not Available This comment is unavailable Niedostępne - + Not Available This date is unavailable Niedostępne - + Not available Niedostępne - Invalid magnet link - Nieprawidłowy odnośnik magnet - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Nie udało się załadować torrenta: %1. -Błąd: %2 - - - This magnet link was not recognized - Odnośnik magnet nie został rozpoznany - - - + Magnet link Odnośnik magnet - + Retrieving metadata... Pobieranie metadanych... - - + + Choose save path Wybierz ścieżkę zapisu - Torrent is already present - Torrent jest już obecny - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' jest już na liście transferów. Trackery nie zostały połączone, ponieważ jest to torrent prywatny. - - - Torrent is already queued for processing. - Torrent jest już w kolejce do przetwarzania. - - - + No stop condition is set. Nie jest ustawiony żaden warunek zatrzymania. - + Torrent will stop after metadata is received. Torrent zatrzyma się po odebraniu metadanych. - - Torrents that have metadata initially aren't affected. - Nie ma to wpływu na torrenty, które początkowo zawierają metadane. - - - + Torrent will stop after files are initially checked. Torrent zatrzyma się po wstępnym sprawdzeniu plików. - + This will also download metadata if it wasn't there initially. Spowoduje to również pobranie metadanych, jeśli początkowo ich tam nie było. - - + + N/A Nie dotyczy - Magnet link is already queued for processing. - Odnośnik magnet jest już w kolejce do przetwarzania. - - - + %1 (Free space on disk: %2) %1 (Wolne miejsce na dysku: %2) - + Not available This size is unavailable. Niedostępne - + Torrent file (*%1) Pliki torrent (*%1) - + Save as torrent file Zapisz jako plik torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Nie można wyeksportować pliku metadanych torrenta '%1'. Powód: %2. - + Cannot create v2 torrent until its data is fully downloaded. Nie można utworzyć torrenta v2, dopóki jego dane nie zostaną w pełni pobrane. - Cannot download '%1': %2 - Nie można pobrać '%1': %2 - - - + Filter files... Filtruj pliki... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' jest już na liście transferów. Trackery nie mogą zostać scalone, ponieważ jest to prywatny torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' jest już na liście transferów. Czy chcesz scalić trackery z nowego źródła? - - - + Parsing metadata... Przetwarzanie metadanych... - + Metadata retrieval complete Pobieranie metadanych zakończone - - Failed to load from URL: %1. -Error: %2 - Nie udało się załadować z adresu URL: %1. -Błąd: %2 - - - Download Error - Błąd pobierania - AddTorrentManager Downloading torrent... Source: "%1" - + Pobieranie torrenta... Źródło: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Nie udało się dodać torrenta. Źródło: "%1". Powód: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Wykryto próbę dodania zduplikowanego torrenta. Źródło: %1. Istniejący torrent: %2. Wynik: %3 - + Merging of trackers is disabled - + Scalanie trackerów jest wyłączone - + Trackers cannot be merged because it is a private torrent - + Nie można scalić trackerów, ponieważ jest to prywatny torrent - + Trackers are merged from new source - + Trackery zostały scalone z nowego źródła @@ -648,72 +594,77 @@ Błąd: %2 Pomiń sprawdzanie danych - - - Choose save path - Wybierz ścieżkę zapisu + + Torrent share limits + Limity udziału torrenta - - - - - - - Default - Domyślna + + + Choose save path + Wybierz ścieżkę zapisu + + + - Yes - Tak + Default + Domyślna + Yes + Tak + + + + + No Nie - + Manual Ręczny - + Automatic Automatyczny - + Original Pierwotny - + Create subfolder Utwórz podfolder - + Don't create subfolder Nie twórz podfolderu - + None Żaden - + Metadata received Odebrane metadane - + Files checked Sprawdzone pliki @@ -721,734 +672,852 @@ Błąd: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Sprawdzaj dane po pobraniu - - + + ms milliseconds ms - + Setting Ustawienie - + Value Value set for this setting Wartość - + (disabled) (wyłączone) - + (auto) (auto) - + + min minutes min - + All addresses Wszystkie adresy - + qBittorrent Section Sekcja qBittorrent - - + + Open documentation Otwórz dokumentację - + All IPv4 addresses Wszystkie adresy IPv4 - + All IPv6 addresses Wszystkie adresy IPv6 - + libtorrent Section Sekcja libtorrent - + Fastresume files Pliki fastresume - + SQLite database (experimental) Baza danych SQLite (eksperymentalne) - + Resume data storage type (requires restart) Wznów typ przechowywania danych (wymaga ponownego uruchomienia) - + Normal Normalny - + Below normal Poniżej normalnnego - + Medium Średni - + Low Niski - + Very low Bardzo niski - - Process memory priority (Windows >= 8 only) - Priorytet pamięci procesu (tylko Windows >= 8) - - - + Physical memory (RAM) usage limit Limit wykorzystania pamięci fizycznej (RAM) - + Asynchronous I/O threads Asynchroniczne wątki we-wy - + Hashing threads Wątki hashujące - + File pool size Rozmiar puli plików - + Outstanding memory when checking torrents Nieuregulowana pamięć podczas sprawdzania torrentów - + Disk cache Pamięć podręczna dysku - - - - + + + + s seconds s - + Disk cache expiry interval Okres ważności pamięci podręcznej - + Disk queue size Rozmiar kolejki dysku - - + + Enable OS cache Włącz pamięć podręczną systemu operacyjnego - + Coalesce reads & writes Połączone odczyty i zapisy - + Use piece extent affinity Użyj koligacji zakresu części - + Send upload piece suggestions Wyślij sugestie wysyłanej części - - - - + + + + + 0 (disabled) 0 (wyłączone) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Interwał zapisu danych wznowienia [0: wyłączone] - + Outgoing ports (Min) [0: disabled] Porty wychodzące (min.) [0: wyłączone] - + Outgoing ports (Max) [0: disabled] Porty wychodzące (maks.) [0: wyłączone] - + 0 (permanent lease) 0 (dzierżawa stała) - + UPnP lease duration [0: permanent lease] Okres dzierżawy UPnP [0: dzierżawa stała] - + Stop tracker timeout [0: disabled] Limit czasu zatrzymania trackera [0: wyłączone] - + Notification timeout [0: infinite, -1: system default] Limit czasu powiadomienia [0: nieskończony, -1: domyślne systemowe] - + Maximum outstanding requests to a single peer Maksymalne zaległe żądania do pojedynczego partnera - - - - - + + + + + KiB KiB - + (infinite) (nieskończone) - + (system default) (domyślne systemowe) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Ta opcja jest mniej efektywna w systemie Linux - + + Process memory priority + Priorytet pamięci procesu + + + Bdecode depth limit Limit głębi bdecode - + Bdecode token limit Limit tokena bdecode - + Default Domyślny - + Memory mapped files Pliki mapowane w pamięci - + POSIX-compliant Zgodny z POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Typ we/wy dysku (wymaga ponownego uruchomienia): - - + + Disable OS cache Wyłącz pamięć podręczną systemu operacyjnego - + Disk IO read mode Tryb odczytu we/wy dysku - + Write-through Bez buforowania zapisu - + Disk IO write mode Tryb zapisu we/wy dysku - + Send buffer watermark Wyślij limit bufora - + Send buffer low watermark Wyślij dolny limit bufora - + Send buffer watermark factor Wyślij czynnik limitu bufora - + Outgoing connections per second Połączenia wychodzące na sekundę - - + + 0 (system default) 0 (domyślne systemowe) - + Socket send buffer size [0: system default] Rozmiar bufora wysyłania gniazda [0: domyślne systemowe]: - + Socket receive buffer size [0: system default] Rozmiar bufora odbierania gniazda [0: domyślne systemowe] - + Socket backlog size Rozmiar zaległości gniazda - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Limit rozmiaru pliku .torrent - + Type of service (ToS) for connections to peers Typ usługi (ToS) do połączeń z partnerami - + Prefer TCP Preferuj TCP - + Peer proportional (throttles TCP) Partner współmierny (dławi TCP) - + Support internationalized domain name (IDN) Obsługuj międzynarodowe nazwy domen (IDN) - + Allow multiple connections from the same IP address Zezwalaj na wiele połączeń z tego samego adresu IP - + Validate HTTPS tracker certificates Sprawdź poprawność certyfikatów HTTPS trackerów - + Server-side request forgery (SSRF) mitigation Zapobieganie fałszowaniu żądań po stronie serwera (SSRF) - + Disallow connection to peers on privileged ports Nie zezwalaj na połączenia z partnerami na portach uprzywilejowanych - + + It appends the text to the window title to help distinguish qBittorent instances + Dołącza tekst do tytułu okna, aby pomóc rozróżnić instancje qBittorent + + + + Customize application instance name + Dostosuj nazwę instancji aplikacji + + + It controls the internal state update interval which in turn will affect UI updates Kontroluje częstotliwość aktualizacji stanu wewnętrznego, co z kolei wpłynie na aktualizacje interfejsu użytkownika - + Refresh interval Częstotliwość odświeżania - + Resolve peer host names Odczytuj nazwy hostów partnerów - + IP address reported to trackers (requires restart) Adres IP zgłoszony trackerom (wymaga ponownego uruchomienia) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Rozgłaszaj wszystkim trackerom po zmianie adresu IP lub portu - + Enable icons in menus Włącz ikony w menu - + Enable port forwarding for embedded tracker Włącz przekierowanie portów dla wbudowanego trackera - - (Auto detect if empty) + + Enable quarantine for downloaded files + Włącz kwarantannę dla pobranych plików + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Włącz Mark-of-the-Web (MOTW) dla pobranych plików + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Autowykrywanie, jeśli puste) + + + Python executable path (may require restart) + Ścieżka pliku wykonywalnego Pythona (może wymagać ponownego uruchomienia) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + s + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Potwierdź usunięcie trackera ze wszystkich torrentów + + + Peer turnover disconnect percentage Procent rozłączania obrotu partnerów - + Peer turnover threshold percentage Procent progu obrotu partnerów - + Peer turnover disconnect interval Interwał rozłączania obrotu partnerów - + Resets to default if empty - + Resetuje do ustawień domyślnych, jeśli puste - + DHT bootstrap nodes - + Węzły bootstrap DHT - + I2P inbound quantity Ilość ruchu przychodzącego I2P - + I2P outbound quantity Ilość ruchu wychodzącego I2P - + I2P inbound length Długość ruchu przychodzącego I2P - + I2P outbound length Długość ruchu wychodzącego I2P - + Display notifications Wyświetlaj powiadomienia - + Display notifications for added torrents Wyświetlaj powiadomienia dodanych torrentów - + Download tracker's favicon Pobierz ikonę ulubionych trackera - + Save path history length Długość historii ścieżki zapisu - + Enable speed graphs Włącz wykresy prędkości - + Fixed slots Stałe sloty - + Upload rate based Na podstawie współczynnika wysyłania - + Upload slots behavior Zachowanie slotów wysyłania - + Round-robin Karuzela - + Fastest upload Najszybsze wysyłanie - + Anti-leech Anty-pijawka - + Upload choking algorithm Algorytm dławienia wysyłania - + Confirm torrent recheck Potwierdź ponowne sprawdzanie torrenta - + Confirm removal of all tags Potwierdź usunięcie wszystkich znaczników - + Always announce to all trackers in a tier Zawsze ogłaszaj do wszystkich trackerów na poziomie - + Always announce to all tiers Zawsze ogłaszaj na wszystkich poziomach - + Any interface i.e. Any network interface Dowolny interfejs - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algorytm trybu mieszanego %1-TCP - + Resolve peer countries Uzgodnij państwa partnera - + Network interface Interfejs sieciowy - + Optional IP address to bind to Opcjonalny adres IP do powiązania - + Max concurrent HTTP announces Maksymalna liczba jednoczesnych komunikatów HTTP - + Enable embedded tracker Włącz wbudowany tracker - + Embedded tracker port Port wbudowanego trackera - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - Uruchomiono qBittorrent %1 + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Uruchomiono w trybie przenośnym. Automatycznie wykryty folder profilu w: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Wykryto nadmiarową flagę wiersza poleceń: "%1". Tryb przenośny oznacza względne fastresume. - + Using config directory: %1 Korzystanie z katalogu konfiguracji: %1 - + Torrent name: %1 Nazwa torrenta: %1 - + Torrent size: %1 Rozmiar torrenta: %1 - + Save path: %1 Ścieżka zapisu: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent został pobrany w %1. - + + Thank you for using qBittorrent. Dziękujemy za używanie qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, wysyłanie powiadomienia e-mail - + Add torrent failed - + Dodanie torrenta nie powiodło się - + Couldn't add torrent '%1', reason: %2. - + Nie można dodać torrenta '%1', powód: %2. + + + + The WebUI administrator username is: %1 + Nazwa użytkownika administratora interfejsu WWW to: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Hasło administratora interfejsu WWW nie zostało ustawione. Dla tej sesji podano tymczasowe hasło: %1 - + + You should set your own password in program preferences. + Należy ustawić własne hasło w preferencjach programu. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Interfejs WWW jest wyłączony! Aby go włączyć, edytuj ręcznie plik konfiguracyjny. - + Running external program. Torrent: "%1". Command: `%2` Uruchamianie programu zewnętrznego. Torrent: "%1". Polecenie: `% 2` - + Failed to run external program. Torrent: "%1". Command: `%2` Uruchomienie programu zewnętrznego nie powiodło się. Torrent: "%1". Polecenie: `%2` - + Torrent "%1" has finished downloading Torrent "%1" skończył pobieranie - + WebUI will be started shortly after internal preparations. Please wait... Interfejs WWW zostanie uruchomiony wkrótce po wewnętrznych przygotowaniach. Proszę czekać... - - + + Loading torrents... Ładowanie torrentów... - + E&xit Zak&ończ - + I/O Error i.e: Input/Output Error Błąd we/wy - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Błąd: %2 Powód: %2 - Error - Błąd - - - Failed to add torrent: %1 - Nie udało się dodać torrenta: %1 - - - + Torrent added Dodano torrent - + '%1' was added. e.g: xxx.avi was added. '%1' został dodany. - + Download completed Pobieranie zakończone - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' został pobrany. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 został uruchomiony. Identyfikator procesu: %2 - URL download error - Błąd pobierania adresu URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Nie można pobrać pliku z adresu URL: '%1'. Powód: %2. + + Test email + - Torrent file association - Powiązanie z plikami torrent + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' został pobrany. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent nie jest domyślnym programem do otwierania plików torrent lub odnośników magnet. -Czy chcesz, aby qBittorrent był dla nich domyślnym programem? - - - + Information Informacje - + To fix the error, you may need to edit the config file manually. - + Aby naprawić błąd, może być konieczna ręczna edycja pliku konfiguracyjnego. - + To control qBittorrent, access the WebUI at: %1 Aby kontrolować qBittorrent, należy uzyskać dostęp do interfejsu WWW pod adresem: %1 - - The Web UI administrator username is: %1 - Nazwa użytkownika administratora interfejsu WWW to: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Hasło administratora interfejsu WWW nie zostało zmienione z domyślnego: %1 - - - - This is a security risk, please change your password in program preferences. - Ze względów bezpieczeństwa zmień hasło w ustawieniach programu. - - - Application failed to start. - Uruchomienie aplikacji nie powiodło się. - - - + Exit Zakończ - + Recursive download confirmation - Potwierdzenie pobierania rekurencyjnego + Potwierdzenie pobierania rekurencyjnego - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' zawiera pliki torrent, czy chcesz rozpocząć ich pobieranie? + Torrent '%1' zawiera pliki torrent, czy chcesz rozpocząć ich pobieranie? - + Never - Nigdy + Nigdy - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursywne pobieranie pliku .torrent w obrębie torrenta. Torrent źródłowy: "%1". Plik: "%2" + Rekursywne pobieranie pliku .torrent w obrębie torrenta. Torrent źródłowy: "%1". Plik: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Nie udało się ustawić limitu wykorzystania pamięci fizycznej (RAM). Kod błędu: %1. Komunikat o błędzie: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Nie udało się ustawić twardego limitu użycia pamięci fizycznej (RAM). Żądany rozmiar: %1. Twardy limit systemowy: %2. Kod błędu: %3. Komunikat o błędzie: "%4" - + qBittorrent termination initiated Rozpoczęto wyłączanie programu qBittorrent - + qBittorrent is shutting down... qBittorrent wyłącza się... - + Saving torrent progress... Zapisywanie postępu torrenta... - + qBittorrent is now ready to exit qBittorrent jest teraz gotowy do zakończenia @@ -1597,7 +1637,7 @@ Czy chcesz, aby qBittorrent był dla nich domyślnym programem? AsyncFileStorage - + Could not create directory '%1'. Nie można utworzyć katalogu '%1'. @@ -1605,22 +1645,22 @@ Czy chcesz, aby qBittorrent był dla nich domyślnym programem? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Błąd logowania WebAPI. Powód: IP został zbanowany, IP: %1, nazwa użytkownika: %2 - + Your IP address has been banned after too many failed authentication attempts. Twój adres IP został zbanowany po zbyt wielu nieudanych próbach uwierzytelnienia. - + WebAPI login success. IP: %1 Sukces logowania WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Błąd logowania WebAPI. Powód: nieprawidłowe dane uwierzytelniające, liczba prób: %1, IP:%2, nazwa użytkownika: %3 @@ -1668,12 +1708,12 @@ Czy chcesz, aby qBittorrent był dla nich domyślnym programem? Priorytet: - + Must Not Contain: Nie może zawierać: - + Episode Filter: Filtr odcinków: @@ -1726,263 +1766,263 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi &Eksportuj... - + Matches articles based on episode filter. Dopasowane artykuły na podstawie filtra epizodów. - + Example: Przykład: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match dopasuje 2, 5, 8, poprzez 15, 30 oraz dalsze odcinki pierwszego sezonu - + Episode filter rules: Reguły filra odcinków: - + Season number is a mandatory non-zero value Numer sezonu jest obowiązkową wartością niezerową - + Filter must end with semicolon Filtr musi być zakończony średnikiem - + Three range types for episodes are supported: Obsługiwane są trzy rodzaje zakresu odcinków: - + Single number: <b>1x25;</b> matches episode 25 of season one Liczba pojedyncza: <b>1x25;</b> dopasuje odcinek 25 sezonu pierwszego - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Zwykły zakres: <b>1x25-40;</b> dopasuje odcinki 25 do 40 sezonu pierwszego - + Episode number is a mandatory positive value Numer odcinka jest obowiązkową wartością dodatnią - + Rules Reguły - + Rules (legacy) Reguły (przestarzałe) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Nieskończony zakres: <b>1x25-;</b> dopasuje odcinki 25 i wzwyż sezonu pierwszego, a także wszystkie odcinki późniejszych sezonów - + Last Match: %1 days ago Ostatni pasujący: %1 dni temu - + Last Match: Unknown Ostatni pasujący: nieznany - + New rule name Nazwa nowej reguły - + Please type the name of the new download rule. Wprowadź nazwę dla tworzonej reguły pobierania. - - + + Rule name conflict Konflikt nazw reguł - - + + A rule with this name already exists, please choose another name. Reguła o wybranej nazwie już istnieje. Wybierz inną. - + Are you sure you want to remove the download rule named '%1'? Czy na pewno usunąć regułę pobierania o nazwie %1? - + Are you sure you want to remove the selected download rules? Czy na pewno usunąć wybrane reguły pobierania? - + Rule deletion confirmation Potwierdzenie usuwania reguły - + Invalid action - Nieprawidłowa operacja + Nieprawidłowa czynność - + The list is empty, there is nothing to export. Lista jest pusta, nie ma czego eksportować. - + Export RSS rules Eksportuj reguły RSS - + I/O Error Błąd we/wy - + Failed to create the destination file. Reason: %1 Nie udało się utworzyć pliku docelowego. Powód: %1 - + Import RSS rules Importuj reguły RSS - + Failed to import the selected rules file. Reason: %1 Nie udało się zaimportować wybranego pliku reguł. Powód: %1 - + Add new rule... Dodaj nową regułę... - + Delete rule Usuń regułę - + Rename rule... Zmień nazwę reguły... - + Delete selected rules Usuń wybrane reguły - + Clear downloaded episodes... Wyczyść pobrane odcinki... - + Rule renaming Zmiana nazwy reguły - + Please type the new rule name Podaj nową nazwę reguły - + Clear downloaded episodes Wyczyść pobrane odcinki - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Czy na pewno chcesz wyczyścić listę pobranych odcinków dla wybranej reguły? - + Regex mode: use Perl-compatible regular expressions Tryb regex: używaj wyrażeń regularnych zgodnych z Perl - - + + Position %1: %2 Pozycja %1: %2 - + Wildcard mode: you can use Tryb wieloznaczny: można używać - - + + Import error Błąd podczas importowania - + Failed to read the file. %1 Nie udało się odczytać pliku. %1 - + ? to match any single character ? do dopasowania dowolnego pojedynczego znaku - + * to match zero or more of any characters * do dopasowania zera lub więcej dowolnych znaków - + Whitespaces count as AND operators (all words, any order) Odstępy traktowane są jako operatory AND (wszystkie słowa, dowolna kolejność) - + | is used as OR operator | jest użyty jako operator OR - + If word order is important use * instead of whitespace. Jeśli kolejność słów jest ważna, użyj * zamiast odstępu. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Wyrażenie z pustą %1 klauzulą (np. %2) - + will match all articles. będzie pasować do wszystkich artykułów. - + will exclude all articles. wykluczy wszystkie artykuły. @@ -2024,53 +2064,58 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nie możma utworzyć folderu wznawiania torrenta: "%1" - + Cannot parse resume data: invalid format Nie można przetworzyć danych wznowienia - - + + Cannot parse torrent info: %1 Nie można przetworzyć informacji torrenta: %1 - + Cannot parse torrent info: invalid format Nie można przetworzyć informacji torrenta: nieprawidłowy format - + + Mismatching info-hash detected in resume data + Wykryto niezgodny info hash w danych wznawiania + + + Couldn't save torrent metadata to '%1'. Error: %2. Nie można zapisać metdanych torrenta w '%1'. Błąd: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Nie można zapisać danych wznawiania torrenta w '%1'. Błąd: %2. - + Couldn't load torrents queue: %1 Nie można załadować kolejki torrentów: %1 - + Cannot parse resume data: %1 Nie można przetworzyć danych wznowienia: %1 - + Resume data is invalid: neither metadata nor info-hash was found - Dane wznawiania są nieprawidłowe: nie znaleziono metadanych ani info-hash + Dane wznawiania są nieprawidłowe: nie znaleziono metadanych ani info hashu - + Couldn't save data to '%1'. Error: %2 Nie można zapisać danych w '%1'. Błąd: %2 @@ -2078,38 +2123,38 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi BitTorrent::DBResumeDataStorage - + Not found. Nie znaleziono. - + Couldn't load resume data of torrent '%1'. Error: %2 Nie można wczytać danych wznawiania torrenta '%1'. Błąd: %2 - - + + Database is corrupted. Baza danych jest uszkodzona. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Nie można włączyć trybu dziennikowania zapisu z wyprzedzeniem (WAL). Błąd: %1. - + Couldn't obtain query result. Nie można uzyskać wyniku zapytania. - + WAL mode is probably unsupported due to filesystem limitations. Tryb WAL prawdopodobnie nie jest obsługiwany ze względu na ograniczenia systemu plików. - + Couldn't begin transaction. Error: %1 Nie można rozpocząć transakcji. Błąd: %1 @@ -2117,22 +2162,22 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Nie można zapisać metdanych torrenta. Błąd: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Nie można przechować danych wznawiania torrenta '%1'. Błąd: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Nie można usunąć danych wznawiania torrenta '%1'. Błąd: %2 - + Couldn't store torrents queue positions. Error: %1 Nie można przechować pozycji w kolejce torrentów. Błąd: %1 @@ -2140,586 +2185,620 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Obsługa rozproszonej tablicy mieszającej (DHT): %1 - - - - - - - - - + + + + + + + + + ON WŁ. - - - - - - - - - + + + + + + + + + OFF WYŁ. - - + + Local Peer Discovery support: %1 Obsługa wykrywania partnerów w sieci lokalnej: %1 - + Restart is required to toggle Peer Exchange (PeX) support Ponowne uruchomienie jest wymagane, aby przełączyć obsługę wymiany partnerów (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Nie udało się wznowić torrenta. Torrent: "%1". Powód: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Nie udało się wznowić torrenta: wykryto niespójny identyfikator torrenta. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Wykryto niespójne dane: brak kategorii w pliku konfiguracyjnym. Kategoria zostanie przywrócona, ale jej ustawienia zostaną zresetowane do wartości domyślnych. Torrent: "%1". Kategoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Wykryto niespójne dane: nieprawidłowa kategoria. Torrent: "%1". Kategoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Wykryto niezgodność między ścieżkami zapisu odzyskanej kategorii i bieżącą ścieżką zapisu torrenta. Torrent jest teraz przełączony w tryb ręczny. Torrent: "%1". Kategoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Wykryto niespójne dane: w pliku konfiguracyjnym brakuje znacznika. Znacznik zostanie odzyskany. Torrent: "%1". Znacznik: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Wykryto niespójne dane: nieprawidłowy znacznik. Torrent: "%1". Znacznik: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Wykryto zdarzenie wybudzenia systemu. Rozgłaszam wszystkim trackerom... - + Peer ID: "%1" Identyfikator partnera: "%1" - + HTTP User-Agent: "%1" Agent użytkownika HTTP: "%1" - + Peer Exchange (PeX) support: %1 Obsługa wymiany partnerów (PeX): %1 - - + + Anonymous mode: %1 Tryb anonimowy: %1 - - + + Encryption support: %1 Obsługa szyfrowania: %1 - - + + FORCED WYMUSZONE - + Could not find GUID of network interface. Interface: "%1" Nie mozna uzyskać GUID interfejsu sieciowego. Interfejs: "%1" - + Trying to listen on the following list of IP addresses: "%1" Próbuję nasłuchiwać na poniższej liście adresów IP: "%1" - + Torrent reached the share ratio limit. Torrent osiągnął limit współczynnika udziału. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent usunięto. + Torrent usunięto. - - - Removed torrent and deleted its content. - Usunięto torrent i skasowano jego zawartość. + Usunięto torrent i skasowano jego zawartość. - - - Torrent paused. - Torrent wstrzymano. + Torrent wstrzymano. - - - + Super seeding enabled. Super-seedowanie włączone. - + Torrent reached the seeding time limit. Torrent osiągnął limit czasu seedowania. - + Torrent reached the inactive seeding time limit. Torrent osiągnął limit nieaktywnego czasu seedowania. - + Failed to load torrent. Reason: "%1" Nie udało się załadować torrenta. Powód: "%1" - + I2P error. Message: "%1". + Błąd I2P. Komunikat: "%1". + + + + UPnP/NAT-PMP support: ON + Obsługa UPnP/NAT-PMP: WŁ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Pobieranie torrenta, proszę czekać... Źródło: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Nie udało się załadować torrenta. Źródło: "%1". Powód: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Wykryto próbę dodania zduplikowanego torrenta. Łączenie trackerów jest wyłączone. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Wykryto próbę dodania zduplikowanego torrenta. Trackerów nie można łączyć, ponieważ jest to prywatny torrent. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Wykryto próbę dodania zduplikowanego torrenta. Trackery są scalane z nowego źródła. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Obsługa UPnP/NAT-PMP: WŁ + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Obsługa UPnP/NAT-PMP: WYŁ + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Nie udało się wyeksportować torrenta. Torrent: "%1". Cel: "%2". Powód: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Przerwano zapisywanie danych wznowienia. Liczba zaległych torrentów: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Scalanie trackerów jest wyłączone + + + + Trackers cannot be merged because it is a private torrent + Nie można scalić trackerów, ponieważ jest to prywatny torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Stan sieci systemu zmieniono na %1 + + Trackers are merged from new source + Trackery zostały scalone z nowego źródła - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + Obsługa UPnP/NAT-PMP: WYŁ - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Nie udało się wyeksportować torrenta. Torrent: "%1". Cel: "%2". Powód: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Konfiguracja sieci %1 uległa zmianie, odświeżanie powiązania sesji + + Aborted saving resume data. Number of outstanding torrents: %1 + Przerwano zapisywanie danych wznowienia. Liczba zaległych torrentów: %1 - + The configured network address is invalid. Address: "%1" Skonfigurowany adres sieciowy jest nieprawidłowy. Adres: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Nie udało się znaleźć skonfigurowanego adresu sieciowego do nasłuchu. Adres: "%1" - + The configured network interface is invalid. Interface: "%1" Skonfigurowany interfejs sieciowy jest nieprawidłowy. Interfejs: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Odrzucono nieprawidłowy adres IP podczas stosowania listy zbanowanych adresów IP. Adres IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Dodano tracker do torrenta. Torrent: "%1". Tracker: "%2". - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Usunięto tracker z torrenta. Torrent: "%1". Tracker: "%2". - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Dodano adres URL seeda do torrenta. Torrent: "%1". URL: "%2". - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Usunięto adres URL seeda z torrenta. Torrent: "%1". URL: "%2". - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent wstrzymano. Torrent: "%1" + Torrent wstrzymano. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent wznowiono. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrenta pobieranie zakończyło się. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Anulowano przenoszenie torrenta. Torrent: "%1". Źródło: "%2". Cel: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Nie udało się zakolejkować przenoszenia torrenta. Torrent: "%1". Źródło: "%2". Cel: "%3". Powód: torrent obecnie przenosi się do celu - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Nie udało się zakolejkować przenoszenia torrenta. Torrent: "%1". Źródło: "%2". Cel: "%3". Powód: obie ścieżki prowadzą do tej samej lokalizacji - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Przenoszenie zakolejkowanego torrenta. Torrent: "%1". Źródło: "%2". Cel: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Rozpoczęcie przenoszenia torrenta. Torrent: "%1". Cel: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Nie udało się zapisać konfiguracji kategorii. Plik: "%1" Błąd: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Nie udało się przetworzyć konfiguracji kategorii. Plik: "%1". Błąd: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursywne pobieranie pliku .torrent w obrębie torrenta. Torrent źródłowy: "%1". Plik: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Nie udało się załadować pliku .torrent w obrębie torrenta. Torrent źródłowy: "%1". Plik: "%2". Błąd: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Pomyślnie przetworzono plik filtra IP. Liczba zastosowanych reguł: %1 - + Failed to parse the IP filter file Nie udało się przetworzyć pliku filtra IP - + Restored torrent. Torrent: "%1" Przywrócono torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Dodano nowy torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent wadliwy. Torrent: "%1". Błąd: "%2" - - Removed torrent. Torrent: "%1" - Usunięto torrent. Torrent: "%1" + Usunięto torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Usunięto torrent i skasowano jego zawartość. Torrent: "%1" + Usunięto torrent i skasowano jego zawartość. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentowi brakuje parametrów SSL. Torrent: "%1". Komunikat: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Alert błędu pliku. Torrent: "%1". Plik: "%2". Powód: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Mapowanie portu UPnP/NAT-PMP nie powiodło się. Komunikat: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Mapowanie portu UPnP/NAT-PMP powiodło się. Komunikat: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtr IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). port filtrowany (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). port uprzywilejowany (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Sesja BitTorrent napotkała poważny błąd. Powód: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Błąd proxy SOCKS5. Adres: %1. Komunikat: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 ograniczenia trybu mieszanego - + Failed to load Categories. %1 Nie udało się załadować kategorii. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Nie udało się załadować konfiguracji kategorii. Plik: "%1". Błąd: "Nieprawidłowy format danych" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Usunięto torrent, ale nie udało się skasować jego zawartości i/lub pliku częściowego. Torrent: "%1". Błąd: "%2" + Usunięto torrent, ale nie udało się skasować jego zawartości i/lub pliku częściowego. Torrent: "%1". Błąd: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 jest wyłączone - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 jest wyłączone - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Wyszukanie DNS adresu URL seeda nie powiodło się. Torrent: "%1". URL: "%2". Błąd: "%3" + Wyszukanie DNS adresu URL seeda nie powiodło się. Torrent: "%1". URL: "%2". Błąd: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Odebrano komunikat o błędzie URL seeda. Torrent: "%1". URL: "%2". Komunikat: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Pomyślne nasłuchiwanie IP. Adres IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Nie udało się nasłuchiwać IP. Adres IP: "%1". Port: "%2/%3". Powód: "%4" - + Detected external IP. IP: "%1" Wykryto zewnętrzny IP. Adres IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Błąd: wewnętrzna kolejka alertów jest pełna, a alerty są odrzucane, może wystąpić spadek wydajności. Porzucony typ alertu: "%1". Komunikat: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Przeniesiono torrent pomyślnie. Torrent: "%1". Cel: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Nie udało się przenieść torrenta. Torrent: "%1". Źródło: "%2". Cel: "%3". Powód "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operacja przerwana - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Utworzenie nowego pliku torrent nie powiodło się. Powód: %1. + + Failed to start seeding. + Nie udało się rozpocząć seedowania. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operacja przerwana + Operacja przerwana + + Create new torrent file failed. Reason: %1. - Utworzenie nowego pliku torrent nie powiodło się. Powód: %1. + Utworzenie nowego pliku torrent nie powiodło się. Powód: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Nie powiodło się dodanie partnera "%1" do torrenta "%2". Powód: %3 - + Peer "%1" is added to torrent "%2" Partner "%1" został dodany do torrenta "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Wykryto nieoczekiwane dane. Torrent: %1. Dane: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - Nie udało się zapisać do pliku. Powód: "%1". Torrent jest teraz w trybie „tylko przesyłanie”. + Nie udało się zapisać do pliku. Powód: "%1". Torrent jest teraz w trybie "tylko przesyłanie". - + Download first and last piece first: %1, torrent: '%2' Pobierz najpierw część pierwszą i ostatnią: %1, torrent: '%2' - + On Wł. - + Off Wył. - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Nie udało się ponownie załadować torrenta. Torrent: %1. Powód: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Nie udało się wygenerować danych wznowienia. Torrent: "%1". Powód: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Nie udało się przywrócić torrenta. Pliki zostały prawdopodobnie przeniesione lub pamięć jest niedostępna. Torrent: "%1". Powód: "%2" - + Missing metadata Brakujące metadane - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Zmiana nazwy pliku nie powiodła się. Torrent: "%1", plik: "%2", powód: "%3" - + Performance alert: %1. More info: %2 Alert wydajności: %1. Więcej informacji: %2 @@ -2740,184 +2819,198 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametr '%1' musi odpowiadać składni '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametr '%1' musi odpowiadać składni '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Oczekiwano liczbę całkowitą w zmiennej środowiskowej '%1', ale otrzymano '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametr '%1' musi odpowiadać składni '%1=%2' + Parametr '%1' musi odpowiadać składni '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Oczekiwano %1 w zmiennej środowiskowej '%2', ale otrzymano '%3' - - + + %1 must specify a valid port (1 to 65535). %1 musi określić prawidłowy port (1 do 65535). - + Usage: Użycie: - + [options] [(<filename> | <url>)...] [opcje] [(<filename> | <url>)...] - + Options: Opcje: - + Display program version and exit Wyświetl wersję programu i zamknij - + Display this help message and exit Wyświetl tę wiadomość pomocy i zamknij - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametr '%1' musi odpowiadać składni '%1=%2' + + + + Confirm the legal notice + Potwierdź informację prawną + + + + port port - - Change the Web UI port + + Change the WebUI port Zmień port interfejsu WWW - + Change the torrenting port Zmień port torrentowy - + Disable splash screen Wyłączenie ekranu startowego - + Run in daemon-mode (background) Uruchom w trybie demona (w tle) - + dir Use appropriate short form or abbreviation of "directory" katalog - + Store configuration files in <dir> Przechowuj pliki konfiguracyjne w <dir> - - + + name nazwa - + Store configuration files in directories qBittorrent_<name> Przechowuj pliki konfiguracyjne w katalogach qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Włam się do plików fastresume libtorrent i uczyń ścieżki plików względnymi do katalogu profilu - + files or URLs pliki albo adresy URL - + Download the torrents passed by the user Pobierz pliki torrent podane przez użytkownika - + Options when adding new torrents: Opcje podczas dodawania nowych torrentów: - + path ścieżka - + Torrent save path Ścieżka zapisu torrenta - + + Add torrents as running or stopped + + + Add torrents as started or paused - Dodaj torrenty jako rozpoczęte lub wstrzymane + Dodaj torrenty jako rozpoczęte lub wstrzymane - + Skip hash check Pomiń sprawdzanie danych - + Assign torrents to category. If the category doesn't exist, it will be created. Przypisz torrenty do kategorii. Jeśli kategoria nie istnieje, zostanie utworzona. - + Download files in sequential order Pobierz pliki w kolejności sekwencyjnej - + Download first and last pieces first Pobierz najpierw część pierwszą i ostatnią - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Określ, czy otwierać okno "Dodaj nowy plik torrent" podczas dodawnia torrenta. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Wartości opcji mogą być dostarczane za pośrednictwem zmiennych środowiskowych. Dla opcji nazwanej 'parameter-name', nazwa zmiennej środowiskowej to 'QBT_PARAMETER_NAME' (w trybie wielkich liter '-' zastąpione jest '_'). Aby przekazać wartości flagi, ustaw zmienną na '1' albo 'TRUE'. Na przykład, aby wyłączyć ekran powitalny: - + Command line parameters take precedence over environment variables Parametry linii poleceń mają pierwszeństwo przed zmiennymi środowiskowymi - + Help Pomoc @@ -2925,17 +3018,17 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi CategoryFilterModel - + Categories Kategorie - + All Wszystkie - + Uncategorized Bez kategorii @@ -2969,13 +3062,21 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi - Resume torrents - Wznów torrenty + Start torrents + + Stop torrents + + + + Resume torrents + Wznów torrenty + + Pause torrents - Wstrzymaj torrenty + Wstrzymaj torrenty @@ -2986,15 +3087,20 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi ColorWidget - + Edit... Edytuj... - + Reset Resetuj + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi CustomThemeSource - + Failed to load custom theme style sheet. %1 Nie udało się załadować niestandardowego arkusza stylów motywu. %1 - + Failed to load custom theme colors. %1 Nie udało się załadować niestandardowych kolorów motywu. %1 @@ -3048,7 +3154,7 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi DefaultThemeSource - + Failed to load default theme colors. %1 Nie udało się załadować domyślnych kolorów motywu. %1 @@ -3067,23 +3173,27 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi + Also remove the content files + + + Also permanently delete the files - Również trwale usuń pliki + Również trwale usuń pliki - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Czy na pewno chcesz usunąć '%1' z listy transferów? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Czy na pewno usunąć te torrenty (w sumie: %1) z listy transferów? - + Remove Usuń @@ -3096,14 +3206,14 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi Pobierz z adresów URL - + Add torrent links Dodaj odnośniki do plików torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) - Jeden odnośnik w wierszu (dozwolone są odnośniki HTTP, magnet oraz info-hash) + Jeden odnośnik w wierszu (dozwolone są odnośniki HTTP, magnet oraz info hashe) @@ -3111,12 +3221,12 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi Pobierz - + No URL entered Nie wprowadzono adresu URL - + Please type at least one URL. Proszę podać przynajmniej jeden adres URL. @@ -3275,64 +3385,91 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi Błąd przetwarzania: plik filtra nie jest prawidłowym plikiem PeerGuardian P2B. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Pobieranie torrenta... Źródło: "%1" - Trackers cannot be merged because it is a private torrent - + Nie można scalić trackerów, ponieważ jest to prywatny torrent - + Torrent is already present - Torrent jest już obecny + Torrent jest już obecny - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' jest już na liście transferów. Czy chcesz scalić trackery z nowego źródła? + Torrent '%1' jest już na liście transferów. Czy chcesz scalić trackery z nowego źródła? GeoIPDatabase - - + + Unsupported database file size. Nieobsługiwany rozmiar pliku bazy danych. - + Metadata error: '%1' entry not found. Błąd metadanych: wpis '%1' nieodnaleziony. - + Metadata error: '%1' entry has invalid type. Błąd metadanych: wpis '%1' jest nieprawidłowy. - + Unsupported database version: %1.%2 Nieobsługiwana wersja bazy danych: %1.%2 - + Unsupported IP version: %1 Nieobsługiwana wersja IP: %1 - + Unsupported record size: %1 Nieobsługiwany rozmiar rekordu: %1 - + Database corrupted: no data section found. Uszkodzona baza danych: nie odnaleziono sekcji danych. @@ -3340,17 +3477,17 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Rozmiar żądania HTTP przekracza ograniczenie, zamykam gniazdo. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Zła metoda żądania HTTP, zamykanie gniazda. IP: %1. Metoda: "%2" - + Bad Http request, closing socket. IP: %1 Złe żądanie HTTP, zamykam gniazdo. IP: %1 @@ -3391,36 +3528,64 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi IconWidget - + Browse... Przeglądaj... - + Reset Resetuj - + Select icon Wybierz ikonę - + Supported image files Obsługiwane pliki obrazów + + LegalNotice + + + Legal Notice + Informacja prawna + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent jest programem do wymiany plików. Uruchomienie torrenta powoduje, że jego zawartość jest dostępna dla innych. Użytkownik ponosi pełną odpowiedzialność za udostępniane treści. + + + + No further notices will be issued. + Żadne dodatkowe zawiadomienia nie będą wyświetlane. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Jeśli informacja prawna została przeczytana, możesz użyć opcji wiersza poleceń --confirm-legal-notice`, aby ukryć ten komunikat. + + + + Press 'Enter' key to continue... + Naciśnij klawisz 'Enter', aby kontynuować... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 został zablokowany. Powód: %2. - + %1 was banned 0.0.0.0 was banned %1 został zbanowany @@ -3429,91 +3594,62 @@ Obsługuje formaty: S01E01, 1x1, 2017.12.31 oraz 31.12.2017 (Formaty daty równi Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 to nieznany parametr linii poleceń. - - + + %1 must be the single command line parameter. %1 musi być pojedynczym parametrem linii poleceń. - - You cannot use %1: qBittorrent is already running for this user. - Nie możesz użyć %1: qBittorrent jest już uruchomiony dla tego użytkownika. - - - + Run application with -h option to read about command line parameters. Uruchom aplikację z opcją -h, aby przeczytać o parametrach linii komend. - + Bad command line Niewłaściwy wiersz poleceń - + Bad command line: Niewłaściwy wiersz poleceń: - + An unrecoverable error occurred. - + Wystąpił nieodwracalny błąd. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Nota prawna - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent jest programem do wymiany plików. Uruchomienie torrenta powoduje, że jego zawartość jest dostępna dla innych. Użytkownik ponosi pełną odpowiedzialność za udostępniane treści. + qBittorrent napotkał nieodwracalny błąd. - - No further notices will be issued. - Żadne dodatkowe powiadomienia nie będą wyświetlane. - - - - Press %1 key to accept and continue... - Nacisnij klawisz %1, aby zaakceptować i kontynuować... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent jest programem do wymiany plików. Uruchomienie torrenta powoduje, że jego zawartość jest dostępna dla innych. Użytkownik ponosi pełną odpowiedzialność za udostępniane treści. - -Żadne dodatkowe powiadomienia nie będą wyświetlane. + + You cannot use %1: qBittorrent is already running. + Nie możesz użyć %1: qBittorrent już działa. - - Legal notice - Nota prawna + + Another qBittorrent instance is already running. + Inna instancja qBittorrent już działa. - - Cancel - Anuluj + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Znaleziono nieoczekiwaną instancję qBittorrent. Wychodzę z tej instancji. Bieżący identyfikator procesu: %1. - - I Agree - Zgadzam się + + Error when daemonizing. Reason: "%1". Error code: %2. + Błąd podczas demonizowania. Powód: "%1". Kod błędu: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. &Edycja - + &Tools &Narzędzia - + &File P&lik - + &Help &Pomoc - + On Downloads &Done Po ukończeniu &pobierania - + &View &Widok - + &Options... &Opcje... - &Resume - W&znów + W&znów - + &Remove &Usuń - + Torrent &Creator Kreator plików torre&nt - - + + Alternative Speed Limits Alternatywne limity prędkości - + &Top Toolbar &Górny pasek narzędziowy - + Display Top Toolbar Wyświetlaj górny pasek narzędziowy - + Status &Bar Pa&sek stanu - + Filters Sidebar Pasek boczny filtrów - + S&peed in Title Bar &Prędkość na pasku tytułu - + Show Transfer Speed in Title Bar Pokaż szybkość transferu na pasku tytułu - + &RSS Reader Czytnik &RSS - + Search &Engine &Wyszukiwarka - + L&ock qBittorrent Zablo&kuj qBittorrent - + Do&nate! W&spomóż! - + + Sh&utdown System + + + + &Do nothing &Nic nie rób - + Close Window Zamknij okno - R&esume All - Wznów wszystki&e + Wznów wszystki&e - + Manage Cookies... Zarządzaj ciasteczkami... - + Manage stored network cookies Zarządzaj przechowywanymi ciasteczkami sieciowymi - + Normal Messages Komunikaty zwykłe - + Information Messages Komunikaty informacyjne - + Warning Messages Komunikaty ostrzegawcze - + Critical Messages Komunikaty krytyczne - + &Log &Dziennik - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Ustaw ogólne limity prędkości... - + Bottom of Queue Koniec kolejki - + Move to the bottom of the queue Przenieś na koniec kolejki - + Top of Queue Początek kolejki - + Move to the top of the queue Przenieś na początek kolejki - + Move Down Queue Przenieś w dół kolejki - + Move down in the queue Przejdź w dół w kolejce - + Move Up Queue Przenieś w górę kolejki - + Move up in the queue Przejdź w górę w kolejce - + &Exit qBittorrent Zakończ &qBittorrent - + &Suspend System Wst&rzymaj system - + &Hibernate System &Hibernuj system - S&hutdown System - Zamknij syst&em + Zamknij syst&em - + &Statistics S&tatystyki - + Check for Updates Sprawdź aktualizacje - + Check for Program Updates Sprawdź aktualizacje programu - + &About &O programie - &Pause - &Wstrzymaj + &Wstrzymaj - P&ause All - Ws&trzymaj wszystkie + Ws&trzymaj wszystkie - + &Add Torrent File... &Dodaj plik torrent... - + Open Otwórz - + E&xit Zak&ończ - + Open URL Otwórz URL - + &Documentation &Dokumentacja - + Lock Zablokuj - - - + + + Show Pokaż - + Check for program updates Sprawdź aktualizacje programu - + Add Torrent &Link... D&odaj odnośnik torrenta... - + If you like qBittorrent, please donate! Jeśli lubisz qBittorrent, przekaż pieniądze! - - + + Execution Log Dziennik programu - + Clear the password Wyczyść hasło - + &Set Password &Ustaw hasło - + Preferences Preferencje - + &Clear Password Wyczyść ha&sło - + Transfers Transfery - - + + qBittorrent is minimized to tray qBittorrent jest zminimalizowany do zasobnika - - - + + + This behavior can be changed in the settings. You won't be reminded again. To zachowanie można zmienić w ustawieniach. Nie będziesz już otrzymywać przypomnień. - + Icons Only Tylko ikony - + Text Only Tylko tekst - + Text Alongside Icons Tekst obok ikon - + Text Under Icons Tekst pod ikonami - + Follow System Style Dopasuj do stylu systemu - - + + UI lock password Hasło blokady interfejsu - - + + Please type the UI lock password: Proszę podać hasło blokady interfejsu: - + Are you sure you want to clear the password? Czy jesteś pewien, że chcesz wyczyścić hasło? - + Use regular expressions Użyj wyrażeń regularnych - - Search - Szukaj + + + Search Engine + Wyszukiwarka - - Transfers (%1) - Transfery (%1) + + Search has failed + Wyszukiwanie nie powiodło się - Recursive download confirmation - Potwierdzenie pobierania rekurencyjnego + + Search has finished + Wyszukiwanie zakończone - Never - Nigdy + + Search + Szukaj + + + + Transfers (%1) + Transfery (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent został zaktualizowany i konieczne jest jego ponowne uruchomienie. - + qBittorrent is closed to tray qBittorrent jest zamknięty do zasobnika - + Some files are currently transferring. Niektóre pliki są obecnie przenoszone. - + Are you sure you want to quit qBittorrent? Czy na pewno chcesz zamknąć qBittorrent? - + &No &Nie - + &Yes &Tak - + &Always Yes &Zawsze tak - + Options saved. Opcje zapisane. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime - Nie znaleziono środowiska wykonawczego Pythona + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [P: %1, W: %2] %3 - + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Nie znaleziono środowiska wykonawczego Pythona + + + qBittorrent Update Available Dostępna aktualizacja qBittorrenta - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python jest wymagany do używania wyszukiwarki, ale wygląda na to, że nie jest zainstalowany. Czy chcesz go teraz zainstalować? - + Python is required to use the search engine but it does not seem to be installed. Python jest wymagany do używania wyszukiwarki, ale wygląda na to, że nie jest zainstalowany. - - + + Old Python Runtime Stare środowisko wykonawcze Pythona - + A new version is available. Dostępna jest nowa wersja. - + Do you want to download %1? Czy chcesz pobrać %1? - + Open changelog... Otwórz dziennik zmian... - + No updates available. You are already using the latest version. Nie ma dostępnych aktualizacji. Korzystasz już z najnowszej wersji. - + &Check for Updates S&prawdź aktualizacje - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Twoja wersja Pythona (%1) jest przestarzała. Minimalny wymóg: %2. Czy chcesz teraz zainstalować nowszą wersję? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Twoja wersja Pythona (%1) jest przestarzała. Uaktualnij ją do najnowszej wersji, aby wyszukiwarki mogły działać. Minimalny wymóg: %2. - + + Paused + Wstrzymano + + + Checking for Updates... Sprawdzanie aktualizacji... - + Already checking for program updates in the background Trwa sprawdzanie aktualizacji w tle - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Błąd pobierania - Python setup could not be downloaded, reason: %1. Please install it manually. - Nie można pobrać instalatora Pythona z powodu %1 . + Nie można pobrać instalatora Pythona z powodu %1 . Należy zainstalować go ręcznie. - - + + Invalid password Nieprawidłowe hasło - + Filter torrents... Filtruj torrenty... - + Filter by: Filtruj według: - + The password must be at least 3 characters long Hasło musi mieć co najmniej 3 znaki - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' zawiera pliki torrent, czy chcesz rozpocząć ich pobieranie? - - - + The password is invalid Podane hasło jest nieprawidłowe - + DL speed: %1 e.g: Download speed: 10 KiB/s Pobieranie: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Wysyłanie: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [P: %1, W: %2] qBittorrent %3 - - - + Hide Ukryj - + Exiting qBittorrent Zamykanie qBittorrent - + Open Torrent Files Otwórz pliki torrent - + Torrent Files Pliki .torrent @@ -4199,133 +4420,133 @@ Należy zainstalować go ręcznie. Net::DownloadHandlerImpl - - + + I/O Error: %1 Błąd we/wy: %1 - + The file size (%1) exceeds the download limit (%2) Rozmiar pliku (%1) przekracza limit pobierania (%2) - + Exceeded max redirections (%1) Przekroczono maksimum przekierowań (%1) - + Redirected to magnet URI Przekierowano do adresu URI magnet - + The remote host name was not found (invalid hostname) Nie odnaleziono nazwy zdalnego hosta (nieprawidłowa nazwa hosta) - + The operation was canceled Operacja została anulowana - + The remote server closed the connection prematurely, before the entire reply was received and processed Zdalny serwer przedwcześnie zakończył połączenie, zanim otrzymano i przetworzono odpowiedź - + The connection to the remote server timed out Przekroczono czas oczekiwania na połącznie ze zdalnym serwerem - + SSL/TLS handshake failed Potwierdzenie SSL/TLS nie powiodło się - + The remote server refused the connection Zdalny serwer odrzucił połączenie - + The connection to the proxy server was refused Połączenie z serwerem proxy zostało odrzucone - + The proxy server closed the connection prematurely Serwer proxy przedwcześnie zakończył połączenie - + The proxy host name was not found Nie znaleziono nazwy hosta proxy - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Przekroczono czas oczekiwania na połączenie z serwerem proxy lub serwer nie odpowiedział na czas - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy wymaga uwierzytelnienia, aby zaakceptować żądanie, lecz oferowane dane uwierzytelnienia zostały odrzucone - + The access to the remote content was denied (401) Odmówiono dostępu do zdalnego zasobu (401) - + The operation requested on the remote content is not permitted Żądana operacja na zdalnym zasobie nie jest dozwolona - + The remote content was not found at the server (404) Nie znaleziono zdalnego zasobu na serwerze (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Zdalny serwer wymaga uwierzytelnienia w celu dostępu do zasobu, lecz dane uwierzytelniające nie zostały zaakceptowane - + The Network Access API cannot honor the request because the protocol is not known API dostępu do sieci nie może zaakceptować żądania, ponieważ protokół jest nieznany - + The requested operation is invalid for this protocol Żądana operacja jest nieprawidłowa dla tego protokołu - + An unknown network-related error was detected Wykryto nieznany błąd związany z siecią - + An unknown proxy-related error was detected Wykryto nieznany błąd związany z proxy - + An unknown error related to the remote content was detected Wykryto nieznany błąd związany ze zdalną zawartością - + A breakdown in protocol was detected Wykryto awarię protokołu - + Unknown error Nieznany błąd @@ -4333,7 +4554,12 @@ Należy zainstalować go ręcznie. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorowanie błędu SSL, adres URL: "%1", błędy: "%2" @@ -5705,294 +5931,307 @@ Należy zainstalować go ręcznie. BitTorrent - + RSS RSS - Web UI - Interfejs WWW + Interfejs WWW - + Advanced Zaawansowane - + Customize UI Theme... Dostosuj motyw interfejsu użytkownika... - + Transfer List Lista transferów - + Confirm when deleting torrents Potwierdzaj usuwanie torrentów - Shows a confirmation dialog upon pausing/resuming all the torrents - Pokazuje okno dialogowe potwierdzenia po wstrzymaniu/wznawianiu wszystkich torrentów + Pokazuje okno dialogowe potwierdzenia po wstrzymaniu/wznawianiu wszystkich torrentów - Confirm "Pause/Resume all" actions - Potwierdź działania "Wstrzymaj/Wznów wszystkie". + Potwierdź czynności "Wstrzymaj/Wznów wszystkie". - + Use alternating row colors In table elements, every other row will have a grey background. Użyj naprzemiennego kolorowania wierszy - + Hide zero and infinity values Ukryj zerowe i nieskończone wartości - + Always Zawsze - Paused torrents only - Tylko wstrzymane torrenty + Tylko wstrzymane torrenty - + Action on double-click - Działanie podwójnego kliknięcia + Czynność podwójnego kliknięcia - + Downloading torrents: Pobierane torrenty: - - Start / Stop Torrent - Uruchom / Zatrzymaj pobieranie + Uruchom / Zatrzymaj pobieranie - - + + Open destination folder Otwórz folder docelowy - - + + No action - Brak działania + Brak czynności - + Completed torrents: Ukończone torrenty: - + Auto hide zero status filters Automatyczne ukrywanie filtrów stanu zerowego - + Desktop Pulpit - + Start qBittorrent on Windows start up Uruchamiaj qBittorrent ze startem systemu Windows - + Show splash screen on start up Pokazuj ekran startowy podczas uruchamiania - + Confirmation on exit when torrents are active Potwierdzenie wyjścia, gdy torrenty są aktywne - + Confirmation on auto-exit when downloads finish Potwierdzenie automatycznego wyjścia, gdy pobierania zostaną ukończone - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Aby ustawić qBittorrent jako program domyślny dla plików .torrent i/lub łączy magnet,<br/>możesz skorzystać z okna <span style=" font-weight:600;">Programy domyślne</span> w <span style=" font-weight:600;">Panelu sterowania</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Układ zawartości torrenta: - + Original Pierwotny - + Create subfolder Utwórz podfolder - + Don't create subfolder Nie twórz podfolderu - + The torrent will be added to the top of the download queue Torrent zostanie dodany na początek kolejki pobierania - + Add to top of queue The torrent will be added to the top of the download queue Dodaj na początek kolejki - + When duplicate torrent is being added Gdy dodawany jest zduplikowany torrent - + Merge trackers to existing torrent - Połącz trackery z istniejącym torrentem + Scal trackery z istniejącym torrentem - + + Keep unselected files in ".unwanted" folder + Zachowaj niewybrane pliki w folderze ".unwanted" + + + Add... Dodaj... - + Options.. Opcje... - + Remove Usuń - + Email notification &upon download completion Wyślij e-mail po &ukończeniu pobierania - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protokół połączenia z partnerami: - + Any Każdy - + I2P (experimental) I2P (eksperymentalne) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Jeśli &quot;tryb mieszany&quot; jest włączony, torrenty I2P mogą również uzyskiwać partnerzy z innych źródeł niż tracker i łączyć się ze zwykłymi adresami IP, nie zapewniając żadnej anonimizacji. Może to być przydatne, jeśli użytkownik nie jest zainteresowany anonimizacją I2P, ale nadal chce mieć możliwość łączenia się z partnerami I2P.</p></body></html> + <html><head/><body><p>Jeśli &quot;tryb mieszany&quot; jest włączony, torrenty I2P mogą również uzyskiwać partnerzy z innych źródeł niż tracker i łączyć się ze zwykłymi adresami IP, nie zapewniając żadnej anonimizacji. Może to być przydatne, jeśli użytkownik nie jest zainteresowany anonimizacją I2P, ale nadal chce mieć możliwość łączenia się z partnerami I2P.</p></body></html> - + Mixed mode Tryb mieszany - + Some options are incompatible with the chosen proxy type! Niektóre opcje są niezgodne z wybranym typem proxy! - + If checked, hostname lookups are done via the proxy Jeśli zaznaczono, wyszukiwanie nazw hostów odbywa się za pośrednictwem proxy - + Perform hostname lookup via proxy Wykonaj wyszukiwanie nazwy hosta przez serwer proxy - + Use proxy for BitTorrent purposes Użyj proxy do celów BitTorrenta - + RSS feeds will use proxy Kanały RSS będą korzystać z proxy - + Use proxy for RSS purposes Użyj proxy do celów RSS - + Search engine, software updates or anything else will use proxy Wyszukiwarka, aktualizacje oprogramowania lub cokolwiek innego będzie używać proxy - + Use proxy for general purposes Użyj proxy do celów ogólnych - + IP Fi&ltering Filtrowa&nie IP - + Schedule &the use of alternative rate limits &Harmonogram użycia alternatywnych limitów prędkości - + From: From start time Od: - + To: To end time Do: - + Find peers on the DHT network Znajdź partnerów w sieci DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Wymagaj szyfrowania: łącz się tylko z partnerami z szyfrowaniem protokołu Wyłącz szyfrowanie: łącz się tylko z partnerami bez szyfrowania protokołu - + Allow encryption Zezwalaj na szyfrowanie - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Więcej informacji</a>) - + Maximum active checking torrents: Maksimum aktywnego sprawdzania torrentów: - + &Torrent Queueing K&olejkowanie torrentów - + When total seeding time reaches Gdy całkowity czas seedowania osiągnie - + When inactive seeding time reaches Gdy nieaktywny czas seedowania osiągnie - A&utomatically add these trackers to new downloads: - A&utomatycznie dodaj te trackery do nowych pobierań: + A&utomatycznie dodaj te trackery do nowych pobierań: - + RSS Reader Czytnik RSS - + Enable fetching RSS feeds Włącz pobieranie kanałów RSS - + Feeds refresh interval: Częstotliwość odświeżania kanałów: - + + Same host request delay: + Opóźnienie żądania tego samego hosta: + + + Maximum number of articles per feed: Maksymalna liczba artykułów na kanał: - - - + + + min minutes min - + Seeding Limits Limity seedowania - Pause torrent - Wstrzymaj torrent + Wstrzymaj torrent - + Remove torrent Usuń torrent - + Remove torrent and its files Usuń torrent i jego pliki - + Enable super seeding for torrent Włącz super-seedowanie dla torrenta - + When ratio reaches Gdy współczynnik udziału osiągnie - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Adres URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Automatyczne pobieranie torrentów RSS - + Enable auto downloading of RSS torrents Włącz automatyczne pobieranie torrentów RSS - + Edit auto downloading rules... Edytuj reguły automatycznego pobierania... - + RSS Smart Episode Filter Inteligentny filtr odcinków RSS - + Download REPACK/PROPER episodes Pobierz odcinki REPACK/PROPER - + Filters: Filtry: - + Web User Interface (Remote control) Interfejs WWW (zdalne zarządzanie) - + IP address: Adres IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Ustal adres IPv4 albo IPv6. Możesz ustawić 0.0.0.0 dla adresu IPv4, "::" dla adresu IPv6, albo "*" dla zarówno IPv4 oraz IPv6. - + Ban client after consecutive failures: Zbanuj klienta po kolejnych niepowodzeniach: - + Never Nigdy - + ban for: ban na: - + Session timeout: Limit czasu sesji: - + Disabled Wyłączone - Enable cookie Secure flag (requires HTTPS) - Włącz flagę bezpieczeństwa ciasteczka (wymaga HTTPS) + Włącz flagę bezpieczeństwa ciasteczka (wymaga HTTPS) - + Server domains: Domeny serwera: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ należy wpisać nazwy domen używane przez serwer interfejsu WWW. Użyj ';' do rozdzielania wielu wpisów. Można użyć wieloznacznika '*'. - + &Use HTTPS instead of HTTP &Używaj HTTPS zamiast HTTP - + Bypass authentication for clients on localhost Pomiń uwierzytelnianie dla klientów lokalnego hosta - + Bypass authentication for clients in whitelisted IP subnets Pomiń uwierzytelnianie dla klientów w podsieciach IP z białej listy - + IP subnet whitelist... Biała lista podsieci IP... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Określ adresy IP zwrotnego proxy (lub podsieci, np. 0.0.0.0/24), aby używać przekazywanego adresu klienta (nagłówek X-Forwarded-For). Użyj ';' do dzielenia wielu wpisów. - + Upda&te my dynamic domain name A&ktualizuj nazwę domeny dynamicznej - + Minimize qBittorrent to notification area Minimalizuj qBittorrent do obszaru powiadomień - + + Search + + + + + WebUI + + + + Interface Interfejs - + Language: Język: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Styl ikony w obszarze powiadomień: - - + + Normal Normalny - + File association Skojarzenie plików - + Use qBittorrent for .torrent files Używaj qBittorrent z plikami .torrent - + Use qBittorrent for magnet links Używaj qBittorrent z odnośnikami magnet - + Check for program updates Sprawdź aktualizacje programu - + Power Management Zarządzanie energią - + + &Log Files + + + + Save path: Ścieżka zapisu: - + Backup the log file after: Stwórz kopię pliku dziennika po: - + Delete backup logs older than: Usuń kopie dzienników starszych niż: - + + Show external IP in status bar + + + + When adding a torrent Podczas dodawania torrenta - + Bring torrent dialog to the front Przywołaj okno dialogowe torrenta na wierzch - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Usuń także pliki .torrent, których dodanie zostało anulowane - + Also when addition is cancelled Także gdy dodanie zostało anulowane - + Warning! Data loss possible! Uwaga! Możliwa utrata danych! - + Saving Management Zarządzanie zapisywaniem - + Default Torrent Management Mode: Domyślny tryb zarządzania torrentem: - + Manual Ręczny - + Automatic Automatyczny - + When Torrent Category changed: Gdy zmieniono kategorię torrenta: - + Relocate torrent Przenieś torrent - + Switch torrent to Manual Mode Przełącz torrent na tryb ręczny - - + + Relocate affected torrents Przenieś dotknięte torrenty - - + + Switch affected torrents to Manual Mode Przełącz zależne torrenty na tryb ręczny - + Use Subcategories Użyj podkategorii - + Default Save Path: Domyślna ścieżka zapisu: - + Copy .torrent files to: Kopiuj pliki .torrent do: - + Show &qBittorrent in notification area Pokazuj ikonę &qBittorrent w obszarze powiadomień - &Log file - Plik &dziennika + Plik &dziennika - + Display &torrent content and some options Pokaż zawartość &torrenta i kilka opcji - + De&lete .torrent files afterwards P&otem usuń pliki .torrent - + Copy .torrent files for finished downloads to: Kopiuj pliki .torrent zakończonych pobierań do: - + Pre-allocate disk space for all files Rezerwuj miejsce na dysku dla wszystkich plików - + Use custom UI Theme Używaj niestandardowego motywu interfejsu użytkownika - + UI Theme file: Plik motywu interfejsu użytkownika: - + Changing Interface settings requires application restart Zmiana ustawień interfejsu wymaga ponownego uruchomienia aplikacji - + Shows a confirmation dialog upon torrent deletion Wyświetla okno dialogowe potwierdzenia przy usuwaniu torrenta - - + + Preview file, otherwise open destination folder Podgląd pliku, w przeciwnym razie otwórz folder docelowy - - Show torrent options - Pokaż opcje torrenta + Pokaż opcje torrenta - + Shows a confirmation dialog when exiting with active torrents Wyświetla okno dialogowe potwierdzenia podczas wychodzenia z aktywnymi torrentami - + When minimizing, the main window is closed and must be reopened from the systray icon Podczas minimalizacji okno główne jest zamknięte i musi zostać ponownie otwarte z ikony zasobnika systemowego - + The systray icon will still be visible when closing the main window Ikona zasobnika systemowego będzie nadal widoczna po zamknięciu głównego okna - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Zamykaj qBittorrent do obszaru powiadomień - + Monochrome (for dark theme) Monochromatyczny (do ciemnego motywu) - + Monochrome (for light theme) Monochromatyczny (do jasnego motywu) - + Inhibit system sleep when torrents are downloading Nie pozwalaj na usypianie systemu podczas pobierania torrentów - + Inhibit system sleep when torrents are seeding Nie pozwalaj na usypianie systemu podczas seedowania torrentów - + Creates an additional log file after the log file reaches the specified file size Tworzy dodatkowy plik dziennika po osiągnięciu przez plik dziennika określonego rozmiaru - + days Delete backup logs older than 10 days dni - + months Delete backup logs older than 10 months miesięcy - + years Delete backup logs older than 10 years lat - + Log performance warnings Rejestruj ostrzeżenia dotyczące wydajności - The torrent will be added to download list in a paused state - Torrent zostanie dodany do listy pobierania w stanie wstrzymanym + Torrent zostanie dodany do listy pobierania w stanie wstrzymanym - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Nie uruchamiaj automatycznie pobierań - + Whether the .torrent file should be deleted after adding it Czy plik .torrent powinien zostać usunięty po jego dodaniu - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Przydziel pełne rozmiary plików na dysku przed rozpoczęciem pobierania, aby zminimalizować fragmentację. Przydatne tylko w przypadku dysków twardych (HDD). - + Append .!qB extension to incomplete files Dodaj rozszerzenie .!qB do niekompletnych plików - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Gdy pobierany jest torrent, zaoferuj dodanie torrentów z dowolnych plików .torrent w nim zawartych - + Enable recursive download dialog Włącz okno dialogowe pobierania rekursywnego - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatycznie: różne właściwości torrentów (np. ścieżka zapisu) zostaną określone przez powiązaną kategorię Ręcznie: różne właściwości torrenta (np. ścieżka zapisu) muszą być przypisane ręcznie - + When Default Save/Incomplete Path changed: Po zmianie domyślnej ścieżki zapisu/ścieżki niekompletnych: - + When Category Save Path changed: Gdy zmieniono ścieżkę zapisu kategorii: - + Use Category paths in Manual Mode Użyj ścieżek kategorii w trybie ręcznym - + Resolve relative Save Path against appropriate Category path instead of Default one Rozwiąż relatywną ścieżkę zapisu z odpowiednią ścieżką kategorii zamiast domyślnej - + Use icons from system theme Użyj ikon z motywu systemowego - + Window state on start up: Stan okna przy uruchamianiu: - + qBittorrent window state on start up Stan okna qBittorrent przy uruchamianiu - + Torrent stop condition: Warunek zatrzymania torrenta: - - + + None Żaden - - + + Metadata received Odebrane metadane - - + + Files checked Sprawdzone pliki - + Ask for merging trackers when torrent is being added manually - Pytaj o połączenie trackerów, gdy torrent jest dodawany ręcznie + Pytaj o scalenie trackerów, gdy torrent jest dodawany ręcznie - + Use another path for incomplete torrents: Użyj innej ścieżki do niekompletnych torrentów: - + Automatically add torrents from: Automatycznie dodawaj torrenty z: - + Excluded file names Wykluczone nazwy plików - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: filtruje dokładną nazwę pliku. readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale nie 'readme10.txt'. - + Receiver Odbiorca - + To: To receiver Do: - + SMTP server: Serwer SMTP: - + Sender Nadawca - + From: From sender Od: - + This server requires a secure connection (SSL) Ten serwer wymaga bezpiecznego połączenia (SSL) - - + + Authentication Uwierzytelnianie - - - - + + + + Username: Nazwa użytkownika: - - - - + + + + Password: Hasło: - + Run external program Uruchom program zewnętrzny - Run on torrent added - Uruchom po dodaniu torrenta + Uruchom po dodaniu torrenta - Run on torrent finished - Uruchom po ukończeniu torrenta + Uruchom po ukończeniu torrenta - + Show console window Pokaż okno konsoli - + TCP and μTP TCP oraz μTP - + Listening Port Port nasłuchu - + Port used for incoming connections: Port do połączeń przychodzących: - + Set to 0 to let your system pick an unused port Ustaw na 0, aby system mógł wybrać nieużywany port - + Random Losowy - + Use UPnP / NAT-PMP port forwarding from my router Używaj UPnP / NAT-PMP do przekierowania portów na moim routerze - + Connections Limits Limit połączeń - + Maximum number of connections per torrent: Maksymalna liczba połączeń na torrent: - + Global maximum number of connections: Maksymalna liczba połączeń: - + Maximum number of upload slots per torrent: Maksymalna liczba slotów wysyłania na torrent: - + Global maximum number of upload slots: Maksymalna liczba slotów wysyłania: - + Proxy Server Serwer proxy - + Type: Typ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections W przeciwnym razie serwer proxy będzie używany tylko do połączeń z trackerem - + Use proxy for peer connections Użyj proxy do połączeń z partnerami - + A&uthentication U&wierzytelnianie - + Info: The password is saved unencrypted Informacja: hasło jest zapisywane bez szyfrowania - + Filter path (.dat, .p2p, .p2b): Ścieżka do pliku filtra (.dat, .p2p, .p2b): - + Reload the filter Przeładuj filtr - + Manually banned IP addresses... Ręcznie zbanowane adresy IP... - + Apply to trackers Zastosuj do trackerów - + Global Rate Limits Ogólne limity prędkości - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Wysyłanie: - - + + Download: Pobieranie: - + Alternative Rate Limits Alternatywne limity prędkości - + Start time Czas rozpoczęcia - + End time Czas zakończenia - + When: Kiedy: - + Every day Codziennie - + Weekdays Dni robocze - + Weekends Weekendy - + Rate Limits Settings Ustawienia limitów prędkości - + Apply rate limit to peers on LAN Stosuj limity prędkości do partnerów w LAN - + Apply rate limit to transport overhead Stosuj limity prędkości do transferów z narzutem - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Stosuj limity prędkości do protokołu µTP - + Privacy Prywatność - + Enable DHT (decentralized network) to find more peers Włącz sieć DHT (sieć rozproszona), aby odnależć więcej partnerów - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Wymieniaj partnerów pomiędzy kompatybilnymi klientami sieci Bittorrent (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Włącz wymianę partnerów (PeX), aby odnależć więcej partnerów - + Look for peers on your local network Wyszukuj partnerów w sieci lokalnej - + Enable Local Peer Discovery to find more peers Włącz wykrywanie partnerów w sieci lokalnej, aby znaleźć więcej partnerów - + Encryption mode: Tryb szyfrowania: - + Require encryption Wymagaj szyfrowania - + Disable encryption Wyłącz szyfrowanie - + Enable when using a proxy or a VPN connection Włącz podczas używania proxy lub połączenia VPN - + Enable anonymous mode Włącz tryb anonimowy - + Maximum active downloads: Maksymalna liczba aktywnych pobierań: - + Maximum active uploads: Maksymalna liczba aktywnych wysyłań: - + Maximum active torrents: Maksymalna liczba aktywnych torrentów: - + Do not count slow torrents in these limits Nie wliczaj powolnych torrentów do tych limitów - + Upload rate threshold: Próg prędkości wysyłania: - + Download rate threshold: Próg prędkości pobierania: - - - + + + + sec seconds s - + Torrent inactivity timer: Zegar bezczynności torrenta: - + then następnie - + Use UPnP / NAT-PMP to forward the port from my router Używaj UPnP / NAT-PMP do przekierowania portów na moim routerze - + Certificate: Certyfikat: - + Key: Klucz: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informacje o certyfikatach</a> - + Change current password Zmień obecne hasło - Use alternative Web UI - Używaj alternatywnego interfejsu WWW + Używaj alternatywnego interfejsu WWW - + Files location: Położenie plików: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Bezpieczeństwo - + Enable clickjacking protection Włącz ochronę przed porywaniem kliknięć - + Enable Cross-Site Request Forgery (CSRF) protection Włącz ochronę przed Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Włącz sprawdzanie nagłówków hosta - + Add custom HTTP headers Dodaj niestandardowe nagłówki HTTP - + Header: value pairs, one per line Nagłówek: pary wartości, po jednej w wierszu - + Enable reverse proxy support Włącz obsługę zwrotnego proxy - + Trusted proxies list: Lista zaufanych proxy: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Usługa: - + Register Zarejestruj - + Domain name: Nazwa domeny: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Poprzez włączenie tych opcji możesz <strong>nieodwołalnie stracić</strong> twoje pliki .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Jeżeli włączysz drugą opcję (&ldquo;Także gdy dodanie zostało anulowane&rdquo;), plik .torrent <strong>zostanie usunięty</strong> nawet po wciśnięciu &ldquo;<strong>Anuluj</strong>&rdquo; w oknie &ldquo;Dodaj torrent&rdquo; - + Select qBittorrent UI Theme file Wybierz plik motywu interfejsu qBittorrent - + Choose Alternative UI files location Wybierz położenie plików alternatywnego interfejsu - + Supported parameters (case sensitive): Obsługiwane parametry (z uwzględnieniem wielkości liter): - + Minimized Zminimalizowany - + Hidden Ukryty - + Disabled due to failed to detect system tray presence Wyłączono, ponieważ nie udało się wykryć obecności w zasobniku systemowym - + No stop condition is set. Nie jest ustawiony żaden warunek zatrzymania. - + Torrent will stop after metadata is received. Torrent zatrzyma się po odebraniu metadanych. - - Torrents that have metadata initially aren't affected. - Nie ma to wpływu na torrenty, które początkowo zawierają metadane. - - - + Torrent will stop after files are initially checked. Torrent zatrzyma się po wstępnym sprawdzeniu plików. - + This will also download metadata if it wasn't there initially. Spowoduje to również pobranie metadanych, jeśli początkowo ich tam nie było. - + %N: Torrent name %N: Nazwa torrenta - + %L: Category %L: Kategoria - + %F: Content path (same as root path for multifile torrent) %F: Ścieżka zawartości (taka sama, jak główna ścieżka do wieloplikowych torrentów) - + %R: Root path (first torrent subdirectory path) %R: Ścieżka główna (pierwsza ścieżka podkatalogu torrenta) - + %D: Save path %D: Ścieżka zapisu - + %C: Number of files %C: Liczba plików - + %Z: Torrent size (bytes) %Z: Rozmiar torrenta (w bajtach) - + %T: Current tracker %T: Bieżący tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Wskazówka: otocz parametr cudzysłowem, aby uniknąć odcięcia tekstu (np. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Żaden) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent będzie uważany za powolny, jeśli jego szybkość pobierania i wysyłania pozostanie poniżej tych wartości sekund "Zegara bezczynności torrenta" - + Certificate Certyfikat - + Select certificate Wybierz certyfikat - + Private key Klucz prywatny - + Select private key Wybierz klucz prywatny - + + WebUI configuration failed. Reason: %1 + Konfiguracja interfejsu WWW nie powiodła się. Powód: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Wybierz folder do monitorowania - + Adding entry failed Dodanie wpisu nie powiodło się - - Location Error - Błąd położenia + + The WebUI username must be at least 3 characters long. + Nazwa użytkownika interfejsu WWW musi składać się z co najmniej 3 znaków. - - The alternative Web UI files location cannot be blank. - Lokalizacja plików alternatywnego interfejsu WWW nie może być pusta. + + The WebUI password must be at least 6 characters long. + Hasło interfejsu WWW musi składać się z co najmniej 6 znaków. + + + + Location Error + Błąd położenia - - + + Choose export directory Wybierz katalog eksportu - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - Gdy te opcje zostaną włączone, qBittorrent <strong>usunie</strong> pliki .torrent po ich pomyślnym (pierwsza opcja) lub niepomyślnym (druga opcja) dodaniu do kolejki pobierania. Stosuje się to <strong>nie tylko</strong> do plików otwarych poprzez działanie menu &ldquo;Dodaj torrent&rdquo;, ale także do plików otwartych poprzez <strong>skojarzenie typu pliku</strong> + Gdy te opcje zostaną włączone, qBittorrent <strong>usunie</strong> pliki .torrent po ich pomyślnym (pierwsza opcja) lub niepomyślnym (druga opcja) dodaniu do kolejki pobierania. Stosuje się to <strong>nie tylko</strong> do plików otwarych poprzez czynność menu &ldquo;Dodaj torrent&rdquo;, ale także do plików otwartych poprzez <strong>skojarzenie typu pliku</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Plik motywu interfejsu qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Znaczniki (oddzielone przecinkiem) - + %I: Info hash v1 (or '-' if unavailable) %I: Info hash v1 (lub '-', jeśli niedostępne) - + %J: Info hash v2 (or '-' if unavailable) %J: Info hash v2 (lub '-', jeśli niedostępne) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Identyfikator torrenta (albo info hash sha-1 dla torrenta v1 lub przycięty info hash sha-256 dla torrenta v2/hybrydowego) - - - + + + Choose a save directory Wybierz katalog docelowy - + + Torrents that have metadata initially will be added as stopped. + Torrenty, które mają metadane, początkowo zostaną dodane jako zatrzymane. + + + Choose an IP filter file Wybierz plik filtra IP - + All supported filters Wszystkie obsługiwane filtry - + + The alternative WebUI files location cannot be blank. + Lokalizacja plików alternatywnego interfejsu WWW nie może być pusta. + + + Parsing error Błąd przetwarzania - + Failed to parse the provided IP filter Nie udało się przetworzyć podanego filtra IP - + Successfully refreshed Pomyślnie odświeżony - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Pomyślnie przetworzono podany filtr IP: zastosowano %1 reguł. - + Preferences Preferencje - + Time Error Błąd ustawień harmonogramu - + The start time and the end time can't be the same. Czas uruchomienia nie może byś taki sam jak czas zakończenia. - - + + Length Error Błąd długości + + + PeerInfo - - The Web UI username must be at least 3 characters long. - Nazwa użytkownika interfejsu WWW musi składać się z co najmniej 3 znaków. + + Unknown + Nieznany - - The Web UI password must be at least 6 characters long. - Hasło interfejsu WWW musi składać się z co najmniej 6 znaków. - - - - PeerInfo - - - Unknown - Nieznany - - - + Interested (local) and choked (peer) Zainteresowany (lokalny) i stłumiony (partner) - + Interested (local) and unchoked (peer) Zainteresowany (lokalny) i niestłumiony (partner) - + Interested (peer) and choked (local) Zainteresowany (partner) i stłumiony (lokalny) - + Interested (peer) and unchoked (local) Zainteresowany (partner) i niestłumiony (lokalny) - + Not interested (local) and unchoked (peer) Niezainteresowany (lokalny) i niestłumiony (partner) - + Not interested (peer) and unchoked (local) Niezainteresowany (partner) i niestłumiony (lokalny) - + Optimistic unchoke Niestłumienie optymistyczne - + Peer snubbed Ignorowany partner - + Incoming connection Przychodzące połączenie - + Peer from DHT Partner z DHT - + Peer from PEX Partner z PEX - + Peer from LSD Partner z LSD - + Encrypted traffic Zaszyfrowany ruch - + Encrypted handshake Zaszyfrowane potwierdzenie + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale Partner "%1" został zbanowany ręcznie - + N/A Nie dotyczy @@ -7668,7 +8080,7 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale Lista partnerów do dodania (po jednym IP w wierszu): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale PiecesBar - + Files in this piece: Pliki w tym kawałku: - + File in this piece: Plik w tej części: - + File in these pieces: Plik w tych częściach: - + Wait until metadata become available to see detailed information Poczekaj, aż metadane będą dostępne, aby uzyskać szczegółowe informacje - + Hold Shift key for detailed information Przytrzymaj klawisz Shift w celu uzyskania szczegółowych informacji @@ -7742,58 +8154,58 @@ readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale Wtyczki wyszukiwania - + Installed search plugins: Zainstalowane wtyczki wyszukiwania: - + Name Nazwa - + Version Wersja - + Url Adres URL - - + + Enabled Włączone - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Ostrzeżenie: upewnij się, że przestrzegasz praw autorskich swojego kraju podczas pobierania torrentów z każdej z tych wyszukiwarek. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Nowe wtyczki wyszukiwarek można pobrać tutaj: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Zainstaluj nową - + Check for updates Sprawdź aktualizacje - + Close Zamknij - + Uninstall Odinstaluj @@ -7913,17 +8325,17 @@ Te wtyczki zostały wyłączone. Źródło wtyczki - + Search plugin source: Źródło wtyczki wyszukiwania: - + Local file Plik lokalny - + Web link Odnośnik sieciowy @@ -7941,70 +8353,70 @@ Te wtyczki zostały wyłączone. Power management found suitable D-Bus interface. Interface: %1 - + Zarządzanie energią znalazło odpowiedni interfejs D-Bus. Interfejs: %1 Power management error. Did not found suitable D-Bus interface. - + Błąd zarządzania energią. Nie znaleziono odpowiedniego interfejsu D-Bus. Power management error. Action: %1. Error: %2 - + Błąd zarządzania energią. Czynność: %1. Błąd: %2 Power management unexpected error. State: %1. Error: %2 - + Nieoczekiwany błąd zarządzania energią. Stan: %1. Błąd: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Następujące pliki z torrenta "%1" obsługują podgląd, wybierz jeden z nich: - + Preview Podgląd - + Name Nazwa - + Size Rozmiar - + Progress Postęp - + Preview impossible Podgląd niemożliwy - + Sorry, we can't preview this file: "%1". Niestety nie możemy wyświetlić podglądu tego pliku: "%1". - + Resize columns Zmień rozmiar kolumn - + Resize all non-hidden columns to the size of their contents Zmień rozmiar wszystkich nieukrytych kolumn do rozmiaru ich zawartości @@ -8017,27 +8429,27 @@ Te wtyczki zostały wyłączone. Private::FileLineEdit - + Path does not exist Ścieżka nie istnieje - + Path does not point to a directory Ścieżka nie wskazuje na katalog - + Path does not point to a file Ścieżka nie wskazuje na plik - + Don't have read permission to path Nie masz uprawnień do odczytu ścieżki - + Don't have write permission to path Nie masz uprawnień do zapisu w ścieżce @@ -8078,12 +8490,12 @@ Te wtyczki zostały wyłączone. PropertiesWidget - + Downloaded: Pobrano: - + Availability: Dostępność: @@ -8098,53 +8510,53 @@ Te wtyczki zostały wyłączone. Transfer - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Aktywny przez: - + ETA: ETA: - + Uploaded: Wysłano: - + Seeds: Seedy: - + Download Speed: Pobieranie: - + Upload Speed: Wysyłanie: - + Peers: Peery: - + Download Limit: Limit pobierania: - + Upload Limit: Limit wysyłania: - + Wasted: Odrzucono: @@ -8154,193 +8566,249 @@ Te wtyczki zostały wyłączone. Połączeń: - + Information Informacje - + Info Hash v1: Info hash v1: - + Info Hash v2: Info hash v2: - + Comment: Komentarz: - + Select All Zaznacz wszystko - + Select None Odznacz wszystko - + Share Ratio: Współczynnik udziału: - + Reannounce In: Rozgłoszenie za: - + Last Seen Complete: Ostatni raz widziany kompletny: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Całkowity rozmiar: - + Pieces: Części: - + Created By: Utworzony przez: - + Added On: Dodano: - + Completed On: Ukończono: - + Created On: Utworzono: - + + Private: + + + + Save Path: Ścieżka zapisu: - + Never Nigdy - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ma %3) - - + + %1 (%2 this session) %1 (w tej sesji %2) - - + + + N/A Nie dotyczy - + + Yes + Tak + + + + No + Nie + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedowane przez %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (maksymalnie %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (całkowicie %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (średnio %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nowy seed sieciowy + Nowy seed sieciowy - Remove Web seed - Usuń seed sieciowy + Usuń seed sieciowy - Copy Web seed URL - Kopiuj URL seeda sieciowego + Kopiuj URL seeda sieciowego - Edit Web seed URL - Edytuj URL seeda sieciowego + Edytuj URL seeda sieciowego - + Filter files... Filtrowane pliki... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Wykresy prędkości są wyłączone - + You can enable it in Advanced Options Możesz to włączyć w opcjach zaawansowanych - New URL seed New HTTP source - Nowy URL seeda + Nowy URL seeda - New URL seed: - Nowy URL seeda: + Nowy URL seeda: - - This URL seed is already in the list. - Ten URL seeda już jest na liście. + Ten URL seeda już jest na liście. - + Web seed editing Edytowanie seeda sieciowego - + Web seed URL: URL seeda sieciowego: @@ -8359,22 +8827,22 @@ Te wtyczki zostały wyłączone. Nie można zapisać danych automatycznego pobierania RSS w %1. Błąd: %2 - + Invalid data format Nieprawidłowy format danych - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... Artykuł RSS '%1' jest akceptowany przez regułę '%2'. Próbuję dodać torrenta... - + Failed to read RSS AutoDownloader rules. %1 Nie udało się wczytać reguł automatycznego pobierania RSS. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Nie można wczytać reguł automatycznego pobierania RSS. Powód: %1 @@ -8382,22 +8850,22 @@ Te wtyczki zostały wyłączone. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Nie udało się pobrać kanału RSS z '%1'. Powód: %2 - + RSS feed at '%1' updated. Added %2 new articles. Kanał RSS z '%1' został zaktualizowany. Dodano %2 nowe artykuły. - + Failed to parse RSS feed at '%1'. Reason: %2 Nie udało się przetworzyć kanału RSS z '%1'. Powód: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Kanał RSS z '%1' został pomyślnie pobrany. Zaczynam go przetwarzać. @@ -8433,12 +8901,12 @@ Te wtyczki zostały wyłączone. RSS::Private::Parser - + Invalid RSS feed. Nieprawidłowy kanał RSS. - + %1 (line: %2, column: %3, offset: %4). %1 (wiersz: %2, kolumna: %3, rozstaw: %4). @@ -8446,99 +8914,99 @@ Te wtyczki zostały wyłączone. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Nie można zapisać konfiguracji sesji RSS. Plik: "%1". Błąd: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Nie można zapisać danych sesji RSS. Plik: "%1". Błąd: "%2" - - + + RSS feed with given URL already exists: %1. Kanał RSS z tym samym adresem URL już istnieje: %1. - + Feed doesn't exist: %1. Kanał nie istnieje: %1. - + Cannot move root folder. Nie można przenieść folderu głównego. - - + + Item doesn't exist: %1. Element nie istnieje: %1. - + Couldn't move folder into itself. Nie można przenieść folderu do siebie. - + Cannot delete root folder. Nie można usunąć folderu głównego. - + Failed to read RSS session data. %1 Nie udało się odczytać danych sesji RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Nie udało się przeanalizować danych sesji RSS. Plik: "%1". Błąd: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Nie udało się załadować danych sesji RSS. Plik: "%1". Błąd: "Nieprawidłowy format danych." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Nie można załadować kanału RSS. Kanał: "%1". Powód: adres URL jest wymagany. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Nie można załadować kanału RSS. Kanał: "%1". Powód: UID jest nieprawidłowy. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Znaleziono zduplikowany UID kanału RSS. UID: "%1". Błąd: konfiguracja wydaje się uszkodzona. - + Couldn't load RSS item. Item: "%1". Invalid data format. Nie można załadować elementu RSS. Element: "%1". Niepoprawny format danych. - + Corrupted RSS list, not loading it. Uszkodzona lista RSS, nie ładuję jej. - + Incorrect RSS Item path: %1. Nieprawidłowa ścieżka elementu RSS: %1. - + RSS item with given path already exists: %1. Element RSS z tą samą ścieżką już istnieje: %1. - + Parent folder doesn't exist: %1. Folder nadrzędny nie istnieje: %1. @@ -8562,8 +9030,8 @@ Te wtyczki zostały wyłączone. - - + + Mark items read Zaznacz jako przeczytane @@ -8588,132 +9056,132 @@ Te wtyczki zostały wyłączone. Torrenty: (podwójne kliknięcie, aby pobrać) - - + + Delete Usuń - + Rename... Zmień nazwę... - + Rename Zmień nazwę - - + + Update Odśwież - + New subscription... Nowa subskrypcja... - - + + Update all feeds Zaktualizuj wszystkie kanały - + Download torrent Pobierz torrent - + Open news URL Otwórz adres URL wiadomości - + Copy feed URL Kopiuj adres URL kanału - + New folder... Nowy folder... - + Edit feed URL... Edytuj adres URL kanału... - + Edit feed URL Edytuj adres URL kanału - + Please choose a folder name Wybierz nazwę folderu - + Folder name: Nazwa folderu: - + New folder Nowy folder - - + + Please type a RSS feed URL Proszę wpisać adres URL kanału RSS - - + + Feed URL: Adres URL kanału: - + Deletion confirmation Potwierdzenie usuwania - + Are you sure you want to delete the selected RSS feeds? Czy na pewno chcesz usunąć wybrane kanały RSS? - + Please choose a new name for this RSS feed Wybierz nową nazwę dla tego kanału RSS - + New feed name: Nowa nazwa kanału: - + Rename failed Zmiana nazwy nie powiodła się - + Date: Data: - + Feed: - + Kanał: - + Author: Autor: @@ -8721,38 +9189,38 @@ Te wtyczki zostały wyłączone. SearchController - + Python must be installed to use the Search Engine. Python musi być zainstalowany, aby korzystać z wyszukiwarki. - + Unable to create more than %1 concurrent searches. Nie można utworzyć więcej niż %1 równoczesnych wyszukiwań. - - + + Offset is out of range Przesunięcie jest poza zakresem - + All plugins are already up to date. Wszystkie wtyczki są aktualne. - + Updating %1 plugins Aktualizowanie wtyczek %1 - + Updating plugin %1 Aktualizowanie wtyczki %1 - + Failed to check for plugin updates: %1 Nie udało się sprawdzić aktualizacji wtyczki: %1 @@ -8827,132 +9295,146 @@ Te wtyczki zostały wyłączone. Rozmiar: - + Name i.e: file name Nazwa - + Size i.e: file size Rozmiar - + Seeders i.e: Number of full sources Seedujący - + Leechers i.e: Number of partial sources Pijawki - Search engine - Wyszukiwarka + Wyszukiwarka - + Filter search results... Filtruj wyniki wyszukiwania... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Wyniki (pokazuje <i>%1</i> z <i>%2</i>): - + Torrent names only Tylko nazwy torrentów - + Everywhere Wszędzie - + Use regular expressions Używaj wyrażeń regularnych - + Open download window Otwórz okno pobierania - + Download Pobierz - + Open description page Otwórz stronę z opisem - + Copy Kopiuj - + Name Nazwa - + Download link Odnośnik pobierania - + Description page URL Adres URL strony opisu - + Searching... Wyszukiwanie... - + Search has finished Wyszukiwanie zakończone - + Search aborted Wyszukiwanie przerwane - + An error occurred during search... Wystąpił błąd podczas wyszukiwania... - + Search returned no results Wyszukiwanie nie zwróciło wyników - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Widoczność kolumy - + Resize columns Zmień rozmiar kolumn - + Resize all non-hidden columns to the size of their contents Zmień rozmiar wszystkich nieukrytych kolumn do rozmiaru ich zawartości @@ -8960,104 +9442,104 @@ Te wtyczki zostały wyłączone. SearchPluginManager - + Unknown search engine plugin file format. Nieznany format pliku wtyczki wyszukiwania. - + Plugin already at version %1, which is greater than %2 Wtyczka jest już w wersji %1, która jest większa niż %2 - + A more recent version of this plugin is already installed. Najnowsza wersja tej wtyczki jest już zainstalowana. - + Plugin %1 is not supported. Wtyczka %1 nie jest obsługiwania. - - + + Plugin is not supported. Wtyczka nie jest obsługiwania. - + Plugin %1 has been successfully updated. Pomyślnie zaktualizowano wtyczkę %1. - + All categories Wszystko - + Movies Filmy - + TV shows Seriale TV - + Music Muzyka - + Games Gry - + Anime Anime - + Software Oprogramowanie - + Pictures Obrazki - + Books Książki - + Update server is temporarily unavailable. %1 Serwer aktualizacji jest tymczasowo niedostępny. %1 - - + + Failed to download the plugin file. %1 Nie udało się pobrać pliku wtyczki. %1 - + Plugin "%1" is outdated, updating to version %2 Wtyczka "%1" jest nieaktualna, aktualizowanie do wersji %2 - + Incorrect update info received for %1 out of %2 plugins. Otrzymano niepoprawne informacje o aktualizacji dla wtyczek %1 z %2. - + Search plugin '%1' contains invalid version string ('%2') Wtyczka wyszukiwania '%1' zawiera nieprawidłowy ciąg wersji ('%2') @@ -9067,114 +9549,153 @@ Te wtyczki zostały wyłączone. - - - - Search Wyszukaj - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Nie ma zainstalowanych żadnych wtyczek wyszukiwania. Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, aby zainstalować niektóre. - + Search plugins... Wtyczki wyszukiwania... - + A phrase to search for. Fraza do wyszukiwania. - + Spaces in a search term may be protected by double quotes. Odstępy w wyszukiwanej frazie mogą być chronione przez cudzysłów. - + Example: Search phrase example Przykład: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: wyszukaj <b>foo bar</b> - + All plugins Wszystkie wtyczki - + Only enabled Tylko włączone - + + + Invalid data format. + Nieprawidłowy format danych. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: wyszukaj <b>foo</b> oraz <b>bar</b> - + + Refresh + + + + Close tab Zamknij kartę - + Close all tabs Zamknij wszystkie karty - + Select... Wybierz... - - - + + Search Engine Wyszukiwarka - + + Please install Python to use the Search Engine. Należy zainstalować Pythona, aby móc używać wyszukiwarki. - + Empty search pattern Pusty wzorzec wyszukiwania - + Please type a search pattern first Najpierw podaj wzorzec wyszukiwania - + + Stop Zatrzymaj - Search has finished - Wyszukiwanie zakończone + Wyszukiwanie zakończone - Search has failed - Wyszukiwanie nie powiodło się + Wyszukiwanie nie powiodło się + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9270,7 +9791,7 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, You can cancel the action within %1 seconds. - Możesz anulować akcję w ciągu %1 sekund. + Możesz anulować czynność w ciągu %1 sekund. @@ -9287,34 +9808,34 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, - + Upload: Wysyłanie: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Pobieranie: - + Alternative speed limits Alternatywne limity prędkości @@ -9506,32 +10027,32 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, Średni czas w kolejce: - + Connected peers: Połączone peery: - + All-time share ratio: Współczynnik udziału absolutny: - + All-time download: Pobieranie absolutne: - + Session waste: Strata sesji: - + All-time upload: Wysyłanie absolutne: - + Total buffer size: Całość rozmiaru bufora: @@ -9546,12 +10067,12 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, Zadania we/wy w kolejce: - + Write cache overload: Przepełnienie pamięci podręcznej zapisu: - + Read cache overload: Przepełnienie pamięci podręcznej odczytu: @@ -9570,51 +10091,67 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, StatusBar - + Connection status: - Status połączenia: + Stan połączenia: - - + + No direct connections. This may indicate network configuration problems. Brak bezpośrednich połączeń. Może to oznaczać problem z konfiguracją sieci. - - + + + External IP: N/A + + + + + DHT: %1 nodes Węzły DHT: %1 - + qBittorrent needs to be restarted! qBittorrent musi zostać uruchomiony ponownie! - - - + + + Connection Status: - Status połączenia: + Stan połączenia: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. Oznacza, że qBittorent nie jest w stanie nasłuchiwać połączeń przychodzących na wybranym porcie. - + Online Połączony - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Kliknij, aby przełączyć na alternatywne limity prędkości - + Click to switch to regular speed limits Kliknij, aby przełączyć na normalne limity prędkości @@ -9643,14 +10180,22 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, Ukończone (0) - Resumed (0) - Wznowione (0) + Wznowione (0) - Paused (0) - Wstrzymane (0) + Wstrzymane (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, Completed (%1) Ukończone (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Wstrzymane (%1) + Wstrzymane (%1) @@ -9723,14 +10287,12 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, Przenoszenie (%1) - Resume torrents - Wznów torrenty + Wznów torrenty - Pause torrents - Wstrzymaj torrenty + Wstrzymaj torrenty @@ -9738,9 +10300,8 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, Usuń torrenty - Resumed (%1) - Wznowione (%1) + Wznowione (%1) @@ -9781,17 +10342,17 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, TagFilterModel - + Tags Znaczniki - + All Wszystkie - + Untagged Bez znaczników @@ -9799,52 +10360,64 @@ Kliknij przycisk "Wtyczki wyszukiwania..." w prawym dolnym rogu okna, TagFilterWidget - + Add tag... Dodaj znacznik... - + Remove tag Usuń znacznik - + Remove unused tags Usuń nieużywane znaczniki - Resume torrents - Wznów torrenty + Wznów torrenty - Pause torrents - Wstrzymaj torrenty + Wstrzymaj torrenty - + Remove torrents Usuń torrenty - New Tag - Nowy znacznik + Nowy znacznik + + + + Start torrents + + + + + Stop torrents + - + Tag: Znacznik: - + + Add tag + + + + Invalid tag name Nieprawidłowa nazwa znacznika - + Tag name '%1' is invalid Nazwa znacznika '%1' jest nieprawidłowa @@ -9984,32 +10557,32 @@ Wybierz inną nazwę i spróbuj ponownie. TorrentContentModel - + Name Nazwa - + Progress Postęp - + Download Priority Priorytet pobierania - + Remaining Pozostało - + Availability Dostępność - + Total Size Całkowity rozmiar @@ -10054,102 +10627,120 @@ Wybierz inną nazwę i spróbuj ponownie. TorrentContentWidget - + Rename error Błąd zmiany nazwy - + Renaming Zmiana nazwy - + New name: Nowa nazwa: - + Column visibility Widoczność kolumny - + Resize columns Zmień rozmiar kolumn - + Resize all non-hidden columns to the size of their contents Zmień rozmiar wszystkich nieukrytych kolumn do rozmiaru ich zawartości - + Open Otwórz - + Open containing folder Otwórz folder pobierań - + Rename... Zmień nazwę... - + Priority Priorytet - - + + Do not download Nie pobieraj - + Normal Normalny - + High Wysoki - + Maximum Maksymalny - + By shown file order Według pokazanej kolejności plików - + Normal priority Normalny priorytet - + High priority Wysoki priorytet - + Maximum priority Maksymalny priorytet - + Priority by shown file order Priorytet według pokazanej kolejności plików + + TorrentCreatorController + + + Too many active tasks + Zbyt wiele aktywnych zadań + + + + Torrent creation is still unfinished. + Tworzenie torrenta nie zostało jeszcze ukończone. + + + + Torrent creation failed. + Niepowodzenie tworzenia torrenta. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Wybierz inną nazwę i spróbuj ponownie. - + Select file Wybierz plik - + Select folder Wybierz folder @@ -10205,58 +10796,10 @@ Wybierz inną nazwę i spróbuj ponownie. Rozmiar części: - + Auto Automatyczny - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Wybierz inną nazwę i spróbuj ponownie. Pola - + You can separate tracker tiers / groups with an empty line. Można oddzielić warstwy / grupy trackerów za pomocą pustej linii. - + Web seed URLs: Adresy URL źródła sieciowego: - + Tracker URLs: Adresy URL trackerów: - + Comments: Komentarze: - + Source: Źródło: - + Progress: Postęp: - + Create Torrent Utwórz torrent - - + + Torrent creation failed Niepowodzenie tworzenia torrenta - + Reason: Path to file/folder is not readable. Powód: nie można odczytać ścieżki do pliku lub folderu. - + Select where to save the new torrent Wybierz, gdzie zapisać nowy torrent - + Torrent Files (*.torrent) Pliki torrent (*.torrent) - - Reason: %1 - Powód: %1 - - - + Add torrent to transfer list failed. - + Dodanie torrenta do listy transferów nie powiodło się. - + Reason: "%1" - + Powód: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Powód: utworzony plik torrent jest nieprawidłowy. Nie zostanie dodany do listy pobierania. + Dodanie torrenta nie powiodło się - + Torrent creator Kreator torrentów - + Torrent created: Torrent utworzono: @@ -10396,32 +10930,32 @@ Wybierz inną nazwę i spróbuj ponownie. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Nie udało się załadować konfiguracji folderów obserwowanych. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Nie udało się przeanalizować konfiguracji folderów obserwowanych z %1. Błąd: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Nie udało się załadować konfiguracji folderów obserwowanych z %1. Błąd: "Nieprawidłowy format danych". - + Couldn't store Watched Folders configuration to %1. Error: %2 Nie można zapisać konfiguracji obserwowanych folderów w %1. Błąd: %2 - + Watched folder Path cannot be empty. Ścieżka folderu obserwowanego nie może być pusta. - + Watched folder Path cannot be relative. Ścieżka folderu obserwowanego nie może być względna. @@ -10429,27 +10963,27 @@ Wybierz inną nazwę i spróbuj ponownie. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Nieprawidłowy identyfikator URI magnet. URI: %1. Powód: %2 - + Magnet file too big. File: %1 Plik magnet zbyt duży. Plik: %1 - + Failed to open magnet file: %1 Nie udało się otworzyć pliku magnet: %1 - + Rejecting failed torrent file: %1 Odrzucanie nieudanego pliku torrent: %1 - + Watching folder: "%1" Obserwowanie folderu: "%1" @@ -10457,14 +10991,12 @@ Wybierz inną nazwę i spróbuj ponownie. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Nie udało się przydzielić pamięci podczas odczytu pliku. Plik: "%1". Błąd: "%2" + Nie udało się przydzielić pamięci podczas odczytu pliku. Plik: "%1". Błąd: "%2" - Invalid metadata - Nieprawidłowe metadane + Nieprawidłowe metadane @@ -10495,279 +11027,374 @@ Wybierz inną nazwę i spróbuj ponownie. Użyj innej ścieżki do niekompletnego torrenta - + Category: Kategoria: - + + Torrent Share Limits + + + Torrent speed limits - Limity prędkości torrenta + Limity prędkości torrenta - + Download: Pobieranie: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Nie przekroczą ogólnych limitów - + Upload: Wysyłanie: - Torrent share limits - Limity udziału torrenta + Limity udziału torrenta - Use global share limit - Użyj ogólnego limitu udziału + Użyj ogólnego limitu udziału - Set no share limit - Ustaw bez limitu udziału + Ustaw bez limitu udziału - Set share limit to - Ustaw limit udziału na + Ustaw limit udziału na - ratio - ratio + ratio - total minutes - łącznie minuty + łączne minuty - inactive minutes - nieaktywne minuty + nieaktywne minuty - + Disable DHT for this torrent Wyłącz DHT dla tego torrenta - + Download in sequential order Pobierz w kolejności sekwencyjnej - + Disable PeX for this torrent Wyłącz PeX dla tego torrenta - + Download first and last pieces first Pobierz najpierw część pierwszą i ostatnią - + Disable LSD for this torrent Wyłącz LSD dla tego torrenta - + Currently used categories Aktualnie używane kategorie - - + + Choose save path Wybierz ścieżkę zapisu - + Not applicable to private torrents Nie dotyczy prywatnych torrentów - No share limit method selected - Nie wybrano metody limitu udziału + Nie wybrano metody limitu udziału - Please select a limit method first - Proszę najpierw wybrać metodę limitu + Proszę najpierw wybrać metodę limitu - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Znaczniki torrenta + + + + + Default + Domyślne - - New Tag - Nowy znacznik + + + + Unlimited + Nieograniczone - - Tag: - Znacznik: + + + + Set to + Ustaw - - Invalid tag name - Nieprawidłowa nazwa znacznika + + Seeding time: + Czas seedowania: - - Tag name '%1' is invalid. - Nazwa znacznika '%1' jest nieprawidłowa. + + + + + + + min + minutes + min - - Tag exists - Znacznik istnieje + + Inactive seeding time: + Nieaktywny czas seedowania: - - Tag name already exists. - Nazwa znacznika już istnieje. + + Action when the limit is reached: + - + + + Stop torrent + + + + + Remove torrent + Usuń torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Włącz super-seedowanie dla torrenta + + + + Ratio: + Udział: + + + + TorrentTagsDialog + + + Torrent Tags + Znaczniki torrenta + + + New Tag + Nowy znacznik + + + + Add tag + + + + + Tag: + Znacznik: + + + + Invalid tag name + Nieprawidłowa nazwa znacznika + + + + Tag name '%1' is invalid. + Nazwa znacznika '%1' jest nieprawidłowa. + + + + Tag exists + Znacznik istnieje + + + + Tag name already exists. + Nazwa znacznika już istnieje. + + TorrentsController - + Error: '%1' is not a valid torrent file. Błąd: '%1' nie jest prawidłowym plikiem torrent. - + Priority must be an integer Priorytet musi być liczbą całkowitą - + Priority is not valid Priorytet jest nieprawidłowy - + Torrent's metadata has not yet downloaded Metadane torrenta nie zostały jeszcze pobrane - + File IDs must be integers Identyfikatory plików muszą być liczbami całkowitymi - + File ID is not valid Identyfikator pliku jest nieprawidłowy - - - - + + + + Torrent queueing must be enabled Kolejkowanie torrentów musi być włączone - - + + Save path cannot be empty Ścieżka zapisu nie może być pusta - - + + Cannot create target directory Nie można utworzyć katalogu docelowego - - + + Category cannot be empty Kategoria nie może być pusta - + Unable to create category Nie można utworzyć kategorii - + Unable to edit category Nie można edytować kategorii - + Unable to export torrent file. Error: %1 Nie można wyeksportować pliku torrent. Błąd: %1 - + Cannot make save path Nie można utworzyć ścieżki zapisu - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Parametr 'sort' jest nieprawidłowy - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" nie jest prawidłowym indeksem plików. - + Index %1 is out of bounds. Indeks %1 jest poza zakresem. - - + + Cannot write to directory Nie można zapisać do katalogu - + WebUI Set location: moving "%1", from "%2" to "%3" Interfejs WWW Ustaw położenie: przenoszenie "%1", z "%2" do "%3" - + Incorrect torrent name Nieprawidłowa nazwa torrenta - - + + Incorrect category name Nieprawidłowa nazwa kategorii @@ -10798,257 +11425,215 @@ Wybierz inną nazwę i spróbuj ponownie. TrackerListModel - - + Working - Działa + Działa - + Disabled - Wyłączone + Wyłączone - + Disabled for this torrent - Wyłączone dla tego torrenta + Wyłączone dla tego torrenta - + This torrent is private - Ten torrent jest prywatny + Ten torrent jest prywatny - + N/A - Nie dotyczy + Nie dotyczy - + Updating... - Aktualizowanie... + Aktualizowanie... - + Not working - Nie działa + Nie działa - + Tracker error - + Błąd trackera - + Unreachable - + Nieosiągalny - + Not contacted yet - Niesprawdzony + Niesprawdzony - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Poziom + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Nieprawidłowy stan! + + + URL/Announce endpoint + Punkt końcowy adresu URL/rozgłoszenia + Tier + Poziom + + Protocol - + Protokół - + Status - Status + Stan - + Peers - + Partnerzy - + Seeds - Seedy + Seedy - + Leeches - Pijawki + Pijawki - + Times Downloaded - Liczba pobrań + Liczba pobrań - + Message - Komunikat + Komunikat - Next announce - + Następne rozgłoszenie - Min announce - + Minimalne rozgłoszenie - v%1 - + v%1 TrackerListWidget - Working - Działa - - - Disabled - Wyłączone - - - Disabled for this torrent - Wyłączone dla tego torrenta - - - + This torrent is private Ten torrent jest prywatny - Updating... - Aktualizowanie... - - - Not working - Nie działa - - - Not contacted yet - Niesprawdzony - - - N/A - Nie dotyczy - - - + Tracker editing Edytowanie trackera - + Tracker URL: Adres URL trackera: - - + + Tracker editing failed Edytowanie trackera nie powiodła się - + The tracker URL entered is invalid. Wprowadzony adres URL trackera jest nieprawidłowy. - + The tracker URL already exists. Adres URL trackera już istnieje. - + Edit tracker URL... Edytuj adres URL trackera... - + Remove tracker Usuń tracker - + Copy tracker URL Kopiuj adres URL trackera - + Force reannounce to selected trackers Wymuś rozgłoszenie do wybranych trackerów - + Force reannounce to all trackers Wymuś rozgłoszenie do wszystkich trackerów - Tier - Poziom - - - URL - Adres URL - - - Status - Status - - - Seeds - Seedy - - - Times Downloaded - Liczba pobrań - - - + Resize columns Zmień rozmiar kolumn - + Resize all non-hidden columns to the size of their contents Zmień rozmiar wszystkich nieukrytych kolumn do rozmiaru ich zawartości - Peers - Peery - - - + Add trackers... Dodaj trackery... - Leeches - Pijawki - - - Message - Komunikat - - - + Column visibility Widoczność kolumy @@ -11066,37 +11651,37 @@ Wybierz inną nazwę i spróbuj ponownie. Lista trackerów do dodania (po jednym w wierszu): - + µTorrent compatible list URL: Adres kompatybilny z µTorrent: - + Download trackers list Pobierz listę trackerów - + Add Dodaj - + Trackers list URL error Błąd adresu URL listy trackerów - + The trackers list URL cannot be empty Adres URL listy trackerów nie może być pusty - + Download trackers list error Błąd pobierania listy trackerów - + Error occurred when downloading the trackers list. Reason: "%1" Wystąpił błąd podczas pobierania listy trackerów. Powód: "%1" @@ -11104,87 +11689,70 @@ Wybierz inną nazwę i spróbuj ponownie. TrackersFilterWidget - All (0) - this is for the tracker filter - Wszystkie (0) - - - Trackerless (0) - Bez trackera (0) - - - Error (0) - Błędne (0) - - - Warning (0) - Z ostrzeżeniem (0) - - - Trackerless - Bez trackera - - - Error (%1) - Błędne (%1) - - - + Warning (%1) Z ostrzeżeniem (%1) - + Trackerless (%1) Bez trackera (%1) - + Tracker error (%1) - + Błąd trackera (%1) - + Other error (%1) - + Inny błąd (%1) - + Remove tracker - Usuń tracker + Usuń tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Wznów torrenty + Wznów torrenty - Pause torrents - Wstrzymaj torrenty + Wstrzymaj torrenty - + Remove torrents Usuń torrenty - + Removal confirmation - + Potwierdzenie usunięcia - + Are you sure you want to remove tracker "%1" from all torrents? - + Czy na pewno chcesz usunąć tracker "%1" ze wszystkich torrentów? - + Don't ask me again. - + Nie pytaj mnie więcej. - + All (%1) this is for the tracker filter Wszystkie (%1) @@ -11193,7 +11761,7 @@ Wybierz inną nazwę i spróbuj ponownie. TransferController - + 'mode': invalid argument 'tryb': nieprawidłowy argument @@ -11203,7 +11771,7 @@ Wybierz inną nazwę i spróbuj ponownie. Status - Status + Stan @@ -11286,9 +11854,8 @@ Wybierz inną nazwę i spróbuj ponownie. Sprawdzanie danych wznawiania - Paused - Wstrzymano + Wstrzymano @@ -11313,220 +11880,262 @@ Wybierz inną nazwę i spróbuj ponownie. Błędne - + Name i.e: torrent name Nazwa - + Size i.e: torrent size Rozmiar - + Progress % Done Postęp - Status Torrent status (e.g. downloading, seeding, paused) - Status + Stan - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stan + + + Seeds i.e. full sources (often untranslated) Seedy - + Peers i.e. partial sources (often untranslated) Peery - + Down Speed i.e: Download speed Prędkość pobierania - + Up Speed i.e: Upload speed Prędkość wysyłania - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category Kategoria - + Tags Znaczniki - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Dodano - + Completed On Torrent was completed on 01/01/2010 08:00 Ukończono - + Tracker Tracker - + Down Limit i.e: Download limit Limit pobierania - + Up Limit i.e: Upload limit Limit wysyłania - + Downloaded Amount of data downloaded (e.g. in MB) Pobrano - + Uploaded Amount of data uploaded (e.g. in MB) Wysłano - + Session Download Amount of data downloaded since program open (e.g. in MB) Pobrane w sesji - + Session Upload Amount of data uploaded since program open (e.g. in MB) Wysłane w sesji - + Remaining Amount of data left to download (e.g. in MB) Pozostało - + + Time Active + Time (duration) the torrent is active (not stopped) + Aktywny przez + + + + Yes + Tak + + + + No + Nie + + Time Active Time (duration) the torrent is active (not paused) - Aktywny przez + Aktywny przez - + Save Path Torrent save path Ścieżka zapisu - + Incomplete Save Path Torrent incomplete save path Niepełna ścieżka zapisu - + Completed Amount of data completed (e.g. in MB) Ukończone - + Ratio Limit Upload share ratio limit Limit współczynnika udziału - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Ostatni raz widziany kompletny - + Last Activity Time passed since a chunk was downloaded/uploaded Ostatnia aktywność - + Total Size i.e. Size including unwanted data Całkowity rozmiar - + Availability The number of distributed copies of the torrent Dostępność - + Info Hash v1 i.e: torrent info hash v1 Info hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Rozgłoszenie za + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Nie dotyczy - + %1 ago e.g.: 1h 20m ago %1 temu - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedowane przez %2) @@ -11535,334 +12144,358 @@ Wybierz inną nazwę i spróbuj ponownie. TransferListWidget - + Column visibility Widoczność kolumn - + Recheck confirmation Potwierdzenie ponownego sprawdzania - + Are you sure you want to recheck the selected torrent(s)? Czy na pewno ponownie sprawdzić wybrane torrenty? - + Rename Zmień nazwę - + New name: Nowa nazwa: - + Choose save path Wybierz katalog docelowy - Confirm pause - Potwierdź wstrzymanie + Potwierdź wstrzymanie - Would you like to pause all torrents? - Czy chcesz wstrzymać wszystkie torrenty? + Czy chcesz wstrzymać wszystkie torrenty? - Confirm resume - Potwierdź wznowienie + Potwierdź wznowienie - Would you like to resume all torrents? - Czy chcesz wznowić wszystkie torrenty? + Czy chcesz wznowić wszystkie torrenty? - + Unable to preview Nie można wyświetlić podglądu - + The selected torrent "%1" does not contain previewable files Wybrany torrent "%1" nie zawiera plików możliwych do podglądu - + Resize columns Zmień rozmiar kolumn - + Resize all non-hidden columns to the size of their contents Zmień rozmiar wszystkich nieukrytych kolumn do rozmiaru ich zawartości - + Enable automatic torrent management Włącz automatyczne zarządzanie torrentem - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Czy na pewno chcesz włączyć automatyczne zarządzanie torrentem dla wybranego torrenta lub torrentów? Mogą zostać przeniesione. - Add Tags - Dodaj znaczniki + Dodaj znaczniki - + Choose folder to save exported .torrent files Wybierz folder do zapisywania wyeksportowanych plików .torrent - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Nie udało się wyeksportować pliku .torrent. Torrent: "%1". Ścieżka zapisu: "%2". Powód: "%3" - + A file with the same name already exists Plik o tej nazwie już istnieje - + Export .torrent file error Błąd eksportu pliku .torrent - + Remove All Tags Usuń wszystkie znaczniki - + Remove all tags from selected torrents? Usunąć wszystkie znaczniki z wybranych torrentów? - + Comma-separated tags: Znaczniki rozdzielone przecinkami: - + Invalid tag Niepoprawny znacznik - + Tag name: '%1' is invalid Nazwa znacznika '%1' jest nieprawidłowa - &Resume Resume/start the torrent - W&znów + W&znów - &Pause Pause the torrent - &Wstrzymaj + &Wstrzymaj - Force Resu&me Force Resume/start the torrent - Wymuś wz&nowienie + Wymuś wz&nowienie - + Pre&view file... Podglą&d pliku... - + Torrent &options... &Opcje torrenta... - + Open destination &folder Otwórz &folder pobierań - + Move &up i.e. move up in the queue Przenieś w &górę - + Move &down i.e. Move down in the queue Przenieś w &dół - + Move to &top i.e. Move to top of the queue Przenieś na &początek - + Move to &bottom i.e. Move to bottom of the queue Przenieś na &koniec - + Set loc&ation... U&staw położenie... - + Force rec&heck Wy&muś ponowne sprawdzenie - + Force r&eannounce Wymuś ro&zgłoszenie - + &Magnet link Odnośnik &magnet - + Torrent &ID &Identyfikator torrenta - + + &Comment + &Komentarz: + + + &Name &Nazwa - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Zmień &nazwę... - + Edit trac&kers... Edytuj trac&kery... - + E&xport .torrent... Eksportuj .torrent... - + Categor&y Kategor&ia - + &New... New category... &Nowa... - + &Reset Reset category &Resetuj - + Ta&gs Zna&czniki - + &Add... Add / assign multiple tags... &Dodaj... - + &Remove All Remove all tags Usuń &wszystkie - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue Ko&lejka - + &Copy &Kopiuj - + Exported torrent is not necessarily the same as the imported Eksportowany torrent niekoniecznie jest taki sam jak importowany - + Download in sequential order Pobierz w kolejności sekwencyjnej - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Podczas eksportowania plików .torrent wystąpiły błędy. Sprawdź dziennik wykonania, aby uzyskać szczegółowe informacje. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Usuń - + Download first and last pieces first Pobierz najpierw część pierwszą i ostatnią - + Automatic Torrent Management Automatyczne zarządzanie torrentem - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Tryb automatyczny oznacza, że różne właściwości torrenta (np. ścieżka zapisu) będą określane przez powiązaną kategorię - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Nie można wymusić rozgłaszania, jeśli torrent jest wstrzymany/w kolejce/błędny/sprawdzany + Nie można wymusić rozgłaszania, jeśli torrent jest wstrzymany/w kolejce/błędny/sprawdzany - + Super seeding mode Tryb super-seeding @@ -11907,28 +12540,28 @@ Wybierz inną nazwę i spróbuj ponownie. Identyfikator ikony - + UI Theme Configuration. Konfiguracja motywu interfejsu użytkownika. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Nie można w pełni zastosować zmian motywu interfejsu użytkownika. Szczegóły znajdziesz w dzienniku. - + Couldn't save UI Theme configuration. Reason: %1 Nie można zapisać konfiguracji motywu interfejsu użytkownika. Powód: %1 - - + + Couldn't remove icon file. File: %1. Nie można usunąć pliku ikony. Plik: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Nie można skopiować pliku ikony. Źródło: %1. Miejsce docelowe: %2. @@ -11936,7 +12569,12 @@ Wybierz inną nazwę i spróbuj ponownie. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Nie udało się załadować motywu interfejsu użytkownika z pliku: "%1" @@ -11967,89 +12605,82 @@ Wybierz inną nazwę i spróbuj ponownie. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Migracja ustawień nie powiodła się: WebUI https, plik: "%1", błąd: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Zmigrowane ustawienia: WebUI https, wyeksportowane dane do pliku: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". W pliku konfiguracyjnym znaleziono nieprawidłową wartość, przywracanie jej do wartości domyślnej. Klucz: "%1". Nieprawidłowa wartość: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Wykryto Pythona, nazwa pliku wykonywalnego: '%1', wersja: %2 - - - Python not detected - Nie wykryto Pythona - Found Python executable. Name: "%1". Version: "%2" - + Znaleziono plik wykonywalny Pythona. Nazwa: "%1". Wersja: "%2" Failed to find Python executable. Path: "%1". - + Nie udało się znaleźć pliku wykonywalnego Pythona. Ścieżka: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Nie udało się znaleźć pliku wykonywalnego `python3` w zmiennej środowiskowej PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Nie udało się znaleźć pliku wykonywalnego `python` w zmiennej środowiskowej PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Nie udało się znaleźć pliku wykonywalnego `python` w rejestrze systemu Windows. Failed to find Python executable - + Nie udało się znaleźć pliku wykonywalnego Pythona Utils::IO - + File open error. File: "%1". Error: "%2" Błąd otwierania pliku. Plik: "%1". Błąd: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Rozmiar pliku przekracza limit. Plik: "%1". Rozmiar pliku: %2. Limit rozmiaru: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Rozmiar pliku przekracza limit danych. Plik: "%1". Rozmiar pliku: %2. Limit tablicy: %3 - + File read error. File: "%1". Error: "%2" Błąd odczytu pliku. Plik: "%1". Błąd: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Niezgodność rozmiaru odczytu. Plik: "%1". Oczekiwano: %2. Rzeczywisty: %3 @@ -12113,72 +12744,72 @@ Wybierz inną nazwę i spróbuj ponownie. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Określono nieakceptowalną nazwę pliku cookie sesji: '%1'. Używana jest domyślna. - + Unacceptable file type, only regular file is allowed. Niedozwolony typ pliku, dozwolone są tylko zwykłe pliki. - + Symlinks inside alternative UI folder are forbidden. Dowiązania symboliczne w alternatywnym folderze interfejsu są zabronione. - - Using built-in Web UI. + + Using built-in WebUI. Używanie wbudowanego interfejsu WWW. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". Używanie niestandardowego interfejsu WWW. Położenie: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. Pomyślnie załadowano tłumaczenie interfejsu WWW dla wybranych ustawień narodowych (%1). - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). Nie można załadować tłumaczenia interfejsu WWW dla wybranych ustawień narodowych (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Brak separatora ':' w niestandardowym nagłówku HTTP interfejsu WWW: "%1" - + Web server error. %1 Błąd serwera WWW. %1 - + Web server error. Unknown error. Błąd serwera WWW. Nieznany błąd. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Interfejs WWW: Niedopasowanie nagłówka źródłowego i źródła celu! Źródło IP: '%1'. Nagłówek źródłowy: '%2'. Źródło celu: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Interfejs WWW: Niedopasowanie nagłówka odsyłacza i źródła celu! Źródło IP: '%1'. Nagłówek odsyłacza: '%2'. Źródło celu: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Interfejs WWW: Nieprawidłowy nagłówek hosta, niedopasowanie portu. Źródło IP żądania: '%1'. Port serwera: '%2'. Odebrany nagłówek hosta: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Interfejs WWW: Nieprawidłowy nagłówek hosta. Źródło IP żądania: '%1'. Nagłówek hosta: '%2' @@ -12186,143 +12817,136 @@ Wybierz inną nazwę i spróbuj ponownie. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + Poświadczenia nie są ustawione + + + + WebUI: HTTPS setup successful Interfejs WWW: pomyślna konfiguracja HTTPS - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP Interfejs WWW: nieprawidłowa konfiguracja HTTPS, powrót do HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 Interfejs WWW: teraz nasłuchuje IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 Interfejs WWW: nie można powiązać z IP: %1, port: %2. Powód: %3 + + fs + + + Unknown error + Nieznany błąd + + misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Nieznany - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent wyłączy teraz komputer, ponieważ pobieranie zostało ukończone. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_pt_BR.ts b/src/lang/qbittorrent_pt_BR.ts index ab0e671fe315..fd9d993351d4 100644 --- a/src/lang/qbittorrent_pt_BR.ts +++ b/src/lang/qbittorrent_pt_BR.ts @@ -14,77 +14,77 @@ Sobre - + Authors Autores - + Current maintainer Responsável atual - + Greece Grécia - - + + Nationality: Nacionalidade: - - + + E-mail: E-mail: - - + + Name: Nome: - + Original author Autor original - + France França - + Special Thanks Agradecimentos Especiais - + Translators Tradutores - + License Licença - + Software Used Softwares Usados - + qBittorrent was built with the following libraries: O qBittorrent foi construído com as seguintes bibliotecas: - + Copy to clipboard - + Copy to clipboard @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 O Projeto do qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 O Projeto do qBittorrent @@ -166,14 +166,13 @@ Salvar em - + Never show again Nunca mostrar de novo - Torrent settings - Configurações do torrent + Configurações do torrent @@ -191,12 +190,12 @@ Iniciar torrent - + Torrent information Informações do torrent - + Skip hash check Ignorar verificação do hash @@ -205,6 +204,11 @@ Use another path for incomplete torrent Usar outro caminho pro torrent incompleto + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Condição de parada: - - + + None Nenhum - - + + Metadata received Metadados recebidos - - + + Torrents that have metadata initially will be added as stopped. + Torrents que possuem metadados inicialmente serão adicionados como parados. + + + + Files checked Arquivos verificados - + Add to top of queue Adicionar ao início da fila - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Quando selecionado, o arquivo .torrent não será apagado independente das configurações na página "Download" do diálogo das Opções - + Content layout: Layout do conteúdo: - + Original Original - + Create subfolder Criar sub-pasta - + Don't create subfolder Não criar sub-pasta - + Info hash v1: Informações do hash v1: - + Size: Tamanho: - + Comment: Comentário: - + Date: Data: @@ -324,245 +333,182 @@ Lembrar o último caminho de salvamento usado - + Do not delete .torrent file Não apagar arquivo .torrrent - + Download in sequential order Baixar em ordem sequencial - + Download first and last pieces first Baixar primeiro os primeiros e os últimos pedaços - + Info hash v2: Informações do hash v2: - + Select All Selecionar tudo - + Select None Não selecionar nenhum - + Save as .torrent file... Salvar como arquivo .torrent... - + I/O Error Erro de E/S - Invalid torrent - Torrent inválido - - - + Not Available This comment is unavailable Não disponível - + Not Available This date is unavailable Não disponível - + Not available Não disponível - Invalid magnet link - Link magnético inválido - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Falhou em carregar o torrent: %1 -Erro: %2 - - - This magnet link was not recognized - Este link magnético não foi reconhecido - - - + Magnet link Link magnético - + Retrieving metadata... Recuperando metadados... - - + + Choose save path Escolha o caminho do salvamento - Torrent is already present - O torrent já está presente - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - O torrent "%1" já está na lista de transferências. Os Rastreadores não foram unidos porque é um torrent privado. - - - Torrent is already queued for processing. - O torrent já está na fila pra processamento. - - - + No stop condition is set. Nenhuma condição de parada definida. - + Torrent will stop after metadata is received. O torrent será parado após o recebimento dos metadados. - - Torrents that have metadata initially aren't affected. - Torrents que possuem metadados inicialmente não são afetados. - - - + Torrent will stop after files are initially checked. O torrent será parado após o a verificação inicial dos arquivos. - + This will also download metadata if it wasn't there initially. Isso também fará o download dos metadados, caso não existam inicialmente. - - + + N/A N/D - Magnet link is already queued for processing. - O link magnético já está na fila pra processamento. - - - + %1 (Free space on disk: %2) %1 (Espaço livre no disco: %2) - + Not available This size is unavailable. Não disponível - + Torrent file (*%1) Arquivo torrent (*%1) - + Save as torrent file Salvar como arquivo torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Não pôde exportar o arquivo de metadados do torrent '%1'. Motivo: %2. - + Cannot create v2 torrent until its data is fully downloaded. Não pôde criar o torrent v2 até que seus dados sejam totalmente baixados. - Cannot download '%1': %2 - Não pôde baixar o "%1": %2 - - - + Filter files... Filtrar arquivos... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - O torrent '%1' já existe na lista de transferências. Os rastreadores não foram unidos porque é um torrent privado. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - O torrent '%1' já existe na lista de transferências. Deseja unir os rastreadores da nova fonte? - - - + Parsing metadata... Analisando metadados... - + Metadata retrieval complete Recuperação dos metadados completa - - Failed to load from URL: %1. -Error: %2 - Falhou em carregar da URL: %1 -Erro: %2 - - - Download Error - Erro do download - AddTorrentManager Downloading torrent... Source: "%1" - + Baixando torrent... Fonte: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Falha ao adicionar o torrent. Fonte: "%1". Motivo: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Detectada uma tentativa de adicionar um torrent duplicado. Fonte: %1. Torrent existente: %2. Resultado: %3 - + Merging of trackers is disabled - + A mesclagem de rastreadores está desativada - + Trackers cannot be merged because it is a private torrent - + Os rastreadores não podem ser mesclados pois este é um torrent privado - + Trackers are merged from new source - + Rastreadores mesclados a partir da nova fonte @@ -648,72 +594,77 @@ Erro: %2 Ignorar a verificação do hash - - - Choose save path - Escolha o caminho do salvamento + + Torrent share limits + Limites de compartilhamento do torrent - - - - - - - Default - Padrão + + + Choose save path + Escolha o caminho do salvamento + + + - Yes - Sim + Default + Padrão + Yes + Sim + + + + + No Não - + Manual Manual - + Automatic Automático - + Original Original - + Create subfolder Criar sub-pasta - + Don't create subfolder Não criar sub-pasta - + None Nenhum - + Metadata received Metadados recebidos - + Files checked Arquivos verificados @@ -721,734 +672,852 @@ Erro: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Verificar os torrents de novo ao completar - - + + ms milliseconds ms - + Setting Configuração - + Value Value set for this setting Valor - + (disabled) (desativado) - + (auto) (auto) - + + min minutes mín - + All addresses Todos os endereços - + qBittorrent Section Seção do qBittorrent - - + + Open documentation Abrir documentação - + All IPv4 addresses Todos os endereços IPv4 - + All IPv6 addresses Todos os endereços IPv6 - + libtorrent Section Seção do libtorrent - + Fastresume files Retomada rápida dos arquivos - + SQLite database (experimental) Banco de dados do SQLite (experimental) - + Resume data storage type (requires restart) Retomar tipo de armazenamento de dados (requer reinicialização) - + Normal Normal - + Below normal Abaixo do normal - + Medium Média - + Low Baixa - + Very low Muito baixa - - Process memory priority (Windows >= 8 only) - Prioridade da memória do processo (só Windows >= 8) - - - + Physical memory (RAM) usage limit Limite de uso da memória física (RAM) - + Asynchronous I/O threads Threads de E/S assíncronos - + Hashing threads Threads de cálculo do hash - + File pool size Tamanho do conjunto de arquivos - + Outstanding memory when checking torrents Memória excelente quando verificar torrents - + Disk cache Cache do disco - - - - + + + + s seconds s - + Disk cache expiry interval Intervalo de expiração do cache do disco - + Disk queue size Tamanho da fila do disco - - + + Enable OS cache Ativar cache do sistema operacional - + Coalesce reads & writes Coalescer leituras & gravações - + Use piece extent affinity Usar afinidade da extensão dos pedaços - + Send upload piece suggestions Enviar sugestões de pedaços do upload - - - - + + + + + 0 (disabled) 0 (desativado) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Salvar o intervalo de dados de retomada [0: desativado] - + Outgoing ports (Min) [0: disabled] Portas de saída (Mín) [0: desativado] - + Outgoing ports (Max) [0: disabled] Portas de saída (Máx) [0: desativado] - + 0 (permanent lease) 0 (locação permanente) - + UPnP lease duration [0: permanent lease] Duração da locação UPnP [0: locação permanente] - + Stop tracker timeout [0: disabled] Intervalo para parar o rastreador [0: disabled] - + Notification timeout [0: infinite, -1: system default] Intervalo da notificação [0: infinito, -1: padrão do sistema] - + Maximum outstanding requests to a single peer Máximo de requisições pendentes pra um único par - - - - - + + + + + KiB KiB - + (infinite) (infinito) - + (system default) (padrão do sistema) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Esta opção é menos efetiva no Linux - + + Process memory priority + Prioridade de memória de processo + + + Bdecode depth limit Limite de profundidade Bdecode - + Bdecode token limit Limite do token Bdecode - + Default Padrão - + Memory mapped files Arquivos mapeados na memória - + POSIX-compliant Compatível com POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipo de E/S de disco (requer reinicialização) - - + + Disable OS cache Desativar cache do sistema - + Disk IO read mode Modo de leitura de E/S do disco: - + Write-through Write-through - + Disk IO write mode Modo de escrita de E/S do disco - + Send buffer watermark Enviar marca d'água do buffer - + Send buffer low watermark Enviar marca d'água do buffer baixo - + Send buffer watermark factor Enviar fator de marca d'água do buffer - + Outgoing connections per second Conexões de saída por segundo - - + + 0 (system default) 0 (padrão do sistema) - + Socket send buffer size [0: system default] Tamanho do buffer do socket de envio [0: padrão do sistema] - + Socket receive buffer size [0: system default] Tamanho do buffer do socket de recebimento [0: padrão do sistema] - + Socket backlog size Tamanho do backlog do soquete - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Limite de tamanho do arquivo .torrent - + Type of service (ToS) for connections to peers Tipo de serviço (ToS) para as conexões com os pares - + Prefer TCP Preferir TCP - + Peer proportional (throttles TCP) Par proporcional (sufoca o TCP) - + Support internationalized domain name (IDN) Suporte a nome internacionalizado de domínio (IDN) - + Allow multiple connections from the same IP address Permitir múltiplas conexões do mesmo endereço de IP - + Validate HTTPS tracker certificates Validar certificados dos rastreadores HTTPS - + Server-side request forgery (SSRF) mitigation Atenuação da falsificação da requisição do lado do servidor (SSRF) - + Disallow connection to peers on privileged ports Não permitir conexão com pares em portas privilegiadas - + + It appends the text to the window title to help distinguish qBittorent instances + Ele anexa o texto ao título da janela para ajudar a distinguir as instâncias do qBittorent + + + + Customize application instance name + Personalizar nome da instância do aplicativo + + + It controls the internal state update interval which in turn will affect UI updates Ele controla o intervalo de atualização do estado interno que, por sua vez, afetará as atualizações da interface do usuário - + Refresh interval Intervalo de atualização - + Resolve peer host names Revelar nomes dos hospedeiros pares - + IP address reported to trackers (requires restart) Endereço de IP reportado aos rastreadores (requer reiniciar) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Reanunciar para todos os rastreadores quando o IP ou porta for alterado - + Enable icons in menus Ativar ícones nos menus - + Enable port forwarding for embedded tracker Habilitar encaminhamento de porta para o rastreador incorporado - - (Auto detect if empty) + + Enable quarantine for downloaded files + Ativar quarentena par arquivos baixados + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Ativar Mark-of-the-Web (MOTW) para arquivos baixados + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Auto detect if empty) + + + Python executable path (may require restart) + Caminho do executável do Python (pode ser necessário reiniciar) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + seg + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirmar remoção do rastreador de todos os torrents + + + Peer turnover disconnect percentage Porcentagem da desconexão da rotatividade dos pares - + Peer turnover threshold percentage Porcentagem do limite da rotatividade dos pares - + Peer turnover disconnect interval Intervalo da desconexão da rotatividade dos pares - + Resets to default if empty - + Resets to default if empty - + DHT bootstrap nodes - + Nós de inicialização DHT - + I2P inbound quantity Quantidade de entrada I2P - + I2P outbound quantity Quantidade de saída I2P - + I2P inbound length Comprimento de entrada I2P - + I2P outbound length Comprimento de saída I2P - + Display notifications Exibir notificações - + Display notifications for added torrents Exibe notificações pros torrents adicionados - + Download tracker's favicon Baixar favicon do rastreador - + Save path history length Tamanho do histórico do caminho do salvamento - + Enable speed graphs Ativar os gráficos da velocidade - + Fixed slots Slots fixos - + Upload rate based Baseado na taxa de upload - + Upload slots behavior Comportamento dos slots de upload - + Round-robin Pontos-corridos - + Fastest upload Upload mais rápido - + Anti-leech Anti-leech - + Upload choking algorithm Algorítmo de sufoco do upload - + Confirm torrent recheck Confirmar nova verificação do torrent - + Confirm removal of all tags Confirmar remoção de todas as etiquetas - + Always announce to all trackers in a tier Sempre anunciar a todos os rastreadores numa camada - + Always announce to all tiers Sempre anunciar pra todas as camadas - + Any interface i.e. Any network interface Qualquer interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algorítmo de modo misto %1-TCP - + Resolve peer countries Revelar os países dos pares - + Network interface Interface de rede - + Optional IP address to bind to Endereço de IP opcional pra se vincular - + Max concurrent HTTP announces Máximo de anúncios HTTP simultâneos - + Enable embedded tracker Ativar rastreador embutido - + Embedded tracker port Porta do rastreador embutido - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 iniciado + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Executando no modo portátil. Pasta do perfil auto-detectada em: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Bandeira de linha de comando redundante detectado: "%1". O modo portátil implica uma retomada rápida relativa. - + Using config directory: %1 Usando diretório das configurações: %1 - + Torrent name: %1 Nome do torrent: %1 - + Torrent size: %1 Tamanho do torrent: %1 - + Save path: %1 Caminho do salvamento: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds O torrent foi baixado em %1. - + + Thank you for using qBittorrent. Obrigado por usar o qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, enviando notificação por e-mail - + Add torrent failed - + Falha ao adicionar torrent - + Couldn't add torrent '%1', reason: %2. - + Não foi possível adicionar o torrent '%1', motivo: %2. + + + + The WebUI administrator username is: %1 + O nome de usuário do administrador da interface web é: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + A senha do administrador da interface web não foi definida. Uma senha temporária será fornecida para esta sessão: %1 + + + + You should set your own password in program preferences. + Você deve definir sua própria senha nas preferências do programa. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + A interface web está desativada! Para ativar, edite o arquivo de configuração manualmente. - + Running external program. Torrent: "%1". Command: `%2` Execução de programa externo. Torrent: "%1". Comando: '%2' - + Failed to run external program. Torrent: "%1". Command: `%2` Falha ao executar o programa externo. Torrent: "%1". Comando: '%2' - + Torrent "%1" has finished downloading O torrent "%1" terminou de ser baixado - + WebUI will be started shortly after internal preparations. Please wait... A interface web será iniciada logo após os preparativos internos. Por favor, aguarde... - - + + Loading torrents... Carregando torrents... - + E&xit S&air - + I/O Error i.e: Input/Output Error Erro de E/S - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Erro: %2 Motivo: %2 - Error - Erro - - - Failed to add torrent: %1 - Falha ao adicionar o torrent: %1 - - - + Torrent added Torrent adicionado - + '%1' was added. e.g: xxx.avi was added. '%1' foi adicionado. - + Download completed Download concluído - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' terminou de ser baixado. - - - URL download error - Erro de download do URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 iniciado. ID do proceso: %2 - Couldn't download file at URL '%1', reason: %2. - Não foi possível baixar o arquivo do URL '%1'. Motivo: %2. + + This is a test email. + - Torrent file association - Associação de arquivo torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - O qBittorrent não é o aplicativo padrão pra abrir arquivos torrent ou links magnéticos. -Deseja tornar o qBittorrent o aplicativo padrão para estes? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' terminou de ser baixado. - + Information Informação - + To fix the error, you may need to edit the config file manually. - + Para corrigir o erro, pode ser necessário editar o arquivo de configuração manualmente. - + To control qBittorrent, access the WebUI at: %1 Pra controlar o qBittorrent acesse a interface de usuário da web em: %1 - - The Web UI administrator username is: %1 - O nome do administrador da interface de usuário da web é: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - A senha do administrador da interface de usuário da web não foi alterada do padrão: %1 - - - - This is a security risk, please change your password in program preferences. - Este é um risco de segurança, por favor mude sua senha nas preferências do programa. - - - Application failed to start. - O aplicativo falhou em iniciar. - - - + Exit Sair - + Recursive download confirmation - Confirmação do download recursivo + Confirmação do download recursivo - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - O torrent '%1' contém arquivos .torrent, deseja continuar com o download deles? + O torrent '%1' contém arquivos .torrent, deseja continuar com o download deles? - + Never - Nunca + Nunca - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Download recursivo do arquivo .torrent dentro do torrent. Torrent fonte: "%1". Arquivo: "%2" + Download recursivo do arquivo .torrent dentro do torrent. Torrent fonte: "%1". Arquivo: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Falhou em definir o limite de uso da memória física (RAM). Código do erro: %1. Mensagem de erro: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Falha ao definir limite de uso de memória física (RAM). Tamanho solicitado: %1. Limite do sistema: %2. Código de erro: %3. Mensagem de erro: "%4" - + qBittorrent termination initiated Finalização do qBittorrent iniciada - + qBittorrent is shutting down... O qBittorrent está fechando... - + Saving torrent progress... Salvando o progresso do torrent... - + qBittorrent is now ready to exit O qBittorrent agora está pronto para ser fechado @@ -1597,7 +1637,7 @@ Deseja tornar o qBittorrent o aplicativo padrão para estes? AsyncFileStorage - + Could not create directory '%1'. Não pôde criar o diretório "%1". @@ -1605,22 +1645,22 @@ Deseja tornar o qBittorrent o aplicativo padrão para estes? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Falha no login do WebAPI. Motivo: o IP foi banido, IP: %1, nome de usuário: %2 - + Your IP address has been banned after too many failed authentication attempts. Seu endereço de IP foi banido após muitas tentativas de autenticação falhas. - + WebAPI login success. IP: %1 Sucesso do login no WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Falha no login do WebAPI. Motivo: credenciais inválidas, contagem de tentativas: %1, IP: %2, nome de usuário: %3 @@ -1668,12 +1708,12 @@ Deseja tornar o qBittorrent o aplicativo padrão para estes? Prioridade: - + Must Not Contain: Não Deve Conter: - + Episode Filter: Filtro do Episódio: @@ -1726,263 +1766,263 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t &Exportar... - + Matches articles based on episode filter. Combina artigos baseado no filtro dos episódios. - + Example: Exemplo: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match combinará nos episódios 2, 5, 8 até 15, 30 e dos episódios posteriores da temporada um - + Episode filter rules: Regras do filtro dos episódios: - + Season number is a mandatory non-zero value O número da temporada é um valor obrigatório não-zero - + Filter must end with semicolon O filtro deve terminar com ponto e vírgula - + Three range types for episodes are supported: Três tipos de alcance pros episódios são suportados: - + Single number: <b>1x25;</b> matches episode 25 of season one Número único: <b>1x25;</b> combina com o episódio 25 da temporada um - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Alcance normal: <b>1x25-40;</b> combina com os episódios 25 até 40 da temporada um - + Episode number is a mandatory positive value O número do episódio é um valor positivo obrigatório - + Rules Regras - + Rules (legacy) Regras (legado) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Alcance infinito: <b>1x25-;</b> combina com os episódios 25 e acima da temporada um e todos os episódios das temporadas posteriores - + Last Match: %1 days ago Última combinação: %1 dias atrás - + Last Match: Unknown Última combinação: desconhecida - + New rule name Nome da nova regra - + Please type the name of the new download rule. Por favor digite o nome da nova regra de download. - - + + Rule name conflict Conflito do nome da regra - - + + A rule with this name already exists, please choose another name. Uma regra com este nome já existe, por favor escolha outro nome. - + Are you sure you want to remove the download rule named '%1'? Você tem certeza que você quer remover a regra do download chamada "%1"? - + Are you sure you want to remove the selected download rules? Você tem certeza que você quer remover as regras de download selecionadas? - + Rule deletion confirmation Confirmação de exclusão da regra - + Invalid action Ação inválida - + The list is empty, there is nothing to export. A lista está vazia, não há nada pra exportar. - + Export RSS rules Exportar regras do RSS - + I/O Error Erro de E/S - + Failed to create the destination file. Reason: %1 Falhou em criar o arquivo de destino. Motivo: %1 - + Import RSS rules Importar regras do RSS - + Failed to import the selected rules file. Reason: %1 Falhou em importar o arquivo de regras selecionado. Motivo: %1 - + Add new rule... Adicionar nova regra... - + Delete rule Apagar regra - + Rename rule... Renomear regra... - + Delete selected rules Apagar as regras selecionadas - + Clear downloaded episodes... Limpar episódios baixados... - + Rule renaming Renomear regra - + Please type the new rule name Por favor digite o novo nome da regra - + Clear downloaded episodes Limpar episódios baixados - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Você tem certeza que você quer limpar a lista de episódios baixados da regra selecionada? - + Regex mode: use Perl-compatible regular expressions Modo Regex: usar expressões regulares compatíveis com Perl - - + + Position %1: %2 Posição %1: %2 - + Wildcard mode: you can use Modo wildcard: você pode usar - - + + Import error Erro ao importar - + Failed to read the file. %1 Falha ao ler o arquivo. %1 - + ? to match any single character ? pra combinar com qualquer caractere único - + * to match zero or more of any characters * pra combinar com zero ou mais de quaisquer caracteres - + Whitespaces count as AND operators (all words, any order) Espaços em branco contam como operadores AND (todas as palavras, qualquer ordem) - + | is used as OR operator | é usado como operador OR - + If word order is important use * instead of whitespace. Se as ordem das palavras é importante, use * ao invés de espaço em branco. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Uma expressão com uma cláusula %1 vazia (ex: %2) - + will match all articles. combinará com todos os artigos. - + will exclude all articles. apagará todos os artigos. @@ -2024,53 +2064,58 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Não é possível criar pasta de retomada do torrent: "%1" - + Cannot parse resume data: invalid format Não foi possível analisar os dados de retomada: formato inválido - - + + Cannot parse torrent info: %1 Não foi possível analisar as informações do torrent: %1 - + Cannot parse torrent info: invalid format Não foi possível analisar as informações do torrent: formato inválido - + + Mismatching info-hash detected in resume data + Hash de informações incompatível detectado nos dados de resumo + + + Couldn't save torrent metadata to '%1'. Error: %2. Não pôde salvar os metadados do torrent em '%1'. Erro: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Não foi possível salvar os dados de retomada do torrent para '%1'. Erro: %2. - + Couldn't load torrents queue: %1 Não foi possível carregar a fila de torrents: %1 - + Cannot parse resume data: %1 Não foi possível analisar os dados de retomada: %1 - + Resume data is invalid: neither metadata nor info-hash was found Dados de retomada inválidos: não foram encontrados nem metadados, nem informações do hash - + Couldn't save data to '%1'. Error: %2 Não pôde salvar os dados em '%1'. Erro: %2 @@ -2078,38 +2123,38 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t BitTorrent::DBResumeDataStorage - + Not found. Não encontrado. - + Couldn't load resume data of torrent '%1'. Error: %2 Não foi possível carregar os dados de retomada do torrent '%1'. Erro: %2 - - + + Database is corrupted. O banco de dados está corrompido. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Não foi possível ativar o modo de registro Write-Ahead Logging (WAL). Erro: %1. - + Couldn't obtain query result. Não foi possível obter o resultado da consulta. - + WAL mode is probably unsupported due to filesystem limitations. O modo WAL provavelmente não é suportado devido a limitações do sistema de arquivos. - + Couldn't begin transaction. Error: %1 Não foi possível iniciar a transação. Erro: %1 @@ -2117,22 +2162,22 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Não pôde salvar os metadados do torrent. Erro: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Não foi possível armazenar os dados de retomada do torrent '%1'. Erro: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Não foi possível apagar os dados de retomada do torrent '%1'. Erro: %2 - + Couldn't store torrents queue positions. Error: %1 Não pôde armazenar as posições da fila dos torrents. Erro: %1 @@ -2140,586 +2185,620 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Suporte a Tabela do Hash Distribuído (DHT): %1 - - - - - - - - - + + + + + + + + + ON LIGADO - - - - - - - - - + + + + + + + + + OFF DESLIGADO - - + + Local Peer Discovery support: %1 Suporte a Descoberta de Pares locais: %1 - + Restart is required to toggle Peer Exchange (PeX) support É necessário reiniciar para ativar/desativar o suporte para Troca de Pares (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Falha ao retomar o torrent. Torrent: "%1". Motivo: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Falha ao retomar o torrent: ID de torrent inconsistente detectado. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Dados inconsistentes detectados: a categoria está ausente no arquivo de configuração. A categoria será recuperada, mas suas configurações serão redefinidas para o padrão. Torrent: "%1". Categoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Dados inconsistentes detectados: categoria inválida. Torrent: "%1". Categoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Detectada falta de combinação entre os caminhos do salvamento da categoria recuperada e o caminho de salvamento atual do torrent. O torrent agora foi trocado pro modo Manual. Torrent: "%1". Categoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Dados inconsistentes detectados: a tag está ausente no arquivo de configuração. A tag será recuperada. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Dados inconsistentes detectados: tag inválida. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Detectado evento de despertar do sistema. Reanunciando a todos os rastreadores... - + Peer ID: "%1" ID do par: "%1" - + HTTP User-Agent: "%1" Agente do Usuário HTTP: "%1" - + Peer Exchange (PeX) support: %1 Suporte para Troca de Pares (PeX): %1 - - + + Anonymous mode: %1 Modo anônimo: %1 - - + + Encryption support: %1 Suporte a criptografia: %1 - - + + FORCED FORÇADO - + Could not find GUID of network interface. Interface: "%1" Não foi possível encontrar o GUID da interface de rede. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" Tentando escutar na seguinte lista de endereços de IP: "%1" - + Torrent reached the share ratio limit. O torrent atingiu o limite da proporção de compartimento. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent removido. + Torrent removido. - - - Removed torrent and deleted its content. - Torrent removido e apagado o seu conteúdo. + Torrent removido e apagado o seu conteúdo. - - - Torrent paused. - Torrent pausado. + Torrent pausado. - - - + Super seeding enabled. Super semeadura ativada. - + Torrent reached the seeding time limit. O torrent atingiu o limite de tempo de semeadura. - + Torrent reached the inactive seeding time limit. O torrent atingiu o limite de tempo de seeding inativo. - + Failed to load torrent. Reason: "%1" Falha ao carregar o torrent. Motivo: "%1" - + I2P error. Message: "%1". + I2P error. Message: "%1". + + + + UPnP/NAT-PMP support: ON + Suporte UPnP/NAT-PMP: LIGADO + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Baixando torrent. Por favor, aguarde... Fonte: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Falha ao carregar o torrent. Fonte: "%1". Motivo: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Detectada uma tentativa de adicionar um torrent duplicado. A mesclagem de rastreadores está desativada. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Detectada uma tentativa de adicionar um torrent duplicado. Os rastreadores não podem ser mesclados porque é um torrent privado. Torrent: % 1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Detectada uma tentativa de adicionar um torrent duplicado. Os rastreadores são mesclados de uma nova fonte. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Suporte UPnP/NAT-PMP: LIGADO + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Suporte a UPnP/NAT-PMP: DESLIGADO + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Falha ao exportar o torrent. Torrent: "%1". Destino: "%2". Motivo: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Abortado o salvamento dos dados de retomada. Número de torrents pendentes: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + A mesclagem de rastreadores está desativada + + + + Trackers cannot be merged because it is a private torrent + Os rastreadores não podem ser mesclados pois este é um torrent privado - System network status changed to %1 - e.g: System network status changed to ONLINE - O estado da rede do sistema foi alterado para %1 + + Trackers are merged from new source + Rastreadores mesclados a partir da nova fonte - ONLINE - ON-LINE + + UPnP/NAT-PMP support: OFF + Suporte a UPnP/NAT-PMP: DESLIGADO - OFFLINE - OFF-LINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Falha ao exportar o torrent. Torrent: "%1". Destino: "%2". Motivo: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - A configuração de rede do %1 foi alterada, atualizando a vinculação da sessão + + Aborted saving resume data. Number of outstanding torrents: %1 + Abortado o salvamento dos dados de retomada. Número de torrents pendentes: %1 - + The configured network address is invalid. Address: "%1" O endereço de rede configurado é inválido. Endereço: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Falha ao encontrar o endereço de rede configurado para escutar. Endereço: "%1" - + The configured network interface is invalid. Interface: "%1" A interface da rede configurada é inválida. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Endereço de IP inválido rejeitado enquanto aplicava a lista de endereços de IP banidos. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Adicionado o rastreador ao torrent. Torrent: "%1". Rastreador: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Removido o rastreador do torrent. Torrent: "%1". Rastreador: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" URL da semente adicionada ao torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" URL da semente removida do torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent pausado. Torrent: "%1" + Torrent pausado. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent retomado. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Download do torrent concluído. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Movimentação do torrent cancelada. Torrent: "%1". Fonte: "%2". Destino: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Falha ao enfileirar a movimentação do torrent. Torrent: "%1". Fonte: "%2". Destino: "%3". Motivo: o torrent está sendo movido atualmente para o destino - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Falha ao enfileirar a movimentação do torrent. Torrent: "%1". Fonte: "%2". Destino: "%3". Motivo: ambos os caminhos apontam para o mesmo local - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Enfileirada a movimentação do torrent. Torrent: "%1". Fonte: "%2". Destino: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Iniciando a movimentação do torrent. Torrent: "%1". Destino: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Falha ao salvar a configuração das categorias. Arquivo: "%1". Erro: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Falha ao analisar a configuração das categorias. Arquivo: "%1". Erro: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Download recursivo do arquivo .torrent dentro do torrent. Torrent fonte: "%1". Arquivo: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Falha ao carregar o arquivo .torrent dentro do torrent. Torrent fonte: "%1". Arquivo: "%2". Erro: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Arquivo de filtro dos IPs analisado com sucesso. Número de regras aplicadas: %1 - + Failed to parse the IP filter file Falha ao analisar o arquivo de filtro de IPs - + Restored torrent. Torrent: "%1" Torrent restaurado. Torrent: "%1" - + Added new torrent. Torrent: "%1" Novo torrent adicionado. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent com erro. Torrent: "%1". Erro: "%2" - - Removed torrent. Torrent: "%1" - Torrent removido. Torrent: "%1" + Torrent removido. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent removido e apagado o seu conteúdo. Torrent: "%1" + Torrent removido e apagado o seu conteúdo. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Os parâmetros SSL do torrent estão faltando. Torrent: "%1". Mensagem: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Alerta de erro de arquivo. Torrent: "%1". Arquivo: "%2". Motivo: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Falha ao mapear portas UPnP/NAT-PMP. Mensagem: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Êxito ao mapear portas UPnP/NAT-PMP. Mensagem: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtro de IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). porta filtrada (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). porta privilegiada (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent session encountered a serious error. Reason: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Erro de proxy SOCKS5. Endereço: %1. Mensagem: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restrições do modo misto - + Failed to load Categories. %1 Falha ao carregar as categorias. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Falha ao carregar a configuração das categorias. Arquivo: "%1". Erro: "Formato inválido dos dados" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent removido, mas ocorreu uma falha ao excluir o seu conteúdo e/ou arquivo parcial. Torrent: "%1". Erro: "%2" + Torrent removido, mas ocorreu uma falha ao excluir o seu conteúdo e/ou arquivo parcial. Torrent: "%1". Erro: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 está desativado - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 está desativado - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Falha ao buscar DNS do URL da semente. Torrent: "%1". URL: "%2". Erro: "%3" + Falha ao buscar DNS do URL da semente. Torrent: "%1". URL: "%2". Erro: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Mensagem de erro recebida do URL da semente. Torrent: "%1". URL: "%2". Mensagem: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Êxito ao escutar no IP. IP: "%1". Porta: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Falha ao escutar o IP. IP: "%1". Porta: "%2/%3". Motivo: "%4" - + Detected external IP. IP: "%1" Detectado IP externo. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Erro: a fila de alertas internos está cheia e os alertas foram descartados, você pode experienciar uma desempenho baixo. Tipos de alerta descartados: "%1". Mensagem: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent movido com sucesso. Torrent: "%1". Destino: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Falha ao mover o torrent. Torrent: "%1". Fonte: "%2". Destino: "%3". Motivo: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operação abortada - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Falhou em criar um novo arquivo torrent. Motivo: %1. + + Failed to start seeding. + Falha ao iniciar a semear. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operação abortada + Operação abortada + + Create new torrent file failed. Reason: %1. - Falhou em criar um novo arquivo torrent. Motivo: %1. + Falhou em criar um novo arquivo torrent. Motivo: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Falhou em adicionar o par "%1" ao torrent "%2". Motivo: %3 - + Peer "%1" is added to torrent "%2" O par "%1" foi adicionado ao torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Dados inesperados detectados. Torrent: %1. Dados: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Não foi possível salvar no arquivo. Motivo: "%1". O torrent agora está no modo "somente upload". - + Download first and last piece first: %1, torrent: '%2' Baixar primeiro os primeiros e os últimos pedaços: %1, torrent: '%2' - + On Ligado - + Off Desligado - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Falha ao recarregar o torrent. Torrent: %1. Motivo: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Falha ao gerar dados de resumo. Torrent: "%1". Motivo: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Falha ao restaurar o torrent. Os arquivos provavelmente foram movidos ou o armazenamento não está acessível. Torrent: "%1". Motivo: "%2" - + Missing metadata Metadados faltando - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Falhou em renomear o arquivo. Torrent: "%1", arquivo: "%2", motivo: "%3" - + Performance alert: %1. More info: %2 Alerta de performance: %1. Mais informações: %2 @@ -2740,184 +2819,198 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' O parâmetro '%1' deve seguir a sintaxe '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' O parâmetro '%1' deve seguir a sintaxe '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Número inteiro esperado na variável do ambiente '%1', mas obteve '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - O parâmetro '%1' deve seguir a sintaxe '%1=%2' + O parâmetro '%1' deve seguir a sintaxe '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Esperava %1 na variável do ambiente '%2', mas obteve '%3' - - + + %1 must specify a valid port (1 to 65535). %1 deve especificar uma porta válida (De 1 até 65535). - + Usage: Uso: - + [options] [(<filename> | <url>)...] [opções] [(<filename> | <url>)...] - + Options: Opções: - + Display program version and exit Exibe a versão do programa e sai - + Display this help message and exit Exibe esta mensagem de ajuda e sai - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + O parâmetro '%1' deve seguir a sintaxe '%1=%2' + + + + Confirm the legal notice + Confirme o aviso legal + + + + port porta - - Change the Web UI port - Muda a porta da interface de usuário da web + + Change the WebUI port + Alterar a porta WebUI - + Change the torrenting port Alterar a porta de torrent - + Disable splash screen Desativar a tela de inicialização - + Run in daemon-mode (background) Executar no modo-daemon (em 2o plano) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Armazenar os arquivos de configuração em <dir> - - + + name nome - + Store configuration files in directories qBittorrent_<name> Armazenar os arquivos de configuração nos diretórios do qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Acessar os arquivos de retomada rápida do libtorrent e criar caminhos de arquivos relativos ao diretório do perfil - + files or URLs arquivos ou URLs - + Download the torrents passed by the user Baixa os torrents passados pelo usuário - + Options when adding new torrents: Opções quando adicionar novos torrents: - + path caminho - + Torrent save path Caminho de salvamento do torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Adicionar torrents como iniciados ou pausados + Adicionar torrents como iniciados ou pausados - + Skip hash check Ignorar a verificação do hash - + Assign torrents to category. If the category doesn't exist, it will be created. Atribui os torrents a uma categoria. Se a categoria não existir ela será criada. - + Download files in sequential order Baixar arquivos em ordem sequencial - + Download first and last pieces first Baixar os primeiros e os últimos pedaços primeiro - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Especifica se o diálogo "Adicionar Novo Torrent" abre quando adicionar um torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Os valores das opções podem ser supridos via variáveis do ambiente. Para a opção chamada 'parameter-name', o nome da variável do ambiente é 'QBT_PARAMETER_NAME' (em maiúsculas, '-' substituído por '_'). Pra passar os valores da bandeira, defina a variável como '1' ou 'TRUE'. Por exemplo, pra desativar a tela de inicialização: - + Command line parameters take precedence over environment variables Os parâmetros da linha de comando têm precedência sobre as variáveis do ambiente - + Help Ajuda @@ -2925,17 +3018,17 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t CategoryFilterModel - + Categories Categorias - + All Tudo - + Uncategorized Sem categoria @@ -2969,13 +3062,21 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t - Resume torrents - Retomar torrents + Start torrents + + Stop torrents + + + + Resume torrents + Retomar torrents + + Pause torrents - Pausar torrents + Pausar torrents @@ -2986,15 +3087,20 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t ColorWidget - + Edit... Editar... - + Reset Resetar + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t CustomThemeSource - + Failed to load custom theme style sheet. %1 Falha ao carregar a folha de estilo do tema personalizado. %1 - + Failed to load custom theme colors. %1 Falha ao carregar as cores do tema personalizado. %1 @@ -3048,7 +3154,7 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t DefaultThemeSource - + Failed to load default theme colors. %1 Falha ao carregar as cores do tema padrão. %1 @@ -3067,23 +3173,27 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t + Also remove the content files + + + Also permanently delete the files - Também excluir permanentemente os arquivos + Também excluir permanentemente os arquivos - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Deseja realmente remover '%1' da lista de transferências? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Deseja realmente remover os %1 torrents selecionados da lista de transferências? - + Remove Remover @@ -3096,12 +3206,12 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t Baixar das URLs - + Add torrent links Adicionar links dos torrents - + One link per line (HTTP links, Magnet links and info-hashes are supported) Um link por linha (links HTTP, links magnéticos e hashes das informações são suportados) @@ -3111,12 +3221,12 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t Download - + No URL entered Nenhuma URL inserida - + Please type at least one URL. Por favor digite pelo menos uma URL. @@ -3275,64 +3385,91 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t Erro de análise: O arquivo de filtro não é um arquivo P2B válido do PeerGuardian. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Baixando torrent... Fonte: "%1" - Trackers cannot be merged because it is a private torrent - + Os rastreadores não podem ser mesclados pois este é um torrent privado - + Torrent is already present - O torrent já está presente + O torrent já está presente + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - O torrent '%1' já existe na lista de transferências. Deseja unir os rastreadores da nova fonte? + O torrent '%1' já existe na lista de transferências. Deseja unir os rastreadores da nova fonte? GeoIPDatabase - - + + Unsupported database file size. Tamanho do arquivo do banco de dados não suportado. - + Metadata error: '%1' entry not found. Erro dos metadados: Entrada '%1' não encontrada. - + Metadata error: '%1' entry has invalid type. Erro dos metadados: A entrada '%1' tem um tipo inválido. - + Unsupported database version: %1.%2 Versão do banco de dados não suportada: %1.%2 - + Unsupported IP version: %1 Versão do IP não suportada: %1 - + Unsupported record size: %1 Tamanho de gravação não suportado: %1 - + Database corrupted: no data section found. Banco de dados corrompido: nenhuma seção de dados achada. @@ -3340,17 +3477,17 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 O tamanho da requisição do HTTP excede o limite, fechando o soquete. Limite: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Requisição ruim do HTTP, fechando o soquete. IP: %1. Método: "%2" - + Bad Http request, closing socket. IP: %1 Requisição ruim do HTTP, fechando o soquete. IP: %1 @@ -3391,36 +3528,64 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t IconWidget - + Browse... Procurar... - + Reset Resetar - + Select icon Selecione o ícone - + Supported image files Arquivos de imagem suportados + + LegalNotice + + + Legal Notice + Noticia legal + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + O qBittorrent é um programa de compartilhamento de arquivos. Quando você executa um torrent seus dados serão tornados disponíveis para os outros por meio do upload. Qualquer conteúdo que você compartilha é de sua inteira responsabilidade. + + + + No further notices will be issued. + Nenhuma nota adicional será emitida. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Se você leu o aviso legal, você pode usar a opção de linha de comando `--confirm-legal-notice` para suprimir esta mensagem. + + + + Press 'Enter' key to continue... + Pressione 'Enter' para continuar... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 foi bloqueado. Motivo: %2. - + %1 was banned 0.0.0.0 was banned %1 foi banido @@ -3429,91 +3594,62 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Os formatos de data t Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 é um parâmetro desconhecido da linha de comando. - - + + %1 must be the single command line parameter. %1 deve ser o único parâmetro da linha de comando. - - You cannot use %1: qBittorrent is already running for this user. - Você não pode usar o %1: o qBittorrent já está em execução pra este usuário. - - - + Run application with -h option to read about command line parameters. Execute o aplicativo com a opção -h pra ler sobre os parâmetros da linha de comando. - + Bad command line Linha de comando ruim - + Bad command line: Linha de comando ruim: - + An unrecoverable error occurred. - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Nota Legal - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - O qBittorrent é um programa de compartilhamento de arquivos. Quando você executa um torrent seus dados serão tornados disponíveis para os outros por meio do upload. Qualquer conteúdo que você compartilha é de sua inteira responsabilidade. - - - - No further notices will be issued. - Nenhuma nota adicional será emitida. - - - - Press %1 key to accept and continue... - Pressione a tecla %1 pra aceitar e continuar... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - O qBittorrent é um programa de compartilhamento de arquivos. Quando você executa um torrent seus dados serão tornados disponíveis aos outros por meio do upload. Qualquer conteúdo que você compartilha é de sua inteira responsabilidade. - -Nenhuma nota adicional será emitida. + + You cannot use %1: qBittorrent is already running. + Você não pode usar o %1: o qBittorrent já está em execução. - - Legal notice - Nota legal + + Another qBittorrent instance is already running. + Uma outra instância do qBittorrent já está em execução. - - Cancel - Cancelar + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Encontrada uma instância inesperada do qBittorrent. Saindo desta instância. ID do processo atual: %1. - - I Agree - Eu concordo + + Error when daemonizing. Reason: "%1". Error code: %2. + Erro ao daemonizar. Motivo: "%1". Código de erro: %2. @@ -3524,621 +3660,706 @@ Nenhuma nota adicional será emitida. &Editar - + &Tools &Ferramentas - + &File &Arquivo - + &Help &Ajuda - + On Downloads &Done Com os &Downloads Concluídos - + &View &Visualizar - + &Options... &Opções... - &Resume - &Retomar + &Retomar - + &Remove &Remover - + Torrent &Creator Criador de &Torrents - - + + Alternative Speed Limits Limites de Velocidade Alternativos - + &Top Toolbar &Barra de Ferramentas no Topo - + Display Top Toolbar Exibir Barra de Ferramentas no Topo - + Status &Bar Barra de &Status - + Filters Sidebar Barra Lateral dos Filtros - + S&peed in Title Bar V&elocidade na Barra Título - + Show Transfer Speed in Title Bar Mostrar Velocidade de Transferência na Barra Título - + &RSS Reader &Leitor de RSS - + Search &Engine Motor de &Busca - + L&ock qBittorrent T&ravar o qBittorrent - + Do&nate! Do&ar! - + + Sh&utdown System + + + + &Do nothing &Não fazer nada - + Close Window Fechar Janela - R&esume All - R&etomar Todos + R&etomar Todos - + Manage Cookies... Gerenciar Cookies... - + Manage stored network cookies Gerenciar cookies armazenados da rede - + Normal Messages Mensagens normais - + Information Messages Mensagens de informação - + Warning Messages Mensagens de aviso - + Critical Messages Mensagens críticas - + &Log &Log - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Definir limites globais de velocidade... - + Bottom of Queue Final da fila - + Move to the bottom of the queue Mover para o final da fila - + Top of Queue Topo da fila - + Move to the top of the queue Mover para o topo da fila - + Move Down Queue Mover pra baixo na fila - + Move down in the queue Mover pra baixo na fila - + Move Up Queue Mover pra cima na fila - + Move up in the queue Mover pra cima na fila - + &Exit qBittorrent &Sair do qBittorrent - + &Suspend System &Suspender o sistema - + &Hibernate System &Hibernar o sistema - S&hutdown System - D&esligar o sistema + D&esligar o sistema - + &Statistics &Estatísticas - + Check for Updates Procurar atualizações - + Check for Program Updates Procurar atualizações do programa - + &About &Sobre - &Pause - &Pausar + &Pausar - P&ause All - P&ausar Todos + P&ausar Todos - + &Add Torrent File... &Adicionar arquivo torrent... - + Open Abrir - + E&xit S&air - + Open URL Abrir URL - + &Documentation &Documentação - + Lock Travar - - - + + + Show Mostrar - + Check for program updates Procurar atualizações do programa - + Add Torrent &Link... Adicionar Link do &Torrent... - + If you like qBittorrent, please donate! Se você gosta do qBittorrent, por favor, doe! - - + + Execution Log Log da Execução - + Clear the password Limpar a senha - + &Set Password &Definir senha - + Preferences Preferências - + &Clear Password &Limpar senha - + Transfers Transferências - - + + qBittorrent is minimized to tray O qBittorrent está minimizado no tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. Este comportamento pode ser mudado nas configurações. Você não será lembrado de novo. - + Icons Only Só ícones - + Text Only Só texto - + Text Alongside Icons Texto junto dos ícones - + Text Under Icons Texto sob os ícones - + Follow System Style Seguir estilo do sistema - - + + UI lock password Senha da tranca da IU - - + + Please type the UI lock password: Por favor digite a senha da tranca da IU: - + Are you sure you want to clear the password? Você tem certeza que você quer limpar a senha? - + Use regular expressions Usar expressões regulares - - Search - Busca + + + Search Engine + Motor de Busca - - Transfers (%1) - Transferências (%1) + + Search has failed + A busca falhou - Recursive download confirmation - Confirmação do download recursivo + + Search has finished + A busca foi concluída - Never - Nunca + + Search + Busca + + + + Transfers (%1) + Transferências (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. O qBittorrent foi atualizado e precisa ser reiniciado para as mudanças serem efetivas. - + qBittorrent is closed to tray O qBittorrent está fechado no tray - + Some files are currently transferring. Alguns arquivos estão atualmente sendo transferidos. - + Are you sure you want to quit qBittorrent? Você tem certeza que você quer sair do qBittorrent? - + &No &Não - + &Yes &Sim - + &Always Yes &Sempre sim - + Options saved. Opções salvas. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - - Missing Python Runtime - Runtime do python ausente + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 - + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + + Missing Python Runtime + Runtime do python ausente + + + qBittorrent Update Available Atualização do qBittorent disponível - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? O Python é requerido pra usar o motor de busca mas ele não parece estar instalado. Você quer instalá-lo agora? - + Python is required to use the search engine but it does not seem to be installed. O Python é requerido pra usar o motor de busca mas ele não parece estar instalado. - - + + Old Python Runtime Runtime do python antigo - + A new version is available. Uma nova versão está disponível. - + Do you want to download %1? Você quer baixar o %1? - + Open changelog... Abrir changelog... - + No updates available. You are already using the latest version. Não há atualizações disponíveis. Você já está usando a versão mais recente. - + &Check for Updates &Procurar atualizações - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? A sua versão do Python (%1) está desatualizada. Requerimento mínimo: %2. Você quer instalar uma versão mais nova agora? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. A sua versão do Python (%1) está desatualizada. Por favor atualize pra versão mais recente pras engines de busca funcionarem. Requerimento mínimo: %2. - + + Paused + Pausado + + + Checking for Updates... Procurar atualizações... - + Already checking for program updates in the background Já procurando por atualizações do programa em segundo plano - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Erro do download - Python setup could not be downloaded, reason: %1. Please install it manually. - A instalação do Python não pôde ser baixada, motivo: %1. + A instalação do Python não pôde ser baixada, motivo: %1. Por favor instale-o manualmente. - - + + Invalid password Senha inválida - + Filter torrents... Filtrar torrents... - + Filter by: Filtrar por: - + The password must be at least 3 characters long A senha deve ter pelo menos 3 caracteres - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - O torrent '%1' contém arquivos .torrent, deseja continuar com o download deles? - - - + The password is invalid A senha é inválida - + DL speed: %1 e.g: Download speed: 10 KiB/s Velocidade de download: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Velocidade de upload: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Esconder - + Exiting qBittorrent Saindo do qBittorrent - + Open Torrent Files Abrir Arquivos Torrent - + Torrent Files Arquivos Torrent @@ -4199,133 +4420,133 @@ Por favor instale-o manualmente. Net::DownloadHandlerImpl - - + + I/O Error: %1 Erro de E/S: %1 - + The file size (%1) exceeds the download limit (%2) O tamanho do arquivo (%1) excede o limite de download (%2) - + Exceeded max redirections (%1) Máximo de redirecionamentos excedido (%1) - + Redirected to magnet URI Redirecionado para URI magnético - + The remote host name was not found (invalid hostname) O nome do servidor remoto não foi encontrado (nome do servidor inválido) - + The operation was canceled A operação foi cancelada - + The remote server closed the connection prematurely, before the entire reply was received and processed O servidor remoto fechou a conexão prematuramente antes que a resposta inteira fosse recebida e processada - + The connection to the remote server timed out A conexão com o servidor remoto atingiu o tempo limite - + SSL/TLS handshake failed O handshake do SSL/TLS falhou - + The remote server refused the connection O servidor remoto recusou a conexão - + The connection to the proxy server was refused A conexão com o servidor proxy foi recusada - + The proxy server closed the connection prematurely O servidor proxy fechou a conexão prematuramente - + The proxy host name was not found O nome do servidor proxy não foi encontrado - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Acabou o tempo da conexão com o proxy ou o proxy não respondeu a tempo a requisição enviada - + The proxy requires authentication in order to honor the request but did not accept any credentials offered O proxy requer autenticação mas não aceitou as credenciais oferecidas - + The access to the remote content was denied (401) O acesso ao conteúdo remoto foi negado (401) - + The operation requested on the remote content is not permitted A operação solicitada no conteúdo remoto não foi permitida - + The remote content was not found at the server (404) O conteúdo remoto não foi encontrado no servidor (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted O servidor remoto requer autenticação para fornecer os dados, mas as credenciais oferecidas não foram aceitas - + The Network Access API cannot honor the request because the protocol is not known A API de Acesso à Rede não pôde honrar o pedido pois o protocolo é desconhecido - + The requested operation is invalid for this protocol A operação solicitada está inválida para este protocolo - + An unknown network-related error was detected Um erro desconhecido relacionado à rede foi detectado - + An unknown proxy-related error was detected Um erro desconhecido relacionado ao proxy foi detectado - + An unknown error related to the remote content was detected Um erro desconhecido relacionado ao conteúdo remoto foi detectado - + A breakdown in protocol was detected Uma pane no protocolo foi detectada - + Unknown error Erro desconhecido @@ -4333,7 +4554,12 @@ Por favor instale-o manualmente. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorando erro do SSL, URL: "%1", erros: "%2" @@ -5705,294 +5931,307 @@ Por favor instale-o manualmente. BitTorrent - + RSS RSS - Web UI - Interface de usuário da web + Interface de usuário da web - + Advanced Avançado - + Customize UI Theme... Personalizar tema da interface... - + Transfer List Lista de Transferência - + Confirm when deleting torrents Confirmar quando apagar torrents - Shows a confirmation dialog upon pausing/resuming all the torrents - Mostra uma caixa de diálogo de confirmação ao pausar/retomar todos os torrents + Mostra uma caixa de diálogo de confirmação ao pausar/retomar todos os torrents - Confirm "Pause/Resume all" actions - Confirmar ações "Pausar/Retomar todos" + Confirmar ações "Pausar/Retomar todos" - + Use alternating row colors In table elements, every other row will have a grey background. Usar cores alternantes nas linhas - + Hide zero and infinity values Ocultar valores zero e infinito - + Always Sempre - Paused torrents only - Só torrents pausados + Só torrents pausados - + Action on double-click Ação do duplo clique - + Downloading torrents: Baixando torrents: - - Start / Stop Torrent - Iniciar / Parar Torrent + Iniciar / Parar Torrent - - + + Open destination folder Abrir pasta de destino - - + + No action Nenhuma ação - + Completed torrents: Torrents completados: - + Auto hide zero status filters Ocultar filtro de status zero - + Desktop Área de trabalho - + Start qBittorrent on Windows start up Iniciar o qBittorrent quando o Windows inicializar - + Show splash screen on start up Mostrar a tela de inicialização ao inicializar - + Confirmation on exit when torrents are active Confirmação ao sair quando os torrents estão ativos - + Confirmation on auto-exit when downloads finish Confirmação ao auto-sair quando os downloads concluírem - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Para definir o qBittorrent como programa padrão ara arquivos .torrent e/ou links magnéticos<br/>você pode usar o diálogo <span style=" font-weight:600;">Programas Padrão</span> do <span style=" font-weight:600;">Painel de Controle</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Layout do conteúdo do torrent: - + Original Original - + Create subfolder Criar sub-pasta - + Don't create subfolder Não criar sub-pasta - + The torrent will be added to the top of the download queue O torrent será adicionado ao início da fila de downloads - + Add to top of queue The torrent will be added to the top of the download queue Adicionar ao início da fila - + When duplicate torrent is being added Quando um torrent duplicado for adicionado - + Merge trackers to existing torrent Mesclar rastreadores ao torrent existente - + + Keep unselected files in ".unwanted" folder + Manter arquivos não selecionados na pasta ".unwanted" + + + Add... Adicionar... - + Options.. Opções.. - + Remove Remover - + Email notification &upon download completion Notificação por e-mail &ao completar o download - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protocolo de conexão com os pares: - + Any Qualquer um - + I2P (experimental) I2P (experimental) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Se o &quot;modo misto&quot; estiver habilitado, torrents I2P terão permissão para acessar pares de outras fontes além do rastreador e conectar com IPs regulares, não fornecendo nenhum anonimato. Isso pode ser útil caso o usuário não esteja interessado no anonimato do I2P mas ainda deseje a possibilidade de se conectar a pares I2P.</p></body></html> + <html><head/><body><p>Se o &quot;modo misto&quot; estiver habilitado, torrents I2P terão permissão para acessar pares de outras fontes além do rastreador e conectar com IPs regulares, não fornecendo nenhum anonimato. Isso pode ser útil caso o usuário não esteja interessado no anonimato do I2P mas ainda deseje a possibilidade de se conectar a pares I2P.</p></body></html> - + Mixed mode Modo misto - + Some options are incompatible with the chosen proxy type! Algumas opções são incompatíveis com o tipo de proxy escolhido! - + If checked, hostname lookups are done via the proxy Se marcado, as pesquisas de nome de servidor são feitas por meio do proxy - + Perform hostname lookup via proxy Realize a consulta de hostname via proxy - + Use proxy for BitTorrent purposes Use proxy para fins de BitTorrent - + RSS feeds will use proxy Os feeds RSS irão usar proxy - + Use proxy for RSS purposes Usar proxy para fins de RSS - + Search engine, software updates or anything else will use proxy Mecanismo de pesquisa, atualizações de software ou qualquer outra coisa usará proxy - + Use proxy for general purposes Usar proxy para fins gerais - + IP Fi&ltering Filtra&gem dos IPs - + Schedule &the use of alternative rate limits Agendar &o uso de limites alternativos das taxas - + From: From start time De: - + To: To end time Até: - + Find peers on the DHT network Achar pares na rede DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Requer encriptação: Só conectar com os pares com encriptação do protocolo Desativar encriptação: Só conectar com os pares sem encriptação do protocolo - + Allow encryption Permitir encriptação - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mais informações</a>) - + Maximum active checking torrents: Máximo de torrents ativos em verificação: - + &Torrent Queueing &Torrents na Fila - + When total seeding time reaches Quando o tempo total de semeadura for atingido - + When inactive seeding time reaches Quando o tempo inativo de semeadura for atingido - A&utomatically add these trackers to new downloads: - A&dicionar automaticamente estes rastreadores aos novos downloads: + A&dicionar automaticamente estes rastreadores aos novos downloads: - + RSS Reader Leitor do RSS - + Enable fetching RSS feeds Ativar a busca de feeds do RSS - + Feeds refresh interval: Intervalo de atualização dos feeds: - + + Same host request delay: + Atraso na solicitação do mesmo host: + + + Maximum number of articles per feed: Número máximo de artigos por feed: - - - + + + min minutes min - + Seeding Limits Limites de Semeadura - Pause torrent - Pausar torrent + Pausar torrent - + Remove torrent Remover torrent - + Remove torrent and its files Remover o torrent e seus arquivos - + Enable super seeding for torrent Ativar super semeadura para o torrent - + When ratio reaches Quando a proporção alcançar - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Auto-Baixador de Torrents do RSS - + Enable auto downloading of RSS torrents Ativar auto-download dos torrents do RSS - + Edit auto downloading rules... Editar regras de auto-download... - + RSS Smart Episode Filter Filtro inteligente de episódios do RSS - + Download REPACK/PROPER episodes Baixar episódios REPACK/PROPER - + Filters: Filtros: - + Web User Interface (Remote control) Interface de Usuário da Web (Controle remoto) - + IP address: Endereço de IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Especifique um endereço IPv4 ou IPv6. Você pode especificar "0.0.0.0" "::" pra qualquer endereço IPv6 ou "*" pra ambos IPv4 e IPv6. - + Ban client after consecutive failures: Banir cliente após falhas consecutivas: - + Never Nunca - + ban for: banir por: - + Session timeout: Tempo pra esgotar a sessão: - + Disabled Desativado - Enable cookie Secure flag (requires HTTPS) - Ativar bandeira segura do cookie (requer HTTPS) + Ativar bandeira segura do cookie (requer HTTPS) - + Server domains: Domínios do servidor: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ você deve colocar nomes de domínio usados pelo servidor WebUI. Use ';' pra dividir múltiplas entradas. Pode usar o wildcard '*'. - + &Use HTTPS instead of HTTP &Usar HTTPS ao invés do HTTP - + Bypass authentication for clients on localhost Ignorar autenticação pra clientes no hospedeiro local - + Bypass authentication for clients in whitelisted IP subnets Ignorar autenticação pra clientes em sub-redes com IPs na lista branca - + IP subnet whitelist... Lista branca de sub-redes dos IPs... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Especifique IPs de proxies reversos (ou sub-máscaras, ex.: 0.0.0.0/24) para usar no endereço do cliente encaminhado (atributo X-Forwarded-For). Use ';' pra dividir múltiplas entradas. - + Upda&te my dynamic domain name Atualiz&ar meu nome de domínio dinâmico - + Minimize qBittorrent to notification area Minimizar o qBittorrent na área de notificação - + + Search + Busca + + + + WebUI + + + + Interface Interface - + Language: Idioma: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Estilo do ícone do tray: - - + + Normal Normal - + File association Associação de arquivo - + Use qBittorrent for .torrent files Usar qBittorrent pra arquivos .torrent - + Use qBittorrent for magnet links Usar qBittorrent para links magnéticos - + Check for program updates Procurar atualizações do programa - + Power Management Gerenciamento de Energia - + + &Log Files + + + + Save path: Caminho do salvamento: - + Backup the log file after: Fazer backup do arquivo de log após: - + Delete backup logs older than: Apagar logs de backup mais velhos do que: - + + Show external IP in status bar + + + + When adding a torrent Quando adicionar um torrent - + Bring torrent dialog to the front Trazer o diálogo do torrent para a frente - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Também apagar arquivos .torrent cuja adição foi cancelada - + Also when addition is cancelled Também quando a adição for cancelada - + Warning! Data loss possible! Aviso! Perda de dados possível! - + Saving Management Gerenciamento do salvamento - + Default Torrent Management Mode: Modo de gerenciamento padrão dos torrents: - + Manual Manual - + Automatic Automático - + When Torrent Category changed: Quando a categoria do torrent for mudada: - + Relocate torrent Re-alocar torrent - + Switch torrent to Manual Mode Trocar o torrent pro modo manual - - + + Relocate affected torrents Re-alocar torrents afetados - - + + Switch affected torrents to Manual Mode Trocar os torrents afetados pro modo manual - + Use Subcategories Usar sub-categorias - + Default Save Path: Caminho padrão do salvamento: - + Copy .torrent files to: Copiar os arquivos .torrent pra: - + Show &qBittorrent in notification area Mostrar o &qBittorrent na área de notificação - &Log file - &Arquivo do log + &Arquivo do log - + Display &torrent content and some options Exibir &conteúdo do torrent e algumas opções - + De&lete .torrent files afterwards Ap&agar os arquivos .torrent mais tarde - + Copy .torrent files for finished downloads to: Copiar os arquivos .torrent dos downloads concluídos para: - + Pre-allocate disk space for all files Pré-alocar espaço em disco pra todos os arquivos - + Use custom UI Theme Usar tema personalizado da interface do usuário - + UI Theme file: Arquivo do tema da interface do usuário: - + Changing Interface settings requires application restart Mudar as configurações da interface requer o reinício do aplicativo - + Shows a confirmation dialog upon torrent deletion Mostra um diálogo de confirmação ao apagar o torrent - - + + Preview file, otherwise open destination folder Pré-visualizar arquivo, de outro modo abrir a pasta de destino - - Show torrent options - Mostrar opções do torrent + Mostrar opções do torrent - + Shows a confirmation dialog when exiting with active torrents Mostra um diálogo de confirmação quando sair com torrents ativos - + When minimizing, the main window is closed and must be reopened from the systray icon Quando minimizar, a janela principal é fechada e deve ser reaberta no ícone do tray - + The systray icon will still be visible when closing the main window O ícone do tray ainda estará visível quando fechar a janela principal - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Fechar o qBittorrent na área de notificação - + Monochrome (for dark theme) Monocromático (pro tema escuro) - + Monochrome (for light theme) Monocromático (pro tema claro) - + Inhibit system sleep when torrents are downloading Inibir o sono do sistema quando os torrents estão baixando - + Inhibit system sleep when torrents are seeding Inibir a suspensão do sistema quando os torrents estão semeando - + Creates an additional log file after the log file reaches the specified file size Cria um arquivo de log adicional após o arquivo de log alcançar o tamanho especificado do arquivo - + days Delete backup logs older than 10 days dias - + months Delete backup logs older than 10 months meses - + years Delete backup logs older than 10 years anos - + Log performance warnings Registrar avisos sobre a performance - The torrent will be added to download list in a paused state - O torrent será adicionado a lista de downloads num estado pausado + O torrent será adicionado a lista de downloads num estado pausado - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Não iniciar o download automaticamente - + Whether the .torrent file should be deleted after adding it Se o arquivo .torrent deve ser apagado após adicioná-lo - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Aloca o tamanho completo dos arquivos no disco antes de iniciar os downloads pra minimizar a fragmentação. Só é útil pra HDDs. - + Append .!qB extension to incomplete files Adicionar a extensão .!qB nos arquivos incompletos - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Quando um torrent é baixado oferece pra adicionar torrents de quaisquer arquivos .torrent achados dentro dele - + Enable recursive download dialog Ativar diálogo de download recursivo - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automático: Várias propriedades do torrent (ex: o caminho do salvamento) serão decididas pela categoria associada Manual: Várias propriedades do torrent (ex: o caminho do salvamento) devem ser atribuídas manualmente - + When Default Save/Incomplete Path changed: Quando o caminho padrão pra Salvar/Incompleto mudar: - + When Category Save Path changed: Quando o caminho do salvamento da categoria for mudado: - + Use Category paths in Manual Mode Usar os caminhos da Categoria no Modo Manual - + Resolve relative Save Path against appropriate Category path instead of Default one Resolver o Caminho de Salvamento relativo contra o Caminho da Categoria apropriado ao invés do caminho Padrão - + Use icons from system theme Usar ícones do tema do sistema - + Window state on start up: Estado da janela ao iniciar: - + qBittorrent window state on start up Estado da janela do qBittorrent ao iniciar - + Torrent stop condition: Condição de parada do torrent: - - + + None Nenhum - - + + Metadata received Metadados recebidos - - + + Files checked Arquivos verificados - + Ask for merging trackers when torrent is being added manually Pedir para mesclar rastreadores quando o torrent estiver sendo adicionado manualmente - + Use another path for incomplete torrents: Usar outro caminho pros torrents incompletos: - + Automatically add torrents from: Adicionar automaticamente torrents de: - + Excluded file names Nomes de arquivos excluídos - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,843 +6994,916 @@ readme.txt: filtra o nome exato do arquivo. readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas não 'readme10.txt'. - + Receiver Receptor - + To: To receiver Até: - + SMTP server: Servidor SMTP: - + Sender Remetente - + From: From sender De: - + This server requires a secure connection (SSL) Este servidor requer uma conexão segura (SSL) - - + + Authentication Autenticação - - - - + + + + Username: Nome de usuário: - - - - + + + + Password: Senha: - + Run external program Executar programa externo - Run on torrent added - Executar ao adicionar o torrent + Executar ao adicionar o torrent - Run on torrent finished - Executar ao concluir o torrent + Executar ao concluir o torrent - + Show console window Mostrar janela do console - + TCP and μTP TCP e μTP - + Listening Port Porta de Escuta - + Port used for incoming connections: Porta usada pra conexões de entrada: - + Set to 0 to let your system pick an unused port Defina em 0 pra deixar seu sistema escolher uma porta não usada - + Random Aleatória - + Use UPnP / NAT-PMP port forwarding from my router Usar abertura de porta UPnP / NAT-PMP do meu roteador - + Connections Limits Limites da Conexão - + Maximum number of connections per torrent: Número máximo de conexões por torrent: - + Global maximum number of connections: Número máximo global de conexões: - + Maximum number of upload slots per torrent: Número máximo de slots de upload por torrent: - + Global maximum number of upload slots: Número global máximo de slots de upload: - + Proxy Server Servidor Proxy - + Type: Tipo: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Hospedeiro: - - - + + + Port: Porta: - + Otherwise, the proxy server is only used for tracker connections De outro modo o servidor proxy só é usado pra conexões com o rastreador - + Use proxy for peer connections Usar proxy pra conexões com os pares - + A&uthentication A&utenticação - + Info: The password is saved unencrypted Info: A senha é salva desencriptada - + Filter path (.dat, .p2p, .p2b): Caminho do filtro (.dat, .p2p, .p2b): - + Reload the filter Recarregar o filtro - + Manually banned IP addresses... Endereços de IP banidos manualmente... - + Apply to trackers Aplicar aos rastreadores - + Global Rate Limits Limites Globais da Taxa - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Upload: - - + + Download: Download: - + Alternative Rate Limits Limites Alternativos da Taxa - + Start time Hora do início - + End time Hora do término - + When: Quando: - + Every day Todo dia - + Weekdays Dias da semana - + Weekends Finais de semana - + Rate Limits Settings Configurações dos Limites da Taxa - + Apply rate limit to peers on LAN Aplicar limite da taxa aos pares na LAN - + Apply rate limit to transport overhead Aplicar limite da taxa a sobrecarga do transporte - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Aplicar limite da taxa ao protocolo µTP - + Privacy Privacidade - + Enable DHT (decentralized network) to find more peers Ativar DHT (rede decentralizada) pra achar mais pares - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Trocar pares com clientes Bittorrent compatíveis (µTorrent, Vuze...) - + Enable Peer Exchange (PeX) to find more peers Ativar Troca de Pares (PeX) pra achar mais pares - + Look for peers on your local network Procurar pares na sua rede local - + Enable Local Peer Discovery to find more peers Ativar descoberta de pares locais pra achar mais pares - + Encryption mode: Modo de encriptação: - + Require encryption Requer encriptação - + Disable encryption Desativar encriptação - + Enable when using a proxy or a VPN connection Ativar quando usar um proxy ou uma conexão VPN - + Enable anonymous mode Ativar modo anônimo - + Maximum active downloads: Máximo de downloads ativos: - + Maximum active uploads: Máximo de uploads ativos: - + Maximum active torrents: Máximo de torrents ativos: - + Do not count slow torrents in these limits Não contar torrents lentos nestes limites - + Upload rate threshold: Limite da taxa de upload: - + Download rate threshold: Limite da taxa de download: - - - + + + + sec seconds seg - + Torrent inactivity timer: Cronômetro da inatividade do torrent: - + then então - + Use UPnP / NAT-PMP to forward the port from my router Usar UPnP / NAT-PMP pra abrir a porta do meu roteador - + Certificate: Certificado: - + Key: Chave: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informações sobre certificados</a> - + Change current password Mudar a senha atual - Use alternative Web UI - Usar interface alternativa de usuário da web + Usar interface alternativa de usuário da web - + Files location: Local dos arquivos: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Segurança - + Enable clickjacking protection Ativar proteção contra clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Ativar proteção contra falsificação de requisição de sites cruzados (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Ativar validação de cabeçalho do hospedeiro - + Add custom HTTP headers Adicionar cabeçalhos HTTP personalizados - + Header: value pairs, one per line Cabeçalho: pares de valores, um por linha - + Enable reverse proxy support Ativar suporte pro proxy reverso - + Trusted proxies list: Lista de proxies confiáveis: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Serviço: - + Register Registrar - + Domain name: Nome do domínio: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Ao ativar estas opções, você pode <strong>perder irremediavelmente</strong> seus arquivos .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Se você ativar a segunda opção (&ldquo;Também quando a adição for cancelada&rdquo;) o arquivo .torrent <strong>será apagado</strong> mesmo se você pressionar &ldquo;<strong>Cancelar</strong>&rdquo; no diálogo &ldquo;Adicionar torrent&rdquo; - + Select qBittorrent UI Theme file Selecione o arquivo do tema da interface do usuário do qBittorrent - + Choose Alternative UI files location Escolha o local alternativo dos arquivos da interface do usuário - + Supported parameters (case sensitive): Parâmetros suportados (caso sensitivo): - + Minimized Minimizada - + Hidden Oculta - + Disabled due to failed to detect system tray presence Desativado devido a falha ao detectar presença na área de notificação do sistema - + No stop condition is set. Nenhuma condição de parada definida. - + Torrent will stop after metadata is received. O torrent será parado após o recebimento dos metadados. - - Torrents that have metadata initially aren't affected. - Torrents que possuem metadados inicialmente não são afetados. - - - + Torrent will stop after files are initially checked. O torrent será parado após o a verificação inicial dos arquivos. - + This will also download metadata if it wasn't there initially. Isso também fará o download dos metadados, caso não existam inicialmente. - + %N: Torrent name %N: Nome do torrent - + %L: Category %L: Categoria - + %F: Content path (same as root path for multifile torrent) %F: Caminho do conteúdo (o mesmo do caminho raiz pra torrent multi-arquivos) - + %R: Root path (first torrent subdirectory path) %R: Caminho raiz (primeiro caminho do sub-diretório do torrent) - + %D: Save path %D: Caminho do salvamento - + %C: Number of files %C: Número de arquivos - + %Z: Torrent size (bytes) %Z: Tamanho do torrent (bytes) - + %T: Current tracker %T: Rastreador atual - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Dica: Encapsule o parâmetro entre aspas pra evitar que o texto seja cortado nos espaços em branco (ex: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nenhum) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Um torrent será considerado lento se suas taxas de download e upload ficarem abaixo destes valores pelos segundos do "Cronômetro de inatividade do torrent" - + Certificate Certificado - + Select certificate Selecionar certificado - + Private key Chave privada - + Select private key Selecione a chave privada - + + WebUI configuration failed. Reason: %1 + Falha na configuração da WebUI. Motivo: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Selecione a pasta a monitorar - + Adding entry failed Falhou em adicionar a entrada - - Location Error - Erro do local + + The WebUI username must be at least 3 characters long. + O nome de usuário da interface web deve ter pelo menos 3 caracteres. - - The alternative Web UI files location cannot be blank. - O local alternativo dos arquivos da interface de usuário da web não pode estar em branco. + + The WebUI password must be at least 6 characters long. + A senha de interface web deve ter pelo menos 6 caracteres. - - + + Location Error + Erro do local + + + + Choose export directory Escolha o diretório pra exportar - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Quando estas opções estão ativadas o qBittorrent <strong>apagará</strong> os arquivos .torrent após eles serem adicionados com sucesso (a primeira opção) ou não (a segunda opção) nas suas filas de download. Isto será aplicado <strong>não só</strong> nos arquivos abertos via ação pelo menu &ldquo;Adicionar torrent&rdquo;, mas também para aqueles abertos via <strong>associação de tipos de arquivo</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Arquivo do tema da interface do usuário do qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiquetas (separadas por vírgula) - + %I: Info hash v1 (or '-' if unavailable) %I: Informações do hash v1 (ou '-' se indisponível) - + %J: Info hash v2 (or '-' if unavailable) %J: Informações do hash v2 (ou '-' se indisponível) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID do torrent (hash das informações do sha-1 pro torrent v1 ou hash das informações do sha-256 truncadas pra torrent v2/híbrido) - - - + + + Choose a save directory Escolha um diretório pra salvar - + + Torrents that have metadata initially will be added as stopped. + Torrents que possuem metadados inicialmente serão adicionados como parados. + + + Choose an IP filter file Escolha um arquivo de filtro de IP - + All supported filters Todos os filtros suportados - + + The alternative WebUI files location cannot be blank. + O local alternativo dos arquivos da interface web não pode estar em branco. + + + Parsing error Erro de análise - + Failed to parse the provided IP filter Falhou em analisar o filtro de IP fornecido - + Successfully refreshed Atualizado com sucesso - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Analisou com sucesso o filtro de IP fornecido: %1 regras foram aplicadas. - + Preferences Preferências - + Time Error Erro do Tempo - + The start time and the end time can't be the same. A hora de início e a hora do término não podem ser as mesmas. - - + + Length Error Erro de Comprimento - - - The Web UI username must be at least 3 characters long. - O nome de usuário da interface de usuário da web deve ter pelo menos 3 caracteres de comprimento. - - - - The Web UI password must be at least 6 characters long. - A senha da interface de usuário da web deve ter pelo menos 6 caracteres de comprimento. - PeerInfo - + Unknown Desconhecido - + Interested (local) and choked (peer) Interessados​ ​(locais) e paralisados (pares) - + Interested (local) and unchoked (peer) Interessados (locais) e não paralisados (pares) - + Interested (peer) and choked (local) Interessados (pares) e paralisados (locais) - + Interested (peer) and unchoked (local) Interessados (pares) e não paralisados (locais) - + Not interested (local) and unchoked (peer) Não interessados (locais) e não paralisados (pares) - + Not interested (peer) and unchoked (local) Não interessados (pares) e não paralisados (locais) - + Optimistic unchoke Não paralisado otimista - + Peer snubbed Par esnobado - + Incoming connection Conexão de entrada - + Peer from DHT Par do DHT - + Peer from PEX Par do PEX - + Peer from LSD Par do LSD - + Encrypted traffic Tráfego criptografado - + Encrypted handshake Handshake criptografado - - + + + Peer is using NAT hole punching + + + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n O Par "%1" foi banido manualmente - + N/A N/D @@ -7668,7 +8080,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n Lista de pares pra adicionar (um IP por linha): - + Format: IPv4:port / [IPv6]:port Formato: IPv4:porta / [IPv6]:porta @@ -7709,27 +8121,27 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n PiecesBar - + Files in this piece: Arquivos neste pedaço: - + File in this piece: Arquivo neste pedaço: - + File in these pieces: Arquivo nestes pedaços: - + Wait until metadata become available to see detailed information Aguarde até que os metadados se tornem disponíveis pra ver a informação detalhada - + Hold Shift key for detailed information Pressione a tecla Shift pra informações detalhadas @@ -7742,58 +8154,58 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n Plugins de busca - + Installed search plugins: Plugins de busca instalados: - + Name Nome - + Version Versão - + Url URL - - + + Enabled Ativado - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Aviso: Certifique-se de obedecer as leis de copyright do seu país quando baixar torrents de quaisquer destes motores de busca. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Você pode obter novos plugins de motores de busca aqui: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instalar um novo plugin - + Check for updates Procurar atualizações - + Close Fechar - + Uninstall Desinstalar @@ -7913,17 +8325,17 @@ Esses plugins foram desativados. Fonte do plugin - + Search plugin source: Fonte do plugin de busca: - + Local file Arquivo local - + Web link Link da web @@ -7941,70 +8353,70 @@ Esses plugins foram desativados. Power management found suitable D-Bus interface. Interface: %1 - + O gerenciamento de energia encontrou uma interface D-Bus adequada. Interface: %1 Power management error. Did not found suitable D-Bus interface. - + Erro de gerenciamento de energia. Não foi encontrada uma interface D-Bus adequada. Power management error. Action: %1. Error: %2 - + Erro de gerenciamento de energia. Ação: %1. Erro: %2 Power management unexpected error. State: %1. Error: %2 - + Erro inesperado do gerenciamento de energia. Estado: %1. Erro: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Os seguintes arquivos do torrent "%1" suportam pré-visualização por favor selecione um deles: - + Preview Pré-visualização - + Name Nome - + Size Tamanho - + Progress Progresso - + Preview impossible Pré-visualização impossivel - + Sorry, we can't preview this file: "%1". Lamento, nós não conseguimos pré-visualizar este arquivo: "%1". - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas não ocultas para o tamanho do conteúdo delas @@ -8017,27 +8429,27 @@ Esses plugins foram desativados. Private::FileLineEdit - + Path does not exist O caminho não existe - + Path does not point to a directory O caminho não aponta para uma pasta - + Path does not point to a file O caminho não aponta para um arquivo - + Don't have read permission to path Não tem permissão de leitura para o caminho - + Don't have write permission to path Não tem permissão de escrita para o caminho @@ -8078,12 +8490,12 @@ Esses plugins foram desativados. PropertiesWidget - + Downloaded: Baixados: - + Availability: Disponibilidade: @@ -8098,53 +8510,53 @@ Esses plugins foram desativados. Transferência - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Tempo Ativo: - + ETA: Tempo Restante: - + Uploaded: Enviados: - + Seeds: Sementes: - + Download Speed: Velocidade de download: - + Upload Speed: Velocidade de upload: - + Peers: Pares: - + Download Limit: Limite do download: - + Upload Limit: Limite do upload: - + Wasted: Perdidos: @@ -8154,193 +8566,249 @@ Esses plugins foram desativados. Conexões: - + Information Informação - + Info Hash v1: Informações do Hash v1: - + Info Hash v2: Informações do Hash v2: - + Comment: Comentário: - + Select All Selecionar tudo - + Select None Não selecionar nenhum - + Share Ratio: Proporção do compartilhamento: - + Reannounce In: Reanunciar em: - + Last Seen Complete: Visto completo pela última vez: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Tamanho total: - + Pieces: Pedaços: - + Created By: Criado por: - + Added On: Adicionado em: - + Completed On: Completado em: - + Created On: Criado em: - + + Private: + + + + Save Path: Caminho do salvamento: - + Never Nunca - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (tem %3) - - + + %1 (%2 this session) %1 (%2 nesta sessão) - - + + + N/A N/D - + + Yes + Sim + + + + No + Não + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (semeado por %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 máx.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 em média) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nova semente da Web + Nova semente da Web - Remove Web seed - Remover semente da web + Remover semente da web - Copy Web seed URL - Copiar URL da semente da web + Copiar URL da semente da web - Edit Web seed URL - Editar a URL da semente da web + Editar a URL da semente da web - + Filter files... Filtrar arquivos... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Os gráficos de velocidade estão desativados - + You can enable it in Advanced Options Você pode ativá-lo nas Opções Avançadas - New URL seed New HTTP source - Nova URL da semente + Nova URL da semente - New URL seed: - Nova URL da semente: + Nova URL da semente: - - This URL seed is already in the list. - Essa URL da semente já está na lista. + Essa URL da semente já está na lista. - + Web seed editing Editando a semente da web - + Web seed URL: URL da semente da web: @@ -8359,22 +8827,22 @@ Esses plugins foram desativados. Não pôde salvar os dados do auto-baixador do RSS em %1. Erro: %2 - + Invalid data format Formato inválido dos dados - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... O artigo RSS "%1" é aceito pela regra "%2". Tentando adicionar o torrent... - + Failed to read RSS AutoDownloader rules. %1 Falha ao ler as regras do RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Não pôde carregar as regras do auto-baixador do RSS. Motivo: %1 @@ -8382,22 +8850,22 @@ Esses plugins foram desativados. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Falhou em baixar o feed do RSS em '%1'. Motivo: %2 - + RSS feed at '%1' updated. Added %2 new articles. Feed do RSS em '%1' atualizado. Adicionou %2 novos artigos. - + Failed to parse RSS feed at '%1'. Reason: %2 Falhou em analisar o feed do RSS em '%1'. Motivo: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. O feed do RSS em '%1' foi baixado com sucesso. Começando a analisá-lo. @@ -8433,12 +8901,12 @@ Esses plugins foram desativados. RSS::Private::Parser - + Invalid RSS feed. Feed do RSS inválido. - + %1 (line: %2, column: %3, offset: %4). %1 (linha: %2, coluna: %3, deslocamento: %4). @@ -8446,99 +8914,99 @@ Esses plugins foram desativados. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Não pôde salvar a configuração da sessão do RSS. Arquivo "%1". Erro: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Não pôde salvar os dados da sessão do RSS. Arquivo "%1". Erro: "%2" - - + + RSS feed with given URL already exists: %1. O feed do RSS com a URL dada já existe: %1. - + Feed doesn't exist: %1. O feed não existe: %1. - + Cannot move root folder. Não pôde mover a pasta raiz. - - + + Item doesn't exist: %1. O item não existe: %1. - + Couldn't move folder into itself. Não foi possível mover a pasta para dentro dela. - + Cannot delete root folder. Não pôde apagar a pasta raiz. - + Failed to read RSS session data. %1 Falha ao ler os dados da sessão RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Falha ao analisar os dados da sessão RSS. Arquivo: "%1". Erro: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Falha ao carregar os dados da sessão RSS. Arquivo: "%1". Erro: "Formato de dados inválido." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Não pôde carregar o feed do RSS. Feed: "%1". Motivo: a URL é requerida. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Não pôde carregar o feed do RSS. Feed: "%1". Motivo: UID inválido. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Feed duplicado do RSS encontrado. UID: "%1". Erro: A configuração parece estar corrompida. - + Couldn't load RSS item. Item: "%1". Invalid data format. Não pôde carregar o item do RSS. Item: "%1". Formato inválidos dos dados inválido. - + Corrupted RSS list, not loading it. Lista do RSS corrompida, não irá carregá-la. - + Incorrect RSS Item path: %1. Caminho incorreto do item do RSS: %1. - + RSS item with given path already exists: %1. O item do RSS com o caminho dado já existe: %1. - + Parent folder doesn't exist: %1. A pasta pai não existe: %1. @@ -8562,8 +9030,8 @@ Esses plugins foram desativados. - - + + Mark items read Marcar itens como lidos @@ -8588,132 +9056,132 @@ Esses plugins foram desativados. Torrents: (clique-duplo pra baixar) - - + + Delete Apagar - + Rename... Renomear... - + Rename Renomear - - + + Update Atualizar - + New subscription... Nova subscrição... - - + + Update all feeds Atualizar todos os feeds - + Download torrent Baixar torrent - + Open news URL Abrir novas URLs - + Copy feed URL Copiar URL do feed - + New folder... Nova pasta... - + Edit feed URL... Editar URL do feed... - + Edit feed URL Editar URL do feed - + Please choose a folder name Por favor escolha um nome de pasta - + Folder name: Nome da pasta: - + New folder Nova pasta - - + + Please type a RSS feed URL Por favor digite uma URL de feed do RSS - - + + Feed URL: URL do feed: - + Deletion confirmation Confirmação de exclusão - + Are you sure you want to delete the selected RSS feeds? Você tem certeza que você quer apagar os feeds do RSS selecionados? - + Please choose a new name for this RSS feed Por favor escolha um novo nome pra este feed do RSS - + New feed name: Novo nome do feed: - + Rename failed Falhou em renomear - + Date: Data: - + Feed: - + Feed: - + Author: Autor: @@ -8721,38 +9189,38 @@ Esses plugins foram desativados. SearchController - + Python must be installed to use the Search Engine. O Python deve estar instalado pra usar o Motor de Busca. - + Unable to create more than %1 concurrent searches. Incapaz de criar mais do que %1 buscas simultâneas. - - + + Offset is out of range O deslocamento está fora do alcance - + All plugins are already up to date. Todos os plugins já estão atualizados. - + Updating %1 plugins Atualizando %1 plugins - + Updating plugin %1 Atualizando o plugin %1 - + Failed to check for plugin updates: %1 Falhou em procurar as atualizações dos plugins: %1 @@ -8827,132 +9295,146 @@ Esses plugins foram desativados. Tamanho: - + Name i.e: file name Nome - + Size i.e: file size Tamanho - + Seeders i.e: Number of full sources Semeadores - + Leechers i.e: Number of partial sources Leechers - Search engine - Motor de busca + Motor de busca - + Filter search results... Filtrar resultados da busca... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultados (mostrando <i>%1</i> de <i>%2</i>): - + Torrent names only Só nomes de torrents - + Everywhere Em toda parte - + Use regular expressions Usar expressões regulares - + Open download window Abrir janela de download - + Download Download - + Open description page Abrir página da descrição - + Copy Copiar - + Name Nome - + Download link Link do download - + Description page URL URL da página de descrição - + Searching... Procurando... - + Search has finished A busca foi concluída - + Search aborted Busca abortada - + An error occurred during search... Um erro ocorreu durante a busca... - + Search returned no results A busca não retornou resultados - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilidade da coluna - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas não ocultas para o tamanho do conteúdo delas @@ -8960,104 +9442,104 @@ Esses plugins foram desativados. SearchPluginManager - + Unknown search engine plugin file format. Formato desconhecido do arquivo do plugin do motor de busca. - + Plugin already at version %1, which is greater than %2 O plugin já está na versão: %1, a qual é superior a %2 - + A more recent version of this plugin is already installed. Uma versão mais recente deste plugin já está instalada. - + Plugin %1 is not supported. O plugin %1 não é suportado. - - + + Plugin is not supported. O plugin não é suportado. - + Plugin %1 has been successfully updated. O plugin %1 foi atualizado com sucesso. - + All categories Todas as categorias - + Movies Filmes - + TV shows Shows de TV - + Music Músicas - + Games Jogos - + Anime Animes - + Software Softwares - + Pictures Imagens - + Books Livros - + Update server is temporarily unavailable. %1 O servidor de atualização está temporariamente indisponível. %1 - - + + Failed to download the plugin file. %1 Falhou em baixar o arquivo do plugin. %1 - + Plugin "%1" is outdated, updating to version %2 O plugin "%1" está desatualizado, atualizando para a versão %2 - + Incorrect update info received for %1 out of %2 plugins. Informação de atualização incorreta recebida por %1 de %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') O plugin de busca '%1' contém uma string de versão inválida ('%2') @@ -9067,114 +9549,153 @@ Esses plugins foram desativados. - - - - Search Busca - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Não há quaisquer plugins de busca instalados. Clique no botão "Plugins de busca" na parte inferior direita da janela pra instalar alguns. - + Search plugins... Plugins de busca... - + A phrase to search for. Uma frase a ser procurada. - + Spaces in a search term may be protected by double quotes. Os espaços num termo de busca podem ser protegidos por aspas duplas. - + Example: Search phrase example Exemplo: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: procure por <b>foo bar</b> - + All plugins Todos os plugins - + Only enabled Só ativados - + + + Invalid data format. + Formato inválido dos dados. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: procure por <b>foo</b> e <b>bar</b> - + + Refresh + + + + Close tab Fechar aba - + Close all tabs Fechar todas as abas - + Select... Selecionar... - - - + + Search Engine Motor de Busca - + + Please install Python to use the Search Engine. Por favor instale o Python pra usar o motor de busca. - + Empty search pattern Modelo de busca vazio - + Please type a search pattern first Por favor digite um modelo de busca primeiro - + + Stop Parar - Search has finished - A busca foi concluída + A busca foi concluída - Search has failed - A busca falhou + A busca falhou + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel - + Upload: Upload: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Download: - + Alternative speed limits Limites alternativos de velocidade @@ -9506,32 +10027,32 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel Tempo médio na fila: - + Connected peers: Pares conectados: - + All-time share ratio: Proporção do compartilhamento de todos os tempos: - + All-time download: Download de todos os tempos: - + Session waste: Perdas da sessão: - + All-time upload: Upload de todos os tempos: - + Total buffer size: Tamanho total do buffer: @@ -9546,12 +10067,12 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel Trabalhos de E/S na fila: - + Write cache overload: Sobrecarga do cache da gravação: - + Read cache overload: Sobrecarga do cache de leitura: @@ -9570,51 +10091,67 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel StatusBar - + Connection status: Status da conexão: - - + + No direct connections. This may indicate network configuration problems. Não há conexões diretas. Isto pode indicar problemas na configuração da rede. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nós - + qBittorrent needs to be restarted! O qBittorrent precisa ser reiniciado! - - - + + + Connection Status: Status da conexão: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Offline. Isto geralmente significa que o qBittorrent falhou em escutar a porta selecionada pra conexões de entrada. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Clique pra trocar pros limites alternativos da velocidade - + Click to switch to regular speed limits Clique pra trocar pros limites regulares da velocidade @@ -9643,14 +10180,22 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel Completado (0) - Resumed (0) - Retomado (0) + Retomado (0) - Paused (0) - Pausado (0) + Pausado (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel Completed (%1) Completado (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pausado (%1) + Pausado (%1) @@ -9723,14 +10287,12 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel Movendo (%1) - Resume torrents - Retomar torrents + Retomar torrents - Pause torrents - Pausar torrents + Pausar torrents @@ -9738,9 +10300,8 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel Remover torrents - Resumed (%1) - Retomado (%1) + Retomado (%1) @@ -9781,17 +10342,17 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel TagFilterModel - + Tags Etiquetas - + All Tudo - + Untagged Sem etiqueta @@ -9799,52 +10360,64 @@ Clique no botão "Plugins de busca" na parte inferior direita da janel TagFilterWidget - + Add tag... Adicionar etiqueta... - + Remove tag Remover etiqueta - + Remove unused tags Remover etiquetas não usadas - Resume torrents - Retomar torrents + Retomar torrents - Pause torrents - Pausar torrents + Pausar torrents - + Remove torrents Remover torrents - New Tag - Nova etiqueta + Nova etiqueta + + + + Start torrents + - + + Stop torrents + + + + Tag: Etiqueta: - + + Add tag + + + + Invalid tag name Nome da etiqueta inválido - + Tag name '%1' is invalid O nome da etiqueta '%1' é inválido @@ -9984,32 +10557,32 @@ Por favor escolha um nome diferente e tente de novo. TorrentContentModel - + Name Nome - + Progress Progresso - + Download Priority Prioridade do download - + Remaining Restante - + Availability Disponibilidade - + Total Size Tamanho total @@ -10054,102 +10627,120 @@ Por favor escolha um nome diferente e tente de novo. TorrentContentWidget - + Rename error Erro ao renomear - + Renaming Renomeando - + New name: Novo nome: - + Column visibility Visibilidade da coluna - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas visíveis para o tamanho do conteúdo delas - + Open Abrir - + Open containing folder Abrir pasta de destino - + Rename... Renomear... - + Priority Prioridade - - + + Do not download Não baixar - + Normal Normal - + High Alta - + Maximum Máxima - + By shown file order Pela ordem mostrada dos arquivos - + Normal priority Prioridade normal - + High priority Prioridade alta - + Maximum priority Prioridade máxima - + Priority by shown file order Prioridade pela ordem de exibição dos arquivos + + TorrentCreatorController + + + Too many active tasks + Muitas tarefas ativas + + + + Torrent creation is still unfinished. + A criação do torrent não foi concluída ainda. + + + + Torrent creation failed. + Falha na criação do torrent. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Por favor escolha um nome diferente e tente de novo. - + Select file Selecione o arquivo - + Select folder Selecione a pasta @@ -10205,58 +10796,10 @@ Por favor escolha um nome diferente e tente de novo. Tamanho do pedaço: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Por favor escolha um nome diferente e tente de novo. Campos - + You can separate tracker tiers / groups with an empty line. Você pode separar camadas / grupos de rastreadores com uma linha vazia. - + Web seed URLs: URLs de semente da web: - + Tracker URLs: URLs do rastreador: - + Comments: Comentários: - + Source: Fonte: - + Progress: Progresso: - + Create Torrent Criar Torrent - - + + Torrent creation failed Falhou na criação do torrent - + Reason: Path to file/folder is not readable. Motivo: O caminho para o arquivo/pasta não é legível. - + Select where to save the new torrent Selecione aonde salvar o novo torrent - + Torrent Files (*.torrent) Arquivos Torrent (*.torrent) - - Reason: %1 - Motivo: %1 - - - + Add torrent to transfer list failed. - + Falha ao adicionar o torrent à lista de transferências. - + Reason: "%1" - + Motivo: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Motivo: O torrent criado é inválido. Ele não será adicionado a lista de downloads. + Falha ao adicionar torrent - + Torrent creator Criador de torrents - + Torrent created: Torrent criado: @@ -10396,32 +10930,32 @@ Por favor escolha um nome diferente e tente de novo. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Não foi possível carregar a configuração das Pastas Monitoradas. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Falha ao analisar a configuração das Pastas Monitoradas de %1. Erro: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Falha ao carregar a configuração das Pastas Monitoradas de %1. Erro: "Formato de dados inválido." - + Couldn't store Watched Folders configuration to %1. Error: %2 Não pôde armazenar a configuração das Pastas Observadas em %1. Erro: %2 - + Watched folder Path cannot be empty. O caminho da pasta observada não pode estar vazio. - + Watched folder Path cannot be relative. O caminho da pasta observada não pode ser relativo. @@ -10429,27 +10963,27 @@ Por favor escolha um nome diferente e tente de novo. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI magnético inválido. URI: %1. Motivo: %2 - + Magnet file too big. File: %1 Arquivo magnético muito grande. Arquivo: %1 - + Failed to open magnet file: %1 Falhou em abrir o arquivo magnético: %1 - + Rejecting failed torrent file: %1 Rejeitando arquivo do torrent que falhou: %1 - + Watching folder: "%1" Pasta de observação: "%1" @@ -10457,14 +10991,12 @@ Por favor escolha um nome diferente e tente de novo. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Falha ao alocar memória ao ler o arquivo. Arquivo: "%1". Erro: "%2" + Falha ao alocar memória ao ler o arquivo. Arquivo: "%1". Erro: "%2" - Invalid metadata - Metadados inválidos + Metadados inválidos @@ -10495,279 +11027,374 @@ Por favor escolha um nome diferente e tente de novo. Usar outro caminho pro torrent incompleto - + Category: Categoria: - + + Torrent Share Limits + + + Torrent speed limits - Limites da velocidade do torrent + Limites da velocidade do torrent - + Download: Download: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Estes não excederão os limites globais - + Upload: Upload: - Torrent share limits - Limites de compartilhamento do torrent + Limites de compartilhamento do torrent - Use global share limit - Usar limite global de compartilhamento + Usar limite global de compartilhamento - Set no share limit - Definir nenhum limite de compartilhamento + Definir nenhum limite de compartilhamento - Set share limit to - Definir limite de compartilhamento pra + Definir limite de compartilhamento pra - ratio - proporção + proporção - total minutes - total de minutos + total de minutos - inactive minutes - minutos inativos + minutos inativos - + Disable DHT for this torrent Desativar DHT pra este torrent - + Download in sequential order Baixar em ordem sequencial - + Disable PeX for this torrent Desativar PeX pra este torrent - + Download first and last pieces first Baixar os primeiros e os últimos pedaços primeiro - + Disable LSD for this torrent Desativar LSD pra este torrent - + Currently used categories Categorias usadas atualmente - - + + Choose save path Escolha o caminho do salvamento - + Not applicable to private torrents Não aplicável a torrents privados - No share limit method selected - Nenhum método de limite de compartilhamento selecionado + Nenhum método de limite de compartilhamento selecionado - Please select a limit method first - Por favor selecione um método limite primeiro + Por favor selecione um método limite primeiro - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Tags do torrent + + + + + Default + Padrão - - New Tag - Nova etiqueta + + + + Unlimited + Ilimitado - - Tag: - Etiqueta: + + + + Set to + Definir para - - Invalid tag name - Nome da etiqueta inválido + + Seeding time: + Tempo para semear: - - Tag name '%1' is invalid. - O nome '%1' da tag é inválido. + + + + + + + min + minutes + mín - - Tag exists - A etiqueta existe + + Inactive seeding time: + Tempo de semear inativo: - - Tag name already exists. - O nome da etiqueta já existe. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Erro: '%1' não é um arquivo torrent válido. + + Stop torrent + - - Priority must be an integer - A prioridade deve ser um inteiro + + Remove torrent + Remover torrent - - Priority is not valid - A prioridade não é válida + + Remove torrent and its content + - - Torrent's metadata has not yet downloaded - Os metadados do torrent ainda não foram baixados + + Enable super seeding for torrent + Ativar super semeadura para o torrent + + + + Ratio: + Taxa: + + + + TorrentTagsDialog + + + Torrent Tags + Tags do torrent + + + New Tag + Nova etiqueta + + + + Add tag + + + + + Tag: + Etiqueta: + + + + Invalid tag name + Nome da etiqueta inválido + + + + Tag name '%1' is invalid. + O nome '%1' da tag é inválido. + + + + Tag exists + A etiqueta existe + + + + Tag name already exists. + O nome da etiqueta já existe. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Erro: '%1' não é um arquivo torrent válido. + + + + Priority must be an integer + A prioridade deve ser um inteiro - + + Priority is not valid + A prioridade não é válida + + + + Torrent's metadata has not yet downloaded + Os metadados do torrent ainda não foram baixados + + + File IDs must be integers As IDs dos arquivos devem ser inteiras - + File ID is not valid A ID do arquivo não é válida - - - - + + + + Torrent queueing must be enabled Os torrents na fila devem estar ativados - - + + Save path cannot be empty O caminho do salvamento não pode estar vazio - - + + Cannot create target directory Não pôde criar a pasta de destino - - + + Category cannot be empty A categoria não pode estar vazia - + Unable to create category Incapaz de criar a categoria - + Unable to edit category Incapaz de editar a categoria - + Unable to export torrent file. Error: %1 Não foi possível exportar o arquivo torrent. Erro: %1 - + Cannot make save path Não pôde criar o caminho do salvamento - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid O parâmetro 'sort' é inválido - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" não é um arquivo de índice válido. - + Index %1 is out of bounds. O índice %1 está fora dos limites. - - + + Cannot write to directory Não pôde gravar no diretório - + WebUI Set location: moving "%1", from "%2" to "%3" Definir local da interface de usuário da web: movendo "%1", de "%2" pra "%3" - + Incorrect torrent name Nome incorreto do torrent - - + + Incorrect category name Nome incorreto da categoria @@ -10798,257 +11425,215 @@ Por favor escolha um nome diferente e tente de novo. TrackerListModel - - + Working - Funcionando + Funcionando - + Disabled - Desativado + Desativado - + Disabled for this torrent - Desativado pra este torrent + Desativado pra este torrent - + This torrent is private - Este torrent é privado + Este torrent é privado - + N/A - N/D + N/D - + Updating... - Atualizando... + Atualizando... - + Not working - Não funciona + Não funcionando - + Tracker error - + Erro de rastreador - + Unreachable - + Inacessível - + Not contacted yet - Não contactado ainda + Não contactado ainda - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Camada + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Status inválido! + + + URL/Announce endpoint + Endpoint de URL/anúncio + Tier + Camada + + Protocol - + Protocolo - + Status - Status + Status - + Peers - Pares + Peers - + Seeds - Sementes + Seeds - + Leeches - Leeches + Leeches - + Times Downloaded - Número de vezes baixado + Número de vezes baixado - + Message - Mensagem + Mensagem - Next announce - + Próximo anúncio - Min announce - + Anúncio mínimo - v%1 - + v%1 TrackerListWidget - Working - Funcionando - - - Disabled - Desativado - - - Disabled for this torrent - Desativado pra este torrent - - - + This torrent is private Este torrent é privado - Updating... - Atualizando... - - - Not working - Não funciona - - - Not contacted yet - Não contactado ainda - - - N/A - N/D - - - + Tracker editing Editando o rastreador - + Tracker URL: URL do rastreador: - - + + Tracker editing failed Falhou em editar o rastreador - + The tracker URL entered is invalid. A URL inserida do rastreador é inválida. - + The tracker URL already exists. A URL do rastreador já existe. - + Edit tracker URL... Editar URL do rastreador... - + Remove tracker Remover rastreador - + Copy tracker URL Copiar URL do rastreador - + Force reannounce to selected trackers Forçar reanúncio para os rastreadores selecionados - + Force reannounce to all trackers Forçar reanúncio para todos os rastreadores - Tier - Camada - - - URL - URL - - - Status - Status - - - Seeds - Sementes - - - Times Downloaded - Número de vezes baixado - - - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas não ocultas para o tamanho do conteúdo delas - Peers - Pares - - - + Add trackers... Adicionar rastreadores... - Leeches - Leeches - - - Message - Mensagem - - - + Column visibility Visibilidade da coluna @@ -11066,37 +11651,37 @@ Por favor escolha um nome diferente e tente de novo. Lista de rastreadores pra adicionar (um por linha): - + µTorrent compatible list URL: URL da lista compatível com µTorrent: - + Download trackers list Baixar lista de rastreadores - + Add Adicionar - + Trackers list URL error Erro do URL da lista de rastreadores - + The trackers list URL cannot be empty O URL da lista de rastreadores não pode estar vazio - + Download trackers list error Erro ao baixar lista de rastreadores - + Error occurred when downloading the trackers list. Reason: "%1" Ocorreu um erro ao baixar a lista de rastreadores. Motivo: "%1" @@ -11104,87 +11689,70 @@ Por favor escolha um nome diferente e tente de novo. TrackersFilterWidget - All (0) - this is for the tracker filter - Todos (0) - - - Trackerless (0) - Sem rastreadores (0) - - - Error (0) - Erro (0) - - - Warning (0) - Aviso (0) - - - Trackerless - Sem rastreadores - - - Error (%1) - Erro (%1) - - - + Warning (%1) Aviso (%1) - + Trackerless (%1) Sem rastreadores (%1) - + Tracker error (%1) - + Erro de rastreador (%1) - + Other error (%1) - + Outro erro (%1) - + Remove tracker - Remover rastreador + Remover tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Retomar torrents + Retomar torrents - Pause torrents - Pausar torrents + Pausar torrents - + Remove torrents Remover torrents - + Removal confirmation - + Confirmar remoção - + Are you sure you want to remove tracker "%1" from all torrents? - + Tem certeza de que deseja remover o rastreador "%1" de todos os torrents? - + Don't ask me again. - + Não perguntar novamente - + All (%1) this is for the tracker filter Todos (%1) @@ -11193,7 +11761,7 @@ Por favor escolha um nome diferente e tente de novo. TransferController - + 'mode': invalid argument 'mode': argumento inválido @@ -11286,9 +11854,8 @@ Por favor escolha um nome diferente e tente de novo. Verificando dados de retomada - Paused - Pausado + Pausado @@ -11313,220 +11880,262 @@ Por favor escolha um nome diferente e tente de novo. Com erro - + Name i.e: torrent name Nome - + Size i.e: torrent size Tamanho - + Progress % Done Progresso - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Sementes - + Peers i.e. partial sources (often untranslated) Pares - + Down Speed i.e: Download speed Velocidade de download - + Up Speed i.e: Upload speed Velocidade de upload - + Ratio Share ratio Proporção - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Tempo restante - + Category Categoria - + Tags Etiquetas - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Adicionado em - + Completed On Torrent was completed on 01/01/2010 08:00 Completado em - + Tracker Rastreadores - + Down Limit i.e: Download limit Limite de download - + Up Limit i.e: Upload limit Limite de upload - + Downloaded Amount of data downloaded (e.g. in MB) Baixados - + Uploaded Amount of data uploaded (e.g. in MB) Enviados - + Session Download Amount of data downloaded since program open (e.g. in MB) Download da sessão - + Session Upload Amount of data uploaded since program open (e.g. in MB) Upload da sessão - + Remaining Amount of data left to download (e.g. in MB) Restante - + + Time Active + Time (duration) the torrent is active (not stopped) + Tempo ativo + + + + Yes + Sim + + + + No + Não + + Time Active Time (duration) the torrent is active (not paused) - Tempo ativo + Tempo ativo - + Save Path Torrent save path Caminho do salvamento - + Incomplete Save Path Torrent incomplete save path Caminho de salvamento incompleto - + Completed Amount of data completed (e.g. in MB) Completado - + Ratio Limit Upload share ratio limit Limite da proporção - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Visto completo pela última vez - + Last Activity Time passed since a chunk was downloaded/uploaded Última atividade - + Total Size i.e. Size including unwanted data Tamanho total - + Availability The number of distributed copies of the torrent Disponibilidade - + Info Hash v1 i.e: torrent info hash v1 Informações do Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Informações do Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Reannounce In + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/D - + %1 ago e.g.: 1h 20m ago %1 atrás - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (semeado por %2) @@ -11535,334 +12144,358 @@ Por favor escolha um nome diferente e tente de novo. TransferListWidget - + Column visibility Visibilidade da coluna - + Recheck confirmation Confirmação da nova verificação - + Are you sure you want to recheck the selected torrent(s)? Você tem certeza que você quer verificar de novo o(s) torrent(s) selecionado(s)? - + Rename Renomear - + New name: Novo nome: - + Choose save path Escolha o caminho do salvamento - Confirm pause - Confirmar pausar + Confirmar pausar - Would you like to pause all torrents? - Você gostaria de pausar todos os torrents? + Você gostaria de pausar todos os torrents? - Confirm resume - Confirmar retomada + Confirmar retomada - Would you like to resume all torrents? - Você gostaria de retomar todos os torrents? + Você gostaria de retomar todos os torrents? - + Unable to preview Incapaz de pré-visualizar - + The selected torrent "%1" does not contain previewable files O torrent selecionado "%1" não contém arquivos pré-visualizáveis - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas não ocultas para o tamanho do conteúdo delas - + Enable automatic torrent management Ativar gerenciamento automático dos torrents - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Você tem certeza que você quer ativar o gerenciamento automático dos torrents para os torrents selecionados? Eles podem ser realocados. - Add Tags - Adicionar etiquetas + Adicionar etiquetas - + Choose folder to save exported .torrent files Escolha a pasta para salvar os arquivos .torrent exportados - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Falha ao exportar o arquivo .torrent. Torrent: "%1". Caminho para salvar: "%2". Motivo: "%3" - + A file with the same name already exists Um arquivo com o mesmo nome já existe - + Export .torrent file error Erro ao exportar arquivo .torrent - + Remove All Tags Remover todas as etiquetas - + Remove all tags from selected torrents? Remover todas as etiquetas dos torrents selecionados? - + Comma-separated tags: Etiquetas separadas por vírgulas: - + Invalid tag Etiqueta inválida - + Tag name: '%1' is invalid O nome da etiqueta '%1' é inválido - &Resume Resume/start the torrent - &Retomar + &Retomar - &Pause Pause the torrent - &Pausar + &Pausar - Force Resu&me Force Resume/start the torrent - Forçar retor&nar + Forçar retor&nar - + Pre&view file... Pré-&visualizar arquivo... - + Torrent &options... &Opções do torrent... - + Open destination &folder Abrir &pasta de destino - + Move &up i.e. move up in the queue Mover para &cima - + Move &down i.e. Move down in the queue Mover para &baixo - + Move to &top i.e. Move to top of the queue Mover para o &início - + Move to &bottom i.e. Move to bottom of the queue Mover para o &final - + Set loc&ation... Definir loc&al... - + Force rec&heck Forçar no&va verificação - + Force r&eannounce Forçar r&eanunciar - + &Magnet link Link &magnético - + Torrent &ID &ID do torrent - + + &Comment + &Comentário + + + &Name &Nome - + Info &hash v1 Informações do &hash v1 - + Info h&ash v2 Informações do h&ash v2 - + Re&name... Re&nomear... - + Edit trac&kers... Editar trac&kers... - + E&xport .torrent... E&xportar .torrent... - + Categor&y Categor&ia - + &New... New category... &Novo... - + &Reset Reset category &Redefinir - + Ta&gs Ta&gs - + &Add... Add / assign multiple tags... &Adicionar... - + &Remove All Remove all tags &Remover tudo - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Fila - + &Copy &Copiar - + Exported torrent is not necessarily the same as the imported O torrent exportado não é necessariamente o mesmo do importado - + Download in sequential order Baixar em ordem sequencial - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Ocorreram erros ao exportar os arquivos .torrent. Verifique o log de execução para detalhes. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Remover - + Download first and last pieces first Baixar os primeiros e os últimos pedaços primeiro - + Automatic Torrent Management Gerenciamento automático dos torrents - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category O modo automático significa que várias propriedades do torrent (ex: caminho do salvamento) serão decididas pela categoria associada - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Não é possível forçar reanúncio se o torrent está Pausado/Na Fila/Com Erro/Verificando + Não é possível forçar reanúncio se o torrent está Pausado/Na Fila/Com Erro/Verificando - + Super seeding mode Modo super semeadura @@ -11907,28 +12540,28 @@ Por favor escolha um nome diferente e tente de novo. ID do ícone - + UI Theme Configuration. Configuração de tema da interface. - + The UI Theme changes could not be fully applied. The details can be found in the Log. As alterações no tema da interface não puderam ser totalmente aplicadas. Os detalhes podem ser vistos no Log. - + Couldn't save UI Theme configuration. Reason: %1 Não foi possível salvar a configuração do tema da interface. Razão: %1 - - + + Couldn't remove icon file. File: %1. Não foi possível remover o arquivo de ícone. Arquivo: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Não foi possível copiar o arquivo de ícone. Fonte: %1. Destino: %2. @@ -11936,7 +12569,12 @@ Por favor escolha um nome diferente e tente de novo. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Falhou em carregar o tema da interface de usuário do arquivo: "%1" @@ -11967,89 +12605,82 @@ Por favor escolha um nome diferente e tente de novo. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Falhou em migrar as preferências: HTTPS WebUI, arquivo: "%1", erro: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Preferências migradas: HTTPS WebUI, exportou os dados pro arquivo: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Valor inválido encontrado no arquivo de configuração, revertendo para o padrão. Chave: "%1". Valor inválido: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python detectado, nome do executável: "%1", versão: %2 - - - Python not detected - Python não detectado - Found Python executable. Name: "%1". Version: "%2" - + Encontrado o executável do Python. Nome: "%1". Versão: "%2" Failed to find Python executable. Path: "%1". - + Falha ao localizar o executável do Python. Caminho: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Falha ao localizar o executável do 'python3' na variável de ambiente PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Falha ao localizar o executável do 'python' na variável de ambiente PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Falha ao localizar o executável do Python no registro do Windows. Failed to find Python executable - + Falha ao localizar o executável do Python Utils::IO - + File open error. File: "%1". Error: "%2" Erro ao abrir arquivo. Arquivo: "%1". Erro: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 O tamanho do arquivo excede o limite. Arquivo: "%1". Tamanho do arquivo: %2. Limite de tamanho: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" Erro ao ler arquivo. Arquivo: "%1". Erro: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Incompatibilidade de tamanho de leitura. Arquivo: "%1". Esperado: %2. Real: %3 @@ -12113,72 +12744,72 @@ Por favor escolha um nome diferente e tente de novo. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Nome do cookie de sessão inaceitável especificado: '%1'. O padrão será usado. - + Unacceptable file type, only regular file is allowed. Tipo de arquivo inaceitável, só o arquivo regular é permitido. - + Symlinks inside alternative UI folder are forbidden. Os links simbólicos dentro da pasta alternativa da interface do usuário são proibidos. - - Using built-in Web UI. - Usando a interface de usuário da web embutida. + + Using built-in WebUI. + Utilizando a interface web incluída. - - Using custom Web UI. Location: "%1". - Usando a interface personalizada de usuário da web. Local: "%1". + + Using custom WebUI. Location: "%1". + Utilizando interface web personalizada. Localização: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - A tradução da interface de usuário da web pro idioma selecionado (%1) foi carregada com sucesso. + + WebUI translation for selected locale (%1) has been successfully loaded. + A tradução da interface web para o idioma selecionado (%1) foi carregada com sucesso. - - Couldn't load Web UI translation for selected locale (%1). - Não pôde carregar a tradução da interface de usuário da web pro idioma selecionado (%1). + + Couldn't load WebUI translation for selected locale (%1). + Não foi possível carregar a tradução da interface web para o idioma selecionado (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Separador ':' ausente no cabeçalho HTTP personalizado da interface de usuário da web: "%1" - + Web server error. %1 Erro do servidor web. %1 - + Web server error. Unknown error. Erro do servidor web. Erro desconhecido. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: O cabeçalho de origem & e a origem do alvo não combinam! IP de origem: '%1'. Cabeçalho de origem: '%2'. Origem do alvo: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI : O cabeçalho do referenciador & e de origem do alvo não combinam! IP de origem: '%1'. Cabeçalho do referenciador: '%2'. Origem do alvo: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Cabeçalho do hospedeiro inválido, a porta não combina. IP de origem da requisição: '%1'. Porta do servidor '%2'. Cabeçalho recebido do hospedeiro: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Cabeçalho inválido do hospedeiro. IP de origem da requisição: '%1'. Cabeçalho recebido do hospedeiro: '%2' @@ -12186,143 +12817,136 @@ Por favor escolha um nome diferente e tente de novo. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + Credenciais não definidas + + + + WebUI: HTTPS setup successful WebUI: HTTPS configurado com sucesso - - Web UI: HTTPS setup failed, fallback to HTTP - WebUI: falhou em configurar o HTTPS, revertendo pro HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: falha ao configurar HTTPS, revertendo para HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 WebUI: Escutando agora no IP: %1, porta: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - WebUI: Incapaz de vincular ao IP: %1, porta: %2. Motivo: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + WebUI: Não foi possível vincular ao IP: %1, porta: %2. Motivo: %3 + + + + fs + + + Unknown error + Erro desconhecido misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1 m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1a %2d + %1a %2d - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1a %2d - - - - + + Unknown Unknown (size) Desconhecido - + qBittorrent will shutdown the computer now because all downloads are complete. O qBIttorrent desligará o computador agora porque todos os downloads estão completos. - + < 1m < 1 minute < 1 minuto - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_pt_PT.ts b/src/lang/qbittorrent_pt_PT.ts index 25e0f6e22b4c..d1657cdda12c 100644 --- a/src/lang/qbittorrent_pt_PT.ts +++ b/src/lang/qbittorrent_pt_PT.ts @@ -14,77 +14,77 @@ Acerca - + Authors Autores - + Current maintainer Programador atual - + Greece Grécia - - + + Nationality: Nacionalidade: - - + + E-mail: E-mail: - - + + Name: Nome: - + Original author Autor original - + France França - + Special Thanks Agradecimento especial - + Translators Tradutores - + License Licença - + Software Used Software utilizado - + qBittorrent was built with the following libraries: O qBittorrent foi criado com as seguintes bibliotecas: - + Copy to clipboard - + Copiar para a área de transferência @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 O projeto qBittorrent @@ -166,14 +166,13 @@ Guardar em - + Never show again Não mostrar novamente - Torrent settings - Definições do torrent + Definições do torrent @@ -191,12 +190,12 @@ Iniciar torrent - + Torrent information Informação do torrent - + Skip hash check Ignorar verificação hash @@ -205,6 +204,11 @@ Use another path for incomplete torrent Usar outra localização para torrent incompleto + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Condição para parar: - - + + None Nenhum - - + + Metadata received Metadados recebidos - - + + Torrents that have metadata initially will be added as stopped. + Os torrents que possuem metadados inicialmente serão adicionados como parados. + + + + Files checked Ficheiros verificados - + Add to top of queue Adicionar ao início da fila - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Quando selecionado, o ficheiro .torrent não será eliminado independente das definições na página "Transferência" da janela das Opções - + Content layout: Disposição do conteúdo: - + Original Original - + Create subfolder Criar subpasta - + Don't create subfolder Não criar subpasta - + Info hash v1: Informações do hash v1: - + Size: Tamanho: - + Comment: Comentário: - + Date: Data: @@ -324,245 +333,182 @@ Lembrar o último caminho utilizado guardado - + Do not delete .torrent file Não eliminar o ficheiro .torrent - + Download in sequential order Fazer a tranferência sequencialmente - + Download first and last pieces first Fazer a transferência da primeira e última peça primeiro - + Info hash v2: Informações do hash v2: - + Select All Selecionar tudo - + Select None Não selecionar nenhum - + Save as .torrent file... Guardar como ficheiro .torrent... - + I/O Error Erro I/O - Invalid torrent - Torrent inválido - - - + Not Available This comment is unavailable Indisponível - + Not Available This date is unavailable Indisponível - + Not available Indisponível - Invalid magnet link - Ligação magnet inválida - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Ocorreu um erro ao tentar adicionar o torrent: %1 -Erro: %2 - - - This magnet link was not recognized - Esta ligação magnet não foi reconhecida - - - + Magnet link Ligação magnet - + Retrieving metadata... Obtenção de metadados... - - + + Choose save path Escolha o caminho para guardar - Torrent is already present - O torrent já se encontra presente - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - O torrent '%1' já existe na lista de transferências. Os rastreadores não foram unidos porque é um torrent privado. - - - Torrent is already queued for processing. - O torrent já se encontra em fila para ser processado. - - - + No stop condition is set. Não foi definida nenhuma condição para parar. - + Torrent will stop after metadata is received. O torrent será parado após a recepção dos metadados. - - Torrents that have metadata initially aren't affected. - Torrents que possuem metadados inicialmente não são afetados. - - - + Torrent will stop after files are initially checked. O torrent parará após o a verificação inicial dos ficheiros. - + This will also download metadata if it wasn't there initially. - Isso também fará o download dos metadados, caso não existam inicialmente. + Isso também fará a transferência dos metadados, caso não existam inicialmente. - - + + N/A N/D - Magnet link is already queued for processing. - A ligação magnet já se encontra em fila para ser processada. - - - + %1 (Free space on disk: %2) %1 (Espaço livre no disco: %2) - + Not available This size is unavailable. Indisponível - + Torrent file (*%1) Ficheiro torrent (*%1) - + Save as torrent file Guardar como ficheiro torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Não foi possível exportar o arquivo de metadados do torrent '%1'. Motivo: %2. - + Cannot create v2 torrent until its data is fully downloaded. - Não é possível criar o torrent v2 até que seus dados sejam totalmente descarregados. - - - Cannot download '%1': %2 - Não é possível transferir '%1': %2 + Não é possível criar o torrent v2 até que seus dados sejam totalmente transferidos. - + Filter files... Filtrar ficheiros... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - O torrent '%1' já existe na lista de transferências. Os rastreadores não foram unidos porque é um torrent privado. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - O torrent '%1' já existe na lista de transferências. Deseja unir os rastreadores da nova fonte? - - - + Parsing metadata... Análise de metadados... - + Metadata retrieval complete Obtenção de metadados terminada - - Failed to load from URL: %1. -Error: %2 - Falha ao carregar do URL: %1. -Erro: %2 - - - Download Error - Erro ao tentar fazer a transferência - AddTorrentManager Downloading torrent... Source: "%1" - + A transferir torrent... Fonte: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Ocorreu um erro ao adicionar o torrent. Fonte: "%1". Motivo: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Detetada uma tentativa de adicionar um torrent duplicado. Fonte: %1. Torrent existente: %2. Resultado: %3 - + Merging of trackers is disabled - + A fusão de trackers está desativada - + Trackers cannot be merged because it is a private torrent - + Os trackers não podem ser fundidos porque se trata de um torrent privado - + Trackers are merged from new source - + Os trackers são fundidos a partir da nova fonte @@ -590,7 +536,7 @@ Erro: %2 Note: the current defaults are displayed for reference. - + Nota: as predefinições atuais são apresentadas para referência. @@ -625,7 +571,7 @@ Erro: %2 Start torrent: - + Iniciar torrent: @@ -640,7 +586,7 @@ Erro: %2 Add to top of queue: - + Adicionar ao início da fila: @@ -648,72 +594,77 @@ Erro: %2 Ignorar a verificação do hash - - - Choose save path - Escolha o caminho para guardar + + Torrent share limits + Limites de partilha de torrent - - - - - - - Default - Padrão + + + Choose save path + Escolha o caminho para guardar + + + - Yes - Sim + Default + Padrão + Yes + Sim + + + + + No Não - + Manual Manual - + Automatic Automático - + Original Original - + Create subfolder Criar subpasta - + Don't create subfolder Não criar subpasta - + None Nenhum - + Metadata received Metadados recebidos - + Files checked Ficheiros verificados @@ -721,734 +672,852 @@ Erro: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Verificar torrents ao terminar - - + + ms milliseconds ms - + Setting Definição - + Value Value set for this setting Valor - + (disabled) (desativado) - + (auto) (automático) - + + min minutes min - + All addresses Todos os endereços - + qBittorrent Section Secção qBittorrent - - + + Open documentation Abrir documentação - + All IPv4 addresses Todos os endereços IPv4 - + All IPv6 addresses Todos os endereços IPv6 - + libtorrent Section Secção libtorrent - + Fastresume files Resumo rápido dos ficheiros - + SQLite database (experimental) Base de dados do SQLite (experimental) - + Resume data storage type (requires restart) Retomar tipo de armazenamento de dados (requer reinício) - + Normal Normal - + Below normal Abaixo do normal - + Medium Médio - + Low Baixo - + Very low Muito baixo - - Process memory priority (Windows >= 8 only) - Prioridade da memória do processo (Windows >= apenas 8) - - - + Physical memory (RAM) usage limit Limite de utilização da memória física (RAM) - + Asynchronous I/O threads Threads assíncronas I/O - + Hashing threads Segmentos de cálculo de hash - + File pool size Tamanho do pool de ficheiros - + Outstanding memory when checking torrents Memória excelente ao verificar os torrents - + Disk cache Cache do disco - - - - + + + + s seconds s - + Disk cache expiry interval Intervalo para cache de disco - + Disk queue size Tamanho da fila do disco - - + + Enable OS cache Ativar cache do sistema - + Coalesce reads & writes Unir leituras e escritas - + Use piece extent affinity Utilizar a afinidade da extensão da peça - + Send upload piece suggestions Enviar o upload da peça de sugestões - - - - + + + + + 0 (disabled) 0 (desativado) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Guardar o intervalo de dados de retomada [0: desativado] - + Outgoing ports (Min) [0: disabled] Portas de saída (Mín) [0: desativado] - + Outgoing ports (Max) [0: disabled] Portas de saída (Máx) [0: desativado] - + 0 (permanent lease) 0 (locação permanente) - + UPnP lease duration [0: permanent lease] Duração da locação UPnP [0: locação permanente] - + Stop tracker timeout [0: disabled] Intervalo para parar o tracker [0: disativado] - + Notification timeout [0: infinite, -1: system default] Intervalo da notificação [0: infinito, -1: predefinição do sistema] - + Maximum outstanding requests to a single peer Máximo de pedidos pendentes a uma única fonte: - - - - - + + + + + KiB KiB - + (infinite) (infinito) - + (system default) (predefinição do sistema) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Esta opção é menos efetiva no Linux - + + Process memory priority + Prioridade de memória de processo + + + Bdecode depth limit - + Limite de profundidade Bdecode - + Bdecode token limit - + Limite do token Bdecode - + Default Padrão - + Memory mapped files Arquivos mapeados na memória - + POSIX-compliant Compatível com POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipo de E/S de disco (requer reinicialização) - - + + Disable OS cache Desativar cache do sistema - + Disk IO read mode Modo de leitura de E/S do disco - + Write-through Write-through - + Disk IO write mode Modo de gravação de E/S do disco - + Send buffer watermark Marca de água do buffer de envio - + Send buffer low watermark Marca de água baixa do buffer de envio - + Send buffer watermark factor Fator da marca de água do buffer de envio - + Outgoing connections per second Ligações de saída por segundo - - + + 0 (system default) 0 (predefinição do sistema) - + Socket send buffer size [0: system default] - + Tamanho do buffer do socket de envio [0: system default] - + Socket receive buffer size [0: system default] - + Tamanho do buffer do socket de recebimento [0: system default] - + Socket backlog size Tamanho da lista pendente do socket - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + Limite de tamanho do ficheiro .torrent + + + Type of service (ToS) for connections to peers Tipo de serviço (TdS) para ligações com pares - + Prefer TCP Preferir TCP - + Peer proportional (throttles TCP) Semear de forma proporcional (limita TCP) - + Support internationalized domain name (IDN) Suporta nome de domínio internacionalizado (IDN) - + Allow multiple connections from the same IP address Permitir várias ligações a partir do mesmo endereço de IP - + Validate HTTPS tracker certificates Validar certificados de rastreio HTTPS - + Server-side request forgery (SSRF) mitigation Redução do pedido de falsificação do lado do servidor (SSRF) - + Disallow connection to peers on privileged ports Não permitir ligação com pares em portas privilegiadas - + + It appends the text to the window title to help distinguish qBittorent instances + Anexa o texto ao título da janela para ajudar a distinguir as instâncias do qBittorent + + + + Customize application instance name + Personalizar nome da instância da aplicação + + + It controls the internal state update interval which in turn will affect UI updates Controla o intervalo de atualização do estado interno que, por sua vez, afetará as atualizações da interface do utilizador - + Refresh interval Intervalo de atualização - + Resolve peer host names Resolver nomes dos servidores de fontes - + IP address reported to trackers (requires restart) Endereço de IP reportado aos rastreadores (requer reinício) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Reanunciar para todos os trackers quando o IP ou porta forem alterados - + Enable icons in menus Ativar ícones nos menus - + Enable port forwarding for embedded tracker Ativar reencaminhamento de porta para o rastreador incorporado - - (Auto detect if empty) + + Enable quarantine for downloaded files + Ativar quarentena para ficheiros transferidos + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Ativar Mark-of-the-Web (MOTW) para ficheiros transferidos + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - + + Ignore SSL errors + + + + + (Auto detect if empty) + (Deteção automática se estiver vazio) + + + Python executable path (may require restart) + Caminho do executável Python (pode ser necessário reiniciar) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + seg + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Confirmar a remoção do tracker de todos os torrents + + + Peer turnover disconnect percentage Percentagem de não ligação da rotatividade dos pares - + Peer turnover threshold percentage Percentagem de limite de rotatividade de pares - + Peer turnover disconnect interval Intervalo de não ligação de rotatividade de pares - + Resets to default if empty - + Repor o valor por defeito se estiver vazio - + DHT bootstrap nodes - + Nós de inicialização DHT - + I2P inbound quantity - + Quantidade de entrada I2P - + I2P outbound quantity - + Quantidade de saída I2P - + I2P inbound length - + Comprimento de entrada I2P - + I2P outbound length - + Comprimento de saída I2P - + Display notifications Mostrar notificações - + Display notifications for added torrents Mostrar notificações para os torrents adicionados - + Download tracker's favicon Fazer a transferência do favicon tracker - + Save path history length Guardar o tamanho do histórico do caminho - + Enable speed graphs Ativar gráfico de velocidade - + Fixed slots Slots corrigidos - + Upload rate based Baseado no rácio de upload - + Upload slots behavior Comportamento das slots de upload - + Round-robin Round-robin - + Fastest upload Upload mais rápido - + Anti-leech Anti-sanguessuga - + Upload choking algorithm Algoritmo choking do upload - + Confirm torrent recheck Confirmar reverificação do torrent - + Confirm removal of all tags Confirme o remover de todas as etiquetas - + Always announce to all trackers in a tier Anunciar sempre para todos os rastreadores numa fila - + Always announce to all tiers Anunciar sempre para todos as filas - + Any interface i.e. Any network interface Qualquer interface - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritmo do modo de mistura %1-TCP - + Resolve peer countries Resolver fontes dos países - + Network interface Interface de rede - + Optional IP address to bind to Endereço de IP opcional para ligar-se - + Max concurrent HTTP announces Máximo de anúncios HTTP simultâneos - + Enable embedded tracker Ativar tracker embutido - + Embedded tracker port Porta do tracker embutido - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 iniciado + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 A correr no modo portátil. Detectada automaticamente pasta de perfil em: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Detetado um sinalizador de linha de comando redundante: "%1". O modo portátil implica um resumo relativo. - + Using config directory: %1 A utilizar diretoria de configuração: %1 - + Torrent name: %1 Nome do torrent: %1 - + Torrent size: %1 Tamanho do torrent: %1 - + Save path: %1 Caminho para guardar: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Foi feita a transferência do torrent para %1. - + + Thank you for using qBittorrent. Obrigado por utilizar o qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, a enviar notificação por e-mail - + Add torrent failed - + Ocorreu um erro ao adicionar o torrent - + Couldn't add torrent '%1', reason: %2. - + Não foi possível adicionar o torrent '%1', motivo: %2. - + + The WebUI administrator username is: %1 + O nome de utilizador do administrador da interface web é: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + A palavra-passe do administrador da interface web não foi definida. Uma palavra-passe temporária será fornecida para esta sessão: %1 + + + + You should set your own password in program preferences. + Deve definir a sua própria palavra-passe nas preferências do programa. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + A interface web está desativada! Para ativar, edite o ficheiro de configuração manualmente. - + Running external program. Torrent: "%1". Command: `%2` Execução de programa externo. Torrent: "%1". Comando: '%2' - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading O torrent "%1" terminou a transferência - + WebUI will be started shortly after internal preparations. Please wait... A interface web será iniciada logo após os preparativos internos. Aguarde... - - + + Loading torrents... A carregar torrents... - + E&xit S&air - + I/O Error i.e: Input/Output Error Erro de E/S - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Erro: %2 Motivo: %2 - Error - Erro - - - Failed to add torrent: %1 - Falha ao adicionar o torrent: %1 - - - + Torrent added Torrent adicionado - + '%1' was added. e.g: xxx.avi was added. '%1' foi adicionado. - + Download completed Transferência concluída - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' terminou a transferência. - - - URL download error - Erro de transferência do URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - Não foi possível transferir o ficheiro do URL '%1'. Motivo: %2. + + This is a test email. + - Torrent file association - Associação de ficheiro torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - O qBittorrent não é a aplicação predefinida para abrir ficheiros torrent ou ligações magnet. -Quer tornar o qBittorrent a aplicação predefinida para estes? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' terminou a transferência. - + Information Informações - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 Para controlar o qBittorrent, aceda ao WebUI em: %1 - - The Web UI administrator username is: %1 - O nome de utilizador do administrador da interface web é: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - A palavra-passe do administrador da interface web não foi alterada da predefinida: %1 - - - - This is a security risk, please change your password in program preferences. - Isto é um risco de segurança, considere alterar a palavra-passe nas preferências do programa. - - - Application failed to start. - Falha ao iniciar a aplicação. - - - + Exit Sair - + Recursive download confirmation - Confirmação de download recursivo + Confirmação de transferência recursiva - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - O torrent '%1' contém ficheiros .torrent. Quer continuar com a sua transferência? + O torrent '%1' contém ficheiros .torrent. Quer continuar com a sua transferência? - + Never - Nunca + Nunca - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Transferência recursiva do ficheiro .torrent dentro do torrent. Torrent fonte: "%1". Ficheiro: "%2" + Transferência recursiva do ficheiro .torrent dentro do torrent. Torrent fonte: "%1". Ficheiro: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Falha ao definir o limite de utilização da memória física (RAM). Código do erro: %1. Mensagem de erro: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated Finalização do qBittorrent iniciada - + qBittorrent is shutting down... O qBittorrent está a fechar... - + Saving torrent progress... A guardar progresso do torrent... - + qBittorrent is now ready to exit O qBittorrent está agora pronto para ser fechado @@ -1597,7 +1637,7 @@ Quer tornar o qBittorrent a aplicação predefinida para estes? AsyncFileStorage - + Could not create directory '%1'. Não foi possível criar a diretoria '%1'. @@ -1605,22 +1645,22 @@ Quer tornar o qBittorrent a aplicação predefinida para estes? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Erro de inicio de sessão no WebAPI. Motivo: O IP foi banido, IP: %1, nome de utilizador: %2 - + Your IP address has been banned after too many failed authentication attempts. O seu endereço IP foi banido após várias tentativas de autenticação falhadas. - + WebAPI login success. IP: %1 Inicio de sessão com sucesso no WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Erro de inicio de sessão no WebAPI. Motivo: Credenciais inválidas, tentativas: %1, IP: %2, nome de utilizador: %3 @@ -1630,7 +1670,7 @@ Quer tornar o qBittorrent a aplicação predefinida para estes? RSS Downloader - Descarregador de RSS + Transferidor de RSS @@ -1665,15 +1705,15 @@ Quer tornar o qBittorrent a aplicação predefinida para estes? Priority: - + Prioridade - + Must Not Contain: Não deverá conter: - + Episode Filter: Filtro de episódio: @@ -1726,263 +1766,263 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para &Exportar... - + Matches articles based on episode filter. Correspondência de artigos tendo por base o filtro de episódios. - + Example: Exemplo: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match irá corresponder aos episódios 2, 5, 8 até 15, 30 e subsequentes da primeira temporada - + Episode filter rules: Regras para filtro de episódios: - + Season number is a mandatory non-zero value O número de temporada tem que ser um valor positivo - + Filter must end with semicolon O filtro deve terminar com ponto e vírgula - + Three range types for episodes are supported: São suportados três tipos de intervalos para episódios: - + Single number: <b>1x25;</b> matches episode 25 of season one Um número: <b>1x25;</b> corresponde ao episódio 25 da temporada um - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Intervalo normal: <b>1x25-40;</b> corresponde aos episódios 25 a 40 da temporada um - + Episode number is a mandatory positive value O número de episódio tem de ser obrigatóriamente positivo - + Rules Regras - + Rules (legacy) Regras (legado) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Limite infinito: <b>1x25-;</b> corresponde os episódios 25 e superiores da temporada um, e a todos os episódios de temporadas posteriores - + Last Match: %1 days ago Última correspondência: %1 dias atrás - + Last Match: Unknown Última correspondência: desconhecida - + New rule name Nome da nova regra - + Please type the name of the new download rule. Escreva o nome da nova regra para transferências. - - + + Rule name conflict Conflito no nome da regra - - + + A rule with this name already exists, please choose another name. Já existe uma regra com este nome. Por favor, escolha outro nome. - + Are you sure you want to remove the download rule named '%1'? Tem a certeza de que deseja remover a regra para transferências com o nome '%1'? - + Are you sure you want to remove the selected download rules? - Tem a certeza que deseja remover as regras selecionadas para downloads? + Tem a certeza de que quer remover as regras de transferência selecionadas? - + Rule deletion confirmation Confirmação de eliminação de regra - + Invalid action Ação inválida - + The list is empty, there is nothing to export. A lista encontra-se vazia, não há nada para exportar. - + Export RSS rules Exportar regras RSS - + I/O Error Erro I/O - + Failed to create the destination file. Reason: %1 Ocorreu um erro ao tentar criar o ficheiro de destino. Motivo: %1 - + Import RSS rules Importar regras RSS - + Failed to import the selected rules file. Reason: %1 Ocorreu um erro ao tentar o ficheiro com as regras selecionadas. Motivo: %1 - + Add new rule... Adicionar nova regra... - + Delete rule Eliminar regra - + Rename rule... Renomear regra... - + Delete selected rules Eliminar regras selecionadas - + Clear downloaded episodes... - Limpar os episódios descarregados... + Limpar os episódios transferidos... - + Rule renaming Renomear regra - + Please type the new rule name Por favor, escreva o novo nome da regra - + Clear downloaded episodes - Limpar os episódios descarregados + Limpar episódios transferidos - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - Tem certeza de que deseja limpar a lista de episódios descarregados para a regra selecionada? + Deseja realmente limpar a lista de episódios transferidos da regra selecionada? - + Regex mode: use Perl-compatible regular expressions Modo regex: utilizar expressões regulares compatíveis com Perl - - + + Position %1: %2 Posição %1: %2 - + Wildcard mode: you can use Modo 'Wildcard': você pode utilizar - - + + Import error - + Erro ao importar - + Failed to read the file. %1 - + Ocorreu um erro ao tentar ler o ficheiro. %1 - + ? to match any single character ? para corresponder a qualquer caracter - + * to match zero or more of any characters * para igualar a zero ou mais caracteres - + Whitespaces count as AND operators (all words, any order) Os espaços em branco contam como operadores AND (E) (todas as palavras, qualquer ordem) - + | is used as OR operator É utilizado como operador OU (OR) - + If word order is important use * instead of whitespace. Se a ordem das palavras é importante utilize * em vez de um espaço em branco. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Uma expressão com uma cláusula %1 vazia (por exemplo, %2) - + will match all articles. irá corresponder a todos os artigos. - + will exclude all articles. irá excluir todos os artigos. @@ -2024,53 +2064,58 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Não é possível criar pasta do retomar do torrent: "%1" - + Cannot parse resume data: invalid format Não foi possível analisar os dados para retomar: formato inválido - - + + Cannot parse torrent info: %1 Não foi possível analisar as informações do torrent: %1 - + Cannot parse torrent info: invalid format Não foi possível analisar as informações do torrent: formato inválido - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Não foi possível guardar metadados de torrents para '%1'. Erro: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Não foi possível guardar os dados do retomar do torrent para '%1'. Erro: %2. - + Couldn't load torrents queue: %1 Não foi possível carregar a fila de torrents: %1 - + Cannot parse resume data: %1 Não foi possível analisar os dados de retomada: %1 - + Resume data is invalid: neither metadata nor info-hash was found Dados de retomada inválidos: não foram encontrados nem metadados, nem informações do hash - + Couldn't save data to '%1'. Error: %2 Não foi possível guardar dados para '%1'. Erro: %2 @@ -2078,61 +2123,61 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para BitTorrent::DBResumeDataStorage - + Not found. Não encontrado. - + Couldn't load resume data of torrent '%1'. Error: %2 Não foi possível carregar os dados do retomar do torrent '%1'. Erro: %2 - - + + Database is corrupted. A base de dados está corrompida. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Não foi possível ativar o modo de registo Write-Ahead Logging (WAL). Erro: %1. - + Couldn't obtain query result. Não foi possível obter o resultado da análise. - + WAL mode is probably unsupported due to filesystem limitations. O modo WAL provavelmente não é suportado devido a limitações do sistema de ficheiros. - + Couldn't begin transaction. Error: %1 - + Não foi possível iniciar a transação. Erro: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Não foi possível guardar os metadados do torrent. Erro: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Não foi possível armazenar os dados do retomar do torrent '%1'. Erro: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Não foi possível eliminar os dados do retomar do torrent '%1'. Erro: %2 - + Couldn't store torrents queue positions. Error: %1 Não foi possível armazenar as posições da lista de torrents. Erro:%1 @@ -2140,574 +2185,620 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Suporte para a 'Tabela do hash distribuído (DHT)': %1 - - - - - - - - - + + + + + + + + + ON ON - - - - - - - - - + + + + + + + + + OFF OFF - - + + Local Peer Discovery support: %1 Suporte para a 'Descoberta de fontes locais': %1 - + Restart is required to toggle Peer Exchange (PeX) support É necessário reiniciar para ativar/desativar o suporte para Troca de pares (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Falha ao retomar o torrent. Torrent: "%1". Motivo: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Falha ao retomar o torrent: Foi detetado um ID inconsistente do torrent. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Detetados dados inconsistentes: a categoria está ausente no ficheiro de configuração. A categoria será recuperada, mas as suas configurações serão redefinidas para os valores padrão. Torrent: "%1". Categoria: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Detetados dados inconsistentes: categoria inválida. Torrent: "%1". Categoria: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Detetada falta de combinação entre os caminhos para guardar da categoria recuperada e o caminho para guardar atual do torrent. O torrent agora foi trocado para o modo 'Manual'. Torrent: "%1". Categoria: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Detetados dados inconsistentes: a categoria está ausente no ficheiro de configuração. A categoria será recuperada. Torrent: "%1". Etiqueta: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Detetados dados inconsistentes: Etiqueta inválida. Torrent: "%1". Etiqueta: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Detectado evento de despertar do sistema. Reanunciando a todos os rastreadores... - + Peer ID: "%1" ID da fonte: "%1" - + HTTP User-Agent: "%1" Agente de utilizador HTTP: "%1" - + Peer Exchange (PeX) support: %1 Suporte para 'Troca de fontes (PeX)': %1 - - + + Anonymous mode: %1 Modo anónimo: %1 - - + + Encryption support: %1 Suporte à encriptação: %1 - - + + FORCED FORÇADO - + Could not find GUID of network interface. Interface: "%1" Não é possível encontrar o 'Identificador único global' (GUID) da interface de rede: "%1" - + Trying to listen on the following list of IP addresses: "%1" A tentar escutar na seguinte lista de endereços de IP: "%1" - + Torrent reached the share ratio limit. O torrent atingiu o limite da proporção de partilha. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent removido. + Torrent removido. - - - Removed torrent and deleted its content. - Torrent removido e eliminado o seu conteúdo. + Torrent removido e eliminado o seu conteúdo. - - - Torrent paused. - Torrent em pausa. + Torrent em pausa. - - - + Super seeding enabled. Modo super semeador ativado. - + Torrent reached the seeding time limit. O torrent atingiu o limite de tempo a semear. - + Torrent reached the inactive seeding time limit. - + O torrent atingiu o limite de tempo inativo a semear. - + Failed to load torrent. Reason: "%1" Falha ao carregar o torrent. Motivo: "%1" - + I2P error. Message: "%1". + Erro I2P. Mensagem: "%1". + + + + UPnP/NAT-PMP support: ON + Suporte a UPnP/NAT-PMP: ON + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - A fazer o download do torrent, por favor aguarde... Fonte: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Falha ao carregar o torrent. Fonte: "%1". Motivo: "%2" + + Session shutdown timed out. + - - UPnP/NAT-PMP support: ON - Suporte a UPnP/NAT-PMP: ON + + Removing torrent. + - - UPnP/NAT-PMP support: OFF - Suporte a UPnP/NAT-PMP: OFF + + Removing torrent and deleting its content. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Falha ao exportar o torrent. Torrent: "%1". Destino: "%2". Motivo: "%3" + + Torrent stopped. + - - Aborted saving resume data. Number of outstanding torrents: %1 - O retomar da poupança de dados foi abortado. Número de torrents pendentes: %1 + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + - System network status changed to %1 - e.g: System network status changed to ONLINE - O estado da rede do sistema foi alterado para %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + - ONLINE - ONLINE + + Merging of trackers is disabled + A fusão de trackers está desativada - OFFLINE - OFFLINE + + Trackers cannot be merged because it is a private torrent + Os trackers não podem ser fundidos porque se trata de um torrent privado - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - A configuração da rede %1 foi alterada. A atualizar a sessão + + Trackers are merged from new source + Os trackers são fundidos a partir da nova fonte - + + UPnP/NAT-PMP support: OFF + Suporte a UPnP/NAT-PMP: OFF + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Falha ao exportar o torrent. Torrent: "%1". Destino: "%2". Motivo: "%3" + + + + Aborted saving resume data. Number of outstanding torrents: %1 + O retomar da poupança de dados foi abortado. Número de torrents pendentes: %1 + + + The configured network address is invalid. Address: "%1" O endereço de rede configurado é inválido. Endereço: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Falha ao encontrar o endereço de rede configurado para escutar. Endereço: "%1" - + The configured network interface is invalid. Interface: "%1" A interface da rede configurada é inválida. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Endereço de IP inválido rejeitado enquanto aplicava a lista de endereços de IP banidos. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Adicionado o tracker ao torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Removido o tracker do torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" URL da semente adicionado ao torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Removido o URL da semente do torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent em pausa. Torrent: "%1" + Torrent em pausa. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent retomado. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Transferência do torrent concluída. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Movimentação do torrent cancelada. Torrent: "%1". Fonte: "%2". Destino: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Falha ao enfileirar a movimentação do torrent. Torrent: "%1". Fonte: "%2". Destino: "%3". Motivo: o torrent está atualmente a ser movido para o destino - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Falha ao enfileirar a movimentação do torrent. Torrent: "%1". Fonte: "%2". Destino: "%3". Motivo: ambos os caminhos apontam para o mesmo local - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Enfileirada a movimentação do torrent. Torrent: "%1". Fonte: "%2". Destino: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Iniciada a movimentação do torrent. Torrent: "%1". Destino: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Falha ao guardar a configuração das categorias. Ficheiro: "%1". Erro: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Falha ao analisar a configuração das categorias. Ficheiro: "%1". Erro: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Transferência recursiva do ficheiro .torrent dentro do torrent. Torrent fonte: "%1". Ficheiro: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Falha ao carregar o ficheiro .torrent dentro do torrent. Torrent fonte: "%1". Ficheiro: "%2". Erro: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Ficheiro de filtro dos IPs analisado com sucesso. Número de regras aplicadas: %1 - + Failed to parse the IP filter file Falha ao analisar o ficheiro de filtro dos IPs - + Restored torrent. Torrent: "%1" Torrent restaurado. Torrent: "%1" - + Added new torrent. Torrent: "%1" Novo torrent adicionado. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Erro de torrent. Torrent: "%1". Erro: "%2" - - Removed torrent. Torrent: "%1" - Torrent removido. Torrent: "%1" + Torrent removido. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent removido e eliminado o seu conteúdo. Torrent: "%1" + Torrent removido e eliminado o seu conteúdo. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Alerta de erro no ficheiro. Torrent: "%1". Ficheiro: "%2". Motivo: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Falha no mapeamento das portas UPnP/NAT-PMP. Mensagem: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Mapeamento das portas UPnP/NAT-PMP realizado com sucesso. Mensagem: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtro de IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). porta filtrada (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). porta privilegiada (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + A sessão BitTorrent encontrou um erro grave. Motivo: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Erro de proxy SOCKS5. Endereço: %1. Mensagem: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restrições de modo misto - + Failed to load Categories. %1 - + Ocorreu um erro ao carregar as Categorias. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Ocorreu um erro ao carregar a configuração das Categorias. Ficheiro: "%1". Erro: "Formato de dados inválido" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent removido, mas ocorreu uma falha ao eliminar o seu conteúdo e/ou ficheiro parcial. Torrent: "%1". Erro: "%2" + Torrent removido, mas ocorreu uma falha ao eliminar o seu conteúdo e/ou ficheiro parcial. Torrent: "%1". Erro: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 encontra-se inativo - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 está desativado - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Falha na pesquisa do DNS da URL da semente. Torrent: "%1". URL: "%2". Erro: "%3" + Falha na pesquisa do DNS da URL da semente. Torrent: "%1". URL: "%2". Erro: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Mensagem de erro recebida do URL da semente. Torrent: "%1". URL: "%2". Mensagem: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" A receber com sucesso através do IP. IP: "%1". Porta: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Falha de recepção no IP. IP: "%1". Porta: "%2/%3". Motivo: "%4" - + Detected external IP. IP: "%1" IP externo detetado. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Erro: A fila de alertas internos está cheia e os alertas foram perdidos, poderá experienciar uma degradação na performance. Tipos de alertas perdidos: "%1". Mensagem: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent movido com sucesso. Torrent: "%1". Destino: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Falha ao mover o torrent. Torrent: "%1". Fonte: "%2". Destino: "%3". Motivo: "%4" - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - Operação abortada - - - - - Create new torrent file failed. Reason: %1. - Falha ao criar um novo ficheiro torrent. Motivo: %1. + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operação abortada + Operação abortada + + Create new torrent file failed. Reason: %1. - Falha ao criar um novo ficheiro torrent. Motivo: %1. + Falha ao criar um novo ficheiro torrent. Motivo: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Ocorreu um erro ao tentar semear "%1" para o torrent "%2". Motivo: %3 - + Peer "%1" is added to torrent "%2" A semente "%1" foi adicionada ao torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - Não foi possível salvar no arquivo. Motivo: "%1". O torrent agora está no modo "somente upload". + Não foi possível guardar no ficheiro. Motivo: "%1". O torrent agora está no modo "somente upload". - + Download first and last piece first: %1, torrent: '%2' - Fazer o download da primeira e última peça primeiro: %1, torrent: '%2' + Fazer a transferência da primeira e última parte primeiro: %1, torrent: '%2' - + On On - + Off Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Falha ao gerar dados de resumo. Torrent: "%1". Motivo: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Falha ao restaurar o torrent. Os arquivos provavelmente foram movidos ou o armazenamento não está acessível. Torrent: "%1". Motivo: "%2" - + Missing metadata Metadados faltando - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Falha ao renomear. Torrent: "%1", ficheiro: "%2", razão: "%3" - + Performance alert: %1. More info: %2 Alerta de performance: %1. Mais informações: %2 @@ -2728,184 +2819,198 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' O parâmetro '%1' deverá seguir a sintaxe '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' O parâmetro '%1' deverá seguir a sintaxe '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Era esperado o número inteiro na variável ambiente '%1', mas foi obtido '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - O parâmetro '%1' deverá seguir a sintaxe '%1=%2' + O parâmetro '%1' deverá seguir a sintaxe '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Era esperado %1 na variável ambiente '%2', mas foi obtido '%3' - - + + %1 must specify a valid port (1 to 65535). %1 deverá especificar uma porta válida (entre 1 e 65535). - + Usage: Utilização: - + [options] [(<filename> | <url>)...] [opções] [(<filename> | <url>)...] - + Options: Opções: - + Display program version and exit Mostrar a versão do programa e sair - + Display this help message and exit Mostrar esta mensagem de ajuda e sair - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + O parâmetro '%1' deverá seguir a sintaxe '%1=%2' + + + + Confirm the legal notice + + + + + port porta - - Change the Web UI port - Alterar a porta da interface web + + Change the WebUI port + Alterar a porta WebUI - + Change the torrenting port Alterar a porta de torrent - + Disable splash screen Desativar ecrã de arranque - + Run in daemon-mode (background) Executar no modo daemon (em segundo plano) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Guardar ficheiros de configuração em <dir> - - + + name nome - + Store configuration files in directories qBittorrent_<name> Guardar ficheiros de configuração em diretorias qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Retalhar em ficheiros fastresume libtorrent e fazer caminhos de ficheiro relativos para a diretoria do perfil - + files or URLs ficheiros ou URLs - + Download the torrents passed by the user - Download dos torrents enviados pelo utilizador + Transferir os torrents enviados pelo utilizador - + Options when adding new torrents: Opções ao adicionar novos torrents: - + path caminho - + Torrent save path Caminho para guardar o torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Adicionar torrents como iniciados ou pausados + Adicionar torrents como iniciados ou pausados - + Skip hash check Ignorar a verificação do hash - + Assign torrents to category. If the category doesn't exist, it will be created. Atribuir os torrents a categorias. Se ela não existir será criada. - + Download files in sequential order - Fazer o download sequencial dos ficheiros + Transferir os ficheiros por ordem sequencial - + Download first and last pieces first - Fazer o download da primeira e última peça primeiro + Transferir a primeira e a última parte primeiro - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Especifica se a caixa de diálogo "Adicionar novo torrent" é aberta ao adicionar um torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Os valores das opções podem ser fornecidos através de variáveis de ambiente. Para a opção denominada 'nome-parâmetro', o nome da variável de ambiente é 'QBT_PARAMETER_NAME' (em maiúsculas, '-' substituído por '_'). Para passar os valores do sinalizador, defina a variável como '1' ou 'VERDADEIRO'. Por exemplo, para desativar o ecrã inicial: - + Command line parameters take precedence over environment variables Os parâmetros da linha de comando têm precedência sobre as variáveis de ambiente - + Help Ajuda @@ -2913,17 +3018,17 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para CategoryFilterModel - + Categories Categorias - + All Tudo - + Uncategorized Sem categoria @@ -2957,13 +3062,21 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para - Resume torrents - Retomar torrents + Start torrents + + Stop torrents + + + + Resume torrents + Retomar torrents + + Pause torrents - Pausar torrents + Pausar torrents @@ -2974,15 +3087,20 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para ColorWidget - + Edit... Editar... - + Reset Redefinir + + + System + + CookiesDialog @@ -3023,22 +3141,22 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Falha ao carregar a folha de estilo do tema personalizado. %1 - + Failed to load custom theme colors. %1 - + Falha ao carregar as cores do tema personalizado. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Falha ao carregar as cores do tema predefinido. %1 @@ -3055,23 +3173,27 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para + Also remove the content files + + + Also permanently delete the files - Também eliminar permanentemente os ficheiros + Também eliminar permanentemente os ficheiros - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Quer eliminar '%1' da lista de transferências? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Quer remover estes %1 torrents selecionados da lista de transferências? - + Remove Remover @@ -3081,30 +3203,30 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para Download from URLs - Fazer o download a partir de URLs + Transferir a partir de URLs - + Add torrent links Adicionar ligações torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Uma ligação por linha (são suportados ligações HTTP, ligações magnet e info-hashes) Download - Download + Transferir - + No URL entered Nenhum URL inserido - + Please type at least one URL. Por favor, introduza pelo menos um URL. @@ -3263,64 +3385,91 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para Erro de análise: O ficheiro do filtro não é um ficheiro PeerGuardian P2B válido. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + A transferir torrent... Fonte: "%1" - Trackers cannot be merged because it is a private torrent - + Os trackers não podem ser fundidos porque se trata de um torrent privado - + Torrent is already present - O torrent já se encontra presente + O torrent já se encontra presente + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - O torrent '%1' já existe na lista de transferências. Deseja unir os rastreadores da nova fonte? + O torrent '%1' já existe na lista de transferências. Deseja unir os rastreadores da nova fonte? GeoIPDatabase - - + + Unsupported database file size. Tamanho do ficheiro da base de dados não suportado. - + Metadata error: '%1' entry not found. Erro de metadados: Entrada '%1' não encontrada. - + Metadata error: '%1' entry has invalid type. Erro de metadados: A entrada '%1' é de um tipo inválido. - + Unsupported database version: %1.%2 Versão não suportada da base de dados: %1.%2 - + Unsupported IP version: %1 Versão não suportada do IP: %1 - + Unsupported record size: %1 Tamanho de gravação não suportado: %1 - + Database corrupted: no data section found. Base de dados corrompida: secção de dados não encontrada. @@ -3328,17 +3477,17 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 O tamanho do pedido HTTP excede o limite, a fechar socket. Limite: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Pedido inválido de Http, a encerrar socket: IP: %1 @@ -3379,36 +3528,64 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para IconWidget - + Browse... Navegar... - + Reset Redefinir - + Select icon Selecionar ícone - + Supported image files + Ficheiros de imagem suportados + + + + LegalNotice + + + Legal Notice + Aviso legal + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + O qBittorrent é um programa de partilha de ficheiros. Ao executar um torrent, os dados do torrent estão disponíveis para todos os utilizadores. Todo o conteúdo partilhado é da sua inteira responsabilidade. + + + + No further notices will be issued. + Não será emitido mais nenhum aviso adicional. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 foi bloqueado. Motivo: %2. - + %1 was banned 0.0.0.0 was banned %1 foi banido @@ -3417,91 +3594,62 @@ Suporta os formatos: S01E01, 1x1, 2017.12.31 e 31.12.2017 (Suporte também para Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 é um parâmetro de linha de comandos desconhecido. - - + + %1 must be the single command line parameter. %1 deverá ser o único parâmetro da linha de comandos. - - You cannot use %1: qBittorrent is already running for this user. - Não pode utilizar %1: O qBittorrent já se encontra em utilização por este utilizador. - - - + Run application with -h option to read about command line parameters. Executa a aplicação com a opção -h para saber mais acerca dos parâmetros da linha de comandos. - + Bad command line Linha de comandos inválida - + Bad command line: Linha de comandos inválida: - + An unrecoverable error occurred. - + Ocorreu um erro irrecuperável. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Aviso legal - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - O qBittorrent é um programa de partilha de ficheiros. Ao executar um torrent, os dados do torrent estão disponíveis para todos os utilizadores. Todo o conteúdo partilhado é da sua inteira responsabilidade. - - - - No further notices will be issued. - Não será emitido mais nenhum aviso adicional. - - - - Press %1 key to accept and continue... - Prima %1 para aceitar e continuar... + O qBittorrent encontrou um erro irrecuperável. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - O qBittorrent é um programa de partilha de ficheiros. Ao executar um torrent, os dados do ficheiro ficam disponíveis para todos os utilizadores. Todo o conteúdo partilhado é da sua inteira responsabilidade. - -Não serão emitidos mais avisos relacionados com este assunto. + + You cannot use %1: qBittorrent is already running. + Não pode usar o %1: o qBittorrent já está em execução. - - Legal notice - Aviso legal + + Another qBittorrent instance is already running. + Uma outra instância do qBittorrent já está em execução. - - Cancel - Cancelar + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Concordo + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3512,621 +3660,706 @@ Não serão emitidos mais avisos relacionados com este assunto. &Editar - + &Tools Ferramen&tas - + &File &Ficheiro - + &Help Aj&uda - + On Downloads &Done Ao t&erminar as transferências - + &View &Ver - + &Options... &Opções... - &Resume - &Retomar + &Retomar - + &Remove &Remover - + Torrent &Creator &Criador de torrents - - + + Alternative Speed Limits Limites alternativos de velocidade - + &Top Toolbar &Barra superior - + Display Top Toolbar Mostrar a barra superior - + Status &Bar &Barra de estado - + Filters Sidebar Barra lateral dos filtros - + S&peed in Title Bar &Velocidade na barra de título - + Show Transfer Speed in Title Bar Mostrar a velocidade de transferência na barra de título - + &RSS Reader Leitor &RSS - + Search &Engine - Motor bu&sca + Motor de &pesquisa - + L&ock qBittorrent Bl&oquear o qBittorrent - + Do&nate! Do&ar! - + + Sh&utdown System + + + + &Do nothing &Não fazer nada - + Close Window Fechar janela - R&esume All - R&etomar tudo + R&etomar tudo - + Manage Cookies... Gerir cookies... - + Manage stored network cookies Gerir os cookies de rede guardados - + Normal Messages Mensagens normais - + Information Messages Mensagens informativas - + Warning Messages Mensagens de aviso - + Critical Messages Mensagens críticas - + &Log &Registo - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Definir limite global de velocidade... - + Bottom of Queue Fundo da fila - + Move to the bottom of the queue Mover para o fundo da fila - + Top of Queue Topo da fila - + Move to the top of the queue Mover para o topo da fila - + Move Down Queue Mover abaixo na fila - + Move down in the queue Mover abaixo na fila - + Move Up Queue Mover acima na fila - + Move up in the queue Mover acima na fila - + &Exit qBittorrent S&air do qBittorrent - + &Suspend System &Suspender sistema - + &Hibernate System &Hibernar sistema - S&hutdown System - D&esligar sistema + D&esligar sistema - + &Statistics Estatística&s - + Check for Updates Pesquisar por atualizações - + Check for Program Updates Pesquisar por atualizações da aplicação - + &About &Acerca - &Pause - &Pausar + &Pausar - P&ause All - P&ausar tudo + P&ausar tudo - + &Add Torrent File... &Adicionar ficheiro torrent... - + Open Abrir - + E&xit Sa&ir - + Open URL Abrir URL - + &Documentation &Documentação - + Lock Bloquear - - - + + + Show Mostrar - + Check for program updates Pesquisar por atualizações da aplicação - + Add Torrent &Link... Adicionar &ligação torrent... - + If you like qBittorrent, please donate! Se gosta do qBittorrent, ajude-nos e faça uma doação! - - + + Execution Log Registo de execução - + Clear the password Limpar palavra-passe - + &Set Password Definir palavra-pa&sse - + Preferences Preferências - + &Clear Password &Limpar palavra-passe - + Transfers Transferências - - + + qBittorrent is minimized to tray O qBittorrent foi minimizado para a barra de tarefas - - - + + + This behavior can be changed in the settings. You won't be reminded again. Este comportamento pode ser modificado nas definições. Você não será novamente relembrado. - + Icons Only Apenas ícones - + Text Only Apenas texto - + Text Alongside Icons Texto ao lado dos ícones - + Text Under Icons Texto abaixo dos ícones - + Follow System Style Utilizar o estilo do sistema - - + + UI lock password Palavra-passe da interface - - + + Please type the UI lock password: Escreva a palavra-passe da interface: - + Are you sure you want to clear the password? Tem a certeza que pretende eliminar a palavra-passe? - + Use regular expressions Utilizar expressões regulares - - Search - Pesquisar + + + Search Engine + Motor de pesquisa - - Transfers (%1) - Transferências (%1) + + Search has failed + A pesquisa falhou - Recursive download confirmation - Confirmação de download recursivo + + Search has finished + A pesquisa terminou - Never - Nunca + + Search + Pesquisar + + + + Transfers (%1) + Transferências (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. O qBittorrent foi atualizado e necessita de ser reiniciado para que as alterações tenham efeito. - + qBittorrent is closed to tray O qBittorrent foi fechado para a barra de tarefas - + Some files are currently transferring. Ainda estão a ser transferidos alguns ficheiros. - + Are you sure you want to quit qBittorrent? Tem a certeza que deseja sair do qBittorrent? - + &No &Não - + &Yes &Sim - + &Always Yes &Sair sempre - + Options saved. Opções guardadas. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Python Runtime em falta - + qBittorrent Update Available Atualização disponível - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? - É necessário o Python para poder utilizar o motor de busca, mas parece que não existe nenhuma versão instalada. + É necessário o Python para poder utilizar o motor de pesquisa, mas parece que não existe nenhuma versão instalada. Gostaria de o instalar agora? - + Python is required to use the search engine but it does not seem to be installed. - É necessário o Python para poder utilizar o motor de busca, mas parece que não existe nenhuma versão instalada. + É necessário o Python para poder utilizar o motor de pesquisa, mas parece que não existe nenhuma versão instalada. - - + + Old Python Runtime Python Runtime antigo - + A new version is available. Está disponível uma nova versão. - + Do you want to download %1? - Deseja fazer o download de %1? + Pretende transferir %1? - + Open changelog... Abrir histórico de alterações... - + No updates available. You are already using the latest version. Não existem atualizações disponíveis. Você já possui a versão mais recente. - + &Check for Updates Pesq&uisar por atualizações - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? A sua versão do Python (%1) está desatualizada. Requerimento mínimo: %2. Quer instalar uma versão mais recente agora? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - A sua versão do Python (%1) está desatualizada. Atualize para a versão mais recente para que os motores de busca funcionem. + A sua versão do Python (%1) está desatualizada. Atualize para a versão mais recente para que os motores de pesquisa funcionem. Requerimento mínimo: %2. - + + Paused + Em pausa + + + Checking for Updates... A pesquisar atualizações... - + Already checking for program updates in the background O programa já está à procura de atualizações em segundo plano - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error - Ocorreu um erro ao tentar fazer o download + Ocorreu um erro ao tentar transferir - Python setup could not be downloaded, reason: %1. Please install it manually. - Não foi possível fazer o download do Python. Motivo: %1. + Não foi possível fazer a transferência do Python. Motivo: %1. Por favor, instale-o manualmente. - - + + Invalid password Palavra-passe inválida - + Filter torrents... - + Filtrar torrents... - + Filter by: - + Filtrar por: - + The password must be at least 3 characters long A palavra-passe deve ter pelo menos 3 caracteres - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - O torrent '%1' contém ficheiros .torrent. Quer continuar com a sua transferência? - - - + The password is invalid A palavra-passe é inválida - + DL speed: %1 e.g: Download speed: 10 KiB/s Veloc. download: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Vel. upload: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Ocultar - + Exiting qBittorrent A sair do qBittorrent - + Open Torrent Files Abrir ficheiros torrent - + Torrent Files Ficheiros torrent @@ -4156,12 +4389,12 @@ Por favor, instale-o manualmente. Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Erro do DNS dinâmico: o qBittorrent foi colocado na lista negra pelo serviço. Submeta um relatório do erro em http://bugs.qbittorrent.org. Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Erro de DNS dinâmico: %1 foi devolvido pelo serviço, submeta um relatório do erro em http://bugs.qbittorrent.org. @@ -4187,133 +4420,133 @@ Por favor, instale-o manualmente. Net::DownloadHandlerImpl - - + + I/O Error: %1 Erro de E/S: %1 - + The file size (%1) exceeds the download limit (%2) O tamanho do ficheiro (%1) excede o limite de transferência (%2) - + Exceeded max redirections (%1) Máximo de redirecionamentos excedido (%1) - + Redirected to magnet URI Redirecionado para URI magnet - + The remote host name was not found (invalid hostname) O nome do servidor remoto não foi encontrado (nome do servidor inválido) - + The operation was canceled A operação foi cancelada - + The remote server closed the connection prematurely, before the entire reply was received and processed O servidor remoto terminou a ligação prematuramente antes da resposta ser recebida e processada - + The connection to the remote server timed out A ligação com o servidor remoto atingiu o tempo limite - + SSL/TLS handshake failed Falha na negociação SSL/TLS - + The remote server refused the connection O servidor remoto recusou a ligação - + The connection to the proxy server was refused Foi recusada a ligação ao servidor proxy - + The proxy server closed the connection prematurely O servidor proxy terminou a ligação prematuramente - + The proxy host name was not found Não foi encontrado o nome do host de proxy - + The connection to the proxy timed out or the proxy did not reply in time to the request sent A ligação ao proxy atingiu o limite de tempo ou o proxy não respondeu no tempo limite - + The proxy requires authentication in order to honor the request but did not accept any credentials offered O proxy requer a autenticação do pedido mas não aceitou as credenciais indicadas - + The access to the remote content was denied (401) O acesso ao conteúdo remoto foi recusado (401) - + The operation requested on the remote content is not permitted A operação solicitada no conteúdo remoto não é permitida - + The remote content was not found at the server (404) Não foi encontrado o conteúdo remoto no servidor (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted O servidor remoto requer autenticação para mostrar o conteúdo, mas as credenciais indicadas não foram aceites - + The Network Access API cannot honor the request because the protocol is not known A API de acesso à rede não cumpriu o pedido porque o protocolo não é conhecido - + The requested operation is invalid for this protocol A operação solicitada é inválida para este protocolo - + An unknown network-related error was detected Foi detetado um erro desconhecido relacionado com a rede - + An unknown proxy-related error was detected Ocorreu um erro desconhecido relacionado com o proxy - + An unknown error related to the remote content was detected Foi detetado um erro desconhecido relacionado com o conteúdo remoto - + A breakdown in protocol was detected Ocorreu um erro relacionado com o protocolo - + Unknown error Erro desconhecido @@ -4321,7 +4554,12 @@ Por favor, instale-o manualmente. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" A ignorar erro SSL, URL: "%1", erros: "%2" @@ -5379,7 +5617,7 @@ Por favor, instale-o manualmente. Couldn't download IP geolocation database file. Reason: %1 - Não foi possível fazer o download da base de dados de geolocalização dos IPs. Motivo: %1 + Não foi possível fazer a transferência da base de dados de geolocalização dos IPs. Motivo: %1 @@ -5693,294 +5931,295 @@ Por favor, instale-o manualmente. BitTorrent - + RSS RSS - Web UI - Interface Web + Interface Web - + Advanced Avançado - + Customize UI Theme... - + Personalizar tema da interface... - + Transfer List Lista de transferências - + Confirm when deleting torrents Confirmar eliminação de torrents - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Utilizar cores alternadas para as linhas - + Hide zero and infinity values Ocultar os valores zero e infinito - + Always Sempre - Paused torrents only - Apenas os torrents pausados + Apenas os torrents pausados - + Action on double-click Ação do duplo clique - + Downloading torrents: A transferir torrents: - - Start / Stop Torrent - Iniciar/Parar torrent + Iniciar/Parar torrent - - + + Open destination folder Abrir pasta de destino - - + + No action Nenhuma ação - + Completed torrents: Torrents completos: - + Auto hide zero status filters - + Ocultar filtro de estado zero - + Desktop Área de trabalho - + Start qBittorrent on Windows start up Iniciar o qBittorrent ao arrancar o Windows - + Show splash screen on start up Mostrar ecrã de arranque - + Confirmation on exit when torrents are active Confirmação necessária ao sair caso existam torrents ativos - + Confirmation on auto-exit when downloads finish Confirmação durante a saída automática ao terminar as transferências - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Disposição do conteúdo do torrent: - + Original Original - + Create subfolder Criar subpasta - + Don't create subfolder Não criar subpasta - + The torrent will be added to the top of the download queue O torrent será adicionado ao início da fila de transferências - + Add to top of queue The torrent will be added to the top of the download queue Adicionar ao início da fila - + When duplicate torrent is being added - + Quando um torrent duplicado for adicionado - + Merge trackers to existing torrent - + Unir rastreadores ao torrent existente + + + + Keep unselected files in ".unwanted" folder + Manter ficheiros não selecionados na pasta ".unwanted" - + Add... Adicionar... - + Options.. Opções.. - + Remove Remover - + Email notification &upon download completion - Enviar notificação &por e-mail ao terminar o download + Enviar notificação &por e-mail ao terminar a transferência + + + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + - + Peer connection protocol: Protocolo de ligação de pares: - + Any Qualquer um - + I2P (experimental) - - - - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + I2P (experimental) - + Mixed mode - + Modo misto - + Some options are incompatible with the chosen proxy type! Algumas opções são incompatíveis com o tipo de proxy escolhido! - + If checked, hostname lookups are done via the proxy Se selecionado, as pesquisas de nome de servidor são feitas por meio do proxy - + Perform hostname lookup via proxy - + Realizar a consulta de hostname via proxy - + Use proxy for BitTorrent purposes Utilize um proxy para fins de BitTorrent - + RSS feeds will use proxy Os feeds RSS irão usar proxy - + Use proxy for RSS purposes Utilizar proxy para fins de RSS - + Search engine, software updates or anything else will use proxy Mecanismo de pesquisa, atualizações de software ou outra coisa qualquer usará proxy - + Use proxy for general purposes Utilizar proxy para fins gerais - + IP Fi&ltering Fi&ltro de IP - + Schedule &the use of alternative rate limits Agendar &a utilização dos limites de rácio alternativos - + From: From start time De: - + To: To end time Para: - + Find peers on the DHT network Encontrar fontes na rede DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5989,140 +6228,188 @@ Exigir encriptação: Apenas liga a fontes com protocolo de encriptação Desativar encriptação: Apenas liga a fontes sem protocolo de encriptação - + Allow encryption Permitir encriptação - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mais informação</a>) - + Maximum active checking torrents: Máximo de torrents ativos em verificação: - + &Torrent Queueing Fila de &torrents - + When total seeding time reaches - + Quando o tempo total de semear for atingido - + When inactive seeding time reaches - + Quando o tempo inativo de semear for atingido - A&utomatically add these trackers to new downloads: - Adicionar a&utomaticamente estes rastreadores às novas transferências: + Adicionar a&utomaticamente estes rastreadores às novas transferências: - + RSS Reader Leitor RSS - + Enable fetching RSS feeds Ativar a procura de fontes RSS - + Feeds refresh interval: Intervalo de atualização das fontes: - + + Same host request delay: + Atraso na solicitação do mesmo host: + + + Maximum number of articles per feed: Número máximo de artigos por fonte: - - - + + + min minutes min - + Seeding Limits Limites do semear - Pause torrent - Pausar torrent + Pausar torrent - + Remove torrent Remover torrent - + Remove torrent and its files Remover o torrent e os seus ficheiros - + Enable super seeding for torrent Ativar o super semear para o torrent - + When ratio reaches Quando o rácio atingir - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader - Download automático de torrents RSS + Transferidor automático de RSS Torrent - + Enable auto downloading of RSS torrents Ativar a transferência automática de torrents RSS - + Edit auto downloading rules... Editar regras da transferência automática... - + RSS Smart Episode Filter Filtro inteligente de episódios RSS - + Download REPACK/PROPER episodes - Download de episódios REPACK/PROPER + Transferir episódios REPACK/PROPER - + Filters: Filtros: - + Web User Interface (Remote control) Interface web do utilizador (controlo remoto) - + IP address: Endereço IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6131,42 +6418,41 @@ Especifique um endereço IPv4 ou IPv6. Você pode especificar "0.0.0.0" "::" para qualquer endereço IPv6, ou "*" para IPv4 e IPv6. - + Ban client after consecutive failures: Banir cliente depois de várias falhas consecutivas: - + Never Nunca - + ban for: banir durante: - + Session timeout: Terminado o tempo da sessão: - + Disabled Desativado(a) - Enable cookie Secure flag (requires HTTPS) - Ativar cookie bandeira segura (requer HTTPS) + Ativar cookie bandeira segura (requer HTTPS) - + Server domains: Domínio do servidor: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6179,442 +6465,495 @@ você deverá colocar os nomes de domínio usados pelo servidor da interface web Utilize ';' para dividir várias entradas. Pode usar o asterisco '*'. - + &Use HTTPS instead of HTTP &Utilizar o HTTPS como alternativa ao HTTP - + Bypass authentication for clients on localhost Desativar a autenticação para clientes no localhost - + Bypass authentication for clients in whitelisted IP subnets Desativar a autenticação para clientes pertencentes à lista de IPs confiáveis - + IP subnet whitelist... Sub-rede de IP confiável... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Especifique IPs de proxies reversos (ou sub-máscaras, ex.: 0.0.0.0/24) para utilizar no endereço do cliente encaminhado (atributo X-Forwarded-For). Utilize ';' para dividir múltiplas entradas. - + Upda&te my dynamic domain name A&tualizar o nome de domínio dinâmico - + Minimize qBittorrent to notification area Minimizar o qBittorrent para a área de notificação - + + Search + + + + + WebUI + + + + Interface Interface - + Language: Idioma: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Estilo do ícone: - - + + Normal Normal - + File association Associação de ficheiros - + Use qBittorrent for .torrent files Associar o qBittorrent aos ficheiros .torrent - + Use qBittorrent for magnet links Associar o qBittorrent às ligações magnet - + Check for program updates Pesquisar por atualizações da aplicação - + Power Management Gestão de energia - + + &Log Files + + + + Save path: Guardar em: - + Backup the log file after: Fazer backup do ficheiro de registo após: - + Delete backup logs older than: Eliminar registos de backup anteriores a: - + + Show external IP in status bar + + + + When adding a torrent Ao adicionar um torrent - + Bring torrent dialog to the front Trazer o diálogo do torrent para a frente - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Eliminar também os ficheiros .torrent cuja adição foi cancelada - + Also when addition is cancelled Também quando a adição for cancelada - + Warning! Data loss possible! Atenção! Possível perda de dados! - + Saving Management Gestão do "Guardar" - + Default Torrent Management Mode: Modo de gestão do torrent por defeito: - + Manual Manual - + Automatic Automático - + When Torrent Category changed: Quando a 'Categoria do torrent' for alterada: - + Relocate torrent Realocar torrent - + Switch torrent to Manual Mode Mudar o torrent para o 'Modo manual' - - + + Relocate affected torrents Realocar torrents afetados - - + + Switch affected torrents to Manual Mode Mudar os torrents afetados para o 'Modo manual' - + Use Subcategories Utilizar subcategorias - + Default Save Path: Caminho padrão para o 'Guardar': - + Copy .torrent files to: Copiar os ficheiros .torrent para: - + Show &qBittorrent in notification area Mostrar o &qBittorrent na área de notificação - &Log file - Ficheiro de &registo + Ficheiro de &registo - + Display &torrent content and some options Mostrar o conteúdo do &torrent e algumas opções - + De&lete .torrent files afterwards E&liminar os ficheiros .torrent mais tarde - + Copy .torrent files for finished downloads to: Copiar os ficheiros .torrent das transferências terminadas para: - + Pre-allocate disk space for all files Pré-alocar espaço em disco para todos os ficheiros - + Use custom UI Theme Utilizar um tema personalizado da interface web - + UI Theme file: Ficheiro do tema da interface web: - + Changing Interface settings requires application restart Para alterar as definições da interface necessita de reiniciar a aplicação - + Shows a confirmation dialog upon torrent deletion Exibe um diálogo de confirmação durante a eliminação de torrents - - + + Preview file, otherwise open destination folder Pré-visualizar ficheiro, alternativamente abrir a pasta de destino - - Show torrent options - Mostrar opções do torrent + Mostrar opções do torrent - + Shows a confirmation dialog when exiting with active torrents Exibe um diálogo de confirmação ao sair, caso existam torrents ativos - + When minimizing, the main window is closed and must be reopened from the systray icon Ao minimizar, a janela principal é fechada e deverá ser reaberta a partir do ícone da bandeja do sistema - + The systray icon will still be visible when closing the main window O ícone da barra de tarefas permanecerá visível mesmo ao fechar a janela principal - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Fechar o qBittorrent para a área de notificação - + Monochrome (for dark theme) Monocromático (para o tema escuro) - + Monochrome (for light theme) Monocromático (para o tema claro) - + Inhibit system sleep when torrents are downloading Impedir a suspensão do sistema caso existam torrents a serem transferidos - + Inhibit system sleep when torrents are seeding Impedir a suspensão do sistema caso existam torrents a serem semeados - + Creates an additional log file after the log file reaches the specified file size Cria um ficheiro adicional com o registo de atividade depois do ficheiro do registo de atividade atingir o tamanho especificado - + days Delete backup logs older than 10 days dias - + months Delete backup logs older than 10 months meses - + years Delete backup logs older than 10 years anos - + Log performance warnings Registar avisos de desempenho - The torrent will be added to download list in a paused state - O torrent será adicionado à lista de downloads em estado de pausa + O torrent será adicionado à lista de transferências em estado de pausa - + Do not start the download automatically - The torrent will be added to download list in a paused state - Não iniciar o download automaticamente + The torrent will be added to download list in a stopped state + Não iniciar a transferência automaticamente - + Whether the .torrent file should be deleted after adding it Se o ficheiro .torrent deve ser eliminado após ter sido adicionado - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - Alocar o tamanho do ficheiro inteiro no disco antes de iniciar os downloads, para minimizar a fragmentação. Útil apenas para HDDs. + Atribui o tamanho total dos ficheiros no disco antes de iniciar as transferências, para minimizar a fragmentação. Útil apenas para HDDs. - + Append .!qB extension to incomplete files Adicionar a extensão .!qB aos ficheiros incompletos - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Quando está a ser descarregado um torrent, oferecer para adicionar torrents a partir de ficheiros .torrent encontrados dentro deles - + Enable recursive download dialog - Ativar o diálogo de download recursivo + Ativar o diálogo de transferência recursiva - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automático: Várias propriedades do torrent (ex: caminho para guardar) serão decididas pela categoria associada Manual: Várias propriedades do torrent (ex: caminho para guardar) deverão ser decididas manualmente - + When Default Save/Incomplete Path changed: Quando o caminho padrão para Guardar/Incompleto mudar: - + When Category Save Path changed: Quando alterar a 'Categoria do caminho para guardar': - + Use Category paths in Manual Mode Utilizar os caminhos de 'Categoria' no 'Modo manual' - + Resolve relative Save Path against appropriate Category path instead of Default one Resolver o 'Caminho para guardar' relativo contra o 'Caminho da categoria' apropriado ao invés do 'Caminho padrão' - + Use icons from system theme Usar ícones do tema do sistema - + Window state on start up: Estado da janela ao iniciar: - + qBittorrent window state on start up Estado da janela do qBittorrent ao iniciar - + Torrent stop condition: Condição para parar torrent: - - + + None Nenhum - - + + Metadata received Metadados recebidos - - + + Files checked Ficheiros verificados - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: Usar outro caminho para os torrents incompletos: - + Automatically add torrents from: Adicionar automaticamente os torrents de: - + Excluded file names Nomes de ficheiro excluídos - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6643,841 +6982,914 @@ readme.txt: filtra o nome exato do ficheiro. readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas não 'readme10.txt'. - + Receiver Recetor - + To: To receiver Para: - + SMTP server: Servidor SMTP: - + Sender Emissor - + From: From sender De: - + This server requires a secure connection (SSL) Este servidor requer uma ligação segura (SSL) - - + + Authentication Autenticação - - - - + + + + Username: Nome de utilizador: - - - - + + + + Password: Palavra-passe: - + Run external program Executar programa externo - Run on torrent added - Executar ao adicionar o torrent + Executar ao adicionar o torrent - Run on torrent finished - Executar ao concluir o torrent + Executar ao concluir o torrent - + Show console window Mostrar a janela da consola - + TCP and μTP TCP e μTP - + Listening Port Porta de receção - + Port used for incoming connections: Porta utilizada para as ligações recebidas: - + Set to 0 to let your system pick an unused port Definir para 0 para deixar o seu sistema escolher uma porta não utilizada - + Random Aleatória - + Use UPnP / NAT-PMP port forwarding from my router Utilizar o reencaminhamento de portas UPnP/NAT-PMP do meu router - + Connections Limits Limites das ligações - + Maximum number of connections per torrent: Número máximo de ligações por torrent: - + Global maximum number of connections: Número máximo de ligações globais: - + Maximum number of upload slots per torrent: Número máximo de slots de upload por torrent: - + Global maximum number of upload slots: Número máximo de slots de upload por torrent: - + Proxy Server Servidor proxy - + Type: Tipo: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Servidor: - - - + + + Port: Porta: - + Otherwise, the proxy server is only used for tracker connections Se não o fizer, o servidor proxy só será utilizado para as ligações aos trackers - + Use proxy for peer connections Utilizar um proxy para ligações às fontes - + A&uthentication A&utenticação - + Info: The password is saved unencrypted Informação: A palavra-passe é guardada sem encriptação - + Filter path (.dat, .p2p, .p2b): Filtrar caminho (.dat, .p2p, .p2b): - + Reload the filter Recarregar o filtro - + Manually banned IP addresses... Endereços de IP banidos manualmente... - + Apply to trackers Aplicar aos rastreadores - + Global Rate Limits Limites de rácio globais - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Upload: - - + + Download: - Download: + Transferência: - + Alternative Rate Limits Limites de rácio alternativo - + Start time Hora de início - + End time Hora de fim - + When: Quando: - + Every day Diariamente - + Weekdays Dias da semana - + Weekends Fins de semana - + Rate Limits Settings Definições dos limites de rácio - + Apply rate limit to peers on LAN Aplicar o limite de rácio às fontes nas ligações LAN - + Apply rate limit to transport overhead Aplicar os limites de rácio para o transporte "overhead" - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Aplicar os limites de rácio ao protocolo µTP - + Privacy Privacidade - + Enable DHT (decentralized network) to find more peers Ativar DHT (rede descentralizada) para encontrar mais fontes - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Trocar fontes com clientes Bittorrent compatíveis (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Ativar a 'Troca de Fontes' (PeX) para encontrar mais fontes - + Look for peers on your local network Procurar fontes na rede local - + Enable Local Peer Discovery to find more peers Ativar 'Descoberta de fontes locais' para encontrar mais fontes - + Encryption mode: Modo de encriptação: - + Require encryption Requer encriptação - + Disable encryption Desativar encriptação - + Enable when using a proxy or a VPN connection Ativar ao utilizar uma ligação proxy ou VPN - + Enable anonymous mode Ativar o modo anónimo - + Maximum active downloads: Nº máximo de transferências ativas: - + Maximum active uploads: Nº máximo de uploads ativos: - + Maximum active torrents: Nº máximo de torrents ativos: - + Do not count slow torrents in these limits Não considerar os torrents lentos para estes limites - + Upload rate threshold: Limite do rácio de upload: - + Download rate threshold: - Limite do rácio de download: + Limite do rácio de transferência: - - - + + + + sec seconds seg - + Torrent inactivity timer: Temporizador de inatividade do torrent: - + then depois - + Use UPnP / NAT-PMP to forward the port from my router Utilizar o reencaminhamento de portas UPnP/NAT-PMP do meu router - + Certificate: Certificado: - + Key: Chave: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informação acerca dos certificados</a> - + Change current password Alterar a palavra-passe atual - Use alternative Web UI - Utilizar a interface web alternativa + Utilizar a interface web alternativa - + Files location: Localização dos ficheiros: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Segurança - + Enable clickjacking protection Ativar a proteção contra o "clickjacking" - + Enable Cross-Site Request Forgery (CSRF) protection Ativar a proteção contra falsificação de solicitação entre sites (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Ativar a validação do cabeçalho do Host - + Add custom HTTP headers Adicionar cabeçalhos HTTP personalizados - + Header: value pairs, one per line Cabeçalho: pares de valores, um por linha - + Enable reverse proxy support Ativar o suporte para proxy reverso - + Trusted proxies list: Lista de proxies confiáveis: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Serviço: - + Register Registar - + Domain name: Nome do domínio: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Ao ativar estas opções, poderá <strong>perder permanentemente</strong> os seus ficheiros .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Se ativar a segunda opção (&ldquo;Também quando a adição for cancelada&rdquo;) o ficheiro .torrent <strong>será eliminado</strong>, mesmo que prima &ldquo;<strong>Cancelar</ strong>&rdquo; no diálogo &ldquo;Adicionar torrent&rdquo; - + Select qBittorrent UI Theme file Selecione o ficheiro do tema da interface do utilizador do qBittorrent - + Choose Alternative UI files location Escolher localização alternativa para os ficheiros da interface do utilizador - + Supported parameters (case sensitive): Parâmetros suportados (sensível a maiúsculas/minúsculas): - + Minimized Minimizado - + Hidden Escondido - + Disabled due to failed to detect system tray presence Desativado devido a falha ao detectar presença na área de notificação do sistema - + No stop condition is set. Não foi definida nenhuma condição para parar. - + Torrent will stop after metadata is received. O torrent será parado após a recepção dos metadados. - - Torrents that have metadata initially aren't affected. - Os torrents que possuem metadados inicialmente não são afetados. - - - + Torrent will stop after files are initially checked. O torrent parará após o a verificação inicial dos ficheiros. - + This will also download metadata if it wasn't there initially. Isto também irá transferir metadados caso não existam inicialmente. - + %N: Torrent name %N: Nome do torrent - + %L: Category %L: Categoria - + %F: Content path (same as root path for multifile torrent) %F: Caminho do conteúdo (igual ao caminho raiz para torrents de vários ficheiros) - + %R: Root path (first torrent subdirectory path) %R: Caminho raiz (caminho da primeira subdiretoria do torrent) - + %D: Save path %D: Caminho para gravar - + %C: Number of files %C: Número de ficheiros - + %Z: Torrent size (bytes) %Z: Tamanho do torrent (bytes) - + %T: Current tracker %T: Tracker atual - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Dica: Encapsule o parâmetro entre aspas para evitar que sejam cortados os espaços em branco do texto (ex: "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Nenhum(a)) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Um torrent será considerado lento se os rácios de download e upload se mantiverem abaixo destes valores durante "Temporizador de inatividade do torrent" segundos - + Certificate Certificado - + Select certificate Selecionar certificado - + Private key Chave privada - + Select private key Selecionar chave privada - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Selecione a pasta a ser monitorizada - + Adding entry failed Ocorreu um erro ao tentar adicionar a entrada - - Location Error - Erro de localização + + The WebUI username must be at least 3 characters long. + O nome de utilizador da interface web deve ter pelo menos 3 caracteres. + + + + The WebUI password must be at least 6 characters long. + A palavra-passe da interface web tem de ter pelo menos 6 caracteres. - - The alternative Web UI files location cannot be blank. - A localização dos ficheiros alternativos da interface web não pode estar em branco. + + Location Error + Erro de localização - - + + Choose export directory Escolha a diretoria para exportar - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Quando estas opções estão ativadas, o qBittorrent irá <strong>eliminar</strong> os ficheiros .torrent após serem adicionados com sucesso (primeira opção) ou não (segunda opção) nas suas filas de transferência. Isto será aplicado <strong>não apenas</strong> aos ficheiros abertos pelo menu &ldquo;Adicionar torrent&rdquo;, mas também para aqueles abertos pela <strong>associação de tipos de ficheiro</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Ficheiro do tema da IU do qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiquetas (separadas por vírgula) - + %I: Info hash v1 (or '-' if unavailable) %I: Informações do hash v1 (ou '-' se indisponível) - + %J: Info hash v2 (or '-' if unavailable) %J: Informações do hash v2 (ou '-' se indisponível) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID do torrent (hash das informações do sha-1 pro torrent v1 ou hash das informações do sha-256 truncadas para torrent v2/híbrido) - - - + + + Choose a save directory Escolha uma diretoria para o gravar - + + Torrents that have metadata initially will be added as stopped. + Os torrents que possuem metadados inicialmente serão adicionados como parados. + + + Choose an IP filter file Escolha um ficheiro de filtro IP - + All supported filters Todos os filtros suportados - + + The alternative WebUI files location cannot be blank. + O local alternativo dos ficheiros da interface web não pode estar em branco. + + + Parsing error Erro de processamento - + Failed to parse the provided IP filter Ocorreu um erro ao processar o filtro IP indicado - + Successfully refreshed Atualizado com sucesso - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number O filtro de IP fornecido foi processado com sucesso: Foram aplicadas %1 regras. - + Preferences Preferências - + Time Error Erro de horário - + The start time and the end time can't be the same. A hora de início e a de fim não podem ser idênticas. - - + + Length Error Erro de comprimento - - - The Web UI username must be at least 3 characters long. - O nome de utilizador da interface web deverá conter pelo menos 3 carateres. - - - - The Web UI password must be at least 6 characters long. - A palavra-passe da interface web deverá conter pelo menos 6 caracteres. - PeerInfo - + Unknown Desconhecido - + Interested (local) and choked (peer) Interessado (local) e choked (fonte) - + Interested (local) and unchoked (peer) Interessado (local) e unchoked (fonte) - + Interested (peer) and choked (local) Interessado (fonte) e choked (local) - + Interested (peer) and unchoked (local) Interessado (fonte) e unchoked (local) - + Not interested (local) and unchoked (peer) Não interessado (local) e unchoked (fonte) - + Not interested (peer) and unchoked (local) Não interessado (fonte) e unchoked (local) - + Optimistic unchoke Unchoke otimista - + Peer snubbed Fonte censurada - + Incoming connection Ligação de entrada - + Peer from DHT Fonte de DHT - + Peer from PEX Fonte de PEX - + Peer from LSD Fonte de LSD - + Encrypted traffic Tráfego encriptado - + Encrypted handshake Negociação encriptada + + + Peer is using NAT hole punching + + PeerListWidget @@ -7489,7 +7901,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n IP/Address - + Endereço IP: @@ -7540,7 +7952,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n Downloaded i.e: total data downloaded - Descarregado + Transferido @@ -7633,7 +8045,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n A fonte "%1" foi banida manualmente - + N/A N/A @@ -7656,7 +8068,7 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n Lista de fontes a adicionar (um IP por linha): - + Format: IPv4:port / [IPv6]:port Formato: IPv4:porta / [IPv6]:porta @@ -7697,27 +8109,27 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n PiecesBar - + Files in this piece: Ficheiros nesta peça: - + File in this piece: Ficheiro neste pedaço: - + File in these pieces: Ficheiro nestes pedaços: - + Wait until metadata become available to see detailed information Espere até aos metadados ficarem disponíveis de forma a poder ver informação mais detalhada - + Hold Shift key for detailed information Manter premida a tecla Shift para uma informação detalhada @@ -7730,58 +8142,58 @@ readme[0-9].txt: filtra 'readme1.txt', 'readme2.txt', mas n 'Plugins' de pesquisa - + Installed search plugins: Plugins de pesquisa instalados: - + Name Nome - + Version Versão - + Url Url - - + + Enabled Ativo - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - Aviso: Certifique-se que cumpre as leis de direitos de autor do seu país ao fazer a transferência de torrents a partir de qualquer um destes motores de busca. + Aviso: Certifique-se que cumpre as leis de direitos de autor do seu país ao fazer a transferência de torrents a partir de qualquer um destes motores de pesquisa. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instalar um novo - + Check for updates Procurar atualizações - + Close Fechar - + Uninstall Desinstalar @@ -7839,7 +8251,7 @@ Esses plugins foram desativados. New search engine plugin URL - URL do novo plugin do motor de busca + URL do novo plugin do motor de pesquisa @@ -7855,7 +8267,7 @@ Esses plugins foram desativados. The link doesn't seem to point to a search engine plugin. - O link não aparenta apontar para um plugin do motor de busca. + O link não aparenta apontar para um plugin do motor de pesquisa. @@ -7885,12 +8297,12 @@ Esses plugins foram desativados. Couldn't install "%1" search engine plugin. %2 - Não foi possível instalar o plugin do motor de busca '%1'. %2 + Não foi possível instalar o plugin do motor de pesquisa '%1'. %2 Couldn't update "%1" search engine plugin. %2 - Não foi possível atualizar o plugin do motor de busca '%1'. %2 + Não foi possível atualizar o plugin do motor de pesquisa '%1'. %2 @@ -7901,17 +8313,17 @@ Esses plugins foram desativados. Fonte do plugin - + Search plugin source: Pesquisar fonte do plugin: - + Local file Ficheiro local - + Web link Ligação da web @@ -7952,47 +8364,47 @@ Esses plugins foram desativados. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Os ficheiros seguintes do torrent "%1" suportam a pré-visualização. Por favor escolha um deles: - + Preview Visualizar - + Name Nome - + Size Tamanho - + Progress Evolução - + Preview impossible Não é possível visualizar - + Sorry, we can't preview this file: "%1". Desculpe, não é possível pré-visualizar este ficheiro: "%1". - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas visíveis para o tamanho dos seus conteúdos @@ -8005,27 +8417,27 @@ Esses plugins foram desativados. Private::FileLineEdit - + Path does not exist O caminho não existe - + Path does not point to a directory O caminho não aponta para um diretório - + Path does not point to a file O caminho não aponta para um ficheiro - + Don't have read permission to path Não tem permissão de leitura para o caminho - + Don't have write permission to path Não tem permissão de gravação para o caminho @@ -8066,12 +8478,12 @@ Esses plugins foram desativados. PropertiesWidget - + Downloaded: - Descarregado: + Transferido: - + Availability: Disponibilidade: @@ -8086,53 +8498,53 @@ Esses plugins foram desativados. Transferir - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Ativo há: - + ETA: Temp. est. fim: - + Uploaded: Enviados: - + Seeds: Sementes: - + Download Speed: - Vel. download: + Vel. de transferência: - + Upload Speed: Vel. upload: - + Peers: Fontes: - + Download Limit: - Limite de download: + Limite de transferência: - + Upload Limit: Limite de upload: - + Wasted: Perdido: @@ -8142,193 +8554,249 @@ Esses plugins foram desativados. Ligações: - + Information Informações - + Info Hash v1: Informações de Hash v1: - + Info Hash v2: Informações de Hash v2: - + Comment: Comentário: - + Select All Selecionar tudo - + Select None Selecionar nada - + Share Ratio: Rácio de partilha: - + Reannounce In: Novo anúncio em: - + Last Seen Complete: Última vez que esteve completo: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Tamanho total: - + Pieces: Peças: - + Created By: Criado por: - + Added On: Adicionado em: - + Completed On: Terminado em: - + Created On: Criado em: - + + Private: + + + + Save Path: Guardado em: - + Never Nunca - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (tem %3) - - + + %1 (%2 this session) %1 (%2 nesta sessão) - - + + + N/A N/D - + + Yes + Sim + + + + No + Não + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (semeado durante %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (máximo: %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (total: %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (média: %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nova fonte web + Nova fonte web - Remove Web seed - Remover fonte web + Remover fonte web - Copy Web seed URL - Copiar URL da fonte web + Copiar URL da fonte web - Edit Web seed URL - Editar URL da fonte web + Editar URL da fonte web - + Filter files... Filtrar ficheiros... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Os gráficos de velocidade estão desativados - + You can enable it in Advanced Options Pode ativá-lo nas Opções Avançadas - New URL seed New HTTP source - Novo URL de sementes + Novo URL de sementes - New URL seed: - Novo URL de sementes: + Novo URL de sementes: - - This URL seed is already in the list. - Este URL de sementes já existe na lista. + Este URL de sementes já existe na lista. - + Web seed editing Edição de sementes web - + Web seed URL: URL de sementes da web: @@ -8347,22 +8815,22 @@ Esses plugins foram desativados. Não foi possível guardar os dados RSS do AutoDownloader em %1. Erro: %2 - + Invalid data format Formato de dados inválido - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Ocorreu um erro ao ler as regras do RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Não foi possível carregar as regras RSS do AutoDownloader. Motivo: %1 @@ -8370,22 +8838,22 @@ Esses plugins foram desativados. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Não foi possível fazer o download da fonte RSS em '%1'. Motivo: %2 - + RSS feed at '%1' updated. Added %2 new articles. A fonte RSS em '%1' foi atualizada. Adicionados %2 novos artigos. - + Failed to parse RSS feed at '%1'. Reason: %2 Não foi possível analisar a fonte RSS em '%1'. Motivo: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Feito o download com sucesso da fonte RSS em '%1'. A começar a iniciá-lo. @@ -8395,7 +8863,7 @@ Esses plugins foram desativados. Failed to read RSS session data. %1 - + Ocorreu um erro ao ler os dados da sessão RSS. %1 @@ -8421,12 +8889,12 @@ Esses plugins foram desativados. RSS::Private::Parser - + Invalid RSS feed. Fonte RSS inválida. - + %1 (line: %2, column: %3, offset: %4). %1 (linha: %2, coluna: %3, offset: %4). @@ -8434,99 +8902,99 @@ Esses plugins foram desativados. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Não foi possível guardar a 'Sessão RSS' de configuração. Ficheiro: "%1". Erro: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Não foi possível guardar os dados da sessão RSS. Ficheiro "%1". Erro: "%2" - - + + RSS feed with given URL already exists: %1. Já existe uma fonte RSS com o URL dado: %1. - + Feed doesn't exist: %1. - + O feed não existe: %1. - + Cannot move root folder. Não é possível mover a pasta root. - - + + Item doesn't exist: %1. O item não existe: %1. - + Couldn't move folder into itself. Não foi possível mover a pasta para dentro da mesma. - + Cannot delete root folder. Não é possível eliminar a pasta root. - + Failed to read RSS session data. %1 - + Ocorreu um erro ao ler os dados da sessão RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Não foi possível carregar o feed RSS: "%1". Motivo: É necessário um URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Não foi possível carregar o feed RSS: "%1". Motivo: O URL é inválido. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Encontrada fonte RSS duplicada. UID: "%1". Erro: A configuração parece estar corrompida. - + Couldn't load RSS item. Item: "%1". Invalid data format. Não foi possível carregar o item RSS:. Item: "%1". Formato de dados inválido. - + Corrupted RSS list, not loading it. Lista RSS corrompida, não irá carregá-la. - + Incorrect RSS Item path: %1. Caminho do item RSS incorreto: %1. - + RSS item with given path already exists: %1. Já existe o item RSS com o caminho dado: %1. - + Parent folder doesn't exist: %1. Pasta associada inexistente: %1. @@ -8550,8 +9018,8 @@ Esses plugins foram desativados. - - + + Mark items read Marcar itens como lidos @@ -8576,132 +9044,132 @@ Esses plugins foram desativados. Torrents: (duplo clique para fazer o download) - - + + Delete Eliminar - + Rename... Renomear... - + Rename Renomear - - + + Update Atualizar - + New subscription... Nova subscrição... - - + + Update all feeds Atualizar todas as fontes - + Download torrent Fazer o download do torrent - + Open news URL Abrir URL - + Copy feed URL Copiar URL da fonte - + New folder... Nova pasta... - + Edit feed URL... - + Editar URL do feed... - + Edit feed URL - + Editar URL do feed - + Please choose a folder name Por favor, escolha o nome da pasta - + Folder name: Nome da pasta: - + New folder Nova pasta - - + + Please type a RSS feed URL Por favor, introduza um URL com fonte RSS - - + + Feed URL: URL fonte: - + Deletion confirmation Confirmação de eliminação - + Are you sure you want to delete the selected RSS feeds? Tem a certeza de que deseja eliminar as fontes RSS selecionadas? - + Please choose a new name for this RSS feed Por favor escolha um novo nome para esta fonte RSS - + New feed name: Novo nome da fonte: - + Rename failed Ocorreu um erro ao tentar renomear - + Date: Data: - + Feed: - + Feed: - + Author: Autor: @@ -8709,38 +9177,38 @@ Esses plugins foram desativados. SearchController - + Python must be installed to use the Search Engine. O Python deverá estar instalado para poder utilizar o Motor de pesquisa. - + Unable to create more than %1 concurrent searches. Não é possível criar mais do que %1 pesquisas simultâneas. - - + + Offset is out of range Offset fora do alcance - + All plugins are already up to date. Todos os plugins já se encontram atualizados. - + Updating %1 plugins A atualizar %1 plugins - + Updating plugin %1 A atualizar %1 plugin - + Failed to check for plugin updates: %1 Ocorreu um erro ao tentar verificar se existem atualizações para o plugin: %1 @@ -8760,7 +9228,7 @@ Esses plugins foram desativados. <html><head/><body><p>Some search engines search in torrent description and in torrent file names too. Whether such results will be shown in the list below is controlled by this mode.</p><p><span style=" font-weight:600;">Everywhere </span>disables filtering and shows everything returned by the search engines.</p><p><span style=" font-weight:600;">Torrent names only</span> shows only torrents whose names match the search query.</p></body></html> - <html><head/><body><p>Alguns motores de busca pesquisam na descrição e também nos nomes dos ficheiros de torrent. Esses resultados da pesquisa serão exibidos na lista abaixo e controlados por esse modo.</p><p><span style=" font-weight:600;">Em tudo </span>desativa a filtragem e exibe todos os resultados do motor de pesquisa. </p><p><span style=" font-weight:600;">Apenas nomes de torrents</span> exibe apenas os torrents cujos nomes coincidam com o pedido.</p></body></html> + <html><head/><body><p>Alguns motores de pesquisa pesquisam na descrição e também nos nomes dos ficheiros de torrent. Esses resultados da pesquisa serão exibidos na lista abaixo e controlados por esse modo.</p><p><span style=" font-weight:600;">Em tudo </span>desativa a filtragem e exibe todos os resultados do motor de pesquisa. </p><p><span style=" font-weight:600;">Apenas nomes de torrents</span> exibe apenas os torrents cujos nomes coincidam com o pedido.</p></body></html> @@ -8815,132 +9283,146 @@ Esses plugins foram desativados. Tamanho: - + Name i.e: file name Nome - + Size i.e: file size Tamanho - + Seeders i.e: Number of full sources Semeadores - + Leechers i.e: Number of partial sources Sanguessugas - Search engine - Motor de busca + Motor de pesquisa - + Filter search results... Filtrar resultados da pesquisa... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Resultados (a mostrar <i>%1</i> de <i>%2</i>): - + Torrent names only Apenas nomes de torrents - + Everywhere Em tudo - + Use regular expressions Utilizar expressões regulares - + Open download window Abrir a janela de download - + Download Download - + Open description page Abrir página de descrição - + Copy Copiar - + Name Nome - + Download link Link para download - + Description page URL URL da página de descrição - + Searching... A pesquisar... - + Search has finished A pesquisa terminou - + Search aborted Pesquisa abortada - + An error occurred during search... Ocorreu um erro durante a procura... - + Search returned no results A pesquisa não devolveu resultados - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Visibilidade da coluna - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas visíveis para o tamanho dos seus conteúdos @@ -8948,104 +9430,104 @@ Esses plugins foram desativados. SearchPluginManager - + Unknown search engine plugin file format. - Formato desconhecido do ficheiro do plugin de motor de busca. + Formato desconhecido do ficheiro do plugin de motor de pesquisa. - + Plugin already at version %1, which is greater than %2 O plugin já se encontra na versão %1, que é superior à %2 - + A more recent version of this plugin is already installed. Já se encontra instalada uma versão mais recente deste plugin. - + Plugin %1 is not supported. O plugin %1 não é suportado. - - + + Plugin is not supported. Plugin não suportado. - + Plugin %1 has been successfully updated. O plugin %1 foi atualizado com sucesso. - + All categories Todas as categorias - + Movies Filmes - + TV shows Programas de TV - + Music Música - + Games Jogos - + Anime Animação - + Software Software - + Pictures Imagens - + Books Livros - + Update server is temporarily unavailable. %1 O servidor de atualizações encontra-se temporariamente indisponível. %1 - - + + Failed to download the plugin file. %1 Ocorreu um erro ao tentar fazer o download do ficheiro de plugin. %1 - + Plugin "%1" is outdated, updating to version %2 O plugin "%1" encontra-se desatualizado, a fazer o update para a versão %2 - + Incorrect update info received for %1 out of %2 plugins. Foi recebida uma informação de atualização incorreta para %1 de %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') O plugin de procura '%1' contém uma versão inválida da string ('%2') @@ -9055,114 +9537,153 @@ Esses plugins foram desativados. - - - - Search Procurar - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Não se encontram instalados nenhuns plugins de pesquisa. Para instalar alguns, clique no botão "Plugins de pesquisa..." localizado no canto inferior direito da janela. - + Search plugins... Plugins de pesquisa... - + A phrase to search for. Uma frase para procurar. - + Spaces in a search term may be protected by double quotes. Os espaços dentro de um termo de pesquisa poderão ser protegidos com aspas duplas. - + Example: Search phrase example Exemplo: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: pesquisar por <b>foo bar</b> - + All plugins Todos os plugins - + Only enabled Apenas ativo(s) - + + + Invalid data format. + Formato de dados inválido. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: procurar por <b>foo</b> e <b>bar</b> - + + Refresh + + + + Close tab Fechar separador - + Close all tabs Fechar todos os separadores - + Select... Selecionar... - - - + + Search Engine - Motor de busca + Motor de pesquisa - + + Please install Python to use the Search Engine. Por favor, instale o Python para poder utilizar o Motor de pesquisa. - + Empty search pattern Padrão de procura vazio - + Please type a search pattern first Por favor, indique primeiro um padrão de procura - + + Stop Parar - Search has finished - A pesquisa terminou + A pesquisa terminou - Search has failed - A pesquisa falhou + A pesquisa falhou + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9275,34 +9796,34 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali - + Upload: Upload: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Download: - + Alternative speed limits Limites de velocidade alternativos @@ -9494,32 +10015,32 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali Tempo médio em fila: - + Connected peers: Fontes ligadas: - + All-time share ratio: Taxa de partilha global: - + All-time download: Downloads globais: - + Session waste: Desperdício da sessão: - + All-time upload: Uploads globais: - + Total buffer size: Tamanho total do buffer: @@ -9534,12 +10055,12 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali Tarefas I/O na fila: - + Write cache overload: Excesso de escrita em cache: - + Read cache overload: Excesso de leitura em cache: @@ -9558,51 +10079,67 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali StatusBar - + Connection status: Estado da ligação: - - + + No direct connections. This may indicate network configuration problems. Sem ligações diretas. Isto poderá indicar erros na configuração da rede. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nós - + qBittorrent needs to be restarted! O qBittorrent necessita de ser reiniciado! - - - + + + Connection Status: Estado da ligação: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Off-line. Normalmente isto significa que o qBittorrent não conseguiu ativar a porta selecionada para as ligações recebidas. - + Online On-line - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Clique para mudar para os limites alternativos de velocidade - + Click to switch to regular speed limits Clique para mudar para os limites normais de velocidade @@ -9631,14 +10168,22 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali Terminado(s) (0) - Resumed (0) - Retomado(s) (0) + Retomado(s) (0) - Paused (0) - Em pausa (0) + Em pausa (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9700,10 +10245,29 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali Completed (%1) Terminado(s) (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Em pausa (%1) + Em pausa (%1) @@ -9711,14 +10275,12 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali A mover (%1) - Resume torrents - Retomar torrents + Retomar torrents - Pause torrents - Pausar torrents + Pausar torrents @@ -9726,9 +10288,8 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali Remover torrents - Resumed (%1) - Retomado(s) (%1) + Retomado(s) (%1) @@ -9769,17 +10330,17 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali TagFilterModel - + Tags Etiquetas - + All Tudo - + Untagged Sem etiqueta @@ -9787,52 +10348,64 @@ Para instalar alguns, clique no botão "Plugins de pesquisa..." locali TagFilterWidget - + Add tag... Adicionar etiqueta... - + Remove tag Remover etiqueta - + Remove unused tags Remover etiquetas não utilizadas - Resume torrents - Retomar torrents + Retomar torrents - Pause torrents - Pausar torrents + Pausar torrents - + Remove torrents Remover torrents - New Tag - Nova etiqueta + Nova etiqueta + + + + Start torrents + + + + + Stop torrents + - + Tag: Etiqueta: - + + Add tag + + + + Invalid tag name Nome de etiqueta inválido - + Tag name '%1' is invalid O nome da etiqueta '%1' é inválido @@ -9972,32 +10545,32 @@ Por favor, escolha um nome diferente e tente novamente. TorrentContentModel - + Name Nome - + Progress Evolução - + Download Priority Prioridade dos downloads - + Remaining Restante - + Availability Disponibilidade - + Total Size Tamanho total @@ -10042,102 +10615,120 @@ Por favor, escolha um nome diferente e tente novamente. TorrentContentWidget - + Rename error Erro ao renomear - + Renaming A renomear - + New name: Novo nome: - + Column visibility Visibilidade das colunas - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas visíveis para o tamanho dos seus conteúdos - + Open Abrir - + Open containing folder Abrir pasta de destino - + Rename... Renomear... - + Priority Prioridade - - + + Do not download Não transferir - + Normal Normal - + High Alta - + Maximum Máxima - + By shown file order Pela ordem mostrada dos ficheiros - + Normal priority Prioridade normal - + High priority Prioridade alta - + Maximum priority Prioridade máxima - + Priority by shown file order Prioridade pela ordem de exibição dos ficheiros + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10162,13 +10753,13 @@ Por favor, escolha um nome diferente e tente novamente. - + Select file Selecione o ficheiro - + Select folder Selecione a pasta @@ -10193,58 +10784,10 @@ Por favor, escolha um nome diferente e tente novamente. Tamanho da peça: - + Auto Automático - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10291,92 +10834,83 @@ Por favor, escolha um nome diferente e tente novamente. Campos - + You can separate tracker tiers / groups with an empty line. Pode separar os grupos/filas de trackers com uma linha vazia. - + Web seed URLs: URL de sementes da web: - + Tracker URLs: URLs do tracker: - + Comments: Comentários: - + Source: Fonte: - + Progress: Evolução: - + Create Torrent Criar torrent - - + + Torrent creation failed Falha ao tentar criar torrent - + Reason: Path to file/folder is not readable. Motivo: O caminho para o ficheiro/pasta é ilegível. - + Select where to save the new torrent Selecione para onde guardar o torrent novo - + Torrent Files (*.torrent) Ficheiros torrent (*.torrent) - - Reason: %1 - Motivo: %1 - - - + Add torrent to transfer list failed. - + Ocorreu um erro ao adicionar o torrent à lista de transferências. - + Reason: "%1" - + Motivo: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Motivo: O torrent criado não é válido e não será adicionado à lista de downloads. + Ocorreu um erro ao adicionar o torrent - + Torrent creator Criador de torrents - + Torrent created: Torrent criado: @@ -10384,32 +10918,32 @@ Por favor, escolha um nome diferente e tente novamente. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 Não foi possível armazenar a configuração das 'Pastas monitorizadas' de %1. Erro: %2 - + Watched folder Path cannot be empty. O caminho da pasta monitorizada não pode estar vazio. - + Watched folder Path cannot be relative. O caminho da pasta monitorizada não pode estar vazio. @@ -10417,27 +10951,27 @@ Por favor, escolha um nome diferente e tente novamente. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Ficheiro magnético muito grande. Ficheiro: %1 - + Failed to open magnet file: %1 Ocorreu um erro ao tentar abrir o ficheiro magnet: %1 - + Rejecting failed torrent file: %1 Ocorreu um erro ao tentar rejeitar o ficheiro torrent: %1 - + Watching folder: "%1" A observar pasta: "%1" @@ -10445,14 +10979,8 @@ Por favor, escolha um nome diferente e tente novamente. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Metadados inválidos + Metadados inválidos @@ -10483,127 +11011,203 @@ Por favor, escolha um nome diferente e tente novamente. Utilizar outra localização para torrent incompleto - + Category: Categoria: - + + Torrent Share Limits + + + Torrent speed limits - Limites de velocidade do torrent + Limites de velocidade do torrent - + Download: Transferência: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Estes não excederão os limites globais - + Upload: Envio: - Torrent share limits - Limites de partilha de torrent + Limites de partilha de torrent - Use global share limit - Utilizar limite de partilha global + Utilizar limite de partilha global - Set no share limit - Definir ausência de limite de partilha + Definir ausência de limite de partilha - Set share limit to - Definir o limite de partilha para + Definir o limite de partilha para - ratio - rácio + rácio - total minutes - + minutos totais - inactive minutes - + minutos inativos - + Disable DHT for this torrent Desativar DHT para este torrent - + Download in sequential order Fazer o download sequencialmente - + Disable PeX for this torrent Desativar PeX para este torrent - + Download first and last pieces first Fazer o download da primeira e última peça primeiro - + Disable LSD for this torrent Desativar LSD para este torrent - + Currently used categories Categorias usadas atualmente - - + + Choose save path Escolher o caminho para guardar - + Not applicable to private torrents Não aplicável a torrents privados - No share limit method selected - Não foi selecionado nenhum método de limite de partilha + Não foi selecionado nenhum método de limite de partilha - Please select a limit method first - Selecione primeiro um método de limite + Selecione primeiro um método de limite + + + + TorrentShareLimitsWidget + + + + + + Default + Padrão + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Remover torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Ativar o super semear para o torrent + + + + Ratio: + @@ -10611,35 +11215,39 @@ Por favor, escolha um nome diferente e tente novamente. Torrent Tags - + Etiquetas do torrent - New Tag - Nova etiqueta + Nova etiqueta + Add tag + + + + Tag: Etiqueta: - + Invalid tag name Nome de etiqueta inválido - + Tag name '%1' is invalid. - + O nome da etiqueta '%1' é inválido - + Tag exists A etiqueta já existe - + Tag name already exists. O nome da etiqueta já existe. @@ -10647,115 +11255,130 @@ Por favor, escolha um nome diferente e tente novamente. TorrentsController - + Error: '%1' is not a valid torrent file. Erro: '%1' não é um ficheiro torrent válido. - + Priority must be an integer A prioridade deverá ser um número inteiro - + Priority is not valid A prioridade não é válida - + Torrent's metadata has not yet downloaded Os metadados do torrent ainda não foram descarregados - + File IDs must be integers Os IDs do ficheiro deverão ser números inteiros - + File ID is not valid O ID do ficheiro não é válido - - - - + + + + Torrent queueing must be enabled Deverá ser ativada a fila de torrents - - + + Save path cannot be empty O caminho para gravar não pode estar em branco - - + + Cannot create target directory Não é possível criar a diretoria de destino - - + + Category cannot be empty A categoria não pode estar em branco - + Unable to create category Não foi possível criar a categoria - + Unable to edit category Não foi possível editar a categoria - + Unable to export torrent file. Error: %1 Não foi possível exportar o arquivo torrent. Erro: %1 - + Cannot make save path Não é possível criar o caminho de gravação - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid O parâmetro 'ordenar' é inválido - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" não é um índice de ficheiro válido. - + Index %1 is out of bounds. O índice %1 está fora dos limites. - - + + Cannot write to directory Não é possível escrever na diretoria - + WebUI Set location: moving "%1", from "%2" to "%3" Definir localização da interface web: a mover "%1", de "%2" para"%3" - + Incorrect torrent name Nome do torrent incorreto - - + + Incorrect category name Nome de categoria incorreto @@ -10786,257 +11409,211 @@ Por favor, escolha um nome diferente e tente novamente. TrackerListModel - - + Working - A executar + A executar - + Disabled - + Inativo - + Disabled for this torrent - Desativado para este torrent + Desativado para este torrent - + This torrent is private - Este torrent é privado + Este torrent é privado - + N/A - + N/D - + Updating... - A atualizar... + A atualizar... - + Not working - Parado + Parado - + Tracker error - + Unreachable - + Inacessível - + Not contacted yet - Ainda não contactado + Ainda não contactado - - Invalid status! + + Invalid state! + + + + + URL/Announce Endpoint - - URL/Announce endpoint + + BT Protocol - - Tier - Fila + + Next Announce + + + + + Min Announce + + + + Invalid status! + Estado inválido! + Tier + Fila + + Protocol - + Protocolo - + Status - Estado + Estado - + Peers - Fontes + Fontes - + Seeds - Sementes + Sementes - + Leeches - Sanguessuga + Sanguessuga - + Times Downloaded - Número de vezes baixado + Número de vezes baixado - + Message - Mensagem + Mensagem - Next announce - + Próximo anúncio - Min announce - + Anúncio mínimo - v%1 - - - - - TrackerListWidget - - Working - A executar - - - Disabled - Inativo - - - Disabled for this torrent - Desativado para este torrent - - - - This torrent is private - Este torrent é privado - - - Updating... - A atualizar... - - - Not working - Parado - - - Not contacted yet - Ainda não contactado + v%1 + + + TrackerListWidget - N/A - N/A + + This torrent is private + Este torrent é privado - + Tracker editing A editar tracker - + Tracker URL: URL do tracker: - - + + Tracker editing failed Ocorreu um erro ao tentar editar o tracker - + The tracker URL entered is invalid. O URL do tracker introduzido é inválido. - + The tracker URL already exists. O URL do tracker já existe. - + Edit tracker URL... Editar URL do tracker... - + Remove tracker Remover tracker - + Copy tracker URL Copiar URL do tracker - + Force reannounce to selected trackers Forçar novo anúncio dos rastreadores selecionados - + Force reannounce to all trackers Forçar novo anúncio de todos os rastreadores - Tier - Fila - - - URL - URL - - - Status - Estado - - - Seeds - Sementes - - - Times Downloaded - Número de vezes baixado - - - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas visíveis para o tamanho dos seus conteúdos - Peers - Fontes - - - + Add trackers... Adicionar trackers... - Leeches - Sanguessuga - - - Message - Mensagem - - - + Column visibility Visibilidade da coluna @@ -11054,37 +11631,37 @@ Por favor, escolha um nome diferente e tente novamente. Lista de rastreadores a adicionar (um por linha): - + µTorrent compatible list URL: URL da lista compatível com µTorrent: - + Download trackers list Transferir lista de trackers - + Add Adicionar - + Trackers list URL error Erro do URL da lista de trackers - + The trackers list URL cannot be empty O URL da lista de trackers não pode estar em branco - + Download trackers list error Erro ao transferir lista de trackers - + Error occurred when downloading the trackers list. Reason: "%1" Ocorreu um erro ao transferir a lista de trackers. Motivo: "%1" @@ -11092,87 +11669,70 @@ Por favor, escolha um nome diferente e tente novamente. TrackersFilterWidget - All (0) - this is for the tracker filter - Tudo (0) - - - Trackerless (0) - Trackerless (0) - - - Error (0) - Erro (0) - - - Warning (0) - Aviso (0) - - - Trackerless - Sem tracker - - - Error (%1) - Erro (%1) - - - + Warning (%1) Aviso (%1) - + Trackerless (%1) Trackerless (%1) - + Tracker error (%1) - + Erro do tracker (%1) - + Other error (%1) - + Outro erro (%1) - + Remove tracker - Remover tracker + Remover tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Retomar torrents + Retomar torrents - Pause torrents - Pausar torrents + Pausar torrents - + Remove torrents Remover torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Tudo (%1) @@ -11181,7 +11741,7 @@ Por favor, escolha um nome diferente e tente novamente. TransferController - + 'mode': invalid argument 'mode': argumento inválido @@ -11274,9 +11834,8 @@ Por favor, escolha um nome diferente e tente novamente. A analisar dados para retomar - Paused - Em pausa + Em pausa @@ -11301,220 +11860,262 @@ Por favor, escolha um nome diferente e tente novamente. Com erro - + Name i.e: torrent name Nome - + Size i.e: torrent size Tamanho - + Progress % Done Evolução - Status Torrent status (e.g. downloading, seeding, paused) - Estado + Estado - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Estado + + + Seeds i.e. full sources (often untranslated) Sementes - + Peers i.e. partial sources (often untranslated) Fontes - + Down Speed i.e: Download speed Vel. download - + Up Speed i.e: Upload speed Vel. upload - + Ratio Share ratio Rácio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Temp. est. fim - + Category Categoria - + Tags Etiquetas - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Adicionado em - + Completed On Torrent was completed on 01/01/2010 08:00 Terminado em - + Tracker Tracker - + Down Limit i.e: Download limit Limite de transferências - + Up Limit i.e: Upload limit Limite de uploads - + Downloaded Amount of data downloaded (e.g. in MB) Transferido - + Uploaded Amount of data uploaded (e.g. in MB) Enviado - + Session Download Amount of data downloaded since program open (e.g. in MB) Dados recebidos - + Session Upload Amount of data uploaded since program open (e.g. in MB) Dados enviados - + Remaining Amount of data left to download (e.g. in MB) Restante - + + Time Active + Time (duration) the torrent is active (not stopped) + Tempo ativo + + + + Yes + Sim + + + + No + Não + + Time Active Time (duration) the torrent is active (not paused) - Tempo ativo + Tempo ativo - + Save Path Torrent save path Guardar em - + Incomplete Save Path Torrent incomplete save path Caminho do "Guardar em" incompleto - + Completed Amount of data completed (e.g. in MB) Terminado(s) - + Ratio Limit Upload share ratio limit Limite do rácio - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Última vez que o ficheiro esteve completo - + Last Activity Time passed since a chunk was downloaded/uploaded Última atividade - + Total Size i.e. Size including unwanted data Tamanho total - + Availability The number of distributed copies of the torrent Disponibilidade - + Info Hash v1 i.e: torrent info hash v1 Informação do Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Informação do Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Anunciar novamente em + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/D - + %1 ago e.g.: 1h 20m ago %1 atrás - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (semeado durante %2) @@ -11523,334 +12124,358 @@ Por favor, escolha um nome diferente e tente novamente. TransferListWidget - + Column visibility Visibilidade das colunas - + Recheck confirmation Confirmação de reverificação - + Are you sure you want to recheck the selected torrent(s)? Tem a certeza de que deseja reverificar o(s) torrent(s) selecionado(s)? - + Rename Renomear - + New name: Novo nome: - + Choose save path Escolha o caminho para guardar - Confirm pause - Confirmar pausa + Confirmar pausa - Would you like to pause all torrents? - Colocar todos os torrents em pausa? + Colocar todos os torrents em pausa? - Confirm resume - Confirmar o retomar + Confirmar o retomar - Would you like to resume all torrents? - Retomar todos os torrents? + Retomar todos os torrents? - + Unable to preview Impossível pré-visualizar - + The selected torrent "%1" does not contain previewable files O torrent selecionado "%1" não contém ficheiros onde seja possível pré-visualizar - + Resize columns Redimensionar colunas - + Resize all non-hidden columns to the size of their contents Redimensionar todas as colunas visíveis para o tamanho dos seus conteúdos - + Enable automatic torrent management Ativar a gestão automática dos torrents - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Tem a certeza que deseja ativar o gestor automático dos torrents para os torrents selecionados? Eles poderão ser realocados. - Add Tags - Adicionar etiquetas + Adicionar etiquetas - + Choose folder to save exported .torrent files Escolha a pasta para salvar os arquivos .torrent exportados - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Falha ao exportar o arquivo .torrent. Torrent: "%1". Caminho para salvar: "%2". Motivo: "%3" - + A file with the same name already exists Um arquivo com o mesmo nome já existe - + Export .torrent file error Erro ao exportar arquivo .torrent - + Remove All Tags Remover todas as etiquetas - + Remove all tags from selected torrents? Remover todas as etiquetas dos torrents selecionados? - + Comma-separated tags: Etiquetas separadas por virgulas: - + Invalid tag Etiqueta inválida - + Tag name: '%1' is invalid Nome da etiqueta: '%1' é inválido - &Resume Resume/start the torrent - &Retomar + &Retomar - &Pause Pause the torrent - &Pausar + &Pausar - Force Resu&me Force Resume/start the torrent - Forçar retor&nar + Forçar retor&nar - + Pre&view file... Pré-&visualizar arquivo... - + Torrent &options... &Opções do torrent... - + Open destination &folder Abrir &pasta de destino - + Move &up i.e. move up in the queue Mover para &cima - + Move &down i.e. Move down in the queue Mover para &baixo - + Move to &top i.e. Move to top of the queue Mover para o &início - + Move to &bottom i.e. Move to bottom of the queue Mover para o &final - + Set loc&ation... Definir loc&al... - + Force rec&heck Forçar no&va verificação - + Force r&eannounce Forçar r&eanunciar - + &Magnet link Link &magnet - + Torrent &ID &ID do torrent - + + &Comment + + + + &Name &Nome - + Info &hash v1 Informações do &hash v1 - + Info h&ash v2 Informações do h&ash v2 - + Re&name... Re&nomear... - + Edit trac&kers... Editar trac&kers... - + E&xport .torrent... E&xportar .torrent... - + Categor&y Categor&ia - + &New... New category... &Novo... - + &Reset Reset category &Redefinir - + Ta&gs Ta&gs - + &Add... Add / assign multiple tags... &Adicionar... - + &Remove All Remove all tags &Remover tudo - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Fila - + &Copy &Copiar - + Exported torrent is not necessarily the same as the imported O torrent exportado não é necessariamente o mesmo do importado - + Download in sequential order Fazer o download sequencialmente - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Ocorreram erros ao exportar os ficheiros .torrent. Verifique o registo de execução para mais detalhes. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Remover - + Download first and last pieces first Fazer o download da primeira e última peça primeiro - + Automatic Torrent Management Gestão automática do torrent - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category O modo automático significa que várias propriedades do torrent (ex: guardar caminho) serão decididas pela categoria associada - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Não pode forçar o re-anúncio caso o torrent esteja Pausado/Na fila/Com erro/A verificar + Não pode forçar o re-anúncio caso o torrent esteja Pausado/Na fila/Com erro/A verificar - + Super seeding mode Modo super semeador @@ -11895,28 +12520,28 @@ Por favor, escolha um nome diferente e tente novamente. ID do ícone - + UI Theme Configuration. Configuração de tema da interface. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11924,7 +12549,12 @@ Por favor, escolha um nome diferente e tente novamente. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Falha ao carregar o tema da IU a partir do ficheiro: "%1" @@ -11955,34 +12585,27 @@ Por favor, escolha um nome diferente e tente novamente. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Ocorreu um erro ao migrar as preferências: https interface web, ficheiro: "%1", erro: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Preferências migradas: https interface web, exportados dados para o ficheiro: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Encontrado um valor inválido no ficheiro de configuração. A reverter para o padrão. Chave: "%1". Valor inválido: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python detetado, nome do executável: '%1', versão: %2 - - - Python not detected - Python não detetado - Found Python executable. Name: "%1". Version: "%2" @@ -12006,38 +12629,38 @@ Por favor, escolha um nome diferente e tente novamente. Failed to find `python` executable in Windows Registry. - + Ocorreu um erro ao tentar localizar o executável do Python no registo do Windows. Failed to find Python executable - + Ocorreu um erro ao tentar localizar o executável do Python Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12101,72 +12724,72 @@ Por favor, escolha um nome diferente e tente novamente. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Nome do cookie de sessão inaceitável especificado: '%1'. O padrão será usado. - + Unacceptable file type, only regular file is allowed. Tipo de ficheiro não permitido, apenas são permitidos ficheiros regulares. - + Symlinks inside alternative UI folder are forbidden. São proibidos Symlinks dentro da pasta alternativa da interface o utilizador. - - Using built-in Web UI. - A utilizar a interface web incluída. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - A utilizar uma interface web personalizada. Localização: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - A tradução da interface web para o local selecionado (%1) foi carregada com sucesso. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Não foi possível carregar a tradução da interface web para o local selecionado (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" Falta o separador ':' no cabeçalho personalizado HTTP da interface web: "%1" - + Web server error. %1 - + Erro do servidor web. %1 - + Web server error. Unknown error. - + Erro do servidor web. Erro desconhecido. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Interface web: O 'Cabeçalho de origem' e o 'Alvo de origem' são incompatíveis! IP da fonte: '%1'. Cabeçalho de origem: '%2'. Alvo de origem: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Interface web: O 'Cabeçalho referenciador' e o 'Alvo de origem' são incompatíveis! IP da fonte: '%1'. Cabeçalho referenciador: '%2'. Alvo de origem: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Interface web: Porta incompatível no 'Cabeçalho referenciador. IP da fonte pedido: '%1'. Porta do servidor: '%2'. Cabeçalho do host recebido: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Interface web: Cabeçalho do Host inválido. IP da fonte pedido: '%1'. Recebido o cabeçalho do Host: '%2' @@ -12174,143 +12797,136 @@ Por favor, escolha um nome diferente e tente novamente. WebUI - - Web UI: HTTPS setup successful - Interface web: HTTPS configurado com sucesso + + Credentials are not set + + + + + WebUI: HTTPS setup successful + - - Web UI: HTTPS setup failed, fallback to HTTP - Interface web: falha na configuração do HTTPS, a retroceder para HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + + + + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Interface web: A receber agora no IP: %1, porta: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Interface web: Não foi possível associar ao IP: %1., porta: %2. Motivo: %3 + + Unknown error + Erro desconhecido misc - + B bytes B - + KiB kibibytes (1024 bytes) KB - + MiB mebibytes (1024 kibibytes) MB - + GiB gibibytes (1024 mibibytes) GB - + TiB tebibytes (1024 gibibytes) TB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 m {1s?} + %1s - + %1m e.g: 10 minutes - %1 m + %1 m - + %1h %2m e.g: 3 hours 5 minutes - %1 h e %2 m + %1 h e %2 m - + %1d %2h e.g: 2 days 10 hours - %1 d e %2 h + %1 d e %2 h - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1 h e %2 m - - - %1d %2h - e.g: 2days 10hours - %1 d e %2 h - - - %1y %2d - e.g: 2years 10days - %1y %2d + %1a %2d - - + + Unknown Unknown (size) Desconhecido - + qBittorrent will shutdown the computer now because all downloads are complete. O qBittorrent vai desligar o computador porque todos as transferências foram concluídas. - + < 1m < 1 minute < 1 m - - %1m - e.g: 10minutes - %1 m - diff --git a/src/lang/qbittorrent_ro.ts b/src/lang/qbittorrent_ro.ts index 250e28bd33d1..22855c26c7a2 100644 --- a/src/lang/qbittorrent_ro.ts +++ b/src/lang/qbittorrent_ro.ts @@ -14,77 +14,77 @@ Despre - + Authors Autori - + Current maintainer Responsabil actual - + Greece Grecia - - + + Nationality: Naționalitate: - - + + E-mail: Poștă electronică: - - + + Name: Nume: - + Original author Autor original - + France Franța - + Special Thanks Mulțumiri speciale - + Translators Traducători - + License Licență - + Software Used Programe folosite - + qBittorrent was built with the following libraries: qBittorrent a fost construit folosind următoarele biblioteci: - + Copy to clipboard - + Copiază pe planșa de tranfer @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Drept de autor %1 2006-2023 Proiectul qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Drept de autor %1 2006-2024 Proiectul qBittorrent @@ -166,14 +166,13 @@ Salvează în - + Never show again Nu arăta din nou - Torrent settings - Configurări torent + Configurări torent @@ -191,12 +190,12 @@ Pornește torentul - + Torrent information Informații torent - + Skip hash check Omite verificarea indexului @@ -205,6 +204,11 @@ Use another path for incomplete torrent Folosește o altă cale pentru torentul incomplet + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Condiție de oprire: - - + + None Niciuna - - + + Metadata received Metadate primite - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked Fișiere verificate - + Add to top of queue Adaugă în vârful cozii - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Când e bifat, fișierul .torrent nu va fi șters, indiferent de configurările de pe pagina „Descărcări” a dialogului Opțiuni - + Content layout: Aranjament conținut: - + Original Original - + Create subfolder Creează subdosar - + Don't create subfolder Nu crea subdosar - + Info hash v1: Informații index v1: - + Size: Dimensiune: - + Comment: Comentariu: - + Date: Dată: @@ -324,213 +333,150 @@ Ține minte ultima cale de salvare folosită - + Do not delete .torrent file Nu șterge fișierul .torrent - + Download in sequential order Descarcă în ordine secvențială - + Download first and last pieces first Descarcă întâi primele și ultimele bucăți - + Info hash v2: Informații index v2: - + Select All Selectează toate - + Select None Nu selecta nimic - + Save as .torrent file... Salvare ca fișier .torrent... - + I/O Error Eroare Intrare/Ieșire - Invalid torrent - Torent nevalid - - - + Not Available This comment is unavailable Nu este disponibil - + Not Available This date is unavailable Nu este disponibil - + Not available Nu este disponibil - Invalid magnet link - Legătură magnet nevalidă - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Eșec la încărcarea torentului: %1 -Eroare: %2 - - - This magnet link was not recognized - Această legătură magnet nu a fost recunoscută - - - + Magnet link Legătură magnet - + Retrieving metadata... Se obțin metadatele... - - + + Choose save path Alegeți calea de salvare - Torrent is already present - Torentul este deja prezent - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torentul „%1” este deja în lista de transferuri. Urmăritoarele nu au fost combinate deoarece este un torent privat. - - - Torrent is already queued for processing. - Torentul este deja în coada de procesare. - - - + No stop condition is set. Nicio condiție de oprire stabilită. - + Torrent will stop after metadata is received. Torentul se va opri dupa ce se primesc metadatele. - - Torrents that have metadata initially aren't affected. - Torentele care au metadate inițial nu sunt afectate. - - - + Torrent will stop after files are initially checked. Torentul se va opri după ce fișierele sunt verificate inițial. - + This will also download metadata if it wasn't there initially. Aceasta va descarca de asemenea și metadatele dacă nu au fost acolo inițial. - - + + N/A Indisponibil - Magnet link is already queued for processing. - Legătura magnet este deja în coada de procesare. - - - + %1 (Free space on disk: %2) %1 (Spațiu disponibil pe disc: %2) - + Not available This size is unavailable. Indisponibil - + Torrent file (*%1) Fisier torent (*%1) - + Save as torrent file Salvează ca fișier torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Nu s-a putut exporta fișierul „%1” cu metadatele torentului. Motiv: %2. - + Cannot create v2 torrent until its data is fully downloaded. Nu poate fi creat un torent de versiuna 2 ptână când datele nu sunt complet descărcate. - Cannot download '%1': %2 - Nu se poate descărca „%1”: %2 - - - + Filter files... Filtrare fișiere... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torentul „%1” este deja în lista de transferuri. Urmăritoarele nu au fost combinate deoarece este un torent privat. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torentul '%1' este deja în lista de transferuri. Doriți să combinați urmăritoarele de la noua sursă? - - - + Parsing metadata... Se analizează metadatele... - + Metadata retrieval complete Metadatele au fost obținute - - Failed to load from URL: %1. -Error: %2 - Încărcarea din URL a eșuat: %1. -Eroare: %2 - - - Download Error - Eroare descărcare - AddTorrentManager @@ -545,24 +491,24 @@ Eroare: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Combinarea urmăritoarelor este dezactivată - + Trackers cannot be merged because it is a private torrent - + Urmăritoarele nu a putut fi combinate deoarece este un torent privat - + Trackers are merged from new source - + Urmăritoarele sunt combinate cu cele din sursa nouă @@ -648,72 +594,77 @@ Eroare: %2 Omite verificarea indexului - - - Choose save path - Alegeți calea de salvare + + Torrent share limits + Limitele de partajare a torenților - - - - - - - Default - Implicit + + + Choose save path + Alegeți calea de salvare + + + - Yes - Da + Default + Implicit + Yes + Da + + + + + No Nu - + Manual Manual - + Automatic Automat - + Original Original - + Create subfolder Creează subdosar - + Don't create subfolder Nu crea subdosar - + None Niciuna - + Metadata received Metadate primite - + Files checked Fișiere verificate @@ -721,734 +672,852 @@ Eroare: %2 AdvancedSettings - - - - + + + + MiB MiO - + Recheck torrents on completion Reverifică torentele la finalizare - - + + ms milliseconds ms - + Setting Configurare - + Value Value set for this setting Valoare - + (disabled) (dezactivată) - + (auto) (automată) - + + min minutes min - + All addresses Toate adresele - + qBittorrent Section Secțiune qBittorrent - - + + Open documentation Deschide documentația - + All IPv4 addresses Toate adresele IPv4 - + All IPv6 addresses Toate adresele IPv6 - + libtorrent Section Secțiune libtorrent - + Fastresume files Reia rapid fișierele - + SQLite database (experimental) Bază de date SQLite (experimental) - + Resume data storage type (requires restart) Tip stocare date de reluare (necesită repornirea programului) - + Normal Normal - + Below normal Sub normal - + Medium Mediu - + Low Scăzut - + Very low Foarte scăzut - - Process memory priority (Windows >= 8 only) - Prioritatea memoriei de proces (numai Windows >= 8) - - - + Physical memory (RAM) usage limit Limită de folosire a memorie fizice (RAM) - + Asynchronous I/O threads Fire de execuție Intrare/Ieșire asincrone - + Hashing threads Fire pentru sumele de control - + File pool size Numărul maxim de fișiere deschise - + Outstanding memory when checking torrents Memorie pentru verificarea torentelor - + Disk cache Prestocare disc - - - - + + + + s seconds s - + Disk cache expiry interval Interval de expirare prestocare (cache) disc - + Disk queue size Dimensiune coadă disc - - + + Enable OS cache Activează prestocarea (cache-ul) sistemului - + Coalesce reads & writes Contopește citirile și scrierile - + Use piece extent affinity - + Send upload piece suggestions Trimite sugestii bucăți de încărcat - - - - + + + + + 0 (disabled) 0 (dezactivat) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer Număr maxim de cereri în așteptare spre un singur partener - - - - - + + + + + KiB KiO - + (infinite) (infinit) - + (system default) (implicit sistemului) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Această opțiune are mai puțin efect pe Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default Implicit - + Memory mapped files Fișiere mapate în memorie - + POSIX-compliant Compatibil cu standardul POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Tipul IO al discului (neceistă repornire) - - + + Disable OS cache Dezactivează prestocarea (cache-ul) sistemului - + Disk IO read mode Modul de citire IO al discului - + Write-through - + Disk IO write mode Modul de scriere IO al discului - + Send buffer watermark Filigranul tamponului de trimitere - + Send buffer low watermark - + Send buffer watermark factor Factorul filigranului tamponului de trimitere - + Outgoing connections per second Conexiuni de ieșire pe secundă - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Dimensiunea cozii pentru socluri - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers Tip de serviciu (ToS) pentru conexiunile spre parteneri - + Prefer TCP Preferă TCP - + Peer proportional (throttles TCP) Proporțional cu partenerii (limitează protocolul TCP) - + Support internationalized domain name (IDN) Sprijină nume de domenii internaționale (IDN) - + Allow multiple connections from the same IP address Permite conexiuni multiple de la aceeași adresă IP - + Validate HTTPS tracker certificates Validează certificatele HTTPS ale urmăritoarelor - + Server-side request forgery (SSRF) mitigation Atenuare contrafacere cerere pe partea servitorului (SSRF) - + Disallow connection to peers on privileged ports Interzice conexiuni spre parteneri pe porturi privilegiate - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates Controlează intervalul de actualizare al stării interne care la rândul său va afecta actualizările interfeței grafice - + Refresh interval Interval de reîmprospătare - + Resolve peer host names Rezolvă numele de gazdă ale partenerilor - + IP address reported to trackers (requires restart) Adresa IP raportată umăritoarelor (necesită repornirea programului) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Reanunță toate urmăritoarele când se schimbă IP-ul sau portul - + Enable icons in menus Activează pictogramele în meniuri - + Enable port forwarding for embedded tracker Activează port forwarding pentru urmăritoarele încorporate - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - - Confirm removal of tracker from all torrents + + Start BitTorrent session in paused state + + + + + sec + seconds + sec + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Cere confirmarea eliminării unui urmăritor de la toate torentele + + + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Afișează notificări - + Display notifications for added torrents Afișează notificări pentru torentele adăugate - + Download tracker's favicon Descarcă pictograma de favorite a urmăritorului - + Save path history length Lungime istoric cale de salvare - + Enable speed graphs Activează graficele de viteză - + Fixed slots Socluri fixe - + Upload rate based Bazat pe rata de încărcare - + Upload slots behavior Comportament socluri de încărcare - + Round-robin Round-robin - + Fastest upload Cea mai rapidă încărcare - + Anti-leech Anti-lipitori - + Upload choking algorithm Algoritm de înecare a încărcării - + Confirm torrent recheck Cere confirmare pentru reverificarea torentelor - + Confirm removal of all tags Confirmă ștergerea tuturor marcajelor - + Always announce to all trackers in a tier Anunță întotdeauna tuturor urmăritoarelor dintr-un strat - + Always announce to all tiers Anunță întotdeauna tuturor straturilor - + Any interface i.e. Any network interface Oricare interfață - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Algoritm %1-TCP în regim amestecat - + Resolve peer countries Rezolvă țările partenerilor - + Network interface Interfața de rețea - + Optional IP address to bind to Adresă IP opțională de ascultat - + Max concurrent HTTP announces Număr maxim de anunțuri HTTP simultane - + Enable embedded tracker Activează urmăritorul încorporat - + Embedded tracker port Port urmăritor încorporat - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 a pornit + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Rulează în regim portabil. Dosar de profil detectat automat la: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Fanion redundant depistat în linia de comandă: „%1”. Regimul portabil implică reîncepere-rapidă relativă. - + Using config directory: %1 Se folosește directorul de configurație: %1 - + Torrent name: %1 Nume torent: %1 - + Torrent size: %1 Mărime torent: %1 - + Save path: %1 Calea de salvare: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torentul a fost descărcat în %1 - + + Thank you for using qBittorrent. Vă mulțumim că folosiți qBittorrent. - + Torrent: %1, sending mail notification Torent: %1, se trimite notificare prin poșta electronică - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` Se rulează program extern. Torent: „%1”. Comandă: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Torentul '%1' s-a terminat de descărcat - + WebUI will be started shortly after internal preparations. Please wait... Interfața web va porni la scurt timp după pregătiri interne. Așteptați… - - + + Loading torrents... Se încarcă torentele... - + E&xit Închid&e programul - + I/O Error i.e: Input/Output Error Eroare I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Eroare: %2 Motivul: %2 - Error - Eroare - - - Failed to add torrent: %1 - Eșec la adăugarea torentului: %1 - - - + Torrent added Torent adăugat - + '%1' was added. e.g: xxx.avi was added. „%1” a fost adăugat. - + Download completed Descărcare finalizată - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' s-a descărcat. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 a pornit. ID proces: %2 - URL download error - Eroarea la descărcarea URL + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Nu s-a putut descărca fișierul de la URL „%1”, motiv: %2. + + Test email + - Torrent file association - Asociere fișiere torent + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' s-a descărcat. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent nu e aplicația implicită pentru deschiderea fișierelor torrent sau legăturilor Magnet. -Doriți să faceți qBittorrent aplicația implicită pentru acestea? - - - + Information Informație - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 Pentru a controla qBittorrent, accesați interfața web la adresa: %1 - - The Web UI administrator username is: %1 - Numele de administrator al interfeței web este: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Parola de administrator pentru interfața web nu a fost schimbată din cea implicită: %1 - - - - This is a security risk, please change your password in program preferences. - Aceasta este un risk de securitate, vă rugăm să schimbați parola în preferințele programului. - - - Application failed to start. - Pornirea aplicației a eșuat. - - - + Exit Ieșire - + Recursive download confirmation - Confirmare descărcare recursivă + Confirmare descărcare recursivă - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torentul „%1” conține fișiere .torrent, doriți să continuați cu descărcarea acestora? + Torentul „%1” conține fișiere .torrent, doriți să continuați cu descărcarea acestora? - + Never - Niciodată + Niciodată - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Descarc recursiv fișierul .torrent din torent. Torentul sursă: „%1”. Fișier: „%2” + Descarc recursiv fișierul .torrent din torent. Torentul sursă: „%1”. Fișier: „%2” - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" A eșuat stabilirea unei limite de folosire a memorie fizice (RAM). Error code: %1. Mesaj de eroare: „%2” - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated Terminare qBittorrent inițiată - + qBittorrent is shutting down... qBittorrent se închide... - + Saving torrent progress... Se salvează progresul torentelor... - + qBittorrent is now ready to exit qBittorrent e gata să iasă @@ -1597,7 +1637,7 @@ Doriți să faceți qBittorrent aplicația implicită pentru acestea? AsyncFileStorage - + Could not create directory '%1'. Nu s-a putut crea dosarul „%1”. @@ -1605,22 +1645,22 @@ Doriți să faceți qBittorrent aplicația implicită pentru acestea? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Eșec la autentificarea WebAPI. Motivul: IP-ul a fost blocat, IP: %1, nume utilizator: %2 - + Your IP address has been banned after too many failed authentication attempts. Adresa dumneavoastră IP a fost blocată după prea multe încercări eșuate de autentificare. - + WebAPI login success. IP: %1 Autentificare reușită la WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Autentificare WebAPI eșuată. Motivul: acreditări nevalide, număr încercări: %1, IP: %2, nume utilizator: %3 @@ -1668,12 +1708,12 @@ Doriți să faceți qBittorrent aplicația implicită pentru acestea? - + Must Not Contain: Nu trebuie să conțină: - + Episode Filter: Filtru episod: @@ -1726,263 +1766,263 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d &Exportare... - + Matches articles based on episode filter. Articole care se potrivesc bazate pe filtrul episod. - + Example: Exemple: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match va potrivi 2, 5, 8 din 15, 30 și episoadele ulterioare al sezonului unu - + Episode filter rules: Reguli filtru episod: - + Season number is a mandatory non-zero value Numărul sezonului este obligatoriu nu o valoare zero - + Filter must end with semicolon Filtrul trebuie să se termine cu punct și virgulă - + Three range types for episodes are supported: Sunt sprijinite trei tipuri de intervale pentru episoade: - + Single number: <b>1x25;</b> matches episode 25 of season one Un singur număr: <b>1x25;</b> se potrivește cu episodul 25 al sezonului unu - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Gamă normală: <b>1x25-40;</b> se potrivește cu episoadele de la 25 la 40 ale sezonului unu - + Episode number is a mandatory positive value Numărul episodului este o valoare pozitivă obligatorie - + Rules Reguli - + Rules (legacy) Reguli (moștenit) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Interval infinit: <b>1x25-;</b> potrivește episoadele 25 și mai sus ale sezonului unu, și toate episoadele sezoanelor ulterioare - + Last Match: %1 days ago Ultima potrivire: acum %1 zile - + Last Match: Unknown Ultima potrivire: necunoscută - + New rule name Nume regulă nouă - + Please type the name of the new download rule. Introduceți numele noii reguli de descărcare. - - + + Rule name conflict Conflict nume regulă - - + + A rule with this name already exists, please choose another name. O regulă cu acest nume există deja, alegeți alt nume. - + Are you sure you want to remove the download rule named '%1'? Sigur doriți să eliminați regula de descărcare numită „%1”? - + Are you sure you want to remove the selected download rules? Sigur doriți să eliminați regulile de descărcare selectate? - + Rule deletion confirmation Confirmare ștergere regulă - + Invalid action Acțiune nevalidă - + The list is empty, there is nothing to export. Lista e goală, nu e nimic de exportat. - + Export RSS rules Exportă reguli RSS - + I/O Error Eroare de Intrare/Ieșire - + Failed to create the destination file. Reason: %1 Eșec la crearea fișierului destinație. Motiv: %1 - + Import RSS rules Importă reguli RSS - + Failed to import the selected rules file. Reason: %1 A eșuat importarea fișierului de reguli ales. Motiv: %1 - + Add new rule... Adăugare regulă nouă... - + Delete rule Șterge regula - + Rename rule... Redenumire regulă... - + Delete selected rules Șterge regulile selectate - + Clear downloaded episodes... Ștergere episoade descărcate... - + Rule renaming Redenumire regulă - + Please type the new rule name Introduceți noul nume al regulii - + Clear downloaded episodes Șterge episoadele descărcate - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Sigur doriți să goliți lista episoadelor descărcate pentru regula aleasă? - + Regex mode: use Perl-compatible regular expressions Regim expresii regulate: folosește expresii regulate compatibile cu Perl - - + + Position %1: %2 Poziția %1: %2 - + Wildcard mode: you can use Mod metacaractere: le puteți utiliza - - + + Import error - + Failed to read the file. %1 - + ? to match any single character ? pentru a potrivi un oricare caracter - + * to match zero or more of any characters * pentru a potrivi zero sau mai multe oricare caractere - + Whitespaces count as AND operators (all words, any order) Spațiile albe se consideră operatori ȘI (toate cuvintele, în orice ordine) - + | is used as OR operator | este folosit ca operator SAU - + If word order is important use * instead of whitespace. Dacă ordinea cuvintelor este importantă utilizați * în loc de spațiu alb (gol). - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) O expresie cu o clauză %1 goală (de ex.: %2) - + will match all articles. va potrivi toate articolele. - + will exclude all articles. va exclude toate articolele. @@ -2024,53 +2064,58 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nu se poate crea dosar pentru reluarea torentului: „%1” - + Cannot parse resume data: invalid format Datele despre reluare nu pot fi parcurse: format nevalid - - + + Cannot parse torrent info: %1 Informațiile despre torent nu pot fi parcurse: %1 - + Cannot parse torrent info: invalid format Informațiile despre torent nu pot fi parcurse: format nevalid - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Nu s-au putut salva metadatele torentului în „%1”. Eroare: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Nu s-au putut salva datele de reluare ale torentului în „%1”. Eroare: %2. - + Couldn't load torrents queue: %1 Nu se poate încărca coada de torente: %1 - + Cannot parse resume data: %1 Datele despre reluare nu pot fi parcurse: %1 - + Resume data is invalid: neither metadata nor info-hash was found Datele despre reluare sunt nevalide: nu s-au găsit nici metadate, nici info-hash - + Couldn't save data to '%1'. Error: %2 Nu s-au putut salva datele în „%1”. Eroare: %2 @@ -2078,38 +2123,38 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d BitTorrent::DBResumeDataStorage - + Not found. Nu a fost găsit. - + Couldn't load resume data of torrent '%1'. Error: %2 Nu s-au putut încărca datele de reluare ale torentului „%1”. Eroare: %2 - - + + Database is corrupted. Baza de date este coruptă. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. Nu s-a putut obține rezultatul interogării. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Nu s-au putut salva metadatele torentului. Eroare: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Nu s-au putut stoca datele de reluare ale torentului „%1”. Eroare: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Nu s-au putut șterge datele de reluare ale torentului „%1”. Eroare: %2 - + Couldn't store torrents queue positions. Error: %1 Nu s-a putut stoca coada cu pozițiile torentelor. Eroare: %1 @@ -2140,570 +2185,612 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Susținere Distributed Hash Table (DHT): %1 - - - - - - - - - + + + + + + + + + ON PORNIT - - - - - - - - - + + + + + + + + + OFF OPRIT - - + + Local Peer Discovery support: %1 Susținere Local Peer Discovery: %1 - + Restart is required to toggle Peer Exchange (PeX) support Repornirea este necesară pentru comutarea susținerii Peer Exchange (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Reluarea torentului a eșuat Torent: „%1”: Motiv: „%2” - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Reluarea torentului a eșuat: s-a depistat identificator de torent inconsistent. Torent: „%1” - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" S-au depistat date neconsistente: categoria lipsește din fișierul de configurare. Categoria va fi recuperată dar configurările acesteia vor fi inițializate cu valori implicite. Torent: „%1”. Categorie: „%2” - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" S-au depistat date neconsistente: categoria nu e validă. Torent: „%1”. Categorie: „%2” - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" S-au depistat divergențe între căile de salvare ale categoriei recuperate și calea actuală de salvare a torentului. Torentul e trecut acum la regim manual. Torent: „%1”. Categorie: „%2” - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" S-au depistat date neconsistente: marcajul lipsește din fișierul de configurare. Marcajul va fi recuperat. Torent: „%1”. Marcaj: „%2” - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" S-au depistat date neconsistente: marcaj nevalid. Torent: „%1”. Marcaj: „%2” - + System wake-up event detected. Re-announcing to all the trackers... - + A fost detectat evenimentul de trezire a sistemului. Se reanunță toate urmăritoarele... - + Peer ID: "%1" Id. partener: „%1” - + HTTP User-Agent: "%1" Agent utilizator HTTP: „%1” - + Peer Exchange (PeX) support: %1 Susținere Peer Exchange (PeX): %1 - - + + Anonymous mode: %1 Regim anonim: %1 - - + + Encryption support: %1 Susținerea criptării: %1 - - + + FORCED FORȚAT - + Could not find GUID of network interface. Interface: "%1" Nu se poate găsi GUID al interfeței de rețea. Interfața: "%1" - + Trying to listen on the following list of IP addresses: "%1" Se încearcă urmărirea următoarei liste de adrese IP: "%1" - + Torrent reached the share ratio limit. Torentul a atins limita raportului de partajare. - - - + Torrent: "%1". Torentul: "%1". - - - Removed torrent. - Torentul a fost eliminat. + Torentul a fost eliminat. - - - Removed torrent and deleted its content. - Torentul a fost eliminat și conținutul său a fost șters. + Torentul a fost eliminat și conținutul său a fost șters. - - - Torrent paused. - Torentul a fost pus în pauză. + Torentul a fost pus în pauză. - - - + Super seeding enabled. Super-contribuirea a fost activată. - + Torrent reached the seeding time limit. Torentul a atins limita timpului de partajare. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" Nu s-a putut încărca torentul. Motivul: %1. - + I2P error. Message: "%1". - Downloading torrent, please wait... Source: "%1" - Se descarcă torentul, așteptați… Sursă: „%1” + + UPnP/NAT-PMP support: ON + Susținere UPnP/NAT-PMP: ACTIVĂ + + + + Saving resume data completed. + - Failed to load torrent. Source: "%1". Reason: "%2" - Încărcarea torentului a eșuat. Sursă: „%1”. Motiv: „%2” + + BitTorrent session successfully finished. + - - UPnP/NAT-PMP support: ON - Susținere UPnP/NAT-PMP: ACTIVĂ + + Session shutdown timed out. + - - UPnP/NAT-PMP support: OFF - Susținere UPnP/NAT-PMP: INACTIVĂ + + Removing torrent. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Exportul torentului a eșuat. Torent: „%1”. Destinație: „%2”. Motiv: „%3” + + Removing torrent and deleting its content. + - - Aborted saving resume data. Number of outstanding torrents: %1 - S-a abandonat salvarea datelor de reluare. Număr de torente în așteptare: %1 + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Combinarea urmăritoarelor este dezactivată - System network status changed to %1 - e.g: System network status changed to ONLINE - Starea rețelei sistemului s-a schimbat în %1 + + Trackers cannot be merged because it is a private torrent + Urmăritoarele nu a putut fi combinate deoarece este un torent privat + + + + Trackers are merged from new source + Urmăritoarele sunt combinate cu cele din sursa nouă - ONLINE - CONECTAT + + UPnP/NAT-PMP support: OFF + Susținere UPnP/NAT-PMP: INACTIVĂ - OFFLINE - DECONECTAT + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Exportul torentului a eșuat. Torent: „%1”. Destinație: „%2”. Motiv: „%3” - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Configurația rețelei %1 s-a schimbat, se reîmprospătează asocierea sesiunii + + Aborted saving resume data. Number of outstanding torrents: %1 + S-a abandonat salvarea datelor de reluare. Număr de torente în așteptare: %1 - + The configured network address is invalid. Address: "%1" Adresa configurată a interfeței de rețea nu e validă. Adresă: „%1” - - + + Failed to find the configured network address to listen on. Address: "%1" Nu s-a putut găsi adresa de rețea configurată pentru ascultat. Adresă: „%1” - + The configured network interface is invalid. Interface: "%1" Interfața de rețea configurată nu e validă. Interfață: „%1” - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" S-a respins adresa IP nevalidă în timpul aplicării listei de adrese IP blocate. IP: „%1” - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" S-a adăugat urmăritor la torent. Torent: „%1”. Urmăritor: „%2” - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" S-a eliminat urmăritor de la torent. Torent: „%1”. Urmăritor: „%2” - + Added URL seed to torrent. Torrent: "%1". URL: "%2" S-a adăugat sămânță URL la torent. Torent: „%1”. URL: „%2” - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" S-a eliminat sămânță URL de la torent. Torent: „%1”. URL: „%2” - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torentul a fost pus în pauză. Torentul: "%1" + Torentul a fost pus în pauză. Torentul: "%1" - + Torrent resumed. Torrent: "%1" Torent reluat. Torentul: "%1" - + Torrent download finished. Torrent: "%1" Descărcare torent încheiată. Torentul: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Mutare torent anulată. Torent: „%1”. Sursă: „%2”. Destinație: „%3” - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Nu s-a putut pune în coadă mutarea torentului. Torent: „%1”. Sursă: „%2”. Destinație: „%3”. Motiv: torentul e în curs de mutare spre destinație - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Nu s-a putut pune în coadă mutarea torentului. Torent: „%1”. Sursă: „%2”. Destinație: „%3”. Motiv: ambele căi indică spre același loc - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" S-a pus în coadă mutarea torentului. Torent: „%1”. Sursă: „%2”. Destinație: „%3” - + Start moving torrent. Torrent: "%1". Destination: "%2" Începe mutarea torentului. Torent: „%1”. Destinație: „%2” - + Failed to save Categories configuration. File: "%1". Error: "%2" Nu s-a putut salva configurația categoriilor. Fișier: „%1”. Eroare: „%2” - + Failed to parse Categories configuration. File: "%1". Error: "%2" Nu s-a putut parcurge configurația categoriilor. Fișier: „%1”. Eroare: „%2” - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Descarc recursiv fișierul .torrent din torent. Torentul sursă: „%1”. Fișier: „%2” - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Fișierul cu filtre IP a fost parcurs cu succes. Numărul de reguli aplicate: %1 - + Failed to parse the IP filter file Eșec la parcurgerea fișierului cu filtre IP - + Restored torrent. Torrent: "%1" Torent restaurat. Torent: "%1" - + Added new torrent. Torrent: "%1" S-a adăugat un nou torent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torent eronat. Torent: „%1”. Eroare: „%2” - - Removed torrent. Torrent: "%1" - Torent eliminat. Torent: "%1" + Torent eliminat. Torent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torentul a fost eliminat și conținutul său a fost șters. Torrent: "%1" + Torentul a fost eliminat și conținutul său a fost șters. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Alertă de eroare în fișier. Torent: „%1”. Fișier: „%2”. Motiv: „%3” - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filtru IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 restricții de regim mixt - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 este dezactivat. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 este dezactivat. - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Se ascultă cu succes pe IP. IP: „%1”. Port: „%2/%3” - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Ascultarea pe IP a eșuat. IP: „%1”. Port: „%2/%3”. Motiv: „%4” - + Detected external IP. IP: "%1" IP extern depistat. IP: „%1” - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Eroare: Coada internă de alerte e plină și alertele sunt aruncate, e posibil să observați performanță redusă. Tip alertă aruncată: „%1”. Mesaj: „%2” - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torent mutat cu succes. Torent: „%1”. Destinație: „%2” - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Mutarea torent eșuată. Torent: „%1”. Sursă: „%2”. Destinație: „%3”. Motiv: „%4” - BitTorrent::TorrentCreator - - - Operation aborted - Operație abandonată - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Crearea noului fișier cu torent a eșuat. Motiv: %1 + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operație abandonată + Operație abandonată + + Create new torrent file failed. Reason: %1. - Crearea noului fișier cu torent a eșuat. Motiv: %1 + Crearea noului fișier cu torent a eșuat. Motiv: %1 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Adăugarea partenerului „%1” la torentul „%2 a eșuat. Motiv: %3 - + Peer "%1" is added to torrent "%2" Partenerul „%1” e adăugat la torentul „%2” - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Nu s-a putut scrie în fișier. Motiv: „%1. Torentul e acum în regim „numai încărcare”. - + Download first and last piece first: %1, torrent: '%2' Descarcă întâi prima și ultima bucată: %1, torent: '%2' - + On Pornit - + Off Oprit - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Generarea datelor de reluare a eșuat. Torent: „%1”. Motiv: „%2” - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Restabilirea torentului a eșuat. Fișierele au fost probabil mutate sau stocarea nu e accesibilă. Torent: „%1”. Motiv: „%2” - + Missing metadata Metadate lipsă - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Redenumirea fișierului a eșuat. Torent: „%1”, fișier: „%2”, motiv: „%3” - + Performance alert: %1. More info: %2 Alertă performanță: %1. Mai multe informații: %2 @@ -2724,184 +2811,193 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). %1 trebuie să specifice un port valid (de la 1 la 65535). - + Usage: Utilizare: - + [options] [(<filename> | <url>)...] - + Options: Opțiuni: - + Display program version and exit Afișează versiunea programului și iese - + Display this help message and exit Afișează acest mesaj de ajutor și iese - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port port - - Change the Web UI port - Schimbați portul interfeței utilizatorului web + + Change the WebUI port + - + Change the torrenting port Schimbați portul de torrenting - + Disable splash screen Dezactivează ecranul de întâmpinare - + Run in daemon-mode (background) Rulează în mod daemon (fundal) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Stochează fișierele de configurare în <dir> - - + + name nume - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs fișiere sau adrese URL - + Download the torrents passed by the user - + Options when adding new torrents: Opțiuni când se adaugă torente: - + path cale - + Torrent save path Cale salvare torente - + + Add torrents as running or stopped + + + Add torrents as started or paused - Adaugă torente în modul pornite sau suspendate + Adaugă torente în modul pornite sau suspendate - + Skip hash check Omite verificarea indexului - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order Descarcă fișierele în ordine secvențială - + Download first and last pieces first Descarcă întâi primele și ultimele bucăți - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables Parametrii pentru linia de comandă au precedență în fața variabilelor de mediu - + Help Ajutor @@ -2909,17 +3005,17 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d CategoryFilterModel - + Categories Categorii - + All Toate - + Uncategorized Necategorisite @@ -2953,13 +3049,21 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d - Resume torrents - Reia torentele + Start torrents + + Stop torrents + + + + Resume torrents + Reia torentele + + Pause torrents - Întrerupe torentele + Întrerupe torentele @@ -2970,15 +3074,20 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d ColorWidget - + Edit... - + Reset Reinițializează + + + System + + CookiesDialog @@ -3019,12 +3128,12 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3032,7 +3141,7 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3051,23 +3160,27 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d + Also remove the content files + + + Also permanently delete the files - Deasemenea șterge permanent fișierele + Deasemenea șterge permanent fișierele - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Sigur doriți să ștergeți '%1' din lista de transferuri? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Sigur doriți să eliminați aceste %1 torente din lista de transferuri? - + Remove Elimină @@ -3080,12 +3193,12 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d Descarcă de la adrese URL - + Add torrent links Adaugă legături torent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Una per linie ( sunt sprijinite legăturile HTTP, legăturile Magnet și informațiile index) @@ -3095,12 +3208,12 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d Descarcă - + No URL entered Niciun URL introdus - + Please type at least one URL. Introduceți măcar un URL. @@ -3259,64 +3372,91 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d Eroare de analiză: Fișierul filtru nu este un fișier PeerGuardian P2B valid. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - Trackers cannot be merged because it is a private torrent - + Urmăritoarele nu a putut fi combinate deoarece este un torent privat - + Torrent is already present - Torentul este deja prezent + Torentul este deja prezent + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torentul '%1' este deja în lista de transferuri. Doriți să combinați urmăritoarele de la noua sursă? + Torentul „%1” este deja în lista de transferuri. Doriți să combinați urmăritoarele de la sursa nouă? GeoIPDatabase - - + + Unsupported database file size. Mărime fișier bază de date nesprijinită. - + Metadata error: '%1' entry not found. Eroare metadate: nu s-a găsit intrarea „%1”. - + Metadata error: '%1' entry has invalid type. Eroare metadate: intrarea „%1” nu are un tip valid. - + Unsupported database version: %1.%2 Versiunea bazei de date este nesprijinită: %1.%2 - + Unsupported IP version: %1 Versiune IP (protocol internet) nesprijinită. %1 - + Unsupported record size: %1 Mărime înregistrare nesprijinită: %1 - + Database corrupted: no data section found. Baza de date este deteriorată: Nu s-a găsit nicio secțiune de date. @@ -3324,17 +3464,17 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Cerere HTTP eronată, se închide soclul. IP: %1 @@ -3375,36 +3515,64 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d IconWidget - + Browse... Răsfoire... - + Reset Reinițializează - + Select icon - + Selectare pictogramă - + Supported image files + + LegalNotice + + + Legal Notice + Notă juridică + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent este un program de partajat fișiere. Când rulați un torent, datele sale vor disponibile și altora prin partajare. Orice conținut partajați este responsabilitatea dumneavoastră. + + + + No further notices will be issued. + Nu vor mai fi emise alte avertizări. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 a fost blocat. Motiv: %2. - + %1 was banned 0.0.0.0 was banned %1 a fost interzis @@ -3413,91 +3581,62 @@ Recunoaște formatele: S01E01, 1x1, 2017.12.31 si 31.12.2017 (Formatele pentru d Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 este un parametru linie de comandă necunoscut. - - + + %1 must be the single command line parameter. %1 trebuie să fie singurul parametru pentru linia de comandă. - - You cannot use %1: qBittorrent is already running for this user. - Nu puteți utiliza %1: qBittorrent rulează deja pentru acest utilizator. - - - + Run application with -h option to read about command line parameters. Rulați aplicația cu opțiunea -h pentru a citi despre parametri din linia de comandă. - + Bad command line Linie de comandă nepotrivită: - + Bad command line: Linie de comandă nepotrivită: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Notă juridică - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent este un program de partajat fișiere. Când rulați un torent, datele sale vor disponibile și altora prin partajare. Orice conținut partajați este responsabilitatea dumneavoastră. - - - - No further notices will be issued. - Nu vor mai fi emise alte avertizări. - - - - Press %1 key to accept and continue... - Apăsați tasta %1 pentru a accepta și continua... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent este un program de partajat fișiere. Când rulați un torent, datele sale vor fi disponibile și altora prin partajare. Orice conținut partajați este responsabilitatea dumneavoastră - -Nu vor fi emise alte notificări. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Notă juridică + + Another qBittorrent instance is already running. + - - Cancel - Renunță + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Sunt de acord + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3508,621 +3647,706 @@ Nu vor fi emise alte notificări. &Editare - + &Tools &Unelte - + &File &Fișier - + &Help &Ajutor - + On Downloads &Done Când descărcările sunt &gata - + &View &Vizualizare - + &Options... &Opțiuni... - &Resume - &Reia + &Reia - + &Remove &Elimină - + Torrent &Creator &Creator torent - - + + Alternative Speed Limits Limite de viteză alternative - + &Top Toolbar &Bara de unelte superioară - + Display Top Toolbar Afișează bara superioară de unelte - + Status &Bar &Bara de stare - + Filters Sidebar Bara laterală cu filtre - + S&peed in Title Bar &Viteza în bara de titlu - + Show Transfer Speed in Title Bar Arată viteza de transfer în bara de titlu - + &RSS Reader Cititor &RSS - + Search &Engine &Motor de căutare - + L&ock qBittorrent Bl&ocare qBittorrent - + Do&nate! Do&nați! - + + Sh&utdown System + + + + &Do nothing Nu fă &nimic - + Close Window Închide fereastra - R&esume All - Reia &toate + Reia &toate - + Manage Cookies... Gestionare fișiere cookie... - + Manage stored network cookies Gestionează fișierele cookie de rețea stocate - + Normal Messages Mesaje normale - + Information Messages Mesaje informații - + Warning Messages Mesaje avertizări - + Critical Messages Mesaje critice - + &Log &Jurnal - - Set Global Speed Limits... - Stabilire limite de viteză globale... + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + + Set Global Speed Limits... + Stabilire limite de viteză globale... - + Bottom of Queue Baza cozii - + Move to the bottom of the queue Mută la baza cozii - + Top of Queue Vârful cozii - + Move to the top of the queue Mută în vârful cozii - + Move Down Queue Mută jos în coadă - + Move down in the queue Mută mai jos în coadă - + Move Up Queue Mută sus în coadă - + Move up in the queue Mută mai sus în coadă - + &Exit qBittorrent Închid&e qBittorrent - + &Suspend System &Suspendă sistemul - + &Hibernate System &Hibernează sistemul - S&hutdown System - &Oprește sistemul + &Oprește sistemul - + &Statistics &Statistici - + Check for Updates Verifică pentru actualizări - + Check for Program Updates Verifică pentru actualizări program - + &About &Despre - &Pause - &Suspendă + &Suspendă - P&ause All - Suspendă to&ate + Suspendă to&ate - + &Add Torrent File... &Adăugare fișier torrent... - + Open Deschide - + E&xit Închid&e programul - + Open URL Deschide URL - + &Documentation &Documentație - + Lock Blochează - - - + + + Show Arată - + Check for program updates Verifică pentru actualizări program - + Add Torrent &Link... Adăugare &legătură torent... - + If you like qBittorrent, please donate! Dacă vă place qBittorrent, vă rugăm să donați! - - + + Execution Log Jurnal de execuție - + Clear the password Eliminare parolă - + &Set Password &Stabilire parolă - + Preferences Preferințe - + &Clear Password &Eliminare parolă - + Transfers Transferuri - - + + qBittorrent is minimized to tray qBittorrent este minimizat în tăvița de sistem - - - + + + This behavior can be changed in the settings. You won't be reminded again. Acest comportament poate fi schimbat în configurări. Nu vi se va mai reaminti. - + Icons Only Doar pictograme - + Text Only Doar text - + Text Alongside Icons Text alături de pictograme - + Text Under Icons Text sub pictograme - + Follow System Style Utilizează stilul sistemului - - + + UI lock password Parolă de blocare interfață - - + + Please type the UI lock password: Introduceți parola pentru blocarea interfeței: - + Are you sure you want to clear the password? Sigur doriți să eliminați parola? - + Use regular expressions Folosește expresii regulate - - Search - Căutare + + + Search Engine + Motor de căutare - - Transfers (%1) - Transferuri (%1) + + Search has failed + Căutarea a eșuat - Recursive download confirmation - Confirmare descărcare recursivă + + Search has finished + - Never - Niciodată + + Search + Căutare + + + + Transfers (%1) + Transferuri (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent tocmai a fost actualizat și trebuie să fie repornit pentru ca schimbările să intre în vigoare. - + qBittorrent is closed to tray qBittorrent este închis în tăvița de sistem - + Some files are currently transferring. Unele fișiere sunt în curs de transferare. - + Are you sure you want to quit qBittorrent? Sigur doriți să închideți qBittorrent? - + &No &Nu - + &Yes &Da - + &Always Yes Î&ntotdeauna Da - + Options saved. Opțiuni salvate. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Lipsește executabilul Python - + qBittorrent Update Available Este disponibilă o actualizare pentru qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python este necesar pentru a putea folosi motorul de căutare, dar nu pare a fi instalat. Doriți să îl instalați acum? - + Python is required to use the search engine but it does not seem to be installed. Python este necesar pentru a putea folosi motorul de căutare, dar nu pare a fi instalat. - - + + Old Python Runtime Executabil Python învechit. - + A new version is available. Este disponibilă o nouă versiune. - + Do you want to download %1? Doriți să descărcați %1? - + Open changelog... Deschidere jurnalul cu modificări… - + No updates available. You are already using the latest version. Nu sunt disponibile actualizări. Utilizați deja ultima versiune. - + &Check for Updates &Verifică dacă sunt actualizări - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Versiunea dumneavoastră de Python (%1) este învechită. Versiunea minimiă necesară este: %2. Doriți să instalați o versiune mai nouă acum? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Versiunea dumneavoastră de Python (%1) este învechită. Actualizați-l la ultima versiune pentru ca motoarele de căutare să funcționeze. Cerința minimă: %2. - + + Paused + Suspendat + + + Checking for Updates... Se verifică dacă sunt actualizări... - + Already checking for program updates in the background Se caută deja actualizări de program în fundal - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Eroare la descărcare - Python setup could not be downloaded, reason: %1. Please install it manually. - Programul de instalare Python nu a putut fi descărcat, motivul: %1. + Programul de instalare Python nu a putut fi descărcat, motivul: %1. Instalați-l manual. - - + + Invalid password Parolă nevalidă - + Filter torrents... - + Filtrare torente... - + Filter by: - + Filtrare după: - + The password must be at least 3 characters long Parola trebuie să aibă o lungime de minim 3 caractere - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torentul „%1” conține fișiere .torrent, doriți să continuați cu descărcarea acestora? - - - + The password is invalid Parola nu este validă - + DL speed: %1 e.g: Download speed: 10 KiB/s Viteză descărcare: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Viteză încărcare: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1/s, Î: %2/s] qBittorrent %3 - - - + Hide Ascunde - + Exiting qBittorrent Se închide qBittorrent - + Open Torrent Files Deschide fișiere torrent - + Torrent Files Fișiere torrent @@ -4183,133 +4407,133 @@ Instalați-l manual. Net::DownloadHandlerImpl - - + + I/O Error: %1 Eroare de Intrare/Ieșire: %1 - + The file size (%1) exceeds the download limit (%2) Mărimea fișierului (%1) depășește limita de descărcare (%2) - + Exceeded max redirections (%1) S-au depășit numărul maxim de redirectări (%1) - + Redirected to magnet URI Redirecționare la URI-ul magnet. - + The remote host name was not found (invalid hostname) Numele gazdei la distanță nu a fost găsit (nume de gazdă nevalid) - + The operation was canceled Operația a fost abandonată - + The remote server closed the connection prematurely, before the entire reply was received and processed Serverul de la distanță a închis conexiunea prematur, înainte ca întregul răspuns să fie primit și procesat - + The connection to the remote server timed out Conexiunea la serverul de la distanță a expirat - + SSL/TLS handshake failed Inițierea conexiunii SSL/TLS a eșuat - + The remote server refused the connection Serverul la distanță a refuzat conexiunea - + The connection to the proxy server was refused Conexiunea la serverul proxy a fost refuzată - + The proxy server closed the connection prematurely Serverul proxy a închis conexiunea prematur - + The proxy host name was not found Numele de gazdă a serverului proxy nu a fost găsit - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Conexiunea la proxy a expirat sau proxy-ul nu a răspuns la timp cererii trimise - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy-ul cere autentificare pentru a putea onora cererea dar nu a acceptat certificările oferite - + The access to the remote content was denied (401) Accesul la conținutul la distanță a fost refuzat (401) - + The operation requested on the remote content is not permitted Operațiunea cerută asupra conținutului la distanță nu este permisă - + The remote content was not found at the server (404) Conținutul la distanță nu a fost găsit pe server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Servitorul la distanță cere autentificare pentru a furniza conținutul dar credențialele oferite nu au fost acceptate - + The Network Access API cannot honor the request because the protocol is not known API-ul de acces la rețea nu poate onora cererea deoarece protocolul nu este cunoscut - + The requested operation is invalid for this protocol Operațiunea cerută nu este validă pentru acest protocol - + An unknown network-related error was detected O eroare necunoscută legată de rețea a fost detectată - + An unknown proxy-related error was detected A fost depistată o eroare necunoscută legată de proxy - + An unknown error related to the remote content was detected A fost depistată o eroare necunoscută legată de conținutul distant - + A breakdown in protocol was detected O întrerupere a fost detectată în protocol - + Unknown error Eroare necunoscută @@ -4317,7 +4541,12 @@ Instalați-l manual. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Se ignoră eroarea SSL, URL: „%1”, erori: „%2” @@ -5689,294 +5918,295 @@ Instalați-l manual. BitTorrent - + RSS RSS - Web UI - Interfață Web + Interfață Web - + Advanced Avansate - + Customize UI Theme... - + Transfer List Lista de transferuri - + Confirm when deleting torrents Cere confirmare la ștergerea torentelor - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Utilizează culori de rând alternative - + Hide zero and infinity values Ascunde valorile zero și infinit - + Always Întotdeauna - Paused torrents only - Doar torentele suspendate + Doar torentele suspendate - + Action on double-click Acțiune la clic dublu - + Downloading torrents: Torente în curs de descărcare: - - Start / Stop Torrent - Pornește / Oprește torent + Pornește / Oprește torent - - + + Open destination folder Deschide dosarul destinație - - + + No action Nicio acțiune - + Completed torrents: Torente încheiate: - + Auto hide zero status filters - + Desktop Spațiul de lucru - + Start qBittorrent on Windows start up Pornește qBittorrent la pornirea Windows-ului - + Show splash screen on start up Arată ecranul de întâmpinare la pornire - + Confirmation on exit when torrents are active Confirmare la ieșire când torrentele sunt active - + Confirmation on auto-exit when downloads finish Confirmare la ieșirea automată când descărcările s-au încheiat - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiO - + Torrent content layout: Amplasarea conținutului torentului: - + Original Original - + Create subfolder Creează subdosar - + Don't create subfolder Nu crea subdosar - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue Adaugă în vârful cozii - + When duplicate torrent is being added - + Merge trackers to existing torrent + Combină urmăritoarele unui torent existent + + + + Keep unselected files in ".unwanted" folder - + Add... Adăugare... - + Options.. Opțiuni.. - + Remove Elimină - + Email notification &upon download completion Trimite notificări prin poșta electronică la finalizarea descărcării - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Conexiuni totale cu parteneri: - + Any Oricare - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering Fi&ltrare adrese IP - + Schedule &the use of alternative rate limits Planifică utilizarea limitelor alternative de viteză - + From: From start time De la: - + To: To end time Către: - + Find peers on the DHT network Găsiți colegi în rețeaua DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5985,140 +6215,188 @@ Necesită criptare: conectați-vă numai la parteneri cu criptare de protocol Dezactivați criptarea: conectați-vă numai la parteneri fără criptarea protocolului - + Allow encryption Permite criptarea - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mai multe informații</a>) - + Maximum active checking torrents: - + &Torrent Queueing Coadă torente - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - Adaugă a&utomat aceste urmăritoare la noile descărcări: + Adaugă a&utomat aceste urmăritoare la noile descărcări: - + RSS Reader Cititor RSS - + Enable fetching RSS feeds Activează preluarea fluxurilor RSS - + Feeds refresh interval: Interval de reîmprospătare al fluxurilor: - + + Same host request delay: + + + + Maximum number of articles per feed: Numărul maxim de articole pe flux: - - - + + + min minutes min - + Seeding Limits Limite de contribuire - Pause torrent - Suspendă torentul + Suspendă torentul - + Remove torrent Elimină torentul - + Remove torrent and its files Elimină torentul și fișierele acestuia - + Enable super seeding for torrent Activați super contribuirea pentru torent - + When ratio reaches Când raportul ajunge la - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Adresă URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Descărcare automată a torentelor RSS - + Enable auto downloading of RSS torrents Activați descărcarea automată a torrentelor RSS - + Edit auto downloading rules... Modifică reguli de descărcare automată… - + RSS Smart Episode Filter Filtru RSS Smart Episode - + Download REPACK/PROPER episodes Descarcă episoade REPACK/PROPER - + Filters: Filtre: - + Web User Interface (Remote control) Interfață utilizator Web (Control la distanță) - + IP address: Adrese IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6127,42 +6405,41 @@ Specificați o adresă IPv4 sau IPv6. Puteți folosii „0.0.0.0” pentru orice „::” pentru orice adresă IPv6, sau „*” pentru amândouă IPv4 și IPv6. - + Ban client after consecutive failures: Interzice clientul după eșecuri consecutive: - + Never Niciodată - + ban for: interzice pentru: - + Session timeout: Expirarea sesiunii: - + Disabled Dezactivat - Enable cookie Secure flag (requires HTTPS) - Activează fanionul de securitate pentru cookie (necesită HTTPS) + Activează fanionul de securitate pentru cookie (necesită HTTPS) - + Server domains: Domenii servitor: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6171,441 +6448,494 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &Utilizează HTTPS în locul HTTP - + Bypass authentication for clients on localhost Sari autentificarea pentru clienți din rețeaua locală - + Bypass authentication for clients in whitelisted IP subnets Sari autentificarea pentru clienți din rețele IP permise - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area Minimizează qBittorrent în zona de notificare - + + Search + + + + + WebUI + + + + Interface Interfață - + Language: Limbă: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Stilul pictogramei din tăvița de sistem: - - + + Normal Normală - + File association Asociere fișier - + Use qBittorrent for .torrent files Utilizează qBittorrent pentru fișiere .torrent - + Use qBittorrent for magnet links Utilizează qBittorrent pentru legături magnet - + Check for program updates Verifică pentru actualizări ale programului - + Power Management Gestionare energie - + + &Log Files + + + + Save path: Cale de salvare: - + Backup the log file after: Fă o copie de rezervă a fișierului jurnal după: - + Delete backup logs older than: Șterge copiile de rezervă ale fișierului jurnal mai vechi decât: - + + Show external IP in status bar + + + + When adding a torrent Când se adaugă un torent - + Bring torrent dialog to the front Adu fereastra de dialog a torentului în față - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Șterge fișierele .torent a căror adăugare a fost abandonată - + Also when addition is cancelled Și când adăugarea a fost abandonată - + Warning! Data loss possible! Atenție! Este posibilă pierderea datelor! - + Saving Management Gestionare salvare - + Default Torrent Management Mode: Mod implicit de gestionare a torentelor: - + Manual Manual - + Automatic Automat - + When Torrent Category changed: Când categoria torentului s-a schimbat: - + Relocate torrent Mută torentul - + Switch torrent to Manual Mode Treci torentul în regim manual - - + + Relocate affected torrents Mută torentele afectate - - + + Switch affected torrents to Manual Mode Treci torentele afectate în regim manual - + Use Subcategories Utilizează subcategoriile - + Default Save Path: Cale de salvare implicită: - + Copy .torrent files to: Copiază fișierele .torrent în: - + Show &qBittorrent in notification area Arată qBittorrent în zona de notificare - &Log file - Fișier jurna&l + Fișier jurna&l - + Display &torrent content and some options - + De&lete .torrent files afterwards Șterge fișierele .torrent după - + Copy .torrent files for finished downloads to: Copiază fișierele .torrent pentru descărcările încheiate în: - + Pre-allocate disk space for all files Pre-alocă spațiu pe disc pentru toate fișierele - + Use custom UI Theme Folosește temă interfață grafică personalizată: - + UI Theme file: Fișier temă interfață grafică: - + Changing Interface settings requires application restart Pentru modificarea setărilor interfeței trebuie să reporniți aplicația - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder Previzualizează fișierul, altfel deschide dosarul destinație - - Show torrent options - Arată opțiunile torentului + Arată opțiunile torentului - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon Când se minimizează, fereastra principală este închisă și trebuie să fie redeschisă de la pictograma din tăvița de sistem - + The systray icon will still be visible when closing the main window Pictograma din tăvița de sistem va continua să fie vizibilă când este închisă fereastra principală - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Închide qBittorrent în zona de notificare - + Monochrome (for dark theme) Monocromatic (pentru tema întunecată) - + Monochrome (for light theme) Monocromatic (pentru tema luminoasă) - + Inhibit system sleep when torrents are downloading Împiedică suspendarea sistemului cât timp sunt torente care se descarcă - + Inhibit system sleep when torrents are seeding Împiedică suspendarea sistemului cât timp sunt torente care se contribuie - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days zile - + months Delete backup logs older than 10 months luni - + years Delete backup logs older than 10 years ani - + Log performance warnings Înregistrează avertizările de performanță - The torrent will be added to download list in a paused state - Torentul va fi adăugat în lista de descărcare cu starea suspendat + Torentul va fi adăugat în lista de descărcare cu starea suspendat - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Nu porni automat descărcarea - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files Adaugă extensia .!qB fișierelor incomplete - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: Când calea de salvare a categoriei s-a schimbat: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: Condiție de oprire a torentului: - - + + None Niciuna - - + + Metadata received Metadate primite - - + + Files checked Fișiere verificate - + Ask for merging trackers when torrent is being added manually - + Întreabă de combinarea urmăritoarelor când un torent este adăugat manual - + Use another path for incomplete torrents: Folosește o altă cale pentru torentele incomplete: - + Automatically add torrents from: Adaugă automat torente din: - + Excluded file names Denumiri de fișiere excluse - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6622,842 +6952,915 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Destinatarul - + To: To receiver Către: - + SMTP server: Servitor SMTP: - + Sender Expeditor - + From: From sender De la: - + This server requires a secure connection (SSL) Servitorul necesită o conexiune securizată (SSL) - - + + Authentication Autentificare - - - - + + + + Username: Nume utilizator: - - - - + + + + Password: Parolă: - + Run external program Rulează program extern - Run on torrent added - Rulează când este adăugat un torent + Rulează când este adăugat un torent - Run on torrent finished - Rulează când un torent este finalizat + Rulează când un torent este finalizat - + Show console window Arată fereastra de consolă - + TCP and μTP TCP și μTP - + Listening Port Port ascultat - + Port used for incoming connections: Portul utilizat pentru conexiunile de intrare: - + Set to 0 to let your system pick an unused port Setează ca 0 pentru a lăsa sistemul să folosească un port neutilizat. - + Random Aleator - + Use UPnP / NAT-PMP port forwarding from my router Utilizează înaintare port UPnP / NAT-PMP de la routerul meu - + Connections Limits Stabilește limitele conexiunii - + Maximum number of connections per torrent: Numărul maxim de conexiuni per torent: - + Global maximum number of connections: Număr maxim global de conexiuni: - + Maximum number of upload slots per torrent: Numărul maxim de sloturi de încărcare per torent: - + Global maximum number of upload slots: Număr maxim global de sloturi de încărcare: - + Proxy Server Servitor proxy - + Type: Tip: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Gazdă: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Altfel, servitorul proxy este utilizat doar pentru conexiuni la urmăritor - + Use proxy for peer connections Utilizează proxy pentru conexiuni la parteneri - + A&uthentication A&utentificare - + Info: The password is saved unencrypted Informație: Parola este salvată fără criptare - + Filter path (.dat, .p2p, .p2b): Cale filtru (.dat, .p2p, .p2b): - + Reload the filter Reîncarcă filtrul - + Manually banned IP addresses... Adrese IP blocate manual... - + Apply to trackers Aplică urmăritoarelor - + Global Rate Limits Limite de viteză globale - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Încărcare: - - + + Download: Descărcare: - + Alternative Rate Limits Limite de viteză alternative - + Start time Timpul de început - + End time Timpul de finalizare - + When: Când: - + Every day Zilnic - + Weekdays Zile lucrătoare - + Weekends Zile libere - + Rate Limits Settings Setări limite de viteză - + Apply rate limit to peers on LAN Aplică limitarea ratei partenerilor din rețeaua locală - + Apply rate limit to transport overhead Aplică limitarea de viteză incluzând datele de transport - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Aplică limitarea ratei protocolului µTP - + Privacy Confidențialitate - + Enable DHT (decentralized network) to find more peers Activează rețeaua descentralizată (DHT) pentru a găsi mai multe surse - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Schimbă parteneri cu clienții Bittorrent compatibili (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Activează schimbul de surse (PeX) cu alți clienți pentru a găsi mai multe surse - + Look for peers on your local network Caută parteneri în rețeaua locală - + Enable Local Peer Discovery to find more peers Activează descoperirea partenerilor locali pentru a găsi mai mulți parteneri - + Encryption mode: Modul criptării: - + Require encryption Necesită criptarea - + Disable encryption Dezactivează criptarea - + Enable when using a proxy or a VPN connection Activează când este utilizată o conexiune VPN sau proxy - + Enable anonymous mode Activează modalitatea anonimă - + Maximum active downloads: Numărul maxim de descărcări active: - + Maximum active uploads: Numărul maxim de încărcări active: - + Maximum active torrents: Numărul maxim de torente active: - + Do not count slow torrents in these limits Nu socoti torentele lente în aceste limite - + Upload rate threshold: Prag viteză de încărcare: - + Download rate threshold: Prag viteză de descărcare: - - - + + + + sec seconds sec - + Torrent inactivity timer: Temporizator de inactivitate a torentului: - + then apoi - + Use UPnP / NAT-PMP to forward the port from my router Utilizează UPnP / NAT-PMP pentru a înainta portul din routerul meu - + Certificate: Certificat: - + Key: Cheie: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informații despre certificate</a> - + Change current password Schimbă parola curentă - Use alternative Web UI - Folosește interfață web alternativă + Folosește interfață web alternativă - + Files location: Amplasarea fișierelor: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Securitate - + Enable clickjacking protection Activează protecția împotriva furtului de clicuri - + Enable Cross-Site Request Forgery (CSRF) protection Activează protecția Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Activează validarea antetului gazdei - + Add custom HTTP headers Adaugă antete HTTP particularizate - + Header: value pairs, one per line - + Enable reverse proxy support Activează sprijin proximitate (proxy) - + Trusted proxies list: Listă cu proxy-uri de încredere: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Serviciu: - + Register Înregistrează - + Domain name: Nume de domeniu: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Prin activarea acestor opțiuni, puteți <strong>pierde în mod definitiv<strong> fișierele dumneavoastră .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Dacă activați cea de-a doua opțiune (&ldquo;Și când adăugarea a fost abandonată&rdquo;) fișierul .torent <strong>va fi șters<strong>chiar dacă apăsați &ldquo; <strong>Abandonează<strong>&rdquo; în fereastra de dialog &ldquo;Adăugare torent&rdquo; - + Select qBittorrent UI Theme file - + Choose Alternative UI files location Alege o locație alternativă pentru fișierele UI - + Supported parameters (case sensitive): Parametri sprijiniți (sensibil la majuscule): - + Minimized - + Minimizat - + Hidden - + Ascuns - + Disabled due to failed to detect system tray presence - + No stop condition is set. Nicio condiție de oprire stabilită. - + Torrent will stop after metadata is received. Torentul se va opri dupa ce se primesc metadatele. - - Torrents that have metadata initially aren't affected. - Torentele care au metadate inițial nu sunt afectate. - - - + Torrent will stop after files are initially checked. Torentul se va opri după ce fișierele sunt verificate inițial. - + This will also download metadata if it wasn't there initially. Aceasta va descarca de asemenea și metadatele dacă nu au fost acolo inițial. - + %N: Torrent name %N: Nume torent - + %L: Category %L: Categorie - + %F: Content path (same as root path for multifile torrent) %F: Cale conținut (aceeași cu calea rădăcină pentru torrent cu mai multe fișiere) - + %R: Root path (first torrent subdirectory path) %R: Cale rădăcină (cale subdirector a primului torrent) - + %D: Save path %D: Cale de salvare - + %C: Number of files %C: Număr de fișiere - + %Z: Torrent size (bytes) %Z: Dimensiune torrent (octeți) - + %T: Current tracker %T: Urmăritor actual - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Sfat: Încapsulați parametrul între ghilimele (englezești) pentru a evita ca textul să fie tăiat la spațiu (de ex., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Niciunul) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate Certificat - + Select certificate Selectare certificat - + Private key Cheie privată - + Select private key Selectare cheie privată - - Select folder to monitor - Selectați dosarul ce va fi supravegheat + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + - + + System + System color scheme + + + + + Select folder to monitor + Selectați dosarul ce va fi supravegheat + + + Adding entry failed Adăugarea intrării a eșuat - - Location Error - Eroare locație + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - Amplasarea fișierelor pentru interfața web alternativă nu poate fi goală. + + Location Error + Eroare locație - - + + Choose export directory Alegeți un dosar pentru exportare - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etichete (separate prin virgulă) - + %I: Info hash v1 (or '-' if unavailable) %I: Informații index v1 (or „-” dacă nu sunt disponibile) - + %J: Info hash v2 (or '-' if unavailable) %J: Informații index v2 (sau „-” dacă nu sunt disponibile) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID torent (ori informații index de tip sha-1 pentru un torent de versiuna 1 ori informații de tip sha-256 reduse pentru un torent de versiunea 2/torent hibrid) - - - + + + Choose a save directory Alegeți un dosar pentru salvare - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file Alegeți un fișier filtru IP - + All supported filters Toate filtrele sprijinite - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Eroare de analiză - + Failed to parse the provided IP filter A eșuat analiza filtrului IP furnizat - + Successfully refreshed Reîmprospătat cu succes - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number S-a analizat cu succes filtrul IP furnizat: %1 reguli au fost aplicate. - + Preferences Preferințe - + Time Error Eroare timp - + The start time and the end time can't be the same. Timpul de pornire și timpul de încheiere nu pot fi aceiași. - - + + Length Error Eroare lungime - - - The Web UI username must be at least 3 characters long. - Numele de utilizator al interfeței Web trebuie să conțină minim 3 caractere. - - - - The Web UI password must be at least 6 characters long. - Parola interfeței Web trebuie să fie de minim 6 caractere. - PeerInfo - + Unknown Necunoscut - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection Conexiune de intrare - + Peer from DHT Partener din DHT - + Peer from PEX Partener din PEX - + Peer from LSD Partener din LSD - + Encrypted traffic Trafic criptat - + Encrypted handshake Salutare criptată + + + Peer is using NAT hole punching + + PeerListWidget @@ -7610,10 +8013,10 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer "%1" is manually banned - + Partenerul „%1” este interzis manual - + N/A Indisp. @@ -7636,7 +8039,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Lista partenerilor de adăugat (câte o adresă IP per linie): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7677,27 +8080,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Fișiere în această bucată: - + File in this piece: - + Fișier în această bucată: - + File in these pieces: - + Fișier în aceste bucăți: - + Wait until metadata become available to see detailed information Așteptați până când metadatele sunt obținute pentru a vedea informații detaliate - + Hold Shift key for detailed information Țineți apăsat tasta Shift pentru informații detaliate @@ -7710,58 +8113,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Module de căutare - + Installed search plugins: Module de căutare instalate: - + Name Denumire - + Version Versiune - + Url Adresă URL - - + + Enabled Activat - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Atenție: Asigurați-vă că respectați legile locale cu privire la drepturile de autor când descărcați torente de pe aceste motoare de căutare. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Instalează unul nou - + Check for updates Caută actualizări - + Close Închide - + Uninstall Dezinstalează @@ -7881,17 +8284,17 @@ Totuși, acele module au fost dezactivate. Sursa extensiei - + Search plugin source: Sursă modul de căutare: - + Local file Fișier local - + Web link Legătură Web @@ -7932,47 +8335,47 @@ Totuși, acele module au fost dezactivate. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Următoarele fișiere din torentul „%1” sprijină previzualizarea, vă rugăm să selectați unul dintre ele: - + Preview Previzualizare - + Name Denumire - + Size Dimensiune - + Progress Progres - + Preview impossible Previzualizare imposibilă - + Sorry, we can't preview this file: "%1". - + Resize columns Redimensionează coloanele - + Resize all non-hidden columns to the size of their contents Redimensionează toate coloanele neascunse la dimensiunea conținutului acestora @@ -7985,27 +8388,27 @@ Totuși, acele module au fost dezactivate. Private::FileLineEdit - + Path does not exist Calea nu există - + Path does not point to a directory - + Calea nu indică către un dosar - + Path does not point to a file - + Calea nu indică către un fișier - + Don't have read permission to path - + Don't have write permission to path @@ -8046,12 +8449,12 @@ Totuși, acele module au fost dezactivate. PropertiesWidget - + Downloaded: Descărcat: - + Availability: Disponibilitate: @@ -8066,53 +8469,53 @@ Totuși, acele module au fost dezactivate. Transfer - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Timp activ: - + ETA: Timp rămas: - + Uploaded: Încărcat: - + Seeds: Surse: - + Download Speed: Viteză de descărcare: - + Upload Speed: Viteză de încărcare: - + Peers: Parteneri: - + Download Limit: Limită de descărcare: - + Upload Limit: Limită de încărcare: - + Wasted: Pierdut: @@ -8122,193 +8525,249 @@ Totuși, acele module au fost dezactivate. Conexiuni: - + Information Informații - + Info Hash v1: Informații index v1: - + Info Hash v2: Informații index v2: - + Comment: Comentariu: - + Select All Selectează toate - + Select None Nu selecta nimic - + Share Ratio: Raport de partajare: - + Reannounce In: Reanunțare în: - + Last Seen Complete: Văzut complet ultima dată: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Dimensiune totală: - + Pieces: Bucăți: - + Created By: Creat de: - + Added On: Adăugat la: - + Completed On: Terminat la: - + Created On: Creat la: - + + Private: + + + + Save Path: Cale de salvare: - + Never Niciodată - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (avem %3) - - + + %1 (%2 this session) %1 (%2 în această sesiune) - - + + + N/A Indisponibil - + + Yes + Da + + + + No + Nu + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (contribuit pentru %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 maxim) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 în total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 în medie) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Sursă Web nouă + Sursă Web nouă - Remove Web seed - Elimină sursa Web + Elimină sursa Web - Copy Web seed URL - Copiază URL-ul sursei Web + Copiază URL-ul sursei Web - Edit Web seed URL - Editare URL sursă Web + Editare URL sursă Web - + Filter files... Filtrare nume dosare și fișiere... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Graficele de viteză sunt dezactivate - + You can enable it in Advanced Options Puteți să le activați în: Preferințe -> Avansat - New URL seed New HTTP source - Sursă URL nouă + Sursă URL nouă - New URL seed: - Sursa URL nouă: + Sursa URL nouă: - - This URL seed is already in the list. - Această sursă URL este deja în listă. + Această sursă URL este deja în listă. - + Web seed editing Editare sursă Web - + Web seed URL: URL sursă Web: @@ -8327,22 +8786,22 @@ Totuși, acele module au fost dezactivate. - + Invalid data format Format date nevalid - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8350,22 +8809,22 @@ Totuși, acele module au fost dezactivate. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8401,12 +8860,12 @@ Totuși, acele module au fost dezactivate. RSS::Private::Parser - + Invalid RSS feed. Flux RSS nevalid. - + %1 (line: %2, column: %3, offset: %4). %1 (linie: %2, coloană: %3, deplasare: %4). @@ -8414,99 +8873,99 @@ Totuși, acele module au fost dezactivate. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. Elementul RSS cu URL-ul dat există deja: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. Nu se poate muta dosarul rădăcină. - - + + Item doesn't exist: %1. Elementul nu există: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. Nu se poate șterge dosarul rădăcină. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. Calea pentru elementul RSS e incorectă: %1 - + RSS item with given path already exists: %1. Elementul RSS cu calea dată există deja: %1. - + Parent folder doesn't exist: %1. Dosarul părinte nu există: %1. @@ -8530,8 +8989,8 @@ Totuși, acele module au fost dezactivate. - - + + Mark items read Marchează elementele ca citite @@ -8556,132 +9015,132 @@ Totuși, acele module au fost dezactivate. Torente: (clic-dublu pentru a descărca) - - + + Delete Șterge - + Rename... Redenumire... - + Rename Redenumește - - + + Update Actualizează - + New subscription... Abonament nou… - - + + Update all feeds Actualizează toate fluxurile - + Download torrent Descarcă torentul - + Open news URL Deschide URL-ul pentru știri - + Copy feed URL Copiază URL-ul fluxului - + New folder... Dosar nou... - + Edit feed URL... - + Edit feed URL - + Please choose a folder name Alegeți o denumire pentru dosar - + Folder name: Denumire dosar: - + New folder Dosar nou - - + + Please type a RSS feed URL Introduceți un URL pentru fluxul RSS - - + + Feed URL: URL-ul fluxului: - + Deletion confirmation Confirmare ștergere - + Are you sure you want to delete the selected RSS feeds? Sigur doriți să ștergeți fluxurile RSS alese? - + Please choose a new name for this RSS feed Alegeți o nouă denumire pentru acest flux RSS - + New feed name: Denumire flux nou: - + Rename failed Redenumirea a eșuat - + Date: Dată: - + Feed: - + Author: Autor: @@ -8689,38 +9148,38 @@ Totuși, acele module au fost dezactivate. SearchController - + Python must be installed to use the Search Engine. Trebuie instalat Python pentru a utiliza Motorul de Căutare. - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range Decalajul este în afara intervalului - + All plugins are already up to date. Toate modulele sunt deja actualizate. - + Updating %1 plugins Se actualizează %1 module - + Updating plugin %1 Se actualizează modulul %1 - + Failed to check for plugin updates: %1 A eșuat căutarea actulizărilor pentru modulele de căutare: %1 @@ -8795,132 +9254,146 @@ Totuși, acele module au fost dezactivate. Dimensiune: - + Name i.e: file name Nume - + Size i.e: file size Dimensiune - + Seeders i.e: Number of full sources Surse - + Leechers i.e: Number of partial sources Lipitori - Search engine - Motor de căutare + Motor de căutare - + Filter search results... Filtrare rezultate căutare... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Rezultate (se arată <i>%1</i> din <i>%2</i>): - + Torrent names only Numai numele torentelor - + Everywhere Oriunde - + Use regular expressions Folosește expresii regulate - + Open download window Deschide fereastra de descărcare - + Download Descarcă - + Open description page Deschide pagina descrierii - + Copy Copiază - + Name Denumire - + Download link Legătură de descărcare - + Description page URL URL-ul paginii de descriere - + Searching... Se caută… - + Search has finished Căutarea s-a încheiat - + Search aborted Căutarea a fost abandonată - + An error occurred during search... A apărut o eroare în timpul căutării... - + Search returned no results Căutarea nu a întors niciun rezultat - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Vizibilitate coloane - + Resize columns Redimensionează coloanele - + Resize all non-hidden columns to the size of their contents Redimensionează toate coloanele neascunse la dimensiunea conținutului acestora @@ -8928,104 +9401,104 @@ Totuși, acele module au fost dezactivate. SearchPluginManager - + Unknown search engine plugin file format. Format fișier necunoscut pentru modul motor de căutare. - + Plugin already at version %1, which is greater than %2 Plugin-ul este la versiunea %1, care e mai mare decât %2 - + A more recent version of this plugin is already installed. O versiune mai recentă a acestui plugin este deja instalată - + Plugin %1 is not supported. Modulul %1 nu este sprijinit. - - + + Plugin is not supported. Modulul nu este sprijinit. - + Plugin %1 has been successfully updated. Extensia %1 a fost actualizată cu succes. - + All categories Toate categoriile - + Movies Filme artistice - + TV shows Filme seriale - + Music Muzică - + Games Jocuri - + Anime Anime - + Software Software - + Pictures Imagini - + Books Cărți - + Update server is temporarily unavailable. %1 Servitorul de actualizări este temporar nedisponibil. %1 - - + + Failed to download the plugin file. %1 Descărcarea fișierului modulului a eșuat. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -9035,114 +9508,153 @@ Totuși, acele module au fost dezactivate. - - - - Search Caută - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Nu există niciun modul de căutare instalat. Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al ferestrei pentru a instala unul nou. - + Search plugins... Module de căutare... - + A phrase to search for. O expresie de căutat. - + Spaces in a search term may be protected by double quotes. Spațiile dintr-o expresie de căutare pot fi protejate prin ghilimele (englezești, duble). - + Example: Search phrase example Exemplu: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: caută după <b>foo bar</b> - + All plugins Toate modulele - + Only enabled Doar activate - + + + Invalid data format. + Format de date nevalid . + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: caută după <b>foo</b> și <b>bar</b> - + + Refresh + + + + Close tab Închide fila - + Close all tabs Închide toate filele - + Select... Alege… - - - + + Search Engine Motor de căutare - + + Please install Python to use the Search Engine. Instalați Python pentru a utiliza motorul de căutare. - + Empty search pattern Model de căutare gol - + Please type a search pattern first Introduceți întâi un model de căutare - + + Stop Oprește - Search has finished - Căutarea s-a finalizat + Căutarea s-a finalizat - Search has failed - Căutarea a eșuat + Căutarea a eșuat + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9255,34 +9767,34 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al - + Upload: Încărcare: - - - + + + - - - + + + KiB/s KiO/s - - + + Download: Descărcare: - + Alternative speed limits Limite de viteză alternative @@ -9474,32 +9986,32 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al Timp mediu la coadă: - + Connected peers: Parteneri conectați: - + All-time share ratio: Raport de partajare din toate timpurile: - + All-time download: Descărcări din toate timpurile: - + Session waste: Pierderi în sesiune: - + All-time upload: Încărcat din toate timpurile: - + Total buffer size: Dimensiune totală buffer: @@ -9514,12 +10026,12 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al Sarcini Intrare/Ieșire puse la coadă: - + Write cache overload: Supraîncărcare prestocare scriere: - + Read cache overload: Supraîncărcare prestocare citire: @@ -9538,51 +10050,67 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al StatusBar - + Connection status: Stare conexiune: - - + + No direct connections. This may indicate network configuration problems. Fără conexiuni directe. Aceasta ar putea indica o problemă la configurarea rețelei. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 noduri - + qBittorrent needs to be restarted! qBittorrent trebuie să fie repornit! - - - + + + Connection Status: Stare conexiune: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Deconectat. Aceasta înseamnă de obicei că qBittorrent a eșuat în ascultarea portului selectat pentru conexiuni de intrare. - + Online Conectat - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Clic pentru a activa limitele de viteză alternative - + Click to switch to regular speed limits Clic pentru a activa limitele de viteză obișnuite @@ -9611,14 +10139,22 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al Încheiate (0) - Resumed (0) - Reluate (0) + Reluate (0) - Paused (0) - Suspendate (0) + Suspendate (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9680,10 +10216,29 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al Completed (%1) Încheiate (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Suspendate (%1) + Suspendate (%1) @@ -9691,14 +10246,12 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al Se mută (%1) - Resume torrents - Reia torentele + Reia torentele - Pause torrents - Pauzează torentele + Pauzează torentele @@ -9706,9 +10259,8 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al Elimină torentele - Resumed (%1) - Reluate (%1) + Reluate (%1) @@ -9749,17 +10301,17 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al TagFilterModel - + Tags Marcaje - + All Toate - + Untagged Nemarcate @@ -9767,52 +10319,64 @@ Dați clic pe butonul „Module de căutare...” din colțul din dreapta-jos al TagFilterWidget - + Add tag... Adaugă marcaj… - + Remove tag Elimină marcajul - + Remove unused tags Elimină marcaje nefolosite - Resume torrents - Reia torentele + Reia torentele - Pause torrents - Întrerupe torente + Întrerupe torente - + Remove torrents Elimină torentele - New Tag - Marcaj nou + Marcaj nou + + + + Start torrents + + + + + Stop torrents + - + Tag: Marcaj: - + + Add tag + + + + Invalid tag name Denumire nevalidă de marcaj - + Tag name '%1' is invalid Denumirea de marcaj „%1” nu este validă @@ -9952,32 +10516,32 @@ Alegeți o denumire diferită și încercați iar. TorrentContentModel - + Name Nume - + Progress Progres - + Download Priority Prioritate descărcare - + Remaining Rămas - + Availability Disponibilitate - + Total Size Dimensiune totală @@ -10022,102 +10586,120 @@ Alegeți o denumire diferită și încercați iar. TorrentContentWidget - + Rename error Eroare la redenumire - + Renaming Se redenumește - + New name: Denumire nouă: - + Column visibility Vizibilitate coloană - + Resize columns Redimensionează coloanele - + Resize all non-hidden columns to the size of their contents Redimensionează toate coloanele neascunse la dimensiunea conținutului acestora - + Open Deschide - + Open containing folder Deschide dosarul părinte - + Rename... Redenumire... - + Priority Prioritate - - + + Do not download Nu descărca - + Normal Normală - + High Înaltă - + Maximum Maxim - + By shown file order După ordinea afișată a fișierelor - + Normal priority Prioritate normală - + High priority Prioritate înaltă - + Maximum priority Prioritate maximă - + Priority by shown file order Prioritate după ordinea afișată a fișierelor + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10142,13 +10724,13 @@ Alegeți o denumire diferită și încercați iar. - + Select file Alegeți fișierul - + Select folder Alegeți dosarul @@ -10173,58 +10755,10 @@ Alegeți o denumire diferită și încercați iar. Dimensiune bucată: - + Auto Automat - - 16 KiB - 16 KiO - - - 32 KiB - 32 KiO - - - 64 KiB - 64 KiO - - - 128 KiB - 128 KiO - - - 256 KiB - 256 KiO - - - 512 KiB - 512 KiO - - - 1 MiB - 1 MiO - - - 2 MiB - 2 MiO - - - 4 MiB - 4 MiO - - - 8 MiB - 8 MiO - - - 16 MiB - 16 MiO - - - 32 MiB - 32 MiO - Calculate number of pieces: @@ -10271,92 +10805,83 @@ Alegeți o denumire diferită și încercați iar. Câmpuri - + You can separate tracker tiers / groups with an empty line. Puteți separa nivelurile/grupurile de urmăritoare cu o linie goală. - + Web seed URLs: URL sursă Web: - + Tracker URLs: URL-urile urmăritorului: - + Comments: Comentarii: - + Source: Sursă: - + Progress: Progres: - + Create Torrent Creează torent - - + + Torrent creation failed Crearea torentului a eșuat - + Reason: Path to file/folder is not readable. Motiv: Calea către fișier/dosar nu este accesibilă. - + Select where to save the new torrent Alegeți unde să fie salvat torentul nou - + Torrent Files (*.torrent) Fișiere torent (*.torrent) - - Reason: %1 - Motiv: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Motivul: „%1” - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - Motiv: Torentul creat nu este valid. Nu va fi adăugat la lista de descărcări. - - - + Torrent creator Creator de torente - + Torrent created: Torent creat: @@ -10364,32 +10889,32 @@ Alegeți o denumire diferită și încercați iar. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 Configurația dosarelor supravegheate nu a putut fi salvată %1. Eroare: %2 - + Watched folder Path cannot be empty. Calea dosarului supravegheat nu poate fi goală. - + Watched folder Path cannot be relative. Calea dosarului supravegheat nu poate fi relativă. @@ -10397,27 +10922,27 @@ Alegeți o denumire diferită și încercați iar. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" Se supraveghează dosarul: „%1” @@ -10425,14 +10950,8 @@ Alegeți o denumire diferită și încercați iar. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Metadate nevalide + Metadate nevalide @@ -10463,127 +10982,199 @@ Alegeți o denumire diferită și încercați iar. Folosește o altă cale pentru torentul incomplet - + Category: Categorie: - + + Torrent Share Limits + + + Torrent speed limits - Limite de viteză ale torenților + Limite de viteză ale torenților - + Download: Descărcare: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiO/s - + These will not exceed the global limits Acestea nu vor depășii limitele globale - + Upload: Încărcare: - Torrent share limits - Limitele de partajare a torenților + Limitele de partajare a torenților - Use global share limit - Utilizează limitarea globală a partajării + Utilizează limitarea globală a partajării - Set no share limit - Nu stabili nicio limită de partajare + Nu stabili nicio limită de partajare - Set share limit to - Stabilește limita de partajare la + Stabilește limita de partajare la - ratio - raport + raport - total minutes - - - - - inactive minutes - + minute totale - + Disable DHT for this torrent Dezactivează DHT pentru acest torent - + Download in sequential order Descarcă în ordine secvențială - + Disable PeX for this torrent Dezactivează PeX pentru acest torent - + Download first and last pieces first Descarcă întâi primele și ultimele bucăți - + Disable LSD for this torrent Dezactivează LSD pentru acest torent - + Currently used categories Categorii folosite acum - - + + Choose save path Alegeți calea de salvare - + Not applicable to private torrents Nu se aplică la torente private - No share limit method selected - Nu a fost selectată nicio metodă de limitare a partajării + Nu a fost selectată nicio metodă de limitare a partajării - Please select a limit method first - Selectați întâi o metodă de limitare + Selectați întâi o metodă de limitare + + + + TorrentShareLimitsWidget + + + + + + Default + Implicit + + + + + + Unlimited + Nelimitat + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Elimină torentul + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Activați super contribuirea pentru torent + + + + Ratio: + Raport: @@ -10591,35 +11182,39 @@ Alegeți o denumire diferită și încercați iar. Torrent Tags - + Etichete torent - New Tag - Marcaj nou + Marcaj nou + Add tag + + + + Tag: Marcaj: - + Invalid tag name Denumire nevalidă de marcaj - + Tag name '%1' is invalid. - + Tag exists Marcajul există - + Tag name already exists. Denumirea marcajului există deja. @@ -10627,115 +11222,130 @@ Alegeți o denumire diferită și încercați iar. TorrentsController - + Error: '%1' is not a valid torrent file. Eroare: „%1” nu este un fișier torent valid. - + Priority must be an integer Prioritatea trebuie să fie un număr întreg - + Priority is not valid Prioritatea nu este validă - + Torrent's metadata has not yet downloaded Metadatele torentului nu au fost descărcate încă - + File IDs must be integers ID-urile fișierului trebuie să fie numere întregi - + File ID is not valid ID-urile fișierului nu sunt valide - - - - + + + + Torrent queueing must be enabled Punerea în coadă a torentelor trebuie să fie activată - - + + Save path cannot be empty Calea de salvare nu trebuie să fie goală - - + + Cannot create target directory Dosarul țintă nu poate fi creat - - + + Category cannot be empty Categoria nu trebuie să fie goală - + Unable to create category Nu s-a putut crea categoria - + Unable to edit category Nu s-a putut modifica categoria - + Unable to export torrent file. Error: %1 - + Cannot make save path Nu am putut crea calea de salvare - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Parametrul 'sort' de sortare e invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory Nu pot scrie în director - + WebUI Set location: moving "%1", from "%2" to "%3" Interfață web - Stabilire locație: se mută „%1”, din „%2” în „%3” - + Incorrect torrent name Nume torent incorect - - + + Incorrect category name Nume categorie incorectă @@ -10766,257 +11376,199 @@ Alegeți o denumire diferită și încercați iar. TrackerListModel - - + Working - Funcțional + Funcțional - + Disabled - Dezactivat + Dezactivat - + Disabled for this torrent - Dezactivat pentru acest torent + Dezactivat pentru acest torent - + This torrent is private - Acest torent este privat + Acest torent este privat - + N/A - + Indisp. - + Updating... - Se actualizează… + Se actualizează… - + Not working - Nefuncțional + Nefuncțional - + Tracker error - + Eroare urmăritor - + Unreachable - + Not contacted yet - Nu a fost contactat încă + Nu a fost contactat încă - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Nivel + + BT Protocol + - - Protocol + + Next Announce - - Status - Stare + + Min Announce + + + + Invalid status! + Stare nevalidă! + + + + Tier + Nivel + + + Protocol + Protocol - Peers - Parteneri + Status + Stare - Seeds - Surse + Peers + Parteneri - Leeches - Lipitori + Seeds + Surse - Times Downloaded - Număr de descărcări + Leeches + Lipitori - Message - Mesaj + Times Downloaded + Număr de descărcări - Next announce - - - - - Min announce - - - - - v%1 - + Message + Mesaj TrackerListWidget - Working - Funcțional - - - Disabled - Dezactivat - - - Disabled for this torrent - Dezactivat pentru acest torent - - - + This torrent is private Acest torent este privat - Updating... - Se actualizează… - - - Not working - Nefuncțional - - - Not contacted yet - Nu a fost contactat încă - - - N/A - Indisp. - - - + Tracker editing Modificare urmăritor - + Tracker URL: URL urmăritor: - - + + Tracker editing failed Editarea urmăritorului a eșuat - + The tracker URL entered is invalid. URL-ul urmăritorului nu este valid. - + The tracker URL already exists. URL-ul urmăritorului există deja. - + Edit tracker URL... Editare URL urmăritor... - + Remove tracker Elimină urmăritorul - + Copy tracker URL Copiază URL-ul urmăritorului - + Force reannounce to selected trackers Forțează reanunțarea urmăritoarelor selectate - + Force reannounce to all trackers Forțează reanunțarea tuturor urmăritoarelor - Tier - Nivel - - - URL - URL - - - Status - Stare - - - Seeds - Surse - - - Times Downloaded - Număr de descărcări - - - + Resize columns Redimensionează coloanele - + Resize all non-hidden columns to the size of their contents Redimensionează toate coloanele neascunse la dimensiunea conținutului acestora - Peers - Parteneri - - - + Add trackers... Adaugă urmăritoare… - Leeches - Lipitori - - - Message - Mesaj - - - + Column visibility Vizibilitate coloană @@ -11034,125 +11586,108 @@ Alegeți o denumire diferită și încercați iar. Listă cu urmăritoare de adăugat (unul pe linie): - + µTorrent compatible list URL: Listă URL compatibilă µTorrent: - + Download trackers list - + Descarcă lista de urmăritoare - + Add Adaugă - + Trackers list URL error - + Eroare adresă URL listă de urmăritoare - + The trackers list URL cannot be empty - + Adresa URL a listei de urmăritoare nu poate fi goală - + Download trackers list error - + Eroare la descărcarea listei de urmăritoare - + Error occurred when downloading the trackers list. Reason: "%1" - + A fost întâmpinată o eroare câ se descărca lista de urmăritoare. Motivul: „%1” TrackersFilterWidget - All (0) - this is for the tracker filter - Toate (0) - - - Trackerless (0) - Fără urmăritor (0) - - - Error (0) - Cu erori (0) - - - Warning (0) - Cu avertizări (0) - - - Trackerless - Fără urmăritoare - - - Error (%1) - Cu erori (%1) - - - + Warning (%1) Cu avertizări (%1) - + Trackerless (%1) Fără urmăritor (%1) - + Tracker error (%1) - + Eroare urmăritoare (%1) - + Other error (%1) - + Remove tracker - Elimină urmăritorul + Elimină urmăritorul + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Reia torentele + Reia torentele - Pause torrents - Pauzează torentele + Pauzează torentele - + Remove torrents Elimină torentele - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Sigur doriți să eliminați urmăritorul „%1” de la toate torentele? - + Don't ask me again. - + Nu mă întreba din nou. - + All (%1) this is for the tracker filter Toate (%1) @@ -11161,7 +11696,7 @@ Alegeți o denumire diferită și încercați iar. TransferController - + 'mode': invalid argument @@ -11254,9 +11789,8 @@ Alegeți o denumire diferită și încercați iar. Se verifică datele de reluare - Paused - Suspendat + Suspendat @@ -11281,220 +11815,262 @@ Alegeți o denumire diferită și încercați iar. Eroare - + Name i.e: torrent name Denumire - + Size i.e: torrent size Dimensiune - + Progress % Done Progres - Status Torrent status (e.g. downloading, seeding, paused) - Stare + Stare - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stare + + + Seeds i.e. full sources (often untranslated) Surse - + Peers i.e. partial sources (often untranslated) Parteneri - + Down Speed i.e: Download speed Viteză desc. - + Up Speed i.e: Upload speed Viteză înc. - + Ratio Share ratio Raport - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Rămas - + Category Categorie - + Tags Marcaje - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Adăugat la - + Completed On Torrent was completed on 01/01/2010 08:00 Încheiat la - + Tracker Urmăritor - + Down Limit i.e: Download limit Limită desc. - + Up Limit i.e: Upload limit Limită înc. - + Downloaded Amount of data downloaded (e.g. in MB) Descărcat - + Uploaded Amount of data uploaded (e.g. in MB) Încărcat - + Session Download Amount of data downloaded since program open (e.g. in MB) Descărcat în sesiune - + Session Upload Amount of data uploaded since program open (e.g. in MB) Încărcat în sesiune - + Remaining Amount of data left to download (e.g. in MB) Rămas - + + Time Active + Time (duration) the torrent is active (not stopped) + Durată activă + + + + Yes + Da + + + + No + Nu + + Time Active Time (duration) the torrent is active (not paused) - Durată activă + Durată activă - + Save Path Torrent save path Cale de salvare - + Incomplete Save Path Torrent incomplete save path Cale de salvare incompletă - + Completed Amount of data completed (e.g. in MB) Încheiat - + Ratio Limit Upload share ratio limit Limită raport - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Văzut complet ultima dată - + Last Activity Time passed since a chunk was downloaded/uploaded Ultima activitate - + Total Size i.e. Size including unwanted data Dimensiune totală - + Availability The number of distributed copies of the torrent Disponibilitate - + Info Hash v1 i.e: torrent info hash v1 Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Reanunțare în + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Indisp. - + %1 ago e.g.: 1h 20m ago %1 în urmă - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (contribuit pentru %2) @@ -11503,334 +12079,358 @@ Alegeți o denumire diferită și încercați iar. TransferListWidget - + Column visibility Vizibilitate coloană - + Recheck confirmation Confirmare reverificare - + Are you sure you want to recheck the selected torrent(s)? Sigur doriți să reverificați torentele selectate? - + Rename Redenumire - + New name: Denumire nouă: - + Choose save path Alegeți calea de salvare - Confirm pause - Connfirmare pauzare + Connfirmare pauzare - Would you like to pause all torrents? - Doriți să puneți în pauză toate torentele? + Doriți să puneți în pauză toate torentele? - Confirm resume - Confirmare reluare + Confirmare reluare - Would you like to resume all torrents? - Doriți să reluați toate torentele? + Doriți să reluați toate torentele? - + Unable to preview Nu pot previzualiza - + The selected torrent "%1" does not contain previewable files Torentul selectat "%1" nu conține fișiere previzualizabile - + Resize columns Redimensionează coloanele - + Resize all non-hidden columns to the size of their contents Redimensionează toate coloanele neascunse la dimensiunea conținutului acestora - + Enable automatic torrent management Activează gestionarea automată a torentelor - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Sigur doriți să activați Gestiunea Automată a Torentelor pentru torentele alese? Acestea pot fi relocate. - Add Tags - Adaugă marcaje + Adaugă marcaje - + Choose folder to save exported .torrent files Alegeți un dosar pentru a salva fișierele .torrent exportate - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists Există deja un fișier cu același nume - + Export .torrent file error - + Remove All Tags Elimină toate marcajele - + Remove all tags from selected torrents? Eliminați toate marcajele de la torentele alese? - + Comma-separated tags: Marcaje separate prin virgulă: - + Invalid tag Marcaj nevalid - + Tag name: '%1' is invalid Denumire marcaj: „%1” nu este valid - &Resume Resume/start the torrent - &Reia + &Reia - &Pause Pause the torrent - &Pauzează + &Pauzează - Force Resu&me Force Resume/start the torrent - Forțează re&luarea + Forțează re&luarea - + Pre&view file... Pre&vizualizare fișier... - + Torrent &options... &Opțiuni torent... - + Open destination &folder Deschide &dosarul destinație - + Move &up i.e. move up in the queue Mută în s&us - + Move &down i.e. Move down in the queue Mută în &jos - + Move to &top i.e. Move to top of the queue Mu&tă în vârf - + Move to &bottom i.e. Move to bottom of the queue Mută la &bază - + Set loc&ation... Stabilire loc&ație... - + Force rec&heck Forțează re&verificarea - + Force r&eannounce Forțează r&eanunțarea - + &Magnet link Legătură &Magnet - + Torrent &ID &Identificator torentn - + + &Comment + &Comentariu + + + &Name &Nume - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Rede&numește… - + Edit trac&kers... M&odifică urmăritoarele… - + E&xport .torrent... E&xportă .torrent… - + Categor&y Catego&rie - + &New... New category... &Nouă… - + &Reset Reset category &Reinițializează - + Ta&gs Mar&caje - + &Add... Add / assign multiple tags... &Adaugă… - + &Remove All Remove all tags &Elimină toate - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Coadă - + &Copy &Copiază - + Exported torrent is not necessarily the same as the imported - + Download in sequential order Descarcă în ordine secvențială - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Elimină - + Download first and last pieces first Descarcă întâi primele și ultimele bucăți - + Automatic Torrent Management Gestiune Automată a Torentelor - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Regimul automat înseamnă că diferite proprietăți ale torentului (cum ar fi calea de salvare) vor fi decise în baza categoriei asociate - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Nu se poate forța reanunțarea dacă torentul e întrerupt/în coadă/eronat/verificând + Nu se poate forța reanunțarea dacă torentul e întrerupt/în coadă/eronat/verificând - + Super seeding mode Mod super-contribuire @@ -11845,58 +12445,58 @@ Alegeți o denumire diferită și încercați iar. Colors - + Culori Color ID - + ID culoare Light Mode - + Modul luminos Dark Mode - + Modul întunecat Icons - + Pictograme Icon ID - + ID pictogramă - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11904,7 +12504,12 @@ Alegeți o denumire diferită și încercați iar. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Eșec la încărcarea tematicii UI din fișier: „%1” @@ -11935,34 +12540,27 @@ Alegeți o denumire diferită și încercați iar. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Detectat Python, denumire executabil: „%1”, versiune: %2 - - - Python not detected - Python nu a fost detectat - Found Python executable. Name: "%1". Version: "%2" @@ -11997,27 +12595,27 @@ Alegeți o denumire diferită și încercați iar. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12081,72 +12679,72 @@ Alegeți o denumire diferită și încercați iar. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Tip de fișier neacceptabil, numai fișierele obișnuite sunt permise - + Symlinks inside alternative UI folder are forbidden. Legăturile simbolice înăuntrul dosarului de interfață alternativ sunt interzise. - - Using built-in Web UI. - Se folosește interfața web încorporată. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12154,143 +12752,136 @@ Alegeți o denumire diferită și încercați iar. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup successful - - Web UI: Now listening on IP: %1, port: %2 - Interfața web: Ascultă acum pe adresa IP: %1, portul: %2 + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + + fs + + + Unknown error + Eroare necunoscută + misc - + B bytes O - + KiB kibibytes (1024 bytes) KiO - + MiB mebibytes (1024 kibibytes) MiO - + GiB gibibytes (1024 mibibytes) GiO - + TiB tebibytes (1024 gibibytes) TiO - + PiB pebibytes (1024 tebibytes) PiO - + EiB exbibytes (1024 pebibytes) EiO - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1o %2m + %1o %2m - + %1d %2h e.g: 2 days 10 hours - %1z %2o + %1z %2o - + %1y %2d e.g: 2 years 10 days - %1a %2z + %1a %2z - %1h %2m - e.g: 3hours 5minutes - %1o %2m - - - %1d %2h - e.g: 2days 10hours - %1z %2o - - - %1y %2d - e.g: 2years 10days - %1a %2z - - - - + + Unknown Unknown (size) Necunoscut - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent va opri acum calculatorul deoarece toate descărcările au fost finalizate. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_ru.ts b/src/lang/qbittorrent_ru.ts index a1bb90bef47b..d46733d28ac6 100644 --- a/src/lang/qbittorrent_ru.ts +++ b/src/lang/qbittorrent_ru.ts @@ -14,87 +14,87 @@ О программе - + Authors Авторы - + Current maintainer Текущий куратор - + Greece Греция - - + + Nationality: Страна: - - + + E-mail: Эл. почта: - - + + Name: Имя: - + Original author Изначальный автор - + France Франция - + Special Thanks Благодарности - + Translators Перевод - + License Лицензия - + Software Used Встроенное ПО - + qBittorrent was built with the following libraries: Эта сборка qBittorrent использует следующие библиотеки: - + Copy to clipboard - + Копировать в буфер An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. - Передовой клиент сети БитТоррент, созданный с использованием языка C++ и библиотек Qt и libtorrent-rasterbar. + Передовой клиент сети БитТоррент, созданный при помощи языка C++ и библиотек Qt и libtorrent-rasterbar. - Copyright %1 2006-2023 The qBittorrent project - Авторское право %1 2006-2023 Проект qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Авторское право %1 2006-2024 Проект qBittorrent @@ -166,14 +166,13 @@ Путь сохранения - + Never show again Больше не показывать - Torrent settings - Настройки торрента + Настройки торрента @@ -191,12 +190,12 @@ Запустить торрент - + Torrent information Сведения о торренте - + Skip hash check Пропустить проверку хеша @@ -205,6 +204,11 @@ Use another path for incomplete torrent Отдельный путь для неполного торрента + + + Torrent options + + Tags: @@ -213,7 +217,7 @@ Click [...] button to add/remove tags. - Щёлкните по кнопке [...], чтобы добавить/удалить метки. + Нажмите кнопку [...], чтобы добавить/убрать метки. @@ -231,70 +235,75 @@ Условие остановки: - - + + None Нет - - + + Metadata received Метаданные получены - - + + Torrents that have metadata initially will be added as stopped. + Торренты, изначально содержащие метаданные, будут добавлены в остановленном состоянии. + + + + Files checked Файлы проверены - + Add to top of queue - В начало очереди + Добавить в начало очереди - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog При включении предотвращает удаление торрент-файла, игнорируя параметры «Загрузок» в «Настройках» - + Content layout: Состав содержимого: - + Original Исходный - + Create subfolder Создавать подпапку - + Don't create subfolder Не создавать подпапку - + Info hash v1: Инфо-хеш v1: - + Size: Размер: - + Comment: Комментарий: - + Date: Дата: @@ -324,245 +333,182 @@ Запомнить последний путь сохранения - + Do not delete .torrent file Не удалять торрент-файл - + Download in sequential order Загрузить последовательно - + Download first and last pieces first - Загрузить крайние части первыми + Загрузить сперва крайние части - + Info hash v2: Инфо-хеш v2: - + Select All Выбрать все - + Select None - Отменить выбор + Снять выбор - + Save as .torrent file... Сохранить в .torrent-файл… - + I/O Error Ошибка ввода-вывода - Invalid torrent - Недопустимый торрент - - - + Not Available This comment is unavailable Недоступно - + Not Available This date is unavailable Недоступно - + Not available Недоступно - Invalid magnet link - Недопустимая магнит-ссылка - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Не удалось загрузить торрент: %1. -Ошибка: %2 - - - This magnet link was not recognized - Эта магнит-ссылка не распознана - - - + Magnet link Магнит-ссылка - + Retrieving metadata... Поиск метаданных… - - + + Choose save path Выберите путь сохранения - Torrent is already present - Торрент уже существует - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Торрент «%1» уже есть в списке. Трекеры не были объединены, так как торрент частный. - - - Torrent is already queued for processing. - Торрент уже в очереди на обработку. - - - + No stop condition is set. Без условия остановки. - + Torrent will stop after metadata is received. Торрент остановится по получении метаданных. - - Torrents that have metadata initially aren't affected. - Торренты, изначально содержащие метаданные, не затрагиваются. - - - + Torrent will stop after files are initially checked. - Торрент остановится по первоначальной проверке файлов. + Торрент остановится после первичной проверки файлов. - + This will also download metadata if it wasn't there initially. Это также позволит загрузить метаданные, если их изначально там не было. - - + + N/A Н/Д - Magnet link is already queued for processing. - Магнит-ссылка уже в очереди на обработку. - - - + %1 (Free space on disk: %2) %1 (свободно на диске: %2) - + Not available This size is unavailable. Недоступно - + Torrent file (*%1) Торрент-файл (*%1) - + Save as torrent file Сохранить в торрент-файл - + Couldn't export torrent metadata file '%1'. Reason: %2. Не удалось экспортировать файл метаданных торрента «%1». Причина: %2. - + Cannot create v2 torrent until its data is fully downloaded. Нельзя создать торрент v2, пока его данные не будут полностью загружены. - Cannot download '%1': %2 - Не удаётся загрузить «%1»: %2 - - - + Filter files... Фильтр файлов… - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Торрент «%1» уже есть в списке. Трекеры нельзя объединить, так как торрент частный. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торрент «%1» уже есть в списке. Хотите объединить трекеры из нового источника? - - - + Parsing metadata... Разбираются метаданные… - + Metadata retrieval complete Поиск метаданных завершён - - Failed to load from URL: %1. -Error: %2 - Не удалось загрузить из адреса: %1 -Ошибка: %2 - - - Download Error - Ошибка загрузки - AddTorrentManager Downloading torrent... Source: "%1" - + Загрузка торрента… Источник: «%1» Failed to add torrent. Source: "%1". Reason: "%2" - + Не удалось добавить торрент. Источник: «%1». Причина: «%2» - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Обнаружена попытка добавления повторяющегося торрента. Источник: %1. Существующий торрент: %2. Результат: %3 - + Merging of trackers is disabled - + Объединение трекеров отключено - + Trackers cannot be merged because it is a private torrent - + Трекеры нельзя объединить, так как торрент частный - + Trackers are merged from new source - + Трекеры объединены из нового источника @@ -590,7 +536,7 @@ Error: %2 Note: the current defaults are displayed for reference. - Примечание: текущие значения по умолчанию отображаются для справки. + Замечание: текущие стандартные значения показаны для справки. @@ -610,7 +556,7 @@ Error: %2 Click [...] button to add/remove tags. - Щёлкните по кнопке [...], чтобы добавить/удалить метки. + Нажмите кнопку [...], чтобы добавить/убрать метки. @@ -648,72 +594,77 @@ Error: %2 Пропустить проверку хеша - - - Choose save path - Выберите путь сохранения + + Torrent share limits + Ограничения раздачи торрента - - - - - - - Default - Стандартно + + + Choose save path + Выберите путь сохранения + + + - Yes - Да + Default + Стандартно + Yes + Да + + + + + No Нет - + Manual Ручной - + Automatic Автоматический - + Original Исходный - + Create subfolder Создавать подпапку - + Don't create subfolder Не создавать подпапку - + None Нет - + Metadata received Метаданные получены - + Files checked Файлы проверены @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB МБ - + Recheck torrents on completion Перепроверять торренты по завершении - - + + ms milliseconds мс - + Setting Параметр - + Value Value set for this setting Значение - + (disabled) (отключено) - + (auto) (автоматически) - + + min minutes мин - + All addresses Все адреса - + qBittorrent Section Раздел qBittorrent - - + + Open documentation Открыть документацию - + All IPv4 addresses Все адреса IPv4 - + All IPv6 addresses Все адреса IPv6 - + libtorrent Section Раздел libtorrent - + Fastresume files Файлы быстрого возобновления - + SQLite database (experimental) База данных SQLite (экспериментально) - + Resume data storage type (requires restart) Хранилище данных возобновления (нужен перезапуск) - + Normal Обычный - + Below normal Ниже обычного - + Medium Средний - + Low Низкий - + Very low Очень низкий - - Process memory priority (Windows >= 8 only) - Приоритет памяти процесса (Windows 8 и выше) - - - + Physical memory (RAM) usage limit Предел виртуальной памяти - + Asynchronous I/O threads Потоки асинхронного ввода-вывода - + Hashing threads Потоки хеширования - + File pool size Размер пула файлов - + Outstanding memory when checking torrents Накладная память при проверке торрентов - + Disk cache Кэш диска в памяти - - - - + + + + s seconds с - + Disk cache expiry interval Период очистки кэша диска - + Disk queue size Размер очереди диска - - + + Enable OS cache Включить кэш ОС - + Coalesce reads & writes Совмещать операции чтения и записи - + Use piece extent affinity Группировать смежные части - + Send upload piece suggestions Отправлять предложения частей отдачи - - - - + + + + + 0 (disabled) - 0 (отключено) + 0 (отключено) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Период записи данных возобновления [0: откл.] - + Outgoing ports (Min) [0: disabled] Минимум исходящих портов [0: откл.] - + Outgoing ports (Max) [0: disabled] Максимум исходящих портов [0: откл.] - + 0 (permanent lease) 0 (постоянный) - + UPnP lease duration [0: permanent lease] Срок аренды UPnP [0: постоянный] - + Stop tracker timeout [0: disabled] Тайм-аут остановки трекера [0: откл.] - + Notification timeout [0: infinite, -1: system default] - Тайм-аут уведомлений [0: бесконечно, -1: системный] + Срок уведомлений [0: бесконечно, -1: стандартно] - + Maximum outstanding requests to a single peer Максимум нерешённых запросов к одному пиру - - - - - + + + + + KiB КБ - + (infinite) (бесконечно) - + (system default) (стандарт системы) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Этот параметр менее эффективен в Linux - + + Process memory priority + Приоритет памяти процесса + + + Bdecode depth limit Предел глубины разбора данных Bdecode - + Bdecode token limit Предел токенов разбора данных Bdecode - + Default Стандартно - + Memory mapped files Файлы, отображаемые в память - + POSIX-compliant Совместимый с POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Тип ввода-вывода диска (требует перезапуск) - - + + Disable OS cache Отключить кэш ОС - + Disk IO read mode Режим чтения ввода-вывода с диска - + Write-through Сквозная запись - + Disk IO write mode Режим записи ввода-вывода с диска - + Send buffer watermark Отметка буфера отправки - + Send buffer low watermark Нижняя отметка буфера отправки - + Send buffer watermark factor Фактор отметки буфера отправки - + Outgoing connections per second Исходящие соединения в секунду - - + + 0 (system default) 0 (стандарт системы) - + Socket send buffer size [0: system default] Размер буфера отправки сокета [0: системный] - + Socket receive buffer size [0: system default] Размер буфера получения сокета [0: системный] - + Socket backlog size Размер очереди сокета - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Предельный размер файла .torrent - + Type of service (ToS) for connections to peers Тип обслуживания (ToS) соединений к пирам - + Prefer TCP Предпочитать TCP - + Peer proportional (throttles TCP) Соразмерно пирам (регулирует TCP) - + Support internationalized domain name (IDN) Поддерживать нелатинские имена доменов (IDN) - + Allow multiple connections from the same IP address Разрешать несколько соединений с одного IP - + Validate HTTPS tracker certificates Проверять сертификаты трекеров HTTPS - + Server-side request forgery (SSRF) mitigation Упреждать серверную подделку запроса (SSRF) - + Disallow connection to peers on privileged ports - Не соединять к пирам по общеизвестным портам + Не соединять пиров по общеизвестным портам + + + + It appends the text to the window title to help distinguish qBittorent instances + Добавляет текст к заголовку окна с целью различения экземпляров qBittorent. + + + + Customize application instance name + Дополнить название экземпляра приложения - + It controls the internal state update interval which in turn will affect UI updates Управляет периодом обновления внутреннего состояния, влияющим на частоту обновления интерфейса - + Refresh interval Период обновления - + Resolve peer host names Определять имя хоста пира - + IP address reported to trackers (requires restart) IP для сообщения трекерам (требует перезапуск) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - Повторить анонс на все трекеры при смене IP/порта + Повторять анонс на все трекеры при смене IP/порта - + Enable icons in menus Включить значки в меню - + Enable port forwarding for embedded tracker Включить проброс портов для встроенного трекера - - (Auto detect if empty) + + Enable quarantine for downloaded files + Включить карантин для загруженных файлов + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Ставить веб-метку (MOTW) на загруженные файлы + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Автообнаружение, если пусто) + + + Python executable path (may require restart) + Путь к файлу Python (может требовать перезапуск) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + с + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Подтверждать удаление трекера из всех торрентов + + + Peer turnover disconnect percentage Процент отключения текучести пиров - + Peer turnover threshold percentage Процент предела текучести пиров - + Peer turnover disconnect interval Период отключения текучести пиров - + Resets to default if empty - + Сброс на стандарт, если пусто - + DHT bootstrap nodes - + Резервные узлы самозагрузки DHT - + I2P inbound quantity - Число входящего I2P + Число входящих I2P - + I2P outbound quantity - Число исходящего I2P + Число исходящих I2P - + I2P inbound length - Длина входящего I2P + Длина входящих I2P - + I2P outbound length - Длина исходящего I2P + Длина исходящих I2P - + Display notifications Показывать уведомления - + Display notifications for added torrents Показывать уведомление при добавлении торрента - + Download tracker's favicon - Загружать значки трекеров + Загружать значки сайтов трекеров - + Save path history length - Длина истории пути сохранения + Длина истории путей сохранения - + Enable speed graphs Включить графики скорости - + Fixed slots Постоянные слоты - + Upload rate based На основе скорости отдачи - + Upload slots behavior Поведение слотов отдачи - + Round-robin Каждому по кругу - + Fastest upload Быстрейшая отдача - + Anti-leech Анти-лич - + Upload choking algorithm Алгоритм заглушения отдачи - + Confirm torrent recheck Подтверждать перепроверку торрентов - + Confirm removal of all tags Подтверждать удаление всех меток - + Always announce to all trackers in a tier Всегда анонсировать на все трекеры в уровне - + Always announce to all tiers Всегда анонсировать на все уровни - + Any interface i.e. Any network interface Любой интерфейс - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Алгоритм смешанного режима %1-TCP - + Resolve peer countries Определять страны пиров - + Network interface Сетевой интерфейс - + Optional IP address to bind to Необязательный IP-адрес для привязки - + Max concurrent HTTP announces Максимум одновременных анонсов HTTP - + Enable embedded tracker Включить встроенный трекер - + Embedded tracker port Порт встроенного трекера - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 запущен + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Работает в переносном режиме. Автоматически обнаружена папка профиля в: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Обнаружен избыточный флаг командной строки: «%1». Портативный режим подразумевает относительное быстрое возобновление. - + Using config directory: %1 Используется каталог настроек: %1 - + Torrent name: %1 Имя торрента: %1 - + Torrent size: %1 Размер торрента: %1 - + Save path: %1 Путь сохранения: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Торрент был загружен за %1. - + + Thank you for using qBittorrent. Спасибо, что используете qBittorrent. - + Torrent: %1, sending mail notification Торрент: %1, отправка оповещения на эл. почту - + Add torrent failed - + Добавление торрента не удалось - + Couldn't add torrent '%1', reason: %2. - + Не удалось добавить торрент «%1». Причина: %2. + + + + The WebUI administrator username is: %1 + Имя администратора веб-интерфейса: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Пароль администратора веб-интерфейса не был установлен. Для этого сеанса представлен временный пароль: %1 + + + + You should set your own password in program preferences. + Необходимо задать собственный пароль в настройках программы. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Веб-интерфейс отключён! Для включения веб-интерфейса измените файл настроек вручную. - + Running external program. Torrent: "%1". Command: `%2` Запускается внешняя программа. Торрент: «%1». Команда: «%2» - + Failed to run external program. Torrent: "%1". Command: `%2` Не удалось запустить внешнюю программу. Торрент: «%1». Команда: «%2» - + Torrent "%1" has finished downloading Торрент «%1» завершил загрузку - + WebUI will be started shortly after internal preparations. Please wait... Веб-интерфейс скоро запустится после внутренней подготовки. Пожалуйста, подождите… - - + + Loading torrents... Прогрузка торрентов… - + E&xit &Выход - + I/O Error i.e: Input/Output Error Ошибка ввода-вывода - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Причина: %2 - Error - Ошибка - - - Failed to add torrent: %1 - Не удалось добавить торрент: %1 - - - + Torrent added Торрент добавлен - + '%1' was added. e.g: xxx.avi was added. «%1» добавлен. - + Download completed Загрузка завершена - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Завершена загрузка торрента «%1». + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 запущен. Идентификатор процесса: %2 - URL download error - Ошибка при загрузке адреса + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Не удалось загрузить файл по адресу: «%1», причина: %2. + + Test email + - Torrent file association - Ассоциация торрент-файлов + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Завершена загрузка торрента «%1». - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent не является стандартным приложением для открытия торрент-файлов или магнит-ссылок. -Хотите сделать qBittorrent таковым для них? - - - + Information Информация - + To fix the error, you may need to edit the config file manually. - + Для устранения ошибки может потребоваться ручная правка файла настроек. - + To control qBittorrent, access the WebUI at: %1 Войдите в веб-интерфейс для управления qBittorrent: %1 - - The Web UI administrator username is: %1 - Имя администратора веб-интерфейса: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Пароль администратора веб-интерфейса не был сменён со стандартного: %1 - - - - This is a security risk, please change your password in program preferences. - Это небезопасно, пожалуйста, смените свой пароль в настройках программы. - - - Application failed to start. - Не удалось запустить приложение. - - - + Exit Выход - + Recursive download confirmation - Подтверждение рекурсивной загрузки + Подтверждение рекурсивной загрузки - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торрент «%1» содержит файлы .torrent, хотите приступить к их загрузке? + Торрент «%1» содержит файлы .torrent, хотите приступить к их загрузке? - + Never - Никогда + Никогда - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Рекурсивная загрузка .torrent-файла из торрента. Исходный торрент: «%1». Файл: «%2» + Рекурсивная загрузка .torrent-файла из торрента. Исходный торрент: «%1». Файл: «%2» - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Не удалось ограничить виртуальную память. Код ошибки: %1. Сообщение ошибки: «%2» - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Не удалось жёстко ограничить использование физической памяти (ОЗУ). Запрошенный размер: %1. Системное жёсткое ограничение: %2. Код ошибки: %3. Сообщение ошибки: «%4» - + qBittorrent termination initiated Завершение qBittorrent начато - + qBittorrent is shutting down... qBittorrent завершает работу… - + Saving torrent progress... Сохраняется состояние торрента… - + qBittorrent is now ready to exit qBittorrent теперь готов к выходу @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Невозможно создать директорию «%1». @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Ошибка входа WebAPI. Причина: IP был запрещён, IP: %1, имя пользователя: %2 - + Your IP address has been banned after too many failed authentication attempts. Ваш IP-адрес был запрещён после слишком большого числа неудачных попыток аутентификации. - + WebAPI login success. IP: %1 Успешный вход в WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Ошибка входа WebAPI. Причина: неверные учётные данные, попыток: %1, IP: %2, имя пользователя: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? Приоритет: - + Must Not Contain: Не должно содержать: - + Episode Filter: Фильтр эпизодов: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Экспорт… - + Matches articles based on episode filter. Указывает на статьи, основанные на фильтре эпизодов. - + Example: Пример: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match указывает на 2, 5, с 8 по 15, 30 и следующие эпизоды первого сезона - + Episode filter rules: Правила фильтрации эпизодов: - + Season number is a mandatory non-zero value Номер сезона должен иметь ненулевое значение - + Filter must end with semicolon Фильтр должен заканчиваться точкой с запятой - + Three range types for episodes are supported: Поддерживаются три типа диапазонов для эпизодов: - + Single number: <b>1x25;</b> matches episode 25 of season one Одиночный номер: <b>1x25;</b> означает 25-й эпизод первого сезона - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Обычный диапазон: <b>1x25-40;</b> указывает на эпизоды с 25-го по 40-й первого сезона - + Episode number is a mandatory positive value Номер эпизода должен быть ненулевым - + Rules Правила - + Rules (legacy) Правила (устаревшие) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Бесконечный диапазон: <b>1x25-;</b> указывает на эпизоды с 25-го и выше первого сезона, и все эпизоды более поздних сезонов - + Last Match: %1 days ago Последнее совпадение: %1 дн. назад - + Last Match: Unknown Последнее совпадение: Неизвестно - + New rule name Новое правило - + Please type the name of the new download rule. Пожалуйста, введите имя нового правила загрузки. - - + + Rule name conflict Конфликт имени правила - - + + A rule with this name already exists, please choose another name. Правило с таким именем уже существует. Пожалуйста, выберите другое. - + Are you sure you want to remove the download rule named '%1'? Уверены, что хотите удалить правило загрузки «%1»? - + Are you sure you want to remove the selected download rules? Уверены, что хотите удалить выбранные правила загрузки? - + Rule deletion confirmation Подтверждение удаления правила - + Invalid action Недопустимое действие - + The list is empty, there is nothing to export. Список пуст, нечего экспортировать. - + Export RSS rules Экспортировать правила RSS - + I/O Error Ошибка ввода-вывода - + Failed to create the destination file. Reason: %1 Не удалось создать целевой файл. Причина: %1 - + Import RSS rules Импортировать правила RSS - + Failed to import the selected rules file. Reason: %1 Не удалось импортировать выбранный файл правил. Причина: %1 - + Add new rule... Добавить новое правило… - + Delete rule Удалить правило - + Rename rule... Переименовать правило… - + Delete selected rules Удалить выбранные правила - + Clear downloaded episodes... Очистить загруженные эпизоды… - + Rule renaming Переименование правила - + Please type the new rule name Пожалуйста, введите имя нового правила - + Clear downloaded episodes Очистить загруженные эпизоды - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Уверены, что хотите очистить список загруженных эпизодов для выбранного правила? - + Regex mode: use Perl-compatible regular expressions Режим Regex: используйте регулярные выражения в стиле Perl - - + + Position %1: %2 Позиция %1: %2 - + Wildcard mode: you can use Режим поиска по шаблону: можно использовать - - + + Import error Ошибка импорта - + Failed to read the file. %1 Не удалось прочесть файл. %1 - + ? to match any single character «?» соответствует любому одиночному символу - + * to match zero or more of any characters «*» соответствует нулю или нескольким любым символам - + Whitespaces count as AND operators (all words, any order) Пробелы читаются как операторы И (все слова, любой порядок) - + | is used as OR operator «|» используется как оператор ИЛИ - + If word order is important use * instead of whitespace. Если порядок слов важен, то используйте «*» вместо пробелов. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Выражение с пустым пунктом %1 (пример, %2) - + will match all articles. подойдёт всем статьям. - + will exclude all articles. исключит все статьи. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Не удаётся создать папку возобновления торрента: «%1» - + Cannot parse resume data: invalid format Не удаётся разобрать данные возобновления: неверный формат - - + + Cannot parse torrent info: %1 Не удаётся разобрать информацию о торренте: %1 - + Cannot parse torrent info: invalid format Не удаётся разобрать информацию о торренте: неверный формат - + + Mismatching info-hash detected in resume data + Обнаружено несоответствие инфо-хеша в данных возобновления + + + Couldn't save torrent metadata to '%1'. Error: %2. Не удалось сохранить метаданные торрента в «%1». Ошибка: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Не удалось сохранить данные возобновления торрента в «%1». Ошибка: %2. - + Couldn't load torrents queue: %1 Не удалось загрузить очередь торрентов: %1 - + Cannot parse resume data: %1 Не удаётся разобрать данные возобновления: %1 - + Resume data is invalid: neither metadata nor info-hash was found Данные возобновления недействительны: метаданные или инфо-хэш не найдены - + Couldn't save data to '%1'. Error: %2 Не удалось сохранить данные в «%1». Ошибка: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Не найдено. - + Couldn't load resume data of torrent '%1'. Error: %2 Не удалось подгрузить данные возобновления торрента «%1». Ошибка: %2 - - + + Database is corrupted. База данных повреждена. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Не удалось включить режим упреждающей журнализации (WAL). Ошибка: %1. - + Couldn't obtain query result. Не удалось получить результат запроса. - + WAL mode is probably unsupported due to filesystem limitations. Режим упреждающей журнализации, вероятно, не поддерживается из-за ограничений файловой системы. - + Couldn't begin transaction. Error: %1 Не удалось начать транзакцию. Ошибка: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Не удалось сохранить метаданные торрента. Ошибка: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Не удалось сохранить данные возобновления торрента «%1». Ошибка: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Не удалось удалить данные возобновления торрента «%1». Ошибка: %2 - + Couldn't store torrents queue positions. Error: %1 Не удалось сохранить очерёдность торрентов. Ошибка: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Поддержка распределённой хеш-таблицы (DHT): %1 - - - - - - - - - + + + + + + + + + ON ВКЛ - - - - - - - - - + + + + + + + + + OFF ОТКЛ - - + + Local Peer Discovery support: %1 Поддержка обнаружения локальных пиров: %1 - + Restart is required to toggle Peer Exchange (PeX) support Необходим перезапуск для включения поддержки обмена пирами (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Ошибка возобновления торрента. Торрент: «%1». Причина: «%2» - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Не удалось возобновить торрент: обнаружен несогласованный ИД торрента. Торрент: «%1» - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Обнаружены несогласованные данные: категория отсутствует в файле настроек. Категория будет восстановлена, но её настройки будут сброшены до стандартных. Торрент: «%1». Категория: «%2» - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Обнаружены несогласованные данные: недопустимая категория. Торрент: «%1». Категория: «%2» - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Обнаружено несоответствие между путями сохранения восстановленной категории и текущим путём сохранения торрента. Торрент теперь переключён в ручной режим. Торрент: «%1». Категория: «%2» - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Обнаружены несогласованные данные: метка отсутствует в файле настроек. Метка будет восстановлена. Торрент: «%1». Метка: «%2» - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Обнаружены несогласованные данные: недопустимая метка. Торрент: «%1». Метка: «%2» - + System wake-up event detected. Re-announcing to all the trackers... Обнаружено событие пробуждения системы. Повторяется анонс всех трекеров… - + Peer ID: "%1" ИД пира: «%1» - + HTTP User-Agent: "%1" HTTP User-Agent: «%1» - + Peer Exchange (PeX) support: %1 Поддержка обмена пирами (PeX): %1 - - + + Anonymous mode: %1 Анонимный режим: %1 - - + + Encryption support: %1 Поддержка шифрования: %1 - - + + FORCED ПРИНУДИТЕЛЬНО - + Could not find GUID of network interface. Interface: "%1" Не удалось получить GUID сетевого интерфейса. Интерфейс: «%1» - + Trying to listen on the following list of IP addresses: "%1" Попытка прослушивания следующего списка IP-адресов: «%1» - + Torrent reached the share ratio limit. Торрент достиг ограничения рейтинга раздачи. - - - + Torrent: "%1". Торрент: «%1». - - - Removed torrent. - Торрент удалён. + Торрент удалён. - - - Removed torrent and deleted its content. - Торрент удалён вместе с его содержимым. + Торрент удалён вместе с его содержимым. - - - Torrent paused. - Торрент остановлен. + Торрент остановлен. - - - + Super seeding enabled. Суперсид включён. - + Torrent reached the seeding time limit. Торрент достиг ограничения времени раздачи. - + Torrent reached the inactive seeding time limit. Торрент достиг ограничения времени бездействия раздачи. - + Failed to load torrent. Reason: "%1" Не удалось загрузить торрент. Причина: «%1» - + I2P error. Message: "%1". + Ошибка I2P. Сообщение: «%1». + + + + UPnP/NAT-PMP support: ON + Поддержка UPnP/NAT-PMP: ВКЛ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Загрузка торрента, пожалуйста, подождите… Источник: «%1» + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Не удалось загрузить торрент. Источник: «%1». Причина: «%2» + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Обнаружена попытка добавления повторяющегося торрента. Объединение трекеров отключено. Торрент: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Обнаружена попытка добавления повторяющегося торрента. Трекеры нельзя объединить, так как это приватный торрент. Торрент: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Обнаружена попытка добавления повторяющегося торрента. Трекеры объединены из нового источника. Торрент: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Поддержка UPnP/NAT-PMP: ВКЛ + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Поддержка UPnP/NAT-PMP: ОТКЛ + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Не удалось экспортировать торрент. Торрент: «%1». Назначение: «%2». Причина: «%3» + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Прервано сохранение данных возобновления. Число невыполненных торрентов: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Объединение трекеров отключено + + + + Trackers cannot be merged because it is a private torrent + Трекеры нельзя объединить, так как торрент частный - System network status changed to %1 - e.g: System network status changed to ONLINE - Состояние сети системы сменилось на «%1» + + Trackers are merged from new source + Трекеры объединены из нового источника - ONLINE - В СЕТИ + + UPnP/NAT-PMP support: OFF + Поддержка UPnP/NAT-PMP: ОТКЛ - OFFLINE - НЕ В СЕТИ + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Не удалось экспортировать торрент. Торрент: «%1». Назначение: «%2». Причина: «%3» - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Настройки сети %1 сменились, обновление привязки сеанса + + Aborted saving resume data. Number of outstanding torrents: %1 + Прервано сохранение данных возобновления. Число невыполненных торрентов: %1 - + The configured network address is invalid. Address: "%1" Настроенный сетевой адрес неверен. Адрес: «%1» - - + + Failed to find the configured network address to listen on. Address: "%1" Не удалось обнаружить настроенный сетевой адрес для прослушивания. Адрес: «%1» - + The configured network interface is invalid. Interface: "%1" Настроенный сетевой интерфейс неверен. Интерфейс: «%1» - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Отклонён недопустимый адрес IP при применении списка запрещённых IP-адресов. IP: «%1» - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Трекер добавлен в торрент. Торрент: «%1». Трекер: «%2» - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Трекер удалён из торрента. Торрент: «%1». Трекер: «%2» - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Добавлен адрес сида в торрент. Торрент: «%1». Адрес: «%2» - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Удалён адрес сида из торрента. Торрент: «%1». Адрес: «%2» - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Торрент остановлен. Торрент: «%1» + Торрент остановлен. Торрент: «%1» - + Torrent resumed. Torrent: "%1" Торрент возобновлён. Торрент: «%1» - + Torrent download finished. Torrent: "%1" Загрузка торрента завершена. Торрент: «%1» - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Перемещение торрента отменено. Торрент: «%1». Источник: «%2». Назначение: «%3» - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Не удалось поставить в очередь перемещение торрента. Торрент: «%1». Источник: «%2». Назначение: «%3». Причина: торрент в настоящее время перемещается в путь назначения - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Не удалось поставить в очередь перемещение торрента. Торрент: «%1». Источник: «%2». Назначение: «%3». Причина: оба пути указывают на одно и то же местоположение - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Перемещение торрента поставлено в очередь. Торрент: «%1». Источник: «%2». Назначение: «%3» - + Start moving torrent. Torrent: "%1". Destination: "%2" Началось перемещение торрента. Торрент: «%1». Назначение: «%2» - + Failed to save Categories configuration. File: "%1". Error: "%2" Не удалось сохранить настройки категорий. Файл: «%1». Ошибка: «%2» - + Failed to parse Categories configuration. File: "%1". Error: "%2" Не удалось разобрать настройки категорий. Файл: «%1». Ошибка: «%2» - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Рекурсивная загрузка .torrent-файла из торрента. Исходный торрент: «%1». Файл: «%2» - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Не удалось загрузить .torrent-файла из торрента. Исходный торрент: «%1». Файл: «%2». Ошибка: «%3» - - - + Successfully parsed the IP filter file. Number of rules applied: %1 - Успешно разобран файл IP-фильтра. Число применённых правил: %1 + Успешно разобран файл IP-фильтра. Всего применённых правил: %1 - + Failed to parse the IP filter file Не удалось разобрать файл IP-фильтра - + Restored torrent. Torrent: "%1" Торрент восстановлен. Торрент: «%1» - + Added new torrent. Torrent: "%1" Добавлен новый торрент. Торрент: «%1» - + Torrent errored. Torrent: "%1". Error: "%2" Сбой торрента. Торрент: «%1». Ошибка: «%2» - - Removed torrent. Torrent: "%1" - Торрент удалён. Торрент: «%1» + Торрент удалён. Торрент: «%1» - Removed torrent and deleted its content. Torrent: "%1" - Торрент удалён вместе с его содержимым. Торрент: «%1» + Торрент удалён вместе с его содержимым. Торрент: «%1» + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + В торренте отсутствуют параметры SSL. Торрент: «%1». Сообщение: «%2» - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Предупреждение об ошибке файла. Торрент: «%1». Файл: «%2». Причина: «%3» - + UPnP/NAT-PMP port mapping failed. Message: "%1" Проброс портов UPnP/NAT-PMP не удался. Сообщение: «%1» - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Проброс портов UPnP/NAT-PMP удался. Сообщение: «%1» - + IP filter this peer was blocked. Reason: IP filter. IP-фильтр - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - отфильтрован порт (%1) + порт отфильтрован (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). привилегированный порт (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Сеанс БитТоррента столкнулся с серьёзной ошибкой. Причина: «%1» + + + SOCKS5 proxy error. Address: %1. Message: "%2". Ошибка прокси SOCKS5. Адрес: %1. Сообщение: «%2». - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. ограничения смешанного режима %1 - + Failed to load Categories. %1 Не удалось загрузить категории. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Не удалось загрузить настройки категорий: Файл: «%1». Причина: «неверный формат данных» - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Торрент удалён, но его содержимое и/или кусочный файл не удалось стереть. Торрент: «%1». Ошибка: «%2» + Торрент удалён, но его содержимое и/или кусочный файл не удалось стереть. Торрент: «%1». Ошибка: «%2» - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 отключён - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 отключён - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Поиск адреса сида в DNS не удался. Торрент: «%1». Адрес: «%2». Ошибка: «%3» + Поиск адреса сида в DNS не удался. Торрент: «%1». Адрес: «%2». Ошибка: «%3» - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Получено сообщение об ошибке от адреса сида. Торрент: «%1». Адрес: «%2». Сообщение: «%3» - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Успешное прослушивание IP. IP: «%1». Порт: «%2/%3» - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Не удалось прослушать IP. IP: «%1». Порт: «%2/%3». Причина: «%4» - + Detected external IP. IP: "%1" Обнаружен внешний IP. IP: «%1» - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Ошибка: Внутренняя очередь оповещений заполнена, и оповещения были отброшены, вы можете заметить ухудшение быстродействия. Тип отброшенных оповещений: «%1». Сообщение: «%2» - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Перемещение торрента удалось. Торрент: «%1». Назначение: «%2» - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Не удалось переместить торрент. Торрент: «%1». Источник: «%2». Назначение: «%3». Причина: «%4» - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - Операция прервана - - - - - Create new torrent file failed. Reason: %1. - Создание нового торрента не удалось. Причина: %1. + + Failed to start seeding. + Не удалось запустить раздачу. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Операция прервана + Операция прервана + + Create new torrent file failed. Reason: %1. - Создание нового торрента не удалось. Причина: %1. + Создание нового торрента не удалось. Причина: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Не удалось добавить пир «%1» к торренту «%2». Причина: %3 - + Peer "%1" is added to torrent "%2" Пир «%1» добавлен к торренту «%2» - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Обнаружены неожиданные данные. Торрент: %1. Данные: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Не удалось записать в файл. Причина: «%1». Торрент теперь в режиме «только отдача». - + Download first and last piece first: %1, torrent: '%2' Загрузка крайних частей первыми: %1, торрент: «%2» - + On Вкл. - + Off Откл. - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Ошибка перезагрузки торрента. Торрент: %1. Причина: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Создание данных возобновления не удалось. Торрент: «%1», ошибка: «%2» - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - Не удалось восстановить торрент. Возможно, файлы были перемещены, или хранилище недоступно. Торрент: «%1». Причина: «%2» + Не удалось восстановить торрент. Возможно, файлы перемещены, или хранилище недоступно. Торрент: «%1». Причина: «%2» - + Missing metadata Отсутствуют метаданные - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Переименование файла не удалось. Торрент: «%1», файл: «%2», причина: «%3» - + Performance alert: %1. More info: %2 Оповещение быстродействия: %1. Подробности: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Параметр «%1» должен соответствовать синтаксису «%1=%2» - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Параметр «%1» должен соответствовать синтаксису «%1=%2» - + Expected integer number in environment variable '%1', but got '%2' Ожидаемое целое число в переменных окружения — «%1», но получено «%2» - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Параметр «%1» должен соответствовать синтаксису «%1=%2» + Параметр «%1» должен соответствовать синтаксису «%1=%2» - + Expected %1 in environment variable '%2', but got '%3' Ожидалось «%1» в переменных окружения «%2», но получено «%3» - - + + %1 must specify a valid port (1 to 65535). %1 должен содержать допустимый порт (с 1 до 65535). - + Usage: Использование: - + [options] [(<filename> | <url>)...] [параметры] [(<filename> | <url>)...] - + Options: Параметры: - + Display program version and exit Отображать версию программы и выход - + Display this help message and exit Показать эту справку и выйти - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Параметр «%1» должен соответствовать синтаксису «%1=%2» + + + + Confirm the legal notice + Подтвердите официальное уведомление + + + + port порт - - Change the Web UI port + + Change the WebUI port Сменить порт веб-интерфейса - + Change the torrenting port Сменить порт торрентирования - + Disable splash screen Отключить заставку при запуске - + Run in daemon-mode (background) Работать в режиме службы (в фоне) - + dir Use appropriate short form or abbreviation of "directory" папка - + Store configuration files in <dir> Хранить файлы настроек в <папке> - - + + name имя - + Store configuration files in directories qBittorrent_<name> Хранить файлы настроек в папках qBittorrent_<имя> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Взломать файлы быстрого возобновления libtorrent и сделать пути файлов относительными к каталогу профиля - + files or URLs файлы или ссылки - + Download the torrents passed by the user Загрузить торренты, указанные пользователем - + Options when adding new torrents: Параметры добавления новых торрентов: - + path путь - + Torrent save path Путь сохранения торрентов - + + Add torrents as running or stopped + + + Add torrents as started or paused - Добавлять торренты запущенными или остановленными + Добавлять торренты запущенными или остановленными - + Skip hash check Пропустить проверку хеша - + Assign torrents to category. If the category doesn't exist, it will be created. Назначать категории торрентам. Если категория не существует, то она будет создана. - + Download files in sequential order Загружать файлы последовательно - + Download first and last pieces first - Загружать крайние части первыми + Загружать сперва крайние части - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Управление открытием окна «Добавить новый торрент» при добавлении торрента. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Значения параметров могут передаваться через переменные среды. Для параметра с названием «parameter-name» переменная среды — «QBT_PARAMETER_NAME» (в верхнем регистре, «-» заменяется на «_»). Для передачи значения флага укажите переменную равной «1» или «TRUE». Например, чтобы отключить заставку: - + Command line parameters take precedence over environment variables Параметры командной превалируют над переменными среды - + Help Справка @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Категории - + All Все - + Uncategorized Без категории @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Возобновить торренты + Start torrents + + Stop torrents + + + + Resume torrents + Возобновить торренты + + Pause torrents - Остановить торренты + Остановить торренты @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Править… - + Reset Сбросить + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 Не удалось загрузить таблицу стилей пользовательской темы. %1 - + Failed to load custom theme colors. %1 Не удалось загрузить цвета пользовательской темы. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 Не удалось загрузить цвета стандартной темы. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Также безвозвратно удалить файлы + Также безвозвратно удалить файлы - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Уверены, что хотите удалить «%1» из списка торрентов? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Уверены, что хотите удалить эти %1 торрента(ов) из списка? - + Remove Удалить @@ -3096,14 +3206,14 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Загрузить торренты по ссылкам - + Add torrent links Добавьте ссылки на торренты - + One link per line (HTTP links, Magnet links and info-hashes are supported) - Одна на строку (поддерживаются ссылки HTTP, магнит-ссылки и инфо-хеши) + Одна на строку (принимаются ссылки HTTP, магнит-ссылки и инфо-хеши) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Загрузить - + No URL entered Адрес не введён - + Please type at least one URL. Пожалуйста, введите хотя бы один адрес. @@ -3181,7 +3291,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also An error occurred while trying to open the log file. Logging to file is disabled. - Ошибка при открытии файла журнала. Журналирование в файл отключено. + Произошла ошибка при открытии файла журнала. Журналирование в файл отключено. @@ -3236,13 +3346,13 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IP filter line %1 is malformed. Start IP of the range is malformed. - Строка IP-фильтра %1 неправильна. Начальный IP из диапазона некорректен. + Строка IP-фильтра %1 неправильна. Начальный IP из диапазона неверен. IP filter line %1 is malformed. End IP of the range is malformed. - Строка IP-фильтра %1 неправильна. Конечный IP из диапазона некорректен. + Строка IP-фильтра %1 неправильна. Конечный IP из диапазона неверен. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Ошибка разбора: Файл фильтра не является рабочим файлом PeerGuardian P2B. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Загрузка торрента… Источник: «%1» - Trackers cannot be merged because it is a private torrent - + Трекеры нельзя объединить, так как торрент частный - + Torrent is already present - Торрент уже существует + Торрент уже существует + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торрент «%1» уже есть в списке. Хотите объединить трекеры из нового источника? + Торрент «%1» уже есть в списке. Хотите объединить трекеры из нового источника? GeoIPDatabase - - + + Unsupported database file size. Неподдерживаемый размер файла данных. - + Metadata error: '%1' entry not found. Ошибка метаданных: Запись «%1» не найдена. - + Metadata error: '%1' entry has invalid type. Ошибка метаданных: Запись «%1» имеет неверный тип. - + Unsupported database version: %1.%2 Неподдерживаемая версия базы данных: %1.%2 - + Unsupported IP version: %1 Неподдерживаемая версия IP: %1 - + Unsupported record size: %1 Неподдерживаемый размер записи: %1 - + Database corrupted: no data section found. База данных повреждена: не найден раздел данных. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Размер HTTP-запроса превышает ограничение, сокет закрывается. Ограничение: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Неверный метод HTTP-запроса, закрытие сокета. IP: %1. Метод: «%2» - + Bad Http request, closing socket. IP: %1 Неверный HTTP-запрос, закрытие сокета. IP: %1 @@ -3360,7 +3497,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also List of whitelisted IP subnets - Список разрешённых подсетей + Список разрешённых подсетей IP @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Обзор… - + Reset Сбросить - + Select icon Выбрать значок - + Supported image files Поддерживаемые файлы изображений + + LegalNotice + + + Legal Notice + Официальное уведомление + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent — это программа для обмена файлами. При работе торрента его данные становятся доступны другим пользователям посредством раздачи. Вы несёте персональную ответственность за все данные, которыми делитесь. + + + + No further notices will be issued. + Никаких дальнейших уведомлений выводиться не будет. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Если вы прочитали официальное уведомление, вы можете использовать параметр командной строки `--confirm-legal-notice`, чтобы отключить это сообщение. + + + + Press 'Enter' key to continue... + Нажмите кнопку «Enter» для продолжения… + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 был запрещён. Причина: %2. - + %1 was banned 0.0.0.0 was banned %1 был запрещён @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 — неизвестный параметр командной строки. - - + + %1 must be the single command line parameter. %1 должен быть единственным параметром командной строки. - - You cannot use %1: qBittorrent is already running for this user. - Нельзя использовать %1: qBittorrent уже выполняется для этого пользователя. - - - + Run application with -h option to read about command line parameters. Запустите программу с параметром -h, чтобы получить справку по параметрам командной строки. - + Bad command line Неверная командная строка - + Bad command line: Неверная командная строка: - + An unrecoverable error occurred. - + Произошла неустранимая ошибка. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Официальное уведомление - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent — это программа для обмена файлами. При запуске торрента его данные становятся доступны другим пользователям посредством раздачи. Вы несёте персональную ответственность за все данные, которыми делитесь. - - - - No further notices will be issued. - Никаких дальнейших уведомлений выводиться не будет. - - - - Press %1 key to accept and continue... - Нажмите %1, чтобы принять и продолжить… + qBittorrent столкнулся с неустранимой ошибкой. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent — это программа для обмена файлами. При запуске торрента его данные становятся доступны другим пользователям посредством раздачи. Вы несёте персональную ответственность за все данные, которыми делитесь. - -Никаких дальнейших уведомлений выводиться не будет. + + You cannot use %1: qBittorrent is already running. + Нельзя использовать %1: qBittorrent уже запущен. - - Legal notice - Официальное уведомление + + Another qBittorrent instance is already running. + Другой экземпляр qBittorrent уже запущена. - - Cancel - Отмена + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Найден неожиданный экземпляр qBittorrent. Выход из этого экземпляра. Идентификатор текущего процесса: %1. - - I Agree - Согласиться + + Error when daemonizing. Reason: "%1". Error code: %2. + Ошибка при демонизации. Причина: «%1». Код ошибки: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. &Правка - + &Tools С&ервис - + &File &Файл - + &Help &Справка - + On Downloads &Done По &окончании загрузок - + &View &Вид - + &Options... &Настройки… - &Resume - &Возобновить + &Возобновить - + &Remove &Удалить - + Torrent &Creator &Создать торрент - - + + Alternative Speed Limits Особые ограничения скорости - + &Top Toolbar Пан&ель инструментов - + Display Top Toolbar Показывать панель инструментов - + Status &Bar Панель состоян&ия - + Filters Sidebar Боковая панель фильтров - + S&peed in Title Bar С&корость в заголовке - + Show Transfer Speed in Title Bar Отображать текущую скорость в заголовке окна - + &RSS Reader &Менеджер RSS - + Search &Engine &Поисковик - + L&ock qBittorrent &Блокировка qBittorrent - + Do&nate! - По&жертвовать! + Пожер&твовать! + + + + Sh&utdown System + - + &Do nothing &Ничего не делать - + Close Window Закрыть окно - R&esume All - Во&зобновить все + Во&зобновить все - + Manage Cookies... Управление куки… - + Manage stored network cookies Управление сохранёнными сетевыми куки - + Normal Messages Обычные сообщения - + Information Messages Информационные сообщения - + Warning Messages Предупреждения - + Critical Messages - Критичные сообщения + Важные сообщения - + &Log &Журнал - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Настроить скорость… - + Bottom of Queue В конец очереди - + Move to the bottom of the queue Поместить в конец очереди - + Top of Queue В начало очереди - + Move to the top of the queue Поместить в начало очереди - + Move Down Queue Вниз по очереди - + Move down in the queue Перенести вниз по очереди - + Move Up Queue Вверх по очереди - + Move up in the queue Перенести вверх по очереди - + &Exit qBittorrent &Выйти из qBittorrent - + &Suspend System Перейти в &ждущий режим - + &Hibernate System Перейти в &спящий режим - S&hutdown System - Вы&ключить компьютер + Вы&ключить компьютер - + &Statistics С&татистика - + Check for Updates Проверить обновления - + Check for Program Updates Проверять наличие обновлений программы - + &About &О программе - &Pause - &Остановить + &Остановить - P&ause All - О&становить все + О&становить все - + &Add Torrent File... &Добавить торрент-файл… - + Open Открыть - + E&xit &Выход - + Open URL Открыть ссылку - + &Documentation &Документация - + Lock Блокировка - - - + + + Show Показать - + Check for program updates Проверять наличие обновлений программы - + Add Torrent &Link... Добавить &ссылку на торрент… - + If you like qBittorrent, please donate! Если вам нравится qBittorrent, пожалуйста, поддержите пожертвованием! - - + + Execution Log Журнал работы - + Clear the password Очищение пароля - + &Set Password З&адать пароль - + Preferences Настройки - + &Clear Password Очи&стить пароль - + Transfers Торренты - - + + qBittorrent is minimized to tray qBittorrent свёрнут в трей - - - + + + This behavior can be changed in the settings. You won't be reminded again. Данное поведение меняется в настройках. Больше это уведомление вы не увидите. - + Icons Only Только значки - + Text Only Только текст - + Text Alongside Icons Текст сбоку от значков - + Text Under Icons Текст под значками - + Follow System Style Использовать стиль системы - - + + UI lock password Пароль блокировки интерфейса - - + + Please type the UI lock password: Пожалуйста, введите пароль блокировки интерфейса: - + Are you sure you want to clear the password? Уверены, что хотите очистить пароль? - + Use regular expressions Использовать регулярные выражения - + + + Search Engine + Поисковик + + + + Search has failed + Поиск не удался + + + + Search has finished + Поиск завершён + + + Search Поиск - + Transfers (%1) Торренты (%1) - Recursive download confirmation - Подтверждение рекурсивной загрузки + + qBittorrent was just updated and needs to be restarted for the changes to be effective. + qBittorrent был обновлён и нуждается в перезапуске для применения изменений. - Never - Никогда - - - - qBittorrent was just updated and needs to be restarted for the changes to be effective. - qBittorrent был обновлён и нуждается в перезапуске для применения изменений. - - - + qBittorrent is closed to tray qBittorrent закрыт в трей - + Some files are currently transferring. Некоторые файлы сейчас раздаются. - + Are you sure you want to quit qBittorrent? Уверены, что хотите выйти из qBittorrent? - + &No &Нет - + &Yes &Да - + &Always Yes &Всегда да - + Options saved. - Параметры сохранены. + Настройки сохранены. + + + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [З: %1, О: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - %1/s - s is a shorthand for seconds - %1/с + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Отсутствует среда выполнения Python - + qBittorrent Update Available Обновление qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Для использования поисковика требуется Python, но он, видимо, не установлен. Хотите установить его сейчас? - + Python is required to use the search engine but it does not seem to be installed. Для использования поисковика требуется Python, но он, видимо, не установлен. - - + + Old Python Runtime Старая среда выполнения Python - + A new version is available. Доступна новая версия. - + Do you want to download %1? Хотите скачать %1? - + Open changelog... Открыть список изменений… - + No updates available. You are already using the latest version. Обновлений нет. Вы используете последнюю версию программы. - + &Check for Updates &Проверить обновления - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Ваша версия Python (%1) устарела. Минимальное требование: %2. Хотите установить более новую версию сейчас? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Ваша версия Python (%1) устарела. Пожалуйста, обновитесь до последней версии для работы поисковых плагинов. Минимальное требование: %2. - + + Paused + Остановлен + + + Checking for Updates... Проверка обновлений… - + Already checking for program updates in the background Проверка обновлений уже выполняется - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Ошибка при загрузке - Python setup could not be downloaded, reason: %1. Please install it manually. - Не удалось загрузить установщик Python, причина: %1. + Не удалось загрузить установщик Python, причина: %1. Пожалуйста, установите его вручную. - - + + Invalid password Недопустимый пароль - + Filter torrents... Фильтр торрентов… - + Filter by: Фильтровать: - + The password must be at least 3 characters long Пароль должен быть не менее 3 символов. - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торрент «%1» содержит файлы .torrent, хотите приступить к их загрузке? - - - + The password is invalid Недопустимый пароль - + DL speed: %1 e.g: Download speed: 10 KiB/s Загрузка: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Отдача: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [З: %1, О: %2] qBittorrent %3 - - - + Hide Скрыть - + Exiting qBittorrent - Завершение работы qBittorrent + Завершается qBittorrent - + Open Torrent Files Открыть торрент-файлы - + Torrent Files Торрент-файлы @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 Ошибка ввода-вывода: %1 - + The file size (%1) exceeds the download limit (%2) Размер файла (%1) превышает ограничение загрузки (%2) - + Exceeded max redirections (%1) Превышен максимум перенаправлений (%1) - + Redirected to magnet URI Переадресовано к магнит-ссылке - + The remote host name was not found (invalid hostname) Удалённый хост не был найден (неверное имя хоста) - + The operation was canceled Операция была отменена - + The remote server closed the connection prematurely, before the entire reply was received and processed Удалённый сервер закрыл соединение прежде, чем весь ответ был принят и обработан - + The connection to the remote server timed out Время соединения с удалённым сервером истекло - + SSL/TLS handshake failed Соединение SSL/TLS не удалось - + The remote server refused the connection Удалённый сервер отклонил соединение - + The connection to the proxy server was refused Прокси-сервер отклонил соединение - + The proxy server closed the connection prematurely Прокси-сервер преждевременно закрыл соединение - + The proxy host name was not found Имя прокси-сервера не было найдено - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Время соединения с прокси-сервером истекло, или прокси-сервер не ответил на запрос - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Прокси-сервер требует аутентификации для выполнения запроса, но не принял указанные учётные данные - + The access to the remote content was denied (401) В доступе к внешним данным было отказано (401) - + The operation requested on the remote content is not permitted Запрошенная для внешних данных операция не разрешена - + The remote content was not found at the server (404) Внешние данные не были найдены на сервере (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Удалённый сервер требует аутентификации для передачи данных, но указанные учётные данные не были приняты - + The Network Access API cannot honor the request because the protocol is not known API сетевого доступа не может выполнить запрос, потому что протокол неизвестен - + The requested operation is invalid for this protocol Запрошенная операция не поддерживается этим протоколом - + An unknown network-related error was detected Обнаружена неизвестная сетевая ошибка - + An unknown proxy-related error was detected Обнаружена неизвестная ошибка прокси-сервера - + An unknown error related to the remote content was detected Обнаружена неизвестная ошибка внешних данных - + A breakdown in protocol was detected Обнаружен сбой в протоколе - + Unknown error Неизвестная ошибка @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Игнорируется ошибка SSL, адрес: «%1», ошибки: «%2» @@ -4486,7 +4712,7 @@ Please install it manually. Bermuda - Бермудские острова + Бермудские Острова @@ -5629,7 +5855,7 @@ Please install it manually. Connection failed, unrecognized reply: %1 - Сбой соединения, нераспознанный ответ: %1 + Сбой соединения, неопознанный ответ: %1 @@ -5705,294 +5931,307 @@ Please install it manually. БитТоррент - + RSS RSS-ленты - Web UI - Веб-интерфейс + Веб-интерфейс - + Advanced Расширенные - + Customize UI Theme... Настроить тему оболочки… - + Transfer List Список торрентов - + Confirm when deleting torrents Подтверждать удаление торрентов - Shows a confirmation dialog upon pausing/resuming all the torrents - Показывает окно подтверждения при остановке/возобновлении всех торрентов + Показывает окно подтверждения при остановке/возобновлении всех торрентов - Confirm "Pause/Resume all" actions - Подтверждать действия «остановить/возобновить все» + Подтверждать действия «остановить/возобновить все» - + Use alternating row colors In table elements, every other row will have a grey background. Чередовать цвета строк - + Hide zero and infinity values Скрывать нулевые и бесконечные значения - + Always Всегда - Paused torrents only - Только для остановленных + Только для остановленных - + Action on double-click Действие по двойному щелчку - + Downloading torrents: Загружаемые торренты: - - Start / Stop Torrent - Запустить или остановить торрент + Запустить или остановить торрент - - + + Open destination folder Открыть папку назначения - - + + No action Нет действия - + Completed torrents: Завершённые торренты: - + Auto hide zero status filters - Автоматически скрывать фильтры состояния с нулём + Автоматически скрывать пустые фильтры состояния - + Desktop Рабочий стол - + Start qBittorrent on Windows start up Запускать qBittorrent вместе с Windows - + Show splash screen on start up Показывать заставку при запуске программы - + Confirmation on exit when torrents are active Подтверждать выход при наличии активных торрентов - + Confirmation on auto-exit when downloads finish Подтверждать автовыход по окончании загрузок - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Вы можете назначить qBittorrent стандартным приложением для торрент-файлов и магнит-ссылок<br/> в разделе <span style=" font-weight:600;">Приложения по умолчанию</span> из <span style=" font-weight:600;">Панели управления</span>.</p></body></html> - + KiB КБ - + Torrent content layout: Состав содержимого торрента: - + Original Исходный - + Create subfolder Создавать подпапку - + Don't create subfolder Не создавать подпапку - + The torrent will be added to the top of the download queue - Торрент будет добавлен в начало очереди загрузок в остановленном состоянии + Торрент будет добавлен в начало очереди загрузок - + Add to top of queue The torrent will be added to the top of the download queue - В начало очереди + Добавлять в начало очереди - + When duplicate torrent is being added - При добавлении дубликата торрента + При добавлении повторяющегося торрента - + Merge trackers to existing torrent Объединить трекеры в существующий торрент - + + Keep unselected files in ".unwanted" folder + Помещать невыбранные файлы в папку «.unwanted» + + + Add... Добавить… - + Options.. Настройки… - + Remove - Удалить + Убрать - + Email notification &upon download completion Оповещать об окончании за&грузки по электронной почте - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Протокол подключения пиров: - + Any Любой - + I2P (experimental) Сеть I2P (экспериментально) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Если включён «смешанный режим», торрентам I2P разрешено получать пиров из других источников помимо трекера, и подключаться к обычным IP-адресам без обеспечения анонимизации. Это может быть полезно, если пользователь не заинтересован в анонимизации I2P, но хочет иметь возможность подключаться к пирам I2P.</p></body></html> + <html><head/><body><p>Если включён «смешанный режим», торрентам I2P также разрешено получать пиров из других источников помимо трекера и подключаться к обычным IP-адресам без обеспечения анонимизации. Это может быть полезно, если пользователь не заинтересован в анонимизации I2P, но хочет подключаться к пирам I2P.</p></body></html> - + Mixed mode Смешанный режим - + Some options are incompatible with the chosen proxy type! Некоторые параметры несовместимы с выбранным типом прокси-сервера! - + If checked, hostname lookups are done via the proxy Если отмечено, поиск имени хоста выполняется через прокси-сервер - + Perform hostname lookup via proxy - Выполнить поиск имени хоста через прокси + Выполнять поиск имени хоста через прокси - + Use proxy for BitTorrent purposes Использовать прокси для работы БитТоррента - + RSS feeds will use proxy RSS-ленты будут использовать прокси - + Use proxy for RSS purposes Использовать прокси для работы RSS-лент - + Search engine, software updates or anything else will use proxy Поисковики, обновления программного обеспечения или прочее будут использовать прокси - + Use proxy for general purposes Использовать прокси для общей работы - + IP Fi&ltering &Фильтрация по IP - + Schedule &the use of alternative rate limits - &Запланировать включение особых ограничений скорости + Запланировать работу особых огранич&ений скорости - + From: From start time С: - + To: To end time До: - + Find peers on the DHT network Искать пиров в сети DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption Отключить шифрование: подключаться только к пирам без шифрования протокола - + Allow encryption Разрешать шифрование - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Подробнее</a>) - + Maximum active checking torrents: Предел активных проверок торрентов: - + &Torrent Queueing Оч&ерёдность торрентов - + When total seeding time reaches По достижении общего времени раздачи - + When inactive seeding time reaches По достижении времени бездействия раздачи - A&utomatically add these trackers to new downloads: - Авто&матически добавлять эти трекеры к новым загрузкам: + Авто&матически добавлять эти трекеры к новым загрузкам: - + RSS Reader Менеджер RSS - + Enable fetching RSS feeds Включить получение RSS-лент - + Feeds refresh interval: Период обновления лент: - + + Same host request delay: + Задержка повторного запроса хоста: + + + Maximum number of articles per feed: Максимум статей для ленты: - - - + + + min minutes мин - + Seeding Limits Ограничения раздачи - Pause torrent - Остановить торрент + Остановить торрент - + Remove torrent Удалить торрент - + Remove torrent and its files Удалить торрент и его файлы - + Enable super seeding for torrent Включить режим суперсида для торрента - + When ratio reaches По достижении рейтинга раздачи - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Адрес: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Автозагрузчик торрентов из RSS - + Enable auto downloading of RSS torrents Включить автозагрузку торрентов из RSS - + Edit auto downloading rules... Изменить правила автозагрузки… - + RSS Smart Episode Filter Умный фильтр эпизодов RSS - + Download REPACK/PROPER episodes Загружать эпизоды REPACK/PROPER - + Filters: Фильтры: - + Web User Interface (Remote control) Веб-интерфейс (удалённое управление) - + IP address: IP-адрес: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv «::» для любого IPv6-адреса, или «*» для обоих IPv4 и IPv6. - + Ban client after consecutive failures: - Блокировать клиента после серии сбоёв: + Запрет клиента при серии сбоёв равной: - + Never Никогда - + ban for: - заблокировать на: + запрещать на: - + Session timeout: Тайм-аут сеанса: - + Disabled Отключено - Enable cookie Secure flag (requires HTTPS) - Включить защиту куки (требует HTTPS) + Включить защиту куки (требует HTTPS) - + Server domains: Домены сервера: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &Использовать HTTPS вместо HTTP - + Bypass authentication for clients on localhost - Пропускать аутентификацию клиентов для localhost + Пропускать аутентификацию клиентов с localhost - + Bypass authentication for clients in whitelisted IP subnets - Пропускать аутентификацию клиентов для разрешённых подсетей + Пропускать аутентификацию клиентов из разрешённых подсетей - + IP subnet whitelist... Разрешённые подсети… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Укажите IP-адреса (или подсети, напр., 0.0.0.0/24) обратных прокси-серверов, чтобы использовать перенаправленный адрес клиента (заголовок X-Forwarded-For). Используйте «;» для разделения нескольких записей. - + Upda&te my dynamic domain name О&бновлять динамическое доменное имя - + Minimize qBittorrent to notification area Сворачивать qBittorrent в область уведомлений - + + Search + Поиск + + + + WebUI + + + + Interface Интерфейс - + Language: Язык: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Стиль значка в трее: - - + + Normal - Обычный + Обычно - + File association Ассоциации файлов - + Use qBittorrent for .torrent files Использовать qBittorrent для торрент-файлов - + Use qBittorrent for magnet links Использовать qBittorrent для магнит-ссылок - + Check for program updates Проверять наличие обновлений программы - + Power Management Управление питанием - + + &Log Files + + + + Save path: Путь: - + Backup the log file after: Создавать резервную копию после: - + Delete backup logs older than: Удалять резервные копии старше: - + + Show external IP in status bar + + + + When adding a torrent При добавлении торрента - + Bring torrent dialog to the front Выводить окно добавления торрента поверх остальных окон - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Удалять торрент-файл, добавление которого было отменено - + Also when addition is cancelled - Удалять торрент-файл по отмене добавления + Удалять торрент-файл при отмене добавления - + Warning! Data loss possible! Внимание! Возможна потеря данных! - + Saving Management Управление сохранением - + Default Torrent Management Mode: Режим управления торрентом по умолчанию: - + Manual Ручной - + Automatic Автоматический - + When Torrent Category changed: По смене категории торрента: - + Relocate torrent Переместить торрент - + Switch torrent to Manual Mode Перевести торрент в ручной режим - - + + Relocate affected torrents Переместить затронутые торренты - - + + Switch affected torrents to Manual Mode Перевести затронутые торренты в ручной режим - + Use Subcategories Использовать подкатегории - + Default Save Path: Путь сохранения по умолчанию: - + Copy .torrent files to: Копировать торрент-файлы в: - + Show &qBittorrent in notification area Показывать &qBittorrent в области уведомлений - &Log file - &Файл журнала + &Файл журнала - + Display &torrent content and some options Показывать сод&ержимое и параметры торрента - + De&lete .torrent files afterwards У&далять торрент-файл по добавлении - + Copy .torrent files for finished downloads to: По завершении копировать торрент-файлы в: - + Pre-allocate disk space for all files Предвыделять место на диске для всех файлов - + Use custom UI Theme Использовать собственную тему оболочки - + UI Theme file: Файл темы: - + Changing Interface settings requires application restart Для применения настроек интерфейса потребуется перезапуск приложения - + Shows a confirmation dialog upon torrent deletion Показывает окно подтверждения при удалении торрента - - + + Preview file, otherwise open destination folder Просмотр файла или открыть папку назначения - - Show torrent options - Показать параметры торрента + Показать параметры торрента - + Shows a confirmation dialog when exiting with active torrents Показывает окно подтверждения выхода при наличии активных торрентов - + When minimizing, the main window is closed and must be reopened from the systray icon При минимизации главное окно скрывается, его можно открыть с помощью значка в области уведомлений - + The systray icon will still be visible when closing the main window В области уведомлений будет отображаться значок после закрытия главного окна - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Закрывать qBittorrent в область уведомлений - + Monochrome (for dark theme) Одноцветный (для тёмной темы) - + Monochrome (for light theme) Одноцветный (для светлой темы) - + Inhibit system sleep when torrents are downloading Запретить спящий режим, когда торренты загружаются - + Inhibit system sleep when torrents are seeding Запретить спящий режим, когда торренты раздаются - + Creates an additional log file after the log file reaches the specified file size Создаёт добавочный файл журнала по достижении основным журналом указанного размера - + days Delete backup logs older than 10 days дн. - + months Delete backup logs older than 10 months мес. - + years Delete backup logs older than 10 years г./лет - + Log performance warnings Журналировать предупреждения быстродействия - The torrent will be added to download list in a paused state - Торрент будет добавлен в список загрузок в остановленном состоянии + Торрент будет добавлен в список загрузок в остановленном состоянии - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Не начинать загрузку автоматически - + Whether the .torrent file should be deleted after adding it Удалять торрент-файл после успешного добавления в очередь - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Выделять место на диске перед загрузкой для снижения фрагментации. Полезно только для жёстких дисков. - + Append .!qB extension to incomplete files Добавлять расширение «.!qB» к неполным файлам - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Предлагать загрузку по любым файлам .torrent, найденным внутри уже загруженного торрента - + Enable recursive download dialog Включить окно рекурсивной загрузки - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Автоматический: настройки торрента подбираются (напр., путь сохранения) на основе его категории Ручной: настройки торрента (напр., путь сохранения) необходимо указать вручную - + When Default Save/Incomplete Path changed: По смене стандартного пути сохранения/неполных: - + When Category Save Path changed: По смене пути сохранения категории: - + Use Category paths in Manual Mode Использовать пути категорий в ручном режиме - + Resolve relative Save Path against appropriate Category path instead of Default one Разрешить относительный путь сохранения для соответствующего пути категории вместо пути по умолчанию - + Use icons from system theme - Использовать значки системной темы + Использовать значки из темы системы - + Window state on start up: Состояние окна при запуске: - + qBittorrent window state on start up Состояние окна qBittorrent при запуске - + Torrent stop condition: Условие остановки торрента: - - + + None Нет - - + + Metadata received Метаданные получены - - + + Files checked Файлы проверены - + Ask for merging trackers when torrent is being added manually Запрашивать объединение трекеров при ручном добавлении торрента - + Use another path for incomplete torrents: Отдельный путь для неполных торрентов: - + Automatically add torrents from: Автоматически добавлять торренты из: - + Excluded file names Исключать имена файлов - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: фильтровать точное имя файла. readme[0-9].txt: фильтровать «readme1.txt», «readme2.txt», но не «readme10.txt». - + Receiver Получатель - + To: To receiver Кому: - + SMTP server: Сервер SMTP: - + Sender Отправитель - + From: From sender От кого: - + This server requires a secure connection (SSL) Этот сервер требует защищённого соединения (SSL) - - + + Authentication Аутентификация - - - - + + + + Username: Имя пользователя: - - - - + + + + Password: Пароль: - + Run external program Запуск внешней программы - Run on torrent added - Запускать при добавлении торрента + Запускать при добавлении торрента - Run on torrent finished - Запускать при завершении торрента + Запускать по завершении торрента - + Show console window Показать окно консоли - + TCP and μTP TCP и μTP - + Listening Port - Прослушиваемый порт + Порт прослушивания - + Port used for incoming connections: Порт для входящих соединений: - + Set to 0 to let your system pick an unused port Укажите «0» для подбора системой неиспользуемого порта - + Random Случайный - + Use UPnP / NAT-PMP port forwarding from my router Пробрасывать порты с помощью UPnP/NAT-PMP в вашем роутере - + Connections Limits Ограничения соединений - + Maximum number of connections per torrent: Максимум соединений на торрент: - + Global maximum number of connections: Общее ограничение числа соединений: - + Maximum number of upload slots per torrent: Максимум слотов отдачи на торрент: - + Global maximum number of upload slots: Общее ограничение слотов отдачи: - + Proxy Server Прокси-сервер - + Type: Тип: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Хост: - - - + + + Port: Порт: - + Otherwise, the proxy server is only used for tracker connections Иначе прокси-сервер используется только для соединения с трекерами - + Use proxy for peer connections Использовать прокси для соединения с пирами - + A&uthentication &Аутентификация - + Info: The password is saved unencrypted - Примечание: Пароль сохранится в нешифрованном виде + Примечание: пароль хранится в нешифрованном виде - + Filter path (.dat, .p2p, .p2b): Путь фильтров (.dat, .p2p, .p2b): - + Reload the filter Перезагрузить фильтр - + Manually banned IP addresses... Вручную запрещённые IP-адреса… - + Apply to trackers Применять к трекерам - + Global Rate Limits Общие ограничения скорости - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s КБ/с - - + + Upload: Отдача: - - + + Download: Загрузка: - + Alternative Rate Limits Особые ограничения скорости - + Start time Время начала - + End time Время завершения - + When: Когда: - + Every day Ежедневно - + Weekdays Будни - + Weekends Выходные - + Rate Limits Settings Настройки ограничений скорости - + Apply rate limit to peers on LAN Применять ограничения скорости к локальным пирам - + Apply rate limit to transport overhead Применять ограничения скорости к служебному трафику - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Применять ограничения скорости к протоколу µTP - + Privacy Конфиденциальность - + Enable DHT (decentralized network) to find more peers Включить DHT (децентрализованную сеть) для поиска пиров - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Обмен пирами с совместимыми клиентами БитТоррент (µTorrent, Vuze, …) - + Enable Peer Exchange (PeX) to find more peers Включить обмен пирами (PeX) - + Look for peers on your local network Искать пиров в вашей локальной сети - + Enable Local Peer Discovery to find more peers Включить обнаружение локальных пиров - + Encryption mode: Режим шифрования: - + Require encryption Требовать шифрование - + Disable encryption Отключить шифрование - + Enable when using a proxy or a VPN connection Рекомендуется использовать при подключении через прокси или VPN - + Enable anonymous mode Включить анонимный режим - + Maximum active downloads: Максимум активных загрузок: - + Maximum active uploads: Максимум активных отдач: - + Maximum active torrents: Максимум активных торрентов: - + Do not count slow torrents in these limits Не учитывать медленные торренты в этих ограничениях - + Upload rate threshold: Порог скорости отдачи: - + Download rate threshold: Порог скорости загрузки: - - - + + + + sec seconds с - + Torrent inactivity timer: Время бездействия торрента: - + then затем - + Use UPnP / NAT-PMP to forward the port from my router Использовать UPnP/NAT-PMP для проброса порта через ваш роутер - + Certificate: Сертификат: - + Key: Ключ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Сведения о сертификатах</a> - + Change current password Сменить текущий пароль - Use alternative Web UI - Использовать альтернативный веб-интерфейс + Использовать альтернативный веб-интерфейс - + Files location: Расположение файлов: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Безопасность - + Enable clickjacking protection Включить защиту от кликджекинга - + Enable Cross-Site Request Forgery (CSRF) protection Включить защиту от межсайтовой подделки запроса (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Включить проверку заголовка хоста - + Add custom HTTP headers Добавить пользовательские заголовки HTTP - + Header: value pairs, one per line Заголовок: одна пара значений на строку - + Enable reverse proxy support Включить поддержку обратного прокси-сервера - + Trusted proxies list: Список доверенных прокси-серверов: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Служба: - + Register Регистрация - + Domain name: Доменное имя: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! После включения этих настроек вы можете <strong>безвозвратно потерять</strong> свои торрент-файлы! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - По включении второго параметра («Удалять торрент-файл по отмене добавления») торрент-файл <strong>будет удалён,</strong> даже если вы нажмёте «<strong>Отмена</strong>» в окне «Добавить торрент» + По включении второго параметра («Удалять торрент-файл при отмене добавления») торрент-файл <strong>будет удалён,</strong> даже если вы нажмёте «<strong>Отмена</strong>» в окне «Добавить торрент» - + Select qBittorrent UI Theme file Выбор файла оболочки qBittorrent - + Choose Alternative UI files location Использовать расположение файлов альтернативного интерфейса - + Supported parameters (case sensitive): Поддерживаемые параметры (с учётом регистра): - + Minimized Свёрнуто - + Hidden Спрятано - + Disabled due to failed to detect system tray presence Отключено из-за сбоя при обнаружении наличия трея - + No stop condition is set. Без условия остановки. - + Torrent will stop after metadata is received. Торрент остановится по получении метаданных. - - Torrents that have metadata initially aren't affected. - Торренты, изначально содержащие метаданные, не затрагиваются. - - - + Torrent will stop after files are initially checked. - Торрент остановится по первоначальной проверке файлов. + Торрент остановится после первичной проверки файлов. - + This will also download metadata if it wasn't there initially. Это также позволит загрузить метаданные, если их изначально там не было. - + %N: Torrent name %N: Имя торрента - + %L: Category %L: Категория - + %F: Content path (same as root path for multifile torrent) %F: Папка содержимого (или корневая папка для торрентов с множеством файлов) - + %R: Root path (first torrent subdirectory path) %R: Корневая папка (главный путь для подкаталога торрента) - + %D: Save path %D: Путь сохранения - + %C: Number of files %C: Количество файлов - + %Z: Torrent size (bytes) %Z: Размер торрента (в байтах) - + %T: Current tracker %T: Текущий трекер - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Подсказка: включите параметр в кавычки для защиты от обрезки на пробелах (пример, "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Нет) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Торрент будет считаться медленным, если его скорость загрузки или отдачи будет меньше указанных значений на «Время бездействия торрента» - + Certificate Сертификат - + Select certificate Выбрать сертификат - + Private key Закрытый ключ - + Select private key Выбрать закрытый ключ - + + WebUI configuration failed. Reason: %1 + Конфигурация веб-интерфейса не удалась. Причина: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Выберите папку для наблюдения - + Adding entry failed Добавление записи не удалось - - Location Error - Ошибка расположения + + The WebUI username must be at least 3 characters long. + Имя пользователя веб-интерфейса должно быть не менее 3 символов. - - The alternative Web UI files location cannot be blank. - Расположение файлов альтернативного веб-интерфейса не может быть пустым. + + The WebUI password must be at least 6 characters long. + Пароль веб-интерфейса должен быть не менее 6 символов. + + + + Location Error + Ошибка расположения - - + + Choose export directory Выберите папку для экспорта - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Если эти параметры включены, qBittorrent будет <strong>удалять</strong> торрент-файлы после их успешного (первый параметр) или неуспешного (второй параметр) добавления в очередь загрузок. Это применяется <strong>не только для</strong> файлов, добавленных через меню «Добавить торрент», но и для открытых через <strong>файловую ассоциацию</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Файл темы оболочки qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Метки (разделяются запятыми) - + %I: Info hash v1 (or '-' if unavailable) %I: Инфо-хеш v1 (или «-» если недоступно) - + %J: Info hash v2 (or '-' if unavailable) %J: Инфо-хеш v2 (или «-» если недоступно) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ИД торрента (инфо-хеш sha-1 для торрента v1 или усечённый инфо-хеш sha-256 для торрента v2/гибрида) - - - + + + Choose a save directory Выберите папку сохранения - + + Torrents that have metadata initially will be added as stopped. + Торренты, изначально содержащие метаданные, будут добавлены в остановленном состоянии. + + + Choose an IP filter file Укажите файл IP-фильтра - + All supported filters Все поддерживаемые фильтры - + + The alternative WebUI files location cannot be blank. + Расположение файлов альтернативного веб-интерфейса не может быть пустым. + + + Parsing error Ошибка разбора - + Failed to parse the provided IP filter Не удалось разобрать предоставленный IP-фильтр - + Successfully refreshed Успешное обновление - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Предоставленный IP-фильтр успешно разобран: применено %1 правил. - + Preferences Настройки - + Time Error Ошибка времени - + The start time and the end time can't be the same. Время начала и завершения не может быть одинаковым. - - + + Length Error Ошибка размера - - - The Web UI username must be at least 3 characters long. - Имя пользователя веб-интерфейса должно содержать не менее 3 символов. - - - - The Web UI password must be at least 6 characters long. - Пароль веб-интерфейса должен быть не менее 6 символов. - PeerInfo - + Unknown Неизвестно - + Interested (local) and choked (peer) Заинтересован (клиент) и занят (пир) - + Interested (local) and unchoked (peer) Заинтересован (клиент) и не занят (пир) - + Interested (peer) and choked (local) Заинтересован (пир) и занят (клиент) - + Interested (peer) and unchoked (local) Заинтересован (пир) и не занят (клиент) - + Not interested (local) and unchoked (peer) Не заинтересован (клиент) и не занят (пир) - + Not interested (peer) and unchoked (local) Не заинтересован (пир) и не занят (клиент) - + Optimistic unchoke Скоро начнётся скачивание - + Peer snubbed Уснувший пир - + Incoming connection Входящее соединение - + Peer from DHT Пир из DHT - + Peer from PEX Пир из PEX - + Peer from LSD Пир из LSD - + Encrypted traffic Шифрованный трафик - + Encrypted handshake Шифрованное рукопожатие + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: фильтровать «readme1.txt», «readme2.txt», но Пир «%1» заблокирован вручную - + N/A Н/Д @@ -7668,7 +8080,7 @@ readme[0-9].txt: фильтровать «readme1.txt», «readme2.txt», но Список пиров для добавления (один IP на строку): - + Format: IPv4:port / [IPv6]:port Формат: IPv4:порт / [IPv6]:порт @@ -7709,27 +8121,27 @@ readme[0-9].txt: фильтровать «readme1.txt», «readme2.txt», но PiecesBar - + Files in this piece: Файлы в этой части: - + File in this piece: Файл в этой части: - + File in these pieces: Файл в этих частях: - + Wait until metadata become available to see detailed information Дождитесь пока метаданные станут доступны, чтобы увидеть подробности - + Hold Shift key for detailed information Зажмите Shift для подробностей @@ -7742,58 +8154,58 @@ readme[0-9].txt: фильтровать «readme1.txt», «readme2.txt», но Поисковые плагины - + Installed search plugins: Установленные поисковые плагины: - + Name Имя - + Version Версия - + Url Адрес - - + + Enabled Включён - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Предупреждение: Обязательно соблюдайте законы об авторских правах вашей страны при загрузке торрентов из этих поисковых систем. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Вы можете получить новые поисковые плагины здесь: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Установить новый - + Check for updates Проверить обновления - + Close Закрыть - + Uninstall Удалить @@ -7914,17 +8326,17 @@ Those plugins were disabled. Источник плагина - + Search plugin source: Источник поискового плагина: - + Local file Локальный файл - + Web link Веб-ссылка @@ -7942,70 +8354,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + Управление питанием нашло подходящий интерфейс D-Bus. Интерфейс: %1 Power management error. Did not found suitable D-Bus interface. - + Ошибка управления питанием. Не найден подходящий интерфейс D-Bus. Power management error. Action: %1. Error: %2 - + Ошибка управления питанием. Действие: %1. Ошибка: %2 Power management unexpected error. State: %1. Error: %2 - + Непредвиденная ошибка управления питанием. Состояние: %1. Ошибка: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Следующие файлы из торрента «%1» поддерживают просмотр, пожалуйста, выберите один из них: - + Preview Просмотр - + Name Имя - + Size Размер - + Progress Прогресс - + Preview impossible Просмотр невозможен - + Sorry, we can't preview this file: "%1". Извините, просмотр этого файла невозможен: «%1». - + Resize columns Подогнать столбцы - + Resize all non-hidden columns to the size of their contents Подогнать все нескрытые столбцы к размеру их содержимого @@ -8018,27 +8430,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Путь не существует - + Path does not point to a directory Путь не указывает на каталог - + Path does not point to a file Путь не указывает на файл - + Don't have read permission to path Отсутствуют права для чтения пути - + Don't have write permission to path Отсутствуют права для записи в путь @@ -8079,12 +8491,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Загружено: - + Availability: Доступно: @@ -8099,53 +8511,53 @@ Those plugins were disabled. Торрент - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Время работы: - + ETA: Расчётное время: - + Uploaded: Отдано: - + Seeds: Сиды: - + Download Speed: Загрузка: - + Upload Speed: Отдача: - + Peers: Пиры: - + Download Limit: Порог загрузки: - + Upload Limit: Порог отдачи: - + Wasted: Потеряно: @@ -8155,193 +8567,249 @@ Those plugins were disabled. Соединения: - + Information Информация - + Info Hash v1: Инфо-хеш v1: - + Info Hash v2: Инфо-хеш v2: - + Comment: Комментарий: - + Select All Выбрать все - + Select None - Отменить выбор + Снять выбор - + Share Ratio: Рейтинг: - + Reannounce In: Следующий анонс: - + Last Seen Complete: Замечен целиком: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Общий размер: - + Pieces: Части: - + Created By: Создан в: - + Added On: - Добавлен: + Дата добавления: - + Completed On: - Завершён: + Дата завершения: - + Created On: Дата создания: - + + Private: + + + + Save Path: Путь сохранения: - + Never Никогда - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 × %2 (есть %3) - - + + %1 (%2 this session) %1 (%2 за сеанс) - - + + + N/A Н/Д - + + Yes + Да + + + + No + Нет + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (раздаётся %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 макс.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (всего %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (сред. %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Новый веб-сид + Новый веб-сид - Remove Web seed - Удалить веб-сида + Удалить веб-сида - Copy Web seed URL - Копировать адрес веб-сида + Копировать адрес веб-сида - Edit Web seed URL - Править адрес веб-сида + Править адрес веб-сида - + Filter files... Фильтр файлов… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Графики скорости отключены - + You can enable it in Advanced Options Вы можете включить их в расширенных параметрах - New URL seed New HTTP source - Новый адрес сида + Новый адрес сида - New URL seed: - Новый адрес сида: + Новый адрес сида: - - This URL seed is already in the list. - Этот адрес сида уже есть в списке. + Этот адрес сида уже есть в списке. - + Web seed editing Правка веб-сида - + Web seed URL: Адрес веб-сида: @@ -8360,22 +8828,22 @@ Those plugins were disabled. Не удалось сохранить данные Автозагрузчика RSS из %1. Ошибка: %2 - + Invalid data format Неверный формат данных - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS-статья «%1» принята правилом «%2». Попытка добавить торрент… - + Failed to read RSS AutoDownloader rules. %1 Не удалось прочесть правила Автозагрузчика RSS. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Не удалось загрузить правила Автозагрузчика RSS. Причина: %1 @@ -8383,22 +8851,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Не удалось загрузить RSS-ленту с «%1». Причина: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-лента с «%1» обновлена. Добавлено %2 новых статей. - + Failed to parse RSS feed at '%1'. Reason: %2 Не удалось разобрать RSS-ленту с «%1». Причина: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS-лента с «%1» успешно загружена. Запущен её разбор. @@ -8434,12 +8902,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Неверная RSS-лента. - + %1 (line: %2, column: %3, offset: %4). %1 (строка: %2, столбец: %3, смещение: %4). @@ -8447,99 +8915,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Не удалось сохранить настройки сеанса RSS. Файл: «%1». Ошибка: «%2» - + Couldn't save RSS session data. File: "%1". Error: "%2" Не удалось сохранить данные сеанса RSS. Файл: «%1». Ошибка: «%2» - - + + RSS feed with given URL already exists: %1. RSS-лента с указанным адресом уже существует: %1. - + Feed doesn't exist: %1. Лента не существует: %1. - + Cannot move root folder. Невозможно переместить корневую папку. - - + + Item doesn't exist: %1. Элемент не существует: %1. - + Couldn't move folder into itself. Не удалось переместить папку в саму себя. - + Cannot delete root folder. Невозможно удалить корневую папку. - + Failed to read RSS session data. %1 Не удалось прочесть данные сеанса RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Не удалось разобрать данные сеанса RSS. Файл: «%1». Ошибка: «%2» - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Не удалось загрузить данные сеанса RSS. Файл: «%1». Ошибка: «неверный формат данных». - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Не удалось загрузить RSS-ленту. Лента: «%1». Причина: Требуется адрес. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Не удалось загрузить RSS-ленту. Лента: «%1». Причина: Неверный UID. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Обнаружен повтор RSS-ленты. UID: «%1». Ошибка: Похоже, что конфигурация повреждена. - + Couldn't load RSS item. Item: "%1". Invalid data format. Не удалось загрузить элемент RSS. Элемент: «%1». Неверный формат данных. - + Corrupted RSS list, not loading it. Повреждён список RSS, он не будет загружен. - + Incorrect RSS Item path: %1. - Некорректный путь элемента RSS: %1. + Неверный путь элемента RSS: %1. - + RSS item with given path already exists: %1. RSS-лента с указанным путём уже существует: %1. - + Parent folder doesn't exist: %1. Родительская папка не существует: %1. @@ -8563,8 +9031,8 @@ Those plugins were disabled. - - + + Mark items read Отметить как прочитанные @@ -8589,132 +9057,132 @@ Those plugins were disabled. Торренты: (двойной щелчок для загрузки) - - + + Delete Удалить - + Rename... Переименовать… - + Rename Переименовать - - + + Update Обновить - + New subscription... Новая подписка… - - + + Update all feeds Обновить все ленты - + Download torrent Загрузить торрент - + Open news URL Открыть новостную ссылку - + Copy feed URL Копировать адрес ленты - + New folder... Новая папка… - + Edit feed URL... Править адрес ленты… - + Edit feed URL Править адрес ленты - + Please choose a folder name Пожалуйста, выберите имя папки - + Folder name: Имя папки: - + New folder Новая папка - - + + Please type a RSS feed URL Пожалуйста, введите адрес RSS-ленты - - + + Feed URL: Адрес ленты: - + Deletion confirmation Подтверждение удаления - + Are you sure you want to delete the selected RSS feeds? Уверены, что хотите удалить выбранные RSS-ленты? - + Please choose a new name for this RSS feed Пожалуйста, укажите новое имя для этой RSS-ленты - + New feed name: Новое имя ленты: - + Rename failed Переименование не удалось - + Date: Дата: - + Feed: - + Лента: - + Author: Автор: @@ -8722,38 +9190,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Требуется установленный Python для использования поисковика. - + Unable to create more than %1 concurrent searches. Невозможно создать более %1 одновременных поисковых запросов. - - + + Offset is out of range Смещение вне диапазона - + All plugins are already up to date. Все плагины имеют последние версии. - + Updating %1 plugins Обновляются %1 плагина(ов) - + Updating plugin %1 Обновляется плагин %1 - + Failed to check for plugin updates: %1 Не удалось проверить обновления для плагинов: %1 @@ -8828,132 +9296,146 @@ Those plugins were disabled. Размер: - + Name i.e: file name Имя - + Size i.e: file size Размер - + Seeders i.e: Number of full sources Сиды - + Leechers i.e: Number of partial sources Личи - Search engine - Поисковик + Поисковик - + Filter search results... Фильтр результатов поиска… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Результаты (показано <i>%1</i> из <i>%2</i>): - + Torrent names only В именах торрентов - + Everywhere Везде - + Use regular expressions Использовать регулярные выражения - + Open download window Открыть окно загрузки - + Download Загрузить - + Open description page Открыть страницу описания - + Copy Копировать - + Name Имя - + Download link Ссылку загрузки - + Description page URL Адрес страницы описания - + Searching... - Выполняется поиск… + Идёт поиск… - + Search has finished Поиск завершён - + Search aborted Поиск прерван - + An error occurred during search... Во время поиска произошла ошибка… - + Search returned no results Поиск не дал результатов - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Отображение столбцов - + Resize columns Подогнать столбцы - + Resize all non-hidden columns to the size of their contents Подогнать все нескрытые столбцы к размеру их содержимого @@ -8961,104 +9443,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Неизвестный формат файла поискового плагина. - + Plugin already at version %1, which is greater than %2 Плагин уже версии %1, которая выше, чем %2 - + A more recent version of this plugin is already installed. Уже установлена самая последняя версия этого плагина. - + Plugin %1 is not supported. Плагин %1 не поддерживается. - - + + Plugin is not supported. Плагин не поддерживается. - + Plugin %1 has been successfully updated. Плагин %1 был успешно обновлён. - + All categories Все категории - + Movies Фильмы - + TV shows Телепередачи - + Music Музыка - + Games Игры - + Anime Аниме - + Software Программы - + Pictures Изображения - + Books Книги - + Update server is temporarily unavailable. %1 Сервер обновлений временно недоступен. %1 - - + + Failed to download the plugin file. %1 Не удалось загрузить файл плагина. %1 - + Plugin "%1" is outdated, updating to version %2 Плагин «%1» устарел, обновление до версии %2 - + Incorrect update info received for %1 out of %2 plugins. Получена неверная информация об обновлении для %1 из %2 плагинов. - + Search plugin '%1' contains invalid version string ('%2') Поисковый плагин «%1» содержит недопустимую строку версии («%2») @@ -9068,114 +9550,153 @@ Those plugins were disabled. - - - - Search Поиск - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Отсутствуют установленные поисковые плагины. Нажмите на кнопку «Поисковые плагины…» в правой нижней части окна для их установки. - + Search plugins... Поисковые плагины… - + A phrase to search for. Фраза для поиска. - + Spaces in a search term may be protected by double quotes. Пробелы в поисковом запросе можно защитить двойными кавычками. - + Example: Search phrase example Пример: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b> для поиска <b>foo bar</b> - + All plugins Все плагины - + Only enabled Только включённые - + + + Invalid data format. + Неверный формат данных. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b> для поиска <b>foo</b> и <b>bar</b> - + + Refresh + + + + Close tab Закрыть вкладку - + Close all tabs Закрыть все вкладки - + Select... Выбрать… - - - + + Search Engine Поисковик - + + Please install Python to use the Search Engine. Пожалуйста, установите Python для использования поисковика. - + Empty search pattern Пустой шаблон поиска - + Please type a search pattern first Пожалуйста, задайте сначала шаблон поиска - + + Stop Стоп - Search has finished - Поиск завершён + Поиск завершён - Search has failed - Поиск не удался + Поиск не удался + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9183,7 +9704,7 @@ Click the "Search plugins..." button at the bottom right of the window Detected unclean program exit. Using fallback file to restore settings: %1 - Обнаружено некорректное завершение программы. Используется резервная копия для восстановления настроек: %1 + Обнаружено неаккуратное завершение программы. Используется резервная копия для восстановления настроек: %1 @@ -9256,7 +9777,7 @@ Click the "Search plugins..." button at the bottom right of the window The computer is going to enter hibernation mode. - Компьютер перейдёт в спящий режим. + Компьютер готовится к переходу в спящий режим. @@ -9288,34 +9809,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Отдача: - - - + + + - - - + + + KiB/s КБ/с - - + + Download: Загрузка: - + Alternative speed limits Особые ограничения скорости @@ -9507,32 +10028,32 @@ Click the "Search plugins..." button at the bottom right of the window Среднее время в очереди: - + Connected peers: Подключённые пиры: - + All-time share ratio: Общий рейтинг раздачи: - + All-time download: Всего загружено: - + Session waste: Потеряно за сеанс: - + All-time upload: Всего отдано: - + Total buffer size: Общий размер буфера: @@ -9547,12 +10068,12 @@ Click the "Search plugins..." button at the bottom right of the window Задачи ввода-вывода в очереди: - + Write cache overload: Перегрузка кэша записи: - + Read cache overload: Перегрузка кэша чтения: @@ -9571,53 +10092,69 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Состояние связи: - - + + No direct connections. This may indicate network configuration problems. Нет прямых соединений. Причиной этому могут быть проблемы в настройках сети. - - + + + External IP: N/A + + + + + DHT: %1 nodes Узлы DHT: %1 - + qBittorrent needs to be restarted! qBittorrent надо перезапустить! - - - + + + Connection Status: Состояние связи: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Отключён. Обычно это означает, что qBittorrent не смог прослушать выбранный порт для входящих соединений. - + Online В сети - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Щелчок для переключения на особые ограничения скорости - + Click to switch to regular speed limits - Щёлчок для переключения на общие ограничения скорости + Щелчок для переключения на общие ограничения скорости @@ -9644,14 +10181,22 @@ Click the "Search plugins..." button at the bottom right of the window Завершены (0) - Resumed (0) - Возобновлены (0) + Возобновлены (0) - Paused (0) - Остановлены (0) + Остановлены (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9713,10 +10258,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Завершены (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Остановлены (%1) + Остановлены (%1) @@ -9724,14 +10288,12 @@ Click the "Search plugins..." button at the bottom right of the window Перемещаются (%1) - Resume torrents - Возобновить торренты + Возобновить торренты - Pause torrents - Остановить торренты + Остановить торренты @@ -9739,9 +10301,8 @@ Click the "Search plugins..." button at the bottom right of the window Удалить торренты - Resumed (%1) - Возобновлены (%1) + Возобновлены (%1) @@ -9782,17 +10343,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Метки - + All Все - + Untagged Без метки @@ -9800,52 +10361,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Добавить метку… - + Remove tag Удалить метку - + Remove unused tags Удалить пустые метки - Resume torrents - Возобновить торренты + Возобновить торренты - Pause torrents - Остановить торренты + Остановить торренты - + Remove torrents Удалить торренты - New Tag - Новая метка + Новая метка + + + + Start torrents + - + + Stop torrents + + + + Tag: Метка: - + + Add tag + + + + Invalid tag name Недопустимое имя метки - + Tag name '%1' is invalid Недопустимое имя метки «%1» @@ -9985,32 +10558,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Имя - + Progress Прогресс - + Download Priority Приоритет загрузки - + Remaining - Осталось байт + Осталось - + Availability Доступно - + Total Size Общий размер @@ -10055,102 +10628,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Ошибка переименования - + Renaming Переименование - + New name: Новое имя: - + Column visibility Отображение столбцов - + Resize columns Подогнать столбцы - + Resize all non-hidden columns to the size of their contents Подогнать все нескрытые столбцы к размеру их содержимого - + Open Открыть - + Open containing folder Открыть папку размещения - + Rename... Переименовать… - + Priority Приоритет - - + + Do not download Не загружать - + Normal Обычный - + High Высокий - + Maximum Максимальный - + By shown file order В показанном порядке - + Normal priority Обычный приоритет - + High priority Высокий приоритет - + Maximum priority Максимальный приоритет - + Priority by shown file order В показанном порядке + + TorrentCreatorController + + + Too many active tasks + Слишком много активных задач + + + + Torrent creation is still unfinished. + Создание торрента ещё не завершено. + + + + Torrent creation failed. + Не удалось создать торрент. + + TorrentCreatorDialog @@ -10175,13 +10766,13 @@ Please choose a different name and try again. - + Select file Выбрать файл - + Select folder Выбрать папку @@ -10206,58 +10797,10 @@ Please choose a different name and try again. Размер части: - + Auto Авто - - 16 KiB - 16 КБ - - - 32 KiB - 32 КБ - - - 64 KiB - 64 КБ - - - 128 KiB - 128 КБ - - - 256 KiB - 256 КБ - - - 512 KiB - 512 КБ - - - 1 MiB - 1 МБ - - - 2 MiB - 2 МБ - - - 4 MiB - 4 МБ - - - 8 MiB - 8 МБ - - - 16 MiB - 16 МБ - - - 32 MiB - 32 МБ - Calculate number of pieces: @@ -10276,7 +10819,7 @@ Please choose a different name and try again. Ignore share ratio limits for this torrent - Игнорировать ограничения рейтинга для этого торрента + Не учитывать ограничения рейтинга для этого торрента @@ -10304,92 +10847,83 @@ Please choose a different name and try again. Поля - + You can separate tracker tiers / groups with an empty line. Используйте пустые строки для разделения уровней / групп трекеров. - + Web seed URLs: Адреса веб-сидов: - + Tracker URLs: Адреса трекеров: - + Comments: Комментарии: - + Source: Источник: - + Progress: Прогресс: - + Create Torrent Создать торрент - - + + Torrent creation failed Не удалось создать торрент - + Reason: Path to file/folder is not readable. Причина: Путь к файлу или папке недоступен для чтения. - + Select where to save the new torrent Выберите папку для сохранения нового торрента - + Torrent Files (*.torrent) Торрент-файлы (*.torrent) - - Reason: %1 - Причина: %1 - - - + Add torrent to transfer list failed. - + Не удалось добавить торрент в список. - + Reason: "%1" - + Причина: «%1» - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Причина: Созданный торрент-файл испорчен. Он не будет добавлен в список загрузок. + Добавление торрента не удалось - + Torrent creator Создать торрент - + Torrent created: Торрент создан: @@ -10397,32 +10931,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Не удалось загрузить настройки наблюдаемых папок. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Не удалось разобрать настройки наблюдаемых папок из %1. Ошибка: «%2» - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Не удалось загрузить настройки наблюдаемых папок из %1. Ошибка: «неверный формат данных». - + Couldn't store Watched Folders configuration to %1. Error: %2 Не удалось сохранить настройки наблюдаемых папок в %1. Ошибка: %2 - + Watched folder Path cannot be empty. Путь к наблюдаемой папке не может быть пустым. - + Watched folder Path cannot be relative. Путь к наблюдаемой папке не может быть относительным. @@ -10430,27 +10964,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Неверная магнит-ссылка. Ссылка: %1. Причина: %2 - + Magnet file too big. File: %1 Магнит-файл слишком большой. Файл: %1 - + Failed to open magnet file: %1 Не удалось открыть магнит-файл. Причина: %1 - + Rejecting failed torrent file: %1 Отклонение повреждённого торрент-файла: %1 - + Watching folder: "%1" Наблюдение папки: «%1» @@ -10458,14 +10992,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Не удалось выделить память при чтении файла. Файл: «%1». Ошибка: «%2» + Не удалось выделить память при чтении файла. Файл: «%1». Ошибка: «%2» - Invalid metadata - Недопустимые метаданные + Недопустимые метаданные @@ -10496,279 +11028,374 @@ Please choose a different name and try again. Отдельный путь для неполного торрента - + Category: Категория: - + + Torrent Share Limits + + + Torrent speed limits - Ограничения скорости торрента + Ограничения скорости торрента - + Download: Загрузка: - - + + - - + + Torrent Speed Limits + + + + + KiB/s КБ/с - + These will not exceed the global limits Эти ограничения не превысят общие - + Upload: Отдача: - Torrent share limits - Ограничения раздачи торрента + Ограничения раздачи торрента - Use global share limit - Следовать общему ограничению раздачи + Следовать общему ограничению раздачи - Set no share limit - Снять ограничение раздачи + Снять ограничение раздачи - Set share limit to - Задать ограничение раздачи + Задать ограничение раздачи - ratio - рейтинг + рейтинг - total minutes - всего минут + всего минут - inactive minutes - минут бездействия + минут бездействия - + Disable DHT for this torrent Отключить DHT для этого торрента - + Download in sequential order Загружать последовательно - + Disable PeX for this torrent Отключить PeX для этого торрента - + Download first and last pieces first - Загружать крайние части первыми + Загружать сперва крайние части - + Disable LSD for this torrent Отключить LSD для этого торрента - + Currently used categories Текущие используемые категории - - + + Choose save path Выберите путь сохранения - + Not applicable to private torrents Не применяется к частным торрентам - No share limit method selected - Не выбран метод ограничения раздачи + Не выбран метод ограничения раздачи - Please select a limit method first - Пожалуйста, выберите сначала метод ограничения + Пожалуйста, выберите сначала метод ограничения - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Метки торрентов + + + + + Default + Стандартно - - New Tag - Новая метка + + + + Unlimited + Без ограничений - - Tag: - Метка: + + + + Set to + Установить на - - Invalid tag name - Недопустимое имя метки + + Seeding time: + Время раздачи: - - Tag name '%1' is invalid. - Недопустимое имя метки «%1». + + + + + + + min + minutes + мин - - Tag exists - Метка существует + + Inactive seeding time: + Время бездействия раздачи: - - Tag name already exists. - Имя метки уже существует. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Ошибка: «%1» не является допустимым торрент-файлом. + + Stop torrent + - + + Remove torrent + Удалить торрент + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Включить режим суперсида для торрента + + + + Ratio: + Рейтинг: + + + + TorrentTagsDialog + + + Torrent Tags + Метки торрентов + + + New Tag + Новая метка + + + + Add tag + + + + + Tag: + Метка: + + + + Invalid tag name + Недопустимое имя метки + + + + Tag name '%1' is invalid. + Недопустимое имя метки «%1». + + + + Tag exists + Метка существует + + + + Tag name already exists. + Имя метки уже существует. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Ошибка: «%1» не является допустимым торрент-файлом. + + + Priority must be an integer Приоритет должен быть целым числом - + Priority is not valid Приоритет недействителен - + Torrent's metadata has not yet downloaded Метаданные торрента ещё не загружены - + File IDs must be integers Идентификаторы файлов должны быть целыми числами - + File ID is not valid Неверный идентификатор файла - - - - + + + + Torrent queueing must be enabled Очерёдность торрентов должна быть включена - - + + Save path cannot be empty Путь сохранения не может быть пуст - - + + Cannot create target directory Не удаётся создать целевой каталог - - + + Category cannot be empty Категория не может быть пуста - + Unable to create category Не удалось создать категорию - + Unable to edit category Не удалось изменить категорию - + Unable to export torrent file. Error: %1 Не удалось экспортировать торрент-файл. Ошибка: «%1» - + Cannot make save path Невозможно создать путь сохранения - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - некорректный параметр «sort» + параметр «sort» неверен - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. «%1» — недопустимый индекс файла. - + Index %1 is out of bounds. Индекс %1 вне допустимых границ. - - + + Cannot write to directory Запись в папку невозможна - + WebUI Set location: moving "%1", from "%2" to "%3" Веб-интерфейс, перемещение: «%1» перемещается из «%2» в «%3» - + Incorrect torrent name Неправильное имя торрента - - + + Incorrect category name Неправильное имя категории @@ -10799,257 +11426,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - Работает + Работает - + Disabled - Отключено + Отключено - + Disabled for this torrent - Отключено в этом торренте + Отключено в этом торренте - + This torrent is private - Это частный торрент + Это частный торрент - + N/A - Н/Д + Н/Д - + Updating... - Обновляется… + Обновляется… - + Not working - Не работает + Не работает - + Tracker error - + Ошибка трекера - + Unreachable - + Нет доступа - + Not contacted yet - Связь не установлена + Связи пока нет - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Уровень + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Неверное состояние! + + + URL/Announce endpoint + Получатель ссылки/анонса + Tier + Уровень + + Protocol - + Протокол - + Status - Состояние + Состояние - + Peers - Пиры + Пиры - + Seeds - Сиды + Сиды - + Leeches - Личи + Личи - + Times Downloaded - Число загрузок + Всего загрузок - + Message - Сообщение + Сообщение - Next announce - + След. анонс - Min announce - + Минимум анонса - v%1 - + v%1 TrackerListWidget - Working - Работает - - - Disabled - Отключено - - - Disabled for this torrent - Отключено в этом торренте - - - + This torrent is private Это частный торрент - Updating... - Обновляется… - - - Not working - Не работает - - - Not contacted yet - Связь не установлена - - - N/A - Н/Д - - - + Tracker editing Изменение трекера - + Tracker URL: Адрес трекера: - - + + Tracker editing failed Не удалось изменить трекер - + The tracker URL entered is invalid. Введён недопустимый адрес трекера. - + The tracker URL already exists. Трекер с таким адресом уже существует. - + Edit tracker URL... Править адрес трекера… - + Remove tracker Удалить трекер - + Copy tracker URL Копировать адрес трекера - + Force reannounce to selected trackers Повторить анонс на выбранные трекеры - + Force reannounce to all trackers Повторить анонс на все трекеры - Tier - Уровень - - - URL - Адрес - - - Status - Состояние - - - Seeds - Сиды - - - Times Downloaded - Число загрузок - - - + Resize columns Подогнать столбцы - + Resize all non-hidden columns to the size of their contents Подогнать все нескрытые столбцы к размеру их содержимого - Peers - Пиры - - - + Add trackers... Добавить трекеры… - Leeches - Личи - - - Message - Сообщение - - - + Column visibility Отображение столбцов @@ -11067,37 +11652,37 @@ Please choose a different name and try again. Список трекеров для добавления (один трекер на строку): - + µTorrent compatible list URL: - Адрес списка, совместимого с µTorrent: + Адрес совместимого с µTorrent списка: - + Download trackers list Загрузить список трекеров - + Add Добавить - + Trackers list URL error Ошибка адреса списка трекеров - + The trackers list URL cannot be empty Адрес списка трекеров не может быть пустым - + Download trackers list error Ошибка загрузки списка трекеров - + Error occurred when downloading the trackers list. Reason: "%1" Произошла ошибка при загрузке списка трекеров. Причина: «%1» @@ -11105,87 +11690,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Все (0) - - - Trackerless (0) - Без трекера (0) - - - Error (0) - Ошибка (0) - - - Warning (0) - Предупреждения (0) - - - Trackerless - Без трекера - - - Error (%1) - Ошибка (%1) - - - + Warning (%1) Предупреждения (%1) - + Trackerless (%1) Без трекера (%1) - + Tracker error (%1) - + Ошибка трекера (%1) - + Other error (%1) - + Иная ошибка (%1) - + Remove tracker - Удалить трекер + Удалить трекер + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Возобновить + Возобновить - Pause torrents - Остановить торренты + Остановить торренты - + Remove torrents Удалить торренты - + Removal confirmation - + Подтверждение удаления - + Are you sure you want to remove tracker "%1" from all torrents? - + Уверены, что хотите удалить трекер «%1» из всех торрентов? - + Don't ask me again. - + Больше не спрашивать. - + All (%1) this is for the tracker filter Все (%1) @@ -11194,7 +11762,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument «режим»: недопустимый аргумент @@ -11239,13 +11807,13 @@ Please choose a different name and try again. Downloading metadata Used when loading a magnet link - Получение метаданных + Закачка метаданных [F] Downloading metadata Used when forced to load a magnet link. You probably shouldn't translate the F. - [П] Получение метаданных + [П] Закачка метаданных @@ -11284,12 +11852,11 @@ Please choose a different name and try again. Checking resume data Used when loading the torrents from disk after qbt is launched. It checks the correctness of the .fastresume file. Normally it is completed in a fraction of a second, unless loading many many torrents. - Проверка данных возобновления + Сверка данных возобновления - Paused - Остановлен + Остановлен @@ -11305,7 +11872,7 @@ Please choose a different name and try again. Missing Files - Потеря файлов + Файлы утеряны @@ -11314,220 +11881,262 @@ Please choose a different name and try again. Ошибка - + Name i.e: torrent name Имя - + Size i.e: torrent size Размер - + Progress % Done Прогресс - Status Torrent status (e.g. downloading, seeding, paused) - Состояние + Состояние - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Состояние + + + Seeds i.e. full sources (often untranslated) Сиды - + Peers i.e. partial sources (often untranslated) Пиры - + Down Speed i.e: Download speed Загрузка - + Up Speed i.e: Upload speed Отдача - + Ratio Share ratio Рейтинг - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Расч. время - + Category Категория - + Tags Метки - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Добавлен - + Completed On Torrent was completed on 01/01/2010 08:00 Завершён - + Tracker Трекер - + Down Limit i.e: Download limit Порог загрузки - + Up Limit i.e: Upload limit Порог отдачи - + Downloaded Amount of data downloaded (e.g. in MB) Загружено - + Uploaded Amount of data uploaded (e.g. in MB) Отдано - + Session Download Amount of data downloaded since program open (e.g. in MB) Загружено за сеанс - + Session Upload Amount of data uploaded since program open (e.g. in MB) Отдано за сеанс - + Remaining Amount of data left to download (e.g. in MB) - Осталось байт + Осталось + + + + Time Active + Time (duration) the torrent is active (not stopped) + Время работы + + + + Yes + Да + + + + No + Нет - Time Active Time (duration) the torrent is active (not paused) - Время работы + Время работы - + Save Path Torrent save path Путь сохранения - + Incomplete Save Path Torrent incomplete save path Путь неполного - + Completed Amount of data completed (e.g. in MB) Завершено байт - + Ratio Limit Upload share ratio limit Порог рейтинга - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Замечен целиком - + Last Activity Time passed since a chunk was downloaded/uploaded Активность - + Total Size i.e. Size including unwanted data Общ. размер - + Availability The number of distributed copies of the torrent Доступно - + Info Hash v1 i.e: torrent info hash v1 Инфо-хеш v1 - + Info Hash v2 i.e: torrent info hash v2 Инфо-хеш v2 - + Reannounce In Indicates the time until next trackers reannounce + Следующий анонс + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Н/Д - + %1 ago e.g.: 1h 20m ago %1 назад - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (раздаётся %2) @@ -11536,334 +12145,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Отображение столбцов - + Recheck confirmation Подтверждение проверки - + Are you sure you want to recheck the selected torrent(s)? Уверены, что хотите перепроверить выбранные торренты? - + Rename Переименовать - + New name: Новое имя: - + Choose save path Выберите путь сохранения - Confirm pause - Подтвердить приостановку + Подтвердить приостановку - Would you like to pause all torrents? - Хотите приостановить все торренты? + Хотите приостановить все торренты? - Confirm resume - Подтвердить возобновление + Подтвердить возобновление - Would you like to resume all torrents? - Хотите возобновить все торренты? + Хотите возобновить все торренты? - + Unable to preview Просмотр не удался - + The selected torrent "%1" does not contain previewable files Выбранный торрент «%1» не содержит файлов, подходящих для просмотра - + Resize columns Подогнать столбцы - + Resize all non-hidden columns to the size of their contents Подогнать все нескрытые столбцы к размеру их содержимого - + Enable automatic torrent management Включить автоматическое управление торрентами - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Уверены, что хотите включить автоматическое управление для выбранных торрентов? Они могут переместиться. - Add Tags - Добавить метки + Добавить метки - + Choose folder to save exported .torrent files - Выберите папку для экспортируемых файлов .torrent + Выберите папку для экспорта файлов .torrent - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Экспорт файла .torrent не удался. Торрент: «%1». Путь сохранения: «%2». Причина: «%3» - + A file with the same name already exists Файл с таким именем уже существует - + Export .torrent file error Ошибка экспорта файла .torrent - + Remove All Tags Удалить все метки - + Remove all tags from selected torrents? Удалить все метки для выбранных торрентов? - + Comma-separated tags: Метки разделяются запятыми: - + Invalid tag Недопустимая метка - + Tag name: '%1' is invalid Имя метки «%1» недопустимо - &Resume Resume/start the torrent - &Возобновить + &Возобновить - &Pause Pause the torrent - &Остановить + &Остановить - Force Resu&me Force Resume/start the torrent - Возобновит&ь принудительно + Возобновит&ь принудительно - + Pre&view file... Прос&мотр файла… - + Torrent &options... Параметры т&оррента… - + Open destination &folder Открыть п&апку назначения - + Move &up i.e. move up in the queue По&высить - + Move &down i.e. Move down in the queue По&низить - + Move to &top i.e. Move to top of the queue - В на&чало + В &начало - + Move to &bottom i.e. Move to bottom of the queue - В &конец + В ко&нец - + Set loc&ation... Пере&местить… - + Force rec&heck Прове&рить принудительно - + Force r&eannounce - Повторить анонс прин&удительно + Анонсировать прин&удительно - + &Magnet link Магнит-сс&ылку - + Torrent &ID ИД то&ррента - + + &Comment + Ко&мментарий + + + &Name &Имя - + Info &hash v1 Ин&фо-хеш v1 - + Info h&ash v2 Инфо-&хеш v2 - + Re&name... Переименова&ть… - + Edit trac&kers... Пра&вить трекеры… - + E&xport .torrent... &Экспорт в файл .torrent… - + Categor&y Кате&гория - + &New... New category... &Новая… - + &Reset Reset category &Сброс - + Ta&gs Ме&тки - + &Add... Add / assign multiple tags... &Добавить… - + &Remove All Remove all tags &Удалить все - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Очередь - + &Copy Ко&пировать - + Exported torrent is not necessarily the same as the imported Экспортируемый торрент не обязательно будет таким же, как импортированный - + Download in sequential order Загружать последовательно - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Возникли ошибки при экспорте файлов .torrent. Смотрите подробности в журнале работы. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Удалить - + Download first and last pieces first - Загружать крайние части первыми + Загружать сперва крайние части - + Automatic Torrent Management Автоматическое управление - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Автоматический режим подбирает настройки торрента (напр., путь сохранения) на основе его категории - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Нельзя принудительно повторить анонс, если торрент остановлен, в очереди, с ошибкой или проверяется + Нельзя принудительно повторить анонс, если торрент остановлен, в очереди, с ошибкой или проверяется - + Super seeding mode Режим суперсида @@ -11908,28 +12541,28 @@ Please choose a different name and try again. Идентификатор значка - + UI Theme Configuration. Настройка темы оболочки. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Не удалось полностью применить изменения темы оболочки. Подробности можно найти в журнале. - + Couldn't save UI Theme configuration. Reason: %1 Не удалось сохранить настройки темы оболочки. Причина: %1 - - + + Couldn't remove icon file. File: %1. Не удалось убрать файл значка. Файл: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Не удалось скопировать файл значка. Источник: %1. Назначение: %2. @@ -11937,7 +12570,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Не удалось загрузить тему оболочки из файла: «%1» @@ -11968,89 +12606,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Не удалось перенести настройки: HTTPS веб-интерфейса, файл: «%1», ошибка: «%2» - + Migrated preferences: WebUI https, exported data to file: "%1" Настройки перенесены: HTTPS веб-интерфейса, данные извлечены в файл: «%1» - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Найдено недопустимое значение в файле конфигурации, сбрасывается к стандартному. Ключ: «%1». Недопустимое значение: «%2». Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python найден, имя исполняемого файла: «%1», версия: %2 - - - Python not detected - Python не найден - Found Python executable. Name: "%1". Version: "%2" - + Найден исполняемый файл Python. Имя: «%1». Версия: «%2» Failed to find Python executable. Path: "%1". - + Не удалось найти исполняемый файл Python. Путь: «%1». Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Не удалось найти исполняемый файл «python3» в переменной среды PATH. PATH: «%1» Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Не удалось найти исполняемый файл «python» в переменной среды PATH. PATH: «%1» Failed to find `python` executable in Windows Registry. - + Не удалось найти исполняемый файл «python» в реестре Windows. Failed to find Python executable - + Не удалось найти исполняемый файл Python Utils::IO - + File open error. File: "%1". Error: "%2" Ошибка открытия файла. Файл: «%1». Ошибка: «%2» - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Размер файла превышает ограничение. Файл: «%1». Размер файла: %2. Ограничение размера: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Размер файла превышает ограничение размера данных. Файл: «%1». Размер файла: %2. Предел массива: %3 - + File read error. File: "%1". Error: "%2" Ошибка чтения файла. Файл: «%1». Ошибка: «%2» - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Несоответствие размера считываемого файла. Файл: «%1». Ожидаемый: %2. Фактический: %3 @@ -12114,72 +12745,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Указано недопустимое имя файла куки сеанса: «%1». Использовано стандартное. - + Unacceptable file type, only regular file is allowed. Недопустимый тип файла, разрешены только стандартные файлы. - + Symlinks inside alternative UI folder are forbidden. Символические ссылки внутри папки альтернативного интерфейса запрещены. - - Using built-in Web UI. + + Using built-in WebUI. Используется встроенный веб-интерфейс. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". Используется пользовательский веб-интерфейс. Расположение: «%1». - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. Перевод веб-интерфейса для выбранного языка (%1) успешно подгружен. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). Не удалось подгрузить перевод веб-интерфейса для выбранного языка (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Пропущен разделитель «:» в пользовательском заголовке HTTP веб-интерфейса: «%1» - + Web server error. %1 Ошибка веб-сервера. %1 - + Web server error. Unknown error. Ошибка веб-сервера. Неизвестная ошибка. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Веб-интерфейс: Оригинальный и целевой заголовки не совпадают! IP источника: «%1». Заголовок источника: «%2». Целевой источник: «%3» - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Веб-интерфейс: Ссылочный и целевой заголовки не совпадают! IP источника: «%1». Заголовок источника: «%2». Целевой источник: «%3» - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Веб-интерфейс: Неверный заголовок хоста, несовпадение порта! Запрос IP источника: «%1». Порт сервера: «%2». Полученный заголовок хоста: «%3» - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Веб-интерфейс: Неверный заголовок хоста. Запрос IP источника: «%1». Полученный заголовок хоста: «%2» @@ -12187,143 +12818,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + Учётные данные не заданы + + + + WebUI: HTTPS setup successful Веб-интерфейс: Установка HTTPS успешна - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP Веб-интерфейс: Установка HTTPS не удалась, откат к HTTP - - Web UI: Now listening on IP: %1, port: %2 - Веб-интерфейс: Сейчас используется IP: %1, порт: %2 + + WebUI: Now listening on IP: %1, port: %2 + Веб-интерфейс: Сейчас прослушивается IP: %1, порт: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Невозможно занять IP: %1, порт: %2. Причина: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Веб-интерфейс: Невозможно занять IP: %1, порт: %2. Причина: %3 + + Unknown error + Неизвестная ошибка misc - + B bytes Б - + KiB kibibytes (1024 bytes) КБ - + MiB mebibytes (1024 kibibytes) МБ - + GiB gibibytes (1024 mibibytes) ГБ - + TiB tebibytes (1024 gibibytes) ТБ - + PiB pebibytes (1024 tebibytes) ПБ - + EiB exbibytes (1024 pebibytes) ЭБ - + /s per second - + %1s e.g: 10 seconds - %1 м {1s?} + %1 с - + %1m e.g: 10 minutes - %1 м + %1 м - + %1h %2m e.g: 3 hours 5 minutes - %1 ч %2 м + %1 ч %2 м - + %1d %2h e.g: 2 days 10 hours - %1 д %2 ч + %1 д %2 ч - + %1y %2d e.g: 2 years 10 days - %1 г %2 д + %1 г %2 д - %1h %2m - e.g: 3hours 5minutes - %1 ч %2 м - - - %1d %2h - e.g: 2days 10hours - %1 д %2 ч - - - %1y %2d - e.g: 2years 10days - %1 г %2 д - - - - + + Unknown Unknown (size) Неизвестно - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent сейчас выключит компьютер, так как все загрузки были завершены. - + < 1m < 1 minute < 1 м - - %1m - e.g: 10minutes - %1 м - diff --git a/src/lang/qbittorrent_sk.ts b/src/lang/qbittorrent_sk.ts index c1c61b42a75c..6f7555165411 100644 --- a/src/lang/qbittorrent_sk.ts +++ b/src/lang/qbittorrent_sk.ts @@ -14,77 +14,77 @@ O - + Authors Autori - + Current maintainer Aktuálny správca - + Greece Grécko - - + + Nationality: Národonosť: - - + + E-mail: E-mail: - - + + Name: Meno: - + Original author Pôvodný autor - + France Francúzsko - + Special Thanks Špeciálne poďakovanie - + Translators Prekladatelia - + License Licencia - + Software Used Použitý software - + qBittorrent was built with the following libraries: qBittorrent bol vytvorený s následujúcimi knižnicami: - + Copy to clipboard - + Skopírovať do schránky @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Uložiť do - + Never show again Už nikdy nezobrazovať - Torrent settings - Nastavenia torrentu + Nastavenia torrentu @@ -191,12 +190,12 @@ Spustiť torrent - + Torrent information Informácie o torrente - + Skip hash check Preskočiť kontrolu hašu @@ -205,20 +204,25 @@ Use another path for incomplete torrent Pre neúplný torrent použite inú cestu + + + Torrent options + + Tags: - + Značky: Click [...] button to add/remove tags. - + Kliknite na tlačidlo [...] pre pridanie/odstránenie značiek. Add/remove tags - + Pridať/Odstrániť značky @@ -231,70 +235,76 @@ Podmienka pre zastavenie: - - + + None Žiadna - - + + Metadata received Metadáta obdržané - - + + Torrents that have metadata initially will be added as stopped. + 71%match +Torrenty, ktoré majú iniciálne metadáta, budú pridané ako zastavené. + + + + Files checked Súbory skontrolované - + Add to top of queue Pridať navrch poradovníka - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Ak je zaškrtnuté, súbor .torrent sa neodstráni bez ohľadu na nastavenia na stránke „Stiahnuť“ v dialógovom okne Možnosti - + Content layout: Rozloženie obsahu: - + Original Originál - + Create subfolder Vytvoriť podpriečinok - + Don't create subfolder Nevytvárať podpriečinok - + Info hash v1: Info hash v1: - + Size: Veľkosť: - + Comment: Komentár: - + Date: Dátum: @@ -324,245 +334,182 @@ Zapamätať si poslednú použitú cestu - + Do not delete .torrent file Nevymazať súbor .torrent - + Download in sequential order Stiahnuť v sekvenčnom poradí - + Download first and last pieces first Najprv si stiahnite prvé a posledné časti - + Info hash v2: Info hash v2: - + Select All Vybrať všetky - + Select None Nevybrať nič - + Save as .torrent file... Uložiť ako .torrent súbor... - + I/O Error Chyba I/O - Invalid torrent - Neplatný torrent - - - + Not Available This comment is unavailable Nie je k dispozícii - + Not Available This date is unavailable Nie je k dispozícii - + Not available Nie je k dispozícii - Invalid magnet link - Neplatný magnet link - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Nepodarilo sa načítať torrent: %1. -Chyba: %2 - - - This magnet link was not recognized - Tento magnet link nebol rozpoznaný - - - + Magnet link Magnet link - + Retrieving metadata... Získavajú sa metadáta... - - + + Choose save path Vyberte cestu pre uloženie - Torrent is already present - Torrent už je pridaný - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' už existuje v zozname pre stiahnutie. Trackery neboli zlúčené, pretože je torrent súkromný. - - - Torrent is already queued for processing. - Torrent je už zaradený do fronty na spracovanie. - - - + No stop condition is set. Žiadna podmienka pre zastavenie nie je nastavená. - + Torrent will stop after metadata is received. Torrent sa zastaví po obdržaní metadát. - - Torrents that have metadata initially aren't affected. - Torrenty, ktoré majú iniciálne metadáta, nie sú ovplyvnené. - - - + Torrent will stop after files are initially checked. Torrent sa zastaví po iniciálnej kontrole súborov. - + This will also download metadata if it wasn't there initially. Toto nastavenie taktiež stiahne metadáta, ak nie sú iniciálne prítomné. - - + + N/A nie je k dispozícií - Magnet link is already queued for processing. - Magnet link je už zaradený do fronty na spracovanie. - - - + %1 (Free space on disk: %2) %1 (Volné miesto na disku: %2) - + Not available This size is unavailable. Nie je k dispozícii - + Torrent file (*%1) Torrent súbor (*%1) - + Save as torrent file Uložiť ako .torrent súbor - + Couldn't export torrent metadata file '%1'. Reason: %2. Nebolo možné exportovať súbor '%1' metadáta torrentu. Dôvod: %2. - + Cannot create v2 torrent until its data is fully downloaded. Nie je možné vytvoriť v2 torrent, kým nie sú jeho dáta úplne stiahnuté. - Cannot download '%1': %2 - Nie je možné stiahnuť '%1': %2 - - - + Filter files... Filtruj súbory... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' už existuje v zozname pre stiahnutie. Trackery nemôžu byť zlúčené, pretože je torrent súkromný. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' už existuje v zozname pre stiahnutie. Prajete si zlúčiť trackery z nového zdroja? - - - + Parsing metadata... Spracovávajú sa metadáta... - + Metadata retrieval complete Získavanie metadát dokončené - - Failed to load from URL: %1. -Error: %2 - Zlyhalo načítanie z URL: %1. -Chyba: %2 - - - Download Error - Chyba pri sťahovaní - AddTorrentManager Downloading torrent... Source: "%1" - + Torrent sa sťahuje... Zdroj: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Nepodarilo sa pridať torrent. Zdroj: "%1". Dôvod: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Bol zistený pokus o pridanie duplicitného torrentu. Zdroj: %1. Exitujúci torrent: %2. Výsledok: %3 - + Merging of trackers is disabled - + Zlúčenie trackerov nie je povolené - + Trackers cannot be merged because it is a private torrent - + Trackery nemožno zlúčiť, pretože je to súkromný torrent - + Trackers are merged from new source - + Trackery sú zlúčené z nového zdroja @@ -590,7 +537,7 @@ Chyba: %2 Note: the current defaults are displayed for reference. - + Poznámka: aktuálne predvolené hodnoty sú zobrazené ako ako referencia @@ -605,17 +552,17 @@ Chyba: %2 Tags: - + Značky: Click [...] button to add/remove tags. - + Kliknite na tlačidlo [...] pre pridanie/odstránenie značiek. Add/remove tags - + Pridať/Odstrániť značky @@ -625,7 +572,7 @@ Chyba: %2 Start torrent: - + Spustiť torrent: @@ -640,7 +587,7 @@ Chyba: %2 Add to top of queue: - + Pridať navrch poradovníka: @@ -648,72 +595,77 @@ Chyba: %2 Preskočiť kontrolu hash - - - Choose save path - Zvoľte cieľový adresár + + Torrent share limits + Obmedzenia zdieľania torrentu - - - - - - - Default - Predvolený + + + Choose save path + Zvoľte cieľový adresár + + + - Yes - Áno + Default + Predvolený + Yes + Áno + + + + + No Nie - + Manual Manuálny - + Automatic Automatický - + Original Pôvodné - + Create subfolder Vytvoriť podpriečinok - + Don't create subfolder Nevytvárať podpriečinok - + None Žiadna - + Metadata received Metadáta obdržané - + Files checked Súbory skontrolované @@ -721,734 +673,852 @@ Chyba: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Znovu skontrolovať torrenty po dokončení - - + + ms milliseconds ms - + Setting Nastavenie - + Value Value set for this setting Hodnota - + (disabled) (vypnuté) - + (auto) (auto) - + + min minutes min - + All addresses Všetky adresy - + qBittorrent Section Sekcia qBittorent - - + + Open documentation Otvoriť dokumentáciu - + All IPv4 addresses Všetky adresy IPv4 - + All IPv6 addresses Všetky adresy IPv6 - + libtorrent Section Sekcia libtorrent - + Fastresume files Súbory rýchleho obnovenia - + SQLite database (experimental) SQLite databáza (experimentálne) - + Resume data storage type (requires restart) Obnoviť typ úložiska dát (vyžadovaný reštart) - + Normal Normálne - + Below normal Pod normálom - + Medium Stredná - + Low Malá - + Very low Veľmi malé - - Process memory priority (Windows >= 8 only) - Priorita pamäti procesu (iba Windows >= 8) - - - + Physical memory (RAM) usage limit Limit využitia fyzickej pamäti (RAM) - + Asynchronous I/O threads Asynchrónne I/O vlákna - + Hashing threads Hašovacie vlákna - + File pool size Veľkosť súborového zásobníku - + Outstanding memory when checking torrents Mimoriadna pamäť pri kontrole torrentov - + Disk cache Disková vyrovnávacia pamäť - - - - + + + + s seconds s - + Disk cache expiry interval Interval vypršania platnosti diskovej vyrovnávacej pamäte - + Disk queue size Veľkosť diskovej fronty - - + + Enable OS cache Zapnúť vyrovnávaciu pamäť systému - + Coalesce reads & writes Zlúčenie zapisovacích & čítacích operácií - + Use piece extent affinity Použite afinitu k dielikovému rozsahu - + Send upload piece suggestions Doporučenie pre odosielanie častí uploadu - - - - + + + + + 0 (disabled) - + 0 (vypnuté) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Interval ukladania dát obnovenia [0: vypnuté] - + Outgoing ports (Min) [0: disabled] - + Odchádzajúce porty (Min) [0: vypnuté] - + Outgoing ports (Max) [0: disabled] - + Odchádzajúce porty (Max) [0: vypnuté] - + 0 (permanent lease) - + 0 (trvalé prepožičanie) - + UPnP lease duration [0: permanent lease] - + Doba UPnP prepožičania [0: trvalé prepožičanie] - + Stop tracker timeout [0: disabled] - + Časový limit pre zastavenie trackera [0: vypnutý] - + Notification timeout [0: infinite, -1: system default] - + Časový limit oznámenia [0: nekonečno, -1: predvolený systémom] - + Maximum outstanding requests to a single peer Maximum nespracovaných požiadaviek na jedeného peera - - - - - + + + + + KiB KiB - + (infinite) - + (nekonečno) - + (system default) + (predvolený systémom) + + + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode - + This option is less effective on Linux Táto voľba je na Linuxe menej efektívna - + + Process memory priority + Priorita pamäti procesu + + + Bdecode depth limit - + Bdecode obmedzenie hĺbky - + Bdecode token limit - + Bdecode obmedzenie tokenu - + Default Predvolený - + Memory mapped files Súbory namapované v pamäti - + POSIX-compliant POSIX-vyhovujúci - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk IO typ (vyžaduje reštart) - - + + Disable OS cache Vypnúť vyrovnávaciu pamäť operačného systému - + Disk IO read mode Režim IO čítania disku - + Write-through Prepisovanie - + Disk IO write mode Režim IO zapisovania disku - + Send buffer watermark Odoslať watermark bufferu - + Send buffer low watermark Odoslať buffer-low watermark - + Send buffer watermark factor Odoslať buffer watermark faktor - + Outgoing connections per second Odchádzajúce pripojenia za sekundu - - + + 0 (system default) - + 0 (predvolený systémom) - + Socket send buffer size [0: system default] - + Veľkosť send bufferu pre socket [0: predvolený systémom] - + Socket receive buffer size [0: system default] - + Veľkosť receive bufferu pre socket [0: predvolený systémom] - + Socket backlog size Velikost nevykonaného soketu - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + Limit veľkosti .torrent súboru + + + Type of service (ToS) for connections to peers Typ služby (ToS) pre pripojenie k rovesníkom - + Prefer TCP Uprednostniť TCP - + Peer proportional (throttles TCP) Peer proportional (obmedziť TCP) - + Support internationalized domain name (IDN) Podporovať domény obsahujúce špeciálne znaky (IDN) - + Allow multiple connections from the same IP address Povoliť viacej spojení z rovnakej IP adresy - + Validate HTTPS tracker certificates Overovať HTTPS cerifikáty trackerov - + Server-side request forgery (SSRF) mitigation Zamedzenie falšovania požiadaviek na strane servera (SSRF) - + Disallow connection to peers on privileged ports Nepovoliť pripojenie k peerom na privilegovaných portoch - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates Riadi interval aktualizácie vnútorného stavu, ktorý zase ovplyvní aktualizácie používateľského rozhrania - + Refresh interval Interval obnovenia - + Resolve peer host names Zisťovať sieťové názvy peerov - + IP address reported to trackers (requires restart) IP adresa nahlásená trackerom (vyžaduje reštart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Znovu oznámiť všetkým trackerom pri zmene IP alebo portu - + Enable icons in menus Povoliť ikony v menu - + Enable port forwarding for embedded tracker + Zapnúť presmerovanie portu na vstavaný tracker + + + + Enable quarantine for downloaded files + Zapnúť karanténu pre stiahnuté súbory + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Zapnúť Mark-of-the-Web (MOTW) pre stiahnuté súbory + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - - (Auto detect if empty) + + Ignore SSL errors - + + (Auto detect if empty) + (Automaticky zistiť, ak je prázdne) + + + Python executable path (may require restart) + Cesta k binárke Pythonu (môže vyžadovať reštart): + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Potvrdiť odstránenie trackeru zo všetkých torrentov + + + Peer turnover disconnect percentage Percento odpojenia pri peer turnover - + Peer turnover threshold percentage Percento limitu pre peer turnover - + Peer turnover disconnect interval Interval odpojenia pri peer turnover - + Resets to default if empty - + Vráti pôvodné, ak je prázdne - + DHT bootstrap nodes - + DHT bootstrap uzly - + I2P inbound quantity - + I2P prichádzajúce množstvo - + I2P outbound quantity - + I2P odchádzajúce množstvo - + I2P inbound length - + I2P prichádzajúca dĺžka - + I2P outbound length - + I2P odchádzajúca dĺžka - + Display notifications Zobrazovať hlásenia - + Display notifications for added torrents Zobrazovať hlásenia pre pridané torrenty - + Download tracker's favicon Stiahnuť logo trackera - + Save path history length Uložiť dĺžku histórie cesty - + Enable speed graphs Zapnúť graf rýchlosti - + Fixed slots Pevné sloty - + Upload rate based Podľa rýchlosti uploadu - + Upload slots behavior Chovanie upload slotov - + Round-robin Pomerné rozdelenie - + Fastest upload Najrýchlejší upload - + Anti-leech Priorita pre začínajúcich a končiacich leecherov - + Upload choking algorithm Škrtiaci algoritmus pre upload - + Confirm torrent recheck Potvrdenie opätovnej kontroly torrentu - + Confirm removal of all tags Potvrdiť odobranie všetkých značiek - + Always announce to all trackers in a tier Vždy oznamovať všetkým trackerom v triede - + Always announce to all tiers Vždy oznamovať všetkým triedam - + Any interface i.e. Any network interface Akékoľvek rozhranie - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP mixed mode algoritmus - + Resolve peer countries Zisťovať krajinu pôvodu peerov - + Network interface Sieťové rozhranie - + Optional IP address to bind to Voliteľná pridružená IP adresa - + Max concurrent HTTP announces Maximum súbežných HTTP oznámení - + Enable embedded tracker Zapnúť zabudovaný tracker - + Embedded tracker port Port zabudovaného trackera - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 bol spustený + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Spustené v portable režime. Automaticky detekovaný priečinok s profilom: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Detekovaný nadbytočný parameter príkazového riadku: "%1". Portable režim už zahŕna relatívny fastresume. - + Using config directory: %1 Používa sa adresár s konfiguráciou: %1 - + Torrent name: %1 Názov torrentu: %1 - + Torrent size: %1 Veľkosť torrentu: %1 - + Save path: %1 Uložiť do: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent bol stiahnutý za %1. - + + Thank you for using qBittorrent. Ďakujeme, že používate qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, posielanie oznámenia emailom - + Add torrent failed - + Nepodarilo sa pridať torrent - + Couldn't add torrent '%1', reason: %2. - + Nepodarilo sa pridať torrent '%1', dôvod: %2. + + + + The WebUI administrator username is: %1 + Používateľské meno administrátora WebUI rozhrania: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Heslo administrátora WebUI rozhrania nebolo nastavené. Dočasné heslo pre túto reláciu je: %1 + + + + You should set your own password in program preferences. + Mali by ste si nastaviť vlastné heslo vo voľbách programu. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI je vypnuté. Pre zapnutie WebUI upravte konfiguračný súbor ručne. - + Running external program. Torrent: "%1". Command: `%2` Spúšťanie externého programu. Torrent: "%1". Príkaz: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Nepodarilo sa spustiť externý program. Torrent: "%1". Príkaz: `%2` - + Torrent "%1" has finished downloading - + Sťahovanie torrentu "%1" bolo dokončené - + WebUI will be started shortly after internal preparations. Please wait... WebUI bude zapnuté chvíľu po vnútorných prípravách. Počkajte prosím... - - + + Loading torrents... Načítavanie torrentov... - + E&xit Ukončiť - + I/O Error i.e: Input/Output Error I/O chyba - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1527,110 @@ Chyba: %2 Dôvod: %2 - Error - Chyba - - - Failed to add torrent: %1 - Nepodarilo sa pridať torrent: %1 - - - + Torrent added Torrent pridaný - + '%1' was added. e.g: xxx.avi was added. '%1' bol pridaný. - + Download completed Sťahovanie dokončené - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' bol stiahnutý. - - - URL download error - Chyba sťahovania z URL + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 sa sputil. ID procesu: %2 - Couldn't download file at URL '%1', reason: %2. - Nepodarilo sa stiahnuť súbor z URL: '%1', dôvod: %2. + + This is a test email. + - Torrent file association - Asociácia torrent súboru + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent nie je predvolená aplikácia na otváranie torrent súborov alebo Magnet odkazov. -Chcete qBittorrent nastaviť ako predvolenú aplikáciu? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' bol stiahnutý. - + Information Informácia - + To fix the error, you may need to edit the config file manually. - + Pre opravenie chyby budete pravdepodobne musieť upraviť konfiguračný súbor ručne. - + To control qBittorrent, access the WebUI at: %1 Pre ovládanie qBittorrentu prejdite na WebUI: %1 - - The Web UI administrator username is: %1 - Používateľské meno správcu webového rozhrania je: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Predvolené heslo správcu webového používateľského rozhrania sa nezmenilo: %1 - - - - This is a security risk, please change your password in program preferences. - Toto je bezpečnostné riziko, zmeňte si heslo v nastaveniach programu. - - - Application failed to start. - Aplikácia zlyhala pri štarte. - - - + Exit Ukončiť - + Recursive download confirmation - Potvrdenie rekurzívneho sťahovania + Potvrdenie rekurzívneho sťahovania - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Torrent '%1' obsahuje .torrent súbory, chcete ich tiež stiahnúť? - + Never - Nikdy + Nikdy - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Rekurzívne stiahnutie .torrent súboru vrámci torrentu. Zdrojový torrent: "%1". Súbor: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Nepodarilo sa nastaviť limit využitia fyzickej pamäte (RAM). Kód chyby: %1. Správa chyby: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Nepodarilo sa nastaviť pevný limit využitia fyzickej pamäte (RAM). Požadovaná veľkosť: %1. Pevný limit systému: %2. Kód chyby: %3. Správa chyby: "%4" - + qBittorrent termination initiated - + Ukončenie qBittorrentu bolo zahájené - + qBittorrent is shutting down... qBittorrent sa vypína... - + Saving torrent progress... Ukladá sa priebeh torrentu... - + qBittorrent is now ready to exit qBittorrent je pripravený na ukončenie @@ -1597,7 +1638,7 @@ Chcete qBittorrent nastaviť ako predvolenú aplikáciu? AsyncFileStorage - + Could not create directory '%1'. Nepodarilo sa vytvoriť adresár '%1'. @@ -1605,22 +1646,22 @@ Chcete qBittorrent nastaviť ako predvolenú aplikáciu? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI neúspešné prihlásenie. Dôvod: IP je zakázaná, IP: %1, užívateľ: %2 - + Your IP address has been banned after too many failed authentication attempts. Vaša IP adresa bola zakázaná kvôli príliš veľkému počtu neúspešných pokusov o prihlásenie. - + WebAPI login success. IP: %1 WebAPI úspešné prihlásenie. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI neúspešné prihlásenie. Dôvod: neplatné údaje, počet pokusov: %1, IP: %2, užívateľ: %3 @@ -1660,20 +1701,20 @@ Chcete qBittorrent nastaviť ako predvolenú aplikáciu? Rename selected rule. You can also use the F2 hotkey to rename. - + Premenovať vybrané pravidlo. Pre premenovanie môžete tiež použiť kláves F2. Priority: - + Priorita: - + Must Not Contain: Nesmie obsahovať: - + Episode Filter: Filter epizód: @@ -1726,263 +1767,263 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty &Exportovať... - + Matches articles based on episode filter. Nájde články podľa filtra epizód. - + Example: Príklad: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match nájde epizódy 2, 5, 8 až 15, 30 a všetky nasledujúce z prvej sezóny - + Episode filter rules: Pravidlá pre filtrovanie epizód: - + Season number is a mandatory non-zero value Číslo sezóny je povinná, nenulová hodnota - + Filter must end with semicolon Filter musí končiť bodkočiarkou - + Three range types for episodes are supported: Tri druhy rozsahov pre epizódy sú podporované: - + Single number: <b>1x25;</b> matches episode 25 of season one Jedno číslo: <b>1x25;</b> zodpovedá epizóde 25 prvej sezóny - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normálny rozsah: <b>1x25-40;</b> zodpovedá epizódam 25 až 40 prvej sezóny - + Episode number is a mandatory positive value Číslo epizódy je povinná pozitívna hodnota - + Rules Pravidlá - + Rules (legacy) Pravidlá (pôvodné) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Neohraničený rozsah: <b>1x25-;</b> zodpovedá epizóde 25 a všetkým nasledujúcim z prvej sezóny a všetkým nasledujúcim - + Last Match: %1 days ago Naposledy nájdené: pred %1 dňami - + Last Match: Unknown Naposledy nájdené: neznáme - + New rule name Nový názov pravidla - + Please type the name of the new download rule. Prosím, napíšte nový názov pre tonto pravidlo sťahovania. - - + + Rule name conflict Konflikt v názvoch pravidel - - + + A rule with this name already exists, please choose another name. Pravidlo s týmto názvom už existuje. Prosím, zvoľte iný názov. - + Are you sure you want to remove the download rule named '%1'? Ste si istý, že chcete odstrániť pravidlo sťahovania s názvom '%1'? - + Are you sure you want to remove the selected download rules? Ste si istý, že chcete odstrániť vybrané pravidlá sťahovania? - + Rule deletion confirmation Potvrdenie zmazania pravidla - + Invalid action Neplatná operácia - + The list is empty, there is nothing to export. Zoznam je prázdny, niet čo exportovať. - + Export RSS rules Export RSS pravidiel - + I/O Error I/O chyba - + Failed to create the destination file. Reason: %1 Nepodarilo sa vytvoriť cieľový súbor. Dôvod: %1 - + Import RSS rules Import RSS pravidiel - + Failed to import the selected rules file. Reason: %1 Nepodarilo sa importovať vybraný súbor pravidiel. Dôvod: %1 - + Add new rule... Pridať nové pravidlo... - + Delete rule Zmazať pravidlo - + Rename rule... Premenovať pravidlo... - + Delete selected rules Zmazať vybrané pravidlá - + Clear downloaded episodes... Odstrániť stiahnuté epizódy... - + Rule renaming Premenovanie pravidiel - + Please type the new rule name Prosím, napíšte názov nového pravidla - + Clear downloaded episodes Odstrániť stiahnuté epizódy - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Naozaj chcete vymazať zoznam stiahnutých epizód pre vybrané pravidlo? - + Regex mode: use Perl-compatible regular expressions Regex mód: použite regulárny výraz komatibilní s Perlom - - + + Position %1: %2 Pozícia %1: %2 - + Wildcard mode: you can use Mód zástupných znakov: môžete použiť - - + + Import error - + Chyba importu - + Failed to read the file. %1 - + Nepodarilo sa čítať zo súboru. %1 - + ? to match any single character ? pre zhodu s ľubovoľným jediným znakom - + * to match zero or more of any characters * pre zhodu so žiadnym alebo viac s akýmikoľvek znakmi - + Whitespaces count as AND operators (all words, any order) Medzera slúži ako operátor AND (všetky slová v akomkoľvek poradí) - + | is used as OR operator | slúži ako operátor OR - + If word order is important use * instead of whitespace. Ak je dôležité poradie slov, použite * namiesto medzery. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Výraz s prázdnym %1 obsahom (napr. %2) - + will match all articles. zahrnie všetky položky. - + will exclude all articles. vylúči všetky položky @@ -2024,53 +2065,58 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Nie je možné vytvoriť zložku pre obnovenie torrentu: "% 1" - + Cannot parse resume data: invalid format Nedajú sa spracovať dáta pre obnovenie: neplatný formát - - + + Cannot parse torrent info: %1 Nedajú sa spracovať informácie torrentu: %1 - + Cannot parse torrent info: invalid format Nedajú sa spracovať informácie torrentu: neplatný formát - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Metadáta torrentu sa nepodarilo uložiť do '%1'. Chyba: %2 - + Couldn't save torrent resume data to '%1'. Error: %2. - + Nepodarilo sa uložiť dáta obnovenia torrentu do '%1'. Chyba: %2. - + Couldn't load torrents queue: %1 Nepodarilo sa načítať poradovník torrentov: %1 - + Cannot parse resume data: %1 Nepodarilo sa spracovať dáta pre obnovenie: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Dáta pre pokračovanie sú neplatné: neboli nájdené ani metadáta ani info-hash - + Couldn't save data to '%1'. Error: %2 Nebolo možné uložiť dáta do '%1'. Chyba: %2 @@ -2078,626 +2124,684 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty BitTorrent::DBResumeDataStorage - + Not found. Nenájdené. - + Couldn't load resume data of torrent '%1'. Error: %2 - + Nepodarilo sa načítať dáta pre pokračovanie torrentu '%1'. Chyba: %2 - - + + Database is corrupted. Databáza je poškodená. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Nepodarilo sa zapnúť žurnálovací režim Write-Ahead Logging (WAL). Chyba: %1. - + Couldn't obtain query result. - + Nebolo možné získať výsledok dopytu. - + WAL mode is probably unsupported due to filesystem limitations. - + WAL režim nie je pravdepodobne podporovaný pre obmedzenia súborového systému - + Couldn't begin transaction. Error: %1 - + Nebolo možné začať transakciu. Chyba: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Nepodarilo sa uložiť metadáta torrentu. Chyba: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Nepodarilo sa uložiť dáta obnovenia torrentu: '%1'. Chyba: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Nepodarilo sa zmazať dáta obnovenia torrentu '%1'. Chyba: %2 - + Couldn't store torrents queue positions. Error: %1 - + Nepodarilo sa uložiť umiestnenie torrentov v poradovníku. Chyby: %1 BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - - - - + Podpora pre Distributed Hash Table (DHT): %1 + + + + + + + + + + + ON Zapnuté - - - - - - - - - + + + + + + + + + OFF Vypnuté - - + + Local Peer Discovery support: %1 podpora Local Peer Discovery: %1 - + Restart is required to toggle Peer Exchange (PeX) support Pre zmenu podpory Peer Exchange (PeX) je potrebný reštart - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - + Nepodarilo sa obnoviť torrent: Torrent "%1". Dôvod: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Nepodarilo sa obnoviť torrent: zistené nekonzistentné ID torrentu. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Zistené nekonzistentné dáta: v konfiguračnom súbore chýba kategória. Kategória sa obnoví, ale jej nastavenia budú zresetované na pôvodné. Torrent: "%1". Kategória: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Zistené nekonzistentné dáta: neplatná kategória. Torrent: "%1". Kategória: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Zistený nesúlad medzi cestou uloženia pre obnovenú kategóriu a súčasnou cestou uloženia torrentu. Torrent je teraz prepnutý do Manuálneho režimu. Torrent: "%1". Kategória: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Zistené nekonzistentné dáta: v konfiguračnom súbore chýba značka. Značka sa obnoví. Torrent: "%1". Značka: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + Zistené nekonzistentné dáta: neplatná značka. Torrent: "%1". Značka: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Zistená udalosť systémového prebudenia. Oznámenie všetkým trackerom... - + Peer ID: "%1" - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Podpora Peer Exchange (PeX): %1 - - + + Anonymous mode: %1 Anonymný režim: %1 - - + + Encryption support: %1 Podpora šifrovania: %1 - - + + FORCED Vynútené - + Could not find GUID of network interface. Interface: "%1" - + Nepodarilo sa nájsť GUID sieťového rozhrania. Rozhranie: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Pokúšam sa počúvať na následujúcom zozname IP adries: "%1" - + Torrent reached the share ratio limit. Torrent dosiahol limit pomeru zdieľania. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - + Torrent odstránený. - - - Removed torrent and deleted its content. - + Torrent odstránený spolu s jeho obsahom. - - - Torrent paused. - Torrent pozastavený. + Torrent pozastavený. - - - + Super seeding enabled. Režim super seedovania je zapnutý. - + Torrent reached the seeding time limit. Torrent dosiahol limit času zdieľania. - + Torrent reached the inactive seeding time limit. - + Torrent dosiahol časový limit neaktívneho seedovania - + Failed to load torrent. Reason: "%1" - + Nepodarilo sa načítať torrent. Dôvod: "%1" - + I2P error. Message: "%1". + I2P chyba. Správa: "%1". + + + + UPnP/NAT-PMP support: ON + podpora UPnP/NAT-PMP: ZAPNUTÁ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Sťahovanie torrentu, počkajte prosím... Zdroj: "%1" + + BitTorrent session successfully finished. + - - UPnP/NAT-PMP support: ON - podpora UPnP/NAT-PMP: ZAPNUTÁ + + Session shutdown timed out. + - - UPnP/NAT-PMP support: OFF - podpora UPnP/NAT-PMP: VYPNUTÁ + + Removing torrent. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + Removing torrent and deleting its content. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 - System network status changed to %1 - e.g: System network status changed to ONLINE - Stav siete systému sa zmenil na %1 + + Merging of trackers is disabled + Zlúčenie trackerov nie je povolené + + + + Trackers cannot be merged because it is a private torrent + Trackery nemožno zlúčiť, pretože je to súkromný torrent + + + + Trackers are merged from new source + Trackery sú zlúčené z nového zdroja - ONLINE - ONLINE + + UPnP/NAT-PMP support: OFF + podpora UPnP/NAT-PMP: VYPNUTÁ - OFFLINE - OFFLINE + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Nepodarilo sa exportovať torrent. Torrent: "%1". Cieľ: "%2". Dôvod: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Konfigurácia siete %1 sa zmenila, obnovuje sa väzba relácie + + Aborted saving resume data. Number of outstanding torrents: %1 + Ukladanie dát obnovenia bolo zrušené. Počet zostávajúcich torrentov: %1 - + The configured network address is invalid. Address: "%1" - + Nastavená sieťová adresa je neplatná. Adresa: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + Nepodarilo sa nájsť nastavenú sieťovú adresu pre počúvanie. Adresa: "%1" - + The configured network interface is invalid. Interface: "%1" + Nastavené sieťové rozhranie je neplatné. Rozhranie: "%1" + + + + Tracker list updated - - Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + + Failed to update tracker list. Reason: "%1" - + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + Odmietnutá neplatná IP adresa pri použití zoznamu blokovaných IP adries. IP: "%1" + + + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Tracker pridaný do torrentu. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Tracker odstránený z torrentu. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + URL seed pridaný do torrentu. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" + URL seed odstránený z torrentu. Torrent: "%1". URL: "%2" + + + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - Torrent paused. Torrent: "%1" - + Torrent pozastavený. Torrent: "%1" - + Torrent resumed. Torrent: "%1" - + Torrent bol obnovený: Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Sťahovanie torrentu dokončené. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" + Presunutie torrentu zrušené. Torrent: "%1". Zdroj: "%2". Cieľ: "%3" + + + + Torrent stopped. Torrent: "%1" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Nepodarilo sa zaradiť presunutie torrentu. Torrent: "%1". Zdroj: "%2". Cieľ: "%3". Dôvod: torrent sa práve presúva do cieľa - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Nepodarilo sa zaradiť presunutie torrentu. Torrent: "%1". Zdroj: "%2". Cieľ: "%3". Dôvod: obe cesty ukazujú na rovnaké umiestnenie - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Presunutie torrentu zaradené do frontu. Torrent: "%1". Zdroj: "%2". Cieľ: "%3". - + Start moving torrent. Torrent: "%1". Destination: "%2" Začiatok presunu torrentu. Torrent: "%1". Cieľ: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Nepodarilo sa uložiť konfiguráciu kategórií. Súbor: "%1". Chyba: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Nepodarilo sa spracovať konfiguráciu kategórií. Súbor: "%1". Chyba: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Úspešne spracovaný súbor IP filtra. Počet použitých pravidiel: %1 - + Failed to parse the IP filter file - + Nepodarilo sa spracovať súbor IP filtra - + Restored torrent. Torrent: "%1" - + Torrent obnovený. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Nový torrent pridaný. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - + Torrent skončil s chybou. Torrent: "%1". Chyba: "%2" - - Removed torrent. Torrent: "%1" - + Torrent odstránený. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" + Torrent odstránený spolu s jeho obsahom. Torrent: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + Varovanie o chybe súboru. Torrent: "%1". Súbor: "%2". Dôvod: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP mapovanie portu zlyhalo. Správa: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + UPnP/NAT-PMP mapovanie portu bolo úspešné. Správa: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + filtrovaný port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). + privilegovaný port (%1) + + + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + BitTorrent session encountered a serious error. Reason: "%1" - + BitTorrent relácia narazila na vážnu chybu. Dôvod: "%1 - + SOCKS5 proxy error. Address: %1. Message: "%2". - + SOCKS5 proxy chyba. Adresa: %1. Správa: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + %1 obmedzení zmiešaného režimu - + Failed to load Categories. %1 - + Nepodarilo sa načítať Kategórie. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Nepodarilo sa načítať konfiguráciu kategórií: Súbor: "%1". Chyba: "Neplatný formát dát" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Torrent odstránený, ale nepodarilo sa odstrániť jeho obsah a/alebo jeho part súbor. Torrent: "%1". Chyba: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 je vypnuté - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - + %1 je vypnuté - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + URL seed DNS hľadanie zlyhalo. Torrent: "%1". URL: "%2". Chyba: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Obdržaná chybová správa od URL seedu. Torrent: "%1". URL: "%2". Správa: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Úspešne sa počúva na IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Zlyhalo počúvanie na IP. IP: "%1". Port: "%2/%3". Dôvod: "%4" - + Detected external IP. IP: "%1" - + Zistená externá IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Chyba: Vnútorný front varovaní je plný a varovania sú vynechávané, môžete spozorovať znížený výkon. Typ vynechaného varovania: "%1". Správa: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Torrent bol úspešne presuný. Torrent: "%1". Cieľ: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - + Nepodarilo sa presunúť torrent. Torrent: "%1". Zdroj: "%2". Cieľ: "%3". Dôvod: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operácia prerušená - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Vytvorenie nového torrentu zlyhalo. Dôvod: %1. + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operácia prerušená + Operácia prerušená + + Create new torrent file failed. Reason: %1. - Vytvorenie nového torrentu zlyhalo. Dôvod: %1. + Vytvorenie nového torrentu zlyhalo. Dôvod: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Nepodarilo sa pridať peer "%1" k torrentu "%2". Dôvod: %3 - + Peer "%1" is added to torrent "%2" Peer "%1" je pridaný do torrentu "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Boli zistené neočakávané dáta. Torrent: %1. Dáta: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Nepodarilo sa zapisovať do súboru: Dôvod "%1". Torrent je teraz v režime "iba upload". - + Download first and last piece first: %1, torrent: '%2' Stiahnuť najprv prvú a poslednú časť: %1, torrentu: '%2' - + On Zapnuté - + Off Vypnuté - - Generate resume data failed. Torrent: "%1". Reason: "%2" + + Failed to reload torrent. Torrent: %1. Reason: %2 - + + Generate resume data failed. Torrent: "%1". Reason: "%2" + Generovanie dát pre obnovenie zlyhalo. Torrent: %1. Dôvod: "%2" + + + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Nepodarilo sa obnoviť torrent. Súbory boli pravdepodobne presunuté alebo úložisko nie je dostupné. Torrent: "%1". Dôvod: "%2" - + Missing metadata Chýbajúce metadáta - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Premenovanie súboru zlyhalo. Torrent: "%1", súbor: "%2", dôvod: "%3" - + Performance alert: %1. More info: %2 - + Varovanie výkonu: %1. Viac informácií: %2 @@ -2716,184 +2820,198 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' musia dodržiavať syntax '%1 =%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' musia dodržiavať syntax '%1 =%2' - + Expected integer number in environment variable '%1', but got '%2' V premennej je predpokladané celé číslo '%1', ale doručených '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' musia dodržiavať syntax '%1 =%2' + Parameter '%1' musia dodržiavať syntax '%1 =%2' - + Expected %1 in environment variable '%2', but got '%3' Očakával %1 v premennej prostredia '%2', ale dostal '%3' - - + + %1 must specify a valid port (1 to 65535). %1 musí určovať správny port (1 to 65535). - + Usage: Použitie: - + [options] [(<filename> | <url>)...] - + [voľby] [(<filename> | <url>)...] - + Options: Voľby: - + Display program version and exit Zobraz verziu programu a skonči - + Display this help message and exit Zobraz túto nápovedu a skonči - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' musia dodržiavať syntax '%1 =%2' + + + + Confirm the legal notice + + + + + port port - - Change the Web UI port - Zmeň port webového rozhrania + + Change the WebUI port + Zmeniť WebUI port. - + Change the torrenting port - + Zmeniť torrentový port - + Disable splash screen vypni štartovaciu obrazovku - + Run in daemon-mode (background) spusti v režime démona (na pozadí) - + dir Use appropriate short form or abbreviation of "directory" adr - + Store configuration files in <dir> Uložiť súbory konfigurácie do <dir> - - + + name meno - + Store configuration files in directories qBittorrent_<name> Uložiť súbory konfigurácie v adresároch qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Vniknúť do súborov libtorrent fastresume a vztiahnuť cesty k súborom podľa adresára profilu - + files or URLs súbory alebo URL adresy - + Download the torrents passed by the user Stiahni torrenty zadané užívateľom - + Options when adding new torrents: Voľby pri pridávaní torrentu - + path cesta - + Torrent save path Cesta uloženia torrentu - - Add torrents as started or paused - Pridať torrenty ako spustené alebo pozastavené + + Add torrents as running or stopped + - + Add torrents as started or paused + Pridať torrenty ako spustené alebo pozastavené + + + Skip hash check Preskočiť kontrolu hash - + Assign torrents to category. If the category doesn't exist, it will be created. Priraďte torrenty do kategórie. Ak kategória neexistuje, vytvorí sa. - + Download files in sequential order Sťahovať súbory v poradí - + Download first and last pieces first Sťahovať najprv prvú a poslednú časť - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Určiť, či sa otvorí dialóg "Pridať nový torrent" keď je torrent pridávaný. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Možné hodnoty sa môžu dodávať prostredníctvom premenných prostredia. Pri možnosti s názvom "parameter-name" je názov premennej prostredia "QBT_PARAMETER_NAME" (vo veľkom prípade "-" nahradený znakom "_"). Ak chcete prejsť hodnoty vlajok, nastavte premennú na hodnotu "1" alebo "TRUE". Ak napríklad chcete zakázať úvodnú obrazovku: - + Command line parameters take precedence over environment variables Parametre príkazového riadka majú prednosť pred parametrami premenných prostredia - + Help Nápoveda @@ -2901,17 +3019,17 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty CategoryFilterModel - + Categories Kategórie - + All Všetky - + Uncategorized Bez kategórie @@ -2945,13 +3063,21 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty - Resume torrents - Obnoviť torrenty + Start torrents + + Stop torrents + + + + Resume torrents + Obnoviť torrenty + + Pause torrents - Pozastaviť torrenty + Pozastaviť torrenty @@ -2962,15 +3088,20 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty ColorWidget - + Edit... - + Upraviť... - + Reset Vrátiť pôvodné + + + System + + CookiesDialog @@ -3011,22 +3142,22 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Nepodarilo sa načítať vlastný štýl motívu: %1 - + Failed to load custom theme colors. %1 - + Nepodarilo sa načítať farby vlastného motívu: %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Nepodarilo sa načítať farby východzieho motívu. %1 @@ -3043,23 +3174,27 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty + Also remove the content files + + + Also permanently delete the files - Odstrániť aj súbory natrvalo + Odstrániť aj súbory natrvalo - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Naozaj chcete odstrániť '%1' zo zoznamu prenosov? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Naozaj chcete odstrániť týchto '%1' torrentov zo zoznamu prenosov? - + Remove Odstrániť @@ -3072,12 +3207,12 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty Stiahnuť z viacerých URL - + Add torrent links Pridať odkazy na torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Jeden odkaz na riadok (sú podporované odkazy HTTP, Magnet aj info-hash) @@ -3087,12 +3222,12 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty Stiahnuť - + No URL entered Nebola zadaná URL - + Please type at least one URL. Prosím, napíšte aspoň jednu URL. @@ -3251,64 +3386,91 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty Chyba syntaxe: Súbor filtra nie je platný PeerGuardian P2B súbor. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Torrent sa sťahuje... Zdroj: "%1" - Trackers cannot be merged because it is a private torrent - + Trackery nemožno zlúčiť, pretože je to súkromný torrent - + Torrent is already present - Torrent už je pridaný + Torrent už je pridaný + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' už existuje v zozname pre stiahnutie. Prajete si zlúčiť trackery z nového zdroja? + Torrent '%1' už existuje v zozname pre stiahnutie. Prajete si zlúčiť trackery z nového zdroja? GeoIPDatabase - - + + Unsupported database file size. Nepodporovaná veľkosť súboru databázy. - + Metadata error: '%1' entry not found. Chyba metadát: záznam "%1" nebol nájdený. - + Metadata error: '%1' entry has invalid type. Chyba metadát: záznam "%1" má neplatný typ. - + Unsupported database version: %1.%2 Nepodporovaná verzia databázy: %1.%2 - + Unsupported IP version: %1 Nepodporovaná verzia IP: %1 - + Unsupported record size: %1 Nepodporovaná veľkosť záznamu: %1 - + Database corrupted: no data section found. Poškodená databáza: nebola nájdená žiadna dátová sekcia. @@ -3316,17 +3478,17 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Veľkosť HTTP požiadavky presahuje limit, zatváram socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Neplatná metóda HTTP požiadavky, socket sa zatvára. IP: %1. Metóda: "%2" - + Bad Http request, closing socket. IP: %1 Chybná Http požiadavka, zatváram socket. IP: %1 @@ -3367,36 +3529,64 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty IconWidget - + Browse... Prechádzať... - + Reset Vrátiť pôvodné - + Select icon - + Vybrať ikonu - + Supported image files + Podporované súbory obrázkov + + + + LegalNotice + + + Legal Notice + Právny oznam + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent je program na zdieľanie súborov. Keď spustíte torrent, jeho dáta sa sprístupnia iným prostredníctvom nahrávania. Za akýkoľvek obsah, ktorý zdieľate, nesiete zodpovednosť vy. + + + + No further notices will be issued. + Už vás nebudeme ďalej upozorňovať. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 bol zablokovaný. Dôvod: %2. - + %1 was banned 0.0.0.0 was banned %1 bol zablokovaný @@ -3405,91 +3595,62 @@ Podporuje formáty: S01E01, 1x1, 2017.12.31 a 31.12.2017 (podporuje aj formáty Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 je neznámy parameter príkazového riadka - - + + %1 must be the single command line parameter. %1 musí byť jediný parameter príkazového riadka - - You cannot use %1: qBittorrent is already running for this user. - Nemožno použiť %1: qBitorrent bol už pre tohto užívateľa spustený. - - - + Run application with -h option to read about command line parameters. Spustite aplikáciu s parametrom -h pre zobrazenie nápovedy o prípustných parametroch. - + Bad command line Chyba v príkazovom riadku - + Bad command line: Chyba v príkazovom riadku: - + An unrecoverable error occurred. - + Vyskytla sa nenapraviteľná chyba - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Právne upozornenie - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent je program na zdieľanie súborov. Keď spustíte torrent, jeho dáta sa sprístupnia iným prostredníctvom nahrávania. Za akýkoľvek obsah, ktorý zdieľate, nesiete zodpovednosť vy. - - - - No further notices will be issued. - Už vás nebudeme ďalej upozorňovať. - - - - Press %1 key to accept and continue... - Pre akceptovanie a pokračovanie stlačte kláves %1.... + qBittorrent narazil na nenapraviteľnú chybu. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent je program na zdieľanie súborov. Spustením torrentu sa jeho dáta sprístupnia iným prostredníctvom nahrávania. Za akýkoľvek obsah, ktorý zdieľate, nesiete výlučnú zodpovednosť Vy. - -Žiadne ďalšie upozornenie už nebude zobrazené. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Právne upozornenie + + Another qBittorrent instance is already running. + - - Cancel - Zrušiť + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Súhlasím + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3500,617 +3661,706 @@ No further notices will be issued. &Úpravy - + &Tools Nás&troje - + &File &Súbor - + &Help &Pomocník - + On Downloads &Done Po &skončení sťahovania - + &View &Zobraziť - + &Options... Mo&žnosti... - &Resume - Pok&račovať + Pok&račovať - + &Remove - Odstr&rániť + Odst&rániť - + Torrent &Creator &Vytvoriť torrent - - + + Alternative Speed Limits Alternatívne obmedzenia rýchlostí - + &Top Toolbar Panel nás&trojov - + Display Top Toolbar Zobraziť horný panel nástrojov - + Status &Bar Stavový &riadok - + Filters Sidebar - + Bočný panel s filtrami - + S&peed in Title Bar Rýchlo&sť v titulnom pruhu - + Show Transfer Speed in Title Bar Zobraziť prenosovú rýchlosť v titulnom pruhu - + &RSS Reader Čítačka &RSS - + Search &Engine &Vyhľadávač - + L&ock qBittorrent &Zamknúť qBittorrent - + Do&nate! &Prispejte! - + + Sh&utdown System + + + + &Do nothing Nerobiť nič - + Close Window Zatvoriť okno - R&esume All - Pokračovať vš&etky + Pokračovať vš&etky - + Manage Cookies... Spravovať Cookies... - + Manage stored network cookies Spravovať cookies uložené z internetu - + Normal Messages Normálne správy - + Information Messages Informačné správy - + Warning Messages Upozorňujúce správy - + Critical Messages Kritické správy - + &Log Žurná&l - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Nastaviť globálne rýchlostné limity... - + Bottom of Queue Koniec fronty - + Move to the bottom of the queue Presunúť na koniec fronty - + Top of Queue Začiatok fronty - + Move to the top of the queue Presunúť na začiatok fronty - + Move Down Queue Presunúť frontu nižšie - + Move down in the queue Presunúť nižšie vo fronte - + Move Up Queue Presunúť frontu vyšie - + Move up in the queue Presunúť vyššie vo fronte - + &Exit qBittorrent &Ukončiť qBittorrent - + &Suspend System U&spať systém - + &Hibernate System Uspať systém na &disk - S&hutdown System - &Vypnúť systém + &Vypnúť systém - + &Statistics Štatistik&a - + Check for Updates &Skontrolovať aktualizácie - + Check for Program Updates Skontrolovať aktualizácie programu - + &About O &aplikácii - &Pause - &Pozastaviť + &Pozastaviť - P&ause All - Poz&astaviť všetky + Poz&astaviť všetky - + &Add Torrent File... Prid&ať torrentový súbor... - + Open Otvoriť - + E&xit U&končiť - + Open URL Otvoriť URL - + &Documentation &Dokumentácia - + Lock Zamknúť - - - + + + Show Zobraziť - + Check for program updates Skontrolovať aktualizácie programu - + Add Torrent &Link... Prid&ať torrentový súbor... - + If you like qBittorrent, please donate! Ak sa vám qBittorrent páči, prosím, prispejte! - - + + Execution Log Záznam spustení - + Clear the password Vyčistiť heslo - + &Set Password &Nastaviť heslo - + Preferences Voľby - + &Clear Password &Vymazať heslo - + Transfers Prenosy - - + + qBittorrent is minimized to tray qBittorrent bol minimalizovaný do lišty - - - + + + This behavior can be changed in the settings. You won't be reminded again. Toto správanie môže byť zmenené v nastavení. Nebudete znovu upozornení. - + Icons Only Iba ikony - + Text Only Iba text - + Text Alongside Icons Text vedľa ikôn - + Text Under Icons Text pod ikonami - + Follow System Style Používať systémové štýly - - + + UI lock password Heslo na zamknutie používateľského rozhrania - - + + Please type the UI lock password: Prosím, napíšte heslo na zamknutie používateľského rozhrania: - + Are you sure you want to clear the password? Ste si istý, že chcete vyčistiť heslo? - + Use regular expressions Používať regulárne výrazy - - Search - Vyhľadávanie + + + Search Engine + Vyhľadávač - - Transfers (%1) - Prenosy (%1) + + Search has failed + Hľadanie zlyhalo - Recursive download confirmation - Potvrdenie rekurzívneho sťahovania + + Search has finished + - Never - Nikdy + + Search + Vyhľadávanie + + + + Transfers (%1) + Prenosy (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent bol práve aktualizovaný a je potrebné ho reštartovať, aby sa zmeny prejavili. - + qBittorrent is closed to tray qBittorrent bol zavretý do lišty - + Some files are currently transferring. Niektoré súbory sa práve prenášajú. - + Are you sure you want to quit qBittorrent? Ste si istý, že chcete ukončiť qBittorrent? - + &No &Nie - + &Yes &Áno - + &Always Yes &Vždy áno - + Options saved. Možnosti boli uložené. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Chýbajúci Python Runtime - + qBittorrent Update Available Aktualizácia qBittorentu je dostupná - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Na použitie vyhľadávačov je potrebný Python, ten však nie je nainštalovaný. Chcete ho inštalovať teraz? - + Python is required to use the search engine but it does not seem to be installed. Na použitie vyhľadávačov je potrebný Python, zdá sa však, že nie je nainštalovaný. - - + + Old Python Runtime Zastaraný Python Runtime - + A new version is available. Nová verzia je dostupná - + Do you want to download %1? Prajete si stiahnuť %1? - + Open changelog... Otvoriť zoznam zmien... - + No updates available. You are already using the latest version. Žiadne aktualizácie nie sú dostupné. Používate najnovšiu verziu. - + &Check for Updates &Skontrolovať aktualizácie - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Vaša verzia Pythonu (%1) je zastaraná. Minimálna verzia: %2. Chcete teraz nainštalovať novšiu verziu? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Vaša verzia Pythonu (%1) je zastaraná. Pre sprevádzkovanie vyhľadávačov aktualizujte na najnovšiu verziu. Minimálna verzia: %2. - + + Paused + Pozastavený + + + Checking for Updates... Overujem aktualizácie... - + Already checking for program updates in the background Kontrola aktualizácií programu už prebieha na pozadí - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Chyba pri sťahovaní - Python setup could not be downloaded, reason: %1. Please install it manually. - Nebolo možné stiahnuť inštalačný program Pythonu. Dôvod: %1 + Nebolo možné stiahnuť inštalačný program Pythonu. Dôvod: %1 Prosím, nainštalujte ho ručne. - - + + Invalid password Neplatné heslo - + Filter torrents... - + Filtrovať torrenty... - + Filter by: - + Filtrovať podľa: - + The password must be at least 3 characters long Heslo musí mať aspoň 3 znaky - - - + + + RSS (%1) RSS (%1) - + The password is invalid Heslo nie je platné - + DL speed: %1 e.g: Download speed: 10 KiB/s Rýchlosť sťahovania: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Rýchlosť nahrávania: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [S: %1, N: %2] qBittorrent %3 - - - + Hide Skryť - + Exiting qBittorrent Ukončuje sa qBittorrent - + Open Torrent Files Otvoriť torrent súbory - + Torrent Files Torrent súbory @@ -4140,12 +4390,12 @@ Prosím, nainštalujte ho ručne. Dynamic DNS error: qBittorrent was blacklisted by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Chyba dynamického DNS: služba dala qBittorrent na blacklist, prosím nahláste chybu na https://bugs.qbittorrent.org. Dynamic DNS error: %1 was returned by the service, please submit a bug report at https://bugs.qbittorrent.org. - + Chyba dynamického DNS: %1 bolo vrátené službou, prosím nahláste chybu na https://bugs.qbittorrent.org. @@ -4171,133 +4421,133 @@ Prosím, nainštalujte ho ručne. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + I/O chyba: %1 - + The file size (%1) exceeds the download limit (%2) Veľkosť súboru je (%1) presahuje limit pre stiahnutie (%2) - + Exceeded max redirections (%1) Prekročené maximálne presmerovania (%1) - + Redirected to magnet URI Presmerované na magnet URI. - + The remote host name was not found (invalid hostname) Názov vzdialeného hostiteľa nebol nájdený (neplatný názov hostiteľa) - + The operation was canceled Operácia bola zrušená - + The remote server closed the connection prematurely, before the entire reply was received and processed Vzdialený server predčasne ukončil spojenie skôr, ako bola prijatá a spracovaná celá odpoveď - + The connection to the remote server timed out Spojenie so vzdialeným serverom vypršalo - + SSL/TLS handshake failed SSL/TLS handshake zlyhal - + The remote server refused the connection Vzdialený server odmietol spojenie - + The connection to the proxy server was refused Spojenie k proxy serveru bolo odmietnuté - + The proxy server closed the connection prematurely Proxy server predčasne ukončil spojenie - + The proxy host name was not found Názov hostiteľa proxy serveru nebol nájdený - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Spojenie k proxy vypršalo alebo proxy včas neodpovedal na požiadavku - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy vyžaduje overenie, ale neakceptoval žiadne z ponúknutých prihlasovacích údajov - + The access to the remote content was denied (401) Prístup k vzdialenému obsahu bol odmietnutý (401) - + The operation requested on the remote content is not permitted Požadovaná operácia na vzdialenom obsahu nie je povolená - + The remote content was not found at the server (404) Vzdialený obsah na serveri nebol nájdený (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Vzdialený server vyžaduje na poskytnutie obsahu autentifikáciu, neprijal ale poskytnuté prihlasovacie údaje. - + The Network Access API cannot honor the request because the protocol is not known Network Access API neprijalo požiadavku, pretože nie je známy protokol - + The requested operation is invalid for this protocol Požadovaná operácia nie je platná pre tento protokol - + An unknown network-related error was detected Bola zistená neznáma chyba týkajúca sa siete - + An unknown proxy-related error was detected Bola zistená neznáma chyba týkajúca sa proxy - + An unknown error related to the remote content was detected Bola zistená neznáma chyba týkajúca sa vzdialeného obsahu - + A breakdown in protocol was detected Bola zistená porucha v protokole - + Unknown error Neznáma chyba @@ -4305,7 +4555,12 @@ Prosím, nainštalujte ho ručne. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignoruje sa SSL chyba, URL: %1, chyby: "%2" @@ -5373,7 +5628,7 @@ Prosím, nainštalujte ho ručne. Couldn't save downloaded IP geolocation database file. Reason: %1 - + Nebolo možné uložiť súbor IP geolokačnej databázy. Dôvod: %1 @@ -5601,47 +5856,47 @@ Prosím, nainštalujte ho ručne. Connection failed, unrecognized reply: %1 - + Spojenie zlyhalo, neznáma odpoveď: %1 Authentication failed, msg: %1 - + Autentifikácia zlyhala, správa: %1 <mail from> was rejected by server, msg: %1 - + <mail from> bolo odmietnuté serverom, správa: %1 <Rcpt to> was rejected by server, msg: %1 - + <Rcpt to> bolo odmietnuté serverom, správa: %1 <data> was rejected by server, msg: %1 - + <data>bolo odmietnuté serverom, správa: %1 Message was rejected by the server, error: %1 - + Správa bola odmietnutá serverom, chyba: %1 Both EHLO and HELO failed, msg: %1 - + EHLO aj HELO zlyhali, správa: %1 The SMTP server does not seem to support any of the authentications modes we support [CRAM-MD5|PLAIN|LOGIN], skipping authentication, knowing it is likely to fail... Server Auth Modes: %1 - + Zdá sa, že SMTP server nepodporuje režimy autentifikácie, ktoré podporujeme [CRAM-MD5|PLAIN|LOGIN]. Autentifikácia sa preskočí, keďže by pravdepodobne aj tak zlyhala... Režimy autentifikácie servera: %1 Email Notification Error: %1 - + Chyba oznámenia e-mailom: %1 @@ -5677,294 +5932,307 @@ Prosím, nainštalujte ho ručne. Bittorrent - + RSS RSS - Web UI - Webové rozhranie + Webové rozhranie - + Advanced Rozšírené - + Customize UI Theme... - + Prispôsobiť motív používateľského rozhrania... - + Transfer List Zoznam prenosov - + Confirm when deleting torrents Potvrdiť zmazanie torrentu - Shows a confirmation dialog upon pausing/resuming all the torrents - + Zobrazí dialógové okno s potvrdením pri pozastavení/pokračovaní všetkých torrentov. - Confirm "Pause/Resume all" actions - + Potvrdzovať akcie "Pozastaviť/Obnoviť všetky" - + Use alternating row colors In table elements, every other row will have a grey background. Používať striedavé farby pozadia riadkov - + Hide zero and infinity values Skryť nulové a nekonečné hodnoty - + Always Vždy - Paused torrents only - Len pozastavené torrenty + Len pozastavené torrenty - + Action on double-click Akcia po dvojitom kliknutí - + Downloading torrents: Sťahované torrenty: - - Start / Stop Torrent - Spusti / zastavi torrent + Spusti / zastavi torrent - - + + Open destination folder Otvor cieľový priečinok - - + + No action Neurob nič - + Completed torrents: Dokončené torrenty: - + Auto hide zero status filters - + Automaticky skryť filtre s nulovým statusom - + Desktop Plocha - + Start qBittorrent on Windows start up Spustiť qBittorrent pri štarte Windows - + Show splash screen on start up Zobraziť pri spustení štartovaciu obrazovku - + Confirmation on exit when torrents are active Vyžiadať potvrdenie pri ukončení programu ak sú torrenty aktívne - + Confirmation on auto-exit when downloads finish Vyžiadať potvrdenie pri automatickom ukončení programu ak sťahovanie skončilo - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Pre nastavenie qBittorrentu ako východzieho programu pre .torrent súbory a/alebo Magnet odkazy<br/>, môžete použiť dialógové okno <span style=" font-weight:600;">Východzie programy</span> z <span style=" font-weight:600;">Ovládacích panelov</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Rozloženie obsahu torrentu: - + Original Pôvodné - + Create subfolder Vytvoriť podpriečinok - + Don't create subfolder Nevytvárať podpriečinok - + The torrent will be added to the top of the download queue - + Torrent bude pridaný navrch frontu pre sťahovanie - + Add to top of queue The torrent will be added to the top of the download queue Pridať navrch poradovníka - + When duplicate torrent is being added - + Keď sa pridáva duplicitný torrent - + Merge trackers to existing torrent - + Zlúčiť trackery do existujúceho torrentu + + + + Keep unselected files in ".unwanted" folder + Ponechať neoznačené súbory v adresári ".unwanted" - + Add... Pridať... - + Options.. Možnosti.. - + Remove Odstrániť - + Email notification &upon download completion Upozornenie o dokončení sťahovania emailom - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protokol peer pripojenia: - + Any Akýkoľvek - + I2P (experimental) - + I2P (experimentálne) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + <html><head/><body><p>Ak je zapnutý &quot;zmiešaný režim&quot; I2P torrenty majú povolené získavať peerov tiež z iných zdrojov ako z trackera a pripájať sa na bežné IP adresy bez poskytovania akejkoľvek anonymizácie. To môže byť užitočné, ak používateľ nemá záujem o anonymizáciu I2P, no napriek tomu chce byť schopný pripájať sa na I2P peerov.</p></body></html> - + Mixed mode - + Zmiešaný režim - + Some options are incompatible with the chosen proxy type! - + Niektoré voľby nie sú kompatibilné s vybraným typom proxy! - + If checked, hostname lookups are done via the proxy - + Ak je zaškrnuté, vyhľadávanie názvu hostiteľa prebieha cez proxy - + Perform hostname lookup via proxy - + Zisťovať názov hostiteľa cez proxy - + Use proxy for BitTorrent purposes Použiť proxy pre účely BitTorrent - + RSS feeds will use proxy - + RSS kanály budú používať proxy - + Use proxy for RSS purposes Použiť proxy pre účely RSS - + Search engine, software updates or anything else will use proxy Vyhľadávač, softvérové aktualizácie alebo čokoľvek iné bude používať proxy - + Use proxy for general purposes Použiť proxy pre všeobecné účely - + IP Fi&ltering IP fi&ltrovanie - + Schedule &the use of alternative rate limits Naplánovať použitie alternatívnych rýchlostných obmedzení - + From: From start time Od: - + To: To end time Do: - + Find peers on the DHT network Hľadať peery v sieti DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5973,140 +6241,188 @@ Vyžadovať šifrovanie: Pripojí sa iba k peerom pomocou šifrovania protokolu Zakázať šifrovanie: Pripojí sa iba k peerom bez šifrovania protokolu - + Allow encryption Povoliť šifrovanie - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Ďalšie informácie</a>) - + Maximum active checking torrents: - + Maximum súbežne kontrolovaných torrentov: - + &Torrent Queueing Zaraďovanie &torrentov do frontu - + When total seeding time reaches - + Keď celkový čas seedovania dosiahne - + When inactive seeding time reaches - + Keď čas neaktívneho seedovania dosiahne - A&utomatically add these trackers to new downloads: - Automaticky pridať tieto trackery k novým sťahovaniam: + Automaticky pridať tieto trackery k novým sťahovaniam: - + RSS Reader RSS čítačka - + Enable fetching RSS feeds Zapnúť načítanie RSS kanálov - + Feeds refresh interval: Interval obnovovania kanálov: - + + Same host request delay: + + + + Maximum number of articles per feed: Maximálny počet článkov na kanál: - - - + + + min minutes min - + Seeding Limits Limity seedovania - Pause torrent - Pozastaviť torrent + Pozastaviť torrent - + Remove torrent Odstrániť torrent - + Remove torrent and its files Zmazať torrent a jeho súbory - + Enable super seeding for torrent Povoliť super seeding pre torrent - + When ratio reaches Keď je dosiahnuté ratio - - RSS Torrent Auto Downloader - Automatické RSS sťahovanie torrentov + + Stop torrent + - - Enable auto downloading of RSS torrents - Zapnúť automatické RSS sťahovanie torrentov + + A&utomatically append these trackers to new downloads: + - - Edit auto downloading rules... - Upraviť pravidlá automatického sťahovania... + + Automatically append trackers from URL to new downloads: + - - RSS Smart Episode Filter - RSS inteligentný filter epizód + + URL: + URL: - - Download REPACK/PROPER episodes - Stiahnuť REPACK/PROPER epizódy + + Fetched trackers + - - Filters: - Filtre: + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + + RSS Torrent Auto Downloader + Automatické RSS sťahovanie torrentov + + + + Enable auto downloading of RSS torrents + Zapnúť automatické RSS sťahovanie torrentov + + + + Edit auto downloading rules... + Upraviť pravidlá automatického sťahovania... + + + + RSS Smart Episode Filter + RSS inteligentný filter epizód + + + + Download REPACK/PROPER episodes + Stiahnuť REPACK/PROPER epizódy + + + + Filters: + Filtre: - + Web User Interface (Remote control) Webové rozhranie (vzdialené ovládanie) - + IP address: IP adresa: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6115,42 +6431,41 @@ Zvolte IPv4 alebo IPv6 adresu. Môžete zadať "0.0.0.0" pre akúkoľv "::" pre akúkoľvek IPv6 adresu, alebo "*" pre akékoľvek IPv4 alebo IPv6 adresy. - + Ban client after consecutive failures: Zakázať klienta po následných zlyhaniach: - + Never Nikdy - + ban for: ban pre: - + Session timeout: Časový limit relácie: - + Disabled Vypnuté - Enable cookie Secure flag (requires HTTPS) - Povoliť príznak zabezpečenie súborov cookie (vyžaduje HTTPS) + Povoliť príznak zabezpečenie súborov cookie (vyžaduje HTTPS) - + Server domains: Serverové domény: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6163,442 +6478,495 @@ mali vložiť doménové názvy použité pre WebUI server. Použite ';' pre oddelenie viacerých položiek. Môžete použiť masku '*'. - + &Use HTTPS instead of HTTP &Používať HTTPS namiesto HTTP - + Bypass authentication for clients on localhost Obísť autentifikáciu pri prihlasovaní z lokálneho počítača - + Bypass authentication for clients in whitelisted IP subnets Preskočiť overenie klientov na zozname povolených IP podsietí - + IP subnet whitelist... Zoznam povolených IP podsietí... - - Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + Use alternative WebUI - + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + Uveďte IP adresy (alebo podsiete, napr. 0.0.0.0/24) reverzného proxy pre preposlanie adresy klienta (hlavička X-Forwarded-For). Použite ';' pre rozdelenie viacerých položiek. + + + Upda&te my dynamic domain name Aktualizovať môj dynamický doménový názov - + Minimize qBittorrent to notification area Minimalizovať qBittorrent do oznamovacej oblasti - + + Search + Vyhľadávanie + + + + WebUI + + + + Interface Rozhranie - + Language: Jazyk: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Štýl ikony v oznamovacej oblasti: - - + + Normal Normálny - + File association Asociácia typu súboru - + Use qBittorrent for .torrent files Otvárať .torrent súbory programom qBittorrent - + Use qBittorrent for magnet links Otvárať odkazy magnet programom qBittorrent - + Check for program updates Skontrolovať aktualizácie programu - + Power Management Správa napájania - + + &Log Files + + + + Save path: Uložiť do: - + Backup the log file after: Zálohovať log súbor po dosiahnutí: - + Delete backup logs older than: Vymazať zálohy log súborov staršie ako: - + + Show external IP in status bar + + + + When adding a torrent Pri pridávaní torrentu - + Bring torrent dialog to the front Preniesť dialóg torrentu do popredia - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Vymazať tiež .torrent súbory, ktorých pridanie zlyhalo - + Also when addition is cancelled Vymazať tiež ak bolo pridanie zrušené - + Warning! Data loss possible! Upozornenie! Vyskytla sa možná strata dát! - + Saving Management Správa ukladania - + Default Torrent Management Mode: Prednastavený režim správy torrentov: - + Manual Manuálny - + Automatic Automatický - + When Torrent Category changed: Ak sa zmení kategória torrentu: - + Relocate torrent Premiestni torrent - + Switch torrent to Manual Mode Prepni torrent do manuálneho režimu - - + + Relocate affected torrents Premiestni torrenty, ktorých sa zmena týka - - + + Switch affected torrents to Manual Mode Prepni torrenty, ktorých sa zmena týka, do manuálneho režimu - + Use Subcategories Použi podkategórie - + Default Save Path: Predvolená cesta pre ukladanie: - + Copy .torrent files to: Kopírovať .torrent súbory do: - + Show &qBittorrent in notification area Zobraziť qBittorrent v oznamovacej oblasti - &Log file - Log súbor + Log súbor - + Display &torrent content and some options Zobraziť obsah torrentu a ďalšie voľby - + De&lete .torrent files afterwards Neskôr zm&azať .torrent súbory - + Copy .torrent files for finished downloads to: Kopírovať .torrent súbory po dokončení sťahovania do: - + Pre-allocate disk space for all files Dopredu alokovať miesto pre všetky súbory - + Use custom UI Theme Použite vlastný motív používateľského rozhrania - + UI Theme file: Súbor motívu používateľského rozhrania: - + Changing Interface settings requires application restart Zmena nastavenia rozhranie vyžaduje reštart aplikácie - + Shows a confirmation dialog upon torrent deletion Zobrazí dialóg pre potvrdenie po odstránení torrentu - - + + Preview file, otherwise open destination folder Náhľad súboru, inak otvoriť cieľový priečinok - - Show torrent options - Zobraziť možnosti torrentu + Zobraziť možnosti torrentu - + Shows a confirmation dialog when exiting with active torrents Zobrazí dialógové okno s potvrdením pri ukončení s aktívnymi torrentami - + When minimizing, the main window is closed and must be reopened from the systray icon Pri minimalizácii je hlavné okno zatvorené a musí byť znovu otvorené z ikony systray - + The systray icon will still be visible when closing the main window Po zatvorení hlavného okna bude ikona systray stále viditeľná - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Po zatvorení minimalizuj qBittorrent do oznamovacej oblasti - + Monochrome (for dark theme) Monochromatický (Tmavý motív) - + Monochrome (for light theme) Monochromatický (Svetlý motív) - + Inhibit system sleep when torrents are downloading Potlačiť prechod systému do režimu spánku ak sú torrenty sťahované - + Inhibit system sleep when torrents are seeding Potlačiť prechod systému do režimu spánku ak sú torrenty odosielané - + Creates an additional log file after the log file reaches the specified file size Vytvorí ďalší súbor protokolu potom, čo súbor protokolu dosiahne zadanej veľkosti súboru - + days Delete backup logs older than 10 days dní - + months Delete backup logs older than 10 months mesiacov - + years Delete backup logs older than 10 years rokov - + Log performance warnings Logovať upozornenia ohľadom výkonu - The torrent will be added to download list in a paused state - Torrent bude pridaný do zoznamu sťahovania v pozastavenom stave + Torrent bude pridaný do zoznamu sťahovania v pozastavenom stave - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Nespúšťať sťahovanie automaticky - + Whether the .torrent file should be deleted after adding it Či sa má súbor .torrent po pridaní odstrániť - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Pred začatím sťahovania vyhradí všetko potrebné miesto na disku, aby sa minimalizovala fragmentácia. Užitočné iba pre HDD. - + Append .!qB extension to incomplete files Pridať príponu .!qB k nedokončeným súborom - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Po stiahnutí torrentu ponúknite pridanie torrentov zo všetkých .torrent súborov, ktoré sa v ňom nachádzajú - + Enable recursive download dialog Zapnúť dialóg rekurzívneho sťahovania - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automaticky: O rôznych vlastnostiach torrentu (napr. cesta uloženie) rozhodne príslušná kategória Ručne: Rôzne vlastnosti torrentu (napr. cesta uloženia) musia byť priradené ručne - + When Default Save/Incomplete Path changed: - + Keď sa zmení východzia cesta uloženia/nekompletných: - + When Category Save Path changed: Ak sa zmení cesta pre ukladanie kategórie: - + Use Category paths in Manual Mode Použiť cesty kategórií v manuálnom režime - + Resolve relative Save Path against appropriate Category path instead of Default one - + Použiť relatívnu cestu pre uloženie podľa kategórie namiesto východzej cesty - + Use icons from system theme - + Používať ikony systémového motívu - + Window state on start up: Stav okna po spustení: - + qBittorrent window state on start up Stav okna qBittorrentu po spustení - + Torrent stop condition: Podmienka pre zastavenie torrentu: - - + + None Žiadna - - + + Metadata received Metadáta obdržané - - + + Files checked Súbory skontrolované - + Ask for merging trackers when torrent is being added manually - + Pýtať sa na zlúčenie trackerov pri manuálnom pridávaní torrentu - + Use another path for incomplete torrents: Pre nedokončené torrenty použiť inú cestu: - + Automatically add torrents from: Automaticky pridať torrenty z: - + Excluded file names Vynechané názvy súborov - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6612,842 +6980,928 @@ Examples readme.txt: filter exact file name. ?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'. - + Blacklist odfiltroval názvy súborov, ktoré nebudú stiahnúté z torrentu(-ov). +Súbory, ktoré sa zhodujú s akýmkoľvek filtrom v tomto zozname, budú mať svoju prioritu automaticky nastavenú na "Nesťahovať". + +Použite nové riadky pre oddelenie viacerých položiek. Použite zástupné znaky, ako je uvedené nižšie. +*: zodpovedá žiadnemu alebo viacerým znakom. +?: zodpovedá ľubovoľnému jednému znaku. +[...]: sady znakov môžu byť uvedené v hranatých zátvorkách. + +Príklady +*.exe: filtruje príponu súboru '.exe'. +readme.txt: filtruje presný názov súboru. +?.txt: filtruje 'a.txt', 'b.txt', ale nie 'aa.txt'. +readme[0-9].txt: filtruje 'readme1.txt', 'readme2.txt', ale nie 'readme10.txt'. - + Receiver Príjemca - + To: To receiver Do: - + SMTP server: SMTP server: - + Sender Odosielateľ - + From: From sender Od: - + This server requires a secure connection (SSL) Tento server vyžaduje zabezpečené pripojenie (SSL) - - + + Authentication Autentifikácia - - - - + + + + Username: Meno používateľa: - - - - + + + + Password: Heslo: - + Run external program Spustiť externý program - Run on torrent added - Spustiť pri pridaní torrentu + Spustiť pri pridaní torrentu - Run on torrent finished - Spustiť pri dokončení torrentu + Spustiť pri dokončení torrentu - + Show console window Zobraziť okno konzoli - + TCP and μTP TCP a μTP - + Listening Port Načúvací port - + Port used for incoming connections: Port pre prichádzajúce spojenia: - + Set to 0 to let your system pick an unused port Nastavte na 0, aby váš systém vybral nepoužívaný port - + Random Náhodný - + Use UPnP / NAT-PMP port forwarding from my router Použiť presmerovanie portov UPnP/NAT-PMP z môjho smerovača - + Connections Limits Obmedzenia spojení - + Maximum number of connections per torrent: Maximálny počet spojení na torrent: - + Global maximum number of connections: Maximálny celkový počet spojení: - + Maximum number of upload slots per torrent: Maximálny počet slotov pre nahrávanie na torrent: - + Global maximum number of upload slots: Maximálny celkový počet slotov na nahrávanie: - + Proxy Server Proxy server - + Type: Typ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Host: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Inak sa proxy server použije iba na pripojenia k trackeru - + Use proxy for peer connections Používať proxy na spojenia s rovesníkmi - + A&uthentication Overenie - + Info: The password is saved unencrypted Info: Heslo sa ukladá nezašifrované - + Filter path (.dat, .p2p, .p2b): Cesta k filtrom (.dat, .p2p, .p2b): - + Reload the filter Znovu načítať filter - + Manually banned IP addresses... Manuálne zablokované IP adresy... - + Apply to trackers Použiť na trackery - + Global Rate Limits Globálne rýchlostné obmedzenia - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Nahrávanie: - - + + Download: Sťahovanie: - + Alternative Rate Limits Alternatívne rýchlostné obmedzenia - + Start time Doba spustenia - + End time Doba ukončenia - + When: Kedy: - + Every day Každý deň - + Weekdays Dni v týždni - + Weekends Víkendy - + Rate Limits Settings Nastavenia rýchlostných obmedzení - + Apply rate limit to peers on LAN Použiť rýchlostné obmedzenie na rovesníkov v LAN - + Apply rate limit to transport overhead Použiť rýchlostné obmedzenie na réžiu prenosu - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Použiť obmedzenie rýchlosti na protokol µTP - + Privacy Súkromie - + Enable DHT (decentralized network) to find more peers Zapnúť DHT (decentralizovaná sieť) - umožní nájsť viac rovesníkov - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Vymieňať si zoznam rovesníkov s kompatibilnými klientmi siete Bittorrent (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Zapnúť Peer eXchange (PeX) - umožní nájsť viac rovesníkov - + Look for peers on your local network Hľadať rovesníkov na vašej lokálnej sieti - + Enable Local Peer Discovery to find more peers Zapnúť Local Peer Discovery - umožní nájsť viac rovesníkov - + Encryption mode: Režim šifrovania: - + Require encryption Vyžadovať šifrovanie - + Disable encryption Vypnúť šifrovanie - + Enable when using a proxy or a VPN connection Zapnúť počas používania proxy alebo spojenia VPN - + Enable anonymous mode Zapnúť anonymný režim - + Maximum active downloads: Maximálny počet aktívnych sťahovaní: - + Maximum active uploads: Maximálny počet aktívnych nahrávaní: - + Maximum active torrents: Maximálny počet aktívnych torrentov: - + Do not count slow torrents in these limits Nepočítať pomalé torrenty do týchto obmedzení - + Upload rate threshold: Limit rýchlosti odosielania: - + Download rate threshold: Limit rýchlosti sťahovania: - - - + + + + sec seconds sec - + Torrent inactivity timer: Časovač nečinnosti torrentu: - + then potom - + Use UPnP / NAT-PMP to forward the port from my router Použiť presmerovanie portov UPnP/NAT-PMP z môjho smerovača - + Certificate: Certifikát: - + Key: Kľúč: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Informácie o certifikátoch</a> - + Change current password Zmena aktuálneho hesla - Use alternative Web UI - Použiť alternatívne Web UI + Použiť alternatívne Web UI - + Files location: Umiestnenie súborov: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Zabezpečenie - + Enable clickjacking protection Zapnúť ochranu clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Zapnúť ochranu Cross-Site Request Forgery (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Zapnúť overovanie hlavičky hostiteľa - + Add custom HTTP headers Pridať vlastné HTTP hlavičky - + Header: value pairs, one per line Hlavička: páry hodnôt, jedna na riadok - + Enable reverse proxy support Povoliť podporu reverzného servera proxy - + Trusted proxies list: Zoznam dôveryhodných serverov proxy: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Služba: - + Register Zaregistrovať sa - + Domain name: Názov domény: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Nastavením týchto volieb môžete <strong>nenávratne stratiť</strong> vaše .torrent súbory! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Ak zapnete druhú voľbu (&ldquo;Tiež, keď je pridanie zrušené&rdquo;) .torrent súbor <strong>bude zmazaný</strong> aj keď stlačíte &ldquo;<strong>Zrušiť</strong>&rdquo; v dialógu &ldquo;Pridať torrent &rdquo; - + Select qBittorrent UI Theme file Vyberte súbor motívu používateľského rozhrania qBittorrent - + Choose Alternative UI files location Vybrať umiestnenie súborov Alternatívneho UI - + Supported parameters (case sensitive): Podporované parametre (rozlišujú sa veľké a malé písmená): - + Minimized Minimalizované - + Hidden Skryté - + Disabled due to failed to detect system tray presence - + Vypnuté, pretože sa nepodarilo zistiť prítomnosť systémovej lišty - + No stop condition is set. Žiadna podmienka pre zastavenie nie je nastavená. - + Torrent will stop after metadata is received. Torrent sa zastaví po obdržaní metadát. - - Torrents that have metadata initially aren't affected. - Torrenty, ktoré majú iniciálne metadáta, nie sú ovplyvnené. - - - + Torrent will stop after files are initially checked. Torrent sa zastaví po iniciálnej kontrole súborov. - + This will also download metadata if it wasn't there initially. Toto nastavenie taktiež stiahne metadáta, ak nie sú iniciálne prítomné. - + %N: Torrent name %N: Názov torrentu - + %L: Category %L: Kategória - + %F: Content path (same as root path for multifile torrent) %F: Cesta k obsahu (rovnaká ako koreňová cesta k torrentu s viacerými súbormi) - + %R: Root path (first torrent subdirectory path) %R: Koreňová cesta (cesta prvého podadresára torrentu) - + %D: Save path %D: Uložiť do - + %C: Number of files %C: Počet súborov - + %Z: Torrent size (bytes) %Z: Veľkosť torrentu (v bajtoch) - + %T: Current tracker %T: Aktuálny tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tip: Ohraničiť parameter úvodzovkami, aby nedošlo k odstrihnutiu textu za medzerou (napr. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (žiadny) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent bude uznaný pomalým ak rýchlosti sťahovania a odosielania zostanú pod týmito hodnotami "Časovače nečinnosti torrentu" v sekundách - + Certificate Certifikát - + Select certificate Vybrať certifikát - + Private key Privátny kľúč - + Select private key Vybrať privátny kľúč - + + WebUI configuration failed. Reason: %1 + WebUI konfigurácia zlyhala. Dôvod: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Vyberte sledovaný adresár - + Adding entry failed Pridanie položky zlyhalo - - Location Error - Chyba umiestnenia + + The WebUI username must be at least 3 characters long. + Používateľské meno pre WebUI musí mať aspoň 3 znaky + + + + The WebUI password must be at least 6 characters long. + Heslo pre WebUI musí mať aspoň 6 znakov. - - The alternative Web UI files location cannot be blank. - Umiestnenie súborov Alternatívneho UI nemôže byť prázdne. + + Location Error + Chyba umiestnenia - - + + Choose export directory Vyberte adresár pre export - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + Nastavením týchto volieb qBittorrent <strong>vymaže</strong> .torrent súbory po ich úspešnom (prvá voľba) alebo neúspešnom (druhá voľba) pridaní do zoznamu na sťahovanie. Toto nastavenie sa použije <strong>nielen</strong> na súbory otvorené cez položku menu &ldquo;Pridať torrent&rdquo; ale aj na súbory otvorené cez <strong>asociáciu typu súborov</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) - + Súbor motívu používateľského rozhrania qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Značky (oddelené čiarkou) - + %I: Info hash v1 (or '-' if unavailable) - + %I: Info hash v1 (alebo '-' ak nie je k dispozícii) - + %J: Info hash v2 (or '-' if unavailable) - + %J: Info hash v2 (alebo '-' ak nie je k dispozícii) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - + %K: Torrent ID (buď sha-1 info hash pre v1 torrent alebo neúplný sha-256 info hash pre v2/hybrid torrent) - - - + + + Choose a save directory Vyberte adresár pre ukladanie - + + Torrents that have metadata initially will be added as stopped. + 71%match +Torrenty, ktoré majú iniciálne metadáta, budú pridané ako zastavené. + + + Choose an IP filter file Zvoliť súbor filtra IP - + All supported filters Všetky podporované filtre - + + The alternative WebUI files location cannot be blank. + Alternatívne umiestnenie WebUI súborov nemôže byť prázdne. + + + Parsing error Chyba pri spracovaní - + Failed to parse the provided IP filter Nepodarilo sa spracovať poskytnutý filter IP - + Successfully refreshed Úspešne obnovené - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Zadaný filter IP bol úspešne spracovaný: %1 pravidiel bolo použitých. - + Preferences Voľby - + Time Error Chyba času - + The start time and the end time can't be the same. Čas začiatku a čas ukončenia nemôžu byť rovnaké. - - + + Length Error Chyba dĺžky - - - The Web UI username must be at least 3 characters long. - Používateľské meno pre webové rozhranie musí mať dĺžku aspoň 3 znaky. - - - - The Web UI password must be at least 6 characters long. - Heslo pre webové rozhranie musí mať dĺžku aspoň 6 znakov. - PeerInfo - + Unknown Neznáma - + Interested (local) and choked (peer) - + Záujem (miestny) a priškrtený (peer) - + Interested (local) and unchoked (peer) - + Záujem (miestny) a nepriškrtený (peer) - + Interested (peer) and choked (local) - + Záujem (peer) a priškrtený (miestny) - + Interested (peer) and unchoked (local) - + Záujem (peer) a nepriškrtený (miestny) - + Not interested (local) and unchoked (peer) - + Nezáujem (miestny) a priškrtený (peer) - + Not interested (peer) and unchoked (local) - + Nezáujem (peer) a nepriškrtený (miestny) - + Optimistic unchoke - + Optimistické odškrtenie - + Peer snubbed - + Odmietnutý peer - + Incoming connection Prichádzajúce spojenie - + Peer from DHT Peer z DHT - + Peer from PEX Peer z PEX - + Peer from LSD Peer z LSD - + Encrypted traffic Šifrovaný prenos - + Encrypted handshake + Šifrovaný handshake + + + + Peer is using NAT hole punching @@ -7461,7 +7915,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Adresa @@ -7488,7 +7942,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Peer ID Client i.e.: Client resolved from Peer ID - + Peer ID klient @@ -7577,17 +8031,17 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Cannot add peers to a private torrent - + Nemožno pridať peerov do súkromného torrentu Cannot add peers when the torrent is checking - + Nemožno pridať peerov počas kontroly torrentu Cannot add peers when the torrent is queued - + Nemožno pridať peerov, keď je torrent zaradený vo fronte @@ -7605,7 +8059,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Rovesník "%1" je ručne zablokovaný - + N/A nie je k dispozícií @@ -7628,7 +8082,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Pridať nasledovných peerov (jeden peer na riadok): - + Format: IPv4:port / [IPv6]:port Formát: IPv4:port / [IPv6]:port @@ -7669,27 +8123,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Súbory v tejto časti: - + File in this piece: Súbor v tejto časti: - + File in these pieces: Súbor v týchto častiach: - + Wait until metadata become available to see detailed information Počkajte než bude možné zobraziť metadáta pre detailnejšie informácie - + Hold Shift key for detailed information Držte klávesu Shift pre detailné informácie @@ -7702,58 +8156,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Pluginy vyhľadávania - + Installed search plugins: Inštalované pluginy vyhľadávania: - + Name Názov - + Version Verzia - + Url Url - - + + Enabled Zapnuté - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Varovanie: Uistite sa, že dodržiavate zákony Vašej krajiny o ochrane duševného vlastníctva keď sťahujete torrenty z ktoréhokoľvek z týchto vyhľadávačov. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Nové pluginy pre vyhľadávanie môžete získať tu: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Nainštalovať nový - + Check for updates Skontrolovať aktualizácie - + Close Zatvoriť - + Uninstall Odinštalovať @@ -7874,17 +8328,17 @@ Tieto moduly však boli vypnuté. Zdroj pluginu - + Search plugin source: Zdroj pluginu vyhľadávača: - + Local file Lokálny súbor - + Web link Webový odkaz @@ -7902,70 +8356,70 @@ Tieto moduly však boli vypnuté. Power management found suitable D-Bus interface. Interface: %1 - + Správa napájania našla vhodné D-Bus rozhranie. Rozhranie: %1 Power management error. Did not found suitable D-Bus interface. - + Chyba správy napájania. Nebolo nájdené vhodné D-Bus rozhranie. Power management error. Action: %1. Error: %2 - + Chyba správy napájania. Akcia: %1. Chyba: %2 Power management unexpected error. State: %1. Error: %2 - + Neočakávaná chyba správy napájania. Stav: %1. Chyba: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Nasledujúce súbory torrentu "%1" podporujú náhľad, prosím vyberte jeden z nich: - + Preview Náhľad - + Name Názov - + Size Veľkosť - + Progress Priebeh - + Preview impossible Náhľad nie je možný - + Sorry, we can't preview this file: "%1". Je nám ľúto, nemôžeme zobraziť náhľad tohto súboru: "%1". - + Resize columns Zmeniť rozmery stĺpcov - + Resize all non-hidden columns to the size of their contents Zmeniť rozmery viditeľných stĺpcov podľa veľkosti ich obsahu @@ -7978,29 +8432,29 @@ Tieto moduly však boli vypnuté. Private::FileLineEdit - + Path does not exist Cesta neexistuje - + Path does not point to a directory Cesta nesmeruje k adresáru - + Path does not point to a file Cesta nesmeruje k súboru - + Don't have read permission to path - + Chýbajúce oprávnenia na čítanie z cesty - + Don't have write permission to path - + Chýbajúce oprávnenia na zápis do cesty @@ -8039,12 +8493,12 @@ Tieto moduly však boli vypnuté. PropertiesWidget - + Downloaded: Stiahnuté: - + Availability: Dostupnosť: @@ -8059,53 +8513,53 @@ Tieto moduly však boli vypnuté. Prenos - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Čas aktivity: - + ETA: Odhad. čas: - + Uploaded: Nahrané: - + Seeds: Seedov: - + Download Speed: Sťahovaná rýchlosť: - + Upload Speed: Nahrávaná rýchlosť: - + Peers: Rovesníci: - + Download Limit: Obmedzenie sťahovania: - + Upload Limit: Obmedzenie nahrávania: - + Wasted: Premrhané: @@ -8115,193 +8569,249 @@ Tieto moduly však boli vypnuté. Spojení: - + Information Informácie - + Info Hash v1: Info Hash v1: - + Info Hash v2: Info Hash v2: - + Comment: Komentár: - + Select All Vybrať všetky - + Select None Nevybrať nič - + Share Ratio: Pomer zdieľania: - + Reannounce In: Znova ohlásiť o: - + Last Seen Complete: Posledné videné ukončenie: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Celková veľkosť: - + Pieces: Častí: - + Created By: Vytvoril: - + Added On: Pridané: - + Completed On: Dokončené: - + Created On: Vytvorené: - + + Private: + + + + Save Path: Uložené do: - + Never Nikdy - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (máte %3) - - + + %1 (%2 this session) %1 (%2 toto sedenie) - - + + + N/A nie je k dispozícií - + + Yes + Áno + + + + No + Nie + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedovaný už %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max.) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 celkom) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 priem.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nový webový seed + Nový webový seed - Remove Web seed - Odstrániť webový seed + Odstrániť webový seed - Copy Web seed URL - Kopírovať URL webového seedu + Kopírovať URL webového seedu - Edit Web seed URL - Upraviť URL webového seedu + Upraviť URL webového seedu - + Filter files... Filtruj súbory... - - Speed graphs are disabled - Grafy rýchlostí sú vypnuté + + Add web seed... + - - You can enable it in Advanced Options + + Remove web seed - - New URL seed - New HTTP source - Nový URL seed + + Copy web seed URL + - - New URL seed: - Nový URL seed: + + Edit web seed URL... + + + + + Speed graphs are disabled + Grafy rýchlostí sú vypnuté + + + + You can enable it in Advanced Options + Môžete ich zapnúť v Rozšírených voľbách. + + + New URL seed + New HTTP source + Nový URL seed + + + New URL seed: + Nový URL seed: - - This URL seed is already in the list. - Tento URL seed je už v zozname. + Tento URL seed je už v zozname. - + Web seed editing Úprava webového seedu - + Web seed URL: URL webového seedu: @@ -8320,22 +8830,22 @@ Tieto moduly však boli vypnuté. Nie je možné uložiť dáta AutoDownloaderu RSS v %1. Chyba: %2 - + Invalid data format Neplatný formát dát - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + RSS článok '%1' vyhovuje pravidlu '%2'. Pokus o pridanie torrentu... - + Failed to read RSS AutoDownloader rules. %1 - + Nepodarilo sa načítať pravidlá RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Nie je možné načítať pravidlá RSS AutoDownloader. Príčina: %1 @@ -8343,22 +8853,22 @@ Tieto moduly však boli vypnuté. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Zlyhalo stiahnutie RSS kanálu u '%1'. Príčina '%2' - + RSS feed at '%1' updated. Added %2 new articles. RSS kanál u '%1' úspešne aktualizovaný. Pridané %2 nové články. - + Failed to parse RSS feed at '%1'. Reason: %2 Spracovanie RSS kanálu "%1" Príčina: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS feedu '%1' bol úspešne stiahnutý. Začínam ho spracovávať. @@ -8368,12 +8878,12 @@ Tieto moduly však boli vypnuté. Failed to read RSS session data. %1 - + Nepodarilo sa získať dáta RSS relácie. %1 Failed to save RSS feed in '%1', Reason: %2 - + Nepodarilo sa uložiť RSS kanál do '%1', Dôvod: %2 @@ -8394,12 +8904,12 @@ Tieto moduly však boli vypnuté. RSS::Private::Parser - + Invalid RSS feed. Neplatný RSS kanál - + %1 (line: %2, column: %3, offset: %4). %1 (riadok: %2, stĺpec: %3, offset: %4). @@ -8407,99 +8917,99 @@ Tieto moduly však boli vypnuté. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Nebolo možné uložiť konfiguráciu RSS relácie. Súbor: "%1". Chyba: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - + Nebolo možné uložiť dáta RSS relácie. Súbor: "%1". Chyba: "%2" - - + + RSS feed with given URL already exists: %1. RSS kanál so zadanou URL už už existuje: %1. - + Feed doesn't exist: %1. - + RSS kanál neexistuje: %1. - + Cannot move root folder. Nemožno presunúť koreňový adresár. - - + + Item doesn't exist: %1. Položka neexistuje: %1. - + Couldn't move folder into itself. - + Nebolo možné presunúť adresár do seba. - + Cannot delete root folder. Nemožno zmazať koreňový adresár. - + Failed to read RSS session data. %1 - + Nepodarilo sa získať dáta RSS relácie. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Nepodarilo sa spracovať dáta RSS relácie. Súbor: "%1". Chyba: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Nepodarilo sa získať dáta RSS relácie. Súbor: "%1". Chyba: "Neplatný formát dát." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Nepodarilo sa získať RSS kanál. Kanál: "%1". Dôvod: Vyžaduje sa URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Nepodarilo sa získať RSS kanál. Kanál: "%1". Dôvod: UID je neplatné. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Duplicitný RSS kanál už existuje. UID: "%1". Chyba: Zdá sa, že konfigurácia je poškodená. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Nepodarilo sa získať RSS položku. Položka: "%1". Neplatný formát dát. - + Corrupted RSS list, not loading it. - + Poškodený RSS zoznam, nezíska sa. - + Incorrect RSS Item path: %1. Nesprávna cesta položky RSS: %1. - + RSS item with given path already exists: %1. Položka RSS s danou cestou už existuje: %1. - + Parent folder doesn't exist: %1. Nadradený adresár neexistuje: %1. @@ -8523,8 +9033,8 @@ Tieto moduly však boli vypnuté. - - + + Mark items read Označiť položku ako prečítané @@ -8549,132 +9059,132 @@ Tieto moduly však boli vypnuté. Torrenty: (dvojklik pre stiahnutie) - - + + Delete Vymazať - + Rename... Premenovať... - + Rename Premenovať - - + + Update Aktualizovať - + New subscription... Nový odber... - - + + Update all feeds Aktualizovať všetky kanály - + Download torrent Stiahnuť torrent - + Open news URL Otvoriť adresu URL správ - + Copy feed URL Skopírovať URL kanála - + New folder... Nový priečinok... - + Edit feed URL... - + Upraviť URL kanálu... - + Edit feed URL - + Upraviť URL kanálu - + Please choose a folder name Prosím, vyberte názov priečinka - + Folder name: Názov priečinka: - + New folder Nový priečinok - - + + Please type a RSS feed URL Prosím, zadajte URL RSS kanálu - - + + Feed URL: URL kanálu: - + Deletion confirmation Potvrdenie zmazania - + Are you sure you want to delete the selected RSS feeds? Ste si istý, že chcete vymazať označené RSS kanály? - + Please choose a new name for this RSS feed Prosím, vyberte nový názov pre tento RSS kanál - + New feed name: Nový názov kanála: - + Rename failed Premenovanie zlyhalo - + Date: Dátum: - + Feed: - + Kanál: - + Author: Autor: @@ -8682,38 +9192,38 @@ Tieto moduly však boli vypnuté. SearchController - + Python must be installed to use the Search Engine. Na použitie vyhľadávača musí byť nainštalovaný Python. - + Unable to create more than %1 concurrent searches. Nie je možné vytvoriť viac ako %1 hľadanie súčasne. - - + + Offset is out of range Odchylka je mimo rozsah - + All plugins are already up to date. Všetky pluginy sú aktuálne. - + Updating %1 plugins Aktualizuje sa %1 pluginov - + Updating plugin %1 Aktualizuje sa plugin %1 - + Failed to check for plugin updates: %1 Kontrola aktualizácii pluginov zlyhala: %1 @@ -8738,7 +9248,7 @@ Tieto moduly však boli vypnuté. Set minimum and maximum allowed number of seeders - + Nastavte minimálny a maximálny povolený počet seederov @@ -8753,7 +9263,7 @@ Tieto moduly však boli vypnuté. Set minimum and maximum allowed size of a torrent - + Nastavte minimálnu a maximálnu povolenú veľkosť torrentu @@ -8788,132 +9298,146 @@ Tieto moduly však boli vypnuté. Veľkosť: - + Name i.e: file name Názov - + Size i.e: file size Veľkosť - + Seeders i.e: Number of full sources Seederi - + Leechers i.e: Number of partial sources Leecheri - Search engine - Vyhľadávač + Vyhľadávač - + Filter search results... Filtrovať výsledky hľadania... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Výsledky (zobrazuje <i>%1</i> z <i>%2</i>): - + Torrent names only Iba názvy torrentov - + Everywhere Všade - + Use regular expressions Používať regulárne výrazy - + Open download window - + Otvoriť okno sťahovania - + Download Stiahnuť - + Open description page Otvoriť stránku s popisom - + Copy Kopírovať - + Name Názov - + Download link Download link - + Description page URL URL stránky s popisom - + Searching... Hľadá sa... - + Search has finished Hľadanie skončené - + Search aborted Vyhľadávanie prerušené - + An error occurred during search... Počas vyhľadávania sa vyskytla chyba... - + Search returned no results Vyhľadávanie nevrátilo žiadne výsledky - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Viditeľnosť stĺpcov - + Resize columns Zmeniť rozmery stĺpcov - + Resize all non-hidden columns to the size of their contents Zmeniť rozmery viditeľných stĺpcov podľa veľkosti ich obsahu @@ -8921,104 +9445,104 @@ Tieto moduly však boli vypnuté. SearchPluginManager - + Unknown search engine plugin file format. Neznámy formát súboru pluginu vyhľadávača. - + Plugin already at version %1, which is greater than %2 Verzia nainštalovaného pluginu %1 je vyššia ako %2 - + A more recent version of this plugin is already installed. Novšia verzia tohto pluginu je už nainštalovaná. - + Plugin %1 is not supported. Plugin %1 nie je podporovaný. - - + + Plugin is not supported. Plugin nie je podporovaný. - + Plugin %1 has been successfully updated. Plugin %1 bol úspešne aktualizovaný. - + All categories Všetky kategórie - + Movies Filmy - + TV shows TV relácie - + Music Hudba - + Games Hry - + Anime Anime - + Software Softvér - + Pictures Obrázky - + Books Knihy - + Update server is temporarily unavailable. %1 Aktualizačný server je dočasne nedostupný. %1 - - + + Failed to download the plugin file. %1 Stiahnutie pluginu zlyhalo. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" je zastaralý, aktualizuje na verziu %2 - + Incorrect update info received for %1 out of %2 plugins. Obdržané nesprávne informácie o aktualizácii pre %1 z %2 pluginov. - + Search plugin '%1' contains invalid version string ('%2') Vyhľadávací plugin '%1' obsahuje neplatný reťazec verzia ('%2') @@ -9028,114 +9552,153 @@ Tieto moduly však boli vypnuté. - - - - Search Vyhľadávanie - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Žiadne vyhľadávacie pluginy nie sú nainštalované. Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, aby ste nejaké nainštalovali. - + Search plugins... Pluginy pre vyhľadávanie - + A phrase to search for. Hľadaný výraz. - + Spaces in a search term may be protected by double quotes. Medzery vo vyhľadávanom výraze môžu byť chránené dvojitými úvodzovkami. - + Example: Search phrase example Príklad: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: vyhľadať <b>foo bar</b> - + All plugins Všetky zásuvné moduly - + Only enabled Iba zapnuté - + + + Invalid data format. + Neplatný formát dát. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: vyhľadať <b>foo</b> a <b>bar</b> - + + Refresh + + + + Close tab Zatvoriť kartu - + Close all tabs Zatvoriť všetky karty - + Select... Vybrať... - - - + + Search Engine Vyhľadávač - + + Please install Python to use the Search Engine. Pre použitie vyhľadávača nainštalujte Python. - + Empty search pattern Prázdny hľadaný reťazec - + Please type a search pattern first Najprv napíšte hľadaný reťazec - + + Stop Zastaviť - Search has finished - Hľadanie ukončené + Hľadanie ukončené - Search has failed - Hľadanie zlyhalo + Hľadanie zlyhalo + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9248,34 +9811,34 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, - + Upload: Nahrávanie: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Sťahovanie: - + Alternative speed limits Alternatívne rýchlostné obmedzenia @@ -9467,32 +10030,32 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Priemerný čas vo fronte: - + Connected peers: Pripojení peeri: - + All-time share ratio: Celkové ratio: - + All-time download: Celkovo stiahnuté: - + Session waste: Zahodené od spustenia: - + All-time upload: Celkovo odoslané: - + Total buffer size: Celková veľkosť bufferov: @@ -9507,12 +10070,12 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, I/O úlohy zaradené do frontu: - + Write cache overload: Preťaženie vyrovnávacej pamäte zápisu: - + Read cache overload: Preťaženie vyrovnávacej pamäte čítania: @@ -9531,51 +10094,67 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, StatusBar - + Connection status: Stav spojenia: - - + + No direct connections. This may indicate network configuration problems. Žiadne priame spojenia. To môže znamenať problém s nastavením siete. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 uzlov - + qBittorrent needs to be restarted! Je potrebné reštartovať qBittorrent! - - - + + + Connection Status: Stav spojenia: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Odpojený. To zvyčajne znamená, že qBittorrent nedokázal počúvať prichádzajúce spojenia na zvolenom porte. - + Online Online - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Kliknutím prepnete na alternatívne rýchlostné obmedzenia - + Click to switch to regular speed limits Kliknutím prepnete na bežné rýchlostné obmedzenia @@ -9604,14 +10183,22 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Dokončené (0) - Resumed (0) - Obnovené (0) + Obnovené (0) - Paused (0) - Pozastavené (0) + Pozastavené (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9673,10 +10260,29 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Completed (%1) Dokončené (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pozastavené (%1) + Pozastavené (%1) @@ -9684,14 +10290,12 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Premiestňovaných (%1) - Resume torrents - Obnoviť torrenty + Obnoviť torrenty - Pause torrents - Pozastaviť torrenty + Pozastaviť torrenty @@ -9699,9 +10303,8 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Odstrániť torrenty - Resumed (%1) - Obnovené (%1) + Obnovené (%1) @@ -9742,17 +10345,17 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, TagFilterModel - + Tags Značky - + All Všetky - + Untagged Neoznačený @@ -9760,54 +10363,66 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, TagFilterWidget - + Add tag... Pridať značku... - + Remove tag Odstrániť značku - + Remove unused tags Odstrániť nepoužívané značky - Resume torrents - Obnoviť torrenty + Obnoviť torrenty - Pause torrents - Pozastaviť torrenty + Pozastaviť torrenty - + Remove torrents Odstrániť torrenty - New Tag - Nová značka + Nová značka + + + + Start torrents + - + + Stop torrents + + + + Tag: Značka: - + + Add tag + + + + Invalid tag name Neplatné meno značky - + Tag name '%1' is invalid - Názov značky '%1' je neplatný. + Meno značky '%1' je neplatný. @@ -9835,7 +10450,7 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Save path for incomplete torrents: - + Cesta uloženia pre nekompletné torrenty: @@ -9875,7 +10490,7 @@ Kliknite na tlačidlo "Vyhľadávacie pluginy ..." dole vpravo v okne, Choose download path - + Vyberte cestu pre sťahovanie @@ -9944,32 +10559,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Názov - + Progress Priebeh - + Download Priority Priorita sťahovania - + Remaining Ostáva - + Availability Dostupnosť - + Total Size Celková veľkosť @@ -10014,102 +10629,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Chyba premenovania - + Renaming Premenovávanie - + New name: Nový názov: - + Column visibility Viditeľnosť stĺpcov - + Resize columns Zmeniť rozmery stĺpcov - + Resize all non-hidden columns to the size of their contents Zmeniť rozmery viditeľných stĺpcov podľa veľkosti ich obsahu - + Open Otvoriť - + Open containing folder Otvoriť obsahujúci adresár - + Rename... Premenovať... - + Priority Priorita - - + + Do not download Nesťahovať - + Normal Normálna - + High Vysoká - + Maximum Maximálna - + By shown file order Podľa zobrazeného poradia súborov - + Normal priority Normálna priorita - + High priority Vysoká priorita - + Maximum priority Maximálna priorita - + Priority by shown file order Priorita podľa zobrazeného poradia súborov + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10134,13 +10767,13 @@ Please choose a different name and try again. - + Select file Vyberte súbor - + Select folder Vyberte adresár @@ -10157,7 +10790,7 @@ Please choose a different name and try again. Hybrid - + Hybridné @@ -10165,58 +10798,10 @@ Please choose a different name and try again. Veľkosť časti: - + Auto Auto - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10263,92 +10848,83 @@ Please choose a different name and try again. Polia - + You can separate tracker tiers / groups with an empty line. Skupiny / úrovne trackerov môžete oddeliť prázdnym riadkom. - + Web seed URLs: URL webových seedov: - + Tracker URLs: URL trackerov: - + Comments: Komentáre: - + Source: Zdroj - + Progress: Priebeh: - + Create Torrent Vytvoriť torrent - - + + Torrent creation failed Vytvorenie torrentu zlyhalo - + Reason: Path to file/folder is not readable. Dôvod: Cestu k súboru/adresáru nemožno prečítať. - + Select where to save the new torrent Vyberte adresár pre uloženie torrentu - + Torrent Files (*.torrent) Torrent súbory (*.torrent) - - Reason: %1 - Dôvod: %1 - - - + Add torrent to transfer list failed. - + Pridanie torrentu do zoznamu prenosov zlyhalo. - + Reason: "%1" - + Dovôd: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Dôvod: Vytvorený torrent je neplatný. Nebude pridaný do zoznamu sťahovaných. + Nepodarilo sa pridať torrent - + Torrent creator Tvorca torrentu - + Torrent created: Torrent vytvorený: @@ -10356,32 +10932,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Nepodarilo sa načítať konfiguráciu sledovaných adresárov. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Nepodarilo sa načítať konfiguráciu sledovaných adresárov z %1. Chyba: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Nepodarilo sa načítať konfiguráciu sledovaných adresárov z %1. Chyba: "Neplatný formát dát." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Nepodarilo sa načítať konfiguráciu sledovaných adresárov z %1. Chyba: %2 - + Watched folder Path cannot be empty. Cesta sledovaného adresára nemôže byť prázdna. - + Watched folder Path cannot be relative. Cesta sledovaného adresára nemôže byť relatívna. @@ -10389,27 +10965,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Neplatná Magnet URI. URI: %1. Dôvod: %2 - + Magnet file too big. File: %1 - + Magnet súbor je priveľký. Súbor: %1 - + Failed to open magnet file: %1 Nepodarilo sa otvoriť magnet súbor: %1 - + Rejecting failed torrent file: %1 - + Odmietnutie torrent súboru, ktorý zlyhal: %1 - + Watching folder: "%1" Sledovanie adresára: "%1" @@ -10417,14 +10993,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - + Nepodarilo sa vyhradiť pamäť pri čítaní súboru. Súbor: "%1". Chyba: "%2" - Invalid metadata - Neplatné metadáta + Neplatné metadáta @@ -10455,279 +11029,374 @@ Please choose a different name and try again. Pre nedokončený torrent použiť inú cestu - + Category: Kategória: - + + Torrent Share Limits + + + Torrent speed limits - Rýchlostné obmedzenia torrentu + Rýchlostné obmedzenia torrentu - + Download: Sťahovanie: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits - + Globálne obmedzenia nebudú prekročené. - + Upload: Nahrávanie: - Torrent share limits - Limity zdieľania torrentu + Limity zdieľania torrentu - Use global share limit - Použiť globálny limit zdieľania + Použiť globálny limit zdieľania - Set no share limit - Žiadny limit + Žiadny limit - Set share limit to - Nastaviť limit zdieľania na + Nastaviť limit zdieľania na - ratio - ratio + ratio - total minutes - + minút celkom - inactive minutes - + minút neaktivity - + Disable DHT for this torrent Vypnúť DHT pre tento torrent - + Download in sequential order Sťahovať v poradí - + Disable PeX for this torrent Vypnúť PeX pre tento torrent - + Download first and last pieces first Sťahovať najprv prvú a poslednú časť - + Disable LSD for this torrent Vypnúť LSD pre tento torrent - + Currently used categories - + Práve používané kategórie - - + + Choose save path Zvoľte cieľový adresár - + Not applicable to private torrents - + Nemožno použiť na súkromné torrenty - No share limit method selected - Nie je vybraná žiadna metóda obmedzenia zdieľania + Nie je vybraná žiadna metóda obmedzenia zdieľania - Please select a limit method first - Prosím, najprv vyberte spôsob obmedzenia + Prosím, najprv vyberte spôsob obmedzenia - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags + + + + + Default + Predvolený + + + + + + Unlimited - - New Tag - Nová značka + + + + Set to + - - Tag: - Značka: + + Seeding time: + - - Invalid tag name - Neplatné meno značky + + + + + + + min + minutes + min - - Tag name '%1' is invalid. + + Inactive seeding time: - - Tag exists - Značka už existuje. + + Action when the limit is reached: + - - Tag name already exists. - Názov značky už existuje. + + Stop torrent + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Chyba: '%1' nie je platný torrent súbor. + + Remove torrent + Odstrániť torrent - - Priority must be an integer - Priorita musí byť celé číslo + + Remove torrent and its content + - - Priority is not valid - Priorita je neplatná. + + Enable super seeding for torrent + Povoliť super seeding pre torrent - - Torrent's metadata has not yet downloaded - Metadáta torrentu ešte neboli stiahnuté + + Ratio: + + + + + TorrentTagsDialog + + + Torrent Tags + Štítky torrentu + + + New Tag + Nová značka + + + + Add tag + + + + + Tag: + Značka: + + + + Invalid tag name + Neplatné meno značky + + + + Tag name '%1' is invalid. + Meno značky '%1' je neplatné. + + + + Tag exists + Značka už existuje. + + + + Tag name already exists. + Názov značky už existuje. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Chyba: '%1' nie je platný torrent súbor. + + + + Priority must be an integer + Priorita musí byť celé číslo + + + + Priority is not valid + Priorita je neplatná. + + + + Torrent's metadata has not yet downloaded + Metadáta torrentu ešte neboli stiahnuté - + File IDs must be integers ID súboru musia byť celé čísla - + File ID is not valid ID súboru nie je platné - - - - + + + + Torrent queueing must be enabled Radenie torrentov musí byť zapnuté - - + + Save path cannot be empty Cesta pre uloženie nemôže byť prázdna - - + + Cannot create target directory Nedá sa vytvoriť cieľový priečinok - - + + Category cannot be empty Kategória nemôže byť prázdna - + Unable to create category Nemožno vytvoriť kategóriu - + Unable to edit category Nemožno upraviť kategóriu - + Unable to export torrent file. Error: %1 - + Nemožno exportovať torrent súbor. Chyba: %1 - + Cannot make save path Nemožno vytvoriť cestu pre uloženie - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid + Parameter 'sort' je chybný + + + + "%1" is not an existing URL - + "%1" is not a valid file index. - + "%1" nie je platný index súboru. - + Index %1 is out of bounds. - + Index %1 je mimo rozsah - - + + Cannot write to directory Nedá sa zapisovať do adresára - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI nastaviť umiestnenie: presunúť "%1", z "%2" do "%3" - + Incorrect torrent name Nesprávny názov torrentu - - + + Incorrect category name Nesprávny názov kategórie @@ -10758,253 +11427,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - Pracuje sa + Funkčné - + Disabled - Vypnuté + Vypnuté - + Disabled for this torrent - + Vypnuté pre tento torrent - + This torrent is private - Torrent je súkromný + Torrent je súkromný - + N/A - nie je k dispozícií + Neuvedené - + Updating... - Prebieha aktualizácia... + Prebieha aktualizácia... - + Not working - Nepracuje sa + Nefunguje - + Tracker error - + Chyba trackera - + Unreachable - + Nedostupné - + Not contacted yet - Zatiaľ nekontaktovaný + Zatiaľ nekontaktovaný - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Tier + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Neplatný stav + + + URL/Announce endpoint + Koncový bod ohlásenia/URL + Tier + Tier + + Protocol - + Protokol - + Status - Stav + Stav - + Peers - + Rovesníci - + Seeds - Seedov + Seedov - + Leeches - Leecheri + Leecheri - + Times Downloaded - Počet stiahnutí + Počet stiahnutí - + Message - Správa + Správa - Next announce - + Ďalšie ohlásenie - Min announce - + Min. ohlásenie - v%1 - + v%1 TrackerListWidget - Working - Pracuje sa - - - Disabled - Vypnuté - - - + This torrent is private Torrent je súkromný - Updating... - Prebieha aktualizácia... - - - Not working - Nepracuje sa - - - Not contacted yet - Zatiaľ nekontaktovaný - - - N/A - nie je k dispozícií - - - + Tracker editing Úprava trackera - + Tracker URL: URL trackera: - - + + Tracker editing failed Úprava trackera zlyhala - + The tracker URL entered is invalid. Zadaná URL trackera je neplatné. - + The tracker URL already exists. URL trackera už existuje. - + Edit tracker URL... Upraviť URL trackera... - + Remove tracker Odstrániť tracker - + Copy tracker URL Skopírovať URL trackera - + Force reannounce to selected trackers Vynútiť znovuohlásenie vybraným trackerom - + Force reannounce to all trackers Vynútiť znovuohlásenie všetkým trackerom - Tier - Tier - - - URL - URL - - - Status - Stav - - - Seeds - Seedov - - - Times Downloaded - Počet stiahnutí - - - + Resize columns Zmeniť rozmery stĺpcov - + Resize all non-hidden columns to the size of their contents Zmeniť rozmery viditeľných stĺpcov podľa veľkosti ich obsahu - Peers - Peery - - - + Add trackers... Pridať trackery... - Leeches - Leecheri - - - Message - Správa - - - + Column visibility Viditeľnosť stĺpcov @@ -11022,125 +11653,108 @@ Please choose a different name and try again. Pridať nasledovné trackery (jeden tracker na riadok): - + µTorrent compatible list URL: Zoznam URL kompatibilný s µTorrent: - + Download trackers list Stiahnuť zoznam trackerov - + Add Pridať - + Trackers list URL error - + Chyba URL zoznamu trackerov - + The trackers list URL cannot be empty - + URL zoznamu trackerov nemôže byť prázdny - + Download trackers list error - + Chyba sťahovania zoznamu trackerov - + Error occurred when downloading the trackers list. Reason: "%1" - + Vyskytla sa chyba počas sťahovania zoznamu trackerov. Dôvod: "%1" TrackersFilterWidget - All (0) - this is for the tracker filter - Všetky (0) - - - Trackerless (0) - Bez trackeru (0) - - - Error (0) - Chyby (0) - - - Warning (0) - Upozornenia (0) - - - Trackerless - Bez trackeru - - - Error (%1) - Chyby (%1) - - - + Warning (%1) Upozornenia (%1) - + Trackerless (%1) Bez trackeru (%1) - + Tracker error (%1) - + Chyba trackera (%1) - + Other error (%1) - + Iná chyba (%1) - + Remove tracker - Odstrániť tracker + Odstrániť tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Obnoviť torrenty + Obnoviť torrenty - Pause torrents - Pozastaviť torrenty + Pozastaviť torrenty - + Remove torrents Odstrániť torrenty - + Removal confirmation - + Potvrdenie odstránenia - + Are you sure you want to remove tracker "%1" from all torrents? - + Ste si istý, že chcete odstrániť tracker "%1" zo všetkých torrentov? - + Don't ask me again. - + Nepýtať sa znova. - + All (%1) this is for the tracker filter Všetky (%1) @@ -11149,9 +11763,9 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument - + 'režim': neplatný argument @@ -11242,9 +11856,8 @@ Please choose a different name and try again. Kontrolujú sa dáta na obnovenie sťahovania - Paused - Pozastavený + Pozastavený @@ -11269,220 +11882,262 @@ Please choose a different name and try again. Chybných - + Name i.e: torrent name Názov - + Size i.e: torrent size Veľkosť - + Progress % Done Priebeh - Status Torrent status (e.g. downloading, seeding, paused) - Stav + Stav - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stav + + + Seeds i.e. full sources (often untranslated) Seedov - + Peers i.e. partial sources (often untranslated) Peery - + Down Speed i.e: Download speed Rýchlosť sťahovania - + Up Speed i.e: Upload speed Rýchlosť nahrávania - + Ratio Share ratio Ratio - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Odhad. čas - + Category Kategória - + Tags Značky - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Pridané v - + Completed On Torrent was completed on 01/01/2010 08:00 Dokončené v - + Tracker Tracker - + Down Limit i.e: Download limit Limit sťah. - + Up Limit i.e: Upload limit Limit nahr. - + Downloaded Amount of data downloaded (e.g. in MB) Stiahnuté - + Uploaded Amount of data uploaded (e.g. in MB) Nahrané - + Session Download Amount of data downloaded since program open (e.g. in MB) Stiahnuté od spustenia - + Session Upload Amount of data uploaded since program open (e.g. in MB) Nahrané od spustenia - + Remaining Amount of data left to download (e.g. in MB) Ostáva - + + Time Active + Time (duration) the torrent is active (not stopped) + Čas aktivity + + + + Yes + Áno + + + + No + Nie + + Time Active Time (duration) the torrent is active (not paused) - Čas aktivity + Čas aktivity - + Save Path Torrent save path - + Cesta uloženia - + Incomplete Save Path Torrent incomplete save path - + Cesta uloženia nekompletných - + Completed Amount of data completed (e.g. in MB) Dokončené - + Ratio Limit Upload share ratio limit Obmedzenie pomeru zdieľania - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Posledné videné ukončenie - + Last Activity Time passed since a chunk was downloaded/uploaded Posledná aktivita - + Total Size i.e. Size including unwanted data Celková veľkosť - + Availability The number of distributed copies of the torrent Dostupnosť - + Info Hash v1 i.e: torrent info hash v1 - Info Hash v2: {1?} + Info Hash v1 - + Info Hash v2 i.e: torrent info hash v2 - Info Hash v2: {2?} + Info Hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Znova ohlásiť o: + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A nie je k dispozícií - + %1 ago e.g.: 1h 20m ago pred %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (seedovaný už %2) @@ -11491,334 +12146,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Viditeľnosť stĺpca - + Recheck confirmation Znovu skontrolovať potvrdenie - + Are you sure you want to recheck the selected torrent(s)? Ste si istý, že chcete znovu skontrolovať vybrané torrenty? - + Rename Premenovať - + New name: Nový názov: - + Choose save path Zvoľte cieľový adresár - Confirm pause - Potvrdiť pozastavenie + Potvrdiť pozastavenie - Would you like to pause all torrents? - Chcete pozastaviť všetky torrenty? + Chcete pozastaviť všetky torrenty? - Confirm resume - Potvrdiť obnovenie + Potvrdiť obnovenie - Would you like to resume all torrents? - Chcete obnoviť všetky torrenty? + Chcete obnoviť všetky torrenty? - + Unable to preview Nie je možné vykonať náhľad súboru - + The selected torrent "%1" does not contain previewable files Vybraný torrent "%1" neobsahuje súbory, u ktorých sa dá zobraziť náhľad. - + Resize columns Zmeniť rozmery stĺpcov - + Resize all non-hidden columns to the size of their contents Zmeniť veľkosť všetkých viditeľných stĺpcov na dĺžku ich obsahu - + Enable automatic torrent management Povoliť automatickú správu torrentu - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Naozaj chcete aktivovať automatickú správu pre vybrané torrenty? Môžu byť presunuté. - Add Tags - Pridať značky + Pridať značky - + Choose folder to save exported .torrent files Vyberte adresár pre ukladanie exportovaných .torrent súborov - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Export .torrent súboru zlyhal. Torrent: "%1". Umiestnenie: "%2". Dôvod: "%3" - + A file with the same name already exists Súbor s rovnakým názvom už existuje - + Export .torrent file error Chyba exportu .torrent súboru - + Remove All Tags Odstrániť všetky štítky - + Remove all tags from selected torrents? Odstrániť všetky štítky z vybratých torrentov? - + Comma-separated tags: Čiarkou oddelené značky: - + Invalid tag Zlá značka - + Tag name: '%1' is invalid Názov značky: '%1' je neplatný - &Resume Resume/start the torrent - Pok&račovať + Pok&račovať - &Pause Pause the torrent - &Pozastaviť + &Pozastaviť - Force Resu&me Force Resume/start the torrent - Vynútiť pokračovanie + Vynútiť pokračovanie - + Pre&view file... Náhľad súboru... - + Torrent &options... Nastavenia torrentu... - + Open destination &folder Otvoriť cieľový adresár - + Move &up i.e. move up in the queue Pos&unúť hore - + Move &down i.e. Move down in the queue Posunúť &dole - + Move to &top i.e. Move to top of the queue Posunúť navrch - + Move to &bottom i.e. Move to bottom of the queue Posunúť nadol - + Set loc&ation... Nastaviť umiestnenie... - + Force rec&heck Vynútiť opätovnú kontrolu - + Force r&eannounce Vynútiť znovuohlás&enie - + &Magnet link &Magnet odkaz - + Torrent &ID &ID torrentu - + + &Comment + &Komentár + + + &Name &Názov - + Info &hash v1 Info &hash v1 - + Info h&ash v2 Info h&ash v2 - + Re&name... Preme&novať... - + Edit trac&kers... Upraviť trac&kery... - + E&xport .torrent... E&xportovať .torrent... - + Categor&y Kategória - + &New... New category... &Nová... - + &Reset Reset category &Resetovať - + Ta&gs Značky - + &Add... Add / assign multiple tags... Prid&ať... - + &Remove All Remove all tags Odst&rániť všetko - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue Poradovník - + &Copy Kopírovať - + Exported torrent is not necessarily the same as the imported Exportovaný torrent nie je nutne rovnaký ako ten importovaný - + Download in sequential order Sťahovať v poradí - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Pri exportovaní .torrent súborov nastali chyby. Pre detaily skontrolujte log vykonávania. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent - Odstr&rániť + Odst&rániť - + Download first and last pieces first Sťahovať najprv prvú a poslednú časť - + Automatic Torrent Management Automatické spravovanie torrentu - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatický režim znamená, že niektoré vlastnosti torrentu (napr. cesta na ukladanie) budú určené na základe priradenej kategórie - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Vynútenie znovuohlásenia nie je možné ak je torrent pozastavený / v poradovníku / v chybovom stave / kontrolovaný + Vynútenie znovuohlásenia nie je možné ak je torrent pozastavený / v poradovníku / v chybovom stave / kontrolovaný - + Super seeding mode Režim super seedovania @@ -11828,71 +12507,76 @@ Please choose a different name and try again. UI Theme Configuration - + Nastavenie motívu používateľského rozhrania Colors - + Farby Color ID - + ID Farby Light Mode - + Svetlý režim Dark Mode - + Tmavý režim Icons - + Ikony Icon ID - + ID ikony - + UI Theme Configuration. - + Nastavenie motívu používateľského rozhrania. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Zmeny motívu používateľského rozhrania nebolo možné plne použiť. Podrobnosti je možné nájsť v Žurnále. - + Couldn't save UI Theme configuration. Reason: %1 - + Nepodarilo sa uložiť nastavenie motívu používateľského rozhrania. Dôvod: %1 - - + + Couldn't remove icon file. File: %1. - + Nepodarilo sa odstrániť súbor ikony. Súbor: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Nepodarilo sa skopírovať súbor ikony: %1. Cieľ: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Zlyhalo načítanie vzhľadu UI zo súboru: "%1" @@ -11912,102 +12596,95 @@ Please choose a different name and try again. Root JSON value is not an object - + Koreňová JSON hodnota nie je objekt Invalid color for ID "%1" is provided by theme - + Neplatná farba pre ID "%1" je poskytnutá motívom Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Migrácia predvolieb zlyhala: WebUI https, súbor: "%1", chyba: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrácia predvolieb: WebUI https, dáta uložené do súboru: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". - + Neplatná hodnota v konfiguračnom súbore, bola vrátená východzia. Kľúč: "%1". Neplatná hodnota: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python nájdený, názov: '%1', verzia: '%2' - - - Python not detected - Python nebol nájdený. - Found Python executable. Name: "%1". Version: "%2" - + Binárka Pythonu sa našla. Názov: "%1". Verzia: "%2" Failed to find Python executable. Path: "%1". - + Nepodarilo sa nájsť binárku Pythonu. Cesta: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Nepodarilo sa nájsť `python3` binárku v systémovej premennej PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Nepodarilo sa nájsť `python` binárku v systémovej premennej PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Nepodarilo sa nájsť `python` binárku vo Windows Registry. Failed to find Python executable - + Nepodarilo sa nájsť Python binárku Utils::IO - + File open error. File: "%1". Error: "%2" - + Chyba pri otváraní súboru. Súbor: "%1". Chyba: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + Veľkosť súboru prekračuje obmedzenie. Súbor: "%1". Veľkosť súboru: %2. Veľkosť obmedzenia: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Veľkosť súboru prekračuje obmedzenie veľkosti dát. Súbor: "%1". Veľkosť súboru: %2. Obmedzenie poľa: %3 - + File read error. File: "%1". Error: "%2" - + Chyba pri čítaní súboru. Súbor: "%1". Chyba: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - + Nesúlad načítanej veľkosti. Súbor: "%1". Očakávaná: %2. Skutočná: %3 @@ -12020,7 +12697,7 @@ Please choose a different name and try again. <html><head/><body><p>Will watch the folder and all its subfolders. In Manual torrent management mode it will also add subfolder name to the selected Save path.</p></body></html> - + <html><head/><body><p>Bude sledovať adresár a všetky jeho podadresáre. V Manuálnom režime správy torrentu tiež pridá meno podadresára k vybranej ceste Uloženia.</p></body></html> @@ -12053,7 +12730,7 @@ Please choose a different name and try again. Folder '%1' is already in watch list. - + Adresár '%1' je už v zozname sledovaných. @@ -12069,72 +12746,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Bol uvedený neprijateľný názov cookie relácie: "%1". Použije sa východzí. - + Unacceptable file type, only regular file is allowed. Neprijateľný typ súboru, iba správne súbory sú povolené. - + Symlinks inside alternative UI folder are forbidden. Symbolické linky sú v alternatívnom UI zakázané. - - Using built-in Web UI. - Používa sa vstavané Web UI. + + Using built-in WebUI. + Používa sa vstavané WebUI. - - Using custom Web UI. Location: "%1". - Používa sa vlastné Web UI. Umiestnenie: "%1". + + Using custom WebUI. Location: "%1". + Používa sa vlastné WebUI. Umiestnenie: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Preklad Web UI do vybraného jazyka (%1) bol úspešne načítaný. + + WebUI translation for selected locale (%1) has been successfully loaded. + WebUI preklad pre vybrané locale (%1) bol úspešne načítaný. - - Couldn't load Web UI translation for selected locale (%1). - Nepodarilo sa načítať preklad Web UI do vybraného jazyka (%1). + + Couldn't load WebUI translation for selected locale (%1). + Nepodarilo sa načítať WebUI preklad pre vybrané locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Chýbajúce ':' oddeľovač vo vlastnej HTTP hlavičke WebUI: "%1" - + Web server error. %1 - + Chyba web servera: %1 - + Web server error. Unknown error. - + Chyba web servera. Neznáma chyba. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Zdrojové hlavičky a cieľový pôvod nesúhlasí! Zdrojová IP: '%1'. Pôvod hlavičky: '%2'. Cieľový zdroj: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Hlavička referera a cieľový pôvod nesúhlasí! Zdrojová IP: '%1'. Pôvod hlavičky: '%2'. Cieľový zdroj: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Neplatné záhlavie hostiteľa, nesúlad portov. Požiadavka zdroje IP: '%1'. Serverový port: '%2'. Prijaté hlavičky hostiteľa: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Neplatné hlavičky hostiteľa. Požiadavka zdroje IP: '%1'. Prijaté hlavičky hostiteľa: '%2' @@ -12142,143 +12819,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS úspešne nastavené + + Credentials are not set + Prihlasovacie údaje nie sú nastavené - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: Nastavenie HTTPS zlyhalo, prechádzam späť na HTTP + + WebUI: HTTPS setup successful + WebUI: HTTPS nastavenie úspešné - - Web UI: Now listening on IP: %1, port: %2 - Web UI: načúva na IP: %1, portu: %2 + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: HTTPS nastavenie zlyhalo, použije sa HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Nie je možné viazať na IP: %1, port: %2. Dôvod: %3 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Načúva na IP: %1, port: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Nemožno viazať na IP: %1, port: %2. Dôvod: %3 + + + + fs + + + Unknown error + Neznáma chyba misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h + %1y %2d - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) Neznáma - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent teraz vypne počítač, pretože sťahovanie všetkých torrentov bolo dokončené. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_sl.ts b/src/lang/qbittorrent_sl.ts index a8bc2dc21fdb..d523d6642a0a 100644 --- a/src/lang/qbittorrent_sl.ts +++ b/src/lang/qbittorrent_sl.ts @@ -14,77 +14,77 @@ O programu - + Authors Avtorji - + Current maintainer Trenutni vzdrževalec - + Greece Grčija - - + + Nationality: Državljanstvo: - - + + E-mail: E-pošta: - - + + Name: Ime: - + Original author Originalni avtor - + France Francija - + Special Thanks Posebna zahvala - + Translators Prevajalci - + License Licenca - + Software Used Uporabljena programska oprema - + qBittorrent was built with the following libraries: qBittorent je bil ustvarjen s sledečimi knjižnicami: - + Copy to clipboard - + Kopiraj v odložišče @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Avtorske pravice %1 2006-2023 Projekt qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Avtorske pravice %1 2006-2024 Projekt qBittorrent @@ -166,14 +166,13 @@ Shrani v - + Never show again Ne prikaži več - Torrent settings - Torrent nastavitve + Torrent nastavitve @@ -191,12 +190,12 @@ Začni torrent - + Torrent information Informacije o torrentu - + Skip hash check Preskoči preverjanje šifre @@ -205,6 +204,11 @@ Use another path for incomplete torrent Uporabi drugačno pot za nedokončan torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Pogoj za ustavitev: - - + + None Brez - - + + Metadata received Prejeti metapodatki - - + + Torrents that have metadata initially will be added as stopped. + Torrenti, ki imajo metapodatke, bodo sprva dodani v premoru. + + + + Files checked Preverjene datoteke - + Add to top of queue Dodaj na vrh čakalne vrste - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Če je izbrano, datoteka .torrent ne bo izbrisana ne glede na nastavitve na plošči "Prenosi" v Možnostih - + Content layout: Struktura vsebine: - + Original Izvirnik - + Create subfolder Ustvari podmapo - + Don't create subfolder Ne ustvari podmape - + Info hash v1: Razpršilo v1: - + Size: Velikost: - + Comment: Komentar: - + Date: Datum: @@ -324,245 +333,182 @@ Zapomni si zadnjo uporabljeno pot za shranjevanje - + Do not delete .torrent file Ne izbriši .torrent datoteke - + Download in sequential order Prejemanje v zaporednem vrstnem redu - + Download first and last pieces first Prejemanje najprej prvih in zadnjih kosov - + Info hash v2: Razpršilo v2: - + Select All Izberi vse - + Select None Ne izberi ničesar - + Save as .torrent file... Shrani kot datoteko .torrent ... - + I/O Error I/O Napaka - Invalid torrent - Napačen torrent - - - + Not Available This comment is unavailable Ni na voljo. - + Not Available This date is unavailable Ni na voljo - + Not available Ni na voljo - Invalid magnet link - Napačna magnetna povezava - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Spodletelo je nalaganje torrenta: %1. -Napaka: %2 - - - This magnet link was not recognized - Ta magnetna povezava ni prepoznavna - - - + Magnet link Magnetna povezava - + Retrieving metadata... Pridobivam podatke... - - + + Choose save path Izberi mapo za shranjevanje - Torrent is already present - Torrent je že prisoten - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' je že na seznamu prenosov. Sledilniki niso bili združeni ker je torrent zaseben. - - - Torrent is already queued for processing. - Torrent že čaka na obdelavo. - - - + No stop condition is set. Nastavljen ni noben pogoj za ustavitev. - + Torrent will stop after metadata is received. Torrent se bo zaustavil, ko se bodo prejeli metapodatki. - - Torrents that have metadata initially aren't affected. - Ne vpliva na torrente, ki že v začetku imajo metapodatke. - - - + Torrent will stop after files are initially checked. Torrent se bo zaustavil po začetnem preverjanju datotek. - + This will also download metadata if it wasn't there initially. S tem se bodo prejeli tudi metapodatki, če še niso znani. - - + + N/A / - Magnet link is already queued for processing. - Magnetna povezava že čaka na obdelavo. - - - + %1 (Free space on disk: %2) %1 (Neporabljen prostor na disku: %2) - + Not available This size is unavailable. Ni na voljo - + Torrent file (*%1) Datoteka torrent (*%1) - + Save as torrent file Shrani kot datoteko .torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Datoteke '%1' z metapodatki torrenta ni bilo mogoče izvoziti: %2. - + Cannot create v2 torrent until its data is fully downloaded. Ni mogoče ustvariti torrenta v2, dokler se njegovi podatki v celoti ne prejmejo. - Cannot download '%1': %2 - Prejem '%1' ni mogoč: %2 - - - + Filter files... Filtriraj datoteke ... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' je že na seznamu prenosov. Sledilnikov ni mogoče združiti, ker je torrent zaseben. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' je že na seznamu prenosov. Ali mu želite pridružiti sledilnike iz novega vira? - - - + Parsing metadata... Razpoznavanje podatkov... - + Metadata retrieval complete Pridobivanje podatkov končano - - Failed to load from URL: %1. -Error: %2 - Nalaganje z URL-ja ni uspelo: %1. -Napaka: %2 - - - Download Error - Napaka prejema - AddTorrentManager Downloading torrent... Source: "%1" - + Prenašanje torrenta... Vir: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Dodajanje torrenta ni uspelo. Vir: "%1". Razlog: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Zaznan je bil poskus dodajanja podvojenega torrenta. Vir: %1. Obstoječi torrent: %2. Rezultat: %3 - + Merging of trackers is disabled - + Združevanje sledilnikov je onemogočeno - + Trackers cannot be merged because it is a private torrent - + Sledilnikov ni mogoče združiti, ker gre za zasebni torrent - + Trackers are merged from new source - + Sledilniki so združeni iz novega vira @@ -590,7 +536,7 @@ Napaka: %2 Note: the current defaults are displayed for reference. - + Opomba: trenutne privzete nastavitve so prikazane za referenco. @@ -648,72 +594,77 @@ Napaka: %2 Preskoči preverjanje zgoščene vrednosti - - - Choose save path - Izberite pot za shranjevanje + + Torrent share limits + Omejitve izmenjave torrenta - - - - - - - Default - Privzeto + + + Choose save path + Izberite pot za shranjevanje + + + - Yes - Da + Default + Privzeto + Yes + Da + + + + + No Ne - + Manual Ročni - + Automatic Samodejni - + Original Izvirnik - + Create subfolder Ustvari podmapo - + Don't create subfolder Ne ustvari podmape - + None Brez - + Metadata received Prejeti metapodatki - + Files checked Preverjene datoteke @@ -721,734 +672,852 @@ Napaka: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Preveri torrent po prenosu - - + + ms milliseconds ms - + Setting Nastavitve - + Value Value set for this setting Vrednost - + (disabled) (onemogočeno) - + (auto) (samodejno) - + + min minutes min - + All addresses Vsi naslovi - + qBittorrent Section qBittorrent profil - - + + Open documentation Odpri dokumentacijo - + All IPv4 addresses Vsi naslovi IPv4 - + All IPv6 addresses Vsi naslovi IPv6 - + libtorrent Section libtorrent profil - + Fastresume files - + Hitro nadaljevanje datotek - + SQLite database (experimental) Podatkovna baza SQLite (preizkusna različica) - + Resume data storage type (requires restart) - + Nadaljuj vrsto hrambe podatkov (potreben je ponovni zagon) - + Normal Navadna - + Below normal Pod navadno - + Medium Srednja - + Low Nizka - + Very low Zelo nizka - - Process memory priority (Windows >= 8 only) - Prioriteta procesa v pomnilniku (samo Windows >= 8) - - - + Physical memory (RAM) usage limit Omejitev porabe pomnilnika (RAM) - + Asynchronous I/O threads Asinhrone V/i niti - + Hashing threads Hash niti - + File pool size Velikost področja dototek - + Outstanding memory when checking torrents Izjemen pomnilnik pri preverjanju torrentov - + Disk cache Predpomnilnik diska - - - - + + + + s seconds s - + Disk cache expiry interval Predpomnilnik poteče v - + Disk queue size Velikost čakalne vrste na disku - - + + Enable OS cache Omogoči predpomnilnik OS - + Coalesce reads & writes Poveži branje in pisanje - + Use piece extent affinity - + Uporabi podobno velikost kosov - + Send upload piece suggestions Pošlji primere za kose za pošiljanje - - - - + + + + + 0 (disabled) 0 (onemogočeno) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Interval shranjevanja podatkov o prenosu [0: onemogočeno] - + Outgoing ports (Min) [0: disabled] - + Vrata za odhodne povezave (najmanj) [0: onemogočeno] - + Outgoing ports (Max) [0: disabled] - + Vrata za odhodne povezave (največ) [0: onemogočeno] - + 0 (permanent lease) - + 0 (trajno oddajanje) - + UPnP lease duration [0: permanent lease] - + Trajanje oddajanja UPnP [0: trajno oddajanje] - + Stop tracker timeout [0: disabled] - + Ustavi časovno omejitev sledilnika [0: onemogočeno] - + Notification timeout [0: infinite, -1: system default] - + Časovna omejitev obvestila [0: neomejeno, -1: sistemsko privzeto] - + Maximum outstanding requests to a single peer Največje število čakajočih zahtev posameznemu soležniku - - - - - + + + + + KiB KiB - + (infinite) - + (neomejeno) - + (system default) + (sistemsko privzeto) + + + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode - + This option is less effective on Linux V sistemu Linux je ta možnost manj učinkovita - + + Process memory priority + Prioriteta procesa v pomnilniku + + + Bdecode depth limit - + Omejitev globine Bdecode - + Bdecode token limit - + Omejitev žetona Bdecode - + Default Privzeto - + Memory mapped files - + Datoteke, preslikane v pomnilnik - + POSIX-compliant - V skladu s standardi POSIX + Skladno s POSIX - - Disk IO type (requires restart) + + Simple pread/pwrite - - + + Disk IO type (requires restart) + Tip IO diska (zahtevan je ponovni zagon) + + + + Disable OS cache Onemogoči predpomnilnik OS - + Disk IO read mode - + Način branja IO diska - + Write-through - + Prepiši - + Disk IO write mode - + Način pisanja IO diska - + Send buffer watermark Pošlji oznako medpomnilnika - + Send buffer low watermark Pošlji oznako zapolnjenega medpomnilnika - + Send buffer watermark factor Pošlji faktor oznake medpomnilnika - + Outgoing connections per second Odhodnih povezav na sekundo - - + + 0 (system default) - + 0 (sistemsko privzeto) - + Socket send buffer size [0: system default] - + Velikost vtičnika za medpomnilnik pošiljanja [0: sistemsko privzeto] - + Socket receive buffer size [0: system default] - + Velikost vtičnika za medpomnilnik prejemanja [0: sistemsko privzeto] - + Socket backlog size + Velikost vtičnika za kontrolni seznam + + + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + .torrent file size limit Velikostna omejitev datoteke .torrent - + Type of service (ToS) for connections to peers Vrsta storitve (ToS) za povezovanje s soležniki - + Prefer TCP Raje uporabi TCP - + Peer proportional (throttles TCP) - + Soležniki sorazmerno (duši TCP) - + Support internationalized domain name (IDN) - + Podpora internacionaliziranim domenam (IDN) - + Allow multiple connections from the same IP address Dovoli več povezav z istega IP naslova - + Validate HTTPS tracker certificates Validiraj HTTPS certifikate trackerja - + Server-side request forgery (SSRF) mitigation - + Ublažitev ponarejanja zahtev na strani strežnika (SSRF) - + Disallow connection to peers on privileged ports Prepovej povezavo do soležnikov na priviligiranih vratih - + + It appends the text to the window title to help distinguish qBittorent instances + Naslovu okna doda besedilo, ki pomaga razlikovati primerke qBittorent + + + + Customize application instance name + Prilagoditev imena instance aplikacije + + + It controls the internal state update interval which in turn will affect UI updates - + Nadzira interni interval posodobitve stanja, kar bo vplivalo na posodobitve uporabniškega vmesnika - + Refresh interval Interval osveževanja - + Resolve peer host names Razreši host imena soležnikov - + IP address reported to trackers (requires restart) IP-naslov, sporočen sledilnikom (zahteva ponovni zagon) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Znova sporoči vsem sledilnikom, ko se spremeni IP ali vrata - + Enable icons in menus Omogoči ikone v menijih - + Enable port forwarding for embedded tracker Omogoči posredovanje vrat za vgrajeni sledilnik - - (Auto detect if empty) + + Enable quarantine for downloaded files + Omogoči karanteno za prenesene datoteke + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Omogoči oznako Mark-of-the-Web (MOTW) za prenesene datoteke + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - + + Ignore SSL errors + + + + + (Auto detect if empty) + (Samodejno zazna, če je prazno) + + + Python executable path (may require restart) + Pot izvršljive datoteke Python (morda bo potreben ponovni zagon) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sec + + + + -1 (unlimited) - - Peer turnover disconnect percentage + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Potrdi odstranitev sledilnika iz vseh torrentov + + + + Peer turnover disconnect percentage + Delež soležnikov s prekinjeno izmenjavo + + + Peer turnover threshold percentage - + Delež soležnikov s prekinjeno izmenjavo - + Peer turnover disconnect interval - + Interval med prekinitvami izmenjave soležnikov - + Resets to default if empty - + Ponastavi na privzeto, če je prazno - + DHT bootstrap nodes - + DHT zagonsko vozlišče - + I2P inbound quantity - + I2P vhodna količina - + I2P outbound quantity - + I2P izhodna količina - + I2P inbound length - + Dolžina vhodnega I2P - + I2P outbound length - + Dolžina izhodnega I2P - + Display notifications Prikaži obvestila - + Display notifications for added torrents Prikaži obvestila za dodane torrente - + Download tracker's favicon Prenesi ikono zaznamka sledilnika - + Save path history length Dolžina zgodovine mest shranjevanja - + Enable speed graphs Omogoči grafe hitrosti - + Fixed slots - + Fiksne reže - + Upload rate based - + Temelji na stopnji nalaganja - + Upload slots behavior Vedenje povezav za pošiljanje - + Round-robin - + Krožen - + Fastest upload Najhitrejše pošiljanje - + Anti-leech - + Proti odjemalcem - + Upload choking algorithm Pošlji algoritem blokiranja - + Confirm torrent recheck Potrdi ponovno preverjanje torrenta - + Confirm removal of all tags Potrdi odstranitev vseh oznak - + Always announce to all trackers in a tier Vedno sporoči vsem sledilcem na stopnji - + Always announce to all tiers Vedno sporoči vsem stopnjam - + Any interface i.e. Any network interface Katerikoli vmesnik - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP algoritem mešanega načina - + Resolve peer countries Razreši države soležnikov - + Network interface Omrežni vmesnik - + Optional IP address to bind to Izbiren IP naslov za povezavo - + Max concurrent HTTP announces Največje število HTTP naznanitev - + Enable embedded tracker Omogoči vdelane sledilnike - + Embedded tracker port Vrata vdelanih sledilnikov - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 zagnan + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Izvajane v prenosnem načinu. Mapa profila je bila najdena samodejno na: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Zaznana zastavica odvečne ukazne vrstice: "%1". Prenosni način pomeni relativno hitro nadaljevanje. - + Using config directory: %1 Uporabljen imenik za nastavitve: %1 - + Torrent name: %1 Ime torrenta: %1 - + Torrent size: %1 Velikost torrenta: %1 - + Save path: %1 Mesto shranjevanja: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent je bil prejet v %1. - + + Thank you for using qBittorrent. Hvala, ker uporabljate qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, pošilja E-poštno obvestilo - + Add torrent failed - + Dodajanje torrenta spodletelo - + Couldn't add torrent '%1', reason: %2. - + Torrenta %1 ni bilo mogoče dodati, razlog: %2. - + + The WebUI administrator username is: %1 + Uporabniško ime skrbnika WebUI je: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Skrbniško geslo WebUI ni bilo nastavljeno. Za to sejo je na voljo začasno geslo: %1 + + + + You should set your own password in program preferences. + Nastaviti si morate lastno geslo v nastavitvah programa. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI je onemogočen! Če želite omogočiti spletni uporabniški vmesnik, ročno uredite konfiguracijsko datoteko. - + Running external program. Torrent: "%1". Command: `%2` Izvajanje zunanjega programa. Torrent: "%1". Ukaz: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Zagon zunanjega programa ni uspel. Torrent: "%1". Ukaz: `%2` - + Torrent "%1" has finished downloading Prejemanje torrenta "%1" dokončano - + WebUI will be started shortly after internal preparations. Please wait... WebUI se bo zagnal po notranjih pripravah. Počakajte ... - - + + Loading torrents... Nalaganje torrentov ... - + E&xit I&zhod - + I/O Error i.e: Input/Output Error Napaka I/O - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Napaka: %2 Razlog: %2 - Error - Napaka - - - Failed to add torrent: %1 - Torrenta ni bilo mogoče dodati: %1 - - - + Torrent added Torrent dodan - + '%1' was added. e.g: xxx.avi was added. '%1' je dodan. - + Download completed Prejem dokončan - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - Prejemanje '%1' je dokončano. - - - URL download error - Napaka pri prejemu URL-ja + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 se je zagnal. ID procesa: %2 - Couldn't download file at URL '%1', reason: %2. - Datoteke na naslovu '%1' ni bilo mogoče prejeti, razlog: %2. + + This is a test email. + - Torrent file association - Povezava datoteke torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent ni privzeti program za odpiranje datotek .torrent in magnetnih povezav. -Ali želite nastaviti qBittorrent kot privzeti program za te vrste? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + Prejemanje '%1' je dokončano. - + Information Podatki - + To fix the error, you may need to edit the config file manually. - + Če želite odpraviti napako, boste morda morali konfiguracijsko datoteko urediti ročno. - + To control qBittorrent, access the WebUI at: %1 Za upravljanje qBittorrenta odprite spletni vmesnik na: %1 - - The Web UI administrator username is: %1 - Skrbniško uporabniško ime spletnega vmesnika je: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Skrbniško geslo spletnega vmesnika je nespremenjeno s privzete vrednosti: %1 - - - - This is a security risk, please change your password in program preferences. - To je varnostno tveganje, zato spremenite geslo v možnostih programa. - - - Application failed to start. - Program se ni mogel zagnati. - - - + Exit Izhod - + Recursive download confirmation - Rekurzivna potrditev prejema + Rekurzivna potrditev prejema - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' vsebuje datoteke .torrent. Ali želite nadaljevati z njihovim prejemom? + Torrent '%1' vsebuje datoteke .torrent. Ali želite nadaljevati z njihovim prejemom? - + Never - Nikoli + Nikoli - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Rekurzivni prenos datoteke .torrent znotraj torrenta. Izvorni torrent: "%1". Datoteka: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Omejitve porabe pomnilnika (RAM) ni bilo mogoče nastaviti. Koda napake: %1. Sporočilo napake: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + Nastavitev trde omejitve uporabe fizičnega pomnilnika (RAM) ni uspela. Zahtevana velikost: %1. Sistemska trda omejitev: %2. Koda napake: %3. Sporočilo o napaki: "%4" - + qBittorrent termination initiated Začeta zaustavitev programa qBittorrent - + qBittorrent is shutting down... qBittorrent se zaustavlja ... - + Saving torrent progress... Shranjujem napredek torrenta ... - + qBittorrent is now ready to exit qBittorrent je zdaj pripravljen na izhod @@ -1597,7 +1637,7 @@ Ali želite nastaviti qBittorrent kot privzeti program za te vrste? AsyncFileStorage - + Could not create directory '%1'. Imenika "%1" ni bilo mogoče ustvariti. @@ -1605,22 +1645,22 @@ Ali želite nastaviti qBittorrent kot privzeti program za te vrste? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Prijava v WebAPI neuspešna. Razlog: IP je bil bannan, IP: %1, uporabniško ime: %2 - + Your IP address has been banned after too many failed authentication attempts. Vaš naslov IP je bil izobčen zaradi prevelikega števila neuspešnih poskusov overitve. - + WebAPI login success. IP: %1 Uspešna prijava v WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Prijava v WebAPI neuspešna. Razlog: neveljavni prijavni podatki, število poskusov: %1, IP: %2, uporabniško ime: %3 @@ -1668,12 +1708,12 @@ Ali želite nastaviti qBittorrent kot privzeti program za te vrste?Prednost: - + Must Not Contain: Ne sme vsebovati: - + Episode Filter: Filter epizod: @@ -1727,263 +1767,263 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 &Izvozi... - + Matches articles based on episode filter. Prilagodi članke na podlagi filtra epizod. - + Example: Primer: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match bo uejlo epizode ene sezone 2, 5, 8 do 15, 30 in naprej - + Episode filter rules: Filter pravila epizod: - + Season number is a mandatory non-zero value Številka sezone je obvezno vrednost večja od 0 - + Filter must end with semicolon Filter se mora končati z pomišljajem - + Three range types for episodes are supported: Tri vrste epizod so podprte: - + Single number: <b>1x25;</b> matches episode 25 of season one Sama številka: <b>1x25;</b> ustreza epizodi 25 sezone 1 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normalen razpon: <b>1x25-40;</b> ustreza epizodam 25 do 40 sezone 1 - + Episode number is a mandatory positive value Številka sezone je obvezno vrednost večja od 0 - + Rules Pravila - + Rules (legacy) Pravila (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Neskončen razpon: <b>1x25-;</b> ustreza epizodam 25 in naprej sezone 1 in vsem epizodam kasnejših sezon - + Last Match: %1 days ago Zadnje ujemanje: pred %1 dnevi - + Last Match: Unknown Zadnje ujemanje: Neznano - + New rule name Ime novega pravila - + Please type the name of the new download rule. Prosim vpiši ime novega pravila prenosov. - - + + Rule name conflict Konflikt imen pravil. - - + + A rule with this name already exists, please choose another name. Pravilo z tem imenom že obstaja, prosim izberi drugo ime. - + Are you sure you want to remove the download rule named '%1'? Ali zares želiš odstraniti pravilo prenosov z imenom %1? - + Are you sure you want to remove the selected download rules? Ali ste prepričani, da želite odstraniti izbrana pravila za prejem? - + Rule deletion confirmation Potrditev odstranitev pravila - + Invalid action Neveljavno dejanje - + The list is empty, there is nothing to export. Seznam je prazen. Ničesar ni za izvoz. - + Export RSS rules Izvozi RSS pravila - + I/O Error I/O Napaka - + Failed to create the destination file. Reason: %1 Spodletelo ustvarjanje ciljne datoteke. Razlog: %1 - + Import RSS rules Uvozi RSS pravila - + Failed to import the selected rules file. Reason: %1 Spodletelo uvažanje izbrane datoteke s pravili. Razlog: %1 - + Add new rule... Dodaj novo pravilo ... - + Delete rule Odstrani pravilo - + Rename rule... Preimenuj pravilo ... - + Delete selected rules Odstrani izbrana pravila - + Clear downloaded episodes... Počisti prenesene epizode... - + Rule renaming Preimenovanje pravila - + Please type the new rule name Vpišite novo ime pravila - + Clear downloaded episodes Počisti prenesene epizode - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Ali ste prepričani da želite počistiti seznam prenesenih epizod za izbrano pravilo? - + Regex mode: use Perl-compatible regular expressions Način regularnega izraza: uporabite Perlu kompatibilne regularne izraze - - + + Position %1: %2 Položaj %1: %2 - + Wildcard mode: you can use Način nadomestnega znaka: lahko uporabite - - + + Import error Napaka pri uvozu - + Failed to read the file. %1 Branje datoteke ni uspelo. %1 - + ? to match any single character ? za ujemanje enega znaka - + * to match zero or more of any characters * za ujemanje nič ali več znakov - + Whitespaces count as AND operators (all words, any order) Presledki delujejo kot IN funkcije (vse besede, kakršen koli red) - + | is used as OR operator | deluje kot ALI funkcija - + If word order is important use * instead of whitespace. Če je vrstni red besed pomemben uporabi * namesto presledka. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Izraz s praznim %1 delom (npr. %2) - + will match all articles. se bo ujemal z vsemi članki. - + will exclude all articles. bo izločil vse članke. @@ -2025,53 +2065,58 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Ne morem ustvariti mape za nadaljevanje torrenta: "%1" - + Cannot parse resume data: invalid format Podatkov o nadaljevanju ni mogoče razčleniti: neveljavna oblika - - + + Cannot parse torrent info: %1 Podatkov o torrentu ni mogoče razčleniti: %1 - + Cannot parse torrent info: invalid format Podatkov o torrentu ni mogoče razčleniti: neveljavna oblika - + + Mismatching info-hash detected in resume data + V podatkih o nadaljevanju je bila zaznana neujemajoča se zgoščena informacija + + + Couldn't save torrent metadata to '%1'. Error: %2. Metapodatkov torrentov ni bilo mogoče shraniti v datoteko '%1'. Napaka: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Podatkov o nadaljevanju torrenta ni bilo mogoče shraniti v '%1'. Napaka: %2. - + Couldn't load torrents queue: %1 Čakalne vrste torrentov ni bilo mogoče naložiti: %1 - + Cannot parse resume data: %1 - + Podatkov o nadaljevanju ni mogoče razčleniti: %1 - + Resume data is invalid: neither metadata nor info-hash was found Podatki o nadaljevanju so neveljavni: zaznani niso bili niti metapodatki niti informativna zgoščena vrednost - + Couldn't save data to '%1'. Error: %2 Podatkov ni bilo mogoče shraniti v '%1'. Napaka: %2 @@ -2079,61 +2124,61 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 BitTorrent::DBResumeDataStorage - + Not found. Ni najdeno. - + Couldn't load resume data of torrent '%1'. Error: %2 - + Podatkov o nadaljevanju torrenta '%1' ni bilo mogoče naložiti. Napaka: %2 - - + + Database is corrupted. Zbirka podatkov je poškodovana. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Načina beleženja Write-Ahead Logging (WAL) ni bilo možno omogočiti. Napaka: %1. - + Couldn't obtain query result. - + Rezultata poizvedbe ni bilo mogoče pridobiti. - + WAL mode is probably unsupported due to filesystem limitations. - + Način WAL verjetno ni podprt zaradi omejitev datotečnega sistema. - + Couldn't begin transaction. Error: %1 - + Transakcije ni bilo mogoče začeti. Napaka: %1 BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Metapodatkov torrentov ni bilo mogoče shraniti. Napaka: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Podatkov o nadaljevanju za torrent '%1' ni bilo mogoče shraniti. Napaka: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Podatkov o nadaljevanju torrenta '%1' ni bilo mogoče izbrisati. Napaka: %2 - + Couldn't store torrents queue positions. Error: %1 Položajev torrentov v čakalni vrsti ni bilo mogoče shraniti. Napaka: %1 @@ -2141,578 +2186,620 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - - - - + Podpora za porazdeljeno zgoščeno tabelo (DHT): %1 + + + + + + + + + + + ON VKLJUČENO - - - - - - - - - + + + + + + + + + OFF IZKLJUČENO - - + + Local Peer Discovery support: %1 - + Podpora za lokalno odkrivanje soležnikov: %1 - + Restart is required to toggle Peer Exchange (PeX) support Za vklop ali izklop izmenjave soležnikov (PeX) je potreben ponovni zagon - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrenta ni bilo mogoče nadaljevati. Torrent: "%1". Razlog: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Torrenta ni bilo mogoče nadaljevati: zaznan je neskladen ID torrenta. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Zaznani so neskladni podatki: v datoteki z nastavitvami manjka kategorija. Kategorija bo obnovljena, vendar bodo njene nastavitve ponastavljene. Torrent: "%1". Kategorija: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Zaznani so neskladni podatki: neveljavna kategorija. Torrent: "%1". Kategorija: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Zaznano je neujemanje med potmi shranjevanja obnovljene kategorije in trenutno potjo shranjevanja torrenta. Torrent se je preklopil na ročni način. Torrent: "%1". Kategorija: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Zaznani so neskladni podatki: v datoteki z nastavitvami manjka oznaka. Oznaka bo obnovljena. Torrent: "%1". Oznaka: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Zaznani so neskladni podatki: neveljavna oznaka. Torrent: "%1". Oznaka: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Zaznan je dogodek bujenja sistema. Ponovno obveščanje vseh sledilnikov... - + Peer ID: "%1" ID soležnika: "%1" - + HTTP User-Agent: "%1" Uporabniški agent HTTP: "%1" - + Peer Exchange (PeX) support: %1 Podpora za izmenjavo soležnikov (PeX): %1 - - + + Anonymous mode: %1 Anonimni način: %1 - - + + Encryption support: %1 Podpora za šifriranje: %1 - - + + FORCED PRISILJENO - + Could not find GUID of network interface. Interface: "%1" GUID-ja omrežnega vmesnika ni bilo mogoče najti. Razlog: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Poskus poslušanja na tem seznamu naslovov IP: "%1" - + Torrent reached the share ratio limit. Torrent je dosegel omejitev razmerja deljenja. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent odstranjen. + Torrent odstranjen. - - - Removed torrent and deleted its content. - Torrent odstranjen in njegova vsebina izbrisana. + Torrent odstranjen in njegova vsebina izbrisana. - - - Torrent paused. - Torrent začasno ustavljen. + Torrent začasno ustavljen. - - - + Super seeding enabled. Super sejanje omogočeno. - + Torrent reached the seeding time limit. Torrent je dosegel omejitev časa sejanja. - + Torrent reached the inactive seeding time limit. - + Torrent je dosegel časovno omejitev neaktivnega sejanja. - + Failed to load torrent. Reason: "%1" Torrenta ni bilo mogoče naložiti. Razlog: "%1" - + I2P error. Message: "%1". + Napaka I2P. Sporočilo: "%1". + + + + UPnP/NAT-PMP support: ON + Podpora za UPnP/NAT-PMP: VKLJUČENA + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Prejemanje torrenta, počakajte ... Vir: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Torrenta ni bilo mogoče naložiti. Vir: "%1". Razlog: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Zaznan je bil poskus dodajanja dvojnika torrenta. Spajanje sledilnikov je onemogočeno. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Zaznan je bil poskus dodajanja dvojnika torrenta. Spajanje sledilnikov ni mogoče, ker je torrent zaseben. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Zaznan je bil poskus dodajanja dvojnika torrenta. Sledilniki so pripojeni iz novega vira. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Podpora za UPnP/NAT-PMP: VKLJUČENA + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Podpora za UPnP/NAT-PMP: IZKLJUČENA + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Torrenta ni bilo mogoče izvoziti. Torrent: "%1". Cilj: "%2". Razlog: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 - System network status changed to %1 - e.g: System network status changed to ONLINE - Stanje omrežja sistema spremenjeno v %1 + + Merging of trackers is disabled + Združevanje sledilnikov je onemogočeno - ONLINE - POVEZAN + + Trackers cannot be merged because it is a private torrent + Sledilnikov ni mogoče združiti, ker gre za zasebni torrent - OFFLINE - BREZ POVEZAVE + + Trackers are merged from new source + Sledilniki so združeni iz novega vira + + + + UPnP/NAT-PMP support: OFF + Podpora za UPnP/NAT-PMP: IZKLJUČENA - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Nastavitve omrežja %1 so se spremenile, osveževanje povezave za sejo + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Torrenta ni bilo mogoče izvoziti. Torrent: "%1". Cilj: "%2". Razlog: "%3" - + + Aborted saving resume data. Number of outstanding torrents: %1 + Shranjevanje podatkov o nadaljevanju je prekinjeno. Število torrentov v prejemanju: %1 + + + The configured network address is invalid. Address: "%1" Nastavljeni omrežni naslov je neveljaven. Naslov: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + Konfiguriranega omrežnega naslova za poslušanje ni bilo mogoče najti. Naslov: "%1" - + The configured network interface is invalid. Interface: "%1" Nastavljeni omrežni vmesnik je neveljaven. Vmesnik: "%1" - - Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" - + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" + Zavrnjen neveljaven naslov IP med uporabo seznama prepovedanih naslovov IP. IP: "%1" + + + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Sledilnik dodan torrentu. Torrent: "%1". Sledilnik: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Sledilnik odstranjen iz torrenta. Torrent: "%1". Sledilnik: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" URL sejalca dodan torrentu. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" + Odstranjen URL semena iz torrenta. Torrent: "%1". URL: "%2" + + + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - Torrent paused. Torrent: "%1" - Torrent začasno ustavljen. Torrent: "%1" + Torrent začasno ustavljen. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent se nadaljuje. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Prejemanje torrenta dokončano. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Premik torrenta preklican. Torrent: "%1". Vir: "%2". Cilj: "%3" - - Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination + + Torrent stopped. Torrent: "%1" - + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination + Premika torrenta ni bilo mogoče dodati v čakalno vrsto. Torrent: "%1". Vir: "%2". Cilj: "%3". Razlog: torrent se trenutno premika na cilj + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Premika torrenta ni bilo mogoče dodati v čakalno vrsto. Torrent: "%1". Vir: "%2". Cilj: "%3". Razlog: obe poti kažeta na isto lokacijo - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Premik torrenta je dodan v čakalno vrsto. Torrent: "%1". Vir: "%2". Cilj: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Začetek premikanja torrenta. Torrent: "%1". Cilj: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Nastavitev kategorij ni bilo mogoče shraniti. Datoteka: "%1". Napaka: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Nastavitev kategorij ni bilo mogoče razčleniti. Datoteka: "%1". Napaka: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 Datoteka s filtri IP uspešno razčlenjena. Število uveljavljenih pravil: %1 - + Failed to parse the IP filter file Datoteke s filtri IP ni bilo mogoče razčleniti - + Restored torrent. Torrent: "%1" Torrent obnovljen. Torrent: "%1" - + Added new torrent. Torrent: "%1" Nov torrent dodan. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Napaka torrenta. Torrent: "%1". Napaka: "%2" - - Removed torrent. Torrent: "%1" - Torrent odstranjen. Torrent: "%1" + Torrent odstranjen. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent odstranjen in njegova vsebina izbrisana. Torrent: "%1" + Torrent odstranjen in njegova vsebina izbrisana. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrentu manjkajo parametri SSL. Torrent: "%1". Sporočilo: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Opozorilo o napaki datoteke. Torrent: "%1". Datoteka: "%2". Vzrok: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + Preslikava vrat UPnP/NAT-PMP ni uspela. Sporočilo: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + Preslikava vrat UPnP/NAT-PMP je uspela. Sporočilo: "%1" - + IP filter this peer was blocked. Reason: IP filter. Filter IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtrirana vrata (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). vrata s prednostmi (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + qBittorrent seja je naletela na resno napako. Razlog: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Napaka posrednika SOCKS5. Naslov: %1. Sporočilo: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 omejiitve mešanega načina - + Failed to load Categories. %1 Kategorij ni bilo mogoče naložiti. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Nastavitev kategorij ni bilo mogoče naložiti. Datoteka: "%1". Napaka: "Neveljavna oblika podatkov" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + Torrent je bil odstranjen, vendar njegove vsebine in/ali delne datoteke ni bilo možno izbrisati. Torrent: "%1". Napaka: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 je onemogočen - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 je onemogočen - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + DNS iskanje URL semena ni uspelo. Torrent: "%1". URL: "%2". Napaka: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Prejeto sporočilo o napaki iz naslova URL. Torrent: "%1". URL: "%2". Sporočilo: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Uspešno poslušanje na IP. IP: "%1". Vrata: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Neuspešno poslušanje na IP. IP: "%1". Vrata: "%2/%3". Razlog: "%4" - + Detected external IP. IP: "%1" Zaznan zunanji IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Napaka: notranja čakalna vrsta opozoril je polna in opozorila so izpuščena, morda boste opazili poslabšano delovanje. Izpuščena vrsta opozorila: "%1". Sporočilo: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent uspešno prestavljen. Torrent: "%1". Cilj: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Torrenta ni bilo mogoče premakniti. Torrent: "%1". Vir: "%2". Cilj: "%3". Razlog: "%4" - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - Postopek prekinjen - - - - - Create new torrent file failed. Reason: %1. - Ustvarjanje nove datoteke torrenta ni uspelo. Razlog: %1. + + Failed to start seeding. + Sejanja ni bilo mogoče začeti. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Postopek prekinjen + Postopek prekinjen + + Create new torrent file failed. Reason: %1. - Ustvarjanje nove datoteke torrenta ni uspelo. Razlog: %1. + Ustvarjanje nove datoteke torrenta ni uspelo. Razlog: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Dodajanje soležnika "%1" torrentu "%2" ni uspelo. Razlog: %3 - + Peer "%1" is added to torrent "%2" Soležnik "%1" je dodan torrentu "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Zaznani so nepričakovani podatki. Torrent: %1. Podatki: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Ni bilo mogoče pisati v datoteko. Razlog: "%1". Torrent je sedaj v načinu samo za pošiljanje. - + Download first and last piece first: %1, torrent: '%2' Najprej prejmi prvi in zadnji kos: %1, torrent: "%2" - + On vklopljeno - + Off izklopljeno - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Torrenta ni bilo mogoče znova naložiti. Torrent: %1. Razlog: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Torrenta ni bilo mogoče obnoviti. Datoteke so bile verjetno premaknjene ali pa shramba ni na voljo. Torrent: "%1". Razlog: "%2" - + Missing metadata Manjkajoči metapodatki - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Preimenovanje datoteke ni uspelo. Torrent: "%1", datoteka: "%2", razlog: "%3" - + Performance alert: %1. More info: %2 Opozorilo o učinkovitosti delovanja: %1. Več informacij: %2 @@ -2733,184 +2820,198 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parameter '%1' mora slediti sintaksi '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parameter '%1' mora slediti sintaksi '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Pričakovano število v okoljski spremenljivki '%1', ampak dobljeno '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parameter '%1' mora slediti sintaksi '%1=%2' + Parameter '%1' mora slediti sintaksi '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Pričakovano %1 v okoljski spremenljivki '%2', ampak dobljeno '%3' - - + + %1 must specify a valid port (1 to 65535). %1 mora določiti veljavna vrata ( 1 do 65535). - + Usage: Uporaba: - + [options] [(<filename> | <url>)...] - + Options: Možnosti: - + Display program version and exit Pokaži različico programa in zapri - + Display this help message and exit Prikaži sporočilo s pomočjo in zapri - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parameter '%1' mora slediti sintaksi '%1=%2' + + + + Confirm the legal notice + + + + + port vrata - - Change the Web UI port - Spremeni vrata spletnega vmesnika + + Change the WebUI port + Spremeni vrata WebUI - + Change the torrenting port Spremeni vrata za prenašanje torrentov - + Disable splash screen Onemogoči pozdravno okno - + Run in daemon-mode (background) Zaženi v načinu ozadnjega opravila (v ozadju) - + dir Use appropriate short form or abbreviation of "directory" mapa - + Store configuration files in <dir> Shrani konfiguracijske datoteke v <dir> - - + + name ime - + Store configuration files in directories qBittorrent_<name> Shrani konfiguracijske datoteke v mapah qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Vdri v libtorrent datoteke za hitro nadaljevanje in ustvari poti datotek ki se nanašajo na profilno mapo - + files or URLs datoteke ali URL-ji - + Download the torrents passed by the user Prenesi datoteke, ki jih je uporabnik preskočil - + Options when adding new torrents: Možnosti ob dodajanju novih torrentov: - + path pot - + Torrent save path Pot za shranjevanje torrenta - + + Add torrents as running or stopped + + + Add torrents as started or paused - Dodaj torrente kot začete ali ustavljene + Dodaj torrente kot začete ali ustavljene - + Skip hash check Preskoči preverjanje zgoščene vrednosti - + Assign torrents to category. If the category doesn't exist, it will be created. Dodeli torrente kategoriji. Če kategorija ne obstaja bo ustvarjena. - + Download files in sequential order Prejemanje datotek v zaporednem vrstnem redu - + Download first and last pieces first Prejemanje najprej prvih in zadnjih kosov - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Določi ali se pojavno okno "Dodaj nov torrent" prikaže ob dodajanju novih torrentov. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Vrednosti možnosti so lahko posredovane preko okoljskih spremenljivk. Za možnost imenovano 'parameter-name', je ime okoljske spremenljivke 'QBT_PARAMETER_NAME' (veliki znaki, '-' je zamenjan z '_'). Da preideš zastavljene vrednost nastavi spremenljivko na '1' ali 'TRUE'. Na primer, da onemogočiš pozdravno okno: - + Command line parameters take precedence over environment variables Parametri ukazne vrstice imajo prednost pred okoljskimi spremenljivkami - + Help Pomoč @@ -2918,17 +3019,17 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 CategoryFilterModel - + Categories Kategorije - + All Vse - + Uncategorized Ne kategorizirani @@ -2962,13 +3063,21 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 - Resume torrents - Nadaljuj torrente + Start torrents + + Stop torrents + + + + Resume torrents + Nadaljuj torrente + + Pause torrents - Ustavi torrente + Ustavi torrente @@ -2979,15 +3088,20 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 ColorWidget - + Edit... - + Uredi... - + Reset Ponastavi + + + System + + CookiesDialog @@ -3028,22 +3142,22 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 - + Barv teme po meri ni bilo mogoče naložiti. %1 DefaultThemeSource - + Failed to load default theme colors. %1 - + Barv privzete teme ni bilo mogoče naložiti. %1 @@ -3060,23 +3174,27 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 + Also remove the content files + + + Also permanently delete the files - Trajno izbriši tudi datoteke + Trajno izbriši tudi datoteke - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Ali ste prepričani, da želite odstraniti '%1' s seznama prenosov? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Ali ste prepričani, da želite odstraniti %1 torrentov s seznama prenosov? - + Remove Odstrani @@ -3089,12 +3207,12 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 Prejem z URLjev - + Add torrent links Dodaj torrent povezave - + One link per line (HTTP links, Magnet links and info-hashes are supported) Ena povezava na vrstico (povezave HTTP, magnetne povezave in info-šifre so podprte) @@ -3104,12 +3222,12 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 Prejem - + No URL entered Ni bilo vnesenega URLja - + Please type at least one URL. Vpišite vsaj en URL. @@ -3268,64 +3386,91 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 Napaka razčlenjevanja: Datoteka filtra ni veljavna datoteka PeerGuardian P2B. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Prenašanje torrenta... Vir: "%1# - Trackers cannot be merged because it is a private torrent - + Sledilnikov ni mogoče združiti, ker gre za zasebni torrent - + Torrent is already present - Torrent je že prisoten + Torrent je že prisoten - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' je že na seznamu prenosov. Ali mu želite pridružiti sledilnike iz novega vira? + Torrent '%1' je že na seznamu prenosov. Ali mu želite pridružiti sledilnike iz novega vira? GeoIPDatabase - - + + Unsupported database file size. Nepodprta velikost datoteke podatkovne zbirke - + Metadata error: '%1' entry not found. Napaka meta podatkov: '%1' ni mogoče najti. - + Metadata error: '%1' entry has invalid type. Napaka meta podatkov: '%1' je neveljavne vrste. - + Unsupported database version: %1.%2 Nepodprta različica podatkovne zbirke: %1.%2 - + Unsupported IP version: %1 Nepodprta različica IP: %1 - + Unsupported record size: %1 Nepodprta velikost zapisa: %1 - + Database corrupted: no data section found. Podatkovna zbirka pokvarjena: najden odsek brez podatkov. @@ -3333,17 +3478,17 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Velikost Http zahtevka presega omejitev, zapiranje vtičnice. Prag: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 Slab Http zahtevek, zapiranje vtičnice. IP: %1 @@ -3384,36 +3529,64 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 IconWidget - + Browse... Brskaj ... - + Reset Ponastavi - + Select icon - + Izberi ikono - + Supported image files + Podprte slikovne datoteke + + + + LegalNotice + + + Legal Notice + Pravno obvestilo + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent je program za izmenjavo datotek. Ko zaženete torrent bodo njegovi podatki na voljo drugim. Vsebina, ki jo izmenjujete je samo vaša odgovornost. + + + + No further notices will be issued. + Nadaljnih obvestil ne bo. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + Press 'Enter' key to continue... + Pritisnite tipko Enter za nadaljevanje ... + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 je bil blokiran. Razlog: %2 - + %1 was banned 0.0.0.0 was banned %1 je bil izključen @@ -3422,91 +3595,62 @@ Podprti formati: S01E01, 1x1, 2017.12.31 and 31.12.2017 Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 ni znan parameter ukazne vrstice. - - + + %1 must be the single command line parameter. %1 mora biti parameter v eni ukazni vrstici. - - You cannot use %1: qBittorrent is already running for this user. - Ne morete uporabiti %1: qBittorrent je že zagnan za tega uporabnika. - - - + Run application with -h option to read about command line parameters. Zaženite program z možnosti -h, če želite prebrati več o parametrih ukazne vrstice. - + Bad command line Napačna ukazna vrstica - + Bad command line: Napačna ukazna vrstica: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Pravno obvestilo - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent je program za izmenjavo datotek. Ko zaženete torrent bodo njegovi podatki na voljo drugim. Vsebina, ki jo izmenjujete je samo vaša odgovornost. - - - - No further notices will be issued. - Nadaljnih obvestil ne bo. - - - - Press %1 key to accept and continue... - Pritisnite tipko %1 za sprejem in nadaljevanje ... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent je program za izmenjavo datotek. Ko zaženete torrent bodo njegovi podatki bili na voljo drugim. Vsebina, ki jo izmenjujete je samo vaša odgovornost. - -Ne bo nadaljnjih obvestil. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Pravno obvestilo + + Another qBittorrent instance is already running. + - - Cancel - Prekliči + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Se strinjam + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3517,621 +3661,706 @@ Ne bo nadaljnjih obvestil. &Uredi - + &Tools &Orodja - + &File &Datoteka - + &Help &Pomoč - + On Downloads &Done Ob &zaključenih prejemih - + &View &Pogled - + &Options... &Možnosti ... - &Resume - &Nadaljuj + &Nadaljuj - + &Remove Od&strani - + Torrent &Creator Ustvarjalnik &torrentov - - + + Alternative Speed Limits Nadomestna omejitev hitrosti - + &Top Toolbar &Zgornja orodna vrstica - + Display Top Toolbar Pokaži zgornjo orodno vrstico - + Status &Bar Vrstica &stanja - + Filters Sidebar Stranska vrstica s filtri - + S&peed in Title Bar Hit&rost v naslovni vrstici - + Show Transfer Speed in Title Bar Pokaži hitrost prenosa v naslovni vrstici - + &RSS Reader &Bralnik RSS - + Search &Engine &Iskalnik - + L&ock qBittorrent &Zakleni qBittorrent - + Do&nate! Pod&ari! - + + Sh&utdown System + + + + &Do nothing &Ne stori ničesar - + Close Window Zapri okno - R&esume All - &Nadaljuj vse + &Nadaljuj vse - + Manage Cookies... Upravljanje piškotkov ... - + Manage stored network cookies Upravljanje shranjenih omrežnih piškotkov - + Normal Messages Dogodki - + Information Messages Informacije - + Warning Messages Opozorila - + Critical Messages Napake - + &Log &Dnevnik - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Določi globalne omejitve hitrosti - + Bottom of Queue Dno čakalne vrste - + Move to the bottom of the queue Premakni na dno čakalne vrste - + Top of Queue Vrh čakalne vrste - + Move to the top of the queue Premakni na vrh čakalne vrste - + Move Down Queue Premakni dol v vrsti - + Move down in the queue Premakni na dno čakalne vrste - + Move Up Queue Premakni gor v vrsti - + Move up in the queue Premakni gor v čakalni vrsti - + &Exit qBittorrent &Zapri qBittorrent - + &Suspend System Stanje &pripravljenost - + &Hibernate System Stanje &mirovanje - S&hutdown System - Zau&stavi sistem + Zau&stavi sistem - + &Statistics Statisti&ka - + Check for Updates Preveri za posodobitve - + Check for Program Updates Preveri posodobitve programa - + &About &O programu - &Pause - &Premor + &Premor - P&ause All - P&remor vseh + P&remor vseh - + &Add Torrent File... &Dodaj datoteko torrent ... - + Open Odpri - + E&xit &Končaj - + Open URL Odpri URL - + &Documentation Dokumenta&cija - + Lock Zakleni - - - + + + Show Pokaži - + Check for program updates Preveri posodobitve programa - + Add Torrent &Link... Dodaj torrent &povezavo - + If you like qBittorrent, please donate! Če vam je qBittorrent všeč, potem prosim donirajte! - - + + Execution Log Dnevnik izvedb - + Clear the password Pobriši geslo - + &Set Password &Nastavi geslo - + Preferences Možnosti - + &Clear Password &Pobriši geslo - + Transfers Prenosi - - + + qBittorrent is minimized to tray qBittorrent je pomanjšan v opravilno vrstico - - - + + + This behavior can be changed in the settings. You won't be reminded again. To obnašanje se lahko spremeni v nastavitvah. O tem ne boste več obveščeni. - + Icons Only Samo ikone - + Text Only Samo besedilo - + Text Alongside Icons Besedilo zraven ikon - + Text Under Icons Besedilo pod ikonami - + Follow System Style Upoštevaj slog sistema - - + + UI lock password Geslo za zaklep uporabniškega vmesnika - - + + Please type the UI lock password: Vpišite geslo za zaklep uporabniškega vmesnika: - + Are you sure you want to clear the password? Ali ste prepričani, da želite pobrisati geslo? - + Use regular expressions Uporabi splošne izraze - - Search - Iskanje + + + Search Engine + Iskalnik - - Transfers (%1) - Prenosi (%1) + + Search has failed + Iskanje je spodletelo - Recursive download confirmation - Rekurzivna potrditev prejema + + Search has finished + - Never - Nikoli + + Search + Iskanje + + + + Transfers (%1) + Prenosi (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent se je pravkar posodobil in potrebuje ponovni zagon za uveljavitev sprememb. - + qBittorrent is closed to tray qBittorrent je zaprt v opravilno vrstico - + Some files are currently transferring. Nekatere datoteke se trenutno prenašajo. - + Are you sure you want to quit qBittorrent? Ali ste prepričani, da želite zapreti qBittorrent? - + &No &Ne - + &Yes &Da - + &Always Yes &Vedno da - + Options saved. Možnosti shranjene. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Manjka Python Runtime - + qBittorrent Update Available Na voljo je posodobitev - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Za uporabo iskalnika potrebujete Python. Ta pa ni nameščen. Ali ga želite namestiti sedaj? - + Python is required to use the search engine but it does not seem to be installed. Python je potreben za uporabo iskalnika, vendar ta ni nameščen. - - + + Old Python Runtime Zastarel Python Runtime - + A new version is available. Na voljo je nova različica. - + Do you want to download %1? Ali želite prenesti %1? - + Open changelog... Odpri dnevnik sprememb ... - + No updates available. You are already using the latest version. Ni posodobitev. Že uporabljate zadnjo različico. - + &Check for Updates &Preveri za posodobitve - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Vaš Python (%1) je zastarel. Najnižja podprta različica je %2. Želite namestiti novejšo različico zdaj? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Vaša različica Pythona (%1) je zastarela. Za delovanje iskalnikov morate Python nadgraditi na najnovejšo različico. Najnižja podprta različica: %2. - + + Paused + Premor + + + Checking for Updates... Preverjam za posodobitve ... - + Already checking for program updates in the background Že v ozadju preverjam posodobitve programa - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Napaka prejema - Python setup could not be downloaded, reason: %1. Please install it manually. - Namestitev za Python ni bilo mogoče prejeti. Razlog: %1 + Namestitev za Python ni bilo mogoče prejeti. Razlog: %1 Namestite Python ročno. - - + + Invalid password Neveljavno geslo - + Filter torrents... - + Filtriraj torrente ... - + Filter by: - + Filtriraj po: - + The password must be at least 3 characters long Geslo mora vsebovati vsaj 3 znake. - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' vsebuje datoteke .torrent. Ali želite nadaljevati z njihovim prejemom? - - - + The password is invalid Geslo je neveljavno - + DL speed: %1 e.g: Download speed: 10 KiB/s Hitrost prejema: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Hitrost pošiljanja: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [Pr: %1, Po: %2] qBittorrent %3 - - - + Hide Skrij - + Exiting qBittorrent Izhod qBittorrenta - + Open Torrent Files Odpri datoteke torrent - + Torrent Files Torrent datoteke @@ -4192,133 +4421,133 @@ Namestite Python ročno. Net::DownloadHandlerImpl - - + + I/O Error: %1 Napaka I/O: %1 - + The file size (%1) exceeds the download limit (%2) Velikost datoteke (%1) presega omejitev prejema (%2) - + Exceeded max redirections (%1) Preseženo največje število preusmeritev (%1) - + Redirected to magnet URI Preusmeritev na magnetno povezavo - + The remote host name was not found (invalid hostname) Oddaljeno ime gostitelja ni bilo najdeno (neveljavno ime gostitelja) - + The operation was canceled Dejanje je bilo preklicano - + The remote server closed the connection prematurely, before the entire reply was received and processed Oddaljeni strežnik je zaprl povezavo, preden je bil odgovor v celoti prejet in obdelan - + The connection to the remote server timed out Časovna omejitev za vzpostavitev povezave z oddaljenim strežnikom je potekla - + SSL/TLS handshake failed Spodletelo rokovanje SSL/TLS - + The remote server refused the connection Oddaljeni strežnik je zavrnil povezavo - + The connection to the proxy server was refused Povezava na posredniški strežnik je bila zavrnjena - + The proxy server closed the connection prematurely Posredniški strežnik je predčasno zaprl povezavo - + The proxy host name was not found Ime gostitelja posredniškega strežnika ni bilo najdeno - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Časovna omejitev za vzpostavitev povezave s posredniškim strežnikom je potekla ali pa posredniški strežnik ni odgovoril na poslano zahtevo - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Posredniški strežnik za spoštovanje zahteve potrebuje overitev ampak ni sprejel nobenih ponujenih poveril - + The access to the remote content was denied (401) Dostop do oddaljene vsebine je bil zavrnjen (401) - + The operation requested on the remote content is not permitted Zahtevano dejanje na oddaljeni vsebini ni dovoljeno - + The remote content was not found at the server (404) Oddaljena vsebina ni bila najdena na strežniku (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Oddaljeni strežnik za serviranje vsebine zahteva overitev, a podanih poveril ni sprejel - + The Network Access API cannot honor the request because the protocol is not known Network Access API ne more spoštovati zahteve, ker protokol ni znan - + The requested operation is invalid for this protocol Zahtevano dejanje je neveljavno za ta protokol - + An unknown network-related error was detected Zaznana je bila neznana napaka, povezana z omrežjem - + An unknown proxy-related error was detected Zaznana je bila neznana napaka, povezana s posredniškim strežnikom - + An unknown error related to the remote content was detected Zaznana je bila neznana napaka, povezana z oddaljeno vsebino - + A breakdown in protocol was detected Zaznana je bila napaka v protokolu - + Unknown error Neznana napaka @@ -4326,7 +4555,12 @@ Namestite Python ročno. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignoriranje SSL napake, URL: "%1", napake: "%2" @@ -5698,294 +5932,295 @@ Namestite Python ročno. BitTorrent - + RSS RSS - Web UI - Spletni vmesnik + Spletni vmesnik - + Advanced Napredno - + Customize UI Theme... - + Prilagodi temo vmesnika ... - + Transfer List Seznam prenosov - + Confirm when deleting torrents Potrdi ob brisanju torrentov - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Uporabi izmenične barve vrstic - + Hide zero and infinity values Skrij ničelne in neskončne vrednosti - + Always Vedno - Paused torrents only - Samo ustavljeni torrenti + Samo ustavljeni torrenti - + Action on double-click Dejanje ob dvojnem kliku - + Downloading torrents: Med prejemanjem torrentov: - - Start / Stop Torrent - Začni / Ustavi torrent + Začni / Ustavi torrent - - + + Open destination folder Odpri ciljno mapo - - + + No action Brez dejanja - + Completed torrents: Končani torrenti: - + Auto hide zero status filters - + Desktop Namizje - + Start qBittorrent on Windows start up Zaženi qBittorrent ob zagonu Windowsov - + Show splash screen on start up Pokaži pozdravno okno ob zagonu - + Confirmation on exit when torrents are active Zahtevaj potrditev ob izhodu, če so torrenti dejavni - + Confirmation on auto-exit when downloads finish Zahtevaj potrditev ob avtomatskem izhodu, ko so prejemi končani. - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Postavitev vsebine torrenta: - + Original Izvirno - + Create subfolder Ustvari podmapo - + Don't create subfolder Ne ustvari podmape - + The torrent will be added to the top of the download queue Torrent bo dodan na vrh čakalne vrste prejemov - + Add to top of queue The torrent will be added to the top of the download queue Dodaj na vrh čakalne vrste - + When duplicate torrent is being added - + Ob dodajanju podvojene vsebine - + Merge trackers to existing torrent - + Pripoji sledilnike obstoječemu torrentu - + + Keep unselected files in ".unwanted" folder + Neizbrane datoteke hrani v mapi ".unwanted" + + + Add... Dodaj ... - + Options.. Možnosti ... - + Remove Odstrani - + Email notification &upon download completion Pošlji e-poštno obvestilo ob &zaključku prejema - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Protokol za povezavo s soležniki: - + Any Katerikoli - + I2P (experimental) - - - - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + I2P (poskusno) - + Mixed mode - + Some options are incompatible with the chosen proxy type! Nekatere možnosti so nezdružljive z izbrano vrsto posredniškega strežnika! - + If checked, hostname lookups are done via the proxy Če je možnost izbrana, se imena gostiteljev pridobivajo prek posredniškega strežnika - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes Uporabljaj posredniški strežnik za delovanje BitTorrenta - + RSS feeds will use proxy Viri RSS bodo uporabljali posredniški strežnik - + Use proxy for RSS purposes Uporabljaj posredniški strežnik za delovanje RSS - + Search engine, software updates or anything else will use proxy Za iskanje z iskalnikom, preverjanje posodobitev in vse ostalo bo uporabljen posredniški strežnik - + Use proxy for general purposes Uporabljaj posredniški strežnik za splošne namene - + IP Fi&ltering Fi&ltriranje IP - + Schedule &the use of alternative rate limits Načrtujte uporabo nadomestnih omejitev hi&trosti - + From: From start time Od: - + To: To end time Do: - + Find peers on the DHT network Najdi soležnike na DHT omrežju - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5994,140 +6229,188 @@ Zahtevaj šifriranje: poveži se samo s soležniki s šifriranjem protokola Onemogoči šifriranje: poveži se samo s soležniki brez šifriranja protokola - + Allow encryption Dovoli šifriranje - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Več informacij</a>) - + Maximum active checking torrents: - + &Torrent Queueing Čakalna vrsta &torrentov - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - S&amodejno dodaj te sledilnike novim prenosom: + S&amodejno dodaj te sledilnike novim prenosom: - + RSS Reader Bralnik RSS - + Enable fetching RSS feeds Omogoči pridobivanje RSS virov - + Feeds refresh interval: Interval osveževanja virov: - + + Same host request delay: + + + + Maximum number of articles per feed: Največje število člankov na vir: - - - + + + min minutes min - + Seeding Limits Omejitve sejanja - Pause torrent - Začasno ustavi torrent + Začasno ustavi torrent - + Remove torrent Odstrani torrent - + Remove torrent and its files Odstrani torrent in njegove datoteke - + Enable super seeding for torrent Omogoči super sejanje za torrent - + When ratio reaches Ko razmerje doseže - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Samodejni prejemnik RSS torrentov - + Enable auto downloading of RSS torrents Omogoči samodejni prejem RSS torrentov - + Edit auto downloading rules... Uredi pravila samodejnega prejema... - + RSS Smart Episode Filter RSS Pametni filter epizod - + Download REPACK/PROPER episodes Prenesi REPACK/PROPER epizode - + Filters: Filtri: - + Web User Interface (Remote control) Spletni uporabniški vmesnik (Oddaljen nadzor) - + IP address: IP naslov: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6136,42 +6419,37 @@ Določi IPv4 ali IPv6 naslov. Lahko doličiš "0.0.0.0" za katerikol "::" za katerikoli IPv6 naslov, ali "*" za oba IPv4 in IPv6. - + Ban client after consecutive failures: Izobčitev klienta po zaporednih neuspelih poskusih: - + Never Nikoli - + ban for: Izobčitev zaradi: - + Session timeout: Opustitev seje - + Disabled Onemogočeno - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: Domene strežnika: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6184,441 +6462,494 @@ vstavi imena domen, ki jih uporablja WebUI strežnik. Uporabi ';' da razčleniš vnose. Lahko uporbiš nadomestni znak '*'. - + &Use HTTPS instead of HTTP &Uporabi HTTPS namesto HTTP - + Bypass authentication for clients on localhost Obidi overitev za odjemalce na lokalnem gostitelju - + Bypass authentication for clients in whitelisted IP subnets Obidi overitev za odjemalce na seznamu dovoljenih IP podmrež - + IP subnet whitelist... Seznam dovoljenih IP podmrež... - - Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + Use alternative WebUI + + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. + + + + + Upda&te my dynamic domain name + &Posodobi moje dinamično ime domene + + + + Minimize qBittorrent to notification area + Skrči qBittorrent v območje za obvestila + + + + Search + Iskanje + + + + WebUI + + + + + Interface + Vmesnik + + + + Language: + Jezik: + + + + Style: - - Upda&te my dynamic domain name - &Posodobi moje dinamično ime domene + + Color scheme: + - - Minimize qBittorrent to notification area - Skrči qBittorrent v območje za obvestila + + Stopped torrents only + - - Interface - Vmesnik + + + Start / stop torrent + - - Language: - Jezik: + + + Open torrent options dialog + - + Tray icon style: Slog ikone sistemske vrstice: - - + + Normal Normalen - + File association Povezava datoteke - + Use qBittorrent for .torrent files Uporabi qBittorrent za datoteke .torrent - + Use qBittorrent for magnet links Uporabi qBittorrent za magnetne povezave - + Check for program updates Preveri posodobitve programa - + Power Management Upravljanje porabe - + + &Log Files + + + + Save path: Mesto shranjevanja: - + Backup the log file after: Varnostno kopiraj dnevnik po: - + Delete backup logs older than: Izbriši varnostne kopije dnevnikov starejše od: - + + Show external IP in status bar + + + + When adding a torrent Ob dodajanju torrenta - + Bring torrent dialog to the front Prikaži torrent pogovorno okno v ospredju - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Izbriši tudi .torrent datoteke katerih dodajanje je bilo preklicano - + Also when addition is cancelled Tudi ko je dodajanje preklicano - + Warning! Data loss possible! Pozor! Možna je izguba podatkov! - + Saving Management Upravljanje shranjevanja - + Default Torrent Management Mode: Privzet Način Upravljanja Torrentov: - + Manual Ročni - + Automatic Samodejni - + When Torrent Category changed: Ko je kategorija torrenta spremenjena: - + Relocate torrent Premakni torrent - + Switch torrent to Manual Mode Preklopi torrent na Ročni Način - - + + Relocate affected torrents Premakni dotične torrente - - + + Switch affected torrents to Manual Mode Preklopi dotične torrente na Ročni Način - + Use Subcategories Uporabi Podkategorije - + Default Save Path: Privzeta pot za shranjevanje: - + Copy .torrent files to: Kopiraj datoteke .torrent v: - + Show &qBittorrent in notification area Pokaži &qBittorrent v obvestilnem področju - &Log file - &Dnevnik + &Dnevnik - + Display &torrent content and some options Pokaži vsebino &torrenta in nekaj možnosti - + De&lete .torrent files afterwards Po tem izbriši .torrent &datoteke - + Copy .torrent files for finished downloads to: Za zaključene prejeme kopiraj datoteke .torrent v: - + Pre-allocate disk space for all files Predhodno dodeli prostor na disku za vse datoteke - + Use custom UI Theme Uporabi temo uporabniškega vmesnika po meri - + UI Theme file: Datoteka s temo: - + Changing Interface settings requires application restart Po spremembi nastavitev vmesnika je potreben ponovni zagon - + Shows a confirmation dialog upon torrent deletion Prikaže potrditveno pogovorno okno ob brisanju torrenta - - + + Preview file, otherwise open destination folder Predogled datoteke, sicer odpri ciljno mapo - - Show torrent options - Prikaži možnosti torrenta + Prikaži možnosti torrenta - + Shows a confirmation dialog when exiting with active torrents Prikaže potrditveno pogovorno okno ob zapiranju programa, če je kateri od torrentov dejaven - + When minimizing, the main window is closed and must be reopened from the systray icon Ob minimiranju se glavno okno zapre in je dostopno preko ikone v sistemskem pladnju - + The systray icon will still be visible when closing the main window Ikona v sistemskem pladnju bo ostala vidna tudi po zaprtju glavnega okna - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Zapri qBittorrent v območje za obvestila - + Monochrome (for dark theme) Enobarvna (za temno temo) - + Monochrome (for light theme) Enobarvna (za temno temo) - + Inhibit system sleep when torrents are downloading Prepreči spanje sistema, ko se torrenti prejemajo - + Inhibit system sleep when torrents are seeding Prepreči spanje sistema, ko se torrenti sejejo - + Creates an additional log file after the log file reaches the specified file size Ustvari dodatno dnevniško datoteko, ko trenutna doseže določeno velikost - + days Delete backup logs older than 10 days dni - + months Delete backup logs older than 10 months mesecev - + years Delete backup logs older than 10 years let - + Log performance warnings Beleži opozorila o učinkovitosti delovanja - The torrent will be added to download list in a paused state - Torrent bo na seznam prejemov dodan ustavljen + Torrent bo na seznam prejemov dodan ustavljen - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Ne začni prejema samodejno - + Whether the .torrent file should be deleted after adding it Ali naj bo datoteka .torrent po dodajanju izbrisana - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Dodeli celotno velikost datotek pred začetkom prenosa za zmanjšanje fragmentacije. Uporabno samo pri trdih diskih (HDD). - + Append .!qB extension to incomplete files Dodaj pripono .!qB nedokončanim datotekam - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Ko je torrent prenesen, ponudi dodajanje torrentov od katere koli .torrent datoteke najdene znotraj tega prenosa. - + Enable recursive download dialog Omogoči okno za rekurzivni prenos - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: Ko se pot za shranjevanje kategorije spremeni: - + Use Category paths in Manual Mode Uporabi poti kategorij v ročnem načinu - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme Uporabi ikone sistemske teme - + Window state on start up: Stanje okna ob zagonu: - + qBittorrent window state on start up Stanje okna qBittorrent ob zagonu: - + Torrent stop condition: Pogoj za ustavitev torrenta: - - + + None Brez - - + + Metadata received Prejeti metapodatki - - + + Files checked Preverjene datoteke - + Ask for merging trackers when torrent is being added manually - + Ob ročnem dodajanju torrentov vprašaj glede združevanja sledilnikov - + Use another path for incomplete torrents: Za nedokončane torrente uporabi drugačno pot: - + Automatically add torrents from: Samodejno dodaj torrente iz: - + Excluded file names Izvzeta imena datotek - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6635,841 +6966,914 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver Prejemnik - + To: To receiver Za: - + SMTP server: Strežnik SMTP: - + Sender Pošiljatelj - + From: From sender Od: - + This server requires a secure connection (SSL) Ta strežnik zahteva varno povezavo (SSL) - - + + Authentication Overitev - - - - + + + + Username: Uporabniško ime: - - - - + + + + Password: Geslo: - + Run external program Zaženi zunanji program - Run on torrent added - Zaženi ob dodajanju torrenta + Zaženi ob dodajanju torrenta - Run on torrent finished - Zaženi ob dokončanju torrenta + Zaženi ob dokončanju torrenta - + Show console window Prikaži okno konzole - + TCP and μTP TCP in μTP - + Listening Port Vrata za poslušanje - + Port used for incoming connections: Uporabljena vrata za dohodne povezave: - + Set to 0 to let your system pick an unused port Nastavite na 0, da prepustite sistemu izbiro neuporabljenih vrat - + Random Naključna - + Use UPnP / NAT-PMP port forwarding from my router Uporabi UPnP / NAT-PMP posredovanje vrat od mojega usmerjevalnika - + Connections Limits Omejitve povezav - + Maximum number of connections per torrent: Najvišje število povezav na torrent: - + Global maximum number of connections: Najvišje splošno število povezav: - + Maximum number of upload slots per torrent: Najvišje število povezav za pošiljanje na torrent: - + Global maximum number of upload slots: Najvišje splošno število povezav za pošiljanje na torrent: - + Proxy Server Posredniški strežnik - + Type: Tip: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Gostitelj: - - - + + + Port: Vrata: - + Otherwise, the proxy server is only used for tracker connections Drugače je posredniški strežnik uporabljen samo za povezave s sledilnikom - + Use proxy for peer connections Uporabi posredniški strežnik za povezave s soležniki - + A&uthentication Overitev - + Info: The password is saved unencrypted Obvestilo: Geslo je shranjeno nešifrirano - + Filter path (.dat, .p2p, .p2b): Pot filtra (.dat, .p2p, .p2b): - + Reload the filter Ponovno naloži filter - + Manually banned IP addresses... Ročno izločeni IP naslovi... - + Apply to trackers Uveljavi pri sledilcih - + Global Rate Limits Splošne omejitve hitrosti - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Pošiljanje: - - + + Download: Prejem: - + Alternative Rate Limits Nadomestne omejitve hitrosti - + Start time Začetni čas - + End time Končni čas - + When: Kdaj: - + Every day Vsak dan - + Weekdays Med tednom - + Weekends Vikendi - + Rate Limits Settings Nastavitve omejitev hitrosti - + Apply rate limit to peers on LAN Uveljavi omejitve hitrosti za soležnike na krajevnem omrežju - + Apply rate limit to transport overhead Uveljavi omejitev razmerja v slepi prenos - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Uveljavi omejitve hitrosti za µTP protokol - + Privacy Zasebnost - + Enable DHT (decentralized network) to find more peers Omogočite DHT (decentralizirano omrežje) da najdete več soležnikov - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Izmenjaj soležnike z združljivimi odjemalci Bittorrent (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Omogočite Izmenjavo soležnikov (PeX) da najdete več soležnikov - + Look for peers on your local network Poišči soležnike na krajevnem omrežju - + Enable Local Peer Discovery to find more peers Omogočite odkrivanje krajevnih soležnikov za iskanje več soležnikov - + Encryption mode: Način šifriranja: - + Require encryption Zahtevaj šifriranje - + Disable encryption Onemogoči šifriranje - + Enable when using a proxy or a VPN connection Omogoči, ko se uporablja posredniški strežnik ali povezava VPN - + Enable anonymous mode Omogoči anonimni način - + Maximum active downloads: Največ dejavnih prejemov: - + Maximum active uploads: Največ dejavnih pošiljanj: - + Maximum active torrents: Največ dejavnih torrentov: - + Do not count slow torrents in these limits V teh omejitvah ne štej počasnih torrentov - + Upload rate threshold: Omejitev hitrosti pošiljanja: - + Download rate threshold: Omejitev hitrosti prejemanja: - - - + + + + sec seconds sec - + Torrent inactivity timer: Časovnik nedejavnosti torrenta: - + then nato - + Use UPnP / NAT-PMP to forward the port from my router Uporabi UPnP / NAT-PMP za posredovanje vrat od mojega usmerjevalnika - + Certificate: Potrdilo: - + Key: Ključ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Podrobnosti o potrdilih</a> - + Change current password Spremeni trenutno geslo - Use alternative Web UI - Uporabi alternativni spletni vmesnik + Uporabi alternativni spletni vmesnik - + Files location: Mesto datotek: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Varnost - + Enable clickjacking protection Omogoči zaščito proti ugrabitvi klikov (clickjacking). - + Enable Cross-Site Request Forgery (CSRF) protection Omogoči zaščito pred ponarejanjem spletnih zahtev (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers Dodaj glave HTTP po meri - + Header: value pairs, one per line Glava: pari vrednosti, en na vrstico - + Enable reverse proxy support - + Trusted proxies list: Seznam zaupanja vrednih posrednikov: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Storitev: - + Register Vpis - + Domain name: Ime domene: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Z omogočanjem teh možnosti lahko <strong>nepreklicno izgubite</strong> vaše .torrent datoteke! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Če omogočite drugo možnost (&ldquo;Tudi ko je dodajanje preklicano&rdquo;) bodo .torrent datoteke <strong>izbrisane</strong>, tudi če pritisnete &ldquo;<strong>Prekliči</strong>&rdquo;, v &ldquo;Dodaj torrent&rdquo; meniju - + Select qBittorrent UI Theme file Izberi datoteko za izgled vmesnika qBittorrent (*.qbtheme) - + Choose Alternative UI files location Izberi mesto datotek alternativnega vmesnika - + Supported parameters (case sensitive): Podprti parametri (razlikovanje velikosti črk): - + Minimized minimirano - + Hidden skrito - + Disabled due to failed to detect system tray presence Onemogočeno zaradi neuspešnega zaznavanja prisotnosti sistemskega pladnja - + No stop condition is set. Nastavljen ni noben pogoj za ustavitev. - + Torrent will stop after metadata is received. Torrent se bo zaustavil, ko se bodo prejeli metapodatki. - - Torrents that have metadata initially aren't affected. - Ne vpliva na torrente, ki že v začetku imajo metapodatke. - - - + Torrent will stop after files are initially checked. Torrent se bo zaustavil po začetnem preverjanju datotek. - + This will also download metadata if it wasn't there initially. S tem se bodo prejeli tudi metapodatki, če še niso znani. - + %N: Torrent name %N: Ime torrenta - + %L: Category %L: Kategorija - + %F: Content path (same as root path for multifile torrent) %F: Pot vsebine (enaka kot korenska pot za večdatotečni torrent) - + %R: Root path (first torrent subdirectory path) %R: Korenska pot (pot podmape prvega torrenta) - + %D: Save path %D: Mesto za shranjevanje - + %C: Number of files %C: Število datotek - + %Z: Torrent size (bytes) %Z: Velikost torrenta (bajti) - + %T: Current tracker %T: Trenutni sledilnik - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Namig: Postavi parameter med narekovaje da se izogneš prelomu teksta na presledku (npr., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Brez) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent bo obravnavan kot počasen, če hitrosti pošiljanja in prejemanja ostaneta pod temi vrednostmi za "Časovnik nedejavnosti torrenta" sekund - + Certificate Digitalno potrdilo - + Select certificate Izberite potrdilo - + Private key Zasebni ključ - + Select private key Izberite zasebni ključ - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Izberite mapo za nadzorovanje - + Adding entry failed Dodajanje vnosa je spodletelo - - Location Error - Napaka lokacije + + The WebUI username must be at least 3 characters long. + - - The alternative Web UI files location cannot be blank. + + The WebUI password must be at least 6 characters long. - - + + Location Error + Napaka lokacije + + + + Choose export directory Izberite mapo za izvoz - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) Datoteka s temo za vmesnik qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Oznake (ločene z vejico) - + %I: Info hash v1 (or '-' if unavailable) - + %I: Informativna zgoščena vrednost v1 (ali '-', če ni na voljo) - + %J: Info hash v2 (or '-' if unavailable) - + %I: Informativna zgoščena vrednost v2 (ali '-', če ni na voljo) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Izberite mapo za shranjevanje - + + Torrents that have metadata initially will be added as stopped. + Torrenti, ki imajo metapodatke, bodo sprva dodani v premoru. + + + Choose an IP filter file Izberite datoteko s filtri IP - + All supported filters Vsi podprti filtri - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Napaka razčlenjevanja - + Failed to parse the provided IP filter Spodletelo razčlenjevanje filtra IP - + Successfully refreshed Uspešno osveženo - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Uspešno razčlenjen filter IP: %1 pravil je bilo uveljavljenih. - + Preferences Možnosti - + Time Error Napaka v času - + The start time and the end time can't be the same. Čas začetka in konca ne smeta biti enaka. - - + + Length Error Napaka v dolžini - - - The Web UI username must be at least 3 characters long. - Uporabniško ime za spletni vmesnik mora vsebovati vsaj 3 znake. - - - - The Web UI password must be at least 6 characters long. - Geslo za spletni vmesnik mora vsebovati vsaj 6 znakov. - PeerInfo - + Unknown Neznano - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection - + Peer from DHT - + Peer from PEX - + Peer from LSD - + Encrypted traffic Šifriran promet - + Encrypted handshake Šifrirano rokovanje + + + Peer is using NAT hole punching + + PeerListWidget @@ -7481,7 +7885,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not IP/Address - + IP/Naslov @@ -7625,7 +8029,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Soležnik "%1" je ročno izključen - + N/A N/A @@ -7648,7 +8052,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Seznam soležnikov za dodajanje (en IP na vrstico) - + Format: IPv4:port / [IPv6]:port Oblika: IPv4:vrata / [IPv6]:vrata @@ -7689,27 +8093,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: Datoteke v tem kosu: - + File in this piece: Datoteka v tem kosu: - + File in these pieces: Datoteka v teh kosih: - + Wait until metadata become available to see detailed information Za ogled podrobnejših informacij počakajte, da podatki postanejo dostopni - + Hold Shift key for detailed information Drži tipko Shift za podrobnejše informacije @@ -7722,58 +8126,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Iskanje vtičnikov - + Installed search plugins: Nameščeni vtičniki za iskanje: - + Name Ime - + Version Različica - + Url URL - - + + Enabled Omogočen - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Opozorilo: Pri prejemanju torrentov s spletnih brskalnikov, se prepričaj, da ravnaš skladno z zakonom o avtorskih in sorodnih pravicah in/ali drugimi uredbami/zakoni, ki urejajo avtorske pravice v Sloveniji. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Namesti novega - + Check for updates Preveri posodobitve - + Close Zapri - + Uninstall Odstrani @@ -7893,17 +8297,17 @@ Tisti vtičniki so bili onemogočeni. Vir vtičnika - + Search plugin source: Poišči vir vtičnika - + Local file Lokalna datoteka - + Web link Spletna povezava @@ -7944,47 +8348,47 @@ Tisti vtičniki so bili onemogočeni. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Naslednje dodatke torrenta %1 podpirajo predogled. Izberite eno: - + Preview Predogled - + Name Ime - + Size Velikost - + Progress Napredek - + Preview impossible Predogled ni mogoč - + Sorry, we can't preview this file: "%1". Žal predogled te datoteke ni mogoč: "%1". - + Resize columns Spremeni velikost stolpcev - + Resize all non-hidden columns to the size of their contents Prilagodi velikost vseh prikazanih stolpcev na širino njihove vsebine @@ -7997,27 +8401,27 @@ Tisti vtičniki so bili onemogočeni. Private::FileLineEdit - + Path does not exist Pot ne obstaja - + Path does not point to a directory Pot ne vodi do mape - + Path does not point to a file Pot ne vodi do datoteke - + Don't have read permission to path Za to pot ni dovoljenja za branje - + Don't have write permission to path Za to pot ni dovoljenja za pisanje @@ -8058,12 +8462,12 @@ Tisti vtičniki so bili onemogočeni. PropertiesWidget - + Downloaded: Prejeto: - + Availability: Na voljo: @@ -8078,53 +8482,53 @@ Tisti vtičniki so bili onemogočeni. Prenos - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Čas delovanja: - + ETA: Preostal čas: - + Uploaded: Poslano: - + Seeds: Semena: - + Download Speed: Hitrost prejema: - + Upload Speed: Hitrost pošiljanja: - + Peers: Soležniki: - + Download Limit: Omejitev prejema: - + Upload Limit: Omejitev pošiljanja: - + Wasted: Zavrženo: @@ -8134,193 +8538,249 @@ Tisti vtičniki so bili onemogočeni. Povezave: - + Information Podrobnosti - + Info Hash v1: Razpršilo v1: - + Info Hash v2: Razpršilo v2: - + Comment: Komentar: - + Select All Izberi vse - + Select None Ne izberi nič - + Share Ratio: Deli razmerje: - + Reannounce In: Ponovno objavi čez: - + Last Seen Complete: Nazadnje videno v celoti: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Skupna velikost: - + Pieces: Kosov: - + Created By: Ustvarjeno od: - + Added On: Dodano: - + Completed On: Zaključeno: - + Created On: Ustvarjeno: - + + Private: + + + + Save Path: Mesto: - + Never Nikoli - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (ima %3) - - + + %1 (%2 this session) %1(%2 to sejo) - - + + + N/A / - + + Yes + Da + + + + No + Ne + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sejano %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1(%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1(%2 skupno) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1(%2 povpr.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Nov spletni sejalec + Nov spletni sejalec - Remove Web seed - Odstrani spletnega sejalca + Odstrani spletnega sejalca - Copy Web seed URL - Kopiraj URL spletnega sejalca + Kopiraj URL spletnega sejalca - Edit Web seed URL - Uredi URL spletnega sejalca + Uredi URL spletnega sejalca - + Filter files... Filtriraj datoteke ... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Grafi hitrosti so onemogočeni - + You can enable it in Advanced Options Omogočite jih lahko v naprednih možnostih - New URL seed New HTTP source - Nov URL sejalca + Nov URL sejalca - New URL seed: - Nov URL sejalca: + Nov URL sejalca: - - This URL seed is already in the list. - URL sejalca je že na seznamu. + URL sejalca je že na seznamu. - + Web seed editing Urejanje spletnega sejalca - + Web seed URL: URL spletnega sejalca: @@ -8339,22 +8799,22 @@ Tisti vtičniki so bili onemogočeni. Podatkov Samodejnega prejemnika RSS ni bilo mogoče shraniti na %1. Napaka: %2 - + Invalid data format Neveljavna oblika podatkov - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Pravil Samodejnega prejemnika RSS ni bilo mogoče naložiti. Razlog: %1 @@ -8362,22 +8822,22 @@ Tisti vtičniki so bili onemogočeni. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 RSS vira z '%1' ni mogoče prejeti. Razlog: %2. - + RSS feed at '%1' updated. Added %2 new articles. RSS vir z '%1' posodobljen. Dodanih %2 novih člankov. - + Failed to parse RSS feed at '%1'. Reason: %2 Razčlenjevanje RSS vira z '%1' ni uspelo. Razlog: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Vir RSS s '%1' uspešno prejet. Začetek razčlenjevanja. @@ -8387,7 +8847,7 @@ Tisti vtičniki so bili onemogočeni. Failed to read RSS session data. %1 - + Podatkov o seji RSS ni bilo mogoče prebrati. %1 @@ -8413,12 +8873,12 @@ Tisti vtičniki so bili onemogočeni. RSS::Private::Parser - + Invalid RSS feed. Neveljaven vir RSS. - + %1 (line: %2, column: %3, offset: %4). %1 (vrstica: %2, stolpec: %3, odmik: %4). @@ -8426,99 +8886,99 @@ Tisti vtičniki so bili onemogočeni. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Nastavitev seje RSS ni bilo mogoče shraniti. Datoteka: "%1". Napaka: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Podatkov o seji RSS ni bilo mogoče shraniti. Datoteka: "%1". Napaka: "%2" - - + + RSS feed with given URL already exists: %1. Vir RSS z danim URL-jem že obstaja: %1. - + Feed doesn't exist: %1. - + Vir ne obstaja: %1. - + Cannot move root folder. Korenske mape ni mogoče premakniti. - - + + Item doesn't exist: %1. Predmet ne obsaja: %1. - + Couldn't move folder into itself. Mape ni mogoče premakniti v njo samo. - + Cannot delete root folder. Korenske mape ni mogoče izbrisati. - + Failed to read RSS session data. %1 - + Podatkov o seji RSS ni bilo mogoče prebrati. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Vira RSS ni bilo mogoče naložiti. Vir: "%1". Razlog: Zahtevan je naslov URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Vira RSS ni bilo mogoče naložiti. Vir: "%1". Razlog: UID ni veljaven. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Najden je podvojen vir RSS. UID: "%1". Napaka: Nastavitve so videti okvarjene. - + Couldn't load RSS item. Item: "%1". Invalid data format. Predmeta RSS ni bilo mogoče naložiti. Predmet: "%1". Neveljaven zapis podatkov. - + Corrupted RSS list, not loading it. Pokvarjen seznam RSS, nalaganje prekinjeno. - + Incorrect RSS Item path: %1. Nepravilna pot RSS predmeta: %1. - + RSS item with given path already exists: %1. RSS predmet z dano potjo že obstaja: %1. - + Parent folder doesn't exist: %1. Starševska mapa ne obstaja: %1. @@ -8542,8 +9002,8 @@ Tisti vtičniki so bili onemogočeni. - - + + Mark items read Označi predmete kot prebrane @@ -8568,132 +9028,132 @@ Tisti vtičniki so bili onemogočeni. Torrenti: (dvojni klik za prejem) - - + + Delete Odstrani - + Rename... Preimenuj ... - + Rename Preimenuj - - + + Update Posodobi - + New subscription... Nova naročnina ... - - + + Update all feeds Posodobi vse vire - + Download torrent Prejmi torrent - + Open news URL Odpri URL novic - + Copy feed URL Kopiraj URL vira - + New folder... Nova mapa ... - + Edit feed URL... - + Uredi URL vira ... - + Edit feed URL - + Uredi URL vira - + Please choose a folder name Izberite ime mape - + Folder name: Ime mape: - + New folder Nova mapa - - + + Please type a RSS feed URL Vpišite URL vira RSS - - + + Feed URL: Vir URL: - + Deletion confirmation Potrditev odstranjevanja - + Are you sure you want to delete the selected RSS feeds? Ali ste prepričani, da želite izbrisati izbrane vire RSS? - + Please choose a new name for this RSS feed Izberite novo ime za ta vir RSS - + New feed name: Novo ime vira: - + Rename failed Preimenovanje neuspešno - + Date: Datum: - + Feed: - + Vir: - + Author: Avtor: @@ -8701,38 +9161,38 @@ Tisti vtičniki so bili onemogočeni. SearchController - + Python must be installed to use the Search Engine. Za uporabo iskalnika mora biti nameščen Python - + Unable to create more than %1 concurrent searches. Več kot %1 hkratnih iskanj ni mogoče ustvariti. - - + + Offset is out of range Odmik je izven obsega - + All plugins are already up to date. Vsi vtičniki so že posodobljeni. - + Updating %1 plugins Posodabljanje %1 vtičnikov - + Updating plugin %1 Posodabljanje vtičnika %1 - + Failed to check for plugin updates: %1 Iskanje posodobitev vtičnikov ni uspelo: %1 @@ -8807,132 +9267,146 @@ Tisti vtičniki so bili onemogočeni. Velikost: - + Name i.e: file name Ime - + Size i.e: file size Velikost - + Seeders i.e: Number of full sources Sejalci - + Leechers i.e: Number of partial sources Pijavke - Search engine - Iskalnik + Iskalnik - + Filter search results... Rezultati filtriranega iskanja... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Rezultati (prikazanih <i>%1</i> od <i>%2</i>): - + Torrent names only Samo imena torrentov - + Everywhere Povsod - + Use regular expressions Uporabi regularne izraze - + Open download window Odpri okno prejema - + Download Prejem - + Open description page Odpri stran z opisom - + Copy Kopiraj - + Name Ime - + Download link Povezava za prejem - + Description page URL URL strani z opisom - + Searching... Iskanje ... - + Search has finished Iskanje je končano - + Search aborted Iskanje je prekinjeno - + An error occurred during search... Med iskanjem je prišlo do napake ... - + Search returned no results Iskanje ni vrnilo rezultatov - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Vidnost stolpca - + Resize columns Spremeni velikost stolpcev - + Resize all non-hidden columns to the size of their contents Prilagodi velikost vseh prikazanih stolpcev na širino njihove vsebine @@ -8940,104 +9414,104 @@ Tisti vtičniki so bili onemogočeni. SearchPluginManager - + Unknown search engine plugin file format. Neznana datotečna oblika vstavka iskalnika. - + Plugin already at version %1, which is greater than %2 Različica vtičnika je trenutno %1, kar je več od %2 - + A more recent version of this plugin is already installed. Novejša različica tega vstavka je že nameščena. - + Plugin %1 is not supported. Vtičnik %1 ni podprt. - - + + Plugin is not supported. Vstavek ni podprt. - + Plugin %1 has been successfully updated. Vtičnik %1 je bil uspešno posodobljen. - + All categories Vse kategorije - + Movies Filmi - + TV shows TV-oddaje - + Music Glasba - + Games Igre - + Anime Anime - + Software Programska oprema - + Pictures Slike - + Books Knjige - + Update server is temporarily unavailable. %1 Strežnik za posodobitve trenutno ni na voljo. %1 - - + + Failed to download the plugin file. %1 Prenos vstavka je spodletel. %1 - + Plugin "%1" is outdated, updating to version %2 Vtičnik "%1" je zastarel, posodabljanje na različico %2 - + Incorrect update info received for %1 out of %2 plugins. Za %1 od %2 vtičnikov so bili prejeti napačni podatki o posodobitvi. - + Search plugin '%1' contains invalid version string ('%2') Vstavek iskanja '%1' vsebuje neveljaven niz različice ('%2') @@ -9047,114 +9521,153 @@ Tisti vtičniki so bili onemogočeni. - - - - Search Iskanje - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Ni nameščenih vstavkov iskanja. Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite. - + Search plugins... Vstavki iskanja ... - + A phrase to search for. Iskalna fraza: - + Spaces in a search term may be protected by double quotes. Presledke pri iskalni frazi lahko zaščitite z dvojnimi narekovaji. - + Example: Search phrase example Primer: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: išči <b>foo bar</b> - + All plugins Vsi vstavki - + Only enabled Samo omogočeni - + + + Invalid data format. + Neveljavna oblika podatkov. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: išči <b>foo</b> in <b>bar</b> - + + Refresh + + + + Close tab Zapri zavihek - + Close all tabs Zapri vse zavihke - + Select... Izberi ... - - - + + Search Engine Iskalnik - + + Please install Python to use the Search Engine. Za uporabo iskalnika namestite Python. - + Empty search pattern Prazen iskani parameter - + Please type a search pattern first Najprej vpišite iskani parameter - + + Stop Ustavi - Search has finished - Iskanje je zaključeno + Iskanje je zaključeno - Search has failed - Iskanje je spodletelo + Iskanje je spodletelo + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9267,34 +9780,34 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite. - + Upload: Pošiljanje: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Prejemanje: - + Alternative speed limits Nadomestne omejitve hitrosti @@ -9486,32 +9999,32 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite.Povprečen čas v čakalni vrsti: - + Connected peers: Povezanih soležnikov: - + All-time share ratio: Razmerje izmenjave vseh časov: - + All-time download: Prenos vseh časov: - + Session waste: Zavrženo v seji: - + All-time upload: Poslano vseh časov: - + Total buffer size: Skupna velikost medpomnilnika: @@ -9526,12 +10039,12 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite.Posli I/O v čakalni vrsti: - + Write cache overload: Preobremenitev pisanja predpomnilnika: - + Read cache overload: Preobremenitev branja predpomnilnika: @@ -9550,51 +10063,67 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite. StatusBar - + Connection status: Stanje povezave: - - + + No direct connections. This may indicate network configuration problems. Ni neposrednih povezav. To lahko pomeni, da so težave z nastavitvijo omrežja. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 vozlišč - + qBittorrent needs to be restarted! qBittorrent se mora ponovno zagnati! - - - + + + Connection Status: Stanje povezave: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Nepovezani. To ponavadi pomeni, da je qBittorrentu spodletelo poslušanje dohodnih povezav na izbranih vratih. - + Online Povezani - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Kliknite za uporabo nadomestnih omejitev hitrosti - + Click to switch to regular speed limits Kliknite za uporabo splošnih omejitev hitrosti @@ -9623,14 +10152,22 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite.Dokončani (0) - Resumed (0) - V nadaljevanju (0) + V nadaljevanju (0) - Paused (0) - V premoru (0) + V premoru (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9692,10 +10229,29 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite.Completed (%1) Dokončani (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - V premoru (%1) + V premoru (%1) @@ -9703,14 +10259,12 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite.Premikanje (%1) - Resume torrents - Nadaljuj torrente + Nadaljuj torrente - Pause torrents - Premor torrentov + Premor torrentov @@ -9718,9 +10272,8 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite.Odstrani torrente - Resumed (%1) - V nadaljevanju (%1) + V nadaljevanju (%1) @@ -9761,17 +10314,17 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite. TagFilterModel - + Tags Oznake - + All Vse - + Untagged Neoznačeno @@ -9779,52 +10332,64 @@ Klikni na gumb "Vstavki iskanja ..." spodaj desno da jih namestite. TagFilterWidget - + Add tag... Dodaj oznako ... - + Remove tag Odstrani oznako - + Remove unused tags Odstrani neuporabljene oznake - Resume torrents - Nadaljuj torrente + Nadaljuj torrente - Pause torrents - Ustavi torrente + Ustavi torrente - + Remove torrents Odstrani torrente - New Tag - Nova oznaka + Nova oznaka + + + + Start torrents + - + + Stop torrents + + + + Tag: Oznaka: - + + Add tag + + + + Invalid tag name Neveljavno ime oznake - + Tag name '%1' is invalid Ime oznake '%1' je neveljavno @@ -9964,32 +10529,32 @@ Prosimo da izberete drugo ime in poizkusite znova. TorrentContentModel - + Name Ime - + Progress Napredek - + Download Priority Prioriteta prenosov - + Remaining Preostalo - + Availability Na voljo - + Total Size Skupna velikost @@ -10034,102 +10599,120 @@ Prosimo da izberete drugo ime in poizkusite znova. TorrentContentWidget - + Rename error Napaka pri preimenovanju - + Renaming Preimenovanje - + New name: Novo ime: - + Column visibility Vidnost stolpca - + Resize columns Spremeni velikost stolpcev - + Resize all non-hidden columns to the size of their contents Prilagodi velikost vseh prikazanih stolpcev na širino njihove vsebine - + Open Odpri - + Open containing folder Odpri vsebujočo mapo - + Rename... Preimenuj ... - + Priority Prednost - - + + Do not download Ne prejmi - + Normal Navadna - + High Visoka - + Maximum Najvišja - + By shown file order Po prikazanem vrstnem redu - + Normal priority Navadna prednost - + High priority Visoka prednost - + Maximum priority Najvišja prednost - + Priority by shown file order Prednost po prikazanem vrstnem redu + + TorrentCreatorController + + + Too many active tasks + Preveč dejavnih opravil + + + + Torrent creation is still unfinished. + Ustvarjanje torrenta še ni dokončano. + + + + Torrent creation failed. + Ustvarjanje torrenta ni uspelo. + + TorrentCreatorDialog @@ -10154,13 +10737,13 @@ Prosimo da izberete drugo ime in poizkusite znova. - + Select file Izberi datoteko - + Select folder Izberi mapo @@ -10185,58 +10768,10 @@ Prosimo da izberete drugo ime in poizkusite znova. Velikost kosa: - + Auto Samodejno - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10283,92 +10818,83 @@ Prosimo da izberete drugo ime in poizkusite znova. Polja - + You can separate tracker tiers / groups with an empty line. Stopnje / skupine sledilnika lahko ločite s prazno vrstico. - + Web seed URLs: URL-ji spletnih semen: - + Tracker URLs: URL-ji sledilnikov: - + Comments: Komentarji: - + Source: Vir: - + Progress: Napredek: - + Create Torrent Ustvari torrent - - + + Torrent creation failed Ustvarjanje torrenta ni uspelo - + Reason: Path to file/folder is not readable. Razlog: Pot do datoteke/mape ni berljiva. - + Select where to save the new torrent Izberite, kam želite shraniti novi torrent - + Torrent Files (*.torrent) Datoteke torrentov (*.torrent) - - Reason: %1 - Razlog: %1 - - - + Add torrent to transfer list failed. - + Dodajanje torrenta na seznam prenosov ni uspelo. - + Reason: "%1" - + Razlog: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Razlog: Ustvarjeni torrent je neveljaven. Ne bo dodan na seznam prejemov. + Dodajanje torrenta spodletelo - + Torrent creator Ustvarjalnik torrentov - + Torrent created: Torrent ustvarjen: @@ -10376,32 +10902,32 @@ Prosimo da izberete drugo ime in poizkusite znova. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10409,27 +10935,27 @@ Prosimo da izberete drugo ime in poizkusite znova. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 Odpiranje datoteke magnet ni uspelo: %1 - + Rejecting failed torrent file: %1 Zavračanje neuspele datoteke .torrent: %1 - + Watching folder: "%1" @@ -10437,14 +10963,8 @@ Prosimo da izberete drugo ime in poizkusite znova. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Neveljavni metapodatki + Neveljavni metapodatki @@ -10475,127 +10995,203 @@ Prosimo da izberete drugo ime in poizkusite znova. Uporabi drugačno pot za nedokončan torrent - + Category: Kategorija: - + + Torrent Share Limits + + + Torrent speed limits - Omejitve hitrosti torrenta + Omejitve hitrosti torrenta - + Download: Prejem: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Te omejitve ne bodo prekoračile globalnih - + Upload: Pošiljanje: - Torrent share limits - Omejitve izmenjave torrenta + Omejitve izmenjave torrenta - Use global share limit - Uporabi splošno omejitev izmenjave + Uporabi splošno omejitev izmenjave - Set no share limit - Ne nastavi omejitve izmenjave + Ne nastavi omejitve izmenjave - Set share limit to - Nastavi omejitev izmenjave na + Nastavi omejitev izmenjave na - ratio - razmerje + razmerje - total minutes - + skupno minut - inactive minutes - + nedejavnih minut - + Disable DHT for this torrent Onemogoči DHT za ta torrent - + Download in sequential order Prejmi v zaporednem vrstnem redu - + Disable PeX for this torrent Onemogoči PeX za ta torrent - + Download first and last pieces first Najprej prejmi prvi in zadnji kos - + Disable LSD for this torrent Onemogoči LSD za ta torrent - + Currently used categories Trenutno uporabljene kategorije - - + + Choose save path Izberite pot za shranjevanje - + Not applicable to private torrents Za zasebne torrente ta možnost ni primerna - No share limit method selected - Ni izbranega načina omejitve izmenjave + Ni izbranega načina omejitve izmenjave - Please select a limit method first - Najprej izberite način omejitve + Najprej izberite način omejitve + + + + TorrentShareLimitsWidget + + + + + + Default + Privzeto + + + + + + Unlimited + Neomejeno + + + + + + Set to + Nastavi na + + + + Seeding time: + Čas sejanja: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Trajanje nedejavnega sejanja: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Odstrani torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Omogoči super sejanje za torrent + + + + Ratio: + Razmerje: @@ -10603,35 +11199,39 @@ Prosimo da izberete drugo ime in poizkusite znova. Torrent Tags - + Oznake torrenta - New Tag - Nova oznaka + Nova oznaka + Add tag + + + + Tag: Oznaka: - + Invalid tag name Neveljavno ime oznake - + Tag name '%1' is invalid. - + Ime oznake "%1" je neveljavno. - + Tag exists Oznaka obstaja - + Tag name already exists. Ime oznake že obstaja. @@ -10639,115 +11239,130 @@ Prosimo da izberete drugo ime in poizkusite znova. TorrentsController - + Error: '%1' is not a valid torrent file. Napaka: '%1' je neveljavna datoteka torrent. - + Priority must be an integer Prioriteta mora biti celo število - + Priority is not valid Prioriteta ni veljavna - + Torrent's metadata has not yet downloaded Metapodatki torrenta še niso bili prejeti - + File IDs must be integers ID-ji datotek morajo biti cela števila - + File ID is not valid ID datoteke ni veljaven - - - - + + + + Torrent queueing must be enabled Čakalna vrsta Torrentov mora biti omogočena - - + + Save path cannot be empty Pot shranjevanja ne more biti prazna - - + + Cannot create target directory Ciljne mape ni mogoče ustvariti - - + + Category cannot be empty Kategorija ne more biti prazna - + Unable to create category Kategorije ni mogoče ustvariti - + Unable to edit category Kategorije ni mogoče urediti - + Unable to export torrent file. Error: %1 Datoteke s torrentom ni bilo mogoče izvoziti. Napaka: %1 - + Cannot make save path Mape za shranjevanje ni mogoče ustvariti - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Parameter 'sort' je neveljaven - - "%1" is not a valid file index. + + "%1" is not an existing URL - + + "%1" is not a valid file index. + "%1" ni veljaven indeks datoteke. + + + Index %1 is out of bounds. - - + + Cannot write to directory Ni mogoče pisati v mapo - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI Nastavi mesto: premikam "&1" z "%2" na "%3" - + Incorrect torrent name Napačno ime torrenta - - + + Incorrect category name Napačno ime kategorije @@ -10778,257 +11393,207 @@ Prosimo da izberete drugo ime in poizkusite znova. TrackerListModel - - + Working - Deluje + Deluje - + Disabled - + Onemogočen - + Disabled for this torrent - Onemogočeno za ta torrrent + Onemogočeno za ta torrrent - + This torrent is private - Ta torrent je zaseben + Ta torrent je zaseben - + N/A - + N/A - + Updating... - Posodabljanje ... + Posodabljanje ... - + Not working - Ne deluje + Ne deluje - + Tracker error - + Napaka sledilnika - + Unreachable - + Nedosegljiv - + Not contacted yet - Še ni bilo stika + Še ni bilo stika - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Stopnja + + BT Protocol + - - Protocol + + Next Announce - - Status - Stanje + + Min Announce + + + + Invalid status! + Neveljavno stanje! + + + + Tier + Stopnja + + + Protocol + Protokol - Peers - + Status + Stanje - Seeds - Semena + Peers + Soležniki - Leeches - Pijavke + Seeds + Semena - Times Downloaded - Število prejemov + Leeches + Pijavke - Message - Sporočilo + Times Downloaded + Število prejemov - Next announce - + Message + Sporočilo - - Min announce - + Next announce + Naslednje sporočanje - v%1 - + v%1 TrackerListWidget - Working - Deluje - - - Disabled - Onemogočen - - - Disabled for this torrent - Onemogočeno za ta torrrent - - - + This torrent is private Ta torrent je zaseben - Updating... - Posodabljanje ... - - - Not working - Ne deluje - - - Not contacted yet - Še ni bilo stika - - - N/A - N/A - - - + Tracker editing Urejanje sledilnika - + Tracker URL: URL sledilnika: - - + + Tracker editing failed Urejanje sledilnika ni uspelo - + The tracker URL entered is invalid. Vneseni URL sledilnika je neveljaven. - + The tracker URL already exists. URL sledilnika že obstaja. - + Edit tracker URL... Uredi URL sledilnika ... - + Remove tracker Odstrani sledilnik - + Copy tracker URL Kopiraj URL sledilnika - - Force reannounce to selected trackers - Prisilno znova sporoči izbranim sledilnikom - - - - Force reannounce to all trackers - Prisilno znova sporoči vsem sledilnikom - - - Tier - Stopnja - - - URL - URL - - - Status - Stanje - - - Seeds - Semena + + Force reannounce to selected trackers + Prisilno znova sporoči izbranim sledilnikom - Times Downloaded - Število prejemov + + Force reannounce to all trackers + Prisilno znova sporoči vsem sledilnikom - + Resize columns Spremeni velikost stolpcev - + Resize all non-hidden columns to the size of their contents Prilagodi velikost vseh prikazanih stolpcev na širino njihove vsebine - Peers - Soležnikov - - - + Add trackers... Dodaj sledilnike ... - Leeches - Pijavke - - - Message - Sporočilo - - - + Column visibility Vidnost stolpca @@ -11046,37 +11611,37 @@ Prosimo da izberete drugo ime in poizkusite znova. Seznam sledilnikov za dodajanje (en na vrstico): - + µTorrent compatible list URL: Seznam URL združljiv z µTorrent-om - + Download trackers list Prejmi seznam sledilnikov - + Add Dodaj - + Trackers list URL error Napaka URL-ja seznama sledilnikov - + The trackers list URL cannot be empty URL s seznamom sledilnikov ne sme biti prazen - + Download trackers list error Napaka pri prejemu seznama sledilnikov - + Error occurred when downloading the trackers list. Reason: "%1" Pri prejemanju seznama sledilnikov je prišlo do napake. Razlog: "%1" @@ -11084,87 +11649,70 @@ Prosimo da izberete drugo ime in poizkusite znova. TrackersFilterWidget - All (0) - this is for the tracker filter - Vsi (0) - - - Trackerless (0) - Brez sledilnika (0) - - - Error (0) - Napaka (0) - - - Warning (0) - Opozorilo (0) - - - Trackerless - Brez sledilnikov - - - Error (%1) - Napaka (%1) - - - + Warning (%1) Opozorilo (%1) - + Trackerless (%1) Brez sledilnika (%1) - + Tracker error (%1) - + Napaka sledilnika (%1) - + Other error (%1) - + Druga napaka (%1) - + Remove tracker - Odstrani sledilnik + Odstrani sledilnik + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Nadaljuj torrente + Nadaljuj torrente - Pause torrents - Ustavi torrente + Ustavi torrente - + Remove torrents Odstrani torrente - + Removal confirmation - + Potrditev odstranjevanja - + Are you sure you want to remove tracker "%1" from all torrents? - + Ali ste prepričani, da želite odstraniti sledilnik "%1" iz vseh prejemov? - + Don't ask me again. - + Ne sprašuj več. - + All (%1) this is for the tracker filter Vsi (%1) @@ -11173,7 +11721,7 @@ Prosimo da izberete drugo ime in poizkusite znova. TransferController - + 'mode': invalid argument @@ -11266,9 +11814,8 @@ Prosimo da izberete drugo ime in poizkusite znova. Preverjanje podatkov za nadaljevanje - Paused - Premor + Premor @@ -11293,220 +11840,262 @@ Prosimo da izberete drugo ime in poizkusite znova. Z napako - + Name i.e: torrent name Ime - + Size i.e: torrent size Velikost - + Progress % Done Napredek - Status Torrent status (e.g. downloading, seeding, paused) - Stanje + Stanje - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Stanje + + + Seeds i.e. full sources (often untranslated) Semena - + Peers i.e. partial sources (often untranslated) Soležnikov - + Down Speed i.e: Download speed Hitrost prejemanja - + Up Speed i.e: Upload speed Hitrost pošiljanja - + Ratio Share ratio Razmerje - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Preostali čas - + Category Kategorija - + Tags Oznake - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Dodano - + Completed On Torrent was completed on 01/01/2010 08:00 Zaključeno - + Tracker Sledilnik - + Down Limit i.e: Download limit Omejitev prenašanja - + Up Limit i.e: Upload limit Omejitev pošiljanja - + Downloaded Amount of data downloaded (e.g. in MB) Prenešeno - + Uploaded Amount of data uploaded (e.g. in MB) Poslano - + Session Download Amount of data downloaded since program open (e.g. in MB) Prejeto to sejo - + Session Upload Amount of data uploaded since program open (e.g. in MB) Poslano to sejo - + Remaining Amount of data left to download (e.g. in MB) Preostalo - + + Time Active + Time (duration) the torrent is active (not stopped) + Čas aktivnosti + + + + Yes + Da + + + + No + Ne + + Time Active Time (duration) the torrent is active (not paused) - Čas aktivnosti + Čas aktivnosti - + Save Path Torrent save path Mesto shranjevanja - + Incomplete Save Path Torrent incomplete save path Pomanjkljiva pot za shranjevanje - + Completed Amount of data completed (e.g. in MB) Dokončan - + Ratio Limit Upload share ratio limit Omejitev razmerja - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Nazadnje videno v celoti - + Last Activity Time passed since a chunk was downloaded/uploaded Zadnja dejavnost - + Total Size i.e. Size including unwanted data Skupna velikost - + Availability The number of distributed copies of the torrent Razpoložljivost - + Info Hash v1 i.e: torrent info hash v1 Informativno zgoščeno vrednost, v1 - + Info Hash v2 i.e: torrent info hash v2 Informativno zgoščeno vrednost, v2 - + Reannounce In Indicates the time until next trackers reannounce + Znova sporoči čez + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A N/A - + %1 ago e.g.: 1h 20m ago pred %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (sejano %2) @@ -11515,334 +12104,358 @@ Prosimo da izberete drugo ime in poizkusite znova. TransferListWidget - + Column visibility Vidnost stolpca - + Recheck confirmation Ponovno potrdite preverjanje - + Are you sure you want to recheck the selected torrent(s)? Ali ste prepričani, da želite ponovno preveriti želene torrente? - + Rename Preimenuj - + New name: Novo ime: - + Choose save path Izberite mesto za shranjevanje - Confirm pause - Potrditev premora + Potrditev premora - Would you like to pause all torrents? - Ali ste prepričani, da želite začasno ustaviti vse torrente? + Ali ste prepričani, da želite začasno ustaviti vse torrente? - Confirm resume - Potrditev nadaljevanja + Potrditev nadaljevanja - Would you like to resume all torrents? - Ali ste prepričani, da želite nadaljevati vse torrente? + Ali ste prepričani, da želite nadaljevati vse torrente? - + Unable to preview Predogled ni mogoč - + The selected torrent "%1" does not contain previewable files Izbran torrent "%1" ne vsebuje datoteke, za katere je možen predogled - + Resize columns Spremeni velikost stolpcev - + Resize all non-hidden columns to the size of their contents Prilagodi velikost vseh prikazanih stolpcev na širino njihove vsebine - + Enable automatic torrent management Omogoči samodejno upravljanje torrenta - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Ali ste prepričani, da želite omogočiti samodejno upravljanje izbranih torrentov? Morda bodo premaknjeni na drugo mesto. - Add Tags - Dodaj oznake + Dodaj oznake - + Choose folder to save exported .torrent files Izberite mapo, kamor želite shraniti izvožene datoteke .torrent - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Izvoz datoteke .torrent ni uspel. Torrent: "%1". Pot shranjevanja: "%2". Razlog: "%3" - + A file with the same name already exists Datoteka s tem imenom že obstaja - + Export .torrent file error Napaka pri izvozu datoteke .torrent - + Remove All Tags Odstrani vse oznake - + Remove all tags from selected torrents? Odstrani vse oznake z izbranega torrenta? - + Comma-separated tags: Z vejico ločene oznake: - + Invalid tag Neveljavna oznaka - + Tag name: '%1' is invalid Ime oznake: '%1' je neveljavno - &Resume Resume/start the torrent - &Nadaljuj + &Nadaljuj - &Pause Pause the torrent - &Premor + &Premor - Force Resu&me Force Resume/start the torrent - Prisi&lno nadaljuj + Prisi&lno nadaljuj - + Pre&view file... Pr&edogled datoteke ... - + Torrent &options... Mo&žnosti torrenta ... - + Open destination &folder Odpri &ciljno mapo - + Move &up i.e. move up in the queue Premakni &gor - + Move &down i.e. Move down in the queue Premakni &dol - + Move to &top i.e. Move to top of the queue Premakni na &vrh - + Move to &bottom i.e. Move to bottom of the queue Premakni na dn&o - + Set loc&ation... Nastavi &mesto ... - + Force rec&heck Prisilno znova pre&veri - + Force r&eannounce Prisilno znova sporo&či - + &Magnet link &Magnetno povezavo - + Torrent &ID &ID torrenta - + + &Comment + &Komentar + + + &Name &Ime - + Info &hash v1 - + Informativno &zgoščeno vrednost, v1 - + Info h&ash v2 - + Informativno z&goščeno vrednost, v2 - + Re&name... P&reimenuj ... - + Edit trac&kers... &Uredi sledilnike ... - + E&xport .torrent... I&zvozi torrent ... - + Categor&y Kategori&ja - + &New... New category... &Nova ... - + &Reset Reset category Pon&astavi - + Ta&gs O&znake - + &Add... Add / assign multiple tags... &Dodaj ... - + &Remove All Remove all tags Od&strani vse - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue V &čakalno vrsto - + &Copy &Kopiraj - + Exported torrent is not necessarily the same as the imported Izvoženi torrent ni nujno enak kot uvoženi - + Download in sequential order Prejemanje v zaporednem vrstnem redu - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Pri izvažanju datotek .torrent je prišlo do napak. Za podrobnosti glejte dnevnik izvajanja. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Od&strani - + Download first and last pieces first Prejemanje najprej prvih in zadnjih kosov - + Automatic Torrent Management Samodejno upravljanje torrenta - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Samodejni način pomeni, da so različne lastnosti torrenta (npr. pot za shranjevanje) določene na podlagi dodeljene kategorije - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Prisilno vnovično sporočanje ni mogoče, če je torrent začasno ustavljen, v čakalni vrsti, ima napako ali se preverja + Prisilno vnovično sporočanje ni mogoče, če je torrent začasno ustavljen, v čakalni vrsti, ima napako ali se preverja - + Super seeding mode Način super sejanja @@ -11852,71 +12465,76 @@ Prosimo da izberete drugo ime in poizkusite znova. UI Theme Configuration - + Nastavitev teme uporabniškega vmesnika Colors - + Barve Color ID - + ID barve Light Mode - + Svetel način Dark Mode - + Temen način Icons - + Ikone Icon ID - + ID ikone - + UI Theme Configuration. - + Nastavitev teme uporabniškega vmesnika. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - + Nastavitve teme vmesnika ni bilo mogoče shraniti. Razlog: %1 - - + + Couldn't remove icon file. File: %1. - + Datoteke z ikono ni bilo mogoče odstraniti. Datoteka: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - + Datoteke z ikono ni bilo mogoče kopirati. Vir: %1. Cilj: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Napaka pri uvozu teme vmesnika iz datoteke: "%1" @@ -11947,34 +12565,27 @@ Prosimo da izberete drugo ime in poizkusite znova. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". V datoteki z nastavitvami je odkrita neveljavna vrednost, vračanje na privzeto. Ključ: "%1". Neveljavna vrednost: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python zaznan, izvršljiva datoteka: "%1" različice %2 - - - Python not detected - Python ni zaznan - Found Python executable. Name: "%1". Version: "%2" @@ -12009,27 +12620,27 @@ Prosimo da izberete drugo ime in poizkusite znova. Utils::IO - + File open error. File: "%1". Error: "%2" - + Napaka pri odpiranju datoteke. Datoteka: "%1". Napaka: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12039,7 +12650,7 @@ Prosimo da izberete drugo ime in poizkusite znova. Watched Folder Options - + Možnosti opazovanih map @@ -12093,72 +12704,72 @@ Prosimo da izberete drugo ime in poizkusite znova. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Določeno je nesprejemljivo ime sejnega piškotka: "%1". Uporabljeno je privzeto. - + Unacceptable file type, only regular file is allowed. Nesprejemljiva oblika datoteke, dovoljene so le splošne datoteke. - + Symlinks inside alternative UI folder are forbidden. Symlinki znotraj mape alternativnega vmesnika so prepovedani. - - Using built-in Web UI. - Uporabi vgrajen spletni vmesnik + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Uporabi vgrajen spletni vmesnik po meri. Lokacija: "%1". + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Prevod spletnega vmesnika za izbran jezik (%1) je bil uspešno naložen. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Prevoda spletnega vmesnika za izbran jezik ni bilo mogoče naložiti (%1). + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" Manjkajoč ločilnik ';' v HTTP glavi po meri znotraj spletnega vmesnika: "%1" - + Web server error. %1 - + Napaka spletnega strežnika. %1 - + Web server error. Unknown error. - + Napaka spletnega strežnika. Neznana napaka. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Glava izvirnika & Izvor tarče se ne ujemata! IP vira: '%1'. Glava izvirnika: '%2'. Izvor tarče: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Glava nanašalca & Izvor tarče se ne ujemata! IP vira: '%1'. Glava nanašalca: '%2'. Izvor tarče: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Neveljavna Glava Gostitelja, neujemanje vrat. Zahteva za IP vira: '%1'. Vrata strežnika: '%2'. Prejeta Glava izvirnika: '%3'  - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Neveljavna Glava Gostitelja. Zahteva za IP vira: '%1'. Prejeta Glava izvirnika: '%2' @@ -12166,143 +12777,136 @@ Prosimo da izberete drugo ime in poizkusite znova. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS namestitev uspešna + + Credentials are not set + Poverilnice niso nastavljene + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: HTTPS namestitev spodletela, povrnitev na HTTP + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Web UI: Posluša na IP: %1, vrata %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: Povezava na IP %1, vrata %2 ni mogoča. Razlog: %3 + + Unknown error + Neznana napaka misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + %1 s - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1y %2d - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1y %2d + %1y %2d - - + + Unknown Unknown (size) Neznano - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent bo sedaj izklopil računalnik, ker so vsi prejemi zaključeni. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_sr.ts b/src/lang/qbittorrent_sr.ts index d19c2cd5d271..ecc26db3e970 100644 --- a/src/lang/qbittorrent_sr.ts +++ b/src/lang/qbittorrent_sr.ts @@ -14,77 +14,77 @@ О програму - + Authors Аутори - + Current maintainer Тренутни одржавалац: - + Greece Грчка - - + + Nationality: Националност: - - + + E-mail: Е-маил: - - + + Name: Име: - + Original author Оригинални аутор - + France Француска - + Special Thanks Посебна захвалност - + Translators Преводиоци - + License Лиценца - + Software Used Коришћени софтвер - + qBittorrent was built with the following libraries: Ова верзија qBittorrentа је изграђена користећи наведене библиотеке: - + Copy to clipboard - + Копирај @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Ауторска права заштићена %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Ауторска права заштићена %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Сачувати у - + Never show again Не приказуј поново - Torrent settings - Подешавања торента + Подешавања торента @@ -191,12 +190,12 @@ Започни торент - + Torrent information Информације о торенту - + Skip hash check Прескочи проверу хеша @@ -205,6 +204,11 @@ Use another path for incomplete torrent Користи другу путању за незавршене торенте + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Услов престанка - - + + None Никакав - - + + Metadata received Примљени метаподаци - - + + Torrents that have metadata initially will be added as stopped. + Торенти који иницијално имају метаподатке биће додати као стопирани. + + + + Files checked Проверени фајлови - + Add to top of queue Додај на врх редоследа - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Када је означено, .torrent фајл се неће брисати, без обзира на подешавања у страни "Преузимања" дијалога "Опције" - + Content layout: Распоред садржаја: - + Original Оригинал - + Create subfolder Направите подмапу - + Don't create subfolder Не креирај подмапу - + Info hash v1: Инфо хеш v1: - + Size: Величина: - + Comment: Коментар: - + Date: Датум: @@ -324,245 +333,182 @@ Запамти последњу коришћену путању - + Do not delete .torrent file Не бриши .torrent фајл - + Download in sequential order Преузми у редоследу - + Download first and last pieces first Прво преузми почетне и крајње делове - + Info hash v2: Инфо хеш v2: - + Select All Селектуј све - + Select None Деселектуј - + Save as .torrent file... Сними као .torrent фајл... - + I/O Error I/O грешка - Invalid torrent - Неисправан торент - - - + Not Available This comment is unavailable Није доступно - + Not Available This date is unavailable Није доступно - + Not available Није доступно - Invalid magnet link - Неисправан магнет линк - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Учитавање торента није успело: %1. -Грешка: %2 - - - This magnet link was not recognized - Магнет линк није препознат - - - + Magnet link Магнет линк - + Retrieving metadata... Дохватам метаподатке... - - + + Choose save path Изаберите путању за чување - Torrent is already present - Торент је већ присутан - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Торент "%1" је већ у списку преузимања. Трекери нису били спојени зато што је у питању приватни торент. - - - Torrent is already queued for processing. - Торент је већ на чекању за обраду. - - - + No stop condition is set. Услови престанка нису подешени. - + Torrent will stop after metadata is received. Торент ће престати након што метаподаци буду били примљени. - - Torrents that have metadata initially aren't affected. - Торенти који већ имају метаподатке нису обухваћени. - - - + Torrent will stop after files are initially checked. Торент ће престати након почетне провере фајлова. - + This will also download metadata if it wasn't there initially. Метаподаци ће такође бити преузети ако већ нису били ту. - - + + N/A Недоступно - Magnet link is already queued for processing. - Торент је већ на чекању за обраду. - - - + %1 (Free space on disk: %2) %1 (Слободан простор на диску: %2) - + Not available This size is unavailable. Није доступна - + Torrent file (*%1) Торент датотека (*%1) - + Save as torrent file Сними као торент фајл - + Couldn't export torrent metadata file '%1'. Reason: %2. Извоз фајла метаподатака торента "%1" није успео. Разлог: %2. - + Cannot create v2 torrent until its data is fully downloaded. Није могуће креирати v2 торент док се његови подаци у потпуности не преузму. - Cannot download '%1': %2 - Није могуће преузети '%1': %2 - - - + Filter files... Филтрирај датотеке... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Торент "%1" је већ на списку преноса. Трекере није могуће спојити јер је у питању приватни торент. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торент "%1" је већ на списку преноса. Желите ли да спојите трекере из новог извора? - - - + Parsing metadata... Обрађујем метаподатке... - + Metadata retrieval complete Преузимање метаподатака завршено - - Failed to load from URL: %1. -Error: %2 - Учитавање торента из URL није успело: %1. -Грешка: %2 - - - Download Error - Грешка при преузимању - AddTorrentManager Downloading torrent... Source: "%1" - + Преузимање торента... Извор: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Додавање торента није успело. Извор: "%1". Разлог: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Откривен је покушај додавања дупликата торента. Извор: %1. Постојећи торент: %2. Резултат: %3. - + Merging of trackers is disabled - + Спајање тракера је онемогућено - + Trackers cannot be merged because it is a private torrent - + Тракери не могу бити спојени јер је у питању приватни торент. - + Trackers are merged from new source - + Тракери су спојени из новог извора @@ -648,72 +594,77 @@ Error: %2 Прескочи проверу хеша - - - Choose save path - Изаберите путању чувања + + Torrent share limits + Ограничења дељења торената - - - - - - - Default - Подразумевано + + + Choose save path + Изаберите путању чувања + + + - Yes - Да + Default + Подразумевано + Yes + Да + + + + + No Не - + Manual Ручно - + Automatic Аутоматско - + Original Оригинал - + Create subfolder Направите подмапу - + Don't create subfolder Не креирај потфасциклу - + None Никакав - + Metadata received Примљени метаподаци - + Files checked Проверени фајлови @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Провери торенте по завршетку - - + + ms milliseconds ms - + Setting Подешавање - + Value Value set for this setting Вредност - + (disabled) (онемогућено) - + (auto) (аутоматски) - + + min minutes мин - + All addresses Све адресе - + qBittorrent Section qBittorrent Одељак - - + + Open documentation Отвори документацију - + All IPv4 addresses Све IPv4 адресе - + All IPv6 addresses Све IPv6 адресе - + libtorrent Section libtorrent секција - + Fastresume files - + SQLite database (experimental) База података SQLite (експериментално) - + Resume data storage type (requires restart) - + Тип чувања података за наставак (потребно је поновно покретање) - + Normal Нормално - + Below normal Испод нормале - + Medium Средње - + Low Ниско - + Very low Веома ниско - - Process memory priority (Windows >= 8 only) - Приоритет процеса у меморији (Само за Windows 8 и касније) - - - + Physical memory (RAM) usage limit Лимит коришћења радне меморије (RAM) - + Asynchronous I/O threads Асинхроне I/O нити - + Hashing threads Нити хеширања - + File pool size - + Величина пула фајлова - + Outstanding memory when checking torrents - + Број неискоришћене меморије при провери торената - + Disk cache Кеш на диску - - - - + + + + s seconds с - + Disk cache expiry interval Интервал истека кеша диска - + Disk queue size - - + + Enable OS cache Омогући кеш система - + Coalesce reads & writes Укомбинуј читање и писање - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + + 0 (disabled) 0 (онемогућено) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Излазни портови (Min) [0: Искључено] - + Outgoing ports (Max) [0: disabled] - + Излазни портови (Max) [0: Искључено] - + 0 (permanent lease) - + 0 (трајни закуп) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) (бесконачно) - + (system default) (системски подразумевано) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Ова опција није толико ефективна на Linux-у - + + Process memory priority + Приоритет процесорске меморије + + + Bdecode depth limit - + Bdecode token limit - + Default Подразумевано - + Memory mapped files Фајлови мапирани у меморији - + POSIX-compliant POSIX-усаглашен - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache Онемогући кеш ОС-а - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Марка воденог жига бафера за слање - + Send buffer low watermark - + Ниска марка воденог жига бафера за слање - + Send buffer watermark factor - + Outgoing connections per second - + Одлазне конекције по секунди - - + + 0 (system default) 0 (системски подразумевано) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - - .torrent file size limit + + Save statistics interval [0: disabled] + How often the statistics file is saved. - + + .torrent file size limit + Лимит величине .torrent фајла + + + Type of service (ToS) for connections to peers - + Prefer TCP Преферирај TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) Подршка интернационализованих имена домена (IDN) - + Allow multiple connections from the same IP address Дозволи више конекција са исте IP адресе - + Validate HTTPS tracker certificates Валидирај HTTPS сертификате трекера - + Server-side request forgery (SSRF) mitigation Ублаживање лажирања захтева са серверске стране (SSRF) - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval Период освежавања - + Resolve peer host names Одреди име хоста peer-а (учесника) - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed - + Enable icons in menus Омогући иконице у менијима - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + сек + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications Приказуј нотификације - + Display notifications for added torrents Приказуј нотификације за додате торенте - + Download tracker's favicon Преузми фавикон трекера - + Save path history length Дужина историје путања за чување - + Enable speed graphs Приказуј графике брзине - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin Бергеров систем (свако са сваким) - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck Potvrdi proveru torrenta - + Confirm removal of all tags Потврди уклањање свих ознака - + Always announce to all trackers in a tier Увек огласи свим трекерима у рангу - + Always announce to all tiers Увек огласи свим ранговима - + Any interface i.e. Any network interface Било који мрежни интерфејс - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries Одреди државе учесника - + Network interface Мрежни интерфејс - + Optional IP address to bind to Опциона IP адреса за качење - + Max concurrent HTTP announces Максимум истовремених HTTP објављивања - + Enable embedded tracker Омогући уграђени пратилац - + Embedded tracker port Уграђени пратилац порта - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 је покренут + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Извршавање у портабилном режиму. Аутодетектована фасцикла профила на: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Сувишна заставица командне линије детектована: "%1". Портабилни режим подразумева релативно брзо-настављање. - + Using config directory: %1 Користи се конфигурациона фасцикла: %1 - + Torrent name: %1 Име торента: %1 - + Torrent size: %1 Величина торента: %1 - + Save path: %1 Путања чувања: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Торент ће бити преузет за %1. - + + Thank you for using qBittorrent. Хвала што користите qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, slanje mail obaveštenja - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` Покретање екстерног програма. Торент: "%1". Команда: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Није успело покретање екстерног програма. Торент: "%1". Команда: `%2` - + Torrent "%1" has finished downloading Преузимање торента "%1" је завршено - + WebUI will be started shortly after internal preparations. Please wait... Веб интерфејс ће бити покренут убрзо, након интерних припрема. Молимо сачекајте... - - + + Loading torrents... Учитавање торената... - + E&xit Иза&ђи - + I/O Error i.e: Input/Output Error I/O грешка - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Разлог: %2 - Error - Грешка - - - Failed to add torrent: %1 - Грешка при додавању торента: %1 - - - + Torrent added Торент додат - + '%1' was added. e.g: xxx.avi was added. '%1' је додат. - + Download completed Преузимање завршено - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' је преузет. - - - URL download error - Грешка у преузимању URL-а + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - Преузимање фајла на URL-у "%1" није успело, разлог: %2. + + This is a test email. + - Torrent file association - Асоцијација торент фајла + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent није подразумевана апликација за отварање .torrent фајлова или Magnet веза. -Желите ли да подесите qBittorrent као подразумевану апликацију за то? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' је преузет. - + Information Информације - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 Можете да контролишете qBittorrent тако што приступите веб интерфејсу на: %1 - - The Web UI administrator username is: %1 - Администраторско корисничко име веб интерфејса је: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Администраторска шифра веб интерфејса је и даље подразумевана: %1 - - - - This is a security risk, please change your password in program preferences. - Ово је безбедоносни ризик, молимо промените шифру у подешавањима програма. - - - Application failed to start. - Апликација није успела да се покрене. - - - + Exit Излаз - + Recursive download confirmation - Потврда поновног преузимања + Потврда поновног преузимања - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торент "%1" садржи .torrent фајлове, желите ли да наставите са њиховим преузимањем? + Торент "%1" садржи .torrent фајлове, желите ли да наставите са њиховим преузимањем? - + Never - + Никад - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Подешавање лимита коришћења радне меморије (RAM) није успело. Код грешке: %1. Порука грешке: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated Обустављање qBittorrent-a започето - + qBittorrent is shutting down... qBittorrent се искључује... - + Saving torrent progress... Снимање напретка торента... - + qBittorrent is now ready to exit qBittorrent је сада спреман за излазак @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Креирање фасцикле није успело: "%1" @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Логовање преко WebAPI-ја није успело. Разлог: IP је банован, IP: %1, корисничко име: %2 - + Your IP address has been banned after too many failed authentication attempts. Ваша IP адреса је одбијена после више покушаја аутентификације. - + WebAPI login success. IP: %1 Успешан логин на WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Логовање преко WebAPI-ја није успело. Разлог: неважећи акредитиви, број покушаја: %1, IP: %2, корисничко име: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? - + Must Not Contain: Не сме да садржи: - + Episode Filter: Филтер епизода: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Извези... - + Matches articles based on episode filter. Усклађује чланке на основу филтера епизода. - + Example: Пример: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - + Episode filter rules: Правила филтера епизода: - + Season number is a mandatory non-zero value Број сезоне је обавезан број који није нула - + Filter must end with semicolon Филтер се мора завршавати са ; - + Three range types for episodes are supported: Три типа опсега су подржана за епизоде: - + Single number: <b>1x25;</b> matches episode 25 of season one Један број: <b>1x25;</b> одговара епизоди 25 прве сезоне - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Нормалан опсег: <b>1x25-40;</b> одговара епизодама 25-40 прве сезоне - + Episode number is a mandatory positive value Број епизоде је обавезна позитивна вредност - + Rules Правила - + Rules (legacy) Правила (стара) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Бесконачан опсег: <b>1x25-;</b> одговара епизодама 25 и више прве сезоне, и свим епизодама каснијих сезона - + Last Match: %1 days ago Последње подударање: пре %1 дана - + Last Match: Unknown Последње подударање: непознато - + New rule name Назив новог правила - + Please type the name of the new download rule. Молимо унесите име новог правила за преузимање. - - + + Rule name conflict Конфликт у називу правила - - + + A rule with this name already exists, please choose another name. Правило са овим називом већ постоји, молим изаберите неки други назив. - + Are you sure you want to remove the download rule named '%1'? Da li ste sigurni da želite da uklonite pravilo preuzimanja '%1'? - + Are you sure you want to remove the selected download rules? Да ли сте сигурни да желите да уклоните изабрана правила преузимања? - + Rule deletion confirmation Потврда брисања - правила - + Invalid action Неважећа акција - + The list is empty, there is nothing to export. Листа је празна, не постоји ништа за извоз. - + Export RSS rules Извези RSS правила - + I/O Error I/O грешка - + Failed to create the destination file. Reason: %1 Креирање одредишног фајла није успело. Разлог: %1 - + Import RSS rules Увези RSS правила - + Failed to import the selected rules file. Reason: %1 Увоз одабраног фајла са правилима није успео. Разлог: %1 - + Add new rule... Додај ново правило... - + Delete rule Обриши правило - + Rename rule... Преименуј правило... - + Delete selected rules Обриши изабрана правила - + Clear downloaded episodes... Очисти преузете епизоде... - + Rule renaming Преименовање правила - + Please type the new rule name Молим упишите назив за ново правило - + Clear downloaded episodes Очисти преузете епизоде - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Да ли сигурно желите да очистите списак преузетих епизода за изабрано правило? - + Regex mode: use Perl-compatible regular expressions Regex режим: користи Perl-компатибилне регуларне изразе - - + + Position %1: %2 Позиција %1: %2 - + Wildcard mode: you can use Режим џокера: можете користити - - + + Import error - + Failed to read the file. %1 - + ? to match any single character ? уместо било ког једног карактера - + * to match zero or more of any characters * уместо нула или више било којих карактера - + Whitespaces count as AND operators (all words, any order) Размаци се рачунају као И/AND оператори (све речи, било који редослед) - + | is used as OR operator | се користи као ИЛИ оператор - + If word order is important use * instead of whitespace. Ако је редослед речи битан, користите * уместо размака. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Израз са празним %1 чланом (нпр. %2) - + will match all articles. ће заменити све артикле. - + will exclude all articles. ће изузети све артикле. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 Парсирање информација о торенту није успело: %1 - + Cannot parse torrent info: invalid format Парсирање информација о торенту није успело: неважећи формат - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. Чување метаподатака о торенту у "%1" није успело. Грешка: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 Учитавање редоследа торената није успело: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 Чување података у "%1" није успело. Грешка: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Није нађено. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. База података је повређена. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. Добијање резултата упита није успело. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 Започињање трансакције није успело. Грешка: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Чување метаподатака торента није успело. Грешка: %1 - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 Чување редоследа торената није успело. Грешка: %1 @@ -2140,552 +2185,604 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Подршка Distributed Hash Table (DHT): %1 - - - - - - - - - + + + + + + + + + ON УКЉУЧЕН - - - - - - - - - + + + + + + + + + OFF ИСКЉУЧЕН - - + + Local Peer Discovery support: %1 Подршка Local Peer Discovery: %1 - + Restart is required to toggle Peer Exchange (PeX) support Поновно покретање је неопходно за укључивање/искључивање подршке Peer Exchange (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Настављање торента није успело. Торент: "%1". Разлог: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Настављање торента није успело: недоследан ID торента детектован. Торент: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Недоследни подаци детектовани: категорија недостаје из конфигурационог фајла. Категорија ће бити обновљена али њена подешавања ће бити ресетована на подразумевана. Торент: "%1". Категорија: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Недоследни подаци детектовани: неважећа категорија. Торент: "%1". Категорија: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Недоследни подаци детектовани: ознака недостаје из конфигурационог фајла. Ознака ће бити обновљена. Торент: "%1". Ознака: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Недоследни подаци детектовани: неважећа ознака. Торент: "%1". Ознака: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Догађај буђења система детектован. Поновно најављивање свим трекерима... - + Peer ID: "%1" ID учесника: "%1" - + HTTP User-Agent: "%1" HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 Подршка за Peer Exchange (PeX): %1 - - + + Anonymous mode: %1 Анонимни режим: %1 - - + + Encryption support: %1 Подршка енкрипције: %1 - - + + FORCED ПРИСИЛНО - + Could not find GUID of network interface. Interface: "%1" Налажење GUID-а интерфејса мреже није успело. Интерфејс: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. Торент је достигао лимит односа дељења. - - - + Torrent: "%1". Торент: "%1" - - - Removed torrent. - Торент уклоњен. + Торент уклоњен. - - - Removed torrent and deleted its content. - Торент уклоњен, његов садржај обрисан. + Торент уклоњен, његов садржај обрисан. - - - Torrent paused. - Торент паузиран. + Торент паузиран. - - - + Super seeding enabled. - + Torrent reached the seeding time limit. Торент је достигао ограничење времена дељења. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" Учитавање торента није успело. Разлог: "%1" - + I2P error. Message: "%1". - Downloading torrent, please wait... Source: "%1" - Преузимање торента, молимо сачекајте... Извор: "%1" + + UPnP/NAT-PMP support: ON + Подршка UPnP/NAT-PMP: УКЉ - Failed to load torrent. Source: "%1". Reason: "%2" - Учитавање торента није успело. Извор: "%1". Разлог: "%2" + + Saving resume data completed. + - - UPnP/NAT-PMP support: ON - Подршка UPnP/NAT-PMP: УКЉ + + BitTorrent session successfully finished. + + + + + Session shutdown timed out. + + + + + Removing torrent. + + + + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Спајање тракера је онемогућено + + + + Trackers cannot be merged because it is a private torrent + Тракери не могу бити спојени јер је у питању приватни торент. - + + Trackers are merged from new source + Тракери су спојени из новог извора + + + UPnP/NAT-PMP support: OFF Подршка за UPnP/NAT-PMP: ИСКЉ - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 - ONLINE - ОНЛАЈН + + The configured network address is invalid. Address: "%1" + - OFFLINE - OFFLINE + + + Failed to find the configured network address to listen on. Address: "%1" + - - The configured network address is invalid. Address: "%1" + + The configured network interface is invalid. Interface: "%1" - - - Failed to find the configured network address to listen on. Address: "%1" + + Tracker list updated - - The configured network interface is invalid. Interface: "%1" + + Failed to update tracker list. Reason: "%1" - + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Торент паузиран. Торент: "%1" + Торент паузиран. Торент: "%1" - + Torrent resumed. Torrent: "%1" Торент настављен. Торент: "%1" - + Torrent download finished. Torrent: "%1" Преузимање торента завршено. Торент: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - - Removed torrent. Torrent: "%1" - - - - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP филтер - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). филтрирани порт (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). привилеговани порт (%1) - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". Грешка у проксију SOCKS5. Адреса: %1. Порука: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 је онемогућено - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 је онемогућено - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Операција отказана - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. + + Failed to start seeding. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Операција отказана + Операција отказана + + + + + Create new torrent file failed. Reason: %1. + BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On Укључено - + Off Искљученo - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Обнављање торента није успело. Фајлови су вероватно били премештени, или складиште није доступно. Торент: "%1". Разлог: "%2" - + Missing metadata Недостају метаподаци - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Преименовање фајла није успело. Торент: "%1", фајл: "%2", разлог: "%3" - + Performance alert: %1. More info: %2 Упозорење око перформанси: %1. Више информација: %2 @@ -2706,184 +2803,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Параметар "%1" мора поштовати синтаксу "%1=%2" - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Параметар "%1" мора поштовати синтаксу "%1=%2" - + Expected integer number in environment variable '%1', but got '%2' Очекивао се цео број у променљивој окружења "%1", али нађено је "%2" - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Параметар "%1" мора поштовати синтаксу "%1=%2" + Параметар "%1" мора поштовати синтаксу "%1=%2" - + Expected %1 in environment variable '%2', but got '%3' Очекивало се %1 у променљивој окружења "%2", али нађено је "%3" - - + + %1 must specify a valid port (1 to 65535). %1 мора бити важећи порт (1 до 65535) - + Usage: Upotreba: - + [options] [(<filename> | <url>)...] [опције] [(<filename> | <url>)...] - + Options: Подешавања: - + Display program version and exit Прикажи верзију програма и изађу - + Display this help message and exit Прикажи ову помоћну поруку и изађи - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Параметар "%1" мора поштовати синтаксу "%1=%2" + + + + Confirm the legal notice + + + + + port порт - - Change the Web UI port - Промени порт за веб интерфејс + + Change the WebUI port + - + Change the torrenting port Промени порт за торентовање - + Disable splash screen Isključi pozdravni ekran - + Run in daemon-mode (background) Radi u servisnom režimu (u pozadini) - + dir Use appropriate short form or abbreviation of "directory" фасц. - + Store configuration files in <dir> Чувај конфигурационе фајлове у <dir> - - + + name име - + Store configuration files in directories qBittorrent_<name> Чувај конфигурационе фајлове у фасциклама qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs фајлови или URL-ови - + Download the torrents passed by the user - + Options when adding new torrents: Подешавања при додавању нових торената: - + path путања - + Torrent save path Путања чувања торента - + + Add torrents as running or stopped + + + Add torrents as started or paused - Додај торенте у започетом или паузираном стању + Додај торенте у започетом или паузираном стању - + Skip hash check Прескочи проверу хеша - + Assign torrents to category. If the category doesn't exist, it will be created. Назначи торенте по категоријама. Ако категорија не постоји, биће креирана. - + Download files in sequential order Преузми фајлове по реду - + Download first and last pieces first Прво преузми почетне и крајње делове - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Вредности опција се могу наводити путем променљивих окружења. За опцију по имену "parameter-name", име променљиве окружења је "QBT_PARAMETER_NAME" (великим словима, "-" замењено са "_"). За навођење вредности-заставице, подесите променљиву на "1" или "TRUE". Например, да онемогућите уводни екран: - + Command line parameters take precedence over environment variables Параметри командне линије имају приоритет у односу на променљиве окружења - + Help Помоћ @@ -2891,17 +3002,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Категорије - + All Све - + Uncategorized Несврстано @@ -2935,13 +3046,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Настави торенте + Start torrents + + Stop torrents + + + + Resume torrents + Настави торенте + + Pause torrents - Паузирај торенте + Паузирај торенте @@ -2952,15 +3071,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Уреди... - + Reset Ресету + + + System + + CookiesDialog @@ -3001,12 +3125,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3014,7 +3138,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3033,23 +3157,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Такође перманентно обриши фајлове + Такође перманентно обриши фајлове - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Да ли сигурно желите да уклоните "%1" са листе преноса? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Да ли сигурно желите да уклоните ових %1 торената са листе преноса? - + Remove Уклони @@ -3062,12 +3190,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Преузимање са URLова - + Add torrent links Додај торент линкове - + One link per line (HTTP links, Magnet links and info-hashes are supported) Једна веза по реду (подржани су HTTP и Magnet линкови и инфо хешеви) @@ -3077,12 +3205,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Преузми - + No URL entered URL није унесен - + Please type at least one URL. Молим упишите најмање један URL. @@ -3241,64 +3369,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Преузимање торента... Извор: "%1" - Trackers cannot be merged because it is a private torrent - + Тракери не могу бити спојени јер је у питању приватни торент. - + Torrent is already present - Торент је већ присутан + Торент је већ присутан + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торент "%1" је већ на списку преноса. Желите ли да спојите трекере из новог извора? + Торент "%1" је већ на списку преноса. Желите ли да спојите трекере из новог извора? GeoIPDatabase - - + + Unsupported database file size. Неподржана величина фајла базе података. - + Metadata error: '%1' entry not found. - + Metadata error: '%1' entry has invalid type. - + Unsupported database version: %1.%2 Неподржана верзија базе података: %1.%2 - + Unsupported IP version: %1 Неподржана верзија IP: %1 - + Unsupported record size: %1 - + Database corrupted: no data section found. @@ -3306,17 +3461,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 @@ -3357,36 +3512,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Потражи... - + Reset Ресету - + Select icon Изаберите иконицу - + Supported image files Подржани фајлови слика + + LegalNotice + + + Legal Notice + Правно Обавештење + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent је програм за дељење датотека. Када покренете Торент, дељене датотеке ће бити доступне другима за преузимање. Било који садржај који поделите је Ваша лична одговорност. + + + + No further notices will be issued. + Неће бити даљих напомена. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 је био блокиран. Разлог: %2 - + %1 was banned 0.0.0.0 was banned %1 је банован @@ -3395,91 +3578,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 је непознат параметар командне линије. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - Не можете да наведете %1: qBittorrent је већ покренут код тог корисника. - - - + Run application with -h option to read about command line parameters. Покрените апликацију са опцијом -h да прочитате о параметрима командне линије. - + Bad command line Погрешна командна линија - + Bad command line: Погрешна командна линија: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - Правно обавештење - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent је програм за дељење датотека. Када покренете Торент, дељене датотеке ће бити доступне другима за преузимање. Било који садржај који поделите је Ваша лична одговорност. - - - - No further notices will be issued. - Неће бити даљих напомена. - - - - Press %1 key to accept and continue... - Притисните тастер %1 да ово прихватите и наставите... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent је програм за дељење датотека. Када покренете Торент, дељене датотеке ће бити доступне другима за преузимање. Било који садржај који поделите је Ваша лична одговорност. - -Неће бити даљих напомена. + + You cannot use %1: qBittorrent is already running. + - - Legal notice - Правно обавештење + + Another qBittorrent instance is already running. + - - Cancel - Откажи + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - Сагласан сам + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3490,621 +3644,706 @@ No further notices will be issued. &Уреди - + &Tools &Алати - + &File &Фајл - + &Help &Помоћ - + On Downloads &Done По завр&шетку преузимања - + &View &Изглед - + &Options... &Подешавања... - &Resume - &Настави + &Настави - + &Remove &Уклони - + Torrent &Creator &Креатор торената - - + + Alternative Speed Limits Алтернативна ограничења брзине - + &Top Toolbar Трака на &врху - + Display Top Toolbar Прикажи траку са алаткама на врху - + Status &Bar Статусна &трака - + Filters Sidebar Бочна трака са филтерима - + S&peed in Title Bar Б&рзина на насловној траци - + Show Transfer Speed in Title Bar Прикажи брзину преноса на насловној траци - + &RSS Reader RSS &читач - + Search &Engine Претра&живач - + L&ock qBittorrent За&кључај qBittorrent - + Do&nate! Донира&ј! - + + Sh&utdown System + + + + &Do nothing Не ради &ништа - + Close Window Затвори прозор - R&esume All - Н&астави Све + Н&астави Све - + Manage Cookies... Управљај колачићима... - + Manage stored network cookies Управљај сачуваним мрежним колачићима - + Normal Messages Нормалне поруке - + Information Messages Информационе поруке - + Warning Messages Поруке упозорења - + Critical Messages Критичне поруке - + &Log &Запис - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Подеси општа ограничења брзине... - + Bottom of Queue Крај редоследа - + Move to the bottom of the queue Премести на крај редоследа - + Top of Queue Почетак редоследа - + Move to the top of the queue Премести на почетак редоследа - + Move Down Queue Премести низ редослед - + Move down in the queue Премести надоле у редоследу - + Move Up Queue Премести уз редослед - + Move up in the queue Премести нагоре у редоследу - + &Exit qBittorrent На&пусти qBittorrent - + &Suspend System &Суспендуј систем - + &Hibernate System &Хибернирај систем - S&hutdown System - Иск&ључи систем + Иск&ључи систем - + &Statistics &Статистика - + Check for Updates Провери ажурирања - + Check for Program Updates Провери ажурирања програма - + &About &О програму - &Pause - &Пауза + &Пауза - P&ause All - П&аузирај све + П&аузирај све - + &Add Torrent File... &Додај фајл торента... - + Open Отвори - + E&xit Иза&ђи - + Open URL Отвори URL - + &Documentation &Документација - + Lock Закључај - - - + + + Show Прикажи - + Check for program updates Провери ажурирања програма - + Add Torrent &Link... Додај &везу за торент - + If you like qBittorrent, please donate! Ако волите qBittorrent, молимо Вас да донирате! - - + + Execution Log Дневник догађаја - + Clear the password Очисти лозинку - + &Set Password &Подеси шифру - + Preferences Опције - + &Clear Password О&чисти шифру - + Transfers Трансфери - - + + qBittorrent is minimized to tray qBittorrent је умањен на палету - - - + + + This behavior can be changed in the settings. You won't be reminded again. Ово понашање се може променити у подешавањима. Нећемо вас више подсећати. - + Icons Only Само иконе - + Text Only Само текст - + Text Alongside Icons Текст поред икона - + Text Under Icons Текст испод икона - + Follow System Style Прати стил система - - + + UI lock password Закључавање КИ-а лозинком - - + + Please type the UI lock password: Молим упишите лозинку закључавања КИ-а: - + Are you sure you want to clear the password? Да ли сигурно желите да очистите шифру? - + Use regular expressions Користи регуларне изразе - - Search - Претраживање + + + Search Engine + Претраживач - - Transfers (%1) - Трансфери (%1) + + Search has failed + Претрага није успела - Recursive download confirmation - Потврда поновног преузимања + + Search has finished + Претраживање је завршено - Never - Никада + + Search + Претраживање - + + Transfers (%1) + Трансфери (%1) + + + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent је управо ажуриран и треба бити рестартован, да би' промене имале ефекта. - + qBittorrent is closed to tray qBittorrent је затворен на палету - + Some files are currently transferring. У току је пренос фајлова. - + Are you sure you want to quit qBittorrent? Да ли сте сигурни да желите да напустите qBittorrent? - + &No &Не - + &Yes &Да - + &Always Yes &Увек да - + Options saved. Опције сачуване. - %1/s - s is a shorthand for seconds - %1/с + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Недостаје Python Runtime - + qBittorrent Update Available Ажурирање qBittorrent-а доступно - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python је потребан за коришћење претраживачког модула, али изгледа да није инсталиран. Да ли желите да га инсталирате? - + Python is required to use the search engine but it does not seem to be installed. Python је потребан за коришћење претраживачког модула, али изгледа да није инсталиран. - - + + Old Python Runtime Застарео Python Runtime - + A new version is available. Нова верзија је доступна. - + Do you want to download %1? Да ли желите да преузмете %1? - + Open changelog... Отвори списак измена... - + No updates available. You are already using the latest version. Нема нових ажурирања. Одвећ користите најновију верзију. - + &Check for Updates &Потражи ажурирања - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Ваша верзија Python-а (%1) је застарела, неопходна је барем %2. Желите ли да инсталирате новију верзију? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Ваша верзија Python-а (%1) је застарела. Молимо инсталирајте најновију верзију да би претраживање радило. Минимални захтев: %2. - + + Paused + Паузиран + + + Checking for Updates... Тражим ажурирања... - + Already checking for program updates in the background Одвећ у позадини проверавам има ли ажурирања - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Грешка при преузимању - Python setup could not be downloaded, reason: %1. Please install it manually. - Python setup не може бити преузет,разлог: %1. + Python setup не може бити преузет,разлог: %1. Молим Вас инсталирајте га ручно. - - + + Invalid password Погрешна лозинка - + Filter torrents... Филтрирај торенте... - + Filter by: Филтрирај према: - + The password must be at least 3 characters long Шифра мора садржати барем 3 карактера - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торент "%1" садржи .torrent фајлове, желите ли да наставите са њиховим преузимањем? - - - + The password is invalid Лозинка је погрешна - + DL speed: %1 e.g: Download speed: 10 KiB/s Брзина преузимања: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Брзина слања: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [Преуз: %1, Отпр: %2] qBittorrent %3 - - - + Hide Сакриј - + Exiting qBittorrent Излазак из qBittorrent-а - + Open Torrent Files Отвори Торент фајлове - + Torrent Files Торент Фајлови @@ -4165,133 +4404,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O грешка: %1 - + The file size (%1) exceeds the download limit (%2) Величина датотеке (%1) премашује ограничење преузимања (%2) - + Exceeded max redirections (%1) Прекорачен максимални број преусмерења (%1) - + Redirected to magnet URI Преусмерено на magnet URI - + The remote host name was not found (invalid hostname) Име удаљеног рачунара није пронађено (неисправно име рачунара) - + The operation was canceled Операција је отказана - + The remote server closed the connection prematurely, before the entire reply was received and processed Удаљени сервер је прерано затворио конекцију, пре него што је цео одговор примљен и обрађен - + The connection to the remote server timed out Конекција на удаљени сервер је временски истекла (покушајте поново) - + SSL/TLS handshake failed SSL/TLS управљање неуспешно - + The remote server refused the connection Удаљени сервер не прихвата конекцију - + The connection to the proxy server was refused Конекција на прокси сервер је одбијена - + The proxy server closed the connection prematurely Прокси сервер је превремено затворио конекцију - + The proxy host name was not found Назив прокси сервера није пронађен - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Време повезивања са прокси-јем је истекло, или прокси није одговорио када је захтев послат - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) Приступ удаљеном садржају је одбијен (401) - + The operation requested on the remote content is not permitted Захтевана операција за удаљеним садржајем се не одобрава - + The remote content was not found at the server (404) Захтевани садржај, није пронађен на серверу (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Удаљени сервер захтева ауторизацију за слање садржаја, али дати акредитиви нису прихваћени - + The Network Access API cannot honor the request because the protocol is not known Мрежни приступ API-ја не може да се прихвати јер протокол није познат - + The requested operation is invalid for this protocol Захтевана операција је погрешна за овај протокол - + An unknown network-related error was detected Детектована је непозната грешка у вези са мрежом - + An unknown proxy-related error was detected Детектована је непозната грешка у вези са проксијем - + An unknown error related to the remote content was detected Детектована је непозната грешка у вези са удаљеним садржајем - + A breakdown in protocol was detected Детектован је проблем са протоколом - + Unknown error Непозната грешка @@ -4299,7 +4538,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSL грешка се игнорише, URL: "%1", грешке: "%2" @@ -5671,434 +5915,479 @@ Please install it manually. БитТорент - + RSS RSS - Web UI - Веб интерфејс + Веб интерфејс - + Advanced Напредно - + Customize UI Theme... Прилагоди тему КИ... - + Transfer List Списак трансфера - + Confirm when deleting torrents Потврда при брисању торената - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. Користи различите боје за приказ редова - + Hide zero and infinity values Сакриј вредности нула и бесконачно - + Always Увек - Paused torrents only - Само паузирани торенти + Само паузирани торенти - + Action on double-click Дејство при двоструком клику - + Downloading torrents: Преузимање торента: - - Start / Stop Torrent - Старт / Стоп Торент + Старт / Стоп Торент - - + + Open destination folder Отвори одредишну фасциклу - - + + No action Без дејства - + Completed torrents: Завршени торенти: - + Auto hide zero status filters - + Desktop Радна површина - + Start qBittorrent on Windows start up Отвори qBittorrent при покретању Windows-а - + Show splash screen on start up Прикажи уводни екран при пократању - + Confirmation on exit when torrents are active Потврда при излазу кад има активних торената - + Confirmation on auto-exit when downloads finish Потврда при аутоматском излазу када се преузимања заврше - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Приказ садржаја торента: - + Original Оригинал - + Create subfolder Креирај потфасциклу - + Don't create subfolder Не креирај потфасциклу - + The torrent will be added to the top of the download queue Торент ће бити додат на врх редоследа преузимања - + Add to top of queue The torrent will be added to the top of the download queue Додај на врх редоследа - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... Додај... - + Options.. Подешавања... - + Remove Уклони - + Email notification &upon download completion Обавештење путем е-поште када се преузимања заврше - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Протокол конекције учесника: - + Any Било који - + I2P (experimental) I2P (експериментално) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode Мешовити режим - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering &Филтрирање IP адреса - + Schedule &the use of alternative rate limits Направи &распоред коришћења алтернативних ограничења брзине - + From: From start time Од: - + To: To end time До: - + Find peers on the DHT network Тражи партнере на DHT мрежи - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption Дозволи енкрипцију - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Више информација</a>) - + Maximum active checking torrents: - + &Torrent Queueing &Ређање торената - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader RSS читач - + Enable fetching RSS feeds - + Feeds refresh interval: Период освежавања фидова: - + + Same host request delay: + + + + Maximum number of articles per feed: Максимални број чланака по допису: - - - - min - minutes - мин + + + + min + minutes + мин + + + + Seeding Limits + Ограничења донирања + + + Pause torrent + Паузирај торент + + + + Remove torrent + Уклони торент + + + + Remove torrent and its files + Уклони торент и његове фајлове + + + + Enable super seeding for torrent + + + + + When ratio reaches + Када однос достигне + + + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + - - Seeding Limits - Ограничења донирања + + URL: + URL: - - Pause torrent - Паузирај торент + + Fetched trackers + - - Remove torrent - Уклони торент + + Search UI + - - Remove torrent and its files - Уклони торент и његове фајлове + + Store opened tabs + - - Enable super seeding for torrent + + Also store search results - - When ratio reaches - Када однос достигне + + History length + - + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: Филтери: - + Web User Interface (Remote control) Веб Кориснички Интерфејс (Даљински приступ) - + IP address: IP адреса: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6106,42 +6395,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv Унесите IPv4 или IPv6 адресу. Можете да наведете "0.0.0.0" за било коју IPv4 адресу, " :: " за било коју IPv6 адресу, или " * " за и IPv4 и IPv6. - + Ban client after consecutive failures: Бануј клијента након узастопних неуспеха: - + Never Никад - + ban for: бан за: - + Session timeout: Тајмаут сесије: - + Disabled Онемогућено - Enable cookie Secure flag (requires HTTPS) - Омогући Secure заставицу колачића (захтева HTTPS) + Омогући Secure заставицу колачића (захтева HTTPS) - + Server domains: Домени сервера - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6150,442 +6438,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &Користи HTTPS уместо HTTP - + Bypass authentication for clients on localhost Заобиђи аутентификацију за клијенте на localhost-у - + Bypass authentication for clients in whitelisted IP subnets Заобиђи аутентификацију за клијенте на IP подмрежама које су на белој листи - + IP subnet whitelist... Листа дозвољених IP подмрежа... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name А&журирај моје име динамичног домена - + Minimize qBittorrent to notification area Минимизуј qBittorrent на системску палету - + + Search + + + + + WebUI + + + + Interface Интерфејс - + Language: Језик: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Изглед иконе у углу траке задатака: - - + + Normal Нормално - + File association Асоцирање фајлова - + Use qBittorrent for .torrent files Користи qBittorrent за .torrent фајлове - + Use qBittorrent for magnet links Користи qBittorrent за магнет линкове - + Check for program updates Провери ажурирања програма - + Power Management Управљање напајањем - + + &Log Files + + + + Save path: Путања за чување: - + Backup the log file after: - + Delete backup logs older than: - + + Show external IP in status bar + + + + When adding a torrent При додавању торента - + Bring torrent dialog to the front - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! Пажња! Могућ је губитак података! - + Saving Management Управљање чувањем - + Default Torrent Management Mode: Режим управљања торентима: - + Manual Ручно - + Automatic Аутоматски - + When Torrent Category changed: - + Relocate torrent Релоцирај торент - + Switch torrent to Manual Mode Пребаци торент у мануелни режим - - + + Relocate affected torrents Релоцирај обухваћене торенте - - + + Switch affected torrents to Manual Mode Пребаци обухваћене торенте у мануелни режим - + Use Subcategories Користи поткатегорије - + Default Save Path: Подразумевана путања чувања: - + Copy .torrent files to: Копирај .torrent фајлове у: - + Show &qBittorrent in notification area Прикажи qBittorrent на &системској палети - &Log file - Фајл &записа + Фајл &записа - + Display &torrent content and some options Приказуј садржај &торената и неке опције - + De&lete .torrent files afterwards Об&риши .torrent фајлове на крају - + Copy .torrent files for finished downloads to: Копирај .torrent фајлове за завршена преузимања у: - + Pre-allocate disk space for all files Унапред додели простор на диску за све фајлове - + Use custom UI Theme Користи сопствену тему КИ - + UI Theme file: Фајл теме КИ: - + Changing Interface settings requires application restart Промена подешавања интерфејса захтева рестарт апликације - + Shows a confirmation dialog upon torrent deletion Приказује дијалог за потврду при брисању торената - - + + Preview file, otherwise open destination folder Прикажи фајл, у супротном отвори одредишну фасциклу - - Show torrent options - Прикажи опције торената + Прикажи опције торената - + Shows a confirmation dialog when exiting with active torrents Приказује дијалог за потврду при затварању апликације док има активних торената - + When minimizing, the main window is closed and must be reopened from the systray icon При минимизовању, главни прозор се затвара и мора се поново отворити преко иконе у углу траке задатака - + The systray icon will still be visible when closing the main window Иконица у углу траке задатака ће и даље бити видљива после затварања главног прозора - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Затвори qBittorrent на системску палету - + Monochrome (for dark theme) Једнобојна (Тамна тема) - + Monochrome (for light theme) Једнобојна (Светла тема) - + Inhibit system sleep when torrents are downloading Спречи спавање система док се торенти преузимају - + Inhibit system sleep when torrents are seeding Спречи спавање система док се торенти шаљу - + Creates an additional log file after the log file reaches the specified file size Прави додатни фајл записа кад фајл записа достигне наведену величину - + days Delete backup logs older than 10 days дани - + months Delete backup logs older than 10 months месеца - + years Delete backup logs older than 10 years година - + Log performance warnings - The torrent will be added to download list in a paused state - Торент ће бити додат у списак преузимања у паузираном стању + Торент ће бити додат у списак преузимања у паузираном стању - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Не започињи преузимање аутоматски - + Whether the .torrent file should be deleted after adding it Да ли да се обрише .torrent фајл након његовог додавања - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Заузми пуне величине датотека на диску пре започињања преузимања да би се смањила фрагментација. Корисно само за механичке хард дискове. - + Append .!qB extension to incomplete files Додај .!qB екстензију некомплетним фајловима - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Када се торент преузме, понуди да се додају торенти из евентуалних .torrent фајлова које садржи - + Enable recursive download dialog Омогући рекурзивни дијалог за преузимање - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Аутоматски: разна својства торента (нпр. путања чувања) ће се одлучивати на основу асоциране категорије Мануелно: разна својства торента (нпр. путања чувања) се морају навести ручно - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme Користи иконице из системске теме - + Window state on start up: Стање прозора при покретању: - + qBittorrent window state on start up Стање прозора qBittorrent-а при покретању - + Torrent stop condition: Услов престанка торента: - - + + None Никакав - - + + Metadata received Примљени метаподаци - - + + Files checked Проверени фајлови - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: Користи другу путању за непотпуне торенте - + Automatically add torrents from: Аутоматски додај торенте из: - + Excluded file names Изузета имена фајлова - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6614,841 +6955,914 @@ readme.txt: филтрирај тачно име фајла. readme[0-9].txt: филтрирај "readme1.txt", "readme2.txt", али не "readme10.txt" - + Receiver Примаоц - + To: To receiver Коме: - + SMTP server: SMTP сервер: - + Sender Пошиљалац - + From: From sender Пошиљалац: - + This server requires a secure connection (SSL) Овај сервер захтева безбедну конекцију (SSL) - - + + Authentication Аутентикација - - - - + + + + Username: Корисничко име: - - - - + + + + Password: Лозинка: - + Run external program Покрени екстерни програм - Run on torrent added - Покрени при додавању торента + Покрени при додавању торента - Run on torrent finished - Покрени прои завршетку торента + Покрени прои завршетку торента - + Show console window Прикажи прозор конзоле - + TCP and μTP TCP и μTP - + Listening Port Пријемни порт - + Port used for incoming connections: Порт коришћен за долазне конекције: - + Set to 0 to let your system pick an unused port Подесите на 0 да би систем сам изабрао слободан порт - + Random Насумично - + Use UPnP / NAT-PMP port forwarding from my router Користи UPnP / NAT-PMP преусмерење порта са мог рутера - + Connections Limits Ограничења конекције - + Maximum number of connections per torrent: Максимални број конекција по торенту: - + Global maximum number of connections: Општи максимални број конекција: - + Maximum number of upload slots per torrent: Максимални број слотова за слање по торенту: - + Global maximum number of upload slots: Општи максимални број слотова за слање: - + Proxy Server Прокси сервер - + Type: Тип: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Хост: - - - + + + Port: Порт: - + Otherwise, the proxy server is only used for tracker connections У супротном, прокси сервер се једино користи за конекције tracker-а(пратилаца) - + Use proxy for peer connections Користи прокси за учесничке (peer) конекције - + A&uthentication А&утентификација - + Info: The password is saved unencrypted Инфо: шифра се чува у неенкриптованом стању - + Filter path (.dat, .p2p, .p2b): Путање фајла са филтерима (.dat, .p2p, .p2b): - + Reload the filter Поново учитај филтер - + Manually banned IP addresses... Ручно забрањене IP адресе... - + Apply to trackers Примени на трекере - + Global Rate Limits Општа вредност ограничења - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Слање: - - + + Download: Преузимање: - + Alternative Rate Limits Алтернативна ограничења - + Start time Почетно време - + End time Време завршетка - + When: Када: - + Every day Сваки дан - + Weekdays Радни дани - + Weekends Викенди - + Rate Limits Settings Подешавања ограничења односа - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead Примени ведносна ограничења код прекорачење преноса - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Примени ограничење на µTP протокол - + Privacy Приватност - + Enable DHT (decentralized network) to find more peers Омогући DHT (децентализовану мрежу) за налажење додатних учесника - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Размењуј peer-ове са компатибилним Bittorrent клијентима (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Омогући Peer Exchange (PeX) за налажење додатних учесника - + Look for peers on your local network Потражите peer-ове на вашој локалној мрежи - + Enable Local Peer Discovery to find more peers Омогући откривање локалних веза за налажење додатних учесника - + Encryption mode: Режим шифровања: - + Require encryption Захтевај енкрипцију - + Disable encryption Искључи енкрипцију - + Enable when using a proxy or a VPN connection - + Enable anonymous mode Омогући анонимни режим - + Maximum active downloads: Максимум активних преузимања: - + Maximum active uploads: Максимум активних слања: - + Maximum active torrents: Максимално активних торената: - + Do not count slow torrents in these limits Не убрајај споре торенте у ова ограничења - + Upload rate threshold: Граница брзине слања: - + Download rate threshold: Граница брзине преузимања: - - - + + + + sec seconds сек - + Torrent inactivity timer: Тајмер неактивности торената - + then затим - + Use UPnP / NAT-PMP to forward the port from my router Користи UPnP / NAT-PMP преусмерење порта са мог рутера - + Certificate: Сертификат: - + Key: Кључ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Информација о сертификатима</a> - + Change current password Промени тренутно шифру - Use alternative Web UI - Користи алтернативни веб интерфејс + Користи алтернативни веб интерфејс - + Files location: Локација датотека: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Сигурност - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers Додај прилагођена HTTP заглавља - + Header: value pairs, one per line Заглавље: парови вредности, један по реду - + Enable reverse proxy support - + Trusted proxies list: Списак поузданих проксија: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Сервис: - + Register Регистар - + Domain name: Име домена: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Омогућавањем ових опција можете да <strong>бесповратно изгубите</strong> ваше .torrent фајлове! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file Одабери фајл qBittorrent UI теме - + Choose Alternative UI files location Изаберите локацију фајлова алтернативног КИ - + Supported parameters (case sensitive): Подржани параметри (case sensitive) - + Minimized Умањено - + Hidden Скривено - + Disabled due to failed to detect system tray presence Онемогућено јер присуство у системској палети није могло бити детектовано - + No stop condition is set. Услови престанка нису подешени. - + Torrent will stop after metadata is received. Торент ће престати након што метаподаци буду били примљени. - - Torrents that have metadata initially aren't affected. - Торенти који већ имају метаподатке нису обухваћени. - - - + Torrent will stop after files are initially checked. Торент ће престати након почетне провере фајлова. - + This will also download metadata if it wasn't there initially. Метаподаци ће такође бити преузети ако већ нису били ту. - + %N: Torrent name %N: Име Торента - + %L: Category %L: Категорија - + %F: Content path (same as root path for multifile torrent) %F: Путања ка садржају (иста као коренска путања за торенте од више фајлова) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files %C: Количина фајлова - + %Z: Torrent size (bytes) %Z: Величина торента (у бајтовима) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Савет: окружите параметар знацима навода, да се текст не би одсецао због размака (нпр. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Нема) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Торент ће се сматрати за "спор" ако његове брзине слања и преузимања остану испод ових вредности током периода наведеног опцијом "Тајмер неактивности торената" - + Certificate Сертификат - + Select certificate Одабери сертификат - + Private key Приватни кључ - + Select private key Одабери приватни кључ - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Изаберите фасциклу за присмотру - + Adding entry failed Додавање уноса није успело - - Location Error - Грешка локације + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - Локација фајлова алтернативног веб интерфејса не може бити празна. + + Location Error + Грешка локације - - + + Choose export directory Изаберите директоријум за извоз - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) Фајл теме КИ qBittorrent-а (*qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory Изаберите директоријум за чување - + + Torrents that have metadata initially will be added as stopped. + Торенти који иницијално имају метаподатке биће додати као стопирани. + + + Choose an IP filter file Изаберите фајл са IP филтерима - + All supported filters Сви подржани филтери - + + The alternative WebUI files location cannot be blank. + + + + Parsing error Анализа грешака - + Failed to parse the provided IP filter Неспешна анализа датог IP филтера - + Successfully refreshed Успешно обновљен - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number - + Preferences Опције - + Time Error Временска грешка - + The start time and the end time can't be the same. Време почетка и краја не може бити исто. - - + + Length Error Грешка у дужини - - - The Web UI username must be at least 3 characters long. - Веб UI име корисника мора имати најмање 3 карактера. - - - - The Web UI password must be at least 6 characters long. - Веб UI шифра корисника мора имати најмање 6 карактера. - PeerInfo - + Unknown Непознат-а - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed - + Incoming connection Долазећа веза - + Peer from DHT Учесник преко DHT - + Peer from PEX Учесник преко PEX - + Peer from LSD Учесник преко LSD - + Encrypted traffic Шифровани саобраћај - + Encrypted handshake Криптовано руковање + + + Peer is using NAT hole punching + + PeerListWidget @@ -7604,7 +8018,7 @@ readme[0-9].txt: филтрирај "readme1.txt", "readme2.txt&q Учесник "%1" је ручно банован - + N/A Недоступно @@ -7627,7 +8041,7 @@ readme[0-9].txt: филтрирај "readme1.txt", "readme2.txt&q Листа за додавање пратилаца (један по линији): - + Format: IPv4:port / [IPv6]:port Формат: IPv4:порт / [IPv6]:порт @@ -7668,27 +8082,27 @@ readme[0-9].txt: филтрирај "readme1.txt", "readme2.txt&q PiecesBar - + Files in this piece: Фајлови у овом комадићу: - + File in this piece: Фајл у овом комадићу: - + File in these pieces: Фајл у овим комадићима: - + Wait until metadata become available to see detailed information Сачекајте док метаподаци не буду доступни да бисте видели детаљније информације: - + Hold Shift key for detailed information Држите тастер Shift за детаљне информације @@ -7701,58 +8115,58 @@ readme[0-9].txt: филтрирај "readme1.txt", "readme2.txt&q Претраживачки додаци - + Installed search plugins: Инсталирани претраживачки додаци: - + Name Име - + Version Верзија - + Url Url (адреса) - - + + Enabled Омогућен - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Пажња: уверите се да поштујете закон о заштити интелектуалне својине своје државе када преузимате торенте преко било ког од ових претраживача. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Нове додатке за претраживач можете наћи овде: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Инсталирајте нови - + Check for updates Потражи ажурирања - + Close Затвори - + Uninstall Деинсталирај @@ -7872,17 +8286,17 @@ Those plugins were disabled. Додатак сорс - + Search plugin source: Претраживачки додатак сорс: - + Local file Локални фајл - + Web link Веб линк @@ -7923,47 +8337,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Следећи фајлови из торента "%1" подржавају прегледање, молимо изаберите неки од њих: - + Preview Прикажи - + Name Име - + Size Величина - + Progress Напредак - + Preview impossible Приказ немогућ - + Sorry, we can't preview this file: "%1". Жао нам је, не можемо да прегледамо овај фајл: "%1". - + Resize columns Промени величину колона - + Resize all non-hidden columns to the size of their contents Промени ширину свих видљивих колона на ширину њиховог садржаја @@ -7976,27 +8390,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Путања не постоји - + Path does not point to a directory Путања не указује на фасциклу - + Path does not point to a file Путања не указује на фајл - + Don't have read permission to path Није доступна дозвола за читање путање - + Don't have write permission to path Није доступна дозвола за упис на путању @@ -8037,12 +8451,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Преузето: - + Availability: Доступност: @@ -8057,53 +8471,53 @@ Those plugins were disabled. Трансфер - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Протекло време: - + ETA: Време до краја: - + Uploaded: Послато: - + Seeds: Донори (seeds) - + Download Speed: Брзина преузимања: - + Upload Speed: Брзина слања: - + Peers: Учесници (peers) - + Download Limit: Ограничење брзине преузимања: - + Upload Limit: Ограничење брзине слања: - + Wasted: Потрошено: @@ -8113,193 +8527,228 @@ Those plugins were disabled. Конекције: - + Information Информације - + Info Hash v1: Инфо хеш v1: - + Info Hash v2: Инфо хеш v2: - + Comment: Коментар: - + Select All Селектуј све - + Select None Деселектуј - + Share Ratio: Однос дељења: - + Reannounce In: Поново објави за: - + Last Seen Complete: Последњи пут виђен у комплетном стању: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Укупна величина: - + Pieces: Делова: - + Created By: Створио: - + Added On: Додато: - + Completed On: Завршено: - + Created On: Креирано: - + + Private: + + + + Save Path: Путања за чување: - + Never Никад - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (имате %3) - - + + %1 (%2 this session) %1 (%2 ове сесије) - - + + + N/A Недоступно - + + Yes + Да + + + + No + Не + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (донирано за %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 макс) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 укупно) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 прос.) - - New Web seed - Нови Web донор + + Add web seed + Add HTTP source + - - Remove Web seed - Уклони Web донора + + Add web seed: + - - Copy Web seed URL + + + This web seed is already in the list. - - Edit Web seed URL - + New Web seed + Нови Web донор + + + Remove Web seed + Уклони Web донора - + Filter files... Филтрирај датотеке... - - Speed graphs are disabled - Графикони брзине су онемогућени + + Add web seed... + - - You can enable it in Advanced Options + + Remove web seed - - New URL seed - New HTTP source + + Copy web seed URL - - New URL seed: + + Edit web seed URL... - - - This URL seed is already in the list. + + Speed graphs are disabled + Графикони брзине су онемогућени + + + + You can enable it in Advanced Options - + Web seed editing - + Web seed URL: @@ -8318,22 +8767,22 @@ Those plugins were disabled. - + Invalid data format Неважећи формат података - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8341,22 +8790,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8392,12 +8841,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Неважећи RSS фид. - + %1 (line: %2, column: %3, offset: %4). @@ -8405,99 +8854,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Чување конфигурације RSS сесије није успело. Фајл: "%1". Грешка: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Чување података о RSS сесији није успело. Фајл: "%1". Грешка: "%2" - - + + RSS feed with given URL already exists: %1. RSS ставка са датим URL-ом већ постоји: %1 - + Feed doesn't exist: %1. Фид не постоји: %1. - + Cannot move root folder. Није могуће преместити коренску фасциклу. - - + + Item doesn't exist: %1. Ставка не постоји: %1. - + Couldn't move folder into itself. Није могуће преместити фасциклу саму у себе. - + Cannot delete root folder. Није могуће обрисати коренску фасциклу. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Учитавање RSS фида није успело. Фид: "%1". Разлог: неопходан је URL. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Учитавање RSS фида није успело. Фид: "%1". Разлог: UID није важећи. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Нађен је дуплирани RSS фид. UID: "%1". Грешка: конфигурација је изгледа повређена. - + Couldn't load RSS item. Item: "%1". Invalid data format. Учитавање RSS предмета није успело. Предмет: "%1". Неважећи формат фајла. - + Corrupted RSS list, not loading it. Повређена RSS листа, неће бити учитана. - + Incorrect RSS Item path: %1. Нетачна путања RSS предмета: %1. - + RSS item with given path already exists: %1. RSS предмет са датом путањом већ постоји: %1 - + Parent folder doesn't exist: %1. Родитељска фасцикла не постоји: %1. @@ -8521,8 +8970,8 @@ Those plugins were disabled. - - + + Mark items read Означи прочитане ставке @@ -8547,132 +8996,132 @@ Those plugins were disabled. Торенти: (двоклик да преузмете) - - + + Delete Обриши - + Rename... Преименуј... - + Rename Преименуј - - + + Update Ажурирај - + New subscription... Нови допис... - - + + Update all feeds Ажурирај све поруке - + Download torrent Преузми Торент - + Open news URL Отвори новости URL - + Copy feed URL Копирај feed URL - + New folder... Нова фасцикла... - + Edit feed URL... Уреди URL фида... - + Edit feed URL Уреди URL фида - + Please choose a folder name Молим изаберите име фасцикле - + Folder name: Име фасцикле: - + New folder Нова фасцикла - - + + Please type a RSS feed URL Молимо унесите URL RSS фида - - + + Feed URL: URL фида: - + Deletion confirmation Потврда брисања - + Are you sure you want to delete the selected RSS feeds? Да ли сигурно желите да избришете изабране RSS фидове? - + Please choose a new name for this RSS feed Молим изаберит ново име за овај RSS допис - + New feed name: Ново feed име: - + Rename failed Преименовање није успело - + Date: Датум: - + Feed: - + Author: Аутор: @@ -8680,38 +9129,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Python мора бити инсталиран за коришћење Претраживача. - + Unable to create more than %1 concurrent searches. Није могуће имати више од %1 истовремених претрага. - - + + Offset is out of range - + All plugins are already up to date. Сви додаци су већ ажурирани. - + Updating %1 plugins Ажурирање %1 додатака - + Updating plugin %1 Ажурирање додатка %1 - + Failed to check for plugin updates: %1 Провера ажурирања додатака није успела: %1 @@ -8786,132 +9235,146 @@ Those plugins were disabled. Величина: - + Name i.e: file name Име - + Size i.e: file size Величина: - + Seeders i.e: Number of full sources Донори - + Leechers i.e: Number of partial sources Трагачи - Search engine - Претраживачки модул + Претраживачки модул - + Filter search results... Филтрирај резултате претраге... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Резултати (приказ <i>%1</i> од <i>%2</i>): - + Torrent names only Само имена торената - + Everywhere Свугде - + Use regular expressions Користи регуларне изразе - + Open download window Отвори прозор за преузимање - + Download Преузми - + Open description page Отвори страну са описом - + Copy Копирај - + Name Име - + Download link Веза за преузимање - + Description page URL URL стране са описом - + Searching... Претраживање... - + Search has finished Претраживање је завршено - + Search aborted Претраживање прекинуто - + An error occurred during search... Нека грешка се догодила током претраге... - + Search returned no results Претрага није дала резултате - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Прегледност колона - + Resize columns Промени величину колона - + Resize all non-hidden columns to the size of their contents Промени ширину свих видљивих колона на ширину њиховог садржаја @@ -8919,104 +9382,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Непознат формат фајла додатка за претрагу. - + Plugin already at version %1, which is greater than %2 Додатак је већ верзије %1, што је веће од %2 - + A more recent version of this plugin is already installed. Новија верзија додатка је већ инсталирана. - + Plugin %1 is not supported. Додатак %1 није подржан. - - + + Plugin is not supported. Додатак није подржан. - + Plugin %1 has been successfully updated. Додатак %1 успешно ажуриран. - + All categories Све категорије - + Movies Филмови - + TV shows ТВ емисије - + Music Музика - + Games Игрице - + Anime Аниме - + Software Софтвер - + Pictures Слике - + Books Књиге - + Update server is temporarily unavailable. %1 Сервер за ажурирања привремено није доступан. %1 - - + + Failed to download the plugin file. %1 Преузимање фајла додатка није успело. %1 - + Plugin "%1" is outdated, updating to version %2 Додатак "%1" је застарео, ажурирам на верзију %2 - + Incorrect update info received for %1 out of %2 plugins. Нетачне информације за ажурирање добијене за %1 од %2 додатака. - + Search plugin '%1' contains invalid version string ('%2') Додатак за претрагу "%1" садржи неважећу ниску верзије ("%2") @@ -9026,114 +9489,153 @@ Those plugins were disabled. - - - - Search Претрага - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Нема инсталираних додатака за претрагу. Кликните дугме "Додаци за претрагу..." у доњем десном углу прозора да бисте неке инсталирали. - + Search plugins... Додаци за претрагу... - + A phrase to search for. Фраза која ће се тражити. - + Spaces in a search term may be protected by double quotes. Размаци у термину за претрагу се могу заштитити помоћу наводника. - + Example: Search phrase example Пример: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: тражи <b>foo bar</b> - + All plugins Сви плагинови... - + Only enabled Само омогућено - + + + Invalid data format. + Неважећи формат података. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: тражи <b>foo</b> и <b>bar</b> - + + Refresh + + + + Close tab Затвори картицу - + Close all tabs Затвори све картице - + Select... Изабери... - - - + + Search Engine Претраживач - + + Please install Python to use the Search Engine. Молимо инсталирајте Python да бисте могли да користите претраживач - + Empty search pattern Празано поље претраживања - + Please type a search pattern first Унесите прво назив за претраживање - - Stop - Заустави + + + Stop + Заустави + + + Search has finished + Претраживање је завршено + + + Search has failed + Претрага није успела + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + - - Search has finished - Претраживање је завршено + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - Претрага није успела + + Failed to save search history. File: "%1". Error: "%2" + @@ -9246,34 +9748,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Слање: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Преузимање: - + Alternative speed limits Алтернативна ограничења брзине @@ -9465,32 +9967,32 @@ Click the "Search plugins..." button at the bottom right of the window Просечно времена у редоследу: - + Connected peers: Повезано учесника: - + All-time share ratio: Однос дељења за све време: - + All-time download: Преузето за све време: - + Session waste: - + All-time upload: Послато за све време: - + Total buffer size: Укупна величина бафера: @@ -9505,12 +10007,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -9529,51 +10031,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Статус конекције: - - + + No direct connections. This may indicate network configuration problems. Нема директних конекција. То може указивати на проблем мрежне конфигурације. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 чворова - + qBittorrent needs to be restarted! qBittorrent мора бити рестартован! - - - + + + Connection Status: Статус конекције: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Није на вези. То обично значи да qBittorrent не надгледа изабрани порт за долазне конекције. - + Online На вези - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Кликните да укључите алтернативно ограничење брзине - + Click to switch to regular speed limits Кликните да укључите уобичајено ограничење брзине @@ -9602,14 +10120,22 @@ Click the "Search plugins..." button at the bottom right of the window Завршено (0) - Resumed (0) - Настављено (0) + Настављено (0) - Paused (0) - Паузирано (0) + Паузирано (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9671,10 +10197,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Завршено (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Паузирано (%1) + Паузирано (%1) @@ -9682,14 +10227,12 @@ Click the "Search plugins..." button at the bottom right of the window Премештање (%1) - Resume torrents - Пусти торенте + Пусти торенте - Pause torrents - Паузирај торенте + Паузирај торенте @@ -9697,9 +10240,8 @@ Click the "Search plugins..." button at the bottom right of the window Уклони торенте - Resumed (%1) - Настављено (%1) + Настављено (%1) @@ -9740,17 +10282,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Тагови - + All Све - + Untagged Без ознаке @@ -9758,52 +10300,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Додај таг... - + Remove tag Уклони так... - + Remove unused tags Уклони некоришћене тагове - Resume torrents - Настави торенте + Настави торенте - Pause torrents - Паузирај торенте + Паузирај торенте - + Remove torrents Уклони торенте - New Tag - Нова ознака + Нова ознака + + + + Start torrents + - + + Stop torrents + + + + Tag: Ознака: - + + Add tag + + + + Invalid tag name Неважеће име ознаке - + Tag name '%1' is invalid Име ознаке "%1" је неважеће @@ -9941,32 +10495,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Име - + Progress Напредак - + Download Priority Приоритет преузимања - + Remaining Преостало - + Availability Доступност - + Total Size Укупна величина @@ -10011,102 +10565,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Грешка у преименовању - + Renaming Преименовање - + New name: Ново име: - + Column visibility Прегледност колона - + Resize columns Промени величину колона - + Resize all non-hidden columns to the size of their contents Промени ширину свих видљивих колона на ширину њиховог садржаја - + Open Отвори - + Open containing folder - + Rename... Преименуј... - + Priority Приоритет - - + + Do not download Не преузимај - + Normal Нормално - + High Високо - + Maximum Максимално - + By shown file order По приказаном редоследу датотека - + Normal priority Нормалан приоритет - + High priority Висок приоритет - + Maximum priority Максимални приоритет - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10131,13 +10703,13 @@ Please choose a different name and try again. - + Select file Изаберите фајл - + Select folder Изаверите фасциклу @@ -10162,58 +10734,10 @@ Please choose a different name and try again. Величина дела: - + Auto Аутоматски - - 16 KiB - 16 КБ - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 МБ - - - 16 MiB - 16 МБ - - - 32 MiB - 32 МБ - Calculate number of pieces: @@ -10260,92 +10784,83 @@ Please choose a different name and try again. Поља - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: Пратилац URLs: - + Comments: Коментари: - + Source: Извор: - + Progress: Напредак: - + Create Torrent Створи торент - - + + Torrent creation failed Креирање торента није успело - + Reason: Path to file/folder is not readable. Разлог: путања ка датотеци/фасцикли није читљива. - + Select where to save the new torrent Изаберите где да се сачува нови торент - + Torrent Files (*.torrent) Торент фајлови (*.torrent) - - Reason: %1 - Разлог: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - Креирана Торент датотека је неважећа. Неће бити додата у листу за преузимање. - - - + Torrent creator Креатор торента - + Torrent created: Торент је направљен: @@ -10353,32 +10868,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 Није успело чување конфигурације надгледаних фасцикли у %1. Грешка: %2 - + Watched folder Path cannot be empty. Путања надгледане фасцикле не може бити празна. - + Watched folder Path cannot be relative. Путања надгледане фасцикле не може бити релативна. @@ -10386,27 +10901,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 Отварање magnet фајла није успело: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" Надгледа се фасцикла: "%1" @@ -10414,14 +10929,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - Неважећи метаподаци + Неважећи метаподаци @@ -10452,127 +10961,195 @@ Please choose a different name and try again. Користи другу путању за незавршене торенте - + Category: Категорија: - + + Torrent Share Limits + + + Torrent speed limits - Ограничења брзине торената + Ограничења брзине торената - + Download: Преузимање: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Ови неће прекорачивати глобална ограничења - + Upload: Слање: - Torrent share limits - Ограничења дељења торената + Ограничења дељења торената - Use global share limit - Користи глобално ограничење дељења + Користи глобално ограничење дељења - Set no share limit - Не користи ограничење дељења + Не користи ограничење дељења - Set share limit to - Подеси ограничење дељења на + Подеси ограничење дељења на - ratio - однос - - - - total minutes - + однос - - inactive minutes - - - - + Disable DHT for this torrent Онемогући DHT за овај торент - + Download in sequential order Преузимање у серијском редоследу - + Disable PeX for this torrent Онемогући PeX за овај торент - + Download first and last pieces first Прво преузми почетне и крајње делове - + Disable LSD for this torrent Онемогући LSD за овај торент - + Currently used categories Категорије тренутно у употреби - - + + Choose save path Изаберите путању чувања - + Not applicable to private torrents Није примењиво за приватне торенте - No share limit method selected - Ниједна метода ограничења дељења није изабрана + Ниједна метода ограничења дељења није изабрана - Please select a limit method first - Молимо прво изаберите методу ограничења + Молимо прво изаберите методу ограничења + + + + TorrentShareLimitsWidget + + + + + + Default + Подразумевано + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + мин + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Уклони торент + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + + + + + Ratio: + @@ -10583,32 +11160,36 @@ Please choose a different name and try again. Ознаке торената - New Tag - Нова ознака + Нова ознака + Add tag + + + + Tag: Ознака: - + Invalid tag name Неважеће име ознаке - + Tag name '%1' is invalid. Име ознаке "%1" је неважеће. - + Tag exists Ознака постоји - + Tag name already exists. Име ознаке већ постоји @@ -10616,115 +11197,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. Грешка: "%1" није валидан торент фајл. - + Priority must be an integer Приоритет мора бити цео број - + Priority is not valid Неважећи приоритет - + Torrent's metadata has not yet downloaded Метаподаци торента још нису преузети - + File IDs must be integers ID-ови фајла морају бити цели бројеви - + File ID is not valid ID фајла је неважећи - - - - + + + + Torrent queueing must be enabled Ређање торената мора бити омогућено - - + + Save path cannot be empty Путања чувања не сме бити празна - - + + Cannot create target directory Креирање циљне фасцикле није успело - - + + Category cannot be empty Категорија не може бити празна - + Unable to create category Креирање категорије није успело - + Unable to edit category Уређивање категорије није успело - + Unable to export torrent file. Error: %1 Извоз фајла торента није успео. Грешка: %1 - + Cannot make save path Креирање путање чувања није успело - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid Параметар "sort" није важећи - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" није важећи индекс фајла - + Index %1 is out of bounds. Индекс %1 је изван граница. - - + + Cannot write to directory Упис у фасциклу није могућ - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name Нетачно име торента - - + + Incorrect category name Нетачно име категорије @@ -10755,253 +11351,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - Ради + Ради - + Disabled - Онемогућено + Онемогућено - + Disabled for this torrent - Онемогућено за овај торент + Онемогућено за овај торент - + This torrent is private - Овај торент је приватан + Овај торент је приватан - + N/A - Недоступно + Недоступно - + Updating... - Ажурирање... + Ажурирање... - + Not working - Не ради + Не ради - + Tracker error - + Unreachable - + Not contacted yet - Није још контактиран - - - - Invalid status! - + Није још контактиран - - URL/Announce endpoint + + Invalid state! - Tier - Ранг - - - - Protocol + URL/Announce Endpoint - Status - Статус - - - - Peers - Peers (учесници) - - - - Seeds - Донори - - - - Leeches - - - - - Times Downloaded - Пута преузето - - - - Message - Порука - - - - Next announce + BT Protocol - Min announce + Next Announce - - v%1 + + Min Announce - - - TrackerListWidget - Working - Ради + + Tier + Ранг - Disabled - Онемогућено + + Status + Статус - Disabled for this torrent - Онемогућено за овај торент + + Peers + Peers (учесници) - - This torrent is private - Овај торент је приватан + + Seeds + Донори - Updating... - Ажурирање... + + Leeches + - Not working - Не ради + + Times Downloaded + Пута преузето - Not contacted yet - Није још контактиран + + Message + Порука + + + TrackerListWidget - N/A - Недоступно + + This torrent is private + Овај торент је приватан - + Tracker editing Уређивање трекера - + Tracker URL: URL трекера: - - + + Tracker editing failed Уређивање трекера није успело - + The tracker URL entered is invalid. Задати URL трекера није важећи. - + The tracker URL already exists. URL трекера већ постоји - + Edit tracker URL... Уреди URL трекера... - + Remove tracker Уклони пратилац - + Copy tracker URL Копирај URL трекера - + Force reannounce to selected trackers Присилно поново објави следећим трекерима - + Force reannounce to all trackers Присилно поново објави свим трекерима - Tier - Ранг - - - URL - URL - - - Status - Статус - - - Seeds - Донори - - - Times Downloaded - Пута преузето - - - + Resize columns Промени величину колона - + Resize all non-hidden columns to the size of their contents Промени ширину свих видљивих колона на ширину њиховог садржаја - Peers - Peers (учесници) - - - + Add trackers... Додај трекере... - Message - Порука - - - + Column visibility Прегледност колона @@ -11019,37 +11553,37 @@ Please choose a different name and try again. Листа за додавање пратилаца (један по линији): - + µTorrent compatible list URL: µTorrent компатибилна листа URL адреса: - + Download trackers list Преузми списак трекера - + Add Додај - + Trackers list URL error Грешка URL-a списка трекера - + The trackers list URL cannot be empty URL списка трекера не сме бити празан - + Download trackers list error Грешка у преузимању списка трекера - + Error occurred when downloading the trackers list. Reason: "%1" Грешка током преузимања списка трекера. Разлог: "%1" @@ -11057,87 +11591,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Sve (0) - - - Trackerless (0) - Bez servera (0) - - - Error (0) - Greška (0) - - - Warning (0) - Upozorenja (0) - - - Trackerless - Без трекера - - - Error (%1) - Greška (%1) - - - + Warning (%1) Upozorenje (%1) - + Trackerless (%1) Bez servera (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - Уклони пратилац + Уклони пратилац + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Пусти торенте + Пусти торенте - Pause torrents - Паузирај торенте + Паузирај торенте - + Remove torrents Уклони торенте - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter Укупно (%1) @@ -11146,7 +11663,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument "mode": неважећи аргумент @@ -11239,9 +11756,8 @@ Please choose a different name and try again. Провера података за настављање - Paused - Паузиран + Паузиран @@ -11266,220 +11782,262 @@ Please choose a different name and try again. Грешка - + Name i.e: torrent name Име - + Size i.e: torrent size Величина - + Progress % Done Напредак - Status Torrent status (e.g. downloading, seeding, paused) - Статус + Статус - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Статус + + + Seeds i.e. full sources (often untranslated) Донори - + Peers i.e. partial sources (often untranslated) Peers (учесници) - + Down Speed i.e: Download speed Брзина Преуз - + Up Speed i.e: Upload speed Брзина Слања - + Ratio Share ratio Однос - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left ETA - + Category Категорија - + Tags Тагови - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Додато на - + Completed On Torrent was completed on 01/01/2010 08:00 Завршено дана - + Tracker Пратилац - + Down Limit i.e: Download limit Ограничење брзине преузимања - + Up Limit i.e: Upload limit Ограничење брзине слања - + Downloaded Amount of data downloaded (e.g. in MB) Преузето - + Uploaded Amount of data uploaded (e.g. in MB) Послато - + Session Download Amount of data downloaded since program open (e.g. in MB) Преузето за сесију - + Session Upload Amount of data uploaded since program open (e.g. in MB) Послато за сесију - + Remaining Amount of data left to download (e.g. in MB) Преостало - + + Time Active + Time (duration) the torrent is active (not stopped) + Протекло време + + + + Yes + Да + + + + No + Не + + Time Active Time (duration) the torrent is active (not paused) - Протекло време + Протекло време - + Save Path Torrent save path Путања чувања - + Incomplete Save Path Torrent incomplete save path Непотпуна путања чувања - + Completed Amount of data completed (e.g. in MB) Комплетирани - + Ratio Limit Upload share ratio limit Лимит односа - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Последњи пут виђен потпун - + Last Activity Time passed since a chunk was downloaded/uploaded Последња активност - + Total Size i.e. Size including unwanted data Укупна величина - + Availability The number of distributed copies of the torrent Доступност - + Info Hash v1 i.e: torrent info hash v1 Инфо хеш v1 - + Info Hash v2 i.e: torrent info hash v2 Инфо хеш v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A Недоступно - + %1 ago e.g.: 1h 20m ago Пре %1 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (донирано за %2) @@ -11488,334 +12046,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Прегледност колона - + Recheck confirmation Потврда поновне провере - + Are you sure you want to recheck the selected torrent(s)? Да ли сигурно желите да поново проверите изабране торенте? - + Rename Преименуј - + New name: Ново име: - + Choose save path Изаберите путању чувања - Confirm pause - Потврда паузирања + Потврда паузирања - Would you like to pause all torrents? - Желите ли да паузирате све торенте? + Желите ли да паузирате све торенте? - Confirm resume - Потврда настављања + Потврда настављања - Would you like to resume all torrents? - Желите ли да наставите све торенте? + Желите ли да наставите све торенте? - + Unable to preview Преглед није успео - + The selected torrent "%1" does not contain previewable files Изабрани торент "%1" не садржи фајлове које је могуће прегледати - + Resize columns Промени величину колона - + Resize all non-hidden columns to the size of their contents Промени ширину свих видљивих колона на ширину њиховог садржаја - + Enable automatic torrent management Омогући аутоматски менаџмент торената - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Да ли сигурно желите да омогућите аутоматски менаџмент торената за изабране торенте? Могуће је да буду премештени. - Add Tags - Додај ознаке + Додај ознаке - + Choose folder to save exported .torrent files Изаберите фасциклу у којој ће се чувати извезени .torrent фајлови - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Извоз .torrent фајла није успео. Торент: "%1". Путања: "%2". Разлог: "%3" - + A file with the same name already exists Фајл са таквим именом већ постоји - + Export .torrent file error Грешка током извоза .torrent датотеке - + Remove All Tags Уклони све ознаке - + Remove all tags from selected torrents? Уклонити све ознаке са изабраних торената? - + Comma-separated tags: Ознаке одвојене зарезима: - + Invalid tag Неважећа ознака - + Tag name: '%1' is invalid Име ознаке: "%1" није важеће - &Resume Resume/start the torrent - &Настави + &Настави - &Pause Pause the torrent - &Пауза + &Пауза - Force Resu&me Force Resume/start the torrent - Присилно на&стави + Присилно на&стави - + Pre&view file... Пре&глед фајла... - + Torrent &options... &Опције торента... - + Open destination &folder Отвори одредишну &фасциклу - + Move &up i.e. move up in the queue Помери на&горе - + Move &down i.e. Move down in the queue Помери на&доле - + Move to &top i.e. Move to top of the queue Помери на &врх - + Move to &bottom i.e. Move to bottom of the queue Помери на д&но - + Set loc&ation... Подеси лока&цију... - + Force rec&heck Присилна поновна провера - + Force r&eannounce Присилно поновно објављивање - + &Magnet link &Магнет веза - + Torrent &ID ID торента (&И) - + + &Comment + + + + &Name &Име - + Info &hash v1 Инфо хеш v&1 - + Info h&ash v2 Инфо хеш v&2 - + Re&name... Пре&именуј... - + Edit trac&kers... Уреди тре&кере... - + E&xport .torrent... Из&вези .torrent фајл... - + Categor&y Категори&ја - + &New... New category... &Ново... - + &Reset Reset category &Ресет - + Ta&gs О&знаке - + &Add... Add / assign multiple tags... Д&одај... - + &Remove All Remove all tags &Уклони све - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue У &редослед - + &Copy &Копирај - + Exported torrent is not necessarily the same as the imported Извезени торент не мора нужно бити идентичан увезеном - + Download in sequential order Преузимање у серијском редоследу - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Грешка током извоза .torrent фајлова. Погледајте дневник за детаље. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Уклони - + Download first and last pieces first Прво преузми почетне и крајње делове - + Automatic Torrent Management Аутоматски менеџмент торената - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Аутоматски мод значи да ће се разна својства торента (нпр. путања чувања) одлучивати аутоматски на основу асоциране категорије - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Није могуће присилити поновно објављивање ако је торент паузиран/у редоследу/са грешком/проверава се + Није могуће присилити поновно објављивање ако је торент паузиран/у редоследу/са грешком/проверава се - + Super seeding mode Супер seeding (донирајући) режим @@ -11860,28 +12442,28 @@ Please choose a different name and try again. ID иконице - + UI Theme Configuration. Конфигурација теме КИ. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Промене у теми КИ нису у потпуности примењене. Детаљи су доступни у запису. - + Couldn't save UI Theme configuration. Reason: %1 Чување конфигурације теме КИ није успело. Разлог: %1 - - + + Couldn't remove icon file. File: %1. Уклањање фајла иконице није успело. Фајл: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Копирање фајла иконице није успело. Извор: %1. Циљ: %2. @@ -11889,7 +12471,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Учитавање теме КИ из датотеке није успело: "%1" @@ -11920,34 +12507,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python детектован, име извршног фајла: "%1", верзија: %2 - - - Python not detected - Python није детектован - Found Python executable. Name: "%1". Version: "%2" @@ -11982,27 +12562,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12066,72 +12646,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. Недозвољени тип фајла, само обични фајлови су дозвољени. - + Symlinks inside alternative UI folder are forbidden. Симболичке везе унутар фасцикле алтернативног КИ нису дозвољене. - - Using built-in Web UI. - Користи се уграђени Веб UI. + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - Користи се сопствени Web UI. Локација: "%1" + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - Превод Web UI за изабрани језик (%1) успешно учитан. + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - Превод Web UI за изабрани језик (%1) није успешно учитан. + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -12139,143 +12719,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set + + + + + WebUI: HTTPS setup successful - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + fs + + + Unknown error + Непозната грешка + + misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1m {1s?} + - + %1m e.g: 10 minutes - %1m + %1m - + %1h %2m e.g: 3 hours 5 minutes - %1h%2m + %1h%2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1г %2д - - - %1h %2m - e.g: 3hours 5minutes - %1h%2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1г %2д + %1г %2д - - + + Unknown Unknown (size) Непознат-а - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent ће искључити рачунар сада, јер су сва преузимања завршена. - + < 1m < 1 minute < 1m - - %1m - e.g: 10minutes - %1m - diff --git a/src/lang/qbittorrent_sv.ts b/src/lang/qbittorrent_sv.ts index 72d40fc29cc0..f98666ee36a3 100644 --- a/src/lang/qbittorrent_sv.ts +++ b/src/lang/qbittorrent_sv.ts @@ -14,77 +14,77 @@ Om - + Authors Upphovsmän - + Current maintainer - Nuvarande utvecklare + Aktuell utvecklare - + Greece Grekland - - + + Nationality: Nationalitet: - - + + E-mail: E-post: - - + + Name: Namn: - + Original author Ursprunglig upphovsman - + France Frankrike - + Special Thanks Särskilda tack - + Translators Översättare - + License Licens - + Software Used Använd mjukvara - + qBittorrent was built with the following libraries: qBittorrent byggdes med följande bibliotek: - + Copy to clipboard - + Kopiera till urklipp @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Spara i - + Never show again Visa aldrig igen - Torrent settings - Torrentinställningar + Torrentinställningar @@ -191,12 +190,12 @@ Starta torrent - + Torrent information Torrentinformation - + Skip hash check Hoppa över hashkontroll @@ -205,6 +204,11 @@ Use another path for incomplete torrent Använd en annan sökväg för ofullständig torrent + + + Torrent options + + Tags: @@ -213,7 +217,7 @@ Click [...] button to add/remove tags. - Klicka på [...] för att lägga till/ta bort taggar. + Klicka på knappen [...] för att lägga till/ta bort taggar. @@ -231,70 +235,75 @@ Stoppvillkor: - - + + None Inget - - + + Metadata received Metadata mottagna - - + + Torrents that have metadata initially will be added as stopped. + Torrenter som har metadata initialt kommer att läggas till som stoppade. + + + + Files checked Filer kontrollerade - + Add to top of queue Lägg till överst i kön - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog När den är markerad kommer .torrent-filen inte att tas bort oavsett inställningarna på sidan "Hämta" i dialogrutan Alternativ - + Content layout: Layout för innehåll: - + Original Original - + Create subfolder Skapa undermapp - + Don't create subfolder Skapa inte undermapp - + Info hash v1: - Infohash v1: + Info-hash v1: - + Size: Storlek: - + Comment: Kommentar: - + Date: Datum: @@ -324,245 +333,182 @@ Kom ihåg senast använda sparsökväg - + Do not delete .torrent file Ta inte bort .torrent-fil - + Download in sequential order Hämta i sekventiell ordning - + Download first and last pieces first Hämta första och sista delarna först - + Info hash v2: - Infohash v2: + Info-hash v2: - + Select All Markera alla - + Select None Markera ingen - + Save as .torrent file... Spara som .torrent-fil... - + I/O Error In/ut-fel - Invalid torrent - Ogiltig torrent - - - + Not Available This comment is unavailable Inte tillgänglig - + Not Available This date is unavailable Inte tillgängligt - + Not available Inte tillgänglig - Invalid magnet link - Ogiltig magnetlänk - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Det gick inte att läsa in torrenten: %1. -Fel: %2 - - - This magnet link was not recognized - Denna magnetlänk känns ej igen - - - + Magnet link Magnetlänk - + Retrieving metadata... Hämtar metadata... - - + + Choose save path Välj sparsökväg - Torrent is already present - Torrent är redan närvarande - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrenten "%1" finns redan i överföringslistan. Spårare slogs inte samman eftersom det är en privat torrent. - - - Torrent is already queued for processing. - Torrenten är redan i kö för bearbetning. - - - + No stop condition is set. Inga stoppvillkor angivna. - + Torrent will stop after metadata is received. Torrent stoppas efter att metadata har tagits emot. - - Torrents that have metadata initially aren't affected. - Torrent som har metadata initialt påverkas inte. - - - + Torrent will stop after files are initially checked. Torrent stoppas efter att filer har kontrollerats initialt. - + This will also download metadata if it wasn't there initially. Detta laddar också ner metadata om inte där initialt. - - + + N/A Ingen - Magnet link is already queued for processing. - Magnetlänken är redan i kö för bearbetning. - - - + %1 (Free space on disk: %2) %1 (Ledigt utrymme på disken: %2) - + Not available This size is unavailable. Inte tillgängligt - + Torrent file (*%1) Torrentfil (*%1) - + Save as torrent file Spara som torrentfil - + Couldn't export torrent metadata file '%1'. Reason: %2. Det gick inte att exportera torrentmetadatafilen "%1". Orsak: %2 - + Cannot create v2 torrent until its data is fully downloaded. Det går inte att skapa v2-torrent förrän dess data har hämtats helt. - Cannot download '%1': %2 - Det går inte att hämta "%1": %2 - - - + Filter files... Filtrera filer... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrenten "%1" finns redan i överföringslistan. Spårare kan inte slås samman eftersom det är en privat torrent. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrenten "%1" finns redan i överföringslistan. Vill du slå samman spårare från den nya källan? - - - + Parsing metadata... Tolkar metadata... - + Metadata retrieval complete Hämtningen av metadata klar - - Failed to load from URL: %1. -Error: %2 - Det gick inte att läsa in från URL: %1. -Fel: %2 - - - Download Error - Hämtningsfel - AddTorrentManager Downloading torrent... Source: "%1" - + Hämtar torrent... Källa: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Det gick inte att lägga till torrent. Källa: "%1". Orsak: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Upptäckte ett försök att lägga till en dubblettorrent. Källa %1. Befintlig torrent: %2. Resultat: %3 - + Merging of trackers is disabled - + Sammanslagning av spårare är inaktiverad - + Trackers cannot be merged because it is a private torrent - + Spårare kan inte slås samman eftersom det är en privat torrent - + Trackers are merged from new source - + Spårare slås samman från ny källa @@ -648,72 +594,77 @@ Fel: %2 Hoppa över hashkontroll - - - Choose save path - Välj sparsökväg + + Torrent share limits + Torrentdelningsgränser - - - - - - - Default - Standard + + + Choose save path + Välj sparsökväg + + + - Yes - Ja + Default + Standard + Yes + Ja + + + + + No Nej - + Manual Manuell - + Automatic Automatisk - + Original Original - + Create subfolder Skapa undermapp - + Don't create subfolder Skapa inte undermapp - + None Inget - + Metadata received Metadata mottagna - + Files checked Filer kontrollerade @@ -721,734 +672,852 @@ Fel: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Återkontrollera torrenter vid slutförning - - + + ms milliseconds ms - + Setting Inställning - + Value Value set for this setting Värde - + (disabled) - (inaktiverat) + (inaktiverat) - + (auto) - (automatisk) + (automatisk) - + + min minutes min - + All addresses Alla adresser - + qBittorrent Section qBittorrent-avsnitt - - + + Open documentation Öppna dokumentationen - + All IPv4 addresses Alla IPv4-adresser - + All IPv6 addresses Alla IPv6-adresser - + libtorrent Section libtorrent-avsnitt - + Fastresume files Snabbåteruppta filer - + SQLite database (experimental) SQLite-databas (experimentell) - + Resume data storage type (requires restart) - Återuppta datalagringstyp (kräver omstart) + Lagringstyp för återupptagningsdata (kräver omstart) - + Normal Normal - + Below normal Under normal - + Medium Medel - + Low Låg - + Very low Mycket låg - - Process memory priority (Windows >= 8 only) - Processen minnesprioritet (Windows >= 8) - - - + Physical memory (RAM) usage limit - Användningsgräns för fysiskt minne (RAM). + Användningsgräns för fysiskt minne (RAM) - + Asynchronous I/O threads Asynkrona in/ut-trådar - + Hashing threads Hashing-trådar - + File pool size Filpoolstorlek - + Outstanding memory when checking torrents - Enastående minne när du kontrollerar torrenter + Enastående minne vid kontroll av torrenter - + Disk cache Diskcache - - - - + + + + s seconds s - + Disk cache expiry interval - Intervall för diskcache utgångsdatum: + Intervall för diskcache utgångsdatum - + Disk queue size Diskköstorlek - - + + Enable OS cache Aktivera OS-cache - + Coalesce reads & writes Koalitionsläsningar & -skrivningar - + Use piece extent affinity Använd delutsträckningsaffinitet - + Send upload piece suggestions Skicka förslag på sändningsdelar - - - - + + + + + 0 (disabled) 0 (inaktiverat) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Intervall för att spara återupptagningsdata [0: inaktiverat] - + Outgoing ports (Min) [0: disabled] - Utgående portar (Min) [0: inaktiverat] + Utgående portar (min) [0: inaktiverat] - + Outgoing ports (Max) [0: disabled] Utgående portar (max) [0: inaktiverat] - + 0 (permanent lease) 0 (permanent anslutning) - + UPnP lease duration [0: permanent lease] UPnP-anslutningstid [0: permanent anslutning] - + Stop tracker timeout [0: disabled] Stopptidsgräns för spårare [0: inaktiverat] - + Notification timeout [0: infinite, -1: system default] Tidsgräns för avisering [0: oändlig, -1: systemstandard] - + Maximum outstanding requests to a single peer Högst antal utestående förfrågningar till en enskild jämlike - - - - - + + + + + KiB - KiB + KiB - + (infinite) (oändlig) - + (system default) - (systemstandard) + (systemstandard) + + + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + - + This option is less effective on Linux Det här alternativet är mindre effektivt på Linux - + + Process memory priority + Processminnesprioritet + + + Bdecode depth limit Bdecode djupgräns - + Bdecode token limit Bdecode tokengräns - + Default Standard - + Memory mapped files Minnesmappade filer - + POSIX-compliant POSIX-kompatibel - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk IO-typ (kräver omstart) - - + + Disable OS cache Inaktivera OS-cache - + Disk IO read mode Disk IO-läsläge - + Write-through Genomskrivning - + Disk IO write mode Disk IO-skrivläge - + Send buffer watermark Skicka buffertvattenstämpel - + Send buffer low watermark Skicka låg buffertvattenstämpel - + Send buffer watermark factor Skicka buffertvattenstämplingsfaktor - + Outgoing connections per second Utgående anslutningar per sekund - - + + 0 (system default) 0 (systemstandard) - + Socket send buffer size [0: system default] Socketbuffertstorlek för sändning [0: systemstandard] - + Socket receive buffer size [0: system default] Socketbuffertstorlek för mottagning [0: systemstandard] - + Socket backlog size Uttagets bakloggsstorlek - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent filstorleksgräns - + Type of service (ToS) for connections to peers Typ av tjänst (ToS) för anslutningar till jämlikar - + Prefer TCP Föredra TCP - + Peer proportional (throttles TCP) Proportionell jämlike (stryper TCP) - + Support internationalized domain name (IDN) Stöd internationaliserat domännamn (IDN) - + Allow multiple connections from the same IP address Tillåt flera anslutningar från samma IP-adress - + Validate HTTPS tracker certificates Validera HTTPS-spårarcertifikat - + Server-side request forgery (SSRF) mitigation - Begränsning av förfalskning av förfrågningar på serversidan (SSRF): + Begränsning av förfalskning av förfrågningar på serversidan (SSRF) - + Disallow connection to peers on privileged ports Tillåt inte anslutning till jämlikar på privilegierade portar - + + It appends the text to the window title to help distinguish qBittorent instances + Den lägger till texten till fönstertiteln för att hjälpa till att särskilja qBittorent-instanser + + + + Customize application instance name + Anpassa applikationsinstansens namn + + + It controls the internal state update interval which in turn will affect UI updates Den styr det interna tillståndsuppdateringsintervallet som i sin tur kommer att påverka användargränssnittsuppdateringar - + Refresh interval Uppdateringsintervall - + Resolve peer host names Slå upp jämlikarnas värdnamn - + IP address reported to trackers (requires restart) IP-adress rapporterad till spårare (kräver omstart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Återannonsera alla spårare när IP eller port ändrats - + Enable icons in menus Aktivera ikoner i menyer - + Enable port forwarding for embedded tracker Aktivera portvidarebefordran för inbäddad spårare - - (Auto detect if empty) + + Enable quarantine for downloaded files + Aktivera karantän för hämtade filer + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Aktivera Mark-of-the-Web (MOTW) för hämtade filer + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) - + + Ignore SSL errors + + + + + (Auto detect if empty) + (Detektera automatiskt om den är tom) + + + Python executable path (may require restart) + Körbar Python sökväg (kan kräva omstart) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + sek + + + + -1 (unlimited) - - Peer turnover disconnect percentage + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Bekräfta spårarborttagning från alla torrenter + + + + Peer turnover disconnect percentage + Procentandel för bortkoppling av jämlikeomsättning + + + Peer turnover threshold percentage - + Procenttröskelandel av jämlikeomsättning - + Peer turnover disconnect interval - + Intervall för bortkoppling av jämlikeomsättning - + Resets to default if empty - + Återställ till standard om den är tom - + DHT bootstrap nodes - + DHT bootstrap noder - + I2P inbound quantity I2P inkommande kvantitet - + I2P outbound quantity I2P inkommande kvantitet - + I2P inbound length I2P inkommande längd - + I2P outbound length I2P inkommande längd - + Display notifications Visa aviseringar - + Display notifications for added torrents Visa aviseringar för tillagda torrenter - + Download tracker's favicon Hämta spårarens favicon - + Save path history length Historiklängd för sparsökväg - + Enable speed graphs Aktivera hastighetsdiagram - + Fixed slots Fasta platser - + Upload rate based - Sändning betygbaserad + Baserat på sändningshastighet - + Upload slots behavior Beteende för sändningsplatser - + Round-robin Round Robin - + Fastest upload Snabbaste sändning - + Anti-leech Anti-reciprokör - + Upload choking algorithm Strypningsalgoritm för sändning - + Confirm torrent recheck Bekräfta återkontroll av torrent - + Confirm removal of all tags Bekräfta borttagning av alla taggar - + Always announce to all trackers in a tier Annonsera alla spårare i en nivå - + Always announce to all tiers Annonsera alltid alla nivåer - + Any interface i.e. Any network interface Alla gränssnitt - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP blandad lägesalgoritm - + Resolve peer countries Slå upp jämlikarnas länder - + Network interface Nätverksgränssnitt - + Optional IP address to bind to Valfri IP-adress att binda till - + Max concurrent HTTP announces Maximalt antal samtidiga HTTP-annonseringar - + Enable embedded tracker Aktivera inbäddad spårare - + Embedded tracker port Port för inbäddad spårare - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 startad + + + Invalid directory path + + + + + Directory does not exist + - + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Körs i bärbart läge. Automatisk upptäckt profilmapp i: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Redundant kommandoradsflagga upptäckt: "%1". Bärbartläge innebär relativ fastresume. - + Using config directory: %1 Använder konfigurationsmapp: %1 - + Torrent name: %1 Torrentnamn: %1 - + Torrent size: %1 Torrentstorlek: %1 - + Save path: %1 Sparsökväg: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent hämtades i %1. - + + Thank you for using qBittorrent. Tack för att ni använde qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, skickar e-postavisering - + Add torrent failed - + Det gick inte att lägga till torrent - + Couldn't add torrent '%1', reason: %2. - + Det gick inte att lägga till torrent '%1', orsak: %2. - + + The WebUI administrator username is: %1 + Webbanvändargränssnittets administratörsanvändarnamn är: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Webbanvändargränssnittets administratörslösenord har inte angetts. Ett tillfälligt lösenord tillhandahålls för denna session: %1 + + + + You should set your own password in program preferences. + Du bör ställa in ditt eget lösenord i programinställningarna. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Webbanvändargränssnittet är inaktiverat! För att aktivera webbanvändargränssnittet, redigera konfigurationsfilen manuellt. - + Running external program. Torrent: "%1". Command: `%2` Kör externt program. Torrent: "%1". Kommando: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Det gick inte att köra externt program. Torrent: "%1". Kommando: `%2` - + Torrent "%1" has finished downloading Torrenten "%1" har hämtats färdigt - + WebUI will be started shortly after internal preparations. Please wait... Webbanvändargränssnittet kommer att startas kort efter interna förberedelser. Vänta... - - + + Loading torrents... Läser in torrenter... - + E&xit A&vsluta - + I/O Error i.e: Input/Output Error I/O-fel - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Fel: %2 Orsak: %2 - Error - Fel - - - Failed to add torrent: %1 - Det gick inte att lägga till torrent: %1 - - - + Torrent added Torrent tillagd - + '%1' was added. e.g: xxx.avi was added. "%1" tillagd. - + Download completed Hämtningen slutförd - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - "%1" har hämtats. - - - URL download error - URL-hämtningsfel + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 startad. Process-ID: %2 - Couldn't download file at URL '%1', reason: %2. - Det gick inte att hämta fil från URL "%1", orsak: %2. + + This is a test email. + - Torrent file association - Torrentfilassociation + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent är inte standardprogrammet för att öppna torrentfiler eller magnetlänkar. -Vill du göra qBittorrent till standardprogrammet för dessa? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + "%1" har hämtats. - + Information Information - + To fix the error, you may need to edit the config file manually. - + För att åtgärda felet kan du behöva redigera konfigurationsfilen manuellt. - + To control qBittorrent, access the WebUI at: %1 För att kontrollera qBittorrent, gå till webbgränssnittet på: %1 - - The Web UI administrator username is: %1 - Administratörens användarnamn för webbanvändargränssnittet är: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Webbgränssnittets administratörslösenord har inte ändrats från standard: %1 - - - - This is a security risk, please change your password in program preferences. - Detta är en säkerhetsrisk, ändra ditt lösenord i programinställningarna. - - - Application failed to start. - Programmet kunde inte starta. - - - + Exit Avsluta - + Recursive download confirmation - Bekräftelse på rekursiv hämtning + Bekräftelse på rekursiv hämtning - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrenten "%1" innehåller .torrent-filer, vill du fortsätta med deras hämtning? + Torrenten "%1" innehåller .torrent-filer, vill du fortsätta med deras hämtning? - + Never - Aldrig + Aldrig - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursiv hämtning .torrent-fil i torrent. Källtorrent: "%1". Fil: "%2" + Rekursiv hämtning .torrent-fil i torrent. Källtorrent: "%1". Fil: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Det gick inte att ställa in användningsgräns för fysiskt minne (RAM). Felkod: %1. Felmeddelande: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Det gick inte att ange hård gräns för fysiskt minne (RAM). Begärd storlek: %1. Systemets hårda gräns: %2. Felkod: %3. Felmeddelande: "%4" - + qBittorrent termination initiated Avslutning av qBittorrent har initierats - + qBittorrent is shutting down... qBittorrent stängs... - + Saving torrent progress... Sparar torrent förlopp... - + qBittorrent is now ready to exit qBittorrent är nu redo att avsluta @@ -1597,7 +1637,7 @@ Vill du göra qBittorrent till standardprogrammet för dessa? AsyncFileStorage - + Could not create directory '%1'. Det gick inte att skapa mappen "%1". @@ -1605,22 +1645,22 @@ Vill du göra qBittorrent till standardprogrammet för dessa? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI-inloggningsfel. Orsak: IP-adressen har förbjudits, IP: %1, användarnamn: %2 - + Your IP address has been banned after too many failed authentication attempts. Din IP-adress har förbjudits efter alltför många misslyckade autentiseringsförsök. - + WebAPI login success. IP: %1 WebAPI-inloggningsframgång. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI-inloggningsfel. Orsak: ogiltiga referenser, antal försök: %1, IP: %2, användarnamn: %3 @@ -1668,12 +1708,12 @@ Vill du göra qBittorrent till standardprogrammet för dessa? Prioritet: - + Must Not Contain: Får inte innehålla: - + Episode Filter: Avsnittsfilter: @@ -1703,7 +1743,7 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder days - dagar + dagar @@ -1718,273 +1758,273 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder &Import... - Importera... + &Importera... &Export... - Exportera... + &Exportera... - + Matches articles based on episode filter. Matchar artiklar baserat på avsnittsfilter. - + Example: - Exempel: + Exempel: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match - kommer matcha 2, 5, 8 genom 15, 30 och framåt på avsnittet säsong ett + kommer att matcha avsnitten 2, 5, 8 till 15, 30 och framåt av säsong ett - + Episode filter rules: - Regler för avsnittsfilter: + Regler för avsnittsfilter: - + Season number is a mandatory non-zero value Säsongsnummer är ett krav för värden över noll - + Filter must end with semicolon Filter måste sluta med semikolon - + Three range types for episodes are supported: - Tre olika typer av avsnitt stöds: + Tre intervalltyper för avsnitt stöds: - + Single number: <b>1x25;</b> matches episode 25 of season one Ensamma siffror: <b>1x25;</b> matchar avsnitt 25 av säsong ett - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Vanligt intervall: <b>1x25-40;</b> matchar avsnitt 25 till 40 i säsong ett - + Episode number is a mandatory positive value Avsnittsnummer är ett obligatoriskt positivt värde - + Rules Regler - + Rules (legacy) Regler (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Oändligt intervall: <b>1x25-;</b> matchar avsnitt 25 och uppåt av säsong ett, och alla avsnitt av senare säsonger - + Last Match: %1 days ago Senaste matchning: %1 dagar sedan - + Last Match: Unknown Senaste matchning: Okänd - + New rule name Namn för ny regel - + Please type the name of the new download rule. Skriv namnet på den nya hämtningsregeln. - - + + Rule name conflict Namnkonflikt för regler - - + + A rule with this name already exists, please choose another name. En regel med det här namnet finns redan, välj ett annat namn. - + Are you sure you want to remove the download rule named '%1'? Är du säker på att du vill ta bort hämtningsregeln "%1"? - + Are you sure you want to remove the selected download rules? Är du säker på att du vill ta bort de markerade hämtningsreglerna? - + Rule deletion confirmation Bekräftelse på regelborttagning - + Invalid action Ogiltig åtgärd - + The list is empty, there is nothing to export. Listan är tom, det finns inget att exportera. - + Export RSS rules Exportera RSS-regler - + I/O Error In/ut-fel - + Failed to create the destination file. Reason: %1 Det gick inte att skapa målfilen. Orsak: %1 - + Import RSS rules Importera RSS-regler - + Failed to import the selected rules file. Reason: %1 Det gick inte att importera den valda regelfilen. Orsak: %1 - + Add new rule... Lägg till ny regel... - + Delete rule Ta bort regel - + Rename rule... Byt namn på regel... - + Delete selected rules Ta bort markerade regler - + Clear downloaded episodes... Rensa hämtade avsnitt... - + Rule renaming Regelnamnbyte - + Please type the new rule name Skriv det nya regelnamnet - + Clear downloaded episodes Rensa hämtade avsnitt - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Är du säker på att du vill rensa listan över hämtade avsnitt för den valda regeln? - + Regex mode: use Perl-compatible regular expressions Regex-läge: använd Perl-kompatibla reguljära uttryck - - + + Position %1: %2 Position %1: %2 - + Wildcard mode: you can use Jokertecken-läge: Du kan använda - - + + Import error Importfel - + Failed to read the file. %1 Det gick inte att läsa filen. %1 - + ? to match any single character ? för att matcha alla enskilda tecken - + * to match zero or more of any characters * för att matcha noll eller fler av några tecken - + Whitespaces count as AND operators (all words, any order) Blanksteg räknas som AND-operatörer (alla ord, valfri ordning) - + | is used as OR operator | används som OR-operatör - + If word order is important use * instead of whitespace. Om ordföljden är viktig, användning * i stället för blanksteg. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Ett uttryck med en tom %1-klausul (t.ex. %2) - + will match all articles. - kommer att matcha alla artiklar. + kommer att matcha alla artiklar. - + will exclude all articles. - kommer exkludera alla artiklar. + kommer att exkludera alla artiklar. @@ -2024,53 +2064,58 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Det går inte att skapa återupptagningsmapp för torrent: "%1" - + Cannot parse resume data: invalid format Det går inte att analysera återupptagningsdata: ogiltigt format - - + + Cannot parse torrent info: %1 Det går inte att analysera torrentinformation: %1 - + Cannot parse torrent info: invalid format Det går inte att analysera torrentinformation: ogiltigt format - + + Mismatching info-hash detected in resume data + Felaktig info-hash upptäcktes i återupptagningsdata + + + Couldn't save torrent metadata to '%1'. Error: %2. - Det gick inte att spara torrentmetadata till "%1". Fel: %2 + Det gick inte att spara torrentmetadata till "%1". Fel: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. - Det gick inte att spara återupptagningsdata för torrent till "%1". Fel: %2 + Det gick inte att spara återupptagningsdata för torrent till "%1". Fel: %2. - + Couldn't load torrents queue: %1 Det gick inte att läsa in torrentkö: %1 - + Cannot parse resume data: %1 - Det går inte att analysera återställningsdata: %1 + Det går inte att analysera återupptagningsdata: %1 - + Resume data is invalid: neither metadata nor info-hash was found - Återställningsdata är ogiltiga: varken metadata eller infohash hittades + Återupptagningsdata är ogiltiga: varken metadata eller info-hash hittades - + Couldn't save data to '%1'. Error: %2 Det gick inte att spara data till "%1". Fel: %2 @@ -2078,38 +2123,38 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder BitTorrent::DBResumeDataStorage - + Not found. Hittades inte. - + Couldn't load resume data of torrent '%1'. Error: %2 Det gick inte att läsa in återupptagningsdata för torrenten "%1". Fel: %2 - - + + Database is corrupted. Databasen är korrupt. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Det gick inte att aktivera Write-Ahead Logging (WAL) journaliseringsläge. Fel: %1. - + Couldn't obtain query result. Det gick inte att hämta frågeresultat. - + WAL mode is probably unsupported due to filesystem limitations. WAL-läge stöds förmodligen inte på grund av filsystembegränsningar. - + Couldn't begin transaction. Error: %1 Det gick inte att påbörja överföring. Fel: %1 @@ -2117,22 +2162,22 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - Det gick inte att spara torrentmetadata. Fel: %1 + Det gick inte att spara torrentmetadata. Fel: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Det gick inte att lagra återupptagningsdata för torrenten "%1". Fel: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Det gick inte att ta bort återupptagningsdata för torrenten "%1". Fel: %2 - + Couldn't store torrents queue positions. Error: %1 Det gick inte att lagra köpositioner för torrenter. Fel: %1 @@ -2140,586 +2185,620 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Stöd för distribuerad hashtabell (DHT): %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF AV - - + + Local Peer Discovery support: %1 Stöd för upptäckt av lokala jämlikar: %1 - + Restart is required to toggle Peer Exchange (PeX) support - Omstart krävs för att växla stöd för jämlikeutbyte (PeX). + Omstart krävs för att växla stöd för jämlikeutbyte (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Det gick inte att återuppta torrent. Torrent: "%1". Orsak: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Det gick inte att återuppta torrent: inkonsekvent torrent-ID har upptäckts. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Inkonsekvent data upptäckt: kategori saknas i konfigurationsfilen. Kategori kommer att återställas men dess inställningar kommer att återställas till standard. Torrent: "%1". Kategori: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Inkonsekvent data upptäckt: ogiltig kategori. Torrent: "%1". Kategori: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Upptäckt oöverensstämmelse mellan sparsökvägarna för den återställda kategorin och den aktuella sparsökvägen för torrenten. Torrent är nu växlat till manuellt läge. Torrent: "%1". Kategori: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Inkonsekvent data upptäckt: tagg saknas i konfigurationsfilen. Taggen kommer att återställas. Torrent: "%1". Tagg: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Inkonsekvent data upptäckt: ogiltig tagg. Torrent: "%1". Tagg: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Systemväckningshändelse upptäckt. Återannonserar för alla spårare... - + Peer ID: "%1" - Jämlie-ID: "%1" + Jämlike-ID: "%1" - + HTTP User-Agent: "%1" HTTP-användaragent: "%1" - + Peer Exchange (PeX) support: %1 Jämlikeutbyte (PeX)-stöd: %1 - - + + Anonymous mode: %1 Anonymt läge: %1 - - + + Encryption support: %1 Krypteringsstöd: %1 - - + + FORCED TVINGAT - + Could not find GUID of network interface. Interface: "%1" Det gick inte att hitta GUID för nätverksgränssnitt. Gränssnitt: "%1" - + Trying to listen on the following list of IP addresses: "%1" Försöker lyssna på följande lista med IP-adresser: "%1" - + Torrent reached the share ratio limit. Torrent nådde kvotgränsen. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Tog bort torrent. + Tog bort torrent. - - - Removed torrent and deleted its content. - Tog bort torrent och dess innehåll. + Tog bort torrent och dess innehåll. - - - Torrent paused. - Torrent pausad. + Torrent pausad. - - - + Super seeding enabled. Superdistribution aktiverad. - + Torrent reached the seeding time limit. Torrent nådde distributionstidsgränsen. - + Torrent reached the inactive seeding time limit. Torrent nådde tidsgränsen för inaktiv distribution. - + Failed to load torrent. Reason: "%1" Det gick inte att läsa in torrent. Orsak: "%1" - + I2P error. Message: "%1". + I2P-fel. Meddelande: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP-stöd: PÅ + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Hämtar torrent, vänta... Källa: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Det gick inte att läsa in torrent. Källa: "%1". Orsak: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Upptäckte ett försök att lägga till en dubblettorrent. Sammanslagning av spårare är inaktiverad. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Upptäckte ett försök att lägga till en dubblettorrent. Spårare kan inte slås samman eftersom det är en privat torrent. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Upptäckte ett försök att lägga till en dubblettorrent. Spårare slås samman från ny källa. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP-stöd: PÅ + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP-stöd: AV + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Det gick inte att exportera torrent. Torrent: "%1". Destination: "%2". Orsak: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Avbröt att spara återupptagningsdata. Antal utestående torrents: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Sammanslagning av spårare är inaktiverad + + + + Trackers cannot be merged because it is a private torrent + Spårare kan inte slås samman eftersom det är en privat torrent - System network status changed to %1 - e.g: System network status changed to ONLINE - Systemets nätverksstatus har ändrats till %1 + + Trackers are merged from new source + Spårare slås samman från ny källa - ONLINE - UPPKOPPLAD + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP-stöd: AV - OFFLINE - FRÅNKOPPLAD + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Det gick inte att exportera torrent. Torrent: "%1". Destination: "%2". Orsak: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Nätverkskonfigurationen för %1 har ändrats, sessionsbindningen uppdateras + + Aborted saving resume data. Number of outstanding torrents: %1 + Avbröt sparande av återupptagningsdata. Antal utestående torrenter: %1 - + The configured network address is invalid. Address: "%1" Den konfigurerade nätverksadressen är ogiltig. Adress: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Det gick inte att hitta den konfigurerade nätverksadressen att lyssna på. Adress: "%1" - + The configured network interface is invalid. Interface: "%1" Det konfigurerade nätverksgränssnittet är ogiltigt. Gränssnitt: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Avvisade ogiltig IP-adress när listan över förbjudna IP-adresser tillämpades. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Lade till spårare till torrent. Torrent: "%1". Spårare: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - Tog bort tracker från torrent. Torrent: "%1". Spårare: "%2" + Tog bort spårare från torrent. Torrent: "%1". Spårare: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Lade till URL-distribution till torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Tog bort URL-distribution från torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent pausad. Torrent: "%1" + Torrent pausad. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent återupptogs. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrenthämtningen är klar. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrentflytt avbröts. Torrent: "%1". Källa: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Det gick inte att ställa torrentflyttning i kö. Torrent: "%1". Källa: "%2". Destination: "%3". Orsak: torrent flyttar för närvarande till destinationen - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Det gick inte att ställa torrentflyttning i kö. Torrent: "%1". Källa: "%2" Destination: "%3". Orsak: båda sökvägarna pekar på samma plats - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrentflytt i kö. Torrent: "%1". Källa: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Börja flytta torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Det gick inte att spara kategorikonfigurationen. Fil: "%1". Fel: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Det gick inte att analysera kategorikonfigurationen. Fil: "%1". Fel: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Rekursiv hämtning .torrent-fil i torrent. Källtorrent: "%1". Fil: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Det gick inte att läsa in .torrent-filen i torrent. Källtorrent: "%1". Fil: "%2". Fel: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP-filterfilen har analyserats. Antal tillämpade regler: %1 - + Failed to parse the IP filter file Det gick inte att analysera IP-filterfilen - + Restored torrent. Torrent: "%1" Återställd torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Lade till ny torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent har fel. Torrent: "%1". Fel: "%2" - - Removed torrent. Torrent: "%1" - Tog bort torrent. Torrent: "%1" + Tog bort torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Tog bort torrent och dess innehåll. Torrent: "%1" + Tog bort torrent och dess innehåll. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent saknar SSL-parametrar. Torrent: "%1". Meddelande: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Filfelvarning. Torrent: "%1". Fil: "%2". Orsak: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP-portmappning misslyckades. Meddelande: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP-portmappningen lyckades. Meddelande: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP-filter - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). filtrerad port (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). privilegierad port (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent-sessionen stötte på ett allvarligt fel. Orsak: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". - SOCKS5 proxy-fel. Adress 1. Meddelande: "%2". + SOCKS5 proxyfel. Adress 1. Meddelande: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 begränsningar för blandat läge - + Failed to load Categories. %1 Det gick inte att läsa in kategorier. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Det gick inte att läsa in kategorikonfigurationen. Fil: "%1". Fel: "Ogiltigt dataformat" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Tog bort torrent men kunde inte att ta bort innehåll och/eller delfil. Torrent: "%1". Fel: "%2" + Tog bort torrent men kunde inte att ta bort innehåll och/eller delfil. Torrent: "%1". Fel: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 är inaktiverad - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 är inaktiverad - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - DNS-uppslagning av URL-distribution misslyckades. Torrent: "%1". URL: "%2". Fel: "%3" + DNS-uppslagning av URL-distribution misslyckades. Torrent: "%1". URL: "%2". Fel: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Fick felmeddelande från URL-distribution. Torrent: "%1". URL: "%2". Meddelande: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Lyssnar på IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Det gick inte att lyssna på IP. IP: "%1". Port: "%2/%3". Orsak: "%4" - + Detected external IP. IP: "%1" Upptäckt extern IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Fel: Den interna varningskön är full och varningar tas bort, du kan se försämrad prestanda. Borttagen varningstyp: "%1". Meddelande: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Flyttade torrent. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Det gick inte att flytta torrent. Torrent: "%1". Källa: "%2". Destination: "%3". Orsak: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Operation avbruten - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Skapande av ny torrentfil misslyckades. Orsak: %1 + + Failed to start seeding. + Det gick inte att starta distribution. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Operation avbruten + Operation avbruten + + Create new torrent file failed. Reason: %1. - Skapande av ny torrentfil misslyckades. Orsak: %1 + Skapande av ny torrentfil misslyckades. Orsak: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Det gick inte att lägga till jämliken "%1" till torrenten "%2". Orsak: %3 - + Peer "%1" is added to torrent "%2" Jämliken "%1" läggs till torrenten "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Oväntad data identifierad. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Det gick inte att skriva till fil. Orsak: "%1". Torrent är nu i "endast sändningsläge". - + Download first and last piece first: %1, torrent: '%2' Hämta första och sista delarna först: %1, torrent: "%2" - + On - + Off Av - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Det gick inte att ladda om torrent. Torrent: %1. Orsak: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Det gick inte att generera återupptagningsdata. Torrent: "%1". Orsak: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Det gick inte att återställa torrent. Filer har förmodligen flyttats eller så är lagringen inte tillgänglig. Torrent: "%1". Orsak: "%2" - + Missing metadata Saknar metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Det gick inte att byta namn på fil. Torrent: "%1", fil: "%2", orsak: "%3" - + Performance alert: %1. More info: %2 Prestandavarning: %1. Mer info: %2 @@ -2740,184 +2819,198 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametern "%1" måste följa syntaxen "%1=%2" - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametern "%1" måste följa syntaxen "%1=%2" - + Expected integer number in environment variable '%1', but got '%2' Förväntat heltal i miljövariabeln "%1", men fick "%2" - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametern "%1" måste följa syntaxen "%1=%2" + Parametern "%1" måste följa syntaxen "%1=%2" - + Expected %1 in environment variable '%2', but got '%3' Förväntade %1 i miljövariabeln "%2", men fick "%3" - - + + %1 must specify a valid port (1 to 65535). %1 måste ange korrekt port (1 till 65535). - + Usage: Användning: - + [options] [(<filename> | <url>)...] [alternativ] [(<filename> | <url>)...] - + Options: Alternativ: - + Display program version and exit Visa programversionen och avsluta - + Display this help message and exit Visa detta hjälpmeddelande och avsluta - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametern "%1" måste följa syntaxen "%1=%2" + + + + Confirm the legal notice + Bekräfta juridiska informationen + + + + port port - - Change the Web UI port - Ändra webbgränssnittsporten + + Change the WebUI port + Ändra porten för webbanvändargränssnittet - + Change the torrenting port Ändra webbgränssnittsporten - + Disable splash screen Inaktivera startbilden - + Run in daemon-mode (background) Kör i demonläge (i bakgrunden) - + dir Use appropriate short form or abbreviation of "directory" mapp - + Store configuration files in <dir> Spara konfigurationsfiler i <dir> - - + + name namn - + Store configuration files in directories qBittorrent_<name> Spara konfigurationsfiler i mappar qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Hacka in i libtorrents fastresume-filer och gör sökvägar i förhållande till profilmappen - + files or URLs filer eller URL:er - + Download the torrents passed by the user Hämta torrenterna som skickats av användaren - + Options when adding new torrents: Alternativ när nya torrenter läggs till: - + path sökväg - + Torrent save path Torrent-sparsökväg - + + Add torrents as running or stopped + + + Add torrents as started or paused - Lägg till torrenter som startade eller pausade + Lägg till torrenter som startade eller pausade - + Skip hash check Hoppa över hashkontroll - + Assign torrents to category. If the category doesn't exist, it will be created. Tilldela torrenter till kategori. Om kategorin inte finns skapas den. - + Download files in sequential order Hämta filer i sekventiell ordning - + Download first and last pieces first Hämta första och sista delarna först - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Ange om dialogrutan "Lägg till ny torrent" öppnas när du lägger till en torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - Altenativvärden kan levereras via miljövariabler. För alternativ som heter "parameter-name" är miljövariabelnamnet "QBT_PARAMETER_NAME" (i övre fallet är "-" ersatt med "_"). För att skicka flaggvärden anger du variabeln till "1" eller "TRUE". Till exempel, för att inaktivera startskärmen: + Alternativvärden kan levereras via miljövariabler. För alternativ som heter "parameter-name" är miljövariabelnamnet "QBT_PARAMETER_NAME" (i övre fallet är "-" ersatt med "_"). För att skicka flaggvärden anger du variabeln till "1" eller "TRUE". Till exempel, för att inaktivera startskärmen: - + Command line parameters take precedence over environment variables Kommandoradsparametrar har företräde framför miljövariabler - + Help Hjälp @@ -2925,17 +3018,17 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder CategoryFilterModel - + Categories Kategorier - + All Alla - + Uncategorized Utan kategorier @@ -2969,13 +3062,21 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder - Resume torrents - Återuppta torrenter + Start torrents + + Stop torrents + + + + Resume torrents + Återuppta torrenter + + Pause torrents - Pausa torrenter + Pausa torrenter @@ -2986,15 +3087,20 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder ColorWidget - + Edit... Redigera... - + Reset Återställ + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder CustomThemeSource - + Failed to load custom theme style sheet. %1 Det gick inte att läsa in anpassad temastilmall. %1 - + Failed to load custom theme colors. %1 Det gick inte att läsa in anpassade temafärger. %1 @@ -3048,7 +3154,7 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder DefaultThemeSource - + Failed to load default theme colors. %1 Det gick inte att läsa in standardtemafärger. %1 @@ -3067,23 +3173,27 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder + Also remove the content files + + + Also permanently delete the files - Ta också bort filerna permanent + Ta också bort filerna permanent - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Är du säker på att du vill ta bort "%1" från överföringslistan? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Är du säker på att du vill ta bort dessa %1 torrenter från överföringslistan? - + Remove Ta bort @@ -3096,14 +3206,14 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder Hämta från URL:er - + Add torrent links Lägg till torrentlänkar - + One link per line (HTTP links, Magnet links and info-hashes are supported) - En länk per rad (HTTP-länkar, magnetlänkar och infohashar stöds) + En länk per rad (HTTP-länkar, magnetlänkar och info-hashar stöds) @@ -3111,12 +3221,12 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder Hämta - + No URL entered Ingen URL inmatad - + Please type at least one URL. Skriv minst en URL. @@ -3275,64 +3385,91 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder Tolkningsfel: Filterfilen är inte en giltig PeerGuardian-P2B-fil. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Hämtar torrent... Källa: "%1" - Trackers cannot be merged because it is a private torrent - + Spårare kan inte slås samman eftersom det är en privat torrent - + Torrent is already present - Torrent är redan närvarande + Torrent är redan närvarande - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrenten "%1" finns redan i överföringslistan. Vill du slå samman spårare från den nya källan? + Torrenten "%1" finns redan i överföringslistan. Vill du slå samman spårare från ny källa? GeoIPDatabase - - + + Unsupported database file size. Ostödd databasfilstorlek. - + Metadata error: '%1' entry not found. Metadatafel: posten "%1" hittades inte. - + Metadata error: '%1' entry has invalid type. Metadatafel: posten "%1" har ogiltig typ. - + Unsupported database version: %1.%2 Icke-stödd databasversion: %1.%2 - + Unsupported IP version: %1 Icke-stödd IP-version: %1 - + Unsupported record size: %1 icke-stödd poststorlek: %1 - + Database corrupted: no data section found. Databas skadad: ingen datasektion hittades. @@ -3340,17 +3477,17 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP-förfrågans storlek överskrider begränsningen, stänger uttag. Gräns: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Dålig HTTP-förfrågningsmetod, stänger uttag. IP: %1. Metod: "%2" - + Bad Http request, closing socket. IP: %1 Dålig http-förfrågan, stänger uttag. IP: %1 @@ -3391,36 +3528,64 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder IconWidget - + Browse... Bläddra... - + Reset Återställ - + Select icon Välj ikon - + Supported image files Bildfiler som stöds + + LegalNotice + + + Legal Notice + Juridisk information + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent är ett fildelningsprogram. När du kör en torrent kommer dess data att göras tillgängliga för andra genom sändning. Allt innehåll som du delar är fullständigt på ditt eget ansvar. + + + + No further notices will be issued. + Inga ytterligare notiser kommer att utfärdas. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Om du har läst den juridiska informationen kan du använda kommandoradsalternativet `--confirm-legal-notice` för att undertrycka detta meddelande. + + + + Press 'Enter' key to continue... + Tryck på "Enter" för att fortsätta... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 blockerades. Orsak: %2. - + %1 was banned 0.0.0.0 was banned %1 förbjöds @@ -3429,91 +3594,62 @@ Stöder formaten: S01E01, 1x1, 2017.12.31 och 31.12.2017 (datumformatet stöder Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 är en okänd kommandoradsparameter. - - + + %1 must be the single command line parameter. %1 måste vara den enda kommandoradsparametern. - - You cannot use %1: qBittorrent is already running for this user. - Du kan inte använda %1: qBittorrent körs redan för denna användare. - - - + Run application with -h option to read about command line parameters. Kör programmet med -h optionen för att läsa om kommando parametrar. - + Bad command line Ogiltig kommandorad - + Bad command line: - Ogiltig kommandorad: + Ogiltig kommandorad: - + An unrecoverable error occurred. - + Ett oåterställbart fel inträffade. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Juridisk information - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent är ett fildelningsprogram. När du kör en torrent kommer dess data att göras tillgängliga för andra genom sändning. Allt innehåll som du delar är fullständigt på ditt eget ansvar. - - - - No further notices will be issued. - Inga ytterligare notiser kommer att utfärdas. - - - - Press %1 key to accept and continue... - Tryck på %1-tangenten för att godkänna och fortsätta... + qBittorrent har stött på ett oåterställbart fel. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent är ett fildelningsprogram. När du kör en torrent kommer dess data att göras tillgängliga för andra genom sändning. Allt innehåll som du delar är fullständigt på ditt eget ansvar. - -Inga ytterligare notiser kommer att utfärdas. + + You cannot use %1: qBittorrent is already running. + Du kan inte använda %1: qBittorrent körs redan. - - Legal notice - Juridisk information + + Another qBittorrent instance is already running. + En annan qBittorrent-instans körs redan. - - Cancel - Avbryt + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Hittade oväntad qBittorrent-instans. Avslutar den här instansen. Aktuellt process-ID: %1. - - I Agree - Jag godkänner + + Error when daemonizing. Reason: "%1". Error code: %2. + Fel vid demonisering. Orsak: "%1". Felkod: %2. @@ -3524,621 +3660,706 @@ Inga ytterligare notiser kommer att utfärdas. &Redigera - + &Tools V&erktyg - + &File &Arkiv - + &Help &Hjälp - + On Downloads &Done Vid &slutförda hämtningar - + &View &Visa - + &Options... A&lternativ... - &Resume - &Återuppta + &Återuppta - + &Remove &Ta bort - + Torrent &Creator &Torrentskapare - - + + Alternative Speed Limits Alternativa hastighetsgränser - + &Top Toolbar &Översta verktygsfältet - + Display Top Toolbar Visa översta verktygsfältet - + Status &Bar Status&fält - + Filters Sidebar Filtersidofält - + S&peed in Title Bar H&astighet i titelfältet - + Show Transfer Speed in Title Bar Visa överföringshastighet i titelfältet - + &RSS Reader &RSS-läsare - + Search &Engine Sök&motor - + L&ock qBittorrent L&åsa qBittorrent - + Do&nate! Do&nera! - + + Sh&utdown System + + + + &Do nothing &Gör ingenting - + Close Window Stäng fönster - R&esume All - Åt&eruppta alla + Åt&eruppta alla - + Manage Cookies... Hantera kakor... - + Manage stored network cookies Hantera lagrade nätverkskakor - + Normal Messages Normala meddelanden - + Information Messages Informationsmeddelanden - + Warning Messages Varningsmeddelanden - + Critical Messages Kritiska meddelanden - + &Log &Logg - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Ställ in globala hastighetsgränser... - + Bottom of Queue Längst bak i kön - + Move to the bottom of the queue Flytta till slutet av kön - + Top of Queue Längst fram i kön - + Move to the top of the queue Flytta till början av kön - + Move Down Queue Flytta bak i kön - + Move down in the queue Flytta bak i kön - + Move Up Queue Flytta fram i kön - + Move up in the queue Flytta fram i kön - + &Exit qBittorrent &Avsluta qBittorrent - + &Suspend System &Försätt systemet i vänteläge - + &Hibernate System &Försätt systemet i viloläge - S&hutdown System - S&täng av systemet + S&täng av systemet - + &Statistics &Statistik - + Check for Updates Sök efter uppdateringar - + Check for Program Updates Sök efter programuppdateringar - + &About &Om - &Pause - &Pausa + &Pausa - P&ause All - P&ausa alla + P&ausa alla - + &Add Torrent File... Lägg till &torrentfil... - + Open Öppna - + E&xit A&vsluta - + Open URL Öppna URL - + &Documentation &Dokumentation - + Lock Lås - - - + + + Show Visa - + Check for program updates Sök efter programuppdateringar - + Add Torrent &Link... Lägg till torrent&länk... - + If you like qBittorrent, please donate! Donera om du tycker om qBittorrent! - - + + Execution Log Exekveringsloggen - + Clear the password Rensa lösenordet - + &Set Password &Ställ in lösenord - + Preferences Inställningar - + &Clear Password &Rensa lösenord - + Transfers Överföringar - - + + qBittorrent is minimized to tray qBittorrent minimerad till systemfältet - - - + + + This behavior can be changed in the settings. You won't be reminded again. Detta beteende kan ändras i inställningarna. Du kommer inte att bli påmind igen. - + Icons Only Endast ikoner - + Text Only Endast text - + Text Alongside Icons Text längs med ikoner - + Text Under Icons Text under ikoner - + Follow System Style Använd systemets utseende - - + + UI lock password Lösenord för gränssnittslås - - + + Please type the UI lock password: Skriv lösenordet för gränssnittslås: - + Are you sure you want to clear the password? Är du säker att du vill rensa lösenordet? - + Use regular expressions Använd reguljära uttryck - - Search - Sök + + + Search Engine + Sökmotor - - Transfers (%1) - Överföringar (%1) + + Search has failed + Det gick inte att söka - Recursive download confirmation - Bekräftelse på rekursiv hämtning + + Search has finished + Sökningen är klar - Never - Aldrig + + Search + Sök + + + + Transfers (%1) + Överföringar (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - qBittorrent uppdaterades nyss och behöver startas om för att ändringarna ska vara effektiva.. + qBittorrent uppdaterades precis och måste startas om för att ändringarna ska träda i kraft. - + qBittorrent is closed to tray qBittorrent stängd till systemfältet - + Some files are currently transferring. Några filer överförs för närvarande. - + Are you sure you want to quit qBittorrent? Är du säker på att du vill avsluta qBittorrent? - + &No &Nej - + &Yes &Ja - + &Always Yes &Alltid Ja - + Options saved. Alternativen sparade. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [N: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Saknar Python Runtime - + qBittorrent Update Available qBittorrent uppdatering tillgänglig - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python krävs för att använda sökmotorn, men det verkar inte vara installerat. Vill du installera det nu? - + Python is required to use the search engine but it does not seem to be installed. Python krävs för att använda sökmotorn, men det verkar inte vara installerat. - - + + Old Python Runtime Gammal Python Runtime - + A new version is available. En ny version är tillgänglig. - + Do you want to download %1? Vill du hämta %1? - + Open changelog... Öppna ändringslogg... - + No updates available. You are already using the latest version. Inga uppdateringar tillgängliga. Du använder redan den senaste versionen. - + &Check for Updates &Sök efter uppdateringar - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Din Python-version (%1) är föråldrad. Minimikrav: %2. Vill du installera en nyare version nu? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Din Python-version (%1) är föråldrad. Uppgradera till den senaste versionen för att sökmotorerna ska fungera. Minimikrav: %2. - + + Paused + Pausad + + + Checking for Updates... Söker efter uppdateringar... - + Already checking for program updates in the background Söker redan efter programuppdateringar i bakgrunden - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Hämtningsfel - Python setup could not be downloaded, reason: %1. Please install it manually. - Python-installationen kunde inte hämtas. Orsak: %1. + Python-installationen kunde inte hämtas. Orsak: %1. Installera den manuellt. - - + + Invalid password Ogiltigt lösenord - + Filter torrents... Filtrera torrenter... - + Filter by: Filtrera efter: - + The password must be at least 3 characters long Lösenordet måste vara minst 3 tecken långt - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrenten "%1" innehåller .torrent-filer, vill du fortsätta med deras hämtning? - - - + The password is invalid Lösenordet är ogiltigt - + DL speed: %1 e.g: Download speed: 10 KiB/s Hämtning: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Sändninghastighet: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [N: %1/s, U: %2/s] qBittorrent %3 - - - + Hide Dölj - + Exiting qBittorrent Avslutar qBittorrent - + Open Torrent Files Öppna torrentfiler - + Torrent Files Torrentfiler @@ -4199,133 +4420,133 @@ Installera den manuellt. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O-fel: %1 - + The file size (%1) exceeds the download limit (%2) Filstorleken (%1) överskrider hämtningsgränsen (%2) - + Exceeded max redirections (%1) Överskridit tillåtna omdirigeringar (%1) - + Redirected to magnet URI - Omdirigeras till magnet-URI. + Omdirigerad till magnet-URI - + The remote host name was not found (invalid hostname) Fjärrvärdens namn hittades inte (ogiltigt värdnamn) - + The operation was canceled Operationen avbröts - + The remote server closed the connection prematurely, before the entire reply was received and processed Fjärrservern stängde anslutningen för tidigt innan hela svaret mottogs och behandlades - + The connection to the remote server timed out Anslutningen till fjärrservern översteg tidsgränsen - + SSL/TLS handshake failed SSL/TLS-handskakning misslyckades - + The remote server refused the connection Fjärrservern nekade anslutningen - + The connection to the proxy server was refused Anslutningen till proxyservern nekades - + The proxy server closed the connection prematurely Proxyservern stängde anslutningen i förtid - + The proxy host name was not found Proxyserverns värdnamn hittades inte - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Anslutningen till proxyservern översteg tidsgränsen eller så svarade inte proxyservern i tid på den skickade förfrågan - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxyservern kräver autentisering för att hedra begäran men accepterade inte några referenser som erbjuds - + The access to the remote content was denied (401) Åtkomsten till fjärrinnehållet nekades (401) - + The operation requested on the remote content is not permitted Åtgärden som begärdes på fjärrinnehållet är inte tillåten - + The remote content was not found at the server (404) Fjärrinnehållet hittades inte på servern (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Fjärrservern kräver autentisering för att servera innehållet men angivna inloggningsuppgifter accepterades inte - + The Network Access API cannot honor the request because the protocol is not known API för nätverksåtkomst kan inte behandla begäran därför att protokollet inte är känt - + The requested operation is invalid for this protocol Den begärda åtgärden är ogiltig för detta protokoll - + An unknown network-related error was detected Ett okänt nätverksrelaterat fel upptäcktes - + An unknown proxy-related error was detected Ett okänt proxyrelaterat fel upptäcktes - + An unknown error related to the remote content was detected Ett okänt fel relaterat till fjärrinnehållet upptäcktes - + A breakdown in protocol was detected Ett haveri i protokollet upptäcktes - + Unknown error Okänt fel @@ -4333,7 +4554,12 @@ Installera den manuellt. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ignorera SSL-fel, URL: "%1", fel: "%2" @@ -5705,294 +5931,307 @@ Installera den manuellt. BitTorrent - + RSS RSS - Web UI - Webbgränssnitt + Webbgränssnitt - + Advanced Avancerat - + Customize UI Theme... Anpassa användargränssnittstema... - + Transfer List Överföringslista - + Confirm when deleting torrents Bekräfta borttagning av torrenter - Shows a confirmation dialog upon pausing/resuming all the torrents - Visar en bekräftelsedialogruta när du pausar/återupptar alla torrenter + Visar en bekräftelsedialogruta när du pausar/återupptar alla torrenter - Confirm "Pause/Resume all" actions - Bekräfta "Pausa/Återuppta alla" åtgärder + Bekräfta "Pausa/Återuppta alla" åtgärder - + Use alternating row colors In table elements, every other row will have a grey background. Använd alternerande radfärger - + Hide zero and infinity values Dölj noll- och oändliga värden - + Always Alltid - Paused torrents only - Endast pausade torrenter + Endast pausade torrenter - + Action on double-click Åtgärd vid dubbelklick - + Downloading torrents: Hämtar torrenter: - - Start / Stop Torrent - Starta/stoppa torrent + Starta/stoppa torrent - - + + Open destination folder Öppna destinationsmapp - - + + No action Ingen åtgärd - + Completed torrents: Slutförda torrenter: - + Auto hide zero status filters Dölj nollstatusfilter automatiskt - + Desktop Skrivbord - + Start qBittorrent on Windows start up - Starta qBittorrent vid Windows start + Starta qBittorrent vid Windows-uppstart - + Show splash screen on start up - Visa startruta vid start + Visa startruta vid uppstart - + Confirmation on exit when torrents are active Bekräftelse vid avslutning när torrenter är aktiva - + Confirmation on auto-exit when downloads finish Bekräftelse vid automatisk avslutning när hämtningar slutförs - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>För att ställa in qBittorrent som standardprogram för .torrent-filer och/eller magnetlänkar<br/>kan du använda dialogrutan <span style=" font-weight:600;">Standardprogram</span> från <span style=" font-weight:600;">kontrollpanelen</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Layout för torrentinnehåll: - + Original Original - + Create subfolder Skapa undermapp - + Don't create subfolder Skapa inte undermapp - + The torrent will be added to the top of the download queue Torrenten kommer att läggas till överst i hämtningsslistan - + Add to top of queue The torrent will be added to the top of the download queue Lägg till överst i kön - + When duplicate torrent is being added När duplicerad torrent läggs till - + Merge trackers to existing torrent - Slå ihop spårare till befintlig torrent + Slå samman spårare till befintlig torrent + + + + Keep unselected files in ".unwanted" folder + Behåll omarkerade filer i mappen ".unwanted" - + Add... Lägg till... - + Options.. - Alternativ... + Alternativ.. - + Remove Ta bort - + Email notification &upon download completion E-postmeddelande &efter slutförd hämtning - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Jämlikeanslutningsprotokoll: - + Any Vilket som helst - + I2P (experimental) I2P (experimentell) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Om &quot;blandat läge&quot; är aktiverat kan I2P-torrenter också hämta jämlikar från andra källor än spåraren och ansluta till vanliga IP-adresser, utan att ge någon anonymisering. Detta kan vara användbart om användaren inte är intresserad av anonymisering av I2P, men ändå vill kunna ansluta till I2P-användare.</p></body></html> + <html><head/><body><p>Om &quot;blandat läge&quot; är aktiverat kan I2P-torrenter också hämta jämlikar från andra källor än spåraren och ansluta till vanliga IP-adresser, utan att ge någon anonymisering. Detta kan vara användbart om användaren inte är intresserad av anonymisering av I2P, men ändå vill kunna ansluta till I2P-användare.</p></body></html> - + Mixed mode Blandat läge - + Some options are incompatible with the chosen proxy type! Vissa alternativ är inkompatibla med den valda proxytypen! - + If checked, hostname lookups are done via the proxy - Vid aktivering, görs värdnamnsuppslag via proxy. + Vid aktivering, görs värdnamnsuppslag via proxy - + Perform hostname lookup via proxy Utför värdnamnsuppslagning via proxy - + Use proxy for BitTorrent purposes Använd proxy för BitTorrent-ändamål - + RSS feeds will use proxy RSS-flöden kommer att använda proxy - + Use proxy for RSS purposes Använd proxy för RSS-ändamål - + Search engine, software updates or anything else will use proxy Sökmotor, programuppdateringar eller något annat kommer att använda proxy - + Use proxy for general purposes Använd proxy för allmänna ändamål - + IP Fi&ltering IP-fi&ltrering - + Schedule &the use of alternative rate limits Schemalägg &användning av alternativa hastighetsgränser - + From: From start time Från: - + To: To end time Till: - + Find peers on the DHT network Hitta jämlikar på DHT-nätverket - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Kräv kryptering: Anslut endast till jämlikar med protokollkryptering Inaktivera kryptering: Anslut endast till jämlikar utan protokollkryptering - + Allow encryption Tillåt kryptering - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Mer information</a>) - + Maximum active checking torrents: Högst antal aktiva kontrollerande torrenter: - + &Torrent Queueing &Torrentkö - + When total seeding time reaches När totala distributionstiden når - + When inactive seeding time reaches När inaktiva distributionstiden når - A&utomatically add these trackers to new downloads: - Lägg a&utomatiskt till de här spårarna till nya hämtningar: + Lägg a&utomatiskt till de här spårarna till nya hämtningar: - + RSS Reader RSS-läsare - + Enable fetching RSS feeds Aktivera hämtning av RSS-flöden - + Feeds refresh interval: Uppdateringsintervall för flöden: - + + Same host request delay: + Samma fördröjning av värdbegäran: + + + Maximum number of articles per feed: Högst antal artiklar per flöde: - - - + + + min minutes min - + Seeding Limits Distributionsgränser - - Pause torrent - Pausa torrent + Pause torrent + Pausa torrent + + + + Remove torrent + Ta bort torrent + + + + Remove torrent and its files + Ta bort torrent och dess filer + + + + Enable super seeding for torrent + Aktivera superdistribution för torrent + + + + When ratio reaches + När kvoten når + + + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + - - Remove torrent - Ta bort torrent + + Search UI + - - Remove torrent and its files - Ta bort torrent och dess filer + + Store opened tabs + - - Enable super seeding for torrent - Aktivera superdistribution för torrent + + Also store search results + - - When ratio reaches - När kvoten når + + History length + - + RSS Torrent Auto Downloader Automatisk RSS-torrenthämtare - + Enable auto downloading of RSS torrents Aktivera automatisk hämtning av RSS-torrenter - + Edit auto downloading rules... Redigera regler för automatisk hämtning... - + RSS Smart Episode Filter Smart RSS-avsnittsfilter - + Download REPACK/PROPER episodes Hämta REPACK-/PROPER-avsnitt - + Filters: Filter: - + Web User Interface (Remote control) Webbgränssnittet (fjärrstyrning) - + IP address: IP-adress: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Ange en IPv4- eller IPv6-adress. Du kan ange "0.0.0.0" för någon IPv "::" för alla IPv6-adresser, eller "*" för både IPv4 och IPv6. - + Ban client after consecutive failures: Förbud mot klient efter påföljande misslyckanden: - + Never Aldrig - + ban for: förbud för: - + Session timeout: Sessionen löpte ut: - + Disabled Inaktiverad - Enable cookie Secure flag (requires HTTPS) - Aktivera säker flagga för kakor (kräver HTTPS) + Aktivera säker flagga för kakor (kräver HTTPS) - + Server domains: Serverdomäner: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ domännamn som används av servern för webbanvändargränssnittet. Använd ";" för att dela upp i flera poster. Du kan använda jokertecknet "*". - + &Use HTTPS instead of HTTP &Använd HTTPS istället för HTTP - + Bypass authentication for clients on localhost Kringgå autentisering för klienter på localhost - + Bypass authentication for clients in whitelisted IP subnets Kringgå autentisering för klienter i vitlistade IP-undernät - + IP subnet whitelist... IP-delnätvitlista... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Ange omvänd proxy-IP:er (eller undernät, t.ex. 0.0.0.0/24) för att använda vidarebefordrad klientadress (X-Forwarded-For header). Använd ';' för att dela upp flera poster. - + Upda&te my dynamic domain name Uppda&tera mitt dynamiska domännamn - + Minimize qBittorrent to notification area Minimera qBittorrent till aviseringsområdet - + + Search + Sök + + + + WebUI + + + + Interface Gränssnitt - + Language: Språk: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Stil för aktivitetsikon: - - + + Normal Normal - + File association Filassociation - + Use qBittorrent for .torrent files Använd qBittorrent för .torrent-filer - + Use qBittorrent for magnet links Använd qBittorrent för magnetlänkar - + Check for program updates Sök efter programuppdateringar - + Power Management Energihantering - + + &Log Files + + + + Save path: Sparsökväg: - + Backup the log file after: Säkerhetskopiera loggfilen efter: - + Delete backup logs older than: Ta bort säkerhetskopieringsloggar äldre än: - + + Show external IP in status bar + + + + When adding a torrent När en torrent läggs till - + Bring torrent dialog to the front Flytta torrentdialogrutan längst fram - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Ta också bort .torrentfiler vars tillägg avbröts - + Also when addition is cancelled Även när tilläggning avbryts - + Warning! Data loss possible! Varning! Dataförlust möjlig! - + Saving Management Spara hantering - + Default Torrent Management Mode: Standard torrenthanteringsläge: - + Manual Manuell - + Automatic Automatisk - + When Torrent Category changed: När torrentkategorin ändras: - + Relocate torrent Flytta torrent - + Switch torrent to Manual Mode Växla torrent till manuellt läge - - + + Relocate affected torrents Flytta påverkade torrenter - - + + Switch affected torrents to Manual Mode Växla påverkade torrenter till manuellt läge - + Use Subcategories Använd underkategorier - + Default Save Path: Standard sparsökväg: - + Copy .torrent files to: Kopiera .torrent-filer till: - + Show &qBittorrent in notification area Visa &qBittorrent i aviseringsområdet - &Log file - &Loggfil + &Loggfil - + Display &torrent content and some options Visa &torrentinnehåll och några alternativ - + De&lete .torrent files afterwards T&a bort .torrent-filer efteråt - + Copy .torrent files for finished downloads to: Kopiera .torrent-filer för slutförda hämtningar till: - + Pre-allocate disk space for all files Förallokera diskutrymme för alla filer - + Use custom UI Theme Använd anpassat användargränssnittstema - + UI Theme file: Temafil för användargränssnitt: - + Changing Interface settings requires application restart Ändring av gränssnittsinställningar kräver omstart av programmet - + Shows a confirmation dialog upon torrent deletion Visar en bekräftelsedialogruta när du tar bort torrenter - - + + Preview file, otherwise open destination folder Förhandsgranska fil, annars öppna destinationsmapp - - Show torrent options - Visa torrentalternativ + Visa torrentalternativ - + Shows a confirmation dialog when exiting with active torrents Visar en bekräftelsedialogruta när du avslutar med aktiva torrenter - + When minimizing, the main window is closed and must be reopened from the systray icon Vid minimering stängs huvudfönstret och måste öppnas igen från systray-ikonen - + The systray icon will still be visible when closing the main window Systray-ikonen kommer fortfarande att vara synlig huvudfönstret stängs - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Stäng qBittorrent till aviseringsområdet - + Monochrome (for dark theme) Monokrom (för mörkt tema) - + Monochrome (for light theme) Monokrom (för ljust tema) - + Inhibit system sleep when torrents are downloading Förhindra att systemet försätts i vänteläge medan torrenter hämtas - + Inhibit system sleep when torrents are seeding Förhindra att systemet försätts i vänteläge medan torrenter distribuerar - + Creates an additional log file after the log file reaches the specified file size Skapar en extra loggfil efter att loggfilen når den angivna filstorleken - + days Delete backup logs older than 10 days dagar - + months Delete backup logs older than 10 months månader - + years Delete backup logs older than 10 years år - + Log performance warnings Logga prestandavarningar - The torrent will be added to download list in a paused state - Torrenten kommer att läggas till i hämtningslistan i ett pausat tillstånd + Torrenten kommer att läggas till i hämtningslistan i ett pausat tillstånd - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Starta inte hämtningen automatiskt - + Whether the .torrent file should be deleted after adding it Om .torrent-filen ska tas bort efter att den lagts till - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Allokera fullständiga filstorlekar på disken innan hämtningar startas för att minimera fragmentering. Endast användbart för hårddiskar. - + Append .!qB extension to incomplete files Lägg till ändelsen .!qB till ofullständiga filer - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it När en torrent hämtas, erbjud att lägga till torrenter från alla .torrent-filer som finns inuti den - + Enable recursive download dialog Aktivera rekursiv hämtningsdialogruta - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Automatisk: Olika torrentegenskaper (t.ex. sparsökväg) kommer att avgöras av den tillhörande kategorin Manuell: Olika torrentegenskaper (t.ex. sparsökväg) måste tilldelas manuellt - + When Default Save/Incomplete Path changed: När standard spara/ofullständig sökväg ändrades: - + When Category Save Path changed: När kategorisparsningssökvägen ändras: - + Use Category paths in Manual Mode Använd kategorisökvägar i manuellt läge - + Resolve relative Save Path against appropriate Category path instead of Default one Lös relativ sparsökväg mot lämplig kategorisökväg istället för standardsökväg - + Use icons from system theme Använd ikoner från systemtemat - + Window state on start up: Fönsterstatus vid uppstart: - + qBittorrent window state on start up - qBittorrents fönsterstatus vid uppstart + qBittorrent-fönsterstatus vid uppstart - + Torrent stop condition: Torrentstoppvillkor: - - + + None Inget - - + + Metadata received Metadata mottagna - - + + Files checked Filer kontrollerade - + Ask for merging trackers when torrent is being added manually Be om att slå samman spårare när torrent läggs till manuellt - + Use another path for incomplete torrents: Använd en annan sökväg för ofullständiga torrenter: - + Automatically add torrents from: Lägg automatiskt till torrenter från: - + Excluded file names Exkluderade filnamn - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: filtrera exakt filnamn. readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' men inte 'readme10.txt'. - + Receiver Mottagare - + To: To receiver Till: - + SMTP server: SMTP-server: - + Sender Sändare - + From: From sender Från: - + This server requires a secure connection (SSL) Den här servern kräver en säker anslutning (SSL) - - + + Authentication Autentisering - - - - + + + + Username: Användarnamn: - - - - + + + + Password: Lösenord: - + Run external program Kör externt program - Run on torrent added - Kör när torrent läggs till + Kör när torrent läggs till - Run on torrent finished - Kör när torrent slutförs + Kör när torrent slutförs - + Show console window Visa konsolfönster - + TCP and μTP TCP och μTP - + Listening Port Lyssningsport - + Port used for incoming connections: Port som används för inkommande anslutningar: - + Set to 0 to let your system pick an unused port Ställ in på 0 för att låta ditt system välja en oanvänd port - + Random Slumpmässig - + Use UPnP / NAT-PMP port forwarding from my router Använd UPnP / NAT-PMP-portomdirigering från min router - + Connections Limits Anslutningsgränser - + Maximum number of connections per torrent: Högst antal anslutningar per torrent: - + Global maximum number of connections: Högst antal anslutningar globalt: - + Maximum number of upload slots per torrent: Högst antal sändningsplatser per torrent: - + Global maximum number of upload slots: Högst antal sändningsplatser globalt: - + Proxy Server Proxyserver - + Type: Typ: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Värd: - - - + + + Port: Port: - + Otherwise, the proxy server is only used for tracker connections Annars används proxyservern endast för spåraranslutningar - + Use proxy for peer connections Använd proxy för jämlikeanslutningar - + A&uthentication A&utentisering - + Info: The password is saved unencrypted Info: Lösenordet sparas okrypterat - + Filter path (.dat, .p2p, .p2b): Filtersökväg (.dat, .p2p, .p2b): - + Reload the filter - Uppdatera filtret + Ladda om filtret - + Manually banned IP addresses... Manuellt förbjudna IP-adresser... - + Apply to trackers Tillämpa på spårare - + Global Rate Limits Globala hastighetsgränser - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Sändning: - - + + Download: Hämtning: - + Alternative Rate Limits Alternativa hastighetsgränser - + Start time Starttid - + End time Sluttid - + When: När: - + Every day Varje dag - + Weekdays Vardagar - + Weekends Helger - + Rate Limits Settings Inställningar för hastighetsgränser - + Apply rate limit to peers on LAN Tillämpa hastighetsgräns för LAN-jämlikar - + Apply rate limit to transport overhead Tillämpa hastighetsgräns för transportoverhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Tillämpa hastighetsgräns för µTP-protokoll - + Privacy Integritet - + Enable DHT (decentralized network) to find more peers Aktivera DHT (decentraliserat nätverk) för att hitta fler jämlikar - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Utbyta jämlikar med kompatibla BitTorrent-klienter (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Aktivera jämlikeutbyte (PeX) för att hitta fler jämlikar - + Look for peers on your local network Leta efter jämlikar på ditt lokala nätverk - + Enable Local Peer Discovery to find more peers Aktivera upptäckt av lokala jämlikar för att hitta fler jämlikar - + Encryption mode: Krypteringsläge: - + Require encryption Kräv kryptering - + Disable encryption Inaktivera kryptering - + Enable when using a proxy or a VPN connection Aktivera när en proxy eller VPN-anslutning används - + Enable anonymous mode Aktivera anonymt läge - + Maximum active downloads: Högst antal aktiva hämtningar: - + Maximum active uploads: Högst antal aktiva sändningar: - + Maximum active torrents: Högst antal aktiva torrenter: - + Do not count slow torrents in these limits Räkna inte långsamma torrenter med de här gränserna - + Upload rate threshold: Sändningshastighetsgräns: - + Download rate threshold: Hämtningshastighetsgräns: - - - + + + + sec seconds - sek + sek - + Torrent inactivity timer: Torrentinaktivitetstidtagare: - + then därefter - + Use UPnP / NAT-PMP to forward the port from my router Använd UPnP / NAT-PMP för att vidarebefordra porten från min router - + Certificate: Certifikat: - + Key: Nyckel: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information om certifikat</a> - + Change current password Ändra nuvarande lösenord - Use alternative Web UI - Använd alternativt webbgränssnitt + Använd alternativt webbgränssnitt - + Files location: Filplats: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Säkerhet - + Enable clickjacking protection Aktivera skydd för clickjacking - + Enable Cross-Site Request Forgery (CSRF) protection Aktivera skydd mot förfalskning av förfrågningar mellan webbplatser (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Aktivera validering av värdrubrik - + Add custom HTTP headers Lägg till anpassade HTTP-rubriker - + Header: value pairs, one per line Rubrik: värdepar, en per rad - + Enable reverse proxy support Aktivera support för omvänd proxy - + Trusted proxies list: Lista över betrodda proxyer: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Tjänst: - + Register Registrera - + Domain name: Domännamn: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Genom att aktivera de här alternativen kan du <strong>oåterkalleligt förlora</strong> dina .torrent-filer! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Om du aktiverar det andra alternativet (&ldquo;även när tillägg avbryts&rdquo;) .torrentfilen <strong>tas bort</strong> även om du trycker på &ldquo;<strong>Avbryt</strong>&rdquo; i &ldquo;Lägg till torrent&rdquo;-dialogrutan - + Select qBittorrent UI Theme file Välj qBittorrent-temafil för användargränssnitt - + Choose Alternative UI files location Välj alternativ plats för användargränssnitts filer - + Supported parameters (case sensitive): Parametrar som stöds (skiftlägeskänslig): - + Minimized Minimerad - + Hidden Dold - + Disabled due to failed to detect system tray presence Inaktiverat på grund av att det inte gick att detektera närvaro i systemfältet - + No stop condition is set. Inga stoppvillkor angivna. - + Torrent will stop after metadata is received. Torrent stoppas efter att metadata har tagits emot. - - Torrents that have metadata initially aren't affected. - Torrent som har metadata initialt påverkas inte. - - - + Torrent will stop after files are initially checked. Torrent stoppas efter att filer har kontrollerats initialt. - + This will also download metadata if it wasn't there initially. Detta kommer också att hämta metadata om det inte var där initialt. - + %N: Torrent name %N: Torrentnamn - + %L: Category %L: Kategori - + %F: Content path (same as root path for multifile torrent) %F: Innehållssökväg (samma som root-sökväg för flerfilig torrent) - + %R: Root path (first torrent subdirectory path) %R: Root-sökväg (första torrentundermappsökväg) - + %D: Save path %D: Sparsökväg - + %C: Number of files %C: Antal filer - + %Z: Torrent size (bytes) %Z: Torrentstorlek (byte) - + %T: Current tracker %T: Aktuell spårare - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Tips: Inkapsla parametern med citattecken för att undvika att text skärs av vid blanktecknet (t. ex. "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Ingen) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds En torrent kommer att anses långsam om dess hämtnings- och sändningshastigheter stannar under de här värdena för "torrentinaktivitetstidtagare" sekunder - + Certificate Certifikat - + Select certificate Välj certifikat - + Private key Privat nyckel - + Select private key Välj privat nyckel - + + WebUI configuration failed. Reason: %1 + Konfigurationen för webbanvändargränssnittet misslyckades. Orsak: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Välj mapp för övervakning - + Adding entry failed Det gick inte att lägga till post - - Location Error - Platsfel + + The WebUI username must be at least 3 characters long. + Användarnamnet för webbanvändargränssnittet måste vara minst 3 tecken långt. + + + + The WebUI password must be at least 6 characters long. + Lösenordet för webbanvändargränssnittet måste vara minst 6 tecken långt. - - The alternative Web UI files location cannot be blank. - Platsen för alternativa webbgränssnittsfiler kan inte vara tom. + + Location Error + Platsfel - - + + Choose export directory Välj exportmapp - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well När de här alternativen är aktiverade kommer qBittorrent att <strong>ta bort</strong> .torrent-filer efter att de var (det första alternativet) eller inte (det andra alternativet) tillagda till sin hämtningskö. Detta kommer att tillämpas <strong>inte endast</strong> på de filer som öppnas via &ldquo;Lägg till torrent&rdquo;-menyåtgärden men på de som öppnas via <strong>filtypsassociering</strong> också - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent-temafil för användargränssnitt (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Taggar (separerade med kommatecken) - + %I: Info hash v1 (or '-' if unavailable) - %I: Infohash v1 (eller "-" om otillgänglig) + %I: Info-hash v1 (eller "-" om otillgänglig) - + %J: Info hash v2 (or '-' if unavailable) - %J: Infohash v2 (eller "-" om otillgänglig) + %J: Info-hash v2 (eller "-" om otillgänglig) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - %K: Torrent-ID (antingen sha-1 infohash för v1-torrent eller avkortad sha-256 infohash för v2/hybridtorrent) + %K: Torrent-ID (antingen sha-1 info-hash för v1-torrent eller avkortad sha-256 info-hash för v2/hybridtorrent) - - - + + + Choose a save directory Välj en sparmapp - + + Torrents that have metadata initially will be added as stopped. + Torrenter som har metadata initialt kommer att läggas till som stoppade. + + + Choose an IP filter file Välj en IP-filterfil - + All supported filters Alla stödda filter - + + The alternative WebUI files location cannot be blank. + Den alternativa platsen för webbanvändargränssnittsfiler får inte vara tom. + + + Parsing error Tolkningsfel - + Failed to parse the provided IP filter Det gick inte att analysera det medföljande IP-filtret - + Successfully refreshed Uppdaterad - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Tolkade det angivna IP-filtret: %1-reglerna tillämpades. - + Preferences Inställningar - + Time Error Tidsfel - + The start time and the end time can't be the same. Starttiden och sluttiden kan inte vara densamma. - - + + Length Error Längdfel - - - The Web UI username must be at least 3 characters long. - Webbanvändarnamnet måste vara minst 3 tecken långt. - - - - The Web UI password must be at least 6 characters long. - Webbanvändarlösenordet måste vara minst 6 tecken långt. - PeerInfo - + Unknown Okänd - + Interested (local) and choked (peer) Intresserad (lokal) och strypt (jämlike) - + Interested (local) and unchoked (peer) Intresserad (lokal) och ostrypt (jämlike) - + Interested (peer) and choked (local) Intresserad (jämlike) och strypt (lokal) - + Interested (peer) and unchoked (local) Intresserad (jämlike) och ostrypt (lokal) - + Not interested (local) and unchoked (peer) Inte intresserad (lokal) och ostrypt (jämlike) - + Not interested (peer) and unchoked (local) Inte intresserad (jämlike) och ostrypt (lokal) - + Optimistic unchoke Optimistisk avstrypning - + Peer snubbed Jämlike nappade - + Incoming connection - inkommande anslutning + Inkommande anslutning - + Peer from DHT Jämlike från DHT - + Peer from PEX Jämlike från PEX - + Peer from LSD Jämlike från LSD - + Encrypted traffic Krypterad trafik - + Encrypted handshake Krypterad handskakning + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' men int Jämliken "%1 " är manuellt förbjuden - + N/A Ingen @@ -7668,7 +8080,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' men int Lista över jämlikar att lägga till (en IP per rad): - + Format: IPv4:port / [IPv6]:port Format: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' men int PiecesBar - + Files in this piece: Filer i denna del: - + File in this piece: Fil i denna del: - + File in these pieces: Fil i dessa delar: - + Wait until metadata become available to see detailed information Vänta tills metadata blir tillgängliga för att se detaljerad information - + Hold Shift key for detailed information Håll skifttangenten för detaljerad information @@ -7742,58 +8154,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' men int Sökinsticksmoduler - + Installed search plugins: Installerade sökinsticksmoduler: - + Name Namn - + Version Version - + Url URL - - + + Enabled Aktiverad - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Varning: Var noga med att följa ditt lands upphovsrättslagar när du hämtar torrenter från någon av de här sökmotorerna. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Du kan skaffa nya sökmotorsinsticksmoduler här: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Installera en ny - + Check for updates Sök efter uppdateringar - + Close Stäng - + Uninstall Avinstallera @@ -7913,17 +8325,17 @@ De här insticksmodulerna inaktiverades. Inskticksmodulens källa - + Search plugin source: Sökinsticksmodulens källa: - + Local file Lokal fil - + Web link Webblänk @@ -7941,70 +8353,70 @@ De här insticksmodulerna inaktiverades. Power management found suitable D-Bus interface. Interface: %1 - + Strömhantering hittade lämpligt D-Bus-gränssnitt. Gränssnitt: %1 Power management error. Did not found suitable D-Bus interface. - + Strömhanteringsfel. Hittade inte lämpligt D-Bus-gränssnitt. Power management error. Action: %1. Error: %2 - + Strömhanteringsfel. Åtgärd: %1. Fel: %2 Power management unexpected error. State: %1. Error: %2 - + Oväntat strömhanteringsfel. Tillstånd: %1. Fel: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Följande filer från torrenten "%1" stöder granskning, välj en av dem: - + Preview Förhandsvisning - + Name Namn - + Size Storlek - + Progress Förlopp - + Preview impossible Förhandsgranskning omöjlig - + Sorry, we can't preview this file: "%1". Tyvärr kan vi inte förhandsgranska den här filen: "%1". - + Resize columns Ändra storlek på kolumner - + Resize all non-hidden columns to the size of their contents Ändra storlek på alla icke-dolda kolumner till storleken på deras innehåll @@ -8017,27 +8429,27 @@ De här insticksmodulerna inaktiverades. Private::FileLineEdit - + Path does not exist Sökvägen finns inte - + Path does not point to a directory Sökvägen pekar inte på en mapp - + Path does not point to a file Sökvägen pekar inte på en fil - + Don't have read permission to path Har inte läsbehörighet till sökväg - + Don't have write permission to path Har inte skrivbehörighet till sökväg @@ -8078,12 +8490,12 @@ De här insticksmodulerna inaktiverades. PropertiesWidget - + Downloaded: Hämtat: - + Availability: Tillgängligt: @@ -8098,53 +8510,53 @@ De här insticksmodulerna inaktiverades. Överföring - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Tid aktiv: - + ETA: Slutförs: - + Uploaded: Skickat: - + Seeds: Distributioner: - + Download Speed: Hämtningshastighet: - + Upload Speed: Sändningshastighet: - + Peers: Jämlikar: - + Download Limit: Hämtningsgräns: - + Upload Limit: Sändningsgräns: - + Wasted: Spill: @@ -8154,193 +8566,249 @@ De här insticksmodulerna inaktiverades. Anslutningar: - + Information Information - + Info Hash v1: - Infohash v1: + Info-hash v1: - + Info Hash v2: - Infohash v2: + Info-hash v2: - + Comment: Kommentar: - + Select All Markera alla - + Select None Markera ingen - + Share Ratio: Delningskvot: - + Reannounce In: - Annonseras igen: + Omannonseras: - + Last Seen Complete: Senast sedd fullständig: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Total storlek: - + Pieces: Delar: - + Created By: Skapades av: - + Added On: Tillagd: - + Completed On: Slutfördes: - + Created On: Skapades: - + + Private: + + + + Save Path: Sparsökväg: - + Never Aldrig - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (har %3) - - + + %1 (%2 this session) %1 (%2 denna session) - - + + + N/A Ingen - + + Yes + Ja + + + + No + Nej + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (distribuerad i %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (%2 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 totalt) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 genomsnitt) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Ny webbdistribution + Ny webbdistribution - Remove Web seed - Ta bort webbdistribution + Ta bort webbdistribution - Copy Web seed URL - Kopiera URL för webbdistribution + Kopiera URL för webbdistribution - Edit Web seed URL - Ändra URL för webbdistribution + Ändra URL för webbdistribution - + Filter files... Filtrera filer... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Hastighetsdiagram är inaktiverade - + You can enable it in Advanced Options Du kan aktivera det i Avancerade alternativ - New URL seed New HTTP source - Ny URL-distribution + Ny URL-distribution - New URL seed: - Ny URL-distribution: + Ny URL-distribution: - - This URL seed is already in the list. - Den här URL-distributionen finns redan i listan. + Den här URL-distributionen finns redan i listan. - + Web seed editing Redigering av webbdistribution - + Web seed URL: URL för webbdistribution: @@ -8359,22 +8827,22 @@ De här insticksmodulerna inaktiverades. Det gick inte att spara RSS AutoDownloader-data i %1. Fel: %2 - + Invalid data format Ogiltigt dataformat - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS-artikeln '%1' accepteras av regeln '%2'. Försöker lägga till torrent... - + Failed to read RSS AutoDownloader rules. %1 Det gick inte att läsa in regler för RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Det gick inte att läsa in regler för RSS Auto Downloader. Orsak: %1 @@ -8382,22 +8850,22 @@ De här insticksmodulerna inaktiverades. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Det gick inte att hämta RSS-flöde i "%1". Orsak: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-flöde vid "%1" uppdaterad. Inkom %2 nya artiklar. - + Failed to parse RSS feed at '%1'. Reason: %2 Det gick inte att analysera RSS-flöde vid "%1". Orsak: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS-flöde vid "%1" hämtades. Börjar analysera det. @@ -8433,12 +8901,12 @@ De här insticksmodulerna inaktiverades. RSS::Private::Parser - + Invalid RSS feed. Ogiltigt RSS-flöde. - + %1 (line: %2, column: %3, offset: %4). %1 (rad: %2, kolumn: %3, offset: %4). @@ -8446,99 +8914,99 @@ De här insticksmodulerna inaktiverades. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Det gick inte att spara RSS-sessionskonfigurationen. Fil: "%1". Fel: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Det gick inte att spara RSS-sessionsdata. Fil: "%1". Fel: "%2" - - + + RSS feed with given URL already exists: %1. RSS-flöde med given URL finns redan: %1. - + Feed doesn't exist: %1. Flödet finns inte: %1. - + Cannot move root folder. Det går inte att flytta root-mapp. - - + + Item doesn't exist: %1. Artikeln existerar inte: %1. - + Couldn't move folder into itself. Kunde inte flytta mappen in i sig själv. - + Cannot delete root folder. Kan inte ta bort root-mapp. - + Failed to read RSS session data. %1 Det gick inte att läsa RSS-sessionsdata. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Det gick inte att analysera RSS-sessionsdata. Fil: "%1". Fel: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Det gick inte att läsa in RSS-sessionsdata. Fil: "%1". Fel: "Ogiltigt dataformat." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Det gick inte att läsa in RSS-flödet. Flöde: "%1". Orsak: URL krävs. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Det gick inte att läsa in RSS-flödet. Flöde: "%1". Orsak: UID är ogiltigt. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Dubblett RSS-flöde hittades. UID: "%1". Fel: Konfigurationen verkar vara skadad. - + Couldn't load RSS item. Item: "%1". Invalid data format. Det gick inte att läsa in RSS-objektet. Objekt: "%1". Ogiltigt dataformat. - + Corrupted RSS list, not loading it. Korrupt RSS-lista, läser inte in den. - + Incorrect RSS Item path: %1. Felaktig sökväg för RSS-objekt: %1. - + RSS item with given path already exists: %1. RSS-objekt med given sökväg finns redan: %1. - + Parent folder doesn't exist: %1. Den överordnade mappen finns inte: %1. @@ -8562,8 +9030,8 @@ De här insticksmodulerna inaktiverades. - - + + Mark items read Markera som läst @@ -8588,132 +9056,132 @@ De här insticksmodulerna inaktiverades. Torrenter: (dubbelklicka för att hämta) - - + + Delete Ta bort - + Rename... Byt namn... - + Rename Byt namn - - + + Update Uppdatera - + New subscription... Ny prenumeration... - - + + Update all feeds Uppdatera alla flöden - + Download torrent Hämta torrent - + Open news URL Öppna nyhets-URL - + Copy feed URL Kopiera flödets URL - + New folder... Ny mapp... - + Edit feed URL... Redigera flödes-URL... - + Edit feed URL Redigera flödes-URL - + Please choose a folder name Välj ett mappnamn - + Folder name: Mappnamn: - + New folder Ny mapp - - + + Please type a RSS feed URL Skriv URL för ett RSS-flöde - - + + Feed URL: Flödets URL: - + Deletion confirmation Bekräftelse på borttagning - + Are you sure you want to delete the selected RSS feeds? Är du säker på att du vill ta bort de valda RSS-flödena? - + Please choose a new name for this RSS feed Välj ett nytt namn för detta RSS-flöde - + New feed name: Nytt namn på flöde: - + Rename failed Det gick inte att byta namn - + Date: - Datum: + Datum: - + Feed: - + Flöde: - + Author: Upphovsman: @@ -8721,38 +9189,38 @@ De här insticksmodulerna inaktiverades. SearchController - + Python must be installed to use the Search Engine. Python måste installeras för att använda sökmotorn. - + Unable to create more than %1 concurrent searches. Det gick inte att skapa fler än %1 samtidiga sökningar. - - + + Offset is out of range Förskjutningen är utanför intervallet - + All plugins are already up to date. Alla insticksmoduler är redan uppdaterade. - + Updating %1 plugins Uppdaterar %1 insticksmoduler - + Updating plugin %1 Uppdaterar insticksmodulen %1 - + Failed to check for plugin updates: %1 Det gick inte att söka efter uppdateringar för insticksmodul: %1 @@ -8827,132 +9295,146 @@ De här insticksmodulerna inaktiverades. Storlek: - + Name i.e: file name Namn - + Size i.e: file size Storlek - + Seeders i.e: Number of full sources Distributörer - + Leechers i.e: Number of partial sources Reciprokörer - Search engine - Sökmotor + Sökmotor - + Filter search results... Filtrera sökresultat... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - Reslutat (visar <i>%1</i> av <i>%2</i>): + Resultat (visar <i>%1</i> av <i>%2</i>): - + Torrent names only Endast torrentnamn - + Everywhere Överallt - + Use regular expressions Använd reguljära uttryck - + Open download window Öppna hämtningsfönstret - + Download Hämta - + Open description page Öppna beskrivningssidan - + Copy Kopiera - + Name Namn - + Download link Hämtningslänk - + Description page URL Beskrivningssidans URL - + Searching... Söker... - + Search has finished Sökningen är klar - + Search aborted Sökningen avbruten - + An error occurred during search... Ett fel uppstod under sökningen... - + Search returned no results Sökningen gav inga resultat - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Kolumnens synlighet - + Resize columns Ändra storlek på kolumner - + Resize all non-hidden columns to the size of their contents Ändra storlek på alla icke-dolda kolumner till storleken på deras innehåll @@ -8960,104 +9442,104 @@ De här insticksmodulerna inaktiverades. SearchPluginManager - + Unknown search engine plugin file format. Okänt filformat för sökmotorinsticksmodul. - + Plugin already at version %1, which is greater than %2 Insticksmodule har redan version %1, vilket är större än %2 - + A more recent version of this plugin is already installed. En senare version av den här insticksmodulen är redan installerad. - + Plugin %1 is not supported. Insticksmodulen %1 stöds inte. - - + + Plugin is not supported. Insticksmodul stöds inte. - + Plugin %1 has been successfully updated. Insticksmodulen %1 har uppdaterats. - + All categories Alla kategorier - + Movies Filmer - + TV shows Tv program - + Music Musik - + Games Spel - + Anime Animerat - + Software Mjukvara - + Pictures Bilder - + Books Böcker - + Update server is temporarily unavailable. %1 Uppdateringsserveren är tillfälligt otillgänglig. %1 - - + + Failed to download the plugin file. %1 Det gick inte att hämta insticksmodulsfilen. %1 - + Plugin "%1" is outdated, updating to version %2 Insticksmodulen "%1" är föråldrad, uppdateras till version %2 - + Incorrect update info received for %1 out of %2 plugins. Felaktig uppdateringsinformation mottagen för %1 av %2 insticksmoduler. - + Search plugin '%1' contains invalid version string ('%2') Sökinsticksmodulen "%1" innehåller ogiltig versionssträng ("%2") @@ -9067,114 +9549,153 @@ De här insticksmodulerna inaktiverades. - - - - Search Sök - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Det finns inte några sökinsticksmoduler installerade. Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av fönstret för att installera några. - + Search plugins... Sökinsticksmoduler... - + A phrase to search for. En fras att söka efter. - + Spaces in a search term may be protected by double quotes. Mellanslag i en sökterm kan skyddas av citattecken. - + Example: Search phrase example Exempel: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: sök efter <b>foo bar</b> - + All plugins Alla insticksmoduler - + Only enabled Endast aktiverade - + + + Invalid data format. + Ogiltigt dataformat. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: sök efter <b>foo</b> och <b>bar</b> - + + Refresh + + + + Close tab Stäng flik - + Close all tabs Stäng alla flikar - + Select... Välj... - - - + + Search Engine Sökmotor - + + Please install Python to use the Search Engine. Installera Python för att använda sökmotorn. - + Empty search pattern Tomt sökmönster - + Please type a search pattern first Skriv ett sökmönster först - + + Stop Stoppa - - Search has finished - Sökningen är klar + Search has finished + Sökningen är klar + + + Search has failed + Det gick inte att söka + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - Det gick inte att söka + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av - + Upload: Sändning: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Hämtning: - + Alternative speed limits Alternativa hastighetsgränser @@ -9498,7 +10019,7 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Read cache hits: - Läscache träffar: + Läscache träffar: @@ -9506,32 +10027,32 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Genomsnittlig kötid: - + Connected peers: Anslutna jämlikar: - + All-time share ratio: Alla tiders delningskvot: - + All-time download: Alla tiders hämtning: - + Session waste: Sessionsspill: - + All-time upload: Alla tiders sändning: - + Total buffer size: Total bufferstorlek: @@ -9543,22 +10064,22 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Queued I/O jobs: - Köade in/ut-jobb: + Köade in/ut-jobb: - + Write cache overload: Överbelastad skrivcache: - + Read cache overload: Överbelastad läscache: Total queued size: - Total köstorlek: + Total köstorlek: @@ -9570,51 +10091,67 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av StatusBar - + Connection status: Anslutningsstatus: - - + + No direct connections. This may indicate network configuration problems. Inga direktanslutningar. Detta kan betyda problem med nätverkskonfigurationen. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 noder - + qBittorrent needs to be restarted! qBittorrent behöver startas om! - - - + + + Connection Status: Anslutningsstatus: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Frånkopplad. Detta betyder oftast att qBittorrent inte kunde lyssna på den valda porten för inkommande anslutningar. - + Online Ansluten - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Klicka för att växla till alternativa hastighetsgränser - + Click to switch to regular speed limits Klicka för att växla till vanliga hastighetsgränser @@ -9643,14 +10180,22 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Slutförda (0) - Resumed (0) - Återupptagna (0) + Återupptagna (0) - Paused (0) - Pausade (0) + Pausade (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Completed (%1) Slutförda (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Pausade (%1) + Pausade (%1) @@ -9723,14 +10287,12 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Flyttar (%1) - Resume torrents - Återuppta torrenter + Återuppta torrenter - Pause torrents - Pausa torrenter + Pausa torrenter @@ -9738,9 +10300,8 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av Ta bort torrenter - Resumed (%1) - Återupptagna (%1) + Återupptagna (%1) @@ -9781,17 +10342,17 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av TagFilterModel - + Tags Taggar - + All Alla - + Untagged Utan taggar @@ -9799,52 +10360,64 @@ Klicka på knappen "Sökinsticksmoduler..." längst ner till höger av TagFilterWidget - + Add tag... Lägg till tagg... - + Remove tag Ta bort tagg - + Remove unused tags Ta bort oanvända taggar - Resume torrents - Återuppta torrenter + Återuppta torrenter - Pause torrents - Pausa torrenter + Pausa torrenter - + Remove torrents Ta bort torrenter - New Tag - Ny tagg + Ny tagg + + + + Start torrents + + + + + Stop torrents + - + Tag: Tagg: - + + Add tag + + + + Invalid tag name Ogiltigt taggnamn - + Tag name '%1' is invalid Taggnamnet "%1" är ogiltigt @@ -9984,32 +10557,32 @@ Välj ett annat namn och försök igen. TorrentContentModel - + Name Namn - + Progress Förlopp - + Download Priority Hämtningsprioritet - + Remaining Återstår - + Availability Tillgänglighet - + Total Size Total storlek @@ -10054,102 +10627,120 @@ Välj ett annat namn och försök igen. TorrentContentWidget - + Rename error Fel vid namnändring - + Renaming Byter namn - + New name: Nytt namn: - + Column visibility Kolumnsynlighet - + Resize columns Ändra kolumnstorlek - + Resize all non-hidden columns to the size of their contents Ändra storlek på alla icke dolda kolumner till storleken på dess innehåll - + Open Öppna - + Open containing folder Öppna innehållande mapp - + Rename... Byt namn... - + Priority Prioritet - - + + Do not download Hämta inte - + Normal Normal - + High Hög - + Maximum Högsta - + By shown file order Efter visad filordning - + Normal priority Normal prioritet - + High priority Hög prioritet - + Maximum priority Högsta prioritet - + Priority by shown file order Prioritet efter visad filordning + + TorrentCreatorController + + + Too many active tasks + För många aktiva uppgifter + + + + Torrent creation is still unfinished. + Torrentskapandet är fortfarande ofärdigställt. + + + + Torrent creation failed. + Det gick inte att skapa en torrent. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Välj ett annat namn och försök igen. - + Select file Välj fil - + Select folder Välj mapp @@ -10205,58 +10796,10 @@ Välj ett annat namn och försök igen. Delstorlek: - + Auto Automatisk - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Välj ett annat namn och försök igen. Fält - + You can separate tracker tiers / groups with an empty line. Du kan separera spårarnivåer / grupper med en tom rad. - + Web seed URLs: URL:er för webbdistribution: - + Tracker URLs: URL:er för spårare: - + Comments: Kommentarer: - + Source: Källa: - + Progress: Förlopp: - + Create Torrent Skapa torrent - - + + Torrent creation failed Det gick inte att skapa torrent - + Reason: Path to file/folder is not readable. Orsak: Sökväg till fil/mapp är inte läsbar. - + Select where to save the new torrent Välj var du vill spara den nya torrenten - + Torrent Files (*.torrent) Torrentfiler (*.torrent) - - Reason: %1 - Orsak: %1 - - - + Add torrent to transfer list failed. - + Det gick inte att lägga till torrent till överföringslistan. - + Reason: "%1" - + Orsak: "%1" - + Add torrent failed - + Det gick inte att lägga till torrent - Reason: Created torrent is invalid. It won't be added to download list. - Orsak: Skapad torrent är ogiltig. Den kommer inte att läggas till i hämtningslistan. - - - + Torrent creator Torrent-skaparen - + Torrent created: Torrent skapad: @@ -10396,32 +10930,32 @@ Välj ett annat namn och försök igen. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Det gick inte att läsa in konfigurationen för bevakade mappar. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Det gick inte att analysera konfigurationen för bevakade mappar från %1. Fel: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Det gick inte att läsa in konfigurationen för bevakade mappar från %1. Fel: "Ogiltigt dataformat." - + Couldn't store Watched Folders configuration to %1. Error: %2 Det gick inte att lagra konfigurationen av bevakade mappar till %1. Fel: %2 - + Watched folder Path cannot be empty. Sökvägen till bevakad mapp kan inte vara tom. - + Watched folder Path cannot be relative. Sökvägen till bevakad mapp kan inte vara relativ. @@ -10429,27 +10963,27 @@ Välj ett annat namn och försök igen. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Ogiltig magnet-URI. URI: %1. Orsak: %2 - + Magnet file too big. File: %1 Magnetfilen är för stor. Fil: %1 - + Failed to open magnet file: %1 Det gick inte att öppna magnetfilen: %1 - + Rejecting failed torrent file: %1 Avvisar misslyckad torrentfil: %1 - + Watching folder: "%1" Bevakar mapp: "%1" @@ -10457,14 +10991,12 @@ Välj ett annat namn och försök igen. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Det gick inte att allokera minne vid läsning av filen. Fil: "%1". Fel: "%2" + Det gick inte att allokera minne vid läsning av filen. Fil: "%1". Fel: "%2" - Invalid metadata - Ogiltig metadata + Ogiltig metadata @@ -10495,127 +11027,203 @@ Välj ett annat namn och försök igen. Använd en annan sökväg för ofullständig torrent - + Category: Kategori: - + + Torrent Share Limits + + + Torrent speed limits - Torrenthastighetsgränser + Torrenthastighetsgränser - + Download: Hämtning: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits De här kommer inte att överskrida de globala gränserna - + Upload: Sändning: - Torrent share limits - Torrentdelningsgränser + Torrentdelningsgränser - Use global share limit - Använd global delningsgräns + Använd global delningsgräns - Set no share limit - Ställ inte in delningsgräns + Ställ inte in delningsgräns - Set share limit to - Ställ in delningsgräns till + Ställ in delningsgräns till - ratio - kvot + kvot - total minutes - minuter totalt + minuter totalt - inactive minutes - minuter inaktiv + minuter inaktiv - + Disable DHT for this torrent Inaktivera DHT för denna torrent - + Download in sequential order Hämta i sekventiell ordning - + Disable PeX for this torrent Inaktivera PeX för denna torrent - + Download first and last pieces first Hämta första och sista delarna först - + Disable LSD for this torrent Inaktivera LSD för denna torrent - + Currently used categories För närvarande använda kategorier - - + + Choose save path Välj sparsökväg - + Not applicable to private torrents Gäller inte privata torrenter - No share limit method selected - Inge delningsgränsmetod vald + Inge delningsgränsmetod vald - Please select a limit method first - Välj en gränsmetod först + Välj en gränsmetod först + + + + TorrentShareLimitsWidget + + + + + + Default + Standard + + + + + + Unlimited + Obegränsat + + + + + + Set to + Ställ in på + + + + Seeding time: + Distributionstid: + + + + + + + + + min + minutes + min + + + + Inactive seeding time: + Inaktiv distributionstid: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Ta bort torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Aktivera superdistribution för torrent + + + + Ratio: + Kvot: @@ -10626,32 +11234,36 @@ Välj ett annat namn och försök igen. Torrenttaggar - New Tag - Ny tagg + Ny tagg + Add tag + + + + Tag: Tagg: - + Invalid tag name Ogiltigt taggnamn - + Tag name '%1' is invalid. Taggnamnet "%1" är ogiltigt. - + Tag exists Tagg finns - + Tag name already exists. Taggnamn finns redan. @@ -10659,115 +11271,130 @@ Välj ett annat namn och försök igen. TorrentsController - + Error: '%1' is not a valid torrent file. Fel: "%1" är inte en giltig torrentfil. - + Priority must be an integer Prioritet måste vara ett heltal - + Priority is not valid Prioritet är inte giltigt - + Torrent's metadata has not yet downloaded Torrentens metadata har inte hämtats ännu - + File IDs must be integers Fil-ID:n måste vara heltal - + File ID is not valid Fil-ID är inte giltigt - - - - + + + + Torrent queueing must be enabled Torrentkö måste aktiveras - - + + Save path cannot be empty Sparsökvägen kan inte vara tom - - + + Cannot create target directory Det går inte att skapa målmapp - - + + Category cannot be empty Kategorin kan inte vara tom - + Unable to create category Det går inte att skapa kategori - + Unable to edit category Det går inte att redigera kategori - + Unable to export torrent file. Error: %1 Det går inte att exportera torrentfil. Fel: %1 - + Cannot make save path Det går inte att skapa sparsökväg - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid parametern "sort" är ogiltig - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" är inte ett giltigt filindex. - + Index %1 is out of bounds. Index %1 är utanför gränserna. - - + + Cannot write to directory Kan inte skriva till mapp - + WebUI Set location: moving "%1", from "%2" to "%3" Webbgränssnitt platsinställning: flyttar "%1", från "%2" till "%3" - + Incorrect torrent name Felaktigt torrentnamn - - + + Incorrect category name Felaktigt kategorinamn @@ -10798,257 +11425,215 @@ Välj ett annat namn och försök igen. TrackerListModel - - + Working - Arbetar + Arbetar - + Disabled - Inaktiverad + Inaktiverad - + Disabled for this torrent - Inaktiverat för denna torrent + Inaktiverat för denna torrent - + This torrent is private - Denna torrent är privat + Denna torrent är privat - + N/A - + Ingen - + Updating... - Uppdaterar... + Uppdaterar... - + Not working - Fungerar inte + Fungerar inte - + Tracker error - + Spårarfel - + Unreachable - + Onåbar - + Not contacted yet - Inte ännu kontaktad - - - - Invalid status! - + Inte ännu kontaktad - - URL/Announce endpoint + + Invalid state! - Tier - Nivå - - - - Protocol + URL/Announce Endpoint - Status - Status + BT Protocol + - - Peers - Jämlikar + + Next Announce + - - Seeds - Distributioner + + Min Announce + - - Leeches - Reciprokörer + Invalid status! + Ogiltig status! - - Times Downloaded - Gånger nedladdad + URL/Announce endpoint + URL/annonseringsslutpunkt - - Message - Meddelande + + Tier + Nivå - - Next announce - + Protocol + Protokoll - - Min announce - + + Status + Status - - v%1 - + + Peers + Jämlikar - - - TrackerListWidget - Working - Arbetar + + Seeds + Distributioner - Disabled - Inaktiverad + + Leeches + Reciprokörer - Disabled for this torrent - Inaktiverat för denna torrent + + Times Downloaded + Gånger hämtad - - This torrent is private - Denna torrent är privat + + Message + Meddelande - Updating... - Uppdaterar... + Next announce + Nästa annonsering - Not working - Fungerar inte + Min announce + Minimal annonsering - Not contacted yet - Inte ännu kontaktad + v%1 + v%1 + + + TrackerListWidget - N/A - Ingen + + This torrent is private + Denna torrent är privat - + Tracker editing Redigera spårare - + Tracker URL: Spårar-URL: - - + + Tracker editing failed Det gick inte att redigera spåraren - + The tracker URL entered is invalid. Den angivna spårarens URL är ogiltig. - + The tracker URL already exists. - Spårar-URL finns redan. + Spårar-URL finns redan. - + Edit tracker URL... Ändra spårar-URL... - + Remove tracker Ta bort spårare - + Copy tracker URL Kopiera URL för spårare - + Force reannounce to selected trackers Tvinga återannonsera till valda spårare - + Force reannounce to all trackers Tvinga återannonsera till alla spårare - Tier - Nivå - - - URL - URL - - - Status - Status - - - Seeds - Distributioner - - - Times Downloaded - Gånger nedladdad - - - + Resize columns Ändra storlek på kolumner - + Resize all non-hidden columns to the size of their contents Ändra storlek på alla icke-dolda kolumner till storleken på deras innehåll - Peers - Jämlikar - - - + Add trackers... Lägg till spårare... - Leeches - Reciprokörer - - - Message - Meddelande - - - + Column visibility Kolumnens synlighet @@ -11066,37 +11651,37 @@ Välj ett annat namn och försök igen. Lista över spårare att lägga till (en per rad): - + µTorrent compatible list URL: µTorrent kompatibel URL-lista: - + Download trackers list Hämta spårarlista - + Add Lägg till - + Trackers list URL error URL-fel för spårarlistan - + The trackers list URL cannot be empty Spårarlistans URL kan inte vara tom - + Download trackers list error Fel vid hämtning av spårarlista - + Error occurred when downloading the trackers list. Reason: "%1" Ett fel uppstod vid hämtning av spårarlistan. Orsak: "%1" @@ -11104,87 +11689,70 @@ Välj ett annat namn och försök igen. TrackersFilterWidget - All (0) - this is for the tracker filter - Alla (0) - - - Trackerless (0) - Utan spårare (0) - - - Error (0) - Fel (0) - - - Warning (0) - Varning (0) - - - Trackerless - Utan spårare - - - Error (%1) - Fel (%1) - - - + Warning (%1) Varning (%1) - + Trackerless (%1) Utan spårare (%1) - + Tracker error (%1) - + Spårarfel (%1) - + Other error (%1) - + Annat fel (%1) - + Remove tracker - Ta bort spårare + Ta bort spårare + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Återuppta torrenter + Återuppta torrenter - Pause torrents - Pausa torrenter + Pausa torrenter - + Remove torrents Ta bort torrenter - + Removal confirmation - + Borttagningsbekräftelse - + Are you sure you want to remove tracker "%1" from all torrents? - + Är du säker på att du vill ta bort spåraren "%1" från alla torrenter? - + Don't ask me again. - + Fråga mig inte igen. - + All (%1) this is for the tracker filter Alla (%1) @@ -11193,7 +11761,7 @@ Välj ett annat namn och försök igen. TransferController - + 'mode': invalid argument "mode": ogiltigt argument @@ -11286,9 +11854,8 @@ Välj ett annat namn och försök igen. Kontrollerar återupptagningsdata - Paused - Pausad + Pausad @@ -11313,220 +11880,262 @@ Välj ett annat namn och försök igen. Felaktiga - + Name i.e: torrent name Namn - + Size i.e: torrent size Storlek - + Progress % Done Förlopp - Status Torrent status (e.g. downloading, seeding, paused) - Status + Status - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Status + + + Seeds i.e. full sources (often untranslated) Distributioner - + Peers i.e. partial sources (often untranslated) Jämlikar - + Down Speed i.e: Download speed Hämtningshastighet - + Up Speed i.e: Upload speed Sändninghastighet - + Ratio Share ratio Kvot - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Slutförs - + Category Kategori - + Tags Taggar - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Tillagd - + Completed On Torrent was completed on 01/01/2010 08:00 Slutfördes - + Tracker Spårare - + Down Limit i.e: Download limit Hämtningsgräns - + Up Limit i.e: Upload limit Sändningsgräns - + Downloaded Amount of data downloaded (e.g. in MB) Hämtat - + Uploaded Amount of data uploaded (e.g. in MB) Skickat - + Session Download Amount of data downloaded since program open (e.g. in MB) Hämtat denna session - + Session Upload Amount of data uploaded since program open (e.g. in MB) Skickat denna session - + Remaining Amount of data left to download (e.g. in MB) Återstår - + + Time Active + Time (duration) the torrent is active (not stopped) + Tid aktiv + + + + Yes + Ja + + + + No + Nej + + Time Active Time (duration) the torrent is active (not paused) - Tid aktiv + Tid aktiv - + Save Path Torrent save path Sparsökväg - + Incomplete Save Path Torrent incomplete save path Ofullständig sparsökväg - + Completed Amount of data completed (e.g. in MB) Klar - + Ratio Limit Upload share ratio limit Kvotgräns - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Senast sedd fullständig - + Last Activity Time passed since a chunk was downloaded/uploaded Senaste aktivitet - + Total Size i.e. Size including unwanted data Total storlek - + Availability The number of distributed copies of the torrent Tillgänglighet - + Info Hash v1 i.e: torrent info hash v1 - Infohash v1 + Info-hash v1 - + Info Hash v2 i.e: torrent info hash v2 - Infohash v2 + Info-hash v2 - + Reannounce In Indicates the time until next trackers reannounce + Återannonsera om + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Ingen - + %1 ago e.g.: 1h 20m ago %1 sedan - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (distribuerad i %2) @@ -11535,334 +12144,358 @@ Välj ett annat namn och försök igen. TransferListWidget - + Column visibility Kolumnsynlighet - + Recheck confirmation Bekräftelse på återkontroll - + Are you sure you want to recheck the selected torrent(s)? Är du säker på att du vill kontrollera den valda torrenten/de valda torrenterna igen? - + Rename Byt namn - + New name: Nytt namn: - + Choose save path Välj sparsökväg - Confirm pause - Bekräfta paus + Bekräfta paus - Would you like to pause all torrents? - Vill du pausa alla torrenter? + Vill du pausa alla torrenter? - Confirm resume - Bekräfta återuppta + Bekräfta återuppta - Would you like to resume all torrents? - Vill du återuppta alla torrenter? + Vill du återuppta alla torrenter? - + Unable to preview Det går inte att förhandsgranska - + The selected torrent "%1" does not contain previewable files Den valda torrenten "%1" innehåller inte förhandsgranskningsbara filer - + Resize columns Ändra storlek på kolumner - + Resize all non-hidden columns to the size of their contents Ändra storlek på alla icke-dolda kolumner till storleken på deras innehåll - + Enable automatic torrent management Aktivera automatisk torrenthantering - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Är du säker på att du vill aktivera automatisk torrenthantering för de valda torrenterna? De kan komma att flyttas. - Add Tags - Lägg till taggar + Lägg till taggar - + Choose folder to save exported .torrent files Välj mapp för att spara exporterade .torrent-filer - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Det gick inte att exportera .torrent-fil. Torrent: "%1". Sparsökväg: "%2". Orsak: "%3" - + A file with the same name already exists En fil med samma namn finns redan - + Export .torrent file error Exportera .torrent-filfel - + Remove All Tags Ta bort alla taggar - + Remove all tags from selected torrents? Ta bort alla taggar från valda torrenter? - + Comma-separated tags: Kommaseparerade taggar: - + Invalid tag Ogiltig tagg - + Tag name: '%1' is invalid Taggnamn: "%1" är ogiltig - &Resume Resume/start the torrent - &Återuppta + &Återuppta - &Pause Pause the torrent - &Pausa + &Pausa - Force Resu&me Force Resume/start the torrent - Tvinga åter&uppta + Tvinga åter&uppta - + Pre&view file... Förhands&granska fil... - + Torrent &options... Torrent&alternativ... - + Open destination &folder Öppna destinations&mapp - + Move &up i.e. move up in the queue Flytta &upp - + Move &down i.e. Move down in the queue Flytta &ner - + Move to &top i.e. Move to top of the queue Flytta &överst - + Move to &bottom i.e. Move to bottom of the queue Flytta &nederst - + Set loc&ation... Ange pl&ats... - + Force rec&heck Tvinga åter&kontroll - + Force r&eannounce Tvinga åt&erannonsera - + &Magnet link &Magnetlänk - + Torrent &ID Torrent-&ID - + + &Comment + &Kommentar + + + &Name &Namn - + Info &hash v1 - Info&hash v1 + Info-&hash v1 - + Info h&ash v2 Info-h&ash v2 - + Re&name... Byt &namn... - + Edit trac&kers... Redigera spå&rare... - + E&xport .torrent... E&xportera .torrent... - + Categor&y Kategor&i - + &New... New category... &Ny... - + &Reset Reset category &Återställ - + Ta&gs Ta&ggar - + &Add... Add / assign multiple tags... &Lägg till... - + &Remove All Remove all tags &Ta bort alla - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Kö - + &Copy &Kopiera - + Exported torrent is not necessarily the same as the imported Exporterad torrent är inte nödvändigtvis densamma som den importerade - + Download in sequential order Hämta i sekventiell ordning - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Fel uppstod vid export av .torrent-filer. Kontrollera exekveringsloggen för detaljer. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Ta bort - + Download first and last pieces first Hämta första och sista delarna först - + Automatic Torrent Management Automatisk torrenthantering - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Automatiskt läge innebär att olika torrentegenskaper (t.ex. sparsökväg) kommer att avgöras av den tillhörande kategorin - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Kan inte framtvinga återannonsering om torrent är pausad/köad/fellerar/kontrollerar + Kan inte framtvinga återannonsering om torrent är pausad/köad/fellerar/kontrollerar - + Super seeding mode Superdistributionsläge @@ -11907,28 +12540,28 @@ Välj ett annat namn och försök igen. Ikon-ID - + UI Theme Configuration. Användargränssnittets temakonfiguration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Ändringarna av användargränssnittets tema kunde inte tillämpas fullt ut. Detaljerna finns i loggen. - + Couldn't save UI Theme configuration. Reason: %1 Det gick inte att spara konfigurationen av användargränssnittstema. Orsak: %1 - - + + Couldn't remove icon file. File: %1. Det gick inte att ta bort ikonfilen. Fil: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Det gick inte att kopiera ikonfilen. Källa: %1. Destination: %2. @@ -11936,7 +12569,12 @@ Välj ett annat namn och försök igen. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Det gick inte att läsa in gränssnittstema från fil: "%1" @@ -11967,89 +12605,82 @@ Välj ett annat namn och försök igen. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Det gick inte att migrera inställningar: Webbgränssnitt-https, fil: "%1", fel: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Migrera inställningar: Webbgränssnitt-https, exporterade data till fil: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Ogiltigt värde hittades i konfigurationsfilen, återställer det till standard. Nyckel: "%1". Ogiltigt värde: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python upptäckt, körbart namn: "%1", version: %2 - - - Python not detected - Python upptäcktes inte - Found Python executable. Name: "%1". Version: "%2" - + Hittade körbar Python. Namn: "%1". Version: "%2" Failed to find Python executable. Path: "%1". - + Det gick inte att hitta körbar Python. Sökväg: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Det gick inte att hitta `python3` körbar i PATH-miljövariabel. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Det gick inte att hitta `python` körbar i PATH-miljövariabel. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Det gick inte att hitta körbar `python` i Windows-registret. Failed to find Python executable - + Det gick inte att hitta körbar Python Utils::IO - + File open error. File: "%1". Error: "%2" Filöppningsfel. Fil: "%1". Fel: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Filstorleken överskrider gränsen. Fil: "%1". Filstorlek: %2. Storleksgräns: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Filstorleken överskrider datastorleksgränsen. Fil: "%1". Filstorlek: %2. Matrisgräns: %3 - + File read error. File: "%1". Error: "%2" Filläsfel. Fil: "%1". Fel: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Lässtorleken matchar inte. Fil: "%1". Förväntat: %2. Faktiskt: %3 @@ -12113,72 +12744,72 @@ Välj ett annat namn och försök igen. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Oacceptabelt sessionscookienamn är specificerat: "%1". Standard används. - + Unacceptable file type, only regular file is allowed. Oacceptabel filtyp, endast vanlig fil är tillåten. - + Symlinks inside alternative UI folder are forbidden. Symlinks i alternativa mappen för användargränssnittet är förbjudna. - - Using built-in Web UI. - Använder inbyggt webbgränssnitt. + + Using built-in WebUI. + Använder inbyggt webbanvändargränssnittet. - - Using custom Web UI. Location: "%1". - Använder anpassat webbgränssnitt. Plats: "%1". + + Using custom WebUI. Location: "%1". + Använder anpassat webbanvändargränssnitt. Plats: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Webbgränssnittsöversättning för vald plats (%1) har lästs in. + + WebUI translation for selected locale (%1) has been successfully loaded. + Webbanvändargränssnittsöversättning för valt språk (%1) har lästs in. - - Couldn't load Web UI translation for selected locale (%1). - Det gick inte att läsa in webbgränssnittsöversättning för vald plats (%1). + + Couldn't load WebUI translation for selected locale (%1). + Det gick inte att läsa in webbgränssnittsöversättning för valt språk (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Saknar ":" avskiljare i WebUI anpassad HTTP-rubrik: "%1" - + Web server error. %1 Webbserverfel. %1 - + Web server error. Unknown error. Webbserverfel. Okänt fel. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Webbgränssnitt: Ursprungsrubrik & målursprung obalans! Käll-IP: "%1". Ursprungsrubrik: "%2". Målursprung: "%3" - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Webbgränssnitt: Referensrubrik & målursprung obalans! Käll-IP: "%1". Referensrubrik: "%2". Målursprung: "%3" - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Webbgränssnitt: Ogiltig värdrubrik, port felmatchning. Begär käll-IP: "%1". Serverport: "%2". Mottagen värdrubrik: "%3" - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Webbgränssnitt: Ogiltig värdrubrik. Begär käll-IP: "%1". Mottagen värdrubrik: "%2" @@ -12186,143 +12817,136 @@ Välj ett annat namn och försök igen. WebUI - - Web UI: HTTPS setup successful - Webbgränssnitt: HTTPS-inställningen lyckades + + Credentials are not set + Inloggningsuppgifter är inte inställda + + + + WebUI: HTTPS setup successful + Webbanvändargränssnitt: HTTPS-installationen lyckades + + + + WebUI: HTTPS setup failed, fallback to HTTP + Webbanvändargränssnitt: HTTPS-installationen misslyckades, återgång till HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Webbgränssnitt: HTTPS-inställningen misslyckades, återgång till HTTP + + WebUI: Now listening on IP: %1, port: %2 + Webbanvändargränssnitt: Lyssnar nu på IP: %1, port: %2 - - Web UI: Now listening on IP: %1, port: %2 - Webbgränssnitt: Lyssnar nu på IP: %1, port: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Det gick inte att binda till IP: %1, port: %2. Orsak: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Webbgränssnitt: Kan inte binda till IP: %1, port: %2. Orsak: %3 + + Unknown error + Okänt fel misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 min {1s?} + %1s - + %1m e.g: 10 minutes - %1 min + %1 min - + %1h %2m e.g: 3 hours 5 minutes - %1h %2m + %1h %2m - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1å %2d - - - %1h %2m - e.g: 3hours 5minutes - %1h %2m - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1å %2d + %1å %2d - - + + Unknown Unknown (size) Okänd - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent kommer nu att stänga av datorn därför att alla hämtningar är slutförda. - + < 1m < 1 minute < 1 min - - %1m - e.g: 10minutes - %1 min - diff --git a/src/lang/qbittorrent_th.ts b/src/lang/qbittorrent_th.ts index 3a683ff8d7b0..5813dfe88072 100644 --- a/src/lang/qbittorrent_th.ts +++ b/src/lang/qbittorrent_th.ts @@ -14,87 +14,87 @@ เกี่ยวกับ - + Authors ผู้พัฒนาโปรแกรม - + Current maintainer ผู้ดูแลขณะนี้ - + Greece กรีซ - - + + Nationality: สัญชาติ - - + + E-mail: อีเมล - - + + Name: ชื่อ - + Original author ผู้พัฒนาดั้งเดิม - + France ฝรั่งเศส - + Special Thanks ขอขอบคุณเป็นพิเศษ - + Translators ทีมนักแปล - + License ลิขสิทธิ์ - + Software Used ซอฟต์แวร์ที่ใช้ - + qBittorrent was built with the following libraries: qBittorrent สร้างมาจากไลบรารี่เหล่านี้ - + Copy to clipboard - + คัดลอกไปยังคลิปบอร์ด An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. - โปรแกรมบิตทอร์เรนต์ขั้นสูงถูกสร้างด้วยโปรแกรมภาษา C++, ขึ้นกับชุดเครื่องมือ Qt และ libtorrent-rasterbar + ไคลเอนต์ BitTorrent ระดับสูง ที่เขียนด้วยภาษา C++ โดยใช้ Qt toolkit และ libtorrent-rasterbar เป็นพื้นฐาน - Copyright %1 2006-2023 The qBittorrent project - สงวนลิขสิทธิ์ %1 2006-2023 โครงการ qBittorrent + Copyright %1 2006-2024 The qBittorrent project + ลิขสิทธิ์ %1 2006-2024 โครงการ qBittorrent @@ -109,12 +109,12 @@ Bug Tracker: - ติดตามบั๊ค: + ระบบติดตามบั๊ก The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License - ฐานข้อมูล IP to Country Lite ฟรีโดย DB-IP ใช้สำหรับแก้ไขประเทศของเพียร์. ฐานข้อมูลได้รับอนุญาตภายใต้ Creative Commons Attribution 4.0 International License + ฐานข้อมูล IP to Country Lite ฟรี จาก DB-IP ถูกใช้สำหรับแก้ไขประเทศของเพียร์ ฐานข้อมูลนี้ได้รับอนุญาตภายใต้ Creative Commons Attribution 4.0 International License @@ -123,7 +123,7 @@ The old path is invalid: '%1'. - เส้นทางเก่าไม่ถูกต้อง: '%1' + เส้นทางเดิมไม่ถูกต้อง: '%1'. @@ -140,7 +140,7 @@ The file already exists: '%1'. - ไฟล์มีอยู่แล้ว: '%1' + ไฟล์นี้มีอยู่แล้ว: '%1'. @@ -166,14 +166,13 @@ บันทึกที่ - + Never show again ไม่ต้องแสดงอีก - Torrent settings - การตั้งค่าทอร์เรนต์ + การตั้งค่าทอร์เรนต์ @@ -191,34 +190,39 @@ เริ่มทอร์เรนต์ - + Torrent information ข้อมูลทอเรนต์ - + Skip hash check ข้ามการตรวจสอบแฮช Use another path for incomplete torrent - ใช้เส้นทางอื่นสำหรับ torrent ที่ไม่สมบูรณ์ + ใช้เส้นทางอื่นสำหรับโหลด Torrent ที่ไม่สมบูรณ์ + + + + Torrent options + Tags: - + แท็ก: Click [...] button to add/remove tags. - + คลิกปุ่ม [...] เพื่อเพิ่ม/ลบแท็ก Add/remove tags - + เพิ่ม/ลบแท็ก @@ -228,73 +232,78 @@ Stop condition: - เงื่อนไขการหยุด + เงื่อนไขการสิ้นสุด - - + + None ไม่มี - - + + Metadata received - ข้อมูลรับ Metadata + ได้รับข้อมูล Metadata - - + + Torrents that have metadata initially will be added as stopped. + โทเรนต์ที่มีข้อมูล Metadata ตั้งแต่แรกจะถูกเพิ่มในสถานะหยุด + + + + Files checked - ไฟล์ตรวจสอบแล้ว + ตรวจสอบไฟล์แล้ว - + Add to top of queue - เลื่อนเป็นคิวแรกสุด + เพิ่มเป็นคิวแรกสุด - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + เมื่อตรวจสอบแล้ว ไฟล์ .torrent จะไม่ถูกลบ ไม่ว่าจะตั้งค่าอย่างไรในหน้า "ดาวน์โหลด" ของกล่อง "ตัวเลือก" - + Content layout: - เลย์เอาต์เนื้อหา: + การจัดวางเนื้อหา: - + Original ต้นฉบับ - + Create subfolder สร้างโฟลเดอร์ย่อย - + Don't create subfolder ไม่ต้องสร้างโฟลเดอร์ย่อย - + Info hash v1: - ข้อมูลแฮช v1: + ข้อมูล hash v1: - + Size: ขนาด: - + Comment: ความคิดเห็น: - + Date: วันที่: @@ -306,223 +315,168 @@ Automatic mode means that various torrent properties(eg save path) will be decided by the associated category - โหมดออโต้ช่วยให้คุณสมบัติต่างๆของทอเรนต์(เช่น ที่บันทึก) ให้เลือกตามหมวดหมู่ + โหมดออโต้ช่วยให้คุณสมบัติต่างๆของทอเรนต์(เช่น ที่บันทึก) จะถูกเปลี่ยนไปเลือกตามหมวดหมู่ Manual - จัดการเอง + แบบแมนนวล Automatic - อัตโนมัติ + แบบอัตโนมัติ Remember last used save path - จำเส้นทางที่ใช้ล่าสุด + จำตำแหน่งเส้นทางที่ใช้ล่าสุด - + Do not delete .torrent file ไม่ต้องลบไฟล์ .torrent - + Download in sequential order ดาวน์โหลดตามลำดับ - + Download first and last pieces first ดาวน์โหลดเป็นอันดับแรก และชิ้นสุดท้ายก่อน - + Info hash v2: - ข้อมูลแฮช v2: + ข้อมูล hash v2: - + Select All เลือกทั้งหมด - + Select None ไม่เลือกทั้งหมด - + Save as .torrent file... บันทึกเป็นไฟล์ .torrent - + I/O Error ข้อมูลรับส่งผิดพลาด - Invalid torrent - ทอร์เรนต์ไม่ถูกต้อง - - - + Not Available This comment is unavailable ไม่สามารถใช้ได้ - + Not Available This date is unavailable ไม่สามารถใช้ได้ - + Not available ไม่สามารถใช้ได้ - Invalid magnet link - magnet link ไม่ถูกต้อง - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - โหลดทอเร้นไม่ได้: %1 -ผิดพลาด: %2 - - - This magnet link was not recognized - ไม่เคยรู้จัก magnet link นี้ - - - + Magnet link magnet link - + Retrieving metadata... กำลังดึงข้อมูล - - + + Choose save path เลือกที่บันทึก - Torrent is already present - มีทอร์เรนต์นี้อยู่แล้ว - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - ทอร์เรนต์ '% 1' อยู่ในรายชื่อการถ่ายโอนแล้ว ตัวติดตามยังไม่ได้รวมเข้าด้วยกันเนื่องจากเป็นทอร์เรนต์ส่วนตัว - - - Torrent is already queued for processing. - ทอร์เรนต์อยู่ในคิวประมวลผล - - - + No stop condition is set. ไม่มีการตั้งเงื่อนไขการหยุด - + Torrent will stop after metadata is received. ทอเร้นต์หยุดเมื่อได้รับข้อมูล metadata - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - + + N/A N/A - Magnet link is already queued for processing. - Magnet ลิ้งก์ อยู่ในคิวสำหรับการประมวลผล. - - - + %1 (Free space on disk: %2) %1 (พื้นที่เหลือบนไดรฟ์: %2) - + Not available This size is unavailable. ไม่สามารถใช้งานได้ - + Torrent file (*%1) ไฟล์ทอร์เรนต์ (*%1) - + Save as torrent file บันทึกเป็นไฟล์ทอร์เรนต์ - + Couldn't export torrent metadata file '%1'. Reason: %2. ไม่สามารถส่งออกไฟล์ข้อมูลเมตาของทอร์เรนต์ '%1' เหตุผล: %2 - + Cannot create v2 torrent until its data is fully downloaded. ไม่สามารถสร้าง v2 ทอร์เรนต์ ได้จนกว่าข้อมูลจะดาวน์โหลดจนเต็ม. - Cannot download '%1': %2 - ไม่สามารถดาวน์โหลด '%1': %2 - - - + Filter files... คัดกรองไฟล์... - + Parsing metadata... กำลังแปลข้อมูล - + Metadata retrieval complete ดึงข้อมูลเสร็จสมบูรณ์ - - Failed to load from URL: %1. -Error: %2 - ไม่สามารถโหลดจากลิ้งก์: %1. -ข้อผิดพลาด: %2 - - - Download Error - ดาวน์โหลดผิดพลาด - AddTorrentManager @@ -537,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -582,7 +536,7 @@ Error: %2 Note: the current defaults are displayed for reference. - + หมายเหตุ: ค่าเริ่มต้นที่เห็นอยู่นี้เป็นเพียงตัวอย่างเปรียบเทียบเท่านั้น @@ -597,17 +551,17 @@ Error: %2 Tags: - + แท็ก: Click [...] button to add/remove tags. - + คลิกปุ่ม [...] เพื่อเพิ่มหรือลบแท็ก Add/remove tags - + เพิ่ม/ลบแท็ก @@ -617,7 +571,7 @@ Error: %2 Start torrent: - + เริ่มทอร์เรนต์ @@ -632,7 +586,7 @@ Error: %2 Add to top of queue: - + เพิ่มไปยังข้างบนสุดของคิว @@ -640,72 +594,77 @@ Error: %2 ข้ามการตรวจสอบแฮช - - - Choose save path - เลือกเส้นทางการบันทึก + + Torrent share limits + จำกัดการแชร์ทอร์เรนต์ - - - - - - - Default - ค่าเริ่มต้น + + + Choose save path + เลือกเส้นทางการบันทึก + + + - Yes - ใช่ + Default + ค่าเริ่มต้น + Yes + ใช่ + + + + + No ไม่ - + Manual จัดการเอง - + Automatic อัตโนมัติ - + Original ต้นฉบับ - + Create subfolder สร้างโฟลเดอร์ย่อย - + Don't create subfolder ไม่ต้องสร้างโฟลเดอร์ย่อย - + None ไม่มี - + Metadata received ข้อมูลรับ Metadata - + Files checked ไฟล์ตรวจสอบแล้ว @@ -713,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB เมบิไบต์ - + Recheck torrents on completion ตรวจทอเร้นอีกครั้งเมื่อเสร็จสมบูรณ์ - - + + ms milliseconds มิลลิเซกันด์ - + Setting ตั้งค่า - + Value Value set for this setting มูลค่า - + (disabled) (ปิดการใช้งานแล้ว) - + (auto) (ออโต้) - + + min minutes นาที - + All addresses ที่อยู่ทั้งหมด - + qBittorrent Section ส่วนของ qBittorrent - - + + Open documentation เปิดเอกสาร - + All IPv4 addresses ที่อยู่ IPv4 ทั้งหมด - + All IPv6 addresses ที่อยู่ IPv6 ทั้งหมด - + libtorrent Section ส่วน libtorrent - + Fastresume files ไฟล์ประวัติด่วน - + SQLite database (experimental) ฐานข้อมูล SQLite (ทดลอง) - + Resume data storage type (requires restart) ประเภทการจัดเก็บข้อมูลต่อ (ต้องรีสตาร์ท) - + Normal ปกติ - + Below normal ต่ำกว่าปกติ - + Medium ปานกลาง - + Low ช้า - + Very low ช้ามาก - - Process memory priority (Windows >= 8 only) - ความสำคัฯของหน่วยประมวลผล (วินโดว์ >= 8 เท่านั้น) - - - + Physical memory (RAM) usage limit จำกัดการใช้งานหน่วยความจำ (RAM) - + Asynchronous I/O threads เธรดไม่ตรงกัน I/O - + Hashing threads แฮชเธรด - + File pool size ขนาดไฟล์ Pool - + Outstanding memory when checking torrents ความสำคัญของหน่วยความจำเมื่อตรวจสอบ Torrents - + Disk cache ดิสก์แคช - - - - + + + + s seconds s - + Disk cache expiry interval แคชดิสก์หมดอายุ - + Disk queue size ขนาดลำดับของดิสก์ - - + + Enable OS cache เปิดใช้งาน OS แคช - + Coalesce reads & writes เชื่อมต่อการ อ่านและการเขียน - + Use piece extent affinity ใช้งานความสัมพันธ์ของชิ้นส่วน - + Send upload piece suggestions ส่งคำแนะนำชิ้นส่วนที่อัปโหลด - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB กิบิไบต์ - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux ตัวเลือกนี้มีผลน้อยบนระบบลีนุกซ์ - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default ค่าเริ่มต้น - + Memory mapped files - + POSIX-compliant - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - - + + Disable OS cache ยกเลิกแคชระบบปฏิบัติการ - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark ส่งลายน้ำบัฟเฟอร์ - + Send buffer low watermark ส่งบัฟเฟอร์ลายน้ำต่ำ - + Send buffer watermark factor ส่งส่วนประกอบลายน้ำบัฟเฟอร์ - + Outgoing connections per second การเชื่อมต่อขาออกต่อวินาที - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size ขนาดแบ็คล็อกของซ็อกเก็ต - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers ประเภทของบริการ (ToS) สำหรับการเชื่อมต่อกับเพียร์ - + Prefer TCP เสนอ TCP - + Peer proportional (throttles TCP) สัดส่วนเพียร์ (ควบคุมปริมาณ TCP) - + Support internationalized domain name (IDN) รองรับชื่อโดเมนสากล (IDN) - + Allow multiple connections from the same IP address อนุญาตให้ใช้การเชื่อมต่อจากหลาย ๆ ที่อยู่ IP - + Validate HTTPS tracker certificates ติดตามตรวจสอบใบอนุญาต HTTPS - + Server-side request forgery (SSRF) mitigation การลดการร้องขอทางฝั่งเซิร์ฟเวอร์ (SSRF) - + Disallow connection to peers on privileged ports ปฏิเสธิการเชื่อมต่อไปเพียร์บนพอร์ตที่มีสิทธิพิเศษ - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval ระยะรอบการรีเฟรช - + Resolve peer host names แก้ไขชื่อโฮสต์เพียร์ - + IP address reported to trackers (requires restart) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed ประกาศให้ผู้ติดตามทุกคนทราบอีกครั้งเมื่อ IP หรือ พอร์ต มีการเปลี่ยนแปลง - + Enable icons in menus เปิดใช้งานไอคอนในเมนู - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + วินาที + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage เปอร์เซ็นต์การหมุนเวียนของเพียร์ยกเลิกการเชื่อมต่อ - + Peer turnover threshold percentage เปอร์เซ็นต์การหมุนเวียนของเพียร์ - + Peer turnover disconnect interval ช่วงเวลาตัดการเชื่อมต่อการหมุนเวียนของเพียร์ - + Resets to default if empty - + รีเซ็ตเป็นค่าเริ่มต้นหากว่างเปล่า - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications หน้าจอแสดงการแจ้งเตือน - + Display notifications for added torrents หน้าจอการแจ้งเตือนสำหรับการเพิ่ม torrent - + Download tracker's favicon ติดตามการดาวน์โหลด favicon - + Save path history length บันทึกประวัติเส้นทาง - + Enable speed graphs เปิดใช้งานกราฟความเร็ว - + Fixed slots สล็อตคงที่ - + Upload rate based อัตราการอัพโหลด - + Upload slots behavior อัปโหลดพฤติกรรมสล็อต - + Round-robin รอบ-โรบิน - + Fastest upload อัพโหลดเร็วที่สุด - + Anti-leech ต่อต้าน-leech - + Upload choking algorithm อัปโหลดอัลกอริทึม - + Confirm torrent recheck ยืนยันการตรวจสอบ Torrent อีกครั้ง - + Confirm removal of all tags ยืนยันการลบแท็กทั้งหมด - + Always announce to all trackers in a tier ประกาศต่อผู้ติดตามทุกคน - + Always announce to all tiers ประกาศทุกระดับ - + Any interface i.e. Any network interface ทุก ๆ หน้าตา - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP ผสมโหมดอัลกอริทึม - + Resolve peer countries แก้ไขประเทศของเพียร์ - + Network interface โครงข่ายเชื่อมต่อ - + Optional IP address to bind to ที่อยู่ IP ไม่จำเป็น - + Max concurrent HTTP announces ประกาซใช้ HTTP พร้อมกันสูงสุด - + Enable embedded tracker เปิดใช้งานตัวติดตามแบบฝัง - + Embedded tracker port พอร์ตติดตามแบบฝัง - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 เริ่มแล้ว + + + Invalid directory path + + + + + Directory does not exist + - + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 ทำงานในโหมดพกพา. ตรวจพบโฟลเดอร์โปรไฟล์โดยอัตโนมัติที่: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. ตรวจพบตัวบ่งชี้คำสั่งซ้ำซ้อน: "%1". โหมดพกพาย่อที่รวดเร็ว. - + Using config directory: %1 ใช้การกำหนดค่าไดเร็กทอรี: %1 - + Torrent name: %1 ชื่อทอร์เรนต์: %1 - + Torrent size: %1 ขนาดทอร์เรนต์: %1 - + Save path: %1 บันทึกเส้นทาง: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds ดาวน์โหลดทอร์เรนต์ใน %1. - + + Thank you for using qBittorrent. ขอบคุณที่เลือกใช้ qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, กำลังส่งจดหมายแจ้งเตือน - + Add torrent failed - + เพิ่มทอร์เรนต์ล้มเหลว - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + ดาวน์โหลดทอร์เรนต์ "%1" สำเร็จแล้ว - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + กำลังโหลดทอร์เรนต์... - + E&xit อ&อก - + I/O Error i.e: Input/Output Error ข้อมูลรับส่งผิดพลาด - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1449,133 +1526,110 @@ Error: %2 เหตุผล: %2 - Error - ผิดพลาด - - - Failed to add torrent: %1 - เพิ่มไฟล์ทอเร้นต์ผิดพลาด: %1 - - - + Torrent added เพิ่มไฟล์ทอเร้นต์แล้ว - + '%1' was added. e.g: xxx.avi was added. '%1' เพิ่มแล้ว - + Download completed ดาวน์โหลดเสร็จสิ้น - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' ดาวน์โหลดเสร็จแล้ว + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - URL download error - URL ดาวน์โหลดล้มเหลว + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - ไม่สามารถดาวน์โหลดไฟล์ที่ URL '%1', เหตุผล: %2. + + Test email + - Torrent file association - การเชื่อมโยงไฟล์ทอร์เรนต์ + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' ดาวน์โหลดเสร็จแล้ว - + Information ข้อมูล - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 - ชื่อผู้ใช้สำหรับผู้ดูแลระบบคือ: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - - - - - This is a security risk, please change your password in program preferences. - - - - Application failed to start. - ไม่สามารถเปิดแอปพลิเคชันได้ - - - + Exit ออก - + Recursive download confirmation - ยืนยันการดาวน์โหลดซ้ำ + ยืนยันการดาวน์โหลดซ้ำ - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - + Never - ไม่เลย + ไม่เลย - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + กำลังปิด qBittorrent... - + Saving torrent progress... กำลังบันทึก Torrent - + qBittorrent is now ready to exit @@ -1583,7 +1637,7 @@ Error: %2 AsyncFileStorage - + Could not create directory '%1'. ไม่สามารถสร้างหมวดหมู่ '%1'. @@ -1591,22 +1645,22 @@ Error: %2 AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 การเข้าสู่ระบบ WebAPI ล้มเหลว. เหตุผลคือ: IP ถูกแบน, IP: %1, ชื่อผู้ใช้: %2 - + Your IP address has been banned after too many failed authentication attempts. ที่อยู่ IP ของคุณถูกแบนหลังจากพยายามตรวจสอบความถูกต้องล้มเหลวหลายครั้งเกินไป - + WebAPI login success. IP: %1 WebAPI เข้าสู่ระบบสำเร็จ. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI เข้าสู่ระบบล้มเหลว. เหตุผลคือ: ข้อมูลประจำตัวไม่ถูกต้อง, จำนวนการพยายาม: %1, IP: %2, ชื่อผู้ใช้: %3 @@ -1654,12 +1708,12 @@ Error: %2 - + Must Not Contain: ต้องไม่มี: - + Episode Filter: ตัวกรองตอน: @@ -1712,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &นำออก... - + Matches articles based on episode filter. จับคู่บทความตามตัวกรองตอน - + Example: ตัวอย่าง - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match จะตรงกัน 2, 5, 8 ผ่าน 15, 30 และตอนต่อไปของซีซันที่หนึ่ง - + Episode filter rules: กฎตัวกรองตอน: - + Season number is a mandatory non-zero value หมายเลขซีซันเป็นค่าบังคับที่ไม่ใช่ศูนย์ - + Filter must end with semicolon ตัวกรองต้องลงท้ายด้วยอัฒภาค " ; " - + Three range types for episodes are supported: รอบรับตอนทั้งสามประเภท: - + Single number: <b>1x25;</b> matches episode 25 of season one หมายเลขเดียว: <b>1x25;</b> ตรงกับตอน 25 of ซีซันแรก - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one ช่วงปกติ: <b>1x25-40;</b> ตรงกับตอน 25 ผ่าน 40 of ซีซันแรก - + Episode number is a mandatory positive value หมายเลขตอนต้องเป็นค่าบวก - + Rules กฏ - + Rules (legacy) กฏ (สมบัติ) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons ช่วงไม่มีที่สิ้นสุด: <b>1x25-;</b> ตรงกับตอน 25 และสูงกว่าของซีซันที่หนึ่งและทุกตอนของซีซันต่อมา - + Last Match: %1 days ago นัดสุดท้าย: %1 วันที่แล้ว - + Last Match: Unknown นัดสุดท้าย: ไม่ทราบ - + New rule name ชื่อกฎใหม่ - + Please type the name of the new download rule. กรุณาพิมพ์ชื่อกฎการดาวน์โหลดใหม่ - - + + Rule name conflict ความขัดแย้งของชื่อกฎ - - + + A rule with this name already exists, please choose another name. มีกฎที่ใช้ชื่อนี้อยู่แล้วกรุณาลือกชื่ออื่น - + Are you sure you want to remove the download rule named '%1'? แน่ใจไหมว่าต้องการลบกฎการดาวน์โหลดที่ชื่อ '%1'? - + Are you sure you want to remove the selected download rules? แน่ใจไหมว่าต้องการลบกฎการดาวน์โหลดที่เลือก? - + Rule deletion confirmation ยืนยันการลบกฏ - + Invalid action การดำเนินการไม่ถูกต้อง - + The list is empty, there is nothing to export. รายการว่างเปล่าไม่มีอะไรจะส่งออก - + Export RSS rules ส่งออกกฏ RSS - + I/O Error I/O ล้มเหลว - + Failed to create the destination file. Reason: %1 สร้างไฟล์ปลายทางไม่สำเร็จ. เหตุผลคือ: %1 - + Import RSS rules นำเข้ากฏ RSS - + Failed to import the selected rules file. Reason: %1 ไม่สามารถนำเข้าไฟล์กฏที่เลือก. เหตุผล: %1 - + Add new rule... เพิ่มกฏใหม่... - + Delete rule ลบกฏ - + Rename rule... เปลี่ยนชื่อกฏ... - + Delete selected rules ลบกฏที่เลือก - + Clear downloaded episodes... ล้างตอนที่ดาวน์โหลด... - + Rule renaming การเปลี่ยนชื่อกฎ - + Please type the new rule name กรุณาพิมพ์ชื่อกฏใหม่ - + Clear downloaded episodes ล้างตอนที่ดาวน์โหลด - + Are you sure you want to clear the list of downloaded episodes for the selected rule? คุณมั่นใจหรือว่าจะทำการล้างรายชื่อการดาวน์โหลดตอนที่เลือก? - + Regex mode: use Perl-compatible regular expressions โหมด Regex: ใช้ Perl-เข้ากันได้ แสดงความคิดปกติ - - + + Position %1: %2 ตำแหน่ง %1: %2 - + Wildcard mode: you can use โหมดสัญลักษณ์แทน: คุณสามารถใช้ได้ - - + + Import error - + นำเข้าล้มเหลว - + Failed to read the file. %1 - + ? to match any single character ? เพื่อจับคู่อักขระเดี่ยวใด ๆ - + * to match zero or more of any characters * เพื่อจับคู่อักขระใด ๆ เป็นศูนย์หรือมากกว่า - + Whitespaces count as AND operators (all words, any order) ช่องว่างนับเป็นและเป็นตัวดำเนินการ (ทุกคำใด ๆ ) - + | is used as OR operator | ใช้เป็นตัวดำเนินการ OR - + If word order is important use * instead of whitespace. หากลำดับคำมีความสำคัญให้ใช้ * แทนช่องว่าง - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) การแสดงออกด้วยความว่างเปล่า %1 clause (เช่น %2) - + will match all articles. จะตรงกับบทความทั้งหมด - + will exclude all articles. จะไม่รวมบทความทั้งหมด @@ -2010,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" ไม่สามารถสร้างโฟลเดอร์งานต่อของทอร์เรนต์: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. ไม่สามารถบันทึกข้อมูลเมตาของทอร์เรนต์ไปที่ '%1'. ข้อผิดพลาด: %2 - + Couldn't save torrent resume data to '%1'. Error: %2. ไม่สามารถบันทึกข้อมูลการทำงานต่อของทอร์เรนต์ไปที่ '%1'. ข้อผิดพลาด: %2 - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 ไม่สามารถบันทึกข้อมูลไปที่ '%1'. ข้อผิดพลาด: %2 @@ -2064,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. ไม่พบ. - + Couldn't load resume data of torrent '%1'. Error: %2 ไม่สามารถโหลดข้อมูลประวัติของทอร์เรนต์ '%1'. ข้อผิดพลาด: %2 - - + + Database is corrupted. ฐานข้อมูลล้มเหลว - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2103,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. ไม่สามารถบันทึกข้อมูลเมตาของทอร์เรนต์. ข้อผิดพลาด: %1 - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2126,558 +2185,600 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON เปิด - - - - - - - - - + + + + + + + + + OFF ปิด - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - + โหมดไม่แสดงตัวตน: %1 - - + + Encryption support: %1 - - + + FORCED บังคับอยู่ - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + Torrent: "%1". - + ทอร์เรนต์ "%1" - - - Removed torrent. - ทอเร้นต์ลบแล้ว - - - - - - Removed torrent and deleted its content. - + ทอเร้นต์ลบแล้ว - - - Torrent paused. - หยุดชั่วคราว + หยุดชั่วคราว - - - + Super seeding enabled. - + โหมดซูเปอร์ซีดดิงเปิดใช้งานอยู่ - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" - + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - - UPnP/NAT-PMP support: OFF + + Saving resume data completed. - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + BitTorrent session successfully finished. - - Aborted saving resume data. Number of outstanding torrents: %1 + + Session shutdown timed out. - System network status changed to %1 - e.g: System network status changed to ONLINE - สถานะเครือข่ายของระบบเปลี่ยนเป็น %1 + + Removing torrent. + - ONLINE - ออนไลน์ + + Removing torrent and deleting its content. + - OFFLINE - ออฟไลน์ + + Torrent stopped. + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - มีการเปลี่ยนแปลงการกำหนดค่าเครือข่ายของ %1 แล้ว, รีเฟรชการเชื่อมโยงเซสชันที่จำเป็น + + Torrent content removed. Torrent: "%1" + - + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + + + + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + + + + + Trackers cannot be merged because it is a private torrent + + + + + Trackers are merged from new source + + + + + UPnP/NAT-PMP support: OFF + + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + + + + + Aborted saving resume data. Number of outstanding torrents: %1 + + + + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - - Torrent paused. Torrent: "%1" + + Failed to remove partfile. Torrent: "%1". Reason: "%2". - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + กู้คืนทอร์เรนต์แล้ว ทอร์เรนต์: "%1" - + Added new torrent. Torrent: "%1" - + เพิ่มทอร์เรนต์ใหม่แล้ว ทอร์เรนต์: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - Removed torrent. Torrent: "%1" - + ลบทอร์เรนต์แล้ว ทอร์เรนต์: "%1" - - Removed torrent and deleted its content. Torrent: "%1" + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. ตัวกรอง IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 ข้อจำกัดโหมดผสม - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 ปิดใช้งาน - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 ปิดใช้งาน - - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - - - - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - ยกเลิกการดำเนินการ - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - สร้างไฟล์ทอร์เรนต์ใหม่ล้มเหลว. เหตุผล: %1 + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - ยกเลิกการดำเนินการ + ยกเลิกการดำเนินการ + + Create new torrent file failed. Reason: %1. - สร้างไฟล์ทอร์เรนต์ใหม่ล้มเหลว. เหตุผล: %1 + สร้างไฟล์ทอร์เรนต์ใหม่ล้มเหลว. เหตุผล: %1 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 ไม่สามารถเพิ่มเพียร์ "%1" ไปยังทอร์เรนต์ "%2". เหตุผล: %3 - + Peer "%1" is added to torrent "%2" เพิ่มเพียร์ "%1" ในทอร์เรนต์ "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' ดาวน์โหลดชิ้นแรกและชิ้นสุดท้ายก่อน: %1, ทอร์เรนต์: '%2' - + On เปิด - + Off ปิด - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" ไฟล์ประวัติล้มเหลว. Torrent: "%1", ไฟล์: "%2", เหตุผล: "%3" - + Performance alert: %1. More info: %2 @@ -2698,184 +2799,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - - Parameter '%1' must follow syntax '%1=%2' - e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - - - - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: การใช้งาน: - + [options] [(<filename> | <url>)...] - + Options: ตัวเลือก: - + Display program version and exit - + Display this help message and exit - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + + + + + Confirm the legal notice + + + + + port พอร์ต - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name ชื่อ - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path เส้นทาง - + Torrent save path - - Add torrents as started or paused + + Add torrents as running or stopped - + Skip hash check ข้ามการตรวจสอบแฮช - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first ดาวน์โหลดชิ้นแรกและชิ้นสุดท้ายก่อน - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help ช่วยเหลือ @@ -2883,17 +2989,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories หมวดหมู่ - + All ทั้งหมด - + Uncategorized ไม่มีหมวดหมู่ @@ -2921,19 +3027,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ลบหมวดหมู่ - - Remove unused categories - ลบหมวดหมู่ที่ไม่ได้ใช้ + + Remove unused categories + ลบหมวดหมู่ที่ไม่ได้ใช้ + + + + Start torrents + + + + + Stop torrents + - Resume torrents - ดำเนินการทอร์เรนต์ต่อ + ดำเนินการทอร์เรนต์ต่อ - Pause torrents - หยุดทอร์เรนต์ + หยุดทอร์เรนต์ @@ -2944,15 +3058,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset รีเซ็ต + + + System + + CookiesDialog @@ -2993,12 +3112,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3006,7 +3125,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3016,7 +3135,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Remove torrent(s) - + ลบทอร์เรนต์ @@ -3025,23 +3144,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Also permanently delete the files + Also remove the content files - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? - + Remove ลบ @@ -3054,12 +3173,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ดาวน์โหลดจาก URLs - + Add torrent links เพิ่มลิงก์ทอร์เรนต์ - + One link per line (HTTP links, Magnet links and info-hashes are supported) หนึ่งลิ้งก์ต่อบรรทัด (HTTP ลิ้งก์, รองรับลิงก์แม่เหล็กและแฮชข้อมูล) @@ -3069,12 +3188,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ดาวน์โหลด - + No URL entered ไม่ได้ป้อน URL - + Please type at least one URL. กรุณาพิมพ์อย่างน้อยหนึ่งรายการ @@ -3234,24 +3353,47 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - มีทอร์เรนต์นี้อยู่แล้ว + มีทอร์เรนต์นี้อยู่แล้ว + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? @@ -3259,38 +3401,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also GeoIPDatabase - - + + Unsupported database file size. ไม่รองรับขนาดไฟล์ฐานข้อมูล - + Metadata error: '%1' entry not found. ข้อมูลล้มเหลว: '%1' ไม่พบรายการ. - + Metadata error: '%1' entry has invalid type. ข้อมูลล้มเหลว: '%1' ไม่พบรายการ. - + Unsupported database version: %1.%2 ไม่รองรับฐานข้อมูลเวอร์ชัน: %1.%2 - + Unsupported IP version: %1 ไม่รองรับ IP เวอร์ชัน: %1 - + Unsupported record size: %1 ไม่รองรับขนาดที่บันทึก: %1 - + Database corrupted: no data section found. ฐานข้อมูลเสียหาย: ไม่พบส่วนของข้อมูล @@ -3298,17 +3440,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http ปิดซ็อกเก็ต ขนาดคำขอเกินขีดจำกัด. จำกัด: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 แบนคำขอ Http, ปิดซ็อกเก็ต. IP: %1 @@ -3349,36 +3491,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... เลือก... - + Reset รีเซ็ต - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + กดปุ่ม 'Enter' เพื่อดำเนินการต่อ... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 ถูกบล็อก. เหตุผล: %2. - + %1 was banned 0.0.0.0 was banned %1 ถูกแบน @@ -3387,90 +3557,63 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - - No further notices will be issued. + + You cannot use %1: qBittorrent is already running. - - Press %1 key to accept and continue... + + Another qBittorrent instance is already running. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - Legal notice + + Error when daemonizing. Reason: "%1". Error code: %2. - - - Cancel - ยกเลิก - - - - I Agree - ฉันยอมรับ - MainWindow @@ -3480,615 +3623,704 @@ No further notices will be issued. &แก้ไข - + &Tools &เครื่องมือ - + &File &ไฟล์ - + &Help &ช่วยเหลือ - + On Downloads &Done ในการดาวน์โหลด &เสร็จ - + &View &ดู - + &Options... &ตัวเลือก... - &Resume - &ดำเนินการต่อ + &ดำเนินการต่อ - + &Remove &ลบ - + Torrent &Creator ทอร์เรนต์&ผู้สร้าง - - + + Alternative Speed Limits ถ้าเป็นไปได้ให้จำกัดความเร็ว - + &Top Toolbar &เครื่องมือด้านบน - + Display Top Toolbar แสดงแถบเครื่องมือด้านบน - + Status &Bar สถานะ &บาร์ - + Filters Sidebar - + S&peed in Title Bar ความเร็วในไตเติ้ลบาร์ - + Show Transfer Speed in Title Bar แสดงความเร็วการถ่ายโอนในไตเติ้ลบาร์ - + &RSS Reader &RSS ผู้อ่าน - + Search &Engine ค้นหา &กลไล - + L&ock qBittorrent ล็อก qBittorrent - + Do&nate! สนับสนุน! - + + Sh&utdown System + + + + &Do nothing - + Close Window ปิดหน้าต่าง - R&esume All - ดำเนินการต่อทั้งหมด + ดำเนินการต่อทั้งหมด - + Manage Cookies... จัดการคุกกี้... - + Manage stored network cookies จัดการคุกกี้เครือข่ายที่เก็บไว้ - + Normal Messages ข้อความปกติ - + Information Messages ข้อความข้อมูล - + Warning Messages ข้อความเตือน - + Critical Messages ข้อความสำคัญ - + &Log &บันทึก - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... - + Bottom of Queue ด้านล่างของคิว - + Move to the bottom of the queue ย้ายไปด้านล่างของคิว - + Top of Queue บนสุดของคิว - + Move to the top of the queue ย้ายไปที่ด้านบนสุดของคิว - + Move Down Queue ย้ายคิวลง - + Move down in the queue เลื่อนลงในคิว - + Move Up Queue ย้ายคิวขึ้น - + Move up in the queue เลื่อนขึ้นในคิว - + &Exit qBittorrent &ออก qBittorrent - + &Suspend System &ระงับระบบ - + &Hibernate System &ระบบไฮเบอร์เนต - S&hutdown System - ปิดระบบ + ปิดระบบ - + &Statistics &สถิติ - + Check for Updates ตรวจสอบอัพเดต - + Check for Program Updates ตรวจสอบการอัพเดตโปรแกรม - + &About &เกี่ยวกับ - &Pause - &หยุด + &หยุด - P&ause All - หยุดทั้งหมด + หยุดทั้งหมด - + &Add Torrent File... &เพิ่มไฟล์ทอร์เรนต์... - + Open เปิด - + E&xit ออก - + Open URL เปิด URL - + &Documentation &เอกสารประกอบ - + Lock ล็อก - - - + + + Show แสดง - + Check for program updates ตรวจสอบการอัพเดตโปรแกรม - + Add Torrent &Link... เพิ่มทอร์เรนต์&ลิ้งก์... - + If you like qBittorrent, please donate! ถ้าคุณชอบ qBittorrent, สนับสนุนเรา! - - + + Execution Log บันทึกการดำเนินการ - + Clear the password ล้างรหัส - + &Set Password &ตั้งพาสเวิร์ด - + Preferences กำหนดค่า - + &Clear Password &ยกเลิกพาสเวิร์ด - + Transfers ถ่ายโอน - - + + qBittorrent is minimized to tray qBittorrent ย่อขนาดลงในถาด - - - + + + This behavior can be changed in the settings. You won't be reminded again. อาการนี้สามารถเปลี่ยนแปลงได้ในการตั้งค่า คุณจะไม่ได้รับการแจ้งเตือนอีก - + Icons Only ไอคอนเท่านั้น - + Text Only ข้อความเท่านั้น - + Text Alongside Icons ข้อความข้างไอคอน - + Text Under Icons ข้อความใต้ไอคอน - + Follow System Style ทำตามรูปแบบระบบ - - + + UI lock password UI ล็อกรหัส - - + + Please type the UI lock password: กรุณาพิมพ์รหัสล็อก UI: - + Are you sure you want to clear the password? คุณมั่นใจว่าต้องการล้างรหัส ? - + Use regular expressions - - Search - ค้นหา + + + Search Engine + เครื่องมือค้นหา - - Transfers (%1) - ถ่ายโอน (%1) + + Search has failed + - Recursive download confirmation - ยืนยันการดาวน์โหลดซ้ำ + + Search has finished + การค้นหาเสร็จสิ้น - Never - ไม่เลย + + Search + ค้นหา + + + + Transfers (%1) + ถ่ายโอน (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent เพิ่งได้รับการอัปเดตและจำเป็นต้องเริ่มต้นใหม่เพื่อให้การเปลี่ยนแปลงมีผล. - + qBittorrent is closed to tray qBittorrent ปิดถาด - + Some files are currently transferring. บางไฟล์กำลังถ่ายโอน - + Are you sure you want to quit qBittorrent? คุณมั่นใจว่าต้องการปิด qBittorrent? - + &No &ไม่ - + &Yes &ใช่ - + &Always Yes &ใช่เสมอ - + Options saved. บันทึกตัวเลือกแล้ว - %1/s - s is a shorthand for seconds - %1/วินาที + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime ไม่มีรันไทม์ Python - + qBittorrent Update Available qBittorrent มีการอัพเดตที่พร้อมใช้งาน - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Python iจำเป็นต้องใช้เครื่องมือค้นหา แต่เหมือนจะไม่ได้ติดตั้ง. คุณต้องการที่จะติดตั้งตอนนี้? - + Python is required to use the search engine but it does not seem to be installed. จำเป็นต้องใช้ Python เพื่อใช้เครื่องมือค้นหา แต่ดูเหมือนว่าจะไม่ได้ติดตั้งไว้ - - + + Old Python Runtime รันไทม์ Python เก่า - + A new version is available. มีเวอร์ชันใหม่พร้อมใช้งาน - + Do you want to download %1? คุณต้องการที่จะดาวน์โหลด %1? - + Open changelog... เปิด การบันทึกการเปลี่ยนแปลง... - + No updates available. You are already using the latest version. ไม่มีอัพเดตพร้อมใช้งาน คุณกำลังใช้เวอร์ชันล่าสุดอยู่แล้ว - + &Check for Updates &ตรวจสอบการอัพเดต - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + + Paused + หยุดชั่วคราว + + + Checking for Updates... กำลังตรวจสอบการอัพเดต - + Already checking for program updates in the background ตรวจสอบการอัพเดตโปรแกรมในเบื้องหลังแล้ว - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error ดาวน์โหลดล้มเหลว - Python setup could not be downloaded, reason: %1. Please install it manually. - ไม่สามารถดาวน์โหลดการตั้งค่า Python ได้, เหตุผล: %1. + ไม่สามารถดาวน์โหลดการตั้งค่า Python ได้, เหตุผล: %1. กรุณาติดตั้งด้วยตัวเอง. - - + + Invalid password รหัสผ่านไม่ถูกต้อง - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long รหัสผ่านต้องมีความยาวอย่างน้อย 3 อักขระ - - - + + + RSS (%1) RSS (%1) - + The password is invalid รหัสผ่านไม่ถูกต้อง - + DL speed: %1 e.g: Download speed: 10 KiB/s ความเร็วดาวน์โหลด: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s ความเร็วส่งต่อ: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [ดาวน์โหลด: %1, อัพโหลด: %2] qBittorrent %3 - - - + Hide ซ่อน - + Exiting qBittorrent กำลังออก qBittorrent - + Open Torrent Files เปิดไฟล์ทอร์เรนต์ - + Torrent Files ไฟล์ทอร์เรนต์ @@ -4149,133 +4381,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) ขนาดไฟล์ (%1) เกินขีดจำกัดการดาวน์โหลด (%2) - + Exceeded max redirections (%1) การเปลี่ยนเส้นทางเกินขีดจำกัด (%1) - + Redirected to magnet URI เปลี่ยนเส้นทางไปยัง magnet URI - + The remote host name was not found (invalid hostname) ไม่พบชื่อโฮสต์ระยะไกล (ชื่อโฮสต์ไม่ถูกต้อง) - + The operation was canceled การดำเนินการถูกยกเลิก - + The remote server closed the connection prematurely, before the entire reply was received and processed เซิร์ฟเวอร์ระยะไกลถูกปิดการเชื่อมต่อก่อนกำหนด ก่อนที่จะได้รับและประมวลผล - + The connection to the remote server timed out หมดเวลาการเชื่อมต่อเซิร์ฟเวอร์ระยะไกล - + SSL/TLS handshake failed SSL/TLS การจับมือล้มเหลว - + The remote server refused the connection เซิร์ฟเวอร์ระยะไกลปฏิเสธการเชื่อมต่อ - + The connection to the proxy server was refused การเชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ถูกปฏิเสธ - + The proxy server closed the connection prematurely พร็อกซีเซิร์ฟเวอร์ปิดการเชื่อมต่อก่อนกำหนด - + The proxy host name was not found ไม่พบชื่อโฮสต์พร็อกซี - + The connection to the proxy timed out or the proxy did not reply in time to the request sent การเชื่อมต่อกับพร็อกซีหมดเวลาหรือพร็อกซีไม่ตอบสนองในเวลาที่ส่งคำขอ - + The proxy requires authentication in order to honor the request but did not accept any credentials offered พร็อกซีต้องการ การรับรองความถูกต้องเพื่อให้เป็นไปตามคำขอ แต่ไม่ยอมรับข้อมูลรับรองที่เสนอ - + The access to the remote content was denied (401) การเข้าถึงเนื้อหาระยะไกลถูกปฏิเสธ (401) - + The operation requested on the remote content is not permitted ไม่อนุญาตให้ดำเนินการที่ร้องขอกับเนื้อหาระยะไกล - + The remote content was not found at the server (404) ไม่พบเซิร์ฟเวอร์ระยะไกลที่ (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted เซิร์ฟเวอร์ระยะไกลต้องการการรับรองความถูกต้องเพื่อให้บริการเนื้อหา แต่ไม่ยอมรับข้อมูลรับรองที่ให้มา - + The Network Access API cannot honor the request because the protocol is not known การเข้าถึงเครือข่าย API ไม่สามารถปฏิบัติตามคำขอได้เนื่องจากไม่ทราบโปรโตคอล - + The requested operation is invalid for this protocol การดำเนินการที่ร้องขอไม่ถูกต้องสำหรับโปรโตคอลนี้ - + An unknown network-related error was detected ตรวจพบข้อผิดพลาดเกี่ยวกับเครือข่ายที่ไม่รู้จัก - + An unknown proxy-related error was detected ตรวจพบข้อผิดพลาดเกี่ยวกับพร็อกซีที่ไม่รู้จัก - + An unknown error related to the remote content was detected ตรวจพบข้อผิดพลาดที่ไม่รู้จักที่เกี่ยวข้องกับเนื้อหาระยะไกล - + A breakdown in protocol was detected ตรวจพบรายละเอียดในโปรโตคอล - + Unknown error ไม่สามารถระบุข้อผิดพลาด @@ -4283,7 +4515,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" ละเว้น SSL ล้มเหลว, URL: "%1", ล้มเหลว: "%2" @@ -5655,476 +5892,516 @@ Please install it manually. บิตทอร์เรนต์ - + RSS RSS - Web UI - เว็บ UI + เว็บ UI - + Advanced ขั้นสูง - + Customize UI Theme... - + Transfer List รายชื่อการถ่ายโอน - + Confirm when deleting torrents ยืนยันเมื่อทำการลบทอร์เรนต์ - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. ใช้สีแถวสลับกัน - + Hide zero and infinity values ซ่อนค่าศูนย์และอินฟินิตี้ - + Always เสมอ - Paused torrents only - หยุดทอร์เรนต์ชั่วคราวเท่านั้น + หยุดทอร์เรนต์ชั่วคราวเท่านั้น - + Action on double-click การดำเนินการเมื่อดับเบิลคลิก - + Downloading torrents: กำลังดาวน์โหลดทอร์เรนต์: - - Start / Stop Torrent - เริ่ม / หยุด ทอร์เรนต์ + เริ่ม / หยุด ทอร์เรนต์ - - + + Open destination folder เปิดโฟลเดอร์ปลายทาง - - + + No action ไม่มีการกระทำ - + Completed torrents: ทอร์เรนต์ที่เสร็จสมบูรณ์: - + Auto hide zero status filters - + Desktop เดสก์ทอป - + Start qBittorrent on Windows start up เริ่ม qBittorrent ตอนเปิดเครื่อง - + Show splash screen on start up แสดงหน้าจอเริ่มต้น เมื่อเริ่มต้น - + Confirmation on exit when torrents are active ยืนยันการออกเมื่อมีการเปิดใช้งานทอร์เรนต์อยู่ - + Confirmation on auto-exit when downloads finish ยืนยันการออกอัตโนมัติเมื่อการดาวน์โหลดเสร็จสิ้น - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB กิบิไบต์ - + Torrent content layout: เลย์เอาต์เนื้อหาทอร์เรนต์: - + Original ต้นฉบับ - + Create subfolder สร้างโฟลเดอร์ย่อย - + Don't create subfolder ไม่ต้องสร้างโฟลเดอร์ย่อย - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue เลื่อนไปลำดับแรก - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + เก็บไฟล์ที่ไม่ได้เลือกไว้ในโฟลเดอร์ ".unwanted" + + + Add... เพิ่ม... - + Options.. ตัวเลือก.. - + Remove ลบ - + Email notification &upon download completion การแจ้งเตือนทางอีเมล เมื่อดาวน์โหลดเสร็จสิ้น - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: โปรโตคอลการเชื่อมต่อแบบเพียร์: - + Any ใดๆ - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering การกรอง IP - + Schedule &the use of alternative rate limits กำหนดการใช้ การจำกัดอัตราทางเลือก - + From: From start time จาก: - + To: To end time ถึง: - + Find peers on the DHT network ค้นหาเพียร์ในเครือข่าย DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption ยืนยันการเข้ารหัส - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">ข้อมูลเพิ่มเติม</a>) - + Maximum active checking torrents: - + &Torrent Queueing &ทอร์เรนต์กำลังเข้าคิว - + When total seeding time reaches - + When inactive seeding time reaches - - A&utomatically add these trackers to new downloads: - - - - + RSS Reader RSS ผู้อ่าน - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: - - - + + + min minutes นาที - + Seeding Limits จำกัดการส่งต่อ - Pause torrent - หยุดทอร์เรนต์ + หยุดทอร์เรนต์ - + Remove torrent ลบทอร์เรนต์ - + Remove torrent and its files ลบทอร์เรนต์และไฟล์ของมัน - + Enable super seeding for torrent เปิดใช้งานการส่งต่อขั้นสูงสำหรับทอร์เรนต์ - + When ratio reaches เมื่ออัตราส่วนถึง - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS ทอร์เรนต์ดาวน์โหลดอัตโนมัติ - + Enable auto downloading of RSS torrents เปิดใช้งานการดาวน์โหลด RSS ทอร์เรนต์อัตโนมัติ - + Edit auto downloading rules... แก้ไขกฎการดาวน์โหลดอัตโนมัติ ... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: ตัวกรอง: - + Web User Interface (Remote control) Web User Interface (รีโมทคอนโทรล) - + IP address: IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never ไม่เลย - + ban for: แบนสำหรับ: - + Session timeout: หมดเวลา: - + Disabled ปิดการใข้งาน - - Enable cookie Secure flag (requires HTTPS) - - - - + Server domains: โดเมนเซิร์ฟเวอร์: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6133,441 +6410,482 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost ข้ามการตรวจสอบสำหรับไคลเอนต์บน localhost - + Bypass authentication for clients in whitelisted IP subnets ข้ามการตรวจสอบสำหรับไคลเอนต์ในเครือข่ายย่อยของ IP ที่อนุญาตพิเศษ - + IP subnet whitelist... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area ย่อ qBittorrent ให้เล็กสุดไปยังพื้นที่แจ้งเตือน - + + Search + ค้นหา + + + + WebUI + + + + Interface หน้าตา - + Language: ภาษา: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: - - + + Normal ธรรมดา - + File association - + Use qBittorrent for .torrent files ใช้ qBittorrent สำหรับไฟล์ .torrent - + Use qBittorrent for magnet links ใช้ qBittorrent สำหรับลิงก์แม่เหล็ก - + Check for program updates ตรวจสอบการอัพเดตโปรแกรม - + Power Management จัดการพลังงาน - + + &Log Files + + + + Save path: บันทึกเส้นทาง: - + Backup the log file after: - + Delete backup logs older than: + ลบล็อกสำรองที่มีอายุมากกว่า: + + + + Show external IP in status bar - + When adding a torrent เมื่อเพิ่มทอร์เรนต์ - + Bring torrent dialog to the front นำกล่องโต้ตอบทอร์เรนต์มาไว้ข้างหน้า - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled ลบไฟล์ .torrent ที่มีการยกเลิกการเพิ่มด้วย - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management - + Default Torrent Management Mode: โหมดการจัดการทอร์เรนต์เริ่มต้น: - + Manual จัดการเอง - + Automatic อัตโนมัติ - + When Torrent Category changed: เมื่อหมวดหมู่ทอร์เรนต์เปลี่ยนไป: - + Relocate torrent ย้ายตำแหน่งทอร์เรนต์ - + Switch torrent to Manual Mode เปลี่ยนโหมดทอร์เรนต์เป็นแบบจัดการเอง - - + + Relocate affected torrents ย้ายตำแหน่งทอร์เรนต์ที่ได้รับผล - - + + Switch affected torrents to Manual Mode เปลี่ยนทอร์เรนต์ที่ได้รับผลกระทบเป็นแบบจัดการเอง - + Use Subcategories ใช้งานหมวดหมู่ย่อย - + Default Save Path: ตำแหน่งที่บันทึกเริ่มต้น - + Copy .torrent files to: คัดลอกไฟล์ .torrent ไปที่: - + Show &qBittorrent in notification area - - &Log file - - - - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: คัดลอกไฟล์ .torrent เพื่อดาวน์โหลดเสร็จแล้วไปที่: - + Pre-allocate disk space for all files - + Use custom UI Theme - + UI Theme file: - + Changing Interface settings requires application restart - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - - Show torrent options - - - - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding ยับยั้งระบบสลีปเมื่อทอร์เรนต์กำลังเผยแพร่ - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days วัน - + months Delete backup logs older than 10 months เดือน - + years Delete backup logs older than 10 years ปี - + Log performance warnings - - The torrent will be added to download list in a paused state - - - - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - + เงื่อนไขในการหยุดทอร์เรนต์: - - + + None ไม่มี - - + + Metadata received ข้อมูลรับ Metadata - - + + Files checked ไฟล์ตรวจสอบแล้ว - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6584,841 +6902,902 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver ถึง: - + SMTP server: เซิฟเวอร์ SMTP: - + Sender - + From: From sender จาก: - + This server requires a secure connection (SSL) - - + + Authentication การยืนยันตัวตน - - - - + + + + Username: ชื่อผู้ใช้: - - - - + + + + Password: รหัสผ่าน: - + Run external program - - Run on torrent added - - - - - Run on torrent finished - - - - + Show console window - + TCP and μTP TCP และ μTP - + Listening Port - + Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Random สุ่ม - + Use UPnP / NAT-PMP port forwarding from my router ใช้ UPnP / NAT-PMP พอร์ตการส่งต่อ จากเร้าเตอร์ - + Connections Limits จำกัดการเชื่อมต่อ - + Maximum number of connections per torrent: - + Global maximum number of connections: - + Maximum number of upload slots per torrent: - + Global maximum number of upload slots: - + Proxy Server - + Type: - + ประเภท: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: โฮสต์: - - - + + + Port: พอร์ต: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... - + Apply to trackers - + Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s กิบิไบต์/วินาที - - + + Upload: อัพโหลด: - - + + Download: ดาวน์โหลด: - + Alternative Rate Limits ถ้าเป็นไปได้ให้จำกัดความเร็ว - + Start time เวลาเริ่ม - + End time เวลาจบ - + When: เมื่อไร: - + Every day ทุกวัน - + Weekdays วันธรรมดา - + Weekends วันหยุดสุดสัปดาห์ - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol - + Privacy ความเป็นส่วนตัว - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: วิธีการเข้ารหัส: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode เปิดใช้งานโหมดไม่ระบุตัวตน - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds วินาที - + Torrent inactivity timer: - + then - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: ใบรับรอง: - + Key: คีย์: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - - - - - Use alternative Web UI - + เปลี่ยนรหัสปัจจุบัน - + Files location: ตำแหน่งไฟล์: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security ความปลอดภัย - + Enable clickjacking protection เปิดใช้งานการป้องกันการคลิกแจ็ค - + Enable Cross-Site Request Forgery (CSRF) protection - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: บริการ: - + Register ลงทะเบียน - + Domain name: ชื่อโดเมน: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file เลือก qBittorrent UI ธีมไฟล์ - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. ไม่มีการตั้งเงื่อนไขการหยุด - + Torrent will stop after metadata is received. ทอเร้นต์หยุดเมื่อได้รับข้อมูล metadata - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name %N: ชื่อทอร์เรนต์ - + %L: Category %L: หมวดหมู่ - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path %D: บันทึกเส้นทาง - + %C: Number of files %C: จำนวนไฟล์ - + %Z: Torrent size (bytes) %Z: ขนาดไฟล์ทอร์เรนต์ (ไบต์) - + %T: Current tracker %T: ตัวติดตามปัจจุบัน - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (ไม่มี) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate ใบรับรอง - + Select certificate เลือกใบรับรอง - + Private key คีย์ส่วนตัว - + Select private key เลือกคีย์ส่วนตัว - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor - + Adding entry failed - - Location Error - ตำแหน่งล้มเหลว + + The WebUI username must be at least 3 characters long. + - - The alternative Web UI files location cannot be blank. - + + The WebUI password must be at least 6 characters long. + รหัสผ่าน WebUI ต้องมีความยาวอย่างน้อย 6 อักขระ + + + + Location Error + ตำแหน่งล้มเหลว - - + + Choose export directory เลือกหมวดหมู่การส่งออก - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: แท็ก (คั่นด้วยเครื่องหมายจุลภาค) - + %I: Info hash v1 (or '-' if unavailable) %I: ข้อมูลแฮช v1 (หรือ '-' หากไม่มี) - + %J: Info hash v2 (or '-' if unavailable) %I: ข้อมูลแฮช v2 (หรือ '-' หากไม่มี) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + โทเรนต์ที่มีข้อมูล Metadata ตั้งแต่แรกจะถูกเพิ่มในสถานะหยุด + + + Choose an IP filter file - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + รีเฟรชสำเร็จ - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number วิเคราะห์ IP ที่ให้มาสำเร็จ : %1 ข้อบังคับถูกนำไปใช้ - + Preferences กำหนดค่า - + Time Error - + The start time and the end time can't be the same. - - + + Length Error - - - The Web UI username must be at least 3 characters long. - - - - - The Web UI password must be at least 6 characters long. - - PeerInfo - + Unknown ไม่ทราบ - + Interested (local) and choked (peer) - + Interested (local) and unchoked (peer) - + Interested (peer) and choked (local) - + Interested (peer) and unchoked (local) - + Not interested (local) and unchoked (peer) - + Not interested (peer) and unchoked (local) - + Optimistic unchoke - + Peer snubbed เพียร์ถูกปฏิเสธ - + Incoming connection - + Peer from DHT เพียร์จาก DHT - + Peer from PEX เพียร์จาก PEX - + Peer from LSD เพียร์จาก LSD - + Encrypted traffic - + Encrypted handshake + + + Peer is using NAT hole punching + + PeerListWidget @@ -7519,7 +7898,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not Add peers... - + เพิ่มเพียร์... @@ -7561,7 +7940,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not No peer was selected - + ท่านไม่ได้เลือกเพียร์ @@ -7574,7 +7953,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not เพียร์ "%1" ถูกแบนด้วยตนเอง - + N/A ไม่สามารถใช้ได้ @@ -7597,7 +7976,7 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not รายชื่อเพียร์ที่จะเพิ่ม (หนึ่ง IP ต่อบรรทัด): - + Format: IPv4:port / [IPv6]:port @@ -7638,27 +8017,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: ไฟล์ในชิ้นนี้: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7671,58 +8050,58 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not ค้นหาปลักอิน - + Installed search plugins: - + ปลั๊กอินสำหรับการค้นหาที่ติดตั้งแล้ว: - + Name ชื่อ - + Version เวอร์ชั่น - + Url Url - - + + Enabled เปิดใช้งาน - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one - + ติดตั้งอันใหม่ - + Check for updates ตรวจสอบอัพเดต - + Close ปิด - + Uninstall ถอนการติดตั้ง @@ -7800,7 +8179,7 @@ Those plugins were disabled. Select search plugins - + เลือกปลั๊กอินสำหรับการค้นหา @@ -7810,7 +8189,7 @@ Those plugins were disabled. All your plugins are already up to date. - + ปลั๊กอินทั้งหมดของท่านอยู่ในเวอร์ชั่นปัจจุบัน @@ -7820,17 +8199,17 @@ Those plugins were disabled. Search plugin install - + ติดตั้งปลั๊กอินสำหรับการค้นหา Couldn't install "%1" search engine plugin. %2 - + ไม่สามารถติดตั้ง "%1" ปลั๊กอินสำหรับการค้นหา %2 Couldn't update "%1" search engine plugin. %2 - + ไม่สามารถอัปเดต "%1" ปลั๊กอินสำหรับการค้นหา %2 @@ -7841,19 +8220,19 @@ Those plugins were disabled. - + Search plugin source: - + Local file - + ไฟล์ในอุปกรณ์ - + Web link - + ลิงก์ของเว็บ @@ -7892,47 +8271,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview แสดงตัวอย่าง - + Name ชื่อ - + Size ขนาด - + Progress กระบวนการ - + Preview impossible - + ไม่สามารถพรีวิว - + Sorry, we can't preview this file: "%1". - + ขออภัย เราไม่สามารถพรีวิวไฟล์นี้ได้: "%1" - + Resize columns ปรับขนาดคอลัมภ์ - + Resize all non-hidden columns to the size of their contents @@ -7945,27 +8324,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8006,12 +8385,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: ดาวน์โหลด: - + Availability: @@ -8026,53 +8405,53 @@ Those plugins were disabled. ถ่ายโอน - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) ใช้เวลาไป: - + ETA: เวลาโดยประมาณ - + Uploaded: อัพโหลด: - + Seeds: ผู้ส่ง: - + Download Speed: ความเร็วในการดาวน์โหลด - + Upload Speed: ความเร็วในการอัพโหลด - + Peers: เพียร์: - + Download Limit: จำกัดดาวน์โหลด: - + Upload Limit: จำกัดอัปโหลด: - + Wasted: @@ -8082,193 +8461,249 @@ Those plugins were disabled. - + Information ข้อมูล - + Info Hash v1: ข้อมูลแฮช v1: - + Info Hash v2: ข้อมูลแฮช v2: - + Comment: ความคิดเห็น: - + Select All เลือกทั้งหมด - + Select None ไม่เลือกเลย - + Share Ratio: อัตราส่วนการแบ่งปัน: - + Reannounce In: - + Last Seen Complete: ล่าสุดเสร็จสมบูรณ์: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: ขนาดทั้งหมด: - + Pieces: ชิ้นส่วน: - + Created By: สร้างโดย: - + Added On: เพิ่มเมื่อ: - + Completed On: เสร็จเมื่อ: - + Created On: + สร้างเมื่อ: + + + + Private: - + Save Path: - + บันทึกไว้ใน: - + Never ไม่เลย - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - - + + %1 (%2 this session) %1 (เซสชั่นนี้ %2) - - + + + N/A ไม่สามารถใช้ได้ - + + Yes + ใช่ + + + + No + ไม่ + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (ส่งต่อสำหรับ %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (ทั้งหมด %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (เฉลี่ย %2.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - เผยแพร่เว็บใหม่ + เผยแพร่เว็บใหม่ - Remove Web seed - ลบการเผยแพร่เว็บ + ลบการเผยแพร่เว็บ - Copy Web seed URL - คัดลอก URL ส่งต่อเว็บ + คัดลอก URL ส่งต่อเว็บ - Edit Web seed URL - แก้ไข URL ส่งต่อเว็บ + แก้ไข URL ส่งต่อเว็บ - + Filter files... กรองไฟล์... - - Speed graphs are disabled + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... - + + Speed graphs are disabled + ปิดใช้งานกราฟความเร็วแล้ว + + + You can enable it in Advanced Options - New URL seed New HTTP source - ส่งต่อ URL ใหม่ + ส่งต่อ URL ใหม่ - New URL seed: - ส่งต่อ URL ใหม่: + ส่งต่อ URL ใหม่: - - This URL seed is already in the list. - การส่งต่อ URL นี้มีอยู่แล้วในรายการ + การส่งต่อ URL นี้มีอยู่แล้วในรายการ - + Web seed editing แก้ไขการส่งต่อเว็บ - + Web seed URL: URL ส่งต่อเว็บ: @@ -8287,22 +8722,22 @@ Those plugins were disabled. - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8310,22 +8745,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8361,12 +8796,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. - + %1 (line: %2, column: %3, offset: %4). @@ -8374,99 +8809,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. ไม่มีโฟลเดอร์หลัก: %1 @@ -8490,8 +8925,8 @@ Those plugins were disabled. - - + + Mark items read ทำเครื่องหมายรายการที่อ่านแล้ว @@ -8513,135 +8948,135 @@ Those plugins were disabled. Torrents: (double-click to download) - + ทอร์เรนต์:(คลิกสองครั้งเพื่อดาวน์โหลด) - - + + Delete ลบ - + Rename... เปลี่ยนชื่อ... - + Rename เปลี่ยนชื่อ - - + + Update อัพเดท - + New subscription... - - + + Update all feeds อัพเดทฟีดทั้งหมด - + Download torrent ดาวน์โหลดทอร์เรนต์ - + Open news URL เปิด URL ข่าว - + Copy feed URL คัดลอก URL ฟีด - + New folder... โฟลเดอร์ใหม่... - + Edit feed URL... - + แก้ไข URL ของหน้าฟีด... - + Edit feed URL - + Please choose a folder name โปรดเลือกชื่อโฟลเดอร์ - + Folder name: ชื่อโฟลเดอร์: - + New folder โฟลเดอร์ใหม่ - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation ยืนยันการลบ - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed - + New feed name: ชื่อฟีดใหม่: - + Rename failed - + เปลี่ยนชื่อไม่สำเร็จ - + Date: วันที่: - + Feed: - + Author: ผู้เขียน: @@ -8649,38 +9084,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. ต้องติดตั้ง Python เพื่อใช้เครื่องมือค้นหา - + Unable to create more than %1 concurrent searches. - - + + Offset is out of range - + All plugins are already up to date. - + ปลั๊กอินทั้งหมดอยู่ในเวอร์ชั่นปัจจุบันแล้ว - + Updating %1 plugins - + กำลังอัปเดต %1 ปลั๊กอิน - + Updating plugin %1 - + Failed to check for plugin updates: %1 @@ -8690,7 +9125,7 @@ Those plugins were disabled. Results(xxx) - + ผลลัพธ์(xxx) @@ -8755,132 +9190,146 @@ Those plugins were disabled. ขนาด: - + Name i.e: file name ชื่อ - + Size i.e: file size ขนาด - + Seeders i.e: Number of full sources ผู้ส่ง - + Leechers i.e: Number of partial sources ผู้รับ - Search engine - + เครื่องมือค้นหา - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + ชื่อทอร์เรนต์เท่านั้น - + Everywhere - + Use regular expressions - + Open download window - + Download ดาวน์โหลด - + Open description page - + Copy คัดลอก - + Name ชื่อ - + Download link ลิ้งค์ดาวน์โหลด - + Description page URL - + Searching... กำลังค้นหา... - + Search has finished การค้นหาเสร็จสิ้น - + Search aborted - + ยกเลิกการค้นหา - + An error occurred during search... - + เกิดข้อผิดพลาดระหว่างการค้นหา... - + Search returned no results - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility การเปิดเผยคอลัมน์ - + Resize columns ปรับขนาดคอลัมภ์ - + Resize all non-hidden columns to the size of their contents @@ -8888,104 +9337,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories ทุกประเภท - + Movies ภาพยนตร์ - + TV shows รายการทีวี - + Music เพลง - + Games เกม - + Anime อะนิเมะ - + Software ซอฟต์แวร์ - + Pictures รูปภาพ - + Books หนังสือ - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8995,112 +9444,147 @@ Those plugins were disabled. - - - - Search ค้นหา - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. - + Search plugins... ค้นหาปลั๊กอิน... - + A phrase to search for. - + Spaces in a search term may be protected by double quotes. - + Example: Search phrase example ตัวอย่าง: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted - + All plugins ปลั๊กอินทั้งหมด - + Only enabled - + + + Invalid data format. + + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted - + + Refresh + + + + Close tab ปิดแท็บ - + Close all tabs ปิดทุกแท็บ - + Select... เลือก... - - - + + Search Engine เครื่องมือค้นหา - + + Please install Python to use the Search Engine. โปรดติดตั้ง Python เพื่อใช้เครื่องมือค้นหา - + Empty search pattern - + Please type a search pattern first - + + Stop หยุด - - Search has finished - การค้นหาเสร็จสิ้น + Search has finished + การค้นหาเสร็จสิ้น + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed + + Failed to save search history. File: "%1". Error: "%2" @@ -9214,34 +9698,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: อัพโหลด: - - - + + + - - - + + + KiB/s กิบิไบต์/วินาที - - + + Download: ดาวน์โหลด: - + Alternative speed limits ถ้าเป็นไปได้ให้จำกัดความเร็ว @@ -9420,7 +9904,7 @@ Click the "Search plugins..." button at the bottom right of the window Cache statistics - + สถิติแคช @@ -9433,32 +9917,32 @@ Click the "Search plugins..." button at the bottom right of the window - + Connected peers: เพียร์ที่เชื่อมต่อ: - + All-time share ratio: - + All-time download: เวลาดาวน์โหลดทั้งหมด: - + Session waste: เซสชันเสีย: - + All-time upload: เวลาอัปโหลดทั้งหมด: - + Total buffer size: ขนาดบัฟเฟอร์ทั้งหมด: @@ -9473,12 +9957,12 @@ Click the "Search plugins..." button at the bottom right of the window - + Write cache overload: - + Read cache overload: @@ -9497,51 +9981,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: สถานะการเชื่อมต่อ: - - + + No direct connections. This may indicate network configuration problems. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 โหนด - + qBittorrent needs to be restarted! ต้องเริ่มต้น qBittorrent ใหม่! - - - + + + Connection Status: สถานะการเชื่อมต่อ: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. ออฟไลน์. ซึ่งมักจะหมายความว่า qBittorrent ไม่สามารถเชื่อมต่อพอร์ตที่เลือกสำหรับการเชื่อมต่อขาเข้า - + Online ออนไลน์ - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9570,14 +10070,22 @@ Click the "Search plugins..." button at the bottom right of the window เสร็จสมบูรณ์ (0) - Resumed (0) - ดำเนินการต่อ (0) + ดำเนินการต่อ (0) - Paused (0) - หยุดชั่วคราว (0) + หยุดชั่วคราว (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9639,10 +10147,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) เสร็จสมบูรณ์ (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - หยุดชั่วคราว (%1) + หยุดชั่วคราว (%1) @@ -9650,14 +10177,12 @@ Click the "Search plugins..." button at the bottom right of the window - Resume torrents - ดำเนินการทอร์เรนต์ต่อ + ดำเนินการทอร์เรนต์ต่อ - Pause torrents - หยุดทอร์เรนต์ + หยุดทอร์เรนต์ @@ -9665,9 +10190,8 @@ Click the "Search plugins..." button at the bottom right of the window ลบทอเร้นต์ - Resumed (%1) - ดำเนินการต่อ (%1) + ดำเนินการต่อ (%1) @@ -9708,17 +10232,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags แท็ก - + All ทั้งหมด - + Untagged ไม่ติดแท็ก @@ -9726,52 +10250,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... เพื่มแท็ก... - + Remove tag ลบแท็ก - + Remove unused tags ลบแท็กที่ไม่ได้ใช้ - Resume torrents - ดำเนินการทอร์เรนต์ต่อ + ดำเนินการทอร์เรนต์ต่อ - Pause torrents - หยุดทอร์เรนต์ + หยุดทอร์เรนต์ - + Remove torrents ลบทอเร้นต์ - New Tag - เท็กใหม่ + เท็กใหม่ + + + + Start torrents + - + + Stop torrents + + + + Tag: เท็ก: - + + Add tag + + + + Invalid tag name ชื่อแท็กไม่ถูกต้อง - + Tag name '%1' is invalid ชื่อแท็ก '%1' is ไม่ถูกต้อง @@ -9911,32 +10447,32 @@ Please choose a different name and try again. TorrentContentModel - + Name ชื่อ - + Progress กระบวนการ - + Download Priority ลำดับความสำคัญการดาวน์โหลด - + Remaining เหลืออยู่ - + Availability พร้อมใช้งาน - + Total Size ขนาดรวม @@ -9981,102 +10517,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error การเปลี่ยนชื่อผิดพลาด - + Renaming กำลังเปลี่ยนชื่อ - + New name: ชื่อใหม่: - + Column visibility คมลัมภ์ที่แสดงได้ - + Resize columns ปรับขนาดคอลัมภ์ - + Resize all non-hidden columns to the size of their contents - + Open เปิด - + Open containing folder เปิดแฟ้มเก็บ - + Rename... เปลี่ยนชื่อ... - + Priority ความสำคัญ - - + + Do not download ไม่ต้องดาวน์โหลด - + Normal ปกติ - + High สูง - + Maximum สูงสุด - + By shown file order แสดงลำดับไฟล์โดย - + Normal priority ลำดับความสำคัญปกติ - + High priority ลำดับความสำคัญสูง - + Maximum priority ลำดับความสำคัญสูงสุด - + Priority by shown file order ลำดับความสำคัญตามลำดับไฟล์ที่แสดง + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10101,13 +10655,13 @@ Please choose a different name and try again. - + Select file เลือกไฟล์ - + Select folder เลือกแฟ้ม @@ -10132,58 +10686,10 @@ Please choose a different name and try again. - + Auto อัตโนมัติ - - 16 KiB - 16 กิบิไบต์ - - - 32 KiB - 32 กิบิไบต์ - - - 64 KiB - 64 กิบิไบต์ - - - 128 KiB - 128 กิบิไบต์ - - - 256 KiB - 256 กิบิไบต์ - - - 512 KiB - 512 กิบิไบต์ - - - 1 MiB - 1 เมบิไบต์ - - - 2 MiB - 2 เมบิไบต์ - - - 4 MiB - 4 เมบิไบต์ - - - 8 MiB - 8 เมบิไบต์ - - - 16 MiB - 16 เมบิไบต์ - - - 32 MiB - 32 เมบิไบต์ - Calculate number of pieces: @@ -10230,88 +10736,83 @@ Please choose a different name and try again. - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: - + Comments: หมายเหตุ: - + Source: ต้นทาง: - + Progress: ความคืบหน้า: - + Create Torrent สร้างทอเร้นต์ - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) ไฟล์ทอเร้นต์ (*.torrent) - - Reason: %1 - เหตุผล: %1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - + เพิ่มทอร์เรนต์ล้มเหลว - + Torrent creator ผู้สร้างทอเร้นต์ - + Torrent created: ทอเร้นต์สร้างเมื่อ: @@ -10319,32 +10820,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10352,27 +10853,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10380,14 +10881,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - ข้อมูลไม่ถูกต้อง + ข้อมูลไม่ถูกต้อง @@ -10418,127 +10913,195 @@ Please choose a different name and try again. ใช้เส้นทางอื่นสำหรับ torrent ที่ไม่สมบูรณ์ - + Category: ประเภท: - + + Torrent Share Limits + + + Torrent speed limits - จำกัดความเร็วของทอร์เรนต์ + จำกัดความเร็วของทอร์เรนต์ - + Download: ดาวน์โหลด: - - + + - - + + Torrent Speed Limits + + + + + KiB/s กิบิไบต์/วินาที - + These will not exceed the global limits - + Upload: อัพโหลด: - Torrent share limits - จำกัดการแชร์ทอร์เรนต์ + จำกัดการแชร์ทอร์เรนต์ - Use global share limit - ใช้ขีดจำกัดการแชร์ทั่วโลก + ใช้ขีดจำกัดการแชร์ทั่วโลก - Set no share limit - ตั้งค่า ไม่จำกัดการแชร์ + ตั้งค่า ไม่จำกัดการแชร์ - Set share limit to - ตั้งขีดจำกัดการแชร์เป็น + ตั้งขีดจำกัดการแชร์เป็น - ratio - อัตราส่วน - - - - total minutes - + อัตราส่วน - - inactive minutes - - - - + Disable DHT for this torrent ปิดการใช้งาน DHT สำหรับทอร์เรนต์นี้ - + Download in sequential order ดาวน์โหลดตามลำดับ - + Disable PeX for this torrent - + Download first and last pieces first ดาวน์โหลดชิ้นแรกและชิ้นสุดท้ายก่อน - + Disable LSD for this torrent - + ปิดการใช้งาน LSD สำหรับทอร์เรนต์นี้ - + Currently used categories หมวดที่ใช้อยู่ - - + + Choose save path เลือกเส้นทางการบันทึก - + Not applicable to private torrents - No share limit method selected - ไม่ได้เลือกวิธีการจำกัดการแชร์ + ไม่ได้เลือกวิธีการจำกัดการแชร์ - Please select a limit method first - โปรดเลือกวิธีการจำกัดก่อน + โปรดเลือกวิธีการจำกัดก่อน + + + + TorrentShareLimitsWidget + + + + + + Default + ค่าเริ่มต้น + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + นาที + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + ลบทอร์เรนต์ + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + เปิดใช้งานการส่งต่อขั้นสูงสำหรับทอร์เรนต์ + + + + Ratio: + @@ -10549,32 +11112,36 @@ Please choose a different name and try again. - New Tag - เท็กใหม่ + เท็กใหม่ + Add tag + + + + Tag: เท็ก: - + Invalid tag name ชื่อแท็กไม่ถูกต้อง - + Tag name '%1' is invalid. - + Tag exists มีเท็กนี้อยู่ - + Tag name already exists. มีแท็กชื่อนี้อยู่แล้ว @@ -10582,115 +11149,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer ลำดับความสำคัญต้องเป็นตัวเลข - + Priority is not valid ลำดับความสำคัญไม่ถูกต้อง - + Torrent's metadata has not yet downloaded ยังไม่ได้ดาวน์โหลดข้อมูลเมตาของทอร์เรนต์ - + File IDs must be integers รหัสไอดีต้องเป็นตัวเลข - + File ID is not valid ไฟล์ไอดีไม่ถูกต้อง - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category ไม่สามารถสร้างหมวดหมู่ได้ - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory ไม่สามารถเขียนไปยังหมวดหมู่ - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name @@ -10716,245 +11298,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - กำลังทำงาน + กำลังทำงาน - + Disabled - + ปิดการใข้งาน - + Disabled for this torrent - + This torrent is private - + ทอร์เรนต์นี้เป็นทอร์เรนต์ส่วนตัว - + N/A - + ไม่สามารถใช้ได้ - + Updating... - กำลังอัพเดต... + กำลังอัพเดต... - + Not working - ไม่ทำงาน + ไม่ทำงาน - + Tracker error - + Unreachable - + Not contacted yet - - Invalid status! - - - - - URL/Announce endpoint + + Invalid state! - Tier - - - - - Protocol + URL/Announce Endpoint - Status - สถานะ - - - - Peers - เพียร์ - - - - Seeds - ผู้ส่ง - - - - Leeches - ผู้รับ - - - - Times Downloaded - เวลาที่ใช้ดาวน์โหลด + BT Protocol + - - Message - ข้อความ + + Next Announce + - - Next announce + + Min Announce - - Min announce + + Tier - - v%1 - + + Status + สถานะ - - - TrackerListWidget - Working - กำลังทำงาน + + Peers + เพียร์ - Disabled - ปิดการใข้งาน + + Seeds + ผู้ส่ง - - This torrent is private - + + Leeches + ผู้รับ - Updating... - กำลังอัพเดต... + + Times Downloaded + เวลาที่ใช้ดาวน์โหลด - Not working - ไม่ทำงาน + + Message + ข้อความ + + + TrackerListWidget - N/A - ไม่สามารถใช้ได้ + + This torrent is private + ทอร์เรนต์นี้เป็นทอร์เรนต์ส่วนตัว - + Tracker editing - + Tracker URL: - - + + Tracker editing failed - + The tracker URL entered is invalid. - + The tracker URL already exists. - + Edit tracker URL... - + Remove tracker - + Copy tracker URL - + Force reannounce to selected trackers - + Force reannounce to all trackers - URL - URL - - - Status - สถานะ - - - Seeds - ผู้ส่ง - - - Times Downloaded - เวลาที่ใช้ดาวน์โหลด - - - + Resize columns ปรับขนาดคอลัมภ์ - + Resize all non-hidden columns to the size of their contents - Peers - เพียร์ - - - + Add trackers... - Leeches - ผู้รับ - - - Message - ข้อความ - - - + Column visibility การเปิดเผยคอลัมน์ @@ -10972,37 +11500,37 @@ Please choose a different name and try again. รายการตัวติดตามที่จะเพิ่ม (หนึ่งรายการต่อบรรทัด): - + µTorrent compatible list URL: URL รายการที่เข้ากันได้กับ µTorrent: - + Download trackers list - + Add เพิ่ม - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -11010,75 +11538,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - ทั้งหมด (0) - - - Error (0) - ล้มเหลว (0) - - - Error (%1) - ล้มเหลว (%1) - - - + Warning (%1) ระวัง (%1) - + Trackerless (%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - + + Start torrents + + + + + Stop torrents + + + Resume torrents - ดำเนินการทอร์เรนต์ต่อ + ดำเนินการทอร์เรนต์ต่อ - Pause torrents - หยุดทอร์เรนต์ + หยุดทอร์เรนต์ - + Remove torrents ลบทอเร้นต์ - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter ทั้งหมด (%1) @@ -11087,7 +11610,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument @@ -11180,9 +11703,8 @@ Please choose a different name and try again. ตรวจสอบข้อมูลต่อ - Paused - หยุดชั่วคราว + หยุดชั่วคราว @@ -11207,220 +11729,262 @@ Please choose a different name and try again. ผิดพลาด - + Name i.e: torrent name ชื่อ - + Size i.e: torrent size ขนาด - + Progress % Done กระบวนการ - Status Torrent status (e.g. downloading, seeding, paused) - สถานะ + สถานะ - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + สถานะ + + + Seeds i.e. full sources (often untranslated) ผู้ส่ง - + Peers i.e. partial sources (often untranslated) เพียร์ - + Down Speed i.e: Download speed ความเร็วในการดาวน์โหลด - + Up Speed i.e: Upload speed ความเร็วในการอัพโหลด - + Ratio Share ratio อัตราส่วน - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left เวลาโดยประมาณ - + Category หมวดหมู่ - + Tags แท็ก - + Added On Torrent was added to transfer list on 01/01/2010 08:00 เพิ่มเมื่อ - + Completed On Torrent was completed on 01/01/2010 08:00 เสร็จเมื่อ: - + Tracker ติดตาม - + Down Limit i.e: Download limit จำกัดการดาวน์โหลด - + Up Limit i.e: Upload limit จำกัดการอัป - + Downloaded Amount of data downloaded (e.g. in MB) ดาวน์โหลดแล้ว - + Uploaded Amount of data uploaded (e.g. in MB) อัปโหลดแล้ว - + Session Download Amount of data downloaded since program open (e.g. in MB) การดาวน์โหลดเซสซัน - + Session Upload Amount of data uploaded since program open (e.g. in MB) การอัปโหลดเซสชัน - + Remaining Amount of data left to download (e.g. in MB) ที่เหลืออยู่ - + + Time Active + Time (duration) the torrent is active (not stopped) + ใช้เวลาไป + + + + Yes + ใช่ + + + + No + ไม่ + + Time Active Time (duration) the torrent is active (not paused) - ใช้เวลาไป + ใช้เวลาไป - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) เสร็จสมบูรณ์ - + Ratio Limit Upload share ratio limit จำกัดอัตราส่วน - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole ล่าสุดเสร็จสมบูรณ์ - + Last Activity Time passed since a chunk was downloaded/uploaded กิจกรรมล่าสุด - + Total Size i.e. Size including unwanted data ขนาดทั้งหมด - + Availability The number of distributed copies of the torrent ความพร้อมใช้งาน - + Info Hash v1 i.e: torrent info hash v1 - ข้อมูลแฮช v2: {1?} + - + Info Hash v2 i.e: torrent info hash v2 - ข้อมูลแฮช v2: {2?} + - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1 ที่แล้ว - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (ส่งเสร็จแล้วสำหรับ %2) @@ -11429,334 +11993,349 @@ Please choose a different name and try again. TransferListWidget - + Column visibility การเปิดเผยคอลัมน์ - + Recheck confirmation ตรวจสอบการยืนยันอีกครั้ง - + Are you sure you want to recheck the selected torrent(s)? คุณแน่ใจใช่ไหมว่าต้องการจะตรวจสอบไฟล์ Torrent ที่เลือก (s)? - + Rename เปลี่ยนชื่อ - + New name: ชื่อใหม่: - + Choose save path เลือกบันทึกเส้นทาง - Confirm pause - ยืนยันหยุดชั่วคราว + ยืนยันหยุดชั่วคราว - Would you like to pause all torrents? - ต้องการหยุดชั่วคราวทุกทอเร้นต์? + ต้องการหยุดชั่วคราวทุกทอเร้นต์? - Confirm resume - ยืนยันดำเนินการต่อ + ยืนยันดำเนินการต่อ - Would you like to resume all torrents? - ต้องการดำเนินการต่อทุกทอเร้นต์? + ต้องการดำเนินการต่อทุกทอเร้นต์? - + Unable to preview ไม่สามารถดูตัวอย่างได้ - + The selected torrent "%1" does not contain previewable files ทอร์เรนต์ที่เลือก "%1" ไม่มีไฟล์ที่ดูตัวอย่างได้ - + Resize columns ปรับขนาดคอลัมภ์ - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - Add Tags - เพิ่มแท็ก + เพิ่มแท็ก - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags ลบแท็กทั้งหมด - + Remove all tags from selected torrents? ลบแท็กทั้งหมดออกจากทอร์เรนต์ที่เลือกหรือไม่? - + Comma-separated tags: แท็กที่คั่นด้วยจุลภาค: - + Invalid tag ชื่อแท็กไม่ถูกต้อง - + Tag name: '%1' is invalid ชื่อแท็ก: '%1' is ไม่ถูกต้อง - &Resume Resume/start the torrent - ดำเนินการต่อ + ดำเนินการต่อ - &Pause Pause the torrent - หยุดชั่วคราว - - - - Force Resu&me - Force Resume/start the torrent - + หยุดชั่วคราว - + Pre&view file... - + Torrent &options... ตัวเลือกทอเร้นต์ - + Open destination &folder เปิดแฟ้มปลายทาง - + Move &up i.e. move up in the queue เลื่อนขึ้น - + Move &down i.e. Move down in the queue เลื่อนลง - + Move to &top i.e. Move to top of the queue ย้ายไปด้านบนสุด - + Move to &bottom i.e. Move to bottom of the queue ย้ายไปด้านล่างสุด - + Set loc&ation... ตั้งค่าตำแหน่ง - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID เลขรหัสทอเร้นต์ - + + &Comment + + + + &Name ชื่อ - + Info &hash v1 - + Info h&ash v2 - + Re&name... เปลี่ยนชื่อ - + Edit trac&kers... - + E&xport .torrent... ส่งออกทอเร้นต์ - + Categor&y หมวด - + &New... New category... สร้างใหม่ - + &Reset Reset category เริ่มใหม่ - + Ta&gs แ&ท็ก - + &Add... Add / assign multiple tags... เ&พิ่ม - + &Remove All Remove all tags ลบทั้ง&หมด - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue คิ&ว - + &Copy &คัดลอก - + Exported torrent is not necessarily the same as the imported - + Download in sequential order ดาวน์โหลดตามลำดับ - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &ลบ - + Download first and last pieces first ดาวน์โหลดชิ้นแรกและชิ้นสุดท้ายก่อน - + Automatic Torrent Management การจัดการทอร์เรนต์อัตโนมัติ - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - - - - + Super seeding mode โหลดส่งต่อข้อมูลขั้นสูง @@ -11801,28 +12380,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11830,7 +12409,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" ไม่สามารถโหลดธีมจากไฟล์: "%1" @@ -11861,34 +12445,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - ตรวจพบ Python, ชื่อปฏิบัติการ: '%1', รุ่น: %2 - - - Python not detected - ตรวจไม่พบ Python - Found Python executable. Name: "%1". Version: "%2" @@ -11923,27 +12500,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12007,72 +12584,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. ประเภทไฟล์ที่ยอมรับไม่ได้, อนุญาตเฉพาะไฟล์ปกติเท่านั้น - + Symlinks inside alternative UI folder are forbidden. ไม่อนุญาต Symlinks ภายในโฟลเดอร์ UI อื่น - - Using built-in Web UI. - ใช้ Web UI ในตัว + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - การใช้ Web UI แบบกำหนดเอง. ตำแหน่ง: "%1" + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: ส่วนหัวของโฮสต์ไม่ถูกต้อง, พอร์ตไม่ตรงกัน. ขอแหล่งที่มา IP: '%1'. เซิฟเวอร์พอร์ต: '%2'. ได้รับส่วนหัวของโฮสต์: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: ส่วนหัวของโฮสต์ไม่ถูกต้อง. ขอแหล่งที่มา IP: '%1'. ได้รับส่วนหัวของโฮสต์: '%2' @@ -12080,143 +12657,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS ติดตั้งสำเร็จ + + Credentials are not set + + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: HTTPS ติดตั้งล้มเลว, เลือกไป HTTP + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Web UI: กำลังฟังบนไอพี: %1, พอร์ต: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI: ไม่สามารถติดต่อกับ IP: %1, พอร์ต: %2. เหตุผล: %3 + + Unknown error + ไม่สามารถระบุข้อผิดพลาด misc - + B bytes ไบต์ - + KiB kibibytes (1024 bytes) กิบิไบต์ - + MiB mebibytes (1024 kibibytes) เมบิไบต์ - + GiB gibibytes (1024 mibibytes) จิบิไบต์ - + TiB tebibytes (1024 gibibytes) เทบิไบต์ - + PiB pebibytes (1024 tebibytes) เพบิไบต์ - + EiB exbibytes (1024 pebibytes) เอกซ์บิไบต์ - + /s per second /วินาที - + %1s e.g: 10 seconds - % 1 นาที {1s?} + - + %1m e.g: 10 minutes - % 1 นาที + % 1 นาที - + %1h %2m e.g: 3 hours 5 minutes - %1 ชั่วโมง %2 นาที + %1 ชั่วโมง %2 นาที - + %1d %2h e.g: 2 days 10 hours - %1 วัน %2 ชั่วโมง + %1 วัน %2 ชั่วโมง - + %1y %2d e.g: 2 years 10 days - %1 ปี %2 วัน - - - %1h %2m - e.g: 3hours 5minutes - %1 ชั่วโมง %2 นาที - - - %1d %2h - e.g: 2days 10hours - %1 วัน %2 ชั่วโมง - - - %1y %2d - e.g: 2years 10days - %1 ปี %2 วัน + %1 ปี %2 วัน - - + + Unknown Unknown (size) ไม่ทราบ - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent กำลังปิดคอมพิวเตอร์ของคุณตอนนี้เพราะดาวน์โหลดเสร็จสิ้นหมดแล้ว - + < 1m < 1 minute < 1 นาที - - %1m - e.g: 10minutes - % 1 นาที - diff --git a/src/lang/qbittorrent_tr.ts b/src/lang/qbittorrent_tr.ts index e7bbaa494044..f3803b19d902 100644 --- a/src/lang/qbittorrent_tr.ts +++ b/src/lang/qbittorrent_tr.ts @@ -14,77 +14,77 @@ Hakkında - + Authors Hazırlayanlar - + Current maintainer Şu anki geliştiren - + Greece Yunanistan - - + + Nationality: Uyruk: - - + + E-mail: E-posta: - - + + Name: Ad: - + Original author Orijinal hazırlayanı - + France Fransa - + Special Thanks Özel Teşekkürler - + Translators Çevirmenler - + License Lisans - + Software Used Kullanılan Yazılımlar - + qBittorrent was built with the following libraries: qBittorrent aşağıdaki kütüphaneler ile yapıldı: - + Copy to clipboard - + Panoya kopyala @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Telif hakkı %1 2006-2023 qBittorrent projesi + Copyright %1 2006-2024 The qBittorrent project + Telif hakkı %1 2006-2024 qBittorrent projesi @@ -166,14 +166,13 @@ Kaydetme yeri - + Never show again Bir daha asla gösterme - Torrent settings - Torrent ayarları + Torrent ayarları @@ -191,12 +190,12 @@ Torrent'i başlat - + Torrent information Torrent bilgisi - + Skip hash check Adresleme denetimini atla @@ -205,6 +204,11 @@ Use another path for incomplete torrent Tamamlanmamış torrent için başka bir yol kullan + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Durdurma koşulu: - - + + None Yok - - + + Metadata received Üstveriler alındı - - + + Torrents that have metadata initially will be added as stopped. + Başlangıçta üstverileri olan torrent'ler durduruldu olarak eklenecektir. + + + + Files checked Dosyalar denetlendi - + Add to top of queue Kuyruğun en üstüne ekle - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog İşaretlendiğinde, .torrent dosyası, Seçenekler ileti penceresinin "İndirmeler" sayfasındaki ayarlardan bağımsız olarak silinmeyecektir. - + Content layout: İçerik düzeni: - + Original Orijinal - + Create subfolder Alt klasör oluştur - + Don't create subfolder Alt klasör oluşturma - + Info hash v1: Bilgi adreslemesi v1: - + Size: Boyut: - + Comment: Açıklama: - + Date: Tarih: @@ -324,245 +333,182 @@ Son kullanılan kaydetme yolunu hatırla - + Do not delete .torrent file .torrent dosyasını silme - + Download in sequential order Sıralı düzende indir - + Download first and last pieces first Önce ilk ve son parçaları indir - + Info hash v2: Bilgi adreslemesi v2: - + Select All Tümünü Seç - + Select None Hiçbirini Seçme - + Save as .torrent file... .torrent dosyası olarak kaydet... - + I/O Error G/Ç Hatası - Invalid torrent - Geçersiz torrent - - - + Not Available This comment is unavailable Mevcut Değil - + Not Available This date is unavailable Mevcut Değil - + Not available Mevcut değil - Invalid magnet link - Geçersiz magnet bağlantısı - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Torrent'i yükleme başarısız: %1. -Hata: %2 - - - This magnet link was not recognized - Bu magnet bağlantısı tanınamadı - - - + Magnet link Magnet bağlantısı - + Retrieving metadata... Üstveri alınıyor... - - + + Choose save path Kayıt yolunu seçin - Torrent is already present - Torrent zaten mevcut - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' zaten aktarım listesinde. İzleyiciler birleştirilmedi çünkü bu özel bir torrent'tir. - - - Torrent is already queued for processing. - Torrent zaten işlem için kuyruğa alındı. - - - + No stop condition is set. Ayarlanan durdurma koşulu yok. - + Torrent will stop after metadata is received. Torrent, üstveriler alındıktan sonra duracak. - - Torrents that have metadata initially aren't affected. - Başlangıçta üstverileri olan torrent'ler etkilenmez. - - - + Torrent will stop after files are initially checked. Torrent, dosyalar başlangıçta denetlendikten sonra duracak. - + This will also download metadata if it wasn't there initially. Bu, başlangıçta orada değilse, üstverileri de indirecek. - - + + N/A Yok - Magnet link is already queued for processing. - Magnet bağlantısı zaten işlem için kuyruğa alındı. - - - + %1 (Free space on disk: %2) %1 (Diskteki boş alan: %2) - + Not available This size is unavailable. Mevcut değil - + Torrent file (*%1) Torrent dosyası (*%1) - + Save as torrent file Torrent dosyası olarak kaydet - + Couldn't export torrent metadata file '%1'. Reason: %2. '%1' torrent üstveri dosyası dışa aktarılamadı. Sebep: %2. - + Cannot create v2 torrent until its data is fully downloaded. Verileri tamamen indirilinceye kadar v2 torrent oluşturulamaz. - Cannot download '%1': %2 - '%1' dosyası indirilemiyor: %2 - - - + Filter files... Dosyaları süzün... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' zaten aktarım listesinde. Bu, özel bir torrent olduğundan izleyiciler birleştirilemez. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' zaten aktarım listesinde. İzleyicileri yeni kaynaktan birleştirmek istiyor musunuz? - - - + Parsing metadata... Üstveri ayrıştırılıyor... - + Metadata retrieval complete Üstveri alımı tamamlandı - - Failed to load from URL: %1. -Error: %2 - URL'den yükleme başarısız: %1. -Hata: %2 - - - Download Error - İndirme Hatası - AddTorrentManager Downloading torrent... Source: "%1" - + Torrent indiriliyor... Kaynak: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Torrent'i ekleme başarısız. Kaynak: "%1". Sebep: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Kopya bir torrent ekleme girişimi algılandı. Kaynak: %1. Varolan torrent: %2. Sonuç: %3 - + Merging of trackers is disabled - + İzleyicilerin birleştirilmesi etkisizleştirildi - + Trackers cannot be merged because it is a private torrent - + İzleyiciler özel bir torrent olduğundan birleştirilemez - + Trackers are merged from new source - + İzleyiciler yeni kaynaktan birleştirildi @@ -648,72 +594,77 @@ Hata: %2 Adresleme denetimini atla - - - Choose save path - Kaydetme yolunu seçin + + Torrent share limits + Torrent paylaşma sınırları - - - - - - - Default - Varsayılan + + + Choose save path + Kaydetme yolunu seçin + + + - Yes - Evet + Default + Varsayılan + Yes + Evet + + + + + No Hayır - + Manual Elle - + Automatic Otomatik - + Original Orijinal - + Create subfolder Alt klasör oluştur - + Don't create subfolder Alt klasör oluşturma - + None Yok - + Metadata received Üstveriler alındı - + Files checked Dosyalar denetlendi @@ -721,734 +672,852 @@ Hata: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Tamamlanmada torrent'leri yeniden denetle - - + + ms milliseconds ms - + Setting Ayar - + Value Value set for this setting Değer - + (disabled) (etkisizleştirildi) - + (auto) (otomatik) - + + min minutes dak - + All addresses Tüm adresler - + qBittorrent Section qBittorrent Bölümü - - + + Open documentation Belgeleri aç - + All IPv4 addresses Tüm IPv4 adresleri - + All IPv6 addresses Tüm IPv6 adresleri - + libtorrent Section libtorrent Bölümü - + Fastresume files Hızlı devam dosyaları - + SQLite database (experimental) SQLite veritabanı (deneysel) - + Resume data storage type (requires restart) Devam verisi depolama türü (yeniden başlatma gerektirir) - + Normal Normal - + Below normal Normalin altında - + Medium Orta - + Low Düşük - + Very low Çok düşük - - Process memory priority (Windows >= 8 only) - İşlem bellek önceliği (sadece Windows >= 8) - - - + Physical memory (RAM) usage limit Fiziksel bellek (RAM) kullanım sınırı - + Asynchronous I/O threads Eşzamansız G/Ç iş parçaları - + Hashing threads Adreslenen iş parçacığı - + File pool size Dosya havuzu boyutu - + Outstanding memory when checking torrents Torrent'ler denetlenirken bekleyen bellek - + Disk cache Disk önbelleği - - - - + + + + s seconds s - + Disk cache expiry interval Disk önbelleği bitiş aralığı - + Disk queue size Disk kuyruk boyutu - - + + Enable OS cache İS önbelleğini etkinleştir - + Coalesce reads & writes Okuma ve yazmaları birleştir - + Use piece extent affinity Parça kapsam benzeşimi kullan - + Send upload piece suggestions Gönderme parçası önerileri gönder - - - - + + + + + 0 (disabled) 0 (etkisizleştirildi) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Devam etme verisi kaydetme aralığı [0: etkisizleştirildi] - + Outgoing ports (Min) [0: disabled] Giden bağlantı noktaları (En az) [0: etkisizleştirildi] - + Outgoing ports (Max) [0: disabled] Giden bağlantı noktaları (En fazla) [0: etkisizleştirildi] - + 0 (permanent lease) 0 (kalıcı kiralama) - + UPnP lease duration [0: permanent lease] UPnP kiralama süresi [0: kalıcı kiralama] - + Stop tracker timeout [0: disabled] İzleyiciyi durdurma zaman aşımı [0: etkisizleştirildi] - + Notification timeout [0: infinite, -1: system default] Bildirim zaman aşımı [0: sınırsız, -1: sistem varsayılanı] - + Maximum outstanding requests to a single peer Tek bir kişi için bekleyen en fazla istek sayısı - - - - - + + + + + KiB KiB - + (infinite) (sonsuz) - + (system default) (sistem varsayılanı) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Bu seçenek Linux'ta daha az etkilidir - + + Process memory priority + İşlem belleği önceliği + + + Bdecode depth limit Bdecode derinlik sınırı - + Bdecode token limit Bdecode belirteç sınırı - + Default Varsayılan - + Memory mapped files Bellek eşlemeli dosyalar - + POSIX-compliant POSIX uyumlu - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Disk G/Ç türü (yeniden başlatma gerektirir) - - + + Disable OS cache İS önbelleğini etkisizleştir - + Disk IO read mode Disk G/Ç okuma kipi - + Write-through Baştan sona yaz - + Disk IO write mode Disk G/Ç yazma kipi - + Send buffer watermark Gönderme arabelleği eşiği - + Send buffer low watermark Gönderme arabelleği alt eşiği - + Send buffer watermark factor Gönderme arabelleği eşiği etkeni - + Outgoing connections per second Saniyede giden bağlantı: - - + + 0 (system default) 0 (sistem varsayılanı) - + Socket send buffer size [0: system default] Soket gönderme arabelleği boyutu [0: sistem varsayılanı] - + Socket receive buffer size [0: system default] Soket alma arabellek boyutu [0: sistem varsayılanı] - + Socket backlog size Soket biriktirme listesi boyutu - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent dosya boyutu sınırı - + Type of service (ToS) for connections to peers Kişilere bağlantılar için hizmet türü (ToS) - + Prefer TCP TCP tercih et - + Peer proportional (throttles TCP) Kişi orantılı (TCP'yi kısıtlar) - + Support internationalized domain name (IDN) Uluslararasılaştırılmış etki alanı adını (IDN) destekle - + Allow multiple connections from the same IP address Aynı IP adresinden çoklu bağlantılara izin ver - + Validate HTTPS tracker certificates HTTPS izleyici sertifikalarını doğrula - + Server-side request forgery (SSRF) mitigation Sunucu tarafı istek sahteciliği (SSRF) azaltma - + Disallow connection to peers on privileged ports Yetkili bağlantı noktalarında kişilerle bağlantıya izin verme - + + It appends the text to the window title to help distinguish qBittorent instances + QBittorent örneklerini ayırt etmeye yardımcı olmak için metni pencere başlığına ekler + + + + Customize application instance name + Uygulama örneği adını özelleştir + + + It controls the internal state update interval which in turn will affect UI updates Arayüz güncellemelerini etkileyecek olan dahili durum güncelleme aralığını denetler. - + Refresh interval Yenileme aralığı - + Resolve peer host names Kişi anamakine adlarını çöz - + IP address reported to trackers (requires restart) İzleyicilere bildirilen IP adresi (yeniden başlatma gerektirir) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed IP veya bağlantı noktası değiştiğinde tüm izleyicilere yeniden duyur - + Enable icons in menus Menülerde simgeleri etkinleştir - + Enable port forwarding for embedded tracker Gömülü izleyici için bağlantı noktası yönlendirmeyi etkinleştir - - (Auto detect if empty) + + Enable quarantine for downloaded files + İndirilen dosyalar için karantinayı etkinleştir + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + İndirilen dosyalar için Web İşaretini (MOTW) etkinleştir + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Boşsa otomatik algıla) + + + Python executable path (may require restart) + Python çalıştırılabilir dosya yolu (yeniden başlatma gerektirebilir) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + san + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + İzleyicinin tüm torrent'lerden kaldırılmasını onaylayın + + + Peer turnover disconnect percentage Kişi devretme bağlantısını kesme yüzdesi - + Peer turnover threshold percentage Kişi devretme eşiği yüzdesi - + Peer turnover disconnect interval Kişi devretme bağlantısını kesme aralığı - + Resets to default if empty - + Boşsa varsayılana sıfırlanır - + DHT bootstrap nodes - + DHT önyükleme düğümleri - + I2P inbound quantity I2P gelen miktarı - + I2P outbound quantity I2P giden miktar - + I2P inbound length I2P gelen uzunluğu - + I2P outbound length I2P giden uzunluğu - + Display notifications Bildirimleri görüntüle - + Display notifications for added torrents Eklenen torrent'ler için bildirimleri görüntüle - + Download tracker's favicon İzleyicinin favicon'unu indir - + Save path history length Kaydetme yolu geçmişi uzunluğu - + Enable speed graphs Hız çizelgesini etkinleştir - + Fixed slots Sabit yuvalar - + Upload rate based Gönderme oranına dayalı - + Upload slots behavior Gönderme yuvaları davranışı - + Round-robin Dönüşümlü - + Fastest upload En hızlı gönderme - + Anti-leech Sömürü önleyici - + Upload choking algorithm Gönderme kısma algoritması - + Confirm torrent recheck Torrent'i yeniden denetlemeyi onayla - + Confirm removal of all tags Tüm etiketlerin kaldırılmasını onayla - + Always announce to all trackers in a tier Bir katmandaki tüm izleyicilere her zaman duyur - + Always announce to all tiers Tüm katmanlara her zaman duyur - + Any interface i.e. Any network interface Herhangi bir arayüz - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP karışık kip algoritması - + Resolve peer countries Kişi ülkelerini çöz - + Network interface Ağ arayüzü - + Optional IP address to bind to Bağlamak için isteğe bağlı IP adresi - + Max concurrent HTTP announces En fazla eşzamanlı HTTP duyurusu - + Enable embedded tracker Gömülü izleyiciyi etkinleştir - + Embedded tracker port Gömülü izleyici bağlantı noktası - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 başlatıldı + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Taşınabilir kipte çalışıyor. Otomatik algılanan profil klasörü: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Gereksiz komut satırı işareti algılandı: "%1". Taşınabilir kipi göreceli hızlı devam anlamına gelir. - + Using config directory: %1 Kullanılan yapılandırma dizini: %1 - + Torrent name: %1 Torrent adı: %1 - + Torrent size: %1 Torrent boyutu: %1 - + Save path: %1 Kaydetme yolu: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent %1 içinde indirildi. - + + Thank you for using qBittorrent. qBittorrent'i kullandığınız için teşekkür ederiz. - + Torrent: %1, sending mail notification Torrent: %1, posta bildirimi gönderiliyor - + Add torrent failed - + Torrent ekleme başarısız oldu - + Couldn't add torrent '%1', reason: %2. - + Torrent '%1' eklenemedi, sebep: %2. + + + + The WebUI administrator username is: %1 + Web Arayüzü yönetici kullanıcı adı: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Web Arayüzü yönetici parolası ayarlanmadı. Bu oturum için geçici bir parola verildi: %1 - + + You should set your own password in program preferences. + Program tercihlerinde kendi parolanızı belirlemelisiniz. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Web Arayüzü etkisizleştirildi! Web Arayüzü'nü etkinleştirmek için yapılandırma dosyasını el ile düzenleyin. - + Running external program. Torrent: "%1". Command: `%2` Harici program çalıştırılıyor. Torrent: "%1". Komut: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Harici program çalıştırma başarısız. Torrent: "%1". Komut: `%2` - + Torrent "%1" has finished downloading Torrent "%1" dosyasının indirilmesi tamamlandı. - + WebUI will be started shortly after internal preparations. Please wait... - Web Arayüzü, iç hazırlıklardan kısa bir süre sonra başlatılacaktır. Lütfen bekle... + Web Arayüzü, iç hazırlıklardan kısa bir süre sonra başlatılacaktır. Lütfen bekleyin... - - + + Loading torrents... Torrent'ler yükleniyor... - + E&xit Çı&kış - + I/O Error i.e: Input/Output Error G/Ç Hatası - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Hata: %2 Sebep: %2 - Error - Hata - - - Failed to add torrent: %1 - Torrent'i ekleme başarısız: %1 - - - + Torrent added Torrent eklendi - + '%1' was added. e.g: xxx.avi was added. '%1' eklendi. - + Download completed İndirme tamamlandı - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' dosyasının indirilmesi tamamlandı. + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 başladı. İşlem kimliği: %2 - URL download error - URL indirme hatası + + This is a test email. + - Couldn't download file at URL '%1', reason: %2. - Şu URL'den dosya indirilemedi: '%1', sebep: %2. + + Test email + - Torrent file association - Torrent dosyası ilişkilendirme + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' dosyasının indirilmesi tamamlandı. - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent, torrent dosyalarını ya da Magnet bağlantılarını açmak için varsayılan uygulama değil. -qBittorrent'i bunlar için varsayılan uygulama yapmak istiyor musunuz? - - - + Information Bilgi - + To fix the error, you may need to edit the config file manually. - + Hatayı düzeltmek için yapılandırma dosyasını el ile düzenlemeniz gerekebilir. - + To control qBittorrent, access the WebUI at: %1 qBittorrent'i denetlemek için şu Web Arayüzü adresine erişin: %1 - - The Web UI administrator username is: %1 - Web Arayüzü yönetici kullanıcı adı: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web Arayüzü yönetici parolası varsayılandan değiştirilmedi: %1 - - - - This is a security risk, please change your password in program preferences. - Bu bir güvenlik riskidir, lütfen program tercihlerinde parolanızı değiştirin. - - - Application failed to start. - Başlatmak için uygulama başarısız oldu. - - - + Exit Çıkış - + Recursive download confirmation - Tekrarlayan indirme onayı + Tekrarlayan indirme onayı - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - '%1' torrent'i, .torrent dosyaları içeriyor, bunların indirilmeleri ile işleme devam etmek istiyor musunuz? + '%1' torrent'i, .torrent dosyaları içeriyor, bunların indirilmeleri ile işleme devam etmek istiyor musunuz? - + Never - Asla + Asla - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrent içinde tekrarlayan indirme .torrent dosyası. Kaynak torrent: "%1". Dosya: "%2" + Torrent içinde tekrarlayan indirme .torrent dosyası. Kaynak torrent: "%1". Dosya: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Fiziksel bellek (RAM) kullanım sınırını ayarlama başarısız. Hata kodu: %1. Hata iletisi: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Fiziksel bellek (RAM) kullanım sabit sınırını ayarlama başarısız. İstenen boyut: %1. Sistem sabit sınırı: %2. Hata kodu: %3. Hata iletisi: "%4" - + qBittorrent termination initiated qBittorrent sonlandırması başlatıldı - + qBittorrent is shutting down... qBittorrent kapatılıyor... - + Saving torrent progress... Torrent ilerlemesi kaydediliyor... - + qBittorrent is now ready to exit qBittorrent artık çıkmaya hazır @@ -1597,7 +1637,7 @@ qBittorrent'i bunlar için varsayılan uygulama yapmak istiyor musunuz? AsyncFileStorage - + Could not create directory '%1'. '%1' dizini oluşturulamadı. @@ -1605,22 +1645,22 @@ qBittorrent'i bunlar için varsayılan uygulama yapmak istiyor musunuz? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI oturum açma başarısız. Sebep: IP yasaklandı, IP: %1, kullanıcı adı: %2 - + Your IP address has been banned after too many failed authentication attempts. IP adresiniz çok fazla başarısız kimlik doğrulaması denemesinden sonra yasaklandı. - + WebAPI login success. IP: %1 WebAPI oturum açma başarılı. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI oturum açma başarısız. Sebep: geçersiz kimlik bilgileri, deneme sayısı: %1, IP: %2, kullanıcı adı: %3 @@ -1668,12 +1708,12 @@ qBittorrent'i bunlar için varsayılan uygulama yapmak istiyor musunuz?Öncelik: - + Must Not Contain: İçermemeli: - + Episode Filter: Bölüm Süzgeci: @@ -1726,263 +1766,263 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d &Dışa Aktar... - + Matches articles based on episode filter. Bölüm süzgecine dayalı eşleşen makaleler. - + Example: Örnek: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match 2, 5, 8 ila 15, 30 arasıyla ve birinci sezonun ileriki bölümleriyle eşleşecek - + Episode filter rules: Bölüm süzgeç kuralları: - + Season number is a mandatory non-zero value Sezon numarası mecburen sıfırdan farklı bir değerdir - + Filter must end with semicolon Süzgeç noktalı virgül ile bitmek zorundadır - + Three range types for episodes are supported: Bölümler için üç aralık türü desteklenir: - + Single number: <b>1x25;</b> matches episode 25 of season one Tek numara: <b>1x25;</b> birinci sezonun 25. bölümüyle eşleşir - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normal aralık: <b>1x25-40;</b> birinci sezonun 25 ila 40 arası bölümleriyle eşleşir - + Episode number is a mandatory positive value Bölüm numarası mecburen pozitif bir değerdir - + Rules Kurallar - + Rules (legacy) Kurallar (eski) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Sonsuz aralık: <b>1x25-;</b> birinci sezonun 25 ve sonraki bölümleri ve sonraki sezonların tüm bölümleri ile eşleşir - + Last Match: %1 days ago Son Eşleşme: %1 gün önce - + Last Match: Unknown Son Eşleşme: Bilinmiyor - + New rule name Yeni kural adı - + Please type the name of the new download rule. Lütfen yeni indirme kuralı adını yazın. - - + + Rule name conflict Kural adı çakışması - - + + A rule with this name already exists, please choose another name. Bu isimde bir kural zaten var, lütfen başka bir isim seçin. - + Are you sure you want to remove the download rule named '%1'? '%1' adındaki indirme kuralını kaldırmak istediğinize emin misiniz? - + Are you sure you want to remove the selected download rules? Seçilen indirme kurallarını kaldırmak istediğinize emin misiniz? - + Rule deletion confirmation Kural silme onayı - + Invalid action Geçersiz eylem - + The list is empty, there is nothing to export. Liste boş, dışa aktarmak için hiçbir şey yok. - + Export RSS rules RSS kurallarını dışa aktar - + I/O Error G/Ç Hatası - + Failed to create the destination file. Reason: %1 Hedef dosya oluşturma başarısız. Sebep: %1 - + Import RSS rules RSS kurallarını içe aktar - + Failed to import the selected rules file. Reason: %1 Seçilen kurallar dosyasını içe aktarma başarısız. Sebep: %1 - + Add new rule... Yeni kural ekle... - + Delete rule Kuralı sil - + Rename rule... Kuralı yeniden adlandır... - + Delete selected rules Seçilen kuralları sil - + Clear downloaded episodes... İndirilmiş bölümleri temizle... - + Rule renaming Kural yeniden adlandırma - + Please type the new rule name Lütfen yeni kural adını yazın - + Clear downloaded episodes İndirilmiş bölümleri temizle - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Seçilen kural için indirilmiş bölümlerin listesini temizlemek istediğinize emin misiniz? - + Regex mode: use Perl-compatible regular expressions Regex kipi: Perl uyumlu düzenli ifadeleri kullanın - - + + Position %1: %2 Konum %1: %2 - + Wildcard mode: you can use Joker karakter kipi: - - + + Import error İçe aktarma hatası - + Failed to read the file. %1 Dosyayı okuma başarısız. %1 - + ? to match any single character herhangi bir tek karakterle eşleşmesi için ? kullanabilirsiniz - + * to match zero or more of any characters karakterden daha fazlasıyla eşleşmesi ya da hiç eşleşmemesi için * kullanabilirsiniz - + Whitespaces count as AND operators (all words, any order) VE işleticileri olarak boşluk sayısı kullanabilirsiniz (tüm kelimeler, herhangi bir sırada) - + | is used as OR operator | karakteri VEYA işleticisi olarak kullanılır - + If word order is important use * instead of whitespace. Eğer kelime sırası önemliyse boşluk yerine * kullanın. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Boş bir %1 ibaresi olan ifade (örn. %2) - + will match all articles. tüm makalelerle eşleşecek. - + will exclude all articles. tüm makaleleri hariç tutacak. @@ -2024,53 +2064,58 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Torrent devam klasörü oluşturulamıyor: "%1" - + Cannot parse resume data: invalid format Devam verileri ayrıştırılamıyor: geçersiz biçim - - + + Cannot parse torrent info: %1 Torrent bilgisi ayrıştırılamıyor: %1 - + Cannot parse torrent info: invalid format Torrent bilgisi ayrıştırılamıyor: geçersiz biçim - + + Mismatching info-hash detected in resume data + Devam etme verilerinde uyumsuz bilgi adreslemesi algılandı + + + Couldn't save torrent metadata to '%1'. Error: %2. '%1' konumuna torrent üstverileri kaydedilemedi. Hata: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. '%1' konumuna torrent devam verileri kaydedilemedi. Hata: %2. - + Couldn't load torrents queue: %1 Torrent'lerin kuyruğu yüklenemedi: %1 - + Cannot parse resume data: %1 Devam verileri ayrıştırılamıyor: %1 - + Resume data is invalid: neither metadata nor info-hash was found Devam verileri geçersiz: ne üstveriler ne de bilgi adreslemesi bulundu - + Couldn't save data to '%1'. Error: %2 '%1' konumuna veriler kaydedilemedi. Hata: %2 @@ -2078,38 +2123,38 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d BitTorrent::DBResumeDataStorage - + Not found. Bulunamadı. - + Couldn't load resume data of torrent '%1'. Error: %2 '%1' torrent'inin devam verileri yüklenemedi. Hata: %2 - - + + Database is corrupted. Veritabanı bozuk. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Önceden Yazma Günlüğü (WAL) günlük kaydı kipi etkinleştirilemedi. Hata: %1. - + Couldn't obtain query result. Sorgu sonucu elde edilemedi. - + WAL mode is probably unsupported due to filesystem limitations. WAL kipi muhtemelen dosya sistemi sınırlamalarından dolayı desteklenmiyor. - + Couldn't begin transaction. Error: %1 İşlem başlatılamadı. Hata: %1 @@ -2117,22 +2162,22 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Torrent üstverileri kaydedilemedi. Hata: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 '%1' torrent'i için devam verileri depolanamadı. Hata: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 '%1' torrent'inin devam verileri silinemedi. Hata: %2 - + Couldn't store torrents queue positions. Error: %1 Torrent'lerin kuyruk konumları depolanamadı. Hata: %1 @@ -2140,586 +2185,620 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Dağıtılan Adresleme Tablosu (DHT) desteği: %1 - - - - - - - - - + + + + + + + + + ON AÇIK - - - - - - - - - + + + + + + + + + OFF KAPALI - - + + Local Peer Discovery support: %1 Yerel Kişi Keşfi desteği: %1 - + Restart is required to toggle Peer Exchange (PeX) support Kişi Takası (PeX) desteğini değiştirmek için yeniden başlatma gerekir - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Torrent'i devam ettirme başarısız. Torrent: "%1". Sebep: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Torrent'i devam ettirme başarısız: tutarsız torrent kimliği algılandı. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Tutarsız veriler algılandı: yapılandırma dosyasında kategori eksik. Kategori kurtarılacak ancak ayarları varsayılana sıfırlanacaktır. Torrent: "%1". Kategori: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Tutarsız veriler algılandı: geçersiz kategori. Torrent: "%1". Kategori: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Kurtarılan kategorinin kaydetme yolları ile torrent'in şu anki kaydetme yolu arasında uyuşmazlık algılandı. Torrent şimdi Elle kipine geçirildi. Torrent: "%1". Kategori: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Tutarsız veriler algılandı: yapılandırma dosyasında etiket eksik. Etiket kurtarılacaktır. Torrent: "%1". Etiket: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Tutarsız veriler algılandı: geçersiz etiket. Torrent: "%1". Etiket: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Sistem uyandırma olayı algılandı. Tüm izleyicilere yeniden duyuruluyor... - + Peer ID: "%1" Kişi Kimliği: "%1" - + HTTP User-Agent: "%1" HTTP Kullanıcı Tanıtıcısı: "%1" - + Peer Exchange (PeX) support: %1 Kişi Takası (PeX) desteği: %1 - - + + Anonymous mode: %1 İsimsiz kipi: %1 - - + + Encryption support: %1 Şifreleme desteği: %1 - - + + FORCED ZORLANDI - + Could not find GUID of network interface. Interface: "%1" Ağ arayüzünün GUID'si bulunamadı. Arayüz: "%1" - + Trying to listen on the following list of IP addresses: "%1" Şu IP adresleri listesi dinlenmeye çalışılıyor: "%1" - + Torrent reached the share ratio limit. Torrent paylaşım oranı sınırına ulaştı. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Torrent kaldırıldı. + Torrent kaldırıldı. - - - Removed torrent and deleted its content. - Torrent kaldırıldı ve içeriği silindi. + Torrent kaldırıldı ve içeriği silindi. - - - Torrent paused. - Torrent duraklatıldı. + Torrent duraklatıldı. - - - + Super seeding enabled. Süper gönderim etkinleştirildi. - + Torrent reached the seeding time limit. Torrent gönderim süresi sınırına ulaştı. - + Torrent reached the inactive seeding time limit. Torrent etkin olmayan gönderim süresi sınırına ulaştı. - + Failed to load torrent. Reason: "%1" Torrent'i yükleme başarısız. Sebep: "%1" - + I2P error. Message: "%1". + I2P hatası. İleti: "%1". + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP desteği: AÇIK + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Torrent indiriliyor, lütfen bekleyin... Kaynak: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Torrent'i yükleme başarısız. Kaynak: "%1". Sebep: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Kopya bir torrent ekleme girişimi algılandı. İzleyicilerin birleştirilmesi etkisizleştirildi. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Kopya bir torrent ekleme girişimi algılandı. İzleyiciler, özel bir torrent olduğundan birleştirilemez. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Kopya bir torrent ekleme girişimi algılandı. İzleyiciler yeni kaynaktan birleştirildi. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP desteği: AÇIK + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP desteği: KAPALI + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Torrent'i dışa aktarma başarısız. Torrent: "%1". Hedef: "%2". Sebep: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Devam etme verilerini kaydetme iptal edildi. Bekleyen torrent sayısı: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + İzleyicilerin birleştirilmesi etkisizleştirildi + + + + Trackers cannot be merged because it is a private torrent + İzleyiciler özel bir torrent olduğundan birleştirilemez - System network status changed to %1 - e.g: System network status changed to ONLINE - Sistem ağ durumu %1 olarak değişti + + Trackers are merged from new source + İzleyiciler yeni kaynaktan birleştirildi - ONLINE - ÇEVRİMİÇİ + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP desteği: KAPALI - OFFLINE - ÇEVRİMDIŞI + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Torrent'i dışa aktarma başarısız. Torrent: "%1". Hedef: "%2". Sebep: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 ağ yapılandırması değişti, oturum bağlaması yenileniyor + + Aborted saving resume data. Number of outstanding torrents: %1 + Devam etme verilerini kaydetme iptal edildi. Bekleyen torrent sayısı: %1 - + The configured network address is invalid. Address: "%1" Yapılandırılan ağ adresi geçersiz. Adres: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Dinlenecek yapılandırılmış ağ adresini bulma başarısız. Adres: "%1" - + The configured network interface is invalid. Interface: "%1" Yapılandırılan ağ arayüzü geçersiz. Arayüz: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Yasaklı IP adresleri listesi uygulanırken geçersiz IP adresi reddedildi. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Torrent'e izleyici eklendi. Torrent: "%1". İzleyici: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Torrent'ten izleyici kaldırıldı. Torrent: "%1". İzleyici: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Torrent'e URL gönderimi eklendi. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Torrent'ten URL gönderimi kaldırıldı. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent duraklatıldı. Torrent: "%1" + Torrent duraklatıldı. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent devam ettirildi. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Torrent indirme tamamlandı. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Torrent'i taşıma iptal edildi. Torrent: "%1". Kaynak: "%2". Hedef: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Torrent'i taşımayı kuyruğa alma başarısız. Torrent: "%1". Kaynak: "%2". Hedef: "%3". Sebep: torrent şu anda hedefe taşınıyor - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Torrent'i taşımayı kuyruğa alma başarısız. Torrent: "%1". Kaynak: "%2". Hedef: "%3". Sebep: her iki yol da aynı konumu işaret ediyor - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Torrent'i taşıma kuyruğa alındı. Torrent: "%1". Kaynak: "%2". Hedef: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Torrent'i taşıma başladı. Torrent: "%1". Hedef: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Kategorilerin yapılandırmasını kaydetme başarısız. Dosya: "%1". Hata: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Kategorilerin yapılandırmasını ayrıştırma başarısız. Dosya: "%1". Hata: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Torrent içinde tekrarlayan indirme .torrent dosyası. Kaynak torrent: "%1". Dosya: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Torrent içinde .torrent dosyasını yükleme başarısız. Kaynak torrent: "%1". Dosya: "%2". Hata: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 IP süzgeç dosyası başarılı olarak ayrıştırıldı. Uygulanan kural sayısı: %1 - + Failed to parse the IP filter file IP süzgeci dosyasını ayrıştırma başarısız - + Restored torrent. Torrent: "%1" Torrent geri yüklendi. Torrent: "%1" - + Added new torrent. Torrent: "%1" Yeni torrent eklendi. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent hata verdi. Torrent: "%1". Hata: "%2" - - Removed torrent. Torrent: "%1" - Torrent kaldırıldı. Torrent: "%1" + Torrent kaldırıldı. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Torrent kaldırıldı ve içeriği silindi. Torrent: "%1" + Torrent kaldırıldı ve içeriği silindi. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent'te SSL parametreleri eksik. Torrent: "%1". İleti: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Dosya hata uyarısı. Torrent: "%1". Dosya: "%2". Sebep: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP bağlantı noktası eşleme başarısız oldu. İleti: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP bağlantı noktası eşleme başarılı oldu. İleti: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP süzgeci - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). süzülmüş bağlantı noktası (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). yetkili bağlantı noktası (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent oturumu ciddi bir hatayla karşılaştı. Sebep: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 proksi hatası. Adres: %1. İleti: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 karışık kip kısıtlamaları - + Failed to load Categories. %1 Kategorileri yükleme başarısız. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Kategorilerin yapılandırmasını yükleme başarısız. Dosya: "%1". Hata: "Geçersiz veri biçimi" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Torrent kaldırıldı ancak içeriğini ve/veya parça dosyasını silme başarısız. Torrent: "%1". Hata: "%2" + Torrent kaldırıldı ancak içeriğini ve/veya parça dosyasını silme başarısız. Torrent: "%1". Hata: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 etkisizleştirildi - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 etkisizleştirildi - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL gönderim DNS araması başarısız oldu. Torrent: "%1", URL: "%2", Hata: "%3" + URL gönderim DNS araması başarısız oldu. Torrent: "%1", URL: "%2", Hata: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" URL gönderiminden hata iletisi alındı. Torrent: "%1", URL: "%2", İleti: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" IP üzerinde başarılı olarak dinleniyor. IP: "%1". Bağlantı Noktası: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" IP üzerinde dinleme başarısız. IP: "%1", Bağlantı Noktası: "%2/%3". Sebep: "%4" - + Detected external IP. IP: "%1" Dış IP algılandı. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Hata: İç uyarı kuyruğu doldu ve uyarılar bırakıldı, performansın düştüğünü görebilirsiniz. Bırakılan uyarı türü: "%1". İleti: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Torrent başarılı olarak taşındı. Torrent: "%1". Hedef: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Torrent'i taşıma başarısız. Torrent: "%1". Kaynak: "%2". Hedef: "%3". Sebep: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - İşlem iptal edildi - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Yeni torrent dosyası oluşturma başarısız oldu. Sebep: %1. + + Failed to start seeding. + Gönderime başlama başarısız. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - İşlem iptal edildi + İşlem iptal edildi + + Create new torrent file failed. Reason: %1. - Yeni torrent dosyası oluşturma başarısız oldu. Sebep: %1. + Yeni torrent dosyası oluşturma başarısız oldu. Sebep: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 "%1" kişisini "%2" torrent'ine ekleme başarısız. Sebep: %3 - + Peer "%1" is added to torrent "%2" Kişi "%1", "%2" torrent'ine eklendi - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Beklenmeyen veri algılandı. Torrent: %1. Veri: toplam_istenen=%2 toplam_istenen_tamamlanmış=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Dosyaya yazılamadı. Sebep: "%1". Torrent artık "sadece gönderme" kipinde. - + Download first and last piece first: %1, torrent: '%2' Önce ilk ve son parçayı indir: %1, torrent: '%2' - + On Açık - + Off Kapalı - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Torrent'i yeniden yükleme başarısız. Torrent: %1. Sebep: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Devam etme verileri oluşturma başarısız oldu. Torrent: "%1". Sebep: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Torrent'i geri yükleme başarısız. Dosyalar muhtemelen taşındı veya depolama erişilebilir değil. Torrent: "%1". Sebep: "%2" - + Missing metadata Eksik üstveri - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Dosya yeniden adlandırma başarısız oldu. Torrent: "%1", dosya: "%2", sebep: "%3" - + Performance alert: %1. More info: %2 Performans uyarısı: %1. Daha fazla bilgi: %2 @@ -2740,184 +2819,198 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Parametre '%1', '%1=%2' sözdizimi şeklinde olmak zorunda - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Parametre '%1', '%1=%2' sözdizimi şeklinde olmak zorunda - + Expected integer number in environment variable '%1', but got '%2' Ortam değişkeni '%1' içinde beklenen tam sayı, ancak '%2' var - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Parametre '%1', '%1=%2' sözdizimi şeklinde olmak zorunda + Parametre '%1', '%1=%2' sözdizimi şeklinde olmak zorunda - + Expected %1 in environment variable '%2', but got '%3' Ortam değişkeni '%2' içinde beklenen %1, ancak '%3' var - - + + %1 must specify a valid port (1 to 65535). %1 geçerli bir bağlantı noktasını belirtmek zorunda (1'den 65535'e). - + Usage: Kullanım: - + [options] [(<filename> | <url>)...] [seçenekler] [(<filename> | <url>)...] - + Options: Seçenekler: - + Display program version and exit Program sürümünü görüntüle ve çık - + Display this help message and exit Bu yardım iletisini görüntüle ve çık - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Parametre '%1', '%1=%2' sözdizimi şeklinde olmak zorunda + + + + Confirm the legal notice + Yasal bildiriyi onayla + + + + port b.noktası - - Change the Web UI port + + Change the WebUI port Web Arayüzü bağlantı noktasını değiştir - + Change the torrenting port Torrent kullanım bağlantı noktasını değiştir - + Disable splash screen Karşılama ekranını etkisizleştir - + Run in daemon-mode (background) Arka plan programı kipinde çalıştır (arka planda) - + dir Use appropriate short form or abbreviation of "directory" dizin - + Store configuration files in <dir> Yapılandırma dosyalarını <dir> içinde depola - - + + name ad - + Store configuration files in directories qBittorrent_<name> Yapılandırma dosyalarını qBittorrent_<dir> dizinlerinde depola - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Libtorrent hızlı devam dosyaları içine girin ve dosya yollarını profil dizinine göre yapın - + files or URLs dosyalar veya URL'ler - + Download the torrents passed by the user Kullanıcı tarafından atlanan torrent'leri indir - + Options when adding new torrents: Yeni torrent'ler eklenirken seçenekler: - + path yol - + Torrent save path Torrent kaydetme yolu - + + Add torrents as running or stopped + + + Add torrents as started or paused - Torrent'leri başlatıldı veya duraklatıldı olarak ekle + Torrent'leri başlatıldı veya duraklatıldı olarak ekle - + Skip hash check Adresleme denetimini atla - + Assign torrents to category. If the category doesn't exist, it will be created. Torrent'leri kategoriye ata. Eğer kategori mevcut değilse, oluşturulacaktır. - + Download files in sequential order Dosyaları sıralı düzende indir - + Download first and last pieces first Önce ilk ve son parçaları indir - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Bir torrent eklenirken "Yeni Torrent Ekle" ileti penceresinin açılıp açılmayacağını belirle. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Ortam değişkenleri aracılığıyla seçenek değerleri sağlanabilir. 'parameter-name' olarak adlandırılan seçenek için ortam değişkeni adı 'QBT_PARAMETER_NAME'dir (büyük harf olarak, '-' karakteri '_' ile değiştirildi). İşaretleme değerlerini geçmek için değişkeni '1' veya 'TRUE' olarak ayarlayın. Örneğin, karşılama ekranını etkisizleştirmek için: - + Command line parameters take precedence over environment variables Komut satırı parametreleri ortam değişkenleri üzerinde öncelik alır - + Help Yardım @@ -2925,17 +3018,17 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d CategoryFilterModel - + Categories Kategoriler - + All Tümü - + Uncategorized Kategorilenmemiş @@ -2969,13 +3062,21 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d - Resume torrents - Torrent'lere devam et + Start torrents + + Stop torrents + + + + Resume torrents + Torrent'lere devam et + + Pause torrents - Torrent'leri duraklat + Torrent'leri duraklat @@ -2986,15 +3087,20 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d ColorWidget - + Edit... Düzenle... - + Reset Sıfırla + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d CustomThemeSource - + Failed to load custom theme style sheet. %1 Özel tema stil sayfasını yükleme başarısız. %1 - + Failed to load custom theme colors. %1 Özel tema renklerini yükleme başarısız. %1 @@ -3048,7 +3154,7 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d DefaultThemeSource - + Failed to load default theme colors. %1 Varsayılan tema renklerini yükleme başarısız. %1 @@ -3067,23 +3173,27 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d + Also remove the content files + + + Also permanently delete the files - Ayrıca dosyaları kalıcı olarak sil + Ayrıca dosyaları kalıcı olarak sil - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? '%1' dosyasını aktarım listesinden kaldırmak istediğinize emin misiniz? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Bu %1 torrent'i aktarım listesinden kaldırmak istediğinize emin misiniz? - + Remove Kaldır @@ -3096,12 +3206,12 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d URL'lerden indir - + Add torrent links Torrent bağlantılarını ekleyin - + One link per line (HTTP links, Magnet links and info-hashes are supported) Her satıra bir bağlantı (HTTP bağlantıları, Magnet bağlantıları ve bilgi adreslemeleri desteklenir) @@ -3111,12 +3221,12 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d İndir - + No URL entered Girilmiş URL yok - + Please type at least one URL. Lütfen en az bir URL yazın. @@ -3275,64 +3385,91 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d Ayrıştırma Hatası: Süzgeç dosyası geçerli bir PeerGuardian P2B dosyası değil. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Torrent indiriliyor... Kaynak: "%1" - Trackers cannot be merged because it is a private torrent - + İzleyiciler özel bir torrent olduğundan birleştirilemez - + Torrent is already present - Torrent zaten mevcut + Torrent zaten mevcut + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' zaten aktarım listesinde. İzleyicileri yeni kaynaktan birleştirmek istiyor musunuz? + Torrent '%1' zaten aktarım listesinde. İzleyicileri yeni kaynaktan birleştirmek istiyor musunuz? GeoIPDatabase - - + + Unsupported database file size. Desteklenmeyen veritabanı dosya boyutu. - + Metadata error: '%1' entry not found. Üstveri hatası: '%1' giriş bulunamadı. - + Metadata error: '%1' entry has invalid type. Üstveri hatası: '%1' giriş geçersiz türe sahip. - + Unsupported database version: %1.%2 Desteklenmeyen veritabanı sürümü: %1.%2 - + Unsupported IP version: %1 Desteklenmeyen IP sürümü: %1 - + Unsupported record size: %1 Desteklenmeyen kayıt boyutu: %1 - + Database corrupted: no data section found. Veritabanı bozuldu: bulunan veri bölümü yok. @@ -3340,17 +3477,17 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Http istek boyutu sınırlamayı aşıyor, soket kapatılıyor. Sınır: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Hatalı Http istek yöntemi, soket kapatılıyor. IP: %1. Yöntem: "%2" - + Bad Http request, closing socket. IP: %1 Kötü Http isteği, soket kapatılıyor. IP: %1 @@ -3391,36 +3528,64 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d IconWidget - + Browse... Gözat... - + Reset Sıfırla - + Select icon Simge seç - + Supported image files Desteklenen resim dosyaları + + LegalNotice + + + Legal Notice + Yasal Bildiri + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent bir dosya paylaşım programıdır. Bir torrent çalıştırdığınızda, veriler gönderme yoluyla başkalarının kullanımına sunulacaktır. Paylaştığınız herhangi bir içerik tamamen sizin sorumluluğunuzdadır. + + + + No further notices will be issued. + Başka bir bildiri yayınlanmayacaktır. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Eğer yasal bildirimi okuduysanız, bu iletiyi gizlemek için `--confirm-legal-notice` komut satırı seçeneğini kullanabilirsiniz. + + + + Press 'Enter' key to continue... + Devam etmek için 'Enter' tuşuna basın... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 engellendi. Sebep: %2. - + %1 was banned 0.0.0.0 was banned %1 yasaklandı @@ -3429,91 +3594,62 @@ Desteklenen biçimler: S01E01, 1x1, 2017.12.31 ve 31.12.2017 (Tarih biçimleri d Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 bilinmeyen bir komut satırı parametresidir. - - + + %1 must be the single command line parameter. %1 tek komut satırı parametresi olmak zorundadır. - - You cannot use %1: qBittorrent is already running for this user. - %1 kullanamazsınız: qBittorrent zaten bu kullanıcı için çalışıyor. - - - + Run application with -h option to read about command line parameters. Komut satırı parametreleri hakkında bilgi için uygulamayı -h seçeneği ile çalıştırın. - + Bad command line Hatalı komut satırı - + Bad command line: Hatalı komut satırı: - + An unrecoverable error occurred. - + Kurtarılamaz bir hata meydana geldi. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Yasal Bildiri - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent bir dosya paylaşım programıdır. Bir torrent çalıştırdığınızda, veriler gönderme yoluyla başkalarının kullanımına sunulacaktır. Paylaştığınız herhangi bir içerik tamamen sizin sorumluluğunuzdadır. - - - - No further notices will be issued. - Başka bir bildiri yayınlanmayacaktır. + qBittorrent kurtarılamaz bir hatayla karşılaştı. - - Press %1 key to accept and continue... - Kabul etmek ve devam etmek için %1 tuşuna basın... + + You cannot use %1: qBittorrent is already running. + %1'i kullanamazsınız: qBittorrent zaten çalışıyor. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent bir dosya paylaşım programıdır. Bir torrent çalıştırdığınızda, veriler gönderme yoluyla başkalarının kullanımına sunulacaktır. Paylaştığınız herhangi bir içerik tamamen sizin sorumluluğunuzdadır. - -Başka bir bildiri yayınlanmayacaktır. - - - - Legal notice - Yasal bildiri + + Another qBittorrent instance is already running. + Başka bir qBittorrent örneği zaten çalışıyor. - - Cancel - İptal + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Beklenmeyen qBittorrent örneği bulundu. Bu örnekten çıkılıyor. Şu anki işlem kimliği: %1. - - I Agree - Kabul Ediyorum + + Error when daemonizing. Reason: "%1". Error code: %2. + Arka plan programı işletmede hata oldu. Sebep: "%1". Hata kodu: %2. @@ -3524,621 +3660,706 @@ Başka bir bildiri yayınlanmayacaktır. Düz&en - + &Tools &Araçlar - + &File &Dosya - + &Help &Yardım - + On Downloads &Done İndirmeler &Bittiğinde - + &View &Görünüm - + &Options... &Seçenekler... - &Resume - &Devam + &Devam - + &Remove &Kaldır - + Torrent &Creator Torrent &Oluşturucu - - + + Alternative Speed Limits Alternatif Hız Sınırları - + &Top Toolbar Üst &Araç Çubuğu - + Display Top Toolbar Üst Araç Çubuğunu Görüntüle - + Status &Bar Durum Çu&buğu - + Filters Sidebar Süzgeçler Kenar Çubuğu - + S&peed in Title Bar Başlık Çubuğunda &Hızı Göster - + Show Transfer Speed in Title Bar Aktarım Hızını Başlık Çubuğunda Göster - + &RSS Reader &RSS Okuyucu - + Search &Engine Arama &Motoru - + L&ock qBittorrent qBittorrent'i Kili&tle - + Do&nate! &Bağış Yap! - + + Sh&utdown System + + + + &Do nothing &Hiçbir şey yapma - + Close Window Pencereyi Kapat - R&esume All - &Tümüne Devam + &Tümüne Devam - + Manage Cookies... Tanımlama Bilgilerini Yönet... - + Manage stored network cookies Depolanan ağ tanımlama bilgilerini yönet - + Normal Messages Normal İletiler - + Information Messages Bilgi İletileri - + Warning Messages Uyarı İletileri - + Critical Messages Önemli İletiler - + &Log &Günlük - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Genel Hız Sınırlarını Ayarla... - + Bottom of Queue Kuyruğun En Altına - + Move to the bottom of the queue Kuyruğun en altına taşı - + Top of Queue Kuyruğun En Üstüne - + Move to the top of the queue Kuyruğun en üstüne taşı - + Move Down Queue Kuyruk Aşağı Taşı - + Move down in the queue Kuyrukta aşağı taşı - + Move Up Queue Kuyruk Yukarı Taşı - + Move up in the queue Kuyrukta yukarı taşı - + &Exit qBittorrent qBittorrent'ten Çı&k - + &Suspend System Bilgisayarı &Askıya Al - + &Hibernate System Bilgisayarı &Hazırda Beklet - S&hutdown System - Bil&gisayarı Kapat + Bil&gisayarı Kapat - + &Statistics İ&statistikler - + Check for Updates Güncellemeleri Denetle - + Check for Program Updates Program Güncellemelerini Denetle - + &About &Hakkında - &Pause - &Duraklat + &Duraklat - P&ause All - Tümünü D&uraklat + Tümünü D&uraklat - + &Add Torrent File... Torrent Dosyası &Ekle... - + Open - + E&xit Çı&kış - + Open URL URL'yi Aç - + &Documentation B&elgeler - + Lock Kilitle - - - + + + Show Göster - + Check for program updates Program güncellemelerini denetle - + Add Torrent &Link... Torrent &Bağlantısı Ekle... - + If you like qBittorrent, please donate! qBittorrent'i beğendiyseniz, lütfen bağış yapın! - - + + Execution Log Çalıştırma Günlüğü - + Clear the password Parolayı temizle - + &Set Password Parola &Ayarla - + Preferences Tercihler - + &Clear Password Parolayı &Temizle - + Transfers Aktarımlar - - + + qBittorrent is minimized to tray qBittorrent tepsiye simge durumuna küçültüldü - - - + + + This behavior can be changed in the settings. You won't be reminded again. Bu davranış ayarlar içinde değiştirilebilir. Size tekrar hatırlatılmayacaktır. - + Icons Only Sadece Simgeler - + Text Only Sadece Metin - + Text Alongside Icons Metin Simgelerin Yanında - + Text Under Icons Metin Simgelerin Altında - + Follow System Style Sistem Stilini Takip Et - - + + UI lock password Arayüz kilidi parolası - - + + Please type the UI lock password: Lütfen Arayüz kilidi parolasını yazın: - + Are you sure you want to clear the password? Parolayı temizlemek istediğinize emin misiniz? - + Use regular expressions Düzenli ifadeleri kullan - + + + Search Engine + Arama Motoru + + + + Search has failed + Arama başarısız oldu + + + + Search has finished + Arama tamamlandı + + + Search Ara - + Transfers (%1) Aktarımlar (%1) - Recursive download confirmation - Tekrarlayan indirme onayı + + qBittorrent was just updated and needs to be restarted for the changes to be effective. + qBittorrent henüz güncellendi ve değişikliklerin etkili olması için yeniden başlatılması gerek. - Never - Asla - - - - qBittorrent was just updated and needs to be restarted for the changes to be effective. - qBittorrent henüz güncellendi ve değişikliklerin etkili olması için yeniden başlatılması gerek. - - - + qBittorrent is closed to tray qBittorrent tepsiye kapatıldı - + Some files are currently transferring. Bazı dosyalar şu anda aktarılıyor. - + Are you sure you want to quit qBittorrent? qBittorrent'ten çıkmak istediğinize emin misiniz? - + &No &Hayır - + &Yes &Evet - + &Always Yes Her &Zaman Evet - + Options saved. Seçenekler kaydedildi. - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [İ: %1, G: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + - - + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Eksik Python Çalışma Zamanı - + qBittorrent Update Available qBittorrent Güncellemesi Mevcut - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Arama motorunu kullanmak için Python gerekir ancak yüklenmiş görünmüyor. Şimdi yüklemek istiyor musunuz? - + Python is required to use the search engine but it does not seem to be installed. Arama motorunu kullanmak için Python gerekir ancak yüklenmiş görünmüyor. - - + + Old Python Runtime Eski Python Çalışma Zamanı - + A new version is available. Yeni bir sürüm mevcut. - + Do you want to download %1? %1 sürümünü indirmek istiyor musunuz? - + Open changelog... Değişiklikleri aç... - + No updates available. You are already using the latest version. Mevcut güncellemeler yok. Zaten en son sürümü kullanıyorsunuz. - + &Check for Updates Güncellemeleri &Denetle - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Python sürümünüz (%1) eski. En düşük gereksinim: %2. Şimdi daha yeni bir sürümü yüklemek istiyor musunuz? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Python sürümünüz (%1) eski. Arama motorlarının çalışması için lütfen en son sürüme yükseltin. En düşük gereksinim: %2. - + + Paused + Duraklatıldı + + + Checking for Updates... Güncellemeler denetleniyor... - + Already checking for program updates in the background Program güncellemeleri arka planda zaten denetleniyor - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error İndirme hatası - Python setup could not be downloaded, reason: %1. Please install it manually. - Python kurulumu indirilemedi, sebep: %1. + Python kurulumu indirilemedi, sebep: %1. Lütfen el ile yükleyin. - - + + Invalid password Geçersiz parola - + Filter torrents... - Torrent'leri süz... + Torrent'leri süzün... - + Filter by: - Şuna göre süz: + Süzme şekli: - + The password must be at least 3 characters long Parola en az 3 karakter uzunluğunda olmak zorundadır - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - '%1' torrent'i, .torrent dosyaları içeriyor, bunların indirilmeleri ile işleme devam etmek istiyor musunuz? - - - + The password is invalid Parola geçersiz - + DL speed: %1 e.g: Download speed: 10 KiB/s İND hızı: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s GÖN hızı: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [İnd: %1, Gön: %2] qBittorrent %3 - - - + Hide Gizle - + Exiting qBittorrent qBittorrent'ten çıkılıyor - + Open Torrent Files Torrent Dosyalarını Aç - + Torrent Files Torrent Dosyaları @@ -4199,133 +4420,133 @@ Lütfen el ile yükleyin. Net::DownloadHandlerImpl - - + + I/O Error: %1 G/Ç Hatası: %1 - + The file size (%1) exceeds the download limit (%2) Dosya boyutu (%1) indirme sınırını (%2) aşıyor - + Exceeded max redirections (%1) Aşılan en fazla yeniden yönlendirme (%1) - + Redirected to magnet URI Magnet URI'ye yeniden yönlendirildi - + The remote host name was not found (invalid hostname) Uzak anamakine adı bulunamadı (geçersiz anamakine adı) - + The operation was canceled İşlem iptal edildi - + The remote server closed the connection prematurely, before the entire reply was received and processed Uzak sunucu, tam bir yanıt alınmadan ve işlenmeden önce bağlantıyı erken kapattı - + The connection to the remote server timed out Uzak sunucuya bağlantı zaman aşımına uğradı - + SSL/TLS handshake failed SSL/TLS görüşmesi başarısız oldu - + The remote server refused the connection Uzak sunucu bağlantıyı reddetti - + The connection to the proxy server was refused Proksi sunucusuna bağlantı reddedildi - + The proxy server closed the connection prematurely Proksi sunucusu bağlantıyı erken kapattı - + The proxy host name was not found Proksi anamakine adı bulunamadı - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Proksi sunucusuna bağlantı zaman aşımına uğradı ya da proksi gönderilen isteğe zamanında yanıt vermedi - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proksi, isteğe karşılık vermek için kimlik doğrulaması gerektirir ancak verilen kimlik bilgilerinin hiçbirini kabul etmedi - + The access to the remote content was denied (401) Uzak içeriğe erişim reddedildi (401) - + The operation requested on the remote content is not permitted Uzak içerikte istenen işleme izin verilmedi - + The remote content was not found at the server (404) Uzak içerik sunucuda bulunamadı (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Uzak sunucu, içeriği sunmak için kimlik doğrulaması gerektirir ancak verilen kimlik bilgileri kabul edilmedi - + The Network Access API cannot honor the request because the protocol is not known Ağ Erişim API'si, protokol bilinmediğinden isteğe yerine getiremiyor - + The requested operation is invalid for this protocol İstenen işlem bu protokol için geçersiz - + An unknown network-related error was detected Bilinmeyen bir ağ-ile-ilgili hata saptandı - + An unknown proxy-related error was detected Bilinmeyen bir proksi-ile-ilgili hata saptandı - + An unknown error related to the remote content was detected Uzak içerikle ilgili bilinmeyen bir hata saptandı - + A breakdown in protocol was detected Protokolde bir bozulma saptandı - + Unknown error Bilinmeyen hata @@ -4333,7 +4554,12 @@ Lütfen el ile yükleyin. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" SSL hatası yoksayılıyor, URL: "%1", hatalar: "%2" @@ -5705,294 +5931,307 @@ Lütfen el ile yükleyin. BitTorrent - + RSS RSS - Web UI - Web Arayüzü + Web Arayüzü - + Advanced Gelişmiş - + Customize UI Theme... Arayüz Temasını Özelleştir... - + Transfer List Aktarım Listesi - + Confirm when deleting torrents Torrent'leri silerken onayla - Shows a confirmation dialog upon pausing/resuming all the torrents - Tüm torrent'leri duraklatma/devam ettirme üzerine bir onay ileti penceresi gösterir + Tüm torrent'leri duraklatma/devam ettirme üzerine bir onay ileti penceresi gösterir - Confirm "Pause/Resume all" actions - "Tümünü duraklat/Tümüne devam" eylemlerini onayla + "Tümünü duraklat/Tümüne devam" eylemlerini onayla - + Use alternating row colors In table elements, every other row will have a grey background. Değişen satır renkleri kullan - + Hide zero and infinity values Sıfır ve sonsuz değerleri gizle - + Always Her zaman - Paused torrents only - Sadece duraklatılmış torrent'leri + Sadece duraklatılmış torrent'ler - + Action on double-click Çift tıklama eylemi - + Downloading torrents: İndirilen torrent'ler: - - Start / Stop Torrent - Torrent'i başlat / durdur + Torrent'i başlat / durdur - - + + Open destination folder Hedef klasörü aç - - + + No action Eylem yok - + Completed torrents: Tamamlanan torrent'ler: - + Auto hide zero status filters Sıfır durum süzgeçlerini otomatik gizle - + Desktop Masaüstü - + Start qBittorrent on Windows start up Windows başlangıcında qBittorrent'i başlat - + Show splash screen on start up Başlangıçta karşılama ekranı göster - + Confirmation on exit when torrents are active Torrent'ler etkinken çıkışta onay iste - + Confirmation on auto-exit when downloads finish İndirmeler tamamlandığında otomatik çıkışta onay iste - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>qBittorrent'i .torrent dosyaları ve/veya Magnet bağlantıları için varsayılan program<br/>olarak ayarlamak amacıyla <span style=" font-weight:600;">Denetim Masası</span>'ndaki <span style=" font-weight:600;">Varsayılan Programlar</span> ileti öğesini kullanabilirsiniz.</p></body></html> - + KiB KiB - + Torrent content layout: Torrent içerik düzeni: - + Original Orijinal - + Create subfolder Alt klasör oluştur - + Don't create subfolder Alt klasör oluşturma - + The torrent will be added to the top of the download queue Torrent, indirme kuyruğunun en üstüne eklenecektir - + Add to top of queue The torrent will be added to the top of the download queue Kuyruğun en üstüne ekle - + When duplicate torrent is being added Kopya torrent eklendiğinde - + Merge trackers to existing torrent İzleyicileri varolan torrent ile birleştir - + + Keep unselected files in ".unwanted" folder + Seçilmeyen dosyaları ".unwanted" klasöründe tut + + + Add... Ekle... - + Options.. Seçenekler... - + Remove Kaldır - + Email notification &upon download completion İndirmenin tamamlanması ü&zerine e-posta bildirimi yap - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Kişi bağlantı protokolü: - + Any Herhangi - + I2P (experimental) I2P (deneysel) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Eğer karışık kip etkinleştirilirse, I2P torrent'lerinin izleyici dışında diğer kaynaklardan kişiler almasına ve herhangi bir isimsizleştirme sağlamadan normal IP'lere bağlanmasına izin verilir. Bu, eğer kullanıcı I2P'nin isimsizleştirilmesiyle ilgilenmiyorsa, ancak yine de I2P kişilerine bağlanabilmek istiyorsa yararlı olabilir.</p></body></html> + <html><head/><body><p>Eğer &quot;karışık kip&quot; etkinleştirilirse, I2P torrent'lerinin izleyici dışında diğer kaynaklardan kişiler almasına ve herhangi bir isimsizleştirme sağlamadan normal IP'lere bağlanmasına izin verilir. Bu, eğer kullanıcı I2P'nin isimsizleştirilmesiyle ilgilenmiyorsa, ancak yine de I2P kişilerine bağlanabilmek istiyorsa yararlı olabilir.</p></body></html> - + Mixed mode Karışık kip - + Some options are incompatible with the chosen proxy type! Bazı seçenekler, seçilen proksi türüyle uyumlu değil! - + If checked, hostname lookups are done via the proxy Eğer işaretlendiyse, anamakine adı aramaları proksi aracılığıyla yapılır - + Perform hostname lookup via proxy Proksi aracılığıyla anamakine adı araması gerçekleştir - + Use proxy for BitTorrent purposes BitTorrent amaçları için proksi kullan - + RSS feeds will use proxy RSS bildirimleri proksi kullanacak - + Use proxy for RSS purposes RSS amaçları için proksi kullan - + Search engine, software updates or anything else will use proxy Arama motoru, yazılım güncellemeleri veya başka herhangi bir şey proksi kullanacak - + Use proxy for general purposes Genel amaçlar için proksi kullan - + IP Fi&ltering IP Süz&me - + Schedule &the use of alternative rate limits Alternatif oran sı&nırları kullanımını zamanla - + From: From start time Bu saatten: - + To: To end time Bu saate: - + Find peers on the DHT network DHT ağındaki kişileri bul - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption Şifrelemeyi etkisizleştir: Sadece protokol şifrelemesi olmadan kişilere bağlan - + Allow encryption Şifrelemeye izin ver - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Daha fazla bilgi</a>) - + Maximum active checking torrents: En fazla etkin denetlenen torrent: - + &Torrent Queueing &Torrent Kuyruğu - + When total seeding time reaches Toplam gönderim şu süreye ulaştığında - + When inactive seeding time reaches Etkin olmayan gönderim şu süreye ulaştığında - A&utomatically add these trackers to new downloads: - Bu izleyicileri &otomatik olarak yeni indirmelere ekle: + Bu izleyicileri yeni indirmelere &otomatik olarak ekle: - + RSS Reader RSS Okuyucu - + Enable fetching RSS feeds RSS bildirimlerini almayı etkinleştir - + Feeds refresh interval: Bildirimleri yenileme aralığı: - + + Same host request delay: + Aynı anamakine isteği gecikmesi: + + + Maximum number of articles per feed: Bildirim başına en fazla makale sayısı: - - - + + + min minutes dak - + Seeding Limits Gönderim Sınırları - Pause torrent - Torrent'i duraklat + Torrent'i duraklat - + Remove torrent Torrent'i kaldır - + Remove torrent and its files Torrent'i ve dosyalarını kaldır - + Enable super seeding for torrent Torrent için süper gönderimi etkinleştir - + When ratio reaches Oran şu orana ulaştığında - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent Otomatik İndirici - + Enable auto downloading of RSS torrents RSS torrent'lerini otomatik indirmeyi etkinleştir - + Edit auto downloading rules... Otomatik indirme kurallarını düzenle... - + RSS Smart Episode Filter RSS Akıllı Bölüm Süzgeci - + Download REPACK/PROPER episodes REPACK/PROPER bölümlerini indir - + Filters: Süzgeçler: - + Web User Interface (Remote control) Web Kullanıcı Arayüzü (Uzak denetim) - + IP address: IP adresi: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Bir IPv4 veya IPv6 adresi belirleyin. Herhangi bir IPv4 adresi için "0.0.0 herhangi bir IPv6 adresi için "::", ya da her iki IPv4 ve IPv6 içinse "*" belirtebilirsiniz. - + Ban client after consecutive failures: Art arda şu kadar hatadan sonra istemciyi yasakla: - + Never Asla - + ban for: yasaklama süresi: - + Session timeout: Oturum zaman aşımı: - + Disabled Etkisizleştirildi - Enable cookie Secure flag (requires HTTPS) - Tanımlama bilgisi Güvenli işaretini etkinleştir (HTTPS gerektirir) + Tanımlama bilgisi Güvenli işaretini etkinleştir (HTTPS gerektirir) - + Server domains: Sunucu etki alanları: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ sunucusu tarafından kullanılan etki alanı adlarına eklemelisiniz. Çoklu girişleri bölmek için ';' kullanın. '*' joker karakteri kullanılabilir. - + &Use HTTPS instead of HTTP HTTP yerine HTTPS &kullan - + Bypass authentication for clients on localhost Yerel makinedeki istemciler için kimlik doğrulamasını atlat - + Bypass authentication for clients in whitelisted IP subnets Beyaz listeye alınmış IP alt ağlarındaki istemciler için kimlik doğrulamasını atlat - + IP subnet whitelist... IP alt ağ beyaz listesi... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Yönlendirilen istemci adresini (X-Forwarded-For başlığı) kullanmak için ters proksi IP'lerini (veya alt ağları, örn. 0.0.0.0/24) belirtin. Birden çok girişi bölmek için ';' kullanın. - + Upda&te my dynamic domain name Değişken etki alanı adımı &güncelle - + Minimize qBittorrent to notification area qBittorrent'i bildirim alanına küçült - + + Search + Ara + + + + WebUI + + + + Interface Arayüz - + Language: Dil: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Tepsi simgesi stili: - - + + Normal Normal - + File association Dosya ilişkilendirme - + Use qBittorrent for .torrent files .torrent dosyaları için qBittorrent'i kullan - + Use qBittorrent for magnet links Magnet bağlantıları için qBittorrent'i kullan - + Check for program updates Program güncellemelerini denetle - + Power Management Güç Yönetimi - + + &Log Files + + + + Save path: Kaydetme yolu: - + Backup the log file after: Günlüğü şu boyuttan sonra yedekle: - + Delete backup logs older than: Şu süreden eski yedek günlükleri sil: - + + Show external IP in status bar + + + + When adding a torrent Bir torrent eklerken - + Bring torrent dialog to the front Torrent ileti penceresini öne getir - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Aynı zamanda eklenmesi iptal edilmiş .torrent dosyalarını da sil - + Also when addition is cancelled Ayrıca ekleme iptal edildiğinde - + Warning! Data loss possible! Uyarı! Veri kaybı mümkün! - + Saving Management Kaydetme Yönetimi - + Default Torrent Management Mode: Varsayılan Torrent Yönetim Kipi: - + Manual Elle - + Automatic Otomatik - + When Torrent Category changed: Torrent Kategorisi değiştiğinde: - + Relocate torrent Torrent'in yerini değiştir - + Switch torrent to Manual Mode Torrent'i Elle Kipine değiştir - - + + Relocate affected torrents Etkilenen torrent'lerin yerini değiştir - - + + Switch affected torrents to Manual Mode Etkilenen torrent'leri Elle Kipine değiştir - + Use Subcategories Alt kategorileri kullan - + Default Save Path: Varsayılan Kaydetme Yolu: - + Copy .torrent files to: .torrent dosyalarını şuraya kopyala: - + Show &qBittorrent in notification area &qBittorrent'i bildirim alanında göster - &Log file - &Günlük dosyası + &Günlük dosyası - + Display &torrent content and some options &Torrent içeriğini ve bazı seçenekleri görüntüle - + De&lete .torrent files afterwards Sonrasında .torrent dosyalarını si&l - + Copy .torrent files for finished downloads to: Tamamlanan indirmeler için .torrent dosyalarını şuraya kopyala: - + Pre-allocate disk space for all files Tüm dosyalar için disk alanını önceden ayır - + Use custom UI Theme Özel Arayüz Teması kullan - + UI Theme file: Arayüz Teması dosyası: - + Changing Interface settings requires application restart Arayüz ayarlarını değiştirmek uygulamanın yeniden başlatılmasını gerektirir - + Shows a confirmation dialog upon torrent deletion Torrent silme işlemi üzerine bir onay ileti penceresi gösterir - - + + Preview file, otherwise open destination folder Dosyayı önizle, aksi halde hedef klasörü aç - - Show torrent options - Torrent seçeneklerini göster + Torrent seçeneklerini göster - + Shows a confirmation dialog when exiting with active torrents Etkin torrent'lerle çıkarken bir onay ileti penceresi gösterir - + When minimizing, the main window is closed and must be reopened from the systray icon Simge durumuna küçültürken, ana pencere kapatılır ve sistem tepsisi simgesinden yeniden açılmak zorundadır - + The systray icon will still be visible when closing the main window Ana pencereyi kapatırken sistem tepsisi simgesi yine de görünür olacaktır - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window qBittorrent'i bildirim alanına kapat - + Monochrome (for dark theme) Siyah beyaz (koyu tema için) - + Monochrome (for light theme) Siyah beyaz (açık tema için) - + Inhibit system sleep when torrents are downloading Torrent'ler indiriliyorken bilgisayarın uykuya geçmesini engelle - + Inhibit system sleep when torrents are seeding Torrent'ler gönderiliyorken bilgisayarın uykuya geçmesini engelle - + Creates an additional log file after the log file reaches the specified file size Günlük dosyası belirtilen dosya boyutuna ulaştıktan sonra ilave bir günlük dosyası oluşturur - + days Delete backup logs older than 10 days gün - + months Delete backup logs older than 10 months ay - + years Delete backup logs older than 10 years yıl - + Log performance warnings Performans uyarılarını günlükle - The torrent will be added to download list in a paused state - Torrent, indirme listesine duraklatıldı durumunda eklenecektir + Torrent, indirme listesine duraklatıldı durumunda eklenecektir - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state İndirmeyi otomatik olarak başlatma - + Whether the .torrent file should be deleted after adding it Eklendikten sonra .torrent dosyasının silinmesinin gerekip gerekmeyeceği - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Parçalanmayı en aza indirmek için indirmeleri başlatmadan önce diskte tam dosya boyutlarını ayır. Sadece HDD'ler için faydalıdır. - + Append .!qB extension to incomplete files Tamamlanmamış dosyalara .!qB uzantısı ekle - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Bir torrent indirildiğinde, içinde bulunan herhangi bir .torrent dosyasından torrent'leri eklemeyi teklif eder - + Enable recursive download dialog Tekrarlayan indirme ileti penceresini etkinleştir - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Otomatik: Çeşitli torrent özelliklerine (örn. kaydetme yolu) ilişkilendirilen kategori tarafından karar verilecektir Elle: Çeşitli torrent özellikleri (örn. kaydetme yolu) el ile atanmak zorundadır - + When Default Save/Incomplete Path changed: Varsayılan Kaydetme/Tamamlanmamış Yolu değiştiğinde: - + When Category Save Path changed: Kategori Kaydetme Yolu değiştiğinde: - + Use Category paths in Manual Mode Kategori yollarını Elle Kipinde kullan - + Resolve relative Save Path against appropriate Category path instead of Default one Göreceli Kaydetme Yolunu, Varsayılan yol yerine uygun Kategori yoluna göre çöz - + Use icons from system theme Sistem temasındaki simgeleri kullan - + Window state on start up: Başlangıçta pencere durumu: - + qBittorrent window state on start up Başlangıçta qBittorrent pencere durumu - + Torrent stop condition: Torrent durdurma koşulu: - - + + None Yok - - + + Metadata received Üstveriler alındı - - + + Files checked Dosyalar denetlendi - + Ask for merging trackers when torrent is being added manually Torrent el ile eklenirken izleyicileri birleştirmeyi iste - + Use another path for incomplete torrents: Tamamlanmamış torrent'ler için başka bir yol kullan: - + Automatically add torrents from: Torrent'leri otomatik olarak şuradan ekle: - + Excluded file names Hariç tutulan dosya adları - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ benioku.txt: tam dosya adını süzün. benioku[0-9].txt: 'benioku1.txt', 'benioku2.txt' dosyasını süzün, ancak 'benioku10.txt' dosyasını değil. - + Receiver Alan - + To: To receiver Kime: - + SMTP server: SMTP sunucusu: - + Sender Gönderen - + From: From sender Kimden: - + This server requires a secure connection (SSL) Bu sunucu güvenli bir bağlantı gerektirir (SSL) - - + + Authentication Kimlik doğrulaması - - - - + + + + Username: Kullanıcı adı: - - - - + + + + Password: Parola: - + Run external program Harici programı çalıştır - Run on torrent added - Torrent eklendiğinde çalıştır + Torrent eklendiğinde çalıştır - Run on torrent finished - Torrent tamamlandığında çalıştır + Torrent tamamlandığında çalıştır - + Show console window Konsol pencereni göster - + TCP and μTP TCP ve μTP - + Listening Port Dinlenen Bağlantı Noktası - + Port used for incoming connections: Gelen bağlantılar için kullanılan bağlantı noktası: - + Set to 0 to let your system pick an unused port Sisteminizin kullanılmayan bir bağlantı noktası seçmesine izin vermek için 0 olarak ayarlayın - + Random Rastgele - + Use UPnP / NAT-PMP port forwarding from my router Yönlendiricimden UPnP / NAT-PMP bağlantı noktası yönlendirmesi kullan - + Connections Limits Bağlantı Sınırları - + Maximum number of connections per torrent: Torrent başına en fazla bağlantı sayısı: - + Global maximum number of connections: Genel en fazla bağlantı sayısı: - + Maximum number of upload slots per torrent: Torrent başına en fazla gönderme yuvası sayısı: - + Global maximum number of upload slots: Genel en fazla gönderme yuvası sayısı: - + Proxy Server Proksi Sunucusu - + Type: - Türü: + Tür: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Anamakine: - - - + + + Port: B.Noktası: - + Otherwise, the proxy server is only used for tracker connections Aksi halde, proksi sunucusu sadece izleyici bağlantıları için kullanılır - + Use proxy for peer connections Kişi bağlantıları için proksi kullan - + A&uthentication Kimlik doğr&ulaması - + Info: The password is saved unencrypted Bilgi: Parola şifrelenmeden kaydedilir - + Filter path (.dat, .p2p, .p2b): Süzgeç yolu (.dat, .p2p, .p2b): - + Reload the filter Süzgeci yeniden yükle - + Manually banned IP addresses... El ile yasaklanan IP adresleri... - + Apply to trackers İzleyicilere uygula - + Global Rate Limits Genel Oran Sınırları - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Gönderme: - - + + Download: İndirme: - + Alternative Rate Limits Alternatif Oran Sınırları - + Start time Başlangıç zamanı - + End time Bitiş zamanı - + When: Zaman: - + Every day Her gün - + Weekdays Hafta içi - + Weekends Hafta sonu - + Rate Limits Settings Oran Sınırı Ayarları - + Apply rate limit to peers on LAN Oran sınırını LAN üzerindeki kişilere uygula - + Apply rate limit to transport overhead Oran sınırını aktarım ekyüküne uygula - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Oran sınırını µTP protokolüne uygula - + Privacy Gizlilik - + Enable DHT (decentralized network) to find more peers Daha çok kişi bulmak için DHT'yi (merkezsizleştirilmiş ağ) etkinleştir - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Kişileri uyumlu Bittorrent istemcileri ile değiştir (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Daha çok kişi bulmak için Kişi Takası'nı (PeX) etkinleştir - + Look for peers on your local network Yerel ağınızdaki kişileri arar - + Enable Local Peer Discovery to find more peers Daha çok kişi bulmak için Yerel Kişi Keşfi'ni etkinleştir - + Encryption mode: Şifreleme kipi: - + Require encryption Şifreleme gerekir - + Disable encryption Şifrelemeyi etkisizleştir - + Enable when using a proxy or a VPN connection Bir proksi veya VPN bağlantısı kullanılırken etkinleştir - + Enable anonymous mode İsimsiz kipi etkinleştir - + Maximum active downloads: En fazla aktif indirme: - + Maximum active uploads: En fazla aktif gönderme: - + Maximum active torrents: En fazla aktif torrent: - + Do not count slow torrents in these limits Yavaş torrent'leri bu sınırlar içinde sayma - + Upload rate threshold: Gönderme oranı eşiği: - + Download rate threshold: İndirme oranı eşiği: - - - + + + + sec seconds san - + Torrent inactivity timer: Torrent boşta durma zamanlayıcısı: - + then ardından - + Use UPnP / NAT-PMP to forward the port from my router Yönlendiricimden bağlantı noktasını yönlendirmek için UPnP / NAT-PMP kullan - + Certificate: Sertifika: - + Key: Anahtar: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Sertifikalar hakkında bilgi</a> - + Change current password Şu anki parolayı değiştirin - Use alternative Web UI - Alternatif Web Arayüzü kullan + Alternatif Web Arayüzü kullan - + Files location: Dosyaların konumu: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Güvenlik - + Enable clickjacking protection Tıklama suistimali (clickjacking) korumasını etkinleştir - + Enable Cross-Site Request Forgery (CSRF) protection Siteler Arası İstek Sahtekarlığı (CSRF) korumasını etkinleştir - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Anamakine üstbilgi doğrulamasını etkinleştir - + Add custom HTTP headers Özel HTTP üstbilgilerini ekle - + Header: value pairs, one per line Üstbilgi: değer çiftleri, satır başına bir - + Enable reverse proxy support Ters proksi desteğini etkinleştir - + Trusted proxies list: Güvenilen proksiler listesi: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Hizmet: - + Register Kaydol - + Domain name: Etki alanı adı: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Bu seçenekleri etkinleştirerek, .torrent dosyalarınızı <strong>geri alınamaz bir şekilde kaybedebilirsiniz</strong>! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Eğer ikinci seçeneği (&ldquo;Ayrıca ekleme iptal edildiğinde&rdquo;) etkinleştirirseniz, &ldquo;Torrent ekle&rdquo; ileti penceresinde &ldquo;<strong>İptal</strong>&rdquo; düğmesine bassanız bile .torrent dosyası <strong>silinecektir</strong> - + Select qBittorrent UI Theme file qBittorrent Arayüz Teması dosyasını seç - + Choose Alternative UI files location Alternatif Arayüz dosyaları konumunu seçin - + Supported parameters (case sensitive): Desteklenen parametreler (büyük küçük harfe duyarlı): - + Minimized Simge durumunda - + Hidden Gizli - + Disabled due to failed to detect system tray presence Sistem tepsisi varlığının algılanması başarısız olduğundan dolayı etkisizleştirildi - + No stop condition is set. Ayarlanan durdurma koşulu yok. - + Torrent will stop after metadata is received. Torrent, üstveriler alındıktan sonra duracak. - - Torrents that have metadata initially aren't affected. - Başlangıçta üstverileri olan torrent'ler etkilenmez. - - - + Torrent will stop after files are initially checked. Torrent, dosyalar başlangıçta denetlendikten sonra duracak. - + This will also download metadata if it wasn't there initially. Bu, başlangıçta orada değilse, üstverileri de indirecek. - + %N: Torrent name %N: Torrent adı - + %L: Category %L: Kategori - + %F: Content path (same as root path for multifile torrent) %F: İçerik yolu (çok dosyalı torrent için olan kök yolu ile aynı) - + %R: Root path (first torrent subdirectory path) %R: Kök yolu (ilk torrent alt dizin yolu) - + %D: Save path %D: Kaydetme yolu - + %C: Number of files %C: Dosya sayısı - + %Z: Torrent size (bytes) %Z: Torrent boyutu (bayt) - + %T: Current tracker %T: Şu anki izleyici - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") İpucu: Metnin boşluktan kesilmesini önlemek için parametreyi tırnak işaretleri arasına alın (örn., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Yok) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Bir torrent, indirme ve gönderme oranları bu "Torrent boşta durma zamanlayıcısı" saniye değerinin altında kalırsa yavaş sayılacaktır - + Certificate Sertifika - + Select certificate Sertifika seç - + Private key Özel anahtar - + Select private key Özel anahtar seç - + + WebUI configuration failed. Reason: %1 + Web Arayüzü yapılandırması başarısız oldu. Sebep: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor İzlemek için bir klasör seçin - + Adding entry failed Giriş ekleme başarısız oldu - - Location Error - Konum Hatası + + The WebUI username must be at least 3 characters long. + Web Arayüzü kullanıcı adı en az 3 karakter uzunluğunda olmak zorundadır. - - The alternative Web UI files location cannot be blank. - Alternatif Web Arayüzü dosyaları konumu boş olamaz. + + The WebUI password must be at least 6 characters long. + Web Arayüzü parolası en az 6 karakter uzunluğunda olmak zorundadır. - - + + Location Error + Konum Hatası + + + + Choose export directory Dışa aktarma dizini seçin - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Bu seçenekler etkinleştirildiğinde, dosyalar başarılı olarak indirme kuyruğuna eklendikten (ilk seçenek) ya da eklenmedikten (ikinci seçenek) sonra qBittorrent .torrent dosyalarını <strong>silecek</strong>. Bu, sadece &ldquo;Torrent ekle&rdquo; menüsü eylemi aracılığıyla açılan dosyalara <strong>değil</strong> ayrıca <strong>dosya türü ilişkilendirmesi</strong> aracılığıyla açılanlara da uygulanacaktır - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent Arayüz Teması dosyası (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Etiketler (virgülle ayırarak) - + %I: Info hash v1 (or '-' if unavailable) %I: Bilgi adreslemesi v1 (veya yoksa '-') - + %J: Info hash v2 (or '-' if unavailable) %J: Bilgi adreslemesi v2 (veya yoksa '-') - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent Kimliği (ya v1 torrent için sha-1 bilgi adreslemesi ya da v2/hybrid torrent için kesilmiş sha-256 bilgi adreslemesi) - - - + + + Choose a save directory Bir kaydetme dizini seçin - + + Torrents that have metadata initially will be added as stopped. + Başlangıçta üstverileri olan torrent'ler durduruldu olarak eklenecektir. + + + Choose an IP filter file Bir IP süzgeci dosyası seçin - + All supported filters Tüm desteklenen süzgeçler - + + The alternative WebUI files location cannot be blank. + Alternatif Web Arayüzü dosyaları konumu boş olamaz. + + + Parsing error Ayrıştırma hatası - + Failed to parse the provided IP filter Verilen IP süzgecini ayrıştırma başarısız - + Successfully refreshed Başarılı olarak yenilendi - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Verilen IP süzgeci başarılı olarak ayrıştırıldı: %1 kural uygulandı. - + Preferences Tercihler - + Time Error Zaman Hatası - + The start time and the end time can't be the same. Başlangıç zamanı ve bitiş zamanı aynı olamaz. - - + + Length Error Uzunluk Hatası - - - The Web UI username must be at least 3 characters long. - Web Arayüzü kullanıcı adı en az 3 karakter uzunluğunda olmak zorundadır. - - - - The Web UI password must be at least 6 characters long. - Web Arayüzü parolası en az 6 karakter uzunluğunda olmak zorundadır. - PeerInfo - + Unknown Bilinmiyor - + Interested (local) and choked (peer) İlgilenen (yerel) ve sıkışan (kişi) - + Interested (local) and unchoked (peer) İlgilenen (yerel) ve sıkışmayan (kişi) - + Interested (peer) and choked (local) İlgilenen (kişi) ve sıkışan (yerel) - + Interested (peer) and unchoked (local) İlgilenen (kişi) ve sıkışmayan (yerel) - + Not interested (local) and unchoked (peer) İlgilenmeyen (yerel) ve sıkışmayan (kişi) - + Not interested (peer) and unchoked (local) İlgilenmeyen (kişi) ve sıkışmayan (yerel) - + Optimistic unchoke İyimser sıkışmama - + Peer snubbed Kişi geri çevrildi - + Incoming connection Gelen bağlantı - + Peer from DHT DHT'den kişi - + Peer from PEX PEX'ten kişi - + Peer from LSD LSD'den kişi - + Encrypted traffic Şifrelenmiş trafik - + Encrypted handshake Şifrelenmiş görüşme + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ benioku[0-9].txt: 'benioku1.txt', 'benioku2.txt' dosyasını Kişi "%1" el ile yasaklandı - + N/A Yok @@ -7668,7 +8080,7 @@ benioku[0-9].txt: 'benioku1.txt', 'benioku2.txt' dosyasını Eklemek için kişilerin listesi (her satıra bir IP): - + Format: IPv4:port / [IPv6]:port Biçim: IPv4:b.noktası / [IPv6]:b.noktası @@ -7709,27 +8121,27 @@ benioku[0-9].txt: 'benioku1.txt', 'benioku2.txt' dosyasını PiecesBar - + Files in this piece: Bu parçadaki dosyalar: - + File in this piece: Bu parçadaki dosya: - + File in these pieces: Bu parçalardaki dosya: - + Wait until metadata become available to see detailed information Ayrıntılı bilgileri görmek için üstveri mevcut olana kadar bekle - + Hold Shift key for detailed information Ayrıntılı bilgiler için Shift tuşunu basılı tutun @@ -7742,58 +8154,58 @@ benioku[0-9].txt: 'benioku1.txt', 'benioku2.txt' dosyasını Arama eklentileri - + Installed search plugins: Yüklenmiş arama eklentileri: - + Name Ad - + Version Sürüm - + Url Url - - + + Enabled Etkinleştirildi - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Uyarı: Bu arama motorlarının herhangi birinden torrent'leri indirirken ülkenizin telif hakkı yasalarına uyulduğundan emin olun. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Yeni arama motoru eklentilerini buradan alabilirsiniz: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Yeni bir tane yükle - + Check for updates Güncellemeleri denetle - + Close Kapat - + Uninstall Kaldır @@ -7913,17 +8325,17 @@ Bu eklentiler etkisizleştirildi. Eklenti kaynağı - + Search plugin source: Arama eklentisi kaynağı: - + Local file Yerel dosya - + Web link Web bağlantısı @@ -7941,70 +8353,70 @@ Bu eklentiler etkisizleştirildi. Power management found suitable D-Bus interface. Interface: %1 - + Güç yönetimi uygun D-Bus arayüzünü buldu. Arayüz: %1 Power management error. Did not found suitable D-Bus interface. - + Güç yönetimi hatası. Uygun D-Bus arayüzü bulunamadı. Power management error. Action: %1. Error: %2 - + Güç yönetimi hatası. Eylem: %1. Hata: %2 Power management unexpected error. State: %1. Error: %2 - + Güç yönetimi beklenmeyen hata. Durum: %1. Hata: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: "%1" torrent'inden aşağıdaki dosyalar önizlemeyi destekliyor, lütfen bunlardan birini seçin: - + Preview Önizle - + Name Ad - + Size Boyut - + Progress İlerleme - + Preview impossible Önizleme imkansız - + Sorry, we can't preview this file: "%1". Üzgünüz, bu dosyayı önizletemiyoruz: "%1". - + Resize columns Sütunları yeniden boyutlandır - + Resize all non-hidden columns to the size of their contents Gizli olmayan tüm sütunları içeriklerinin boyutuna göre yeniden boyutlandır @@ -8017,27 +8429,27 @@ Bu eklentiler etkisizleştirildi. Private::FileLineEdit - + Path does not exist Yol mevcut değil - + Path does not point to a directory Yol bir dizini işaret etmiyor - + Path does not point to a file Yol bir dosyayı işaret etmiyor - + Don't have read permission to path Yol için okuma izni yok - + Don't have write permission to path Yol için yazma izni yok @@ -8078,12 +8490,12 @@ Bu eklentiler etkisizleştirildi. PropertiesWidget - + Downloaded: İndirilen: - + Availability: Kullanılabilirlik: @@ -8098,53 +8510,53 @@ Bu eklentiler etkisizleştirildi. Aktarım - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Etkinlik Süresi: - + ETA: TBS: - + Uploaded: Gönderilen: - + Seeds: Gönderim: - + Download Speed: İndirme Hızı: - + Upload Speed: Gönderme Hızı: - + Peers: Kişi: - + Download Limit: İndirme Sınırı: - + Upload Limit: Gönderme Sınırı: - + Wasted: Boşa Giden: @@ -8154,193 +8566,249 @@ Bu eklentiler etkisizleştirildi. Bağlantı: - + Information Bilgi - + Info Hash v1: Bilgi Adreslemesi v1: - + Info Hash v2: Bilgi Adreslemesi v2: - + Comment: Açıklama: - + Select All Tümünü Seç - + Select None Hiçbirini Seçme - + Share Ratio: Paylaşma Oranı: - + Reannounce In: Yeniden Duyuru Süresi: - + Last Seen Complete: Tam Halinin Görülmesi: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Toplam Boyut: - + Pieces: Parça: - + Created By: Oluşturan: - + Added On: Eklenme: - + Completed On: Tamamlanma: - + Created On: Oluşturma: - + + Private: + + + + Save Path: Kaydetme Yolu: - + Never Asla - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (%3 var) - - + + %1 (%2 this session) %1 (bu oturumda %2) - - + + + N/A Yok - + + Yes + Evet + + + + No + Hayır + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (gönderilme %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (en fazla %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (toplam %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (ort. %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Yeni Web gönderimi + Yeni Web gönderimi - Remove Web seed - Web gönderimini kaldır + Web gönderimini kaldır - Copy Web seed URL - Web gönderim URL'sini kopyala + Web gönderim URL'sini kopyala - Edit Web seed URL - Web gönderim URL'sini düzenle + Web gönderim URL'sini düzenle - + Filter files... Dosyaları süzün... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Hız grafikleri etkisizleştirildi - + You can enable it in Advanced Options Bunu Gelişmiş Seçenekler'de etkinleştirebilirsiniz - New URL seed New HTTP source - Yeni URL gönderimi + Yeni URL gönderimi - New URL seed: - Yeni URL gönderimi: + Yeni URL gönderimi: - - This URL seed is already in the list. - Bu URL gönderimi zaten listede. + Bu URL gönderimi zaten listede. - + Web seed editing Web gönderim düzenleme - + Web seed URL: Web gönderim URL'si: @@ -8359,22 +8827,22 @@ Bu eklentiler etkisizleştirildi. %1 içine RSS Otoİndirici verileri kaydedilemedi. Hata: %2 - + Invalid data format Geçersiz veri biçimi - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS makalesi '%1', '%2' kuralı tarafından kabul edildi. Torrent eklenmeye çalışılıyor... - + Failed to read RSS AutoDownloader rules. %1 RSS Otoİndirici kurallarını okuma başarısız. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 RSS Otoİndirici kuralları yüklenemedi. Sebep: %1 @@ -8382,22 +8850,22 @@ Bu eklentiler etkisizleştirildi. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 RSS bildirimini '%1' adresinden indirme başarısız. Sebep: %2 - + RSS feed at '%1' updated. Added %2 new articles. '%1' adresinden RSS bildirimi güncellendi. %2 yeni makale eklendi. - + Failed to parse RSS feed at '%1'. Reason: %2 RSS bildirimini '%1' adresinden ayrıştırma başarısız. Sebep: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. '%1' adresinden RSS bildirimi başarılı olarak indirildi. Ayrıştırmaya başlanıyor. @@ -8433,12 +8901,12 @@ Bu eklentiler etkisizleştirildi. RSS::Private::Parser - + Invalid RSS feed. Geçersiz RSS bildirimi. - + %1 (line: %2, column: %3, offset: %4). %1 (satır: %2, sütün: %3, çıkıntı: %4). @@ -8446,99 +8914,99 @@ Bu eklentiler etkisizleştirildi. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" RSS oturum yapılandırması kaydedilemedi. Dosya: "%1". Hata: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" RSS oturum verileri kaydedilemedi. Dosya: "%1". Hata: "%2" - - + + RSS feed with given URL already exists: %1. Verilen URL ile RSS bildirimi zaten var: %1. - + Feed doesn't exist: %1. Bildirim mevcut değil: %1. - + Cannot move root folder. Kök klasör taşınamıyor. - - + + Item doesn't exist: %1. Öğe mevcut değil: %1. - + Couldn't move folder into itself. Klasör kendi içine taşınamadı. - + Cannot delete root folder. Kök klasör silinemiyor. - + Failed to read RSS session data. %1 RSS oturum verilerini okuma başarısız. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" RSS oturum verilerini ayrıştırma başarısız. Dosya: "%1". Hata: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." RSS oturum verilerini yükleme başarısız. Dosya: "%1". Hata: "Geçersiz veri biçimi." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. RSS bildirimi yüklenemedi. Bildirim: "%1". Sebep: URL gerekli. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. RSS bildirimi yüklenemedi. Bildirim: "%1". Sebep: UID geçersiz. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Kopya RSS bildirimi bulundu. UID: "%1". Hata: Yapılandırma bozuk gibi görünüyor. - + Couldn't load RSS item. Item: "%1". Invalid data format. RSS öğesi yüklenemedi. Öğe: "%1". Geçersiz veri biçimi. - + Corrupted RSS list, not loading it. RSS listesi bozuldu, yüklenmiyor. - + Incorrect RSS Item path: %1. Yanlış RSS Öğesi yolu: %1. - + RSS item with given path already exists: %1. Verilen yol ile RSS öğesi zaten var: %1. - + Parent folder doesn't exist: %1. Ana klasör mevcut değil: %1. @@ -8562,8 +9030,8 @@ Bu eklentiler etkisizleştirildi. - - + + Mark items read Öğeleri okundu olarak işaretle @@ -8588,132 +9056,132 @@ Bu eklentiler etkisizleştirildi. Torrent'ler: (indirmek için çift tıklayın) - - + + Delete Sil - + Rename... Yeniden adlandır... - + Rename Yeniden adlandır - - + + Update Güncelle - + New subscription... Yeni abonelik... - - + + Update all feeds Tüm bildirimleri güncelle - + Download torrent Torrent'i indir - + Open news URL Haber URL'sini aç - + Copy feed URL Bildirim URL'sini kopyala - + New folder... Yeni klasör... - + Edit feed URL... Bildirim URLʼsini düzenle... - + Edit feed URL Bildirim URLʼsini düzenle - + Please choose a folder name Lütfen bir klasör adı seçin - + Folder name: Klasör adı: - + New folder Yeni klasör - - + + Please type a RSS feed URL Lütfen bir RSS bildirim URL'si yazın - - + + Feed URL: Bildirim URL'si: - + Deletion confirmation Silme onayı - + Are you sure you want to delete the selected RSS feeds? Seçilen RSS bildirimlerini silmek istediğinize emin misiniz? - + Please choose a new name for this RSS feed Lütfen bu RSS bildirimi için yeni bir ad seçin - + New feed name: Yeni bildirim adı: - + Rename failed Yeniden adlandırma başarısız oldu - + Date: Tarih: - + Feed: - + Bildirim: - + Author: Hazırlayan: @@ -8721,38 +9189,38 @@ Bu eklentiler etkisizleştirildi. SearchController - + Python must be installed to use the Search Engine. Arama Motorunu kullanmak için Python yüklenmek zorundadır. - + Unable to create more than %1 concurrent searches. %1 taneden fazla eşzamanlı arama oluşturulamıyor. - - + + Offset is out of range Uzaklık aralık dışında - + All plugins are already up to date. Tüm eklentiler zaten güncel. - + Updating %1 plugins %1 eklenti güncelleniyor - + Updating plugin %1 %1 eklentisi güncelleniyor - + Failed to check for plugin updates: %1 Eklenti güncellemeleri denetimi başarız: %1 @@ -8827,132 +9295,146 @@ Bu eklentiler etkisizleştirildi. Boyut: - + Name i.e: file name Ad - + Size i.e: file size Boyut - + Seeders i.e: Number of full sources Gönderen - + Leechers i.e: Number of partial sources Çeken - Search engine - Arama motoru + Arama motoru - + Filter search results... Arama sonuçlarını süzün... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Sonuçlar (<i>%1</i> / <i>%2</i> gösteriliyor): - + Torrent names only Sadece torrent adları - + Everywhere Her yeri - + Use regular expressions Düzenli ifadeleri kullan - + Open download window İndirme penceresini aç - + Download İndir - + Open description page Açıklama sayfasını aç - + Copy Kopyala - + Name Ad - + Download link İndirme bağlantısı - + Description page URL Açıklama sayfası URL'si - + Searching... Aranıyor... - + Search has finished Arama tamamlandı - + Search aborted Arama iptal edildi - + An error occurred during search... Arama sırasında bir hata meydana geldi... - + Search returned no results Arama hiç sonuç bulamadı - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Sütun görünürlüğü - + Resize columns Sütunları yeniden boyutlandır - + Resize all non-hidden columns to the size of their contents Gizli olmayan tüm sütunları içeriklerinin boyutuna göre yeniden boyutlandır @@ -8960,104 +9442,104 @@ Bu eklentiler etkisizleştirildi. SearchPluginManager - + Unknown search engine plugin file format. Bilinmeyen arama motoru eklentisi dosya biçimi. - + Plugin already at version %1, which is greater than %2 Eklenti zaten %2 sürümünden büyük olan %1 sürümünde - + A more recent version of this plugin is already installed. Bu eklentinin en son sürümü zaten yüklü. - + Plugin %1 is not supported. %1 eklentisi desteklenmiyor. - - + + Plugin is not supported. Eklenti desteklenmiyor. - + Plugin %1 has been successfully updated. %1 eklentisi başarılı olarak güncellendi. - + All categories Tüm kategoriler - + Movies Filmler - + TV shows TV programları - + Music Müzik - + Games Oyunlar - + Anime Çizgi film - + Software Yazılım - + Pictures Resimler - + Books Kitaplar - + Update server is temporarily unavailable. %1 Güncelleme sunucusu geçici olarak kullanılamaz. %1 - - + + Failed to download the plugin file. %1 Eklenti dosyasını indirme başarısız. %1 - + Plugin "%1" is outdated, updating to version %2 "%1" eklentisi eski, %2 sürümüne güncelleniyor - + Incorrect update info received for %1 out of %2 plugins. %1 / %2 eklenti için yanlış güncelleme bilgisi alındı. - + Search plugin '%1' contains invalid version string ('%2') Aranan eklenti '%1' geçersiz sürüm dizgisi ('%2') içeriyor @@ -9067,114 +9549,153 @@ Bu eklentiler etkisizleştirildi. - - - - Search Ara - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Yüklü herhangi bir arama eklentisi yok. Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri..." düğmesine tıklayın. - + Search plugins... Arama eklentileri... - + A phrase to search for. Aranacak bir ifade. - + Spaces in a search term may be protected by double quotes. Aranan bir terimdeki boşluklar çift tırnaklar ile korunabilir. - + Example: Search phrase example Örnek: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: aranacak olan <b>foo bar</b> - + All plugins Tüm eklentiler - + Only enabled Sadece etkinleştirilenler - + + + Invalid data format. + Geçersiz veri biçimi. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: aranacak olan <b>foo</b> ve <b>bar</b> - + + Refresh + + + + Close tab Sekmeyi kapat - + Close all tabs Tüm sekmeleri kapat - + Select... Seç... - - - + + Search Engine Arama Motoru - + + Please install Python to use the Search Engine. Arama Motorunu kullanmak için lütfen Python'u yükleyin. - + Empty search pattern Boş arama örneği - + Please type a search pattern first Lütfen önce bir arama örneği girin - + + Stop Durdur - Search has finished - Arama tamamlandı + Arama tamamlandı - Search has failed - Arama başarısız oldu + Arama başarısız oldu + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri - + Upload: Gönderme: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: İndirme: - + Alternative speed limits Alternatif hız sınırları @@ -9506,32 +10027,32 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Kuyruktaki ortalama süre: - + Connected peers: Bağlı kişi: - + All-time share ratio: Tüm zaman paylaşma oranı: - + All-time download: Tüm zaman indirilen: - + Session waste: Oturum israfı: - + All-time upload: Tüm zaman gönderilen: - + Total buffer size: Toplam arabellek boyutu: @@ -9546,12 +10067,12 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Kuyruğa alınmış G/Ç işi: - + Write cache overload: Yazma önbelleği aşırı yükü: - + Read cache overload: Okuma önbelleği aşırı yükü: @@ -9570,51 +10091,67 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri StatusBar - + Connection status: Bağlantı durumu: - - + + No direct connections. This may indicate network configuration problems. Doğrudan bağlantılar yok. Bu, ağ yapılandırma sorunlarını gösterebilir. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 düğüm - + qBittorrent needs to be restarted! qBittorrent'in yeniden başlatılması gerek! - - - + + + Connection Status: Bağlantı Durumu: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Çevrimdışı. Bu genellikle qBittorrent'in gelen bağlantılar için seçilen bağlantı noktasını dinlemede başarısız olduğu anlamına gelir. - + Online Çevrimiçi - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Alternatif hız sınırlarını değiştirmek için tıklayın - + Click to switch to regular speed limits Düzenli hız sınırlarını değiştirmek için tıklayın @@ -9643,14 +10180,22 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Tamamlandı (0) - Resumed (0) - Devam Edildi (0) + Devam Edildi (0) - Paused (0) - Duraklatıldı (0) + Duraklatıldı (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9665,17 +10210,17 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Stalled (0) - Durduruldu (0) + Durdu (0) Stalled Uploading (0) - Durdurulan Gönderme (0) + Duran Gönderme (0) Stalled Downloading (0) - Durdurulan İndirme (0) + Duran İndirme (0) @@ -9712,10 +10257,29 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Completed (%1) Tamamlandı (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Duraklatıldı (%1) + Duraklatıldı (%1) @@ -9723,14 +10287,12 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Taşınıyor (%1) - Resume torrents - Torrent'lere devam et + Torrent'lere devam et - Pause torrents - Torrent'leri duraklat + Torrent'leri duraklat @@ -9738,9 +10300,8 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Torrent'leri kaldır - Resumed (%1) - Devam Edildi (%1) + Devam Edildi (%1) @@ -9755,17 +10316,17 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Stalled (%1) - Durduruldu (%1) + Durdu (%1) Stalled Uploading (%1) - Durdurulan Gönderme (%1) + Duran Gönderme (%1) Stalled Downloading (%1) - Durdurulan İndirme (%1) + Duran İndirme (%1) @@ -9781,17 +10342,17 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri TagFilterModel - + Tags Etiketler - + All Tümü - + Untagged Etiketlenmemiş @@ -9799,52 +10360,64 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri TagFilterWidget - + Add tag... Etiket ekle... - + Remove tag Etiketi kaldır - + Remove unused tags Kullanılmayan etiketleri kaldır - Resume torrents - Torrent'lere devam et + Torrent'lere devam et - Pause torrents - Torrent'leri duraklat + Torrent'leri duraklat - + Remove torrents Torrent'leri kaldır - New Tag - Yeni Etiket + Yeni Etiket + + + + Start torrents + + + + + Stop torrents + - + Tag: Etiket: - + + Add tag + + + + Invalid tag name Geçersiz etiket adı - + Tag name '%1' is invalid Etiket adı '%1' geçersiz @@ -9874,7 +10447,7 @@ Bazılarını yüklemek için pencerenin sağ altındaki "Arama eklentileri Save path for incomplete torrents: - Tamamlanmamış torrent'ler için yolu kaydet: + Tamamlanmamış torrent'ler için kaydetme yolu: @@ -9984,32 +10557,32 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TorrentContentModel - + Name Ad - + Progress İlerleme - + Download Priority İndirme Önceliği - + Remaining Kalan - + Availability Kullanılabilirlik - + Total Size Toplam Boyut @@ -10054,102 +10627,120 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TorrentContentWidget - + Rename error Yeniden adlandırma hatası - + Renaming Yeniden adlandırma - + New name: Yeni adı: - + Column visibility Sütun görünürlüğü - + Resize columns Sütunları yeniden boyutlandır - + Resize all non-hidden columns to the size of their contents Gizli olmayan tüm sütunları içeriklerinin boyutuna göre yeniden boyutlandır - + Open - + Open containing folder İçeren klasörü aç - + Rename... Yeniden adlandır... - + Priority Öncelik - - + + Do not download İndirme yapma - + Normal Normal - + High Yüksek - + Maximum En yüksek - + By shown file order Gösterilen dosya sırasına göre - + Normal priority Normal öncelik - + High priority Yüksek öncelik - + Maximum priority En yüksek öncelik - + Priority by shown file order Gösterilen dosya sırasına göre öncelik + + TorrentCreatorController + + + Too many active tasks + Çok fazla etkin görev + + + + Torrent creation is still unfinished. + Torrent oluşturma hala tamamlanmadı. + + + + Torrent creation failed. + Torrent oluşturma başarısız oldu. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. - + Select file Dosya seç - + Select folder Klasör seç @@ -10205,58 +10796,10 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Parça boyutu: - + Auto Otomatik - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Alanlar - + You can separate tracker tiers / groups with an empty line. İzleyici katmanlarını / gruplarını boş bir satırla ayırabilirsiniz. - + Web seed URLs: Web gönderim URL'leri: - + Tracker URLs: İzleyici URL'leri: - + Comments: Açıklamalar: - + Source: Kaynak: - + Progress: İlerleme: - + Create Torrent Torrent Oluştur - - + + Torrent creation failed Torrent oluşturma başarısız oldu - + Reason: Path to file/folder is not readable. Sebep: Dosya/klasör için yol okunabilir değil. - + Select where to save the new torrent Yeni torrent'in kaydedileceği yeri seçin - + Torrent Files (*.torrent) Torrent Dosyaları (*.torrent) - - Reason: %1 - Sebep: %1 - - - + Add torrent to transfer list failed. - + Torrent'i aktarım listesine ekleme başarısız oldu. - + Reason: "%1" - + Sebep: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Sebep: Oluşturulan torrent geçersiz. İndirme listesine eklenmeyecektir. + Torrent ekleme başarısız oldu - + Torrent creator Torrent oluşturucu - + Torrent created: Torrent oluşturuldu: @@ -10396,32 +10930,32 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 İzlenen Klasörler yapılandırmasını yükleme başarısız. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" %1 konumundan İzlenen Klasörler yapılandırmasını ayrıştırma başarısız. Hata: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." %1 konumundan İzlenen Klasörler yapılandırmasını yükleme başarısız. Hata: "Geçersiz veri biçimi." - + Couldn't store Watched Folders configuration to %1. Error: %2 %1 konumuna İzlenen Klasörler yapılandırması depolanamadı. Hata: %2 - + Watched folder Path cannot be empty. İzlenen klasör Yolu boş olamaz. - + Watched folder Path cannot be relative. İzlenen klasör Yolu göreceli olamaz. @@ -10429,27 +10963,27 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Geçersiz Magnet URI'si. URI: %1. Sebep: %2 - + Magnet file too big. File: %1 Magnet dosyası çok büyük. Dosya: %1 - + Failed to open magnet file: %1 Magnet dosyasını açma başarısız: %1 - + Rejecting failed torrent file: %1 Başarısız olan torrent dosyası reddediliyor: %1 - + Watching folder: "%1" İzlenen klasör: "%1" @@ -10457,14 +10991,12 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Dosya okunurken bellek ayırma başarısız. Dosya: "%1". Hata: "%2" + Dosya okunurken bellek ayırma başarısız. Dosya: "%1". Hata: "%2" - Invalid metadata - Geçersiz üstveri + Geçersiz üstveri @@ -10495,279 +11027,374 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Tamamlanmamış torrent için başka bir yol kullan - + Category: Kategori: - + + Torrent Share Limits + + + Torrent speed limits - Torrent hız sınırları + Torrent hız sınırları - + Download: İndirme: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Bunlar genel sınırları aşmayacaktır - + Upload: Gönderme: - Torrent share limits - Torrent paylaşma sınırları + Torrent paylaşma sınırları - Use global share limit - Genel paylaşma sınırını kullan + Genel paylaşma sınırını kullan - Set no share limit - Paylaşma sınırı ayarlama + Paylaşma sınırı ayarlama - Set share limit to - Paylaşma sınırını şuna ayarla + Paylaşma sınırını şuna ayarla - ratio - oran + oran - total minutes - toplam dakika + toplam dakika - inactive minutes - etkin olmayan dakika + etkin olmayan dakika - + Disable DHT for this torrent Bu torrent için DHT'yi etkisizleştir - + Download in sequential order Sıralı düzende indir - + Disable PeX for this torrent Bu torrent için PeX'i etkisizleştir - + Download first and last pieces first Önce ilk ve son parçaları indir - + Disable LSD for this torrent Bu torrent için LSD'yi etkisizleştir - + Currently used categories Şu anda kullanılan kategoriler - - + + Choose save path Kaydetme yolunu seçin - + Not applicable to private torrents Özel torrent'lere uygulanamaz - No share limit method selected - Seçilen paylaşma sınırı yöntemi yok + Seçilen paylaşma sınırı yöntemi yok - Please select a limit method first - Lütfen önce bir sınır yöntemi seçin + Lütfen önce bir sınır yöntemi seçin - TorrentTagsDialog + TorrentShareLimitsWidget - - Torrent Tags - Torrent Etiketleri + + + + + Default + Varsayılan - - New Tag - Yeni Etiket + + + + Unlimited + Sınırsız - - Tag: - Etiket: + + + + Set to + Şuna ayarla - - Invalid tag name - Geçersiz etiket adı + + Seeding time: + Gönderim süresi: - - Tag name '%1' is invalid. - Etiket adı '%1' geçersiz. + + + + + + + min + minutes + dak - - Tag exists - Etiket var + + Inactive seeding time: + Etkin olmayan gönderim süresi: - - Tag name already exists. - Etiket adı zaten var. + + Action when the limit is reached: + - - - TorrentsController - - Error: '%1' is not a valid torrent file. - Hata: '%1' geçerli bir torrent dosyası değil. + + Stop torrent + - - Priority must be an integer + + Remove torrent + Torrent'i kaldır + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Torrent için süper gönderimi etkinleştir + + + + Ratio: + Oran: + + + + TorrentTagsDialog + + + Torrent Tags + Torrent Etiketleri + + + New Tag + Yeni Etiket + + + + Add tag + + + + + Tag: + Etiket: + + + + Invalid tag name + Geçersiz etiket adı + + + + Tag name '%1' is invalid. + Etiket adı '%1' geçersiz. + + + + Tag exists + Etiket var + + + + Tag name already exists. + Etiket adı zaten var. + + + + TorrentsController + + + Error: '%1' is not a valid torrent file. + Hata: '%1' geçerli bir torrent dosyası değil. + + + + Priority must be an integer Öncelik bir tam sayı olmak zorundadır - + Priority is not valid Öncelik geçerli değil - + Torrent's metadata has not yet downloaded Torrent'lerin üstverisi henüz indirilmedi - + File IDs must be integers Dosya kimlikleri tam sayılar olmak zorundadır - + File ID is not valid Dosya kimliği geçerli değil - - - - + + + + Torrent queueing must be enabled Torrent kuyruğa alma etkinleştirilmek zorundadır - - + + Save path cannot be empty Kaydetme yolu boş olamaz - - + + Cannot create target directory Hedef dizin oluşturulamıyor - - + + Category cannot be empty Kategori boş olamaz - + Unable to create category Kategori oluşturulamıyor - + Unable to edit category Kategori düzenlenemiyor - + Unable to export torrent file. Error: %1 Torrent dosyası dışa aktarılamıyor. Hata: %1 - + Cannot make save path Kaydetme yolunu oluşturamıyor - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 'sırala' parametresi geçersiz - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. '%1' geçerli bir dosya indeksi değil. - + Index %1 is out of bounds. %1 indeksi sınırların dışında. - - + + Cannot write to directory Dizine yazamıyor - + WebUI Set location: moving "%1", from "%2" to "%3" Web Arayüzü yeri ayarlama: "%1" dosyası "%2" konumundan "%3" konumuna taşınıyor - + Incorrect torrent name Yanlış torrent adı - - + + Incorrect category name Yanlış kategori adı @@ -10798,257 +11425,215 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TrackerListModel - - + Working - Çalışıyor + Çalışıyor - + Disabled - Etkisizleştirildi + Etkisizleştirildi - + Disabled for this torrent - Bu torrent için etkisizleştirildi + Bu torrent için etkisizleştirildi - + This torrent is private - Bu torrent özeldir + Bu torrent özeldir - + N/A - Yok + Yok - + Updating... - Güncelleniyor... + Güncelleniyor... - + Not working - Çalışmıyor + Çalışmıyor - + Tracker error - + İzleyici hatası - + Unreachable - + Ulaşılamaz - + Not contacted yet - Daha bağlanmadı + Daha bağlanmadı - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Katman + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Geçersiz durum! + + + URL/Announce endpoint + URL/Duyuru uç noktası + Tier + Katman + + Protocol - + Protokol - + Status - Durum + Durum - + Peers - + Kişi - + Seeds - Gönderim + Gönderim - + Leeches - Çekme + Çekme - + Times Downloaded - İndirilme Sayısı + İndirilme Sayısı - + Message - İleti + İleti - Next announce - + Sonraki duyuru - Min announce - + En düşük duyuru - v%1 - + s%1 TrackerListWidget - Working - Çalışıyor - - - Disabled - Etkisizleştirildi - - - Disabled for this torrent - Bu torrent için etkisizleştirildi - - - + This torrent is private Bu torrent özeldir - Updating... - Güncelleniyor... - - - Not working - Çalışmıyor - - - Not contacted yet - Daha bağlanmadı - - - N/A - Yok - - - + Tracker editing İzleyici düzenleme - + Tracker URL: İzleyici URL'si: - - + + Tracker editing failed İzleyici düzenleme başarısız oldu - + The tracker URL entered is invalid. Girilen izleyici URL'si geçersiz. - + The tracker URL already exists. İzleyici URL'si zaten var. - + Edit tracker URL... İzleyici URL'sini düzenle... - + Remove tracker İzleyiciyi kaldır - + Copy tracker URL İzleyici URL'sini kopyala - + Force reannounce to selected trackers Seçilen izleyicilere yeniden duyurmayı zorla - + Force reannounce to all trackers Tüm izleyicilere yeniden duyurmayı zorla - Tier - Katman - - - URL - URL - - - Status - Durum - - - Seeds - Gönderim - - - Times Downloaded - İndirilme Sayısı - - - + Resize columns Sütunları yeniden boyutlandır - + Resize all non-hidden columns to the size of their contents Gizli olmayan tüm sütunları içeriklerinin boyutuna göre yeniden boyutlandır - Peers - Kişi - - - + Add trackers... İzleyicileri ekle... - Leeches - Çekme - - - Message - İleti - - - + Column visibility Sütun görünürlüğü @@ -11066,37 +11651,37 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Eklemek için izleyicilerin listesi (her satıra bir tane): - + µTorrent compatible list URL: µTorrent uyumlu liste URL'si: - + Download trackers list İzleyiciler listesini indir - + Add Ekle - + Trackers list URL error İzleyiciler listesi URL hatası - + The trackers list URL cannot be empty İzleyiciler listesi URL'si boş olamaz - + Download trackers list error İzleyiciler listesini indirme hatası - + Error occurred when downloading the trackers list. Reason: "%1" İzleyiciler listesi indirilirken hata meydana geldi. Sebep: "%1" @@ -11104,87 +11689,70 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TrackersFilterWidget - All (0) - this is for the tracker filter - Tümü (0) - - - Trackerless (0) - İzleyicisiz (0) - - - Error (0) - Hata (0) - - - Warning (0) - Uyarı (0) - - - Trackerless - İzleyicisiz - - - Error (%1) - Hata (%1) - - - + Warning (%1) Uyarı (%1) - + Trackerless (%1) İzleyicisiz (%1) - + Tracker error (%1) - + İzleyici hatası (%1) - + Other error (%1) - + Diğer hata (%1) - + Remove tracker - İzleyiciyi kaldır + İzleyiciyi kaldır + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Torrent'lere devam et + Torrent'lere devam et - Pause torrents - Torrent'leri duraklat + Torrent'leri duraklat - + Remove torrents Torrent'leri kaldır - + Removal confirmation - + Kaldırma onayı - + Are you sure you want to remove tracker "%1" from all torrents? - + "%1" izleyicisini tüm torrent'lerden kaldırmak istediğinize emin misiniz? - + Don't ask me again. - + Bana bir daha sorma. - + All (%1) this is for the tracker filter Tümü (%1) @@ -11193,7 +11761,7 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TransferController - + 'mode': invalid argument 'kip': geçersiz bağımsız değişken @@ -11232,7 +11800,7 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Stalled Torrent is waiting for download to begin - Durduruldu + Durdu @@ -11286,9 +11854,8 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Devam etme verisi denetleniyor - Paused - Duraklatıldı + Duraklatıldı @@ -11313,220 +11880,262 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Hata Oldu - + Name i.e: torrent name Ad - + Size i.e: torrent size Boyut - + Progress % Done İlerleme - Status Torrent status (e.g. downloading, seeding, paused) - Durum + Durum - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Durum + + + Seeds i.e. full sources (often untranslated) Gönderim - + Peers i.e. partial sources (often untranslated) Kişi - + Down Speed i.e: Download speed İnd. Hızı - + Up Speed i.e: Upload speed Gön. Hızı - + Ratio Share ratio Oran - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left TBS - + Category Kategori - + Tags Etiketler - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Eklenme - + Completed On Torrent was completed on 01/01/2010 08:00 Tamamlanma - + Tracker İzleyici - + Down Limit i.e: Download limit İnd. Sınırı - + Up Limit i.e: Upload limit Gön. Sınırı - + Downloaded Amount of data downloaded (e.g. in MB) İndirilen - + Uploaded Amount of data uploaded (e.g. in MB) Gönderilen - + Session Download Amount of data downloaded since program open (e.g. in MB) Oturumda İndirilen - + Session Upload Amount of data uploaded since program open (e.g. in MB) Oturumda Gönderilen - + Remaining Amount of data left to download (e.g. in MB) Kalan - + + Time Active + Time (duration) the torrent is active (not stopped) + Etkinlik Süresi + + + + Yes + Evet + + + + No + Hayır + + Time Active Time (duration) the torrent is active (not paused) - Etkinlik Süresi + Etkinlik Süresi - + Save Path Torrent save path Kaydetme Yolu - + Incomplete Save Path Torrent incomplete save path Tamamlanmamış Kaydetme Yolu - + Completed Amount of data completed (e.g. in MB) Tamamlanan - + Ratio Limit Upload share ratio limit Oran Sınırı - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Tam Halinin Görülmesi - + Last Activity Time passed since a chunk was downloaded/uploaded Son Etkinlik - + Total Size i.e. Size including unwanted data Toplam Boyut - + Availability The number of distributed copies of the torrent Kullanılabilirlik - + Info Hash v1 i.e: torrent info hash v1 Bilgi Adreslemesi v1 - + Info Hash v2 i.e: torrent info hash v2 Bilgi Adreslemesi v2 - + Reannounce In Indicates the time until next trackers reannounce + Yeniden Duyuru Süresi + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Yok - + %1 ago e.g.: 1h 20m ago %1 önce - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (gönderilme %2) @@ -11535,334 +12144,358 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. TransferListWidget - + Column visibility Sütun görünürlüğü - + Recheck confirmation Yeniden denetleme onayı - + Are you sure you want to recheck the selected torrent(s)? Seçilen torrent'(ler)i yeniden denetlemek istediğinize emin misiniz? - + Rename Yeniden adlandır - + New name: Yeni adı: - + Choose save path Kaydetme yolunu seçin - Confirm pause - Duraklatmayı onayla + Duraklatmayı onayla - Would you like to pause all torrents? - Tüm torrent'leri duraklatmak ister misiniz? + Tüm torrent'leri duraklatmak ister misiniz? - Confirm resume - Devam etmeyi onayla + Devam etmeyi onayla - Would you like to resume all torrents? - Tüm torrent'leri devam ettirmek ister misiniz? + Tüm torrent'leri devam ettirmek ister misiniz? - + Unable to preview Önizlenemiyor - + The selected torrent "%1" does not contain previewable files Seçilen torrent "%1" önizlenebilir dosyaları içermiyor - + Resize columns Sütunları yeniden boyutlandır - + Resize all non-hidden columns to the size of their contents Gizli olmayan tüm sütunları içeriklerinin boyutuna göre yeniden boyutlandır - + Enable automatic torrent management Otomatik torrent yönetimini etkinleştir - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Seçilen torrent(ler) için Otomatik Torrent Yönetimi'ni etkinleştirmek istediğinize emin misiniz? Yer değiştirebilirler. - Add Tags - Etiketleri Ekle + Etiketleri Ekle - + Choose folder to save exported .torrent files Dışa aktarılan .torrent dosyalarının kaydedileceği klasörü seçin - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" .torrent dosyası dışa aktarma başarısız oldu. Torrent: "%1". Kaydetme yolu: "%2". Sebep: "%3" - + A file with the same name already exists Aynı ada sahip bir dosya zaten var - + Export .torrent file error .torrent dosyası dışa aktarma hatası - + Remove All Tags Tüm Etiketleri Kaldır - + Remove all tags from selected torrents? Tüm etiketler seçilen torrent'lerden kaldırılsın mı? - + Comma-separated tags: Virgülle ayrılmış etiketler: - + Invalid tag Geçersiz etiket - + Tag name: '%1' is invalid Etiket adı: '%1' geçersiz - &Resume Resume/start the torrent - &Devam + &Devam - &Pause Pause the torrent - D&uraklat + D&uraklat - Force Resu&me Force Resume/start the torrent - Devam Etmeye &Zorla + Devam Etmeye &Zorla - + Pre&view file... Dosyayı ö&nizle... - + Torrent &options... Torrent s&eçenekleri... - + Open destination &folder Hedef &klasörü aç - + Move &up i.e. move up in the queue Y&ukarı taşı - + Move &down i.e. Move down in the queue Aşağı t&aşı - + Move to &top i.e. Move to top of the queue &En üste taşı - + Move to &bottom i.e. Move to bottom of the queue En a&lta taşı - + Set loc&ation... Yeri a&yarla... - + Force rec&heck Yeniden denetle&meye zorla - + Force r&eannounce Yeniden d&uyurmaya zorla - + &Magnet link Ma&gnet bağlantısı - + Torrent &ID T&orrent kimliği - + + &Comment + &Açıklama + + + &Name &Ad - + Info &hash v1 &Bilgi adreslemesi v1 - + Info h&ash v2 B&ilgi adreslemesi v2 - + Re&name... Yeniden a&dlandır... - + Edit trac&kers... İzle&yicileri düzenle... - + E&xport .torrent... Torrent'i iç&e aktar... - + Categor&y Kate&gori - + &New... New category... &Yeni... - + &Reset Reset category &Sıfırla - + Ta&gs &Etiketler - + &Add... Add / assign multiple tags... &Ekle... - + &Remove All Remove all tags Tü&münü Kaldır - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Kuyruk - + &Copy K&opyala - + Exported torrent is not necessarily the same as the imported Dışa aktarılan torrent, içe aktarılanla aynı olmak zorunda değildir - + Download in sequential order Sıralı düzende indir - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. .torrent dosyalarını dışa aktarırken hatalar meydana geldi. Ayrıntılar için çalıştırma günlüğünü gözden geçirin. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Kaldır - + Download first and last pieces first Önce ilk ve son parçaları indir - + Automatic Torrent Management Otomatik Torrent Yönetimi - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Otomatik kip, çeşitli torrent özelliklerine (örn. kaydetme yolu) ilişkilendirilmiş kategori tarafından karar verileceği anlamına gelir - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Torrent Duraklatıldı/Kuyruğa Alındı/Hata Oldu/Denetleniyor ise yeniden duyuru yapmaya zorlanamaz + Torrent Duraklatıldı/Kuyruğa Alındı/Hata Oldu/Denetleniyor ise yeniden duyuru yapmaya zorlanamaz - + Super seeding mode Süper gönderim kipi @@ -11907,28 +12540,28 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Simge Kimliği - + UI Theme Configuration. Arayüz Teması Yapılandırması. - + The UI Theme changes could not be fully applied. The details can be found in the Log. Arayüz Teması değişiklikleri tamamen uygulanamadı. Ayrıntılar Günlükte bulunabilir. - + Couldn't save UI Theme configuration. Reason: %1 Arayüz Teması yapılandırması kaydedilemedi. Sebep: %1 - - + + Couldn't remove icon file. File: %1. Simge dosyası silinemedi. Dosya: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Simge dosyası kopyalanamadı. Kaynak: %1. Hedef: %2. @@ -11936,7 +12569,12 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Şu dosyadan Arayüz temasını yükleme başarısız: "%1" @@ -11967,89 +12605,82 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Geçiş tercihleri başarısız oldu: Web Arayüzü https, dosya: "%1", hata: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Geçiş tercihleri başarısız oldu: Web Arayüzü https, verinin aktarıldığı dosya: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". Yapılandırma dosyasında geçersiz değer bulundu ve varsayılana geri döndürülüyor. Anahtar: "%1". Geçersiz değer: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python algılandı, çalıştırılabilir dosya adı: '%1', sürüm: %2 - - - Python not detected - Python algılanmadı - Found Python executable. Name: "%1". Version: "%2" - + Python çalıştırılabilir dosyası bulundu. Ad: "%1". Sürüm: "%2" Failed to find Python executable. Path: "%1". - + Python çalıştırılabilir dosyasını bulma başarısız. Yol: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + PATH ortam değişkeninde `python3` çalıştırılabilir dosyasını bulma başarısız. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + PATH ortam değişkeninde `python` çalıştırılabilir dosyasını bulma başarısız. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Windows Kayıt Defteri'nde `python` çalıştırılabilir dosyasını bulma başarısız. Failed to find Python executable - + Python çalıştırılabilir dosyasını bulma başarısız Utils::IO - + File open error. File: "%1". Error: "%2" Dosya açma hatası. Dosya: "%1". Hata: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Dosya boyutu sınırı aşıyor. Dosya: "%1". Dosya boyutu: %2. Boyut sınırı: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Dosya boyutu veri boyutu sınırını aşıyor. Dosya: "%1". Dosya boyutu: %2. Dizilim sınırı: %3 - + File read error. File: "%1". Error: "%2" Dosya okuma hatası. Dosya: "%1". Hata: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Okuma boyutu uyuşmazlığı. Dosya: "%1". Beklenen: %2. Asıl: %3 @@ -12113,72 +12744,72 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Kabul edilemez oturum tanımlama bilgisi adı belirtildi: '%1'. Varsayılan olan kullanılır. - + Unacceptable file type, only regular file is allowed. Kabul edilemez dosya türü, sadece normal dosyaya izin verilir. - + Symlinks inside alternative UI folder are forbidden. Alternatif Arayüz klasörü içinde simgesel bağlantılar yasaktır. - - Using built-in Web UI. + + Using built-in WebUI. Yerleşik Web Arayüzü kullanılıyor. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". Özel Web Arayüzü kullanılıyor. Konumu: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. Seçilen yerel dil (%1) için Web Arayüzü çevirisi başarılı olarak yüklendi. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). Seçilen yerel dil (%1) için Web Arayüzü çevirisi yüklenemedi. - + Missing ':' separator in WebUI custom HTTP header: "%1" Web Arayüzü özel HTTP üstbilgisinde eksik ':' ayırıcısı: "%1" - + Web server error. %1 Web sunucusu hatası. %1 - + Web server error. Unknown error. Web sunucusu hatası. Bilinmeyen hata. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Web Arayüzü: Başlangıç üstbilgisi ve Hedef başlangıcı uyuşmuyor! Kaynak IP: '%1'. Başlangıç üstbilgisi: '%2'. Hedef başlangıcı: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Web Arayüzü: Gönderen üstbilgisi ve Hedef başlangıcı uyuşmuyor! Kaynak IP: '%1'. Gönderen üstbilgisi: '%2'. Hedef başlangıcı: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Web Arayüzü: Geçersiz Anamakine üstbilgisi, bağlantı noktası uyuşmuyor. İstek kaynak IP: '%1'. Sunucu bağlantı noktası: '%2'. Alınan Anamakine üstbilgisi: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Web Arayüzü: Geçersiz Anamakine üstbilgisi. İstek kaynak IP: '%1'. Alınan Anamakine üstbilgisi: '%2' @@ -12186,143 +12817,136 @@ Lütfen farklı bir isim seçin ve tekrar deneyin. WebUI - - Web UI: HTTPS setup successful - Web Arayüzü: HTTPS kurulumu başarılı + + Credentials are not set + Kimlik bilgileri ayarlanmadı + + + + WebUI: HTTPS setup successful + Web Arayüzü: HTTPS ayarlaması başarılı - - Web UI: HTTPS setup failed, fallback to HTTP - Web Arayüzü: HTTPS kurulumu başarısız, HTTP'ye geri çekiliyor + + WebUI: HTTPS setup failed, fallback to HTTP + Web Arayüzü: HTTPS ayarlaması başarısız, HTTP'ye geri çekiliyor - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: Now listening on IP: %1, port: %2 Web Arayüzü: Şu an dinlenen IP: %1, bağlantı noktası: %2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + Unable to bind to IP: %1, port: %2. Reason: %3 Web Arayüzü: Bağlanamayan IP: %1, bağlantı noktası: %2. Sebep: %3 + + fs + + + Unknown error + Bilinmeyen hata + + misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1dk {1s?} + %1sn - + %1m e.g: 10 minutes - %1dk + %1dk - + %1h %2m e.g: 3 hours 5 minutes - %1sa %2dk + %1sa %2dk - + %1d %2h e.g: 2 days 10 hours - %1gn %2sa + %1gn %2sa - + %1y %2d e.g: 2 years 10 days - %1y %2gn + %1y %2gn - %1h %2m - e.g: 3hours 5minutes - %1sa %2dk - - - %1d %2h - e.g: 2days 10hours - %1gn %2sa - - - %1y %2d - e.g: 2years 10days - %1y %2gn - - - - + + Unknown Unknown (size) Bilinmiyor - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent bilgisayarı şimdi kapatacak çünkü tüm indirmeler tamamlandı. - + < 1m < 1 minute < 1dk - - %1m - e.g: 10minutes - %1dk - diff --git a/src/lang/qbittorrent_uk.ts b/src/lang/qbittorrent_uk.ts index 1c6322ab4cdd..e289d6e8fdbd 100644 --- a/src/lang/qbittorrent_uk.ts +++ b/src/lang/qbittorrent_uk.ts @@ -11,80 +11,80 @@ About - Про програму + Про - + Authors Автори - + Current maintainer Поточний супровідник - + Greece Греція - - + + Nationality: Національність: - - + + E-mail: E-mail: - - + + Name: Назва: - + Original author Оригінальний автор - + France Франція - + Special Thanks Особлива подяка - + Translators Перекладачі - + License Ліцензія - + Software Used Використовувані програми - + qBittorrent was built with the following libraries: qBittorrent було створено з такими бібліотеками: - + Copy to clipboard - + Копіювати в буфер обміну @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Авторські права %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + Авторські права %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ Зберегти у - + Never show again Більше ніколи не показувати - Torrent settings - Налаштування торрента + Налаштування торрента @@ -191,12 +190,12 @@ Запустити торрент - + Torrent information Інформація про торрент - + Skip hash check Пропустити перевірку хешу @@ -205,6 +204,11 @@ Use another path for incomplete torrent Використовувати інший шлях для неповних торрентів + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ Умови зупинки: - - + + None Немає - - + + Metadata received Отримано метадані - - + + Torrents that have metadata initially will be added as stopped. + Торренти, які мають метадані, будуть додані як зупинені. + + + + Files checked Файли перевірено - + Add to top of queue Додати в початок черги - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog При перевірці торрент-файл не буде видалено, незалежно від параметрів "Завантаження" у вікні "Налаштування" - + Content layout: Розміщення вмісту: - + Original Як задано - + Create subfolder Створити підтеку - + Don't create subfolder Не створювати підтеку - + Info hash v1: Інформаційний хеш, версія 1: - + Size: Розмір: - + Comment: Коментар: - + Date: Дата: @@ -324,245 +333,182 @@ Пам'ятати останній шлях збереження файлів - + Do not delete .torrent file Не видаляти файл .torrent - + Download in sequential order Завантажувати послідовно - + Download first and last pieces first Спочатку завантажувати першу і останню частину - + Info hash v2: Інформаційний хеш, версія 2: - + Select All Вибрати Все - + Select None Зняти Виділення - + Save as .torrent file... Зберегти як файл .torrent... - + I/O Error Помилка вводу/виводу - Invalid torrent - Хибний торрент - - - + Not Available This comment is unavailable Недоступно - + Not Available This date is unavailable Недоступно - + Not available Недоступно - Invalid magnet link - Хибне magnet-посилання - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Не вдалося завантажити торрент: %1 -Помилка: %2 - - - This magnet link was not recognized - Це magnet-посилання не було розпізнано - - - + Magnet link Magnet-посилання - + Retrieving metadata... Отримуються метадані... - - + + Choose save path Виберіть шлях збереження - Torrent is already present - Торрент вже існує - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Торрент '%1' вже є у списку завантажень. Трекери не об'єднано, бо цей торрент приватний. - - - Torrent is already queued for processing. - Торрент вже у черзі на оброблення. - - - + No stop condition is set. Умову зупинки не задано. - + Torrent will stop after metadata is received. Торрент зупиниться після отримання метаданих. - - Torrents that have metadata initially aren't affected. - Торренти, що від початку мають метадані, не зазнають впливу. - - - + Torrent will stop after files are initially checked. Торрент зупиниться після того, як файли пройдуть початкову перевірку. - + This will also download metadata if it wasn't there initially. Це також завантажить метадані, якщо їх не було спочатку. - - + + N/A - Magnet link is already queued for processing. - Magnet-посилання вже в черзі на оброблення. - - - + %1 (Free space on disk: %2) %1 (Вільно на диску: %2) - + Not available This size is unavailable. Недоступно - + Torrent file (*%1) Torrent-файл (*%1) - + Save as torrent file Зберегти як Torrent-файл - + Couldn't export torrent metadata file '%1'. Reason: %2. Не вдалося експортувати метадані торрент файла'%1'. Причина: %2. - + Cannot create v2 torrent until its data is fully downloaded. Неможливо створити торрент версії 2 поки його дані не будуть повністю завантажені. - Cannot download '%1': %2 - Не вдається завантажити '%1': %2 - - - + Filter files... Фільтр файлів… - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Торрент '%1' вже є у списку завантажень. Трекери не об'єднано, бо цей торрент приватний. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торрент '%1' вже є у списку завантажень. Трекери не об'єднано, бо цей торрент приватний. - - - + Parsing metadata... Розбираються метадані... - + Metadata retrieval complete Завершено отримання метаданих - - Failed to load from URL: %1. -Error: %2 - Не вдалося завантажити за адресою: %1 -Помилка: %2 - - - Download Error - Помилка завантаження - AddTorrentManager Downloading torrent... Source: "%1" - + Завантаження торрента... Джерело: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Не вдалося додати торрент. Джерело: "%1". Причина: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Виявлено спробу додати дублікат торрента. Джерело: %1. Існуючий торрент: %2. Результат: %3 - + Merging of trackers is disabled - + Об'єднання трекерів вимкнено - + Trackers cannot be merged because it is a private torrent - + Трекери не можна об’єднати, оскільки це приватний торрент - + Trackers are merged from new source - + Трекери об’єднані з нового джерела @@ -648,72 +594,77 @@ Error: %2 Пропустити перевірку хешу - - - Choose save path - Виберіть шлях збереження + + Torrent share limits + Обмеження роздачі торрента - - - - - - - Default - За замовчуванням + + + Choose save path + Виберіть шлях збереження + + + - Yes - Так + Default + За замовчуванням + Yes + Так + + + + + No Ні - + Manual Вручну - + Automatic Автоматично - + Original Оригінал - + Create subfolder Створити підтеку - + Don't create subfolder Не створювати підтеку - + None Жодного - + Metadata received Метадані отримано - + Files checked Файли перевірені @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB МіБ - + Recheck torrents on completion Перепровіряти торренти після завантаження - - + + ms milliseconds мс - + Setting Параметр - + Value Value set for this setting Значення - + (disabled) (вимкнено) - + (auto) (автоматично) - + + min minutes хв - + All addresses Всі адреси - + qBittorrent Section Розділ про qBittorrent - - + + Open documentation Відкрити документацію - + All IPv4 addresses Всі адреси IPv4 - + All IPv6 addresses Всі адреси IPv6 - + libtorrent Section Розділ про libtorrent - + Fastresume files Швидке відновлення файлів - + SQLite database (experimental) База даних SQLite (у розробці) - + Resume data storage type (requires restart) Відновити тип зберігання даних (потрібно перезавантажити програму) - + Normal Звичайний - + Below normal Нижче звичайного - + Medium Середній - + Low Низький - + Very low Дуже низький - - Process memory priority (Windows >= 8 only) - Пріоритет пам'яті процесу (тільки для Windows >= 8) - - - + Physical memory (RAM) usage limit Фізичне обмеження пам'яті (ОЗП) - + Asynchronous I/O threads Потоки асинхронного вводу/виводу - + Hashing threads Потоки хешування - + File pool size Розміру пулу файлів: - + Outstanding memory when checking torrents Накладна пам'ять при перевірці торрентів - + Disk cache Дисковий кеш - - - - + + + + s seconds с - + Disk cache expiry interval Термін дійсності дискового кешу - + Disk queue size Розмір черги диска - - + + Enable OS cache Увімкнути кеш ОС - + Coalesce reads & writes Об'єднувати операції читання і запису - + Use piece extent affinity Використовувати групування споріднених частин - + Send upload piece suggestions Надсилати підказки частин відвантаження - - - - + + + + + 0 (disabled) 0 (вимкнено) - + Save resume data interval [0: disabled] How often the fastresume file is saved. Зберегти інтервал відновлення даних [0: вимкнено] - + Outgoing ports (Min) [0: disabled] Вихідні порти (мінімум) [0 — вимк.] - + Outgoing ports (Max) [0: disabled] Вихідні порти (максимум) [0 — вимк.] - + 0 (permanent lease) 0 (постійна оренда) - + UPnP lease duration [0: permanent lease] Тривалість оренди UPnP [0: постійна оренда] - + Stop tracker timeout [0: disabled] Час очікування зупинки трекера [0: вимкнено] - + Notification timeout [0: infinite, -1: system default] Час очікування сповіщень [0: нескінченний, -1: системне замовчування] - + Maximum outstanding requests to a single peer Максимальна кількість невиконаних запитів до одного піра - - - - - + + + + + KiB КіБ - + (infinite) (нескінченний) - + (system default) (система за умовчанням) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Ця опція менш ефективна на Linux - + + Process memory priority + Пріоритет пам'яті процесу + + + Bdecode depth limit Ліміт глибини Bdecode - + Bdecode token limit Ліміт токенів Bdecode - + Default Типово - + Memory mapped files Файли, які відображаються у пам'ять - + POSIX-compliant Сумісний з POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Тип введення-виводу диска (потребує перезапуску) - - + + Disable OS cache Вимкнути кеш ОС - + Disk IO read mode Режим читання дискового Вводу-Виводу - + Write-through Наскрізний запис - + Disk IO write mode Режим запису дискового Вводу-Виводу - + Send buffer watermark Рівень буферу відправлення - + Send buffer low watermark Мінімальний рівень буфера відправлення - + Send buffer watermark factor Множник рівня буфера відправлення - + Outgoing connections per second Вихідні з'єднання за секунду - - + + 0 (system default) 0 (за умовчанням) - + Socket send buffer size [0: system default] Розмір буфера надсилання сокета [0: системне замовчування] - + Socket receive buffer size [0: system default] Розмір буфера отримання сокета [0: системне замовчування] - + Socket backlog size Розмір черги сокета: - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit Обмеження на розмір файлу .torrent - + Type of service (ToS) for connections to peers Тип обслуговування (ToS) при приєднанні до пірів - + Prefer TCP Надавати перевагу TCP - + Peer proportional (throttles TCP) Пропорціонально пірам (регулювання TCP) - + Support internationalized domain name (IDN) Підтримка інтернаціоналізації доменних імен (IDN) - + Allow multiple connections from the same IP address Дозволити більше одного з'єднання з тієї ж IP-адреси - + Validate HTTPS tracker certificates Перевірити HTTPS-сертифікати трекера - + Server-side request forgery (SSRF) mitigation Запобігання серверної підробки запиту (SSRF) - + Disallow connection to peers on privileged ports Заборонити підключення до пірів на привілейованих портах - + + It appends the text to the window title to help distinguish qBittorent instances + Він додає текст до заголовка вікна, щоб допомогти розрізнити екземпляри qBittorent + + + + Customize application instance name + Налаштування імені екземпляра програми + + + It controls the internal state update interval which in turn will affect UI updates Він контролює внутрішній інтервал оновлення стану, який, у свою чергу, впливатиме на оновлення інтерфейсу користувача - + Refresh interval Інтервал оновлення - + Resolve peer host names Дізнаватись адресу пірів - + IP address reported to trackers (requires restart) IP-адреса, повідомлена трекерам (потребує перезавантаження програми) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Переанонсувати на всі трекери при зміні IP або порту - + Enable icons in menus Увімкнути значки в меню - + Enable port forwarding for embedded tracker Увімкнути переадресацію портів для вбудованого трекера - - (Auto detect if empty) + + Enable quarantine for downloaded files + Увімкнути карантин для завантажених файлів + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Увімкнути Mark-of-the-Web (MOTW) для завантажених файлів + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Автоматичне визначення, якщо порожній) + + + Python executable path (may require restart) + Шлях до виконуваного файлу Python (може знадобитися перезапуск) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + сек + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Підтвердити видалення трекера з усіх торрентів + + + Peer turnover disconnect percentage Відсоток відключення плинності пірів - + Peer turnover threshold percentage Відсоток межі плинності пірів - + Peer turnover disconnect interval Інтервал відключення плинності пірів - + Resets to default if empty - + Скидає значення за умовчанням, якщо пусте - + DHT bootstrap nodes - + Вузли початкового завантаження DHT - + I2P inbound quantity Число вхідного I2P - + I2P outbound quantity Число вихідного I2P - + I2P inbound length Довжина вхідного I2P - + I2P outbound length Довжина вихідного I2P - + Display notifications Показувати сповіщення - + Display notifications for added torrents Показувати сповіщення для доданих торрентів - + Download tracker's favicon Завантажувати піктограми для трекерів - + Save path history length Довжина історії шляхів збереження - + Enable speed graphs Увімкнути графік швидкості - + Fixed slots Фіксовані слоти - + Upload rate based Стандартна швидкість відвантаження - + Upload slots behavior Поведінка слотів відвантаження - + Round-robin По колу - + Fastest upload Найшвидше відвантаження - + Anti-leech Анти-ліч - + Upload choking algorithm Алгоритм приглушення відвантаження - + Confirm torrent recheck Підтверджувати повторну перевірку торрентів - + Confirm removal of all tags Підтверджувати видалення усіх міток - + Always announce to all trackers in a tier Завжди анонсувати на всі трекери в групі - + Always announce to all tiers Завжди анонсувати на всі групи трекерів - + Any interface i.e. Any network interface Будь-який інтерфейс - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm Алгоритм мішаного режиму %1-TCP - + Resolve peer countries Дізнаватись країну пірів - + Network interface Мережевий інтерфейс - + Optional IP address to bind to Обрана IP-адреса для прив'язки - + Max concurrent HTTP announces Максимум одночасних анонсів HTTP - + Enable embedded tracker Увімкнути вбудований трекер - + Embedded tracker port Порт вбудованого трекера - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 запущено + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 Запуск в згорнутому режимі. Автоматично виявлено теку профілю в: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Виявлено надлишковий прапор командного рядка "%1". Портативний режим має на увазі відносне швидке відновлення. - + Using config directory: %1 Використовується каталог налаштувань: %1 - + Torrent name: %1 Назва торрента: %1 - + Torrent size: %1 Розмір торрента: %1 - + Save path: %1 Шлях збереження: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Торрент завантажено за %1. - + + Thank you for using qBittorrent. Дякуємо за використання qBittorrent. - + Torrent: %1, sending mail notification Торрент: %1, надсилання сповіщення на пошту - + Add torrent failed - + Не вдалося додати торрент - + Couldn't add torrent '%1', reason: %2. - + Не вдалося додати торрент "%1", причина: %2. + + + + The WebUI administrator username is: %1 + Адміністратор WebUI: %1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Пароль адміністратора WebUI не встановлено. Для цього сеансу встановлено тимчасовий пароль: %1 + + + + You should set your own password in program preferences. + Слід встановити власний пароль у налаштуваннях програми. + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI вимкнено! Щоб увімкнути WebUI, відредагуйте конфігураційний файл вручну. - + Running external program. Torrent: "%1". Command: `%2` Запуск зовнішньої програми. Торрент: "%1". Команда: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Не вдалося запустити зовнішню програму. Торрент: "%1". Команда: `%2` - + Torrent "%1" has finished downloading Торрент "%1" завершив завантаження - + WebUI will be started shortly after internal preparations. Please wait... Веб-інтерфейс буде запущено незабаром після внутрішньої підготовки. Будь ласка, зачекайте... - - + + Loading torrents... Завантаження торрентів... - + E&xit &Вийти - + I/O Error i.e: Input/Output Error Помилка Вводу/Виводу - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 Причина: %2 - Error - Помилка - - - Failed to add torrent: %1 - Не вдалося додати торрент: %1 - - - + Torrent added Торрент додано - + '%1' was added. e.g: xxx.avi was added. "%1" було додано. - + Download completed Завантаження завершено - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - «%1» завершив завантаження. - - - URL download error - Помилка завантаження URL-адреси + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 запущено. Ідентифікатор процесу: %2 - Couldn't download file at URL '%1', reason: %2. - Не вдалося завантажити файл за URL-адресою "%1", причина: %2. + + This is a test email. + - Torrent file association - Асоціація торрент-файлів + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent не є типовою програмою для відкриття торрент-файлів або магнітних посилань. -Ви хочете зробити qBittorrent типовою програмою для них? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + «%1» завершив завантаження. - + Information Інформація - + To fix the error, you may need to edit the config file manually. - + Щоб виправити помилку, вам може знадобитися відредагувати файл конфігурації вручну. - + To control qBittorrent, access the WebUI at: %1 Щоб керувати qBittorrent, перейдіть до веб-інтерфейсу за адресою: %1 - - The Web UI administrator username is: %1 - Ім'я користувача адміністратора веб-інтерфейсу: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Пароль адміністратора веб-інтерфейсу не був змінений зі стандартного: %1 - - - - This is a security risk, please change your password in program preferences. - Це небезпечно, будь ласка, змініть свій пароль в налаштуваннях програми. - - - Application failed to start. - Не вдалося запустити програму. - - - + Exit Вихід - + Recursive download confirmation - Підтвердження рекурсивного завантаження + Підтвердження рекурсивного завантаження - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торрентний файл «%1» містить файли .torrent, продовжити їх завантаження? + Торрентний файл «%1» містить файли .torrent, продовжити їх завантаження? - + Never - Ніколи + Ніколи - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Рекурсивне завантаження файлу .torrent у торренті. Вихідний торрент: "%1". Файл: "%2" + Рекурсивне завантаження файлу .torrent у торренті. Вихідний торрент: "%1". Файл: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Не вдалося встановити обмеження використання фізичної пам'яті (ОЗП). Код помилки: %1. Текст помилки: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Не вдалося встановити жорсткий ліміт використання фізичної пам'яті (RAM). Запитаний розмір: %1. Жорсткий ліміт системи: %2. Код помилки: %3. Повідомлення про помилку: "%4" - + qBittorrent termination initiated Розпочато припинення роботи qBittorrent - + qBittorrent is shutting down... qBittorrent вимикається... - + Saving torrent progress... Зберігається прогрес торрента... - + qBittorrent is now ready to exit Тепер qBittorrent готовий до виходу @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. Не вдалося створити каталог '%1'. @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Не вдалося увійти у WebAPI. Причина: IP заблокована, IP: %1, користувач: %2 - + Your IP address has been banned after too many failed authentication attempts. Ваша IP-адреса заблокована після надто численних невдалих спроб автентифікації. - + WebAPI login success. IP: %1 Успішний вхід у WebAPI. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Невдача логіну WebAPI. Причина: неправильні дані для входу, кількість спроб: %1, IP: %2, користувач: %3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? Пріоритет: - + Must Not Contain: Не може містити: - + Episode Filter: Фільтр серій: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Експорт... - + Matches articles based on episode filter. Знаходить статті на основі фільтра серій. - + Example: Приклад: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match знайде 2, 5, 8-15, 30 і подальші серії першого сезону - + Episode filter rules: Правила фільтра серій: - + Season number is a mandatory non-zero value Номер сезону — обов'язкове ненульове значення - + Filter must end with semicolon Фільтр повинен закінчуватись крапкою з комою - + Three range types for episodes are supported: Підтримуються три типи діапазонів для серій: - + Single number: <b>1x25;</b> matches episode 25 of season one Одне число: <b>1x25;</b> відповідає 25ій серії першого сезону - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Звичайний діапазон: <b>1x25-40;</b> відповідає серіям 25-40 першого сезону - + Episode number is a mandatory positive value Номер серії — обов'язкове додатне значення - + Rules Правила - + Rules (legacy) Правила (застарілі) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Нескінченний діапазон: <b>1x25-;</b> відповідає всім серіям, починаючи з 25-ї, першого сезону, і всім серіям наступних сезонів - + Last Match: %1 days ago Останній збіг: %1 днів тому - + Last Match: Unknown Останній збіг: невідомо - + New rule name Назва нового правила - + Please type the name of the new download rule. Будь ласка, введіть назву нового правила завантаження. - - + + Rule name conflict Конфлікт назв правил - - + + A rule with this name already exists, please choose another name. Правило з цією назвою вже існує, будь ласка, оберіть іншу назву. - + Are you sure you want to remove the download rule named '%1'? Ви впевнені, що хочете видалити правило завантаження під назвою '%1'? - + Are you sure you want to remove the selected download rules? Ви дійсно хочете видалити вибрані правила завантаження? - + Rule deletion confirmation Підтвердження видалення правила - + Invalid action Хибна дія - + The list is empty, there is nothing to export. Список порожній, нічого експортувати - + Export RSS rules Експортувати правила RSS - + I/O Error Помилка вводу/виводу - + Failed to create the destination file. Reason: %1 Не вдалося створити файл призначення. Причина: %1 - + Import RSS rules Імпортувати правила RSS - + Failed to import the selected rules file. Reason: %1 Не вдалося імпортувати вибраний файл правил. Причина: %1 - + Add new rule... Додати нове правило... - + Delete rule Видалити правило - + Rename rule... Перейменувати правило... - + Delete selected rules Видалити позначені правила - + Clear downloaded episodes... Очистити завантажені серії... - + Rule renaming Перейменування правила - + Please type the new rule name Будь ласка, введіть нову назву правила - + Clear downloaded episodes Очистити завантажені серії - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Чи ви певні що хочете очистити список завантажених серій для вибраного правила? - + Regex mode: use Perl-compatible regular expressions Regex режим: використовуйте Perl-сумісні регулярні вирази - - + + Position %1: %2 Позиція %1: %2 - + Wildcard mode: you can use Режим шаблонів: можна використовувати - - + + Import error Помилка імпорту - + Failed to read the file. %1 Не вдалося прочитати файл. %1 - + ? to match any single character ? для позначення будь-якого одного символа - + * to match zero or more of any characters * для позначення 0 або більше будь-яких символів - + Whitespaces count as AND operators (all words, any order) Пробіли вважаються операторами "і" (всі слова, у будь-якому порядку) - + | is used as OR operator | використовується як оператор "або" - + If word order is important use * instead of whitespace. Якщо порядок слів важливий, то використовуйте * замість пробілів. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Вираз з порожнім пунктом %1 (наприклад: %2) - + will match all articles. відповідатиме всім статтям. - + will exclude all articles. виключить всі статті. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Не вдається створити папку відновлення торрента: "%1» - + Cannot parse resume data: invalid format Неможливо проаналізувати відновлені дані: недійсний формат - - + + Cannot parse torrent info: %1 Неможливо проаналізувати інформацію про торрент: %1 - + Cannot parse torrent info: invalid format Неможливо проаналізувати інформацію про торрент: недійсний формат - + + Mismatching info-hash detected in resume data + Виявлено невідповідність інфо-хешу в даних відновлення + + + Couldn't save torrent metadata to '%1'. Error: %2. Не вдалося зберегти метадані торрента в "%1". Помилка: %2. - + Couldn't save torrent resume data to '%1'. Error: %2. Не вдалося зберегти дані відновлення торрента в "%1". Помилка: %2. - + Couldn't load torrents queue: %1 Не вдалося завантажити чергу торрентів: %1 - + Cannot parse resume data: %1 Неможливо проаналізувати відновлені дані: %1 - + Resume data is invalid: neither metadata nor info-hash was found Відновлення даних неможливе: не знайдено ані метаданих, ані інфо-хеш - + Couldn't save data to '%1'. Error: %2 Не вдалося зберегти дані в '%1'. Помилка: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Не знайдено. - + Couldn't load resume data of torrent '%1'. Error: %2 Не вдалося завантажити дані відновлення торрента '%1'.. Помилка: %2 - - + + Database is corrupted. База даних пошкоджена. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Не вдалося ввімкнути режим журналювання Write-Ahead Logging (WAL). Помилка: %1. - + Couldn't obtain query result. Не вдалося отримати результат запиту. - + WAL mode is probably unsupported due to filesystem limitations. Можливо, режим WAL не підтримується через обмеження файлової системи. - + Couldn't begin transaction. Error: %1 Не вдалося почати трансакцію. Помилка: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Не вдалося зберегти метадані торрента. Помилка: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Не вдалося зберегти дані відновлення торрента '%1'. Помилка: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Не вдалося видалити дані відновлення торрента '%1'. Помилка: %2 - + Couldn't store torrents queue positions. Error: %1 Не вдалося зберегти черговість торрентів. Помилка: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Підтримка розподіленої хеш-таблиці (DHT): %1 - - - - - - - - - + + + + + + + + + ON УВІМКНЕНО - - - - - - - - - + + + + + + + + + OFF ВИМКНЕНО - - + + Local Peer Discovery support: %1 Підтримка локального виявлення пірів: %1 - + Restart is required to toggle Peer Exchange (PeX) support Щоб увімкнути підтримку обміну пірами (PeX), потрібен перезапуск - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Не вдалося відновити торрент. Торрент: "%1". Причина: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Не вдалося відновити торрент: виявлено невідповідний ідентифікатор торрента. Торрент: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Виявлено неузгоджені дані: категорія відсутня у файлі конфігурації. Категорію буде відновлено, але її налаштування буде скинуто до стандартних. Торрент: "%1". Категорія: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Виявлено суперечливі дані: недійсна категорія. Торрент: "%1". Категорія: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Виявлено невідповідність між шляхами збереження відновленої категорії та поточним шляхом збереження торрента. Торрент тепер переведено в ручний режим. Торрент: "%1". Категорія: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Виявлено суперечливі дані: тег відсутній у файлі конфігурації. Тег буде відновлено. Торрент: "%1". Тег: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Виявлено суперечливі дані: недійсний тег. Торрент: "%1". Тег: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Виявлено подію пробудження системи. Повторний анонс всіх трекерів... - + Peer ID: "%1" ID піра: "%1" - + HTTP User-Agent: "%1" Агент користувача HTTP: "%1" - + Peer Exchange (PeX) support: %1 Підтримка Peer Exchange (PeX): %1 - - + + Anonymous mode: %1 Анонімний режим: %1 - - + + Encryption support: %1 Підтримка шифрування: %1 - - + + FORCED ПРИМУШЕНИЙ - + Could not find GUID of network interface. Interface: "%1" Не вдалося знайти GUID мережевого інтерфейсу. Інтерфейс: "%1" - + Trying to listen on the following list of IP addresses: "%1" Пробую слухати на наступних IP адресах: "%1" - + Torrent reached the share ratio limit. Торрент досяг ліміту співвідношення часток. - - - + Torrent: "%1". Торрент: "%1". - - - Removed torrent. - Видалений торрент. + Видалений торрент. - - - Removed torrent and deleted its content. - Видалив торрент і видалив його вміст. + Видалив торрент і видалив його вміст. - - - Torrent paused. - Торрент призупинено. + Торрент призупинено. - - - + Super seeding enabled. Суперсид увімкнено - + Torrent reached the seeding time limit. Торрент досяг ліміту часу заповнення. - + Torrent reached the inactive seeding time limit. Торрент досяг обмеження часу бездіяльності роздачі. - + Failed to load torrent. Reason: "%1" Не вдалося завантажити торрент. Причина: "%1" - + I2P error. Message: "%1". + Помилка I2P. Повідомлення: "%1". + + + + UPnP/NAT-PMP support: ON + Підтримка UPnP/NAT-PMP: УВІМК + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Завантаження торрента, зачекайте... Джерело: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Не вдалося завантажити торрент. Джерело: "%1". Причина: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Виявлено спробу додати дублікат торрента. Об'єднання трекерів вимкнено. Торрент: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Виявлено спробу додати дублікат торрента. Трекери не можуть бути об'єднані, оскільки це приватний торрент. Торрент: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Виявлено спробу додати дублікат торрента. Трекери об'єднано з нового джерела. Торрент: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Підтримка UPnP/NAT-PMP: УВІМК + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Підтримка UPnP/NAT-PMP: ВИМК + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Не вдалося експортувати торрент. Торрент: "%1". Призначення: "%2". Причина: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Перервано збереження відновлених даних. Кількість непотрібних торрентів: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Об'єднання трекерів вимкнено + + + + Trackers cannot be merged because it is a private torrent + Трекери не можна об’єднати, оскільки це приватний торрент - System network status changed to %1 - e.g: System network status changed to ONLINE - Статус мережі системи змінено на %1 + + Trackers are merged from new source + Трекери об’єднані з нового джерела - ONLINE - ОНЛАЙН + + UPnP/NAT-PMP support: OFF + Підтримка UPnP/NAT-PMP: ВИМК - OFFLINE - ОФФЛАЙН + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Не вдалося експортувати торрент. Торрент: "%1". Призначення: "%2". Причина: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Мережеву конфігурацію %1 змінено, оновлення прив’язки сесії + + Aborted saving resume data. Number of outstanding torrents: %1 + Перервано збереження відновлених даних. Кількість непотрібних торрентів: %1 - + The configured network address is invalid. Address: "%1" Налаштована мережева адреса недійсна. Адреса: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Не вдалося знайти налаштовану мережеву адресу для прослуховування. Адреса: "%1" - + The configured network interface is invalid. Interface: "%1" Налаштований мережевий інтерфейс недійсний. Інтерфейс: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Відхилено недійсну IP-адресу під час застосування списку заборонених IP-адрес. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Додав трекер в торрент. Торрент: "%1". Трекер: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Видалений трекер з торрента. Торрент: "%1". Трекер: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Додано початкову URL-адресу до торрента. Торрент: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Вилучено початкову URL-адресу з торрента. Торрент: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Торрент призупинено. Торрент: "%1" + Торрент призупинено. Торрент: "%1" - + Torrent resumed. Torrent: "%1" Торрент відновлено. Торрент: "%1" - + Torrent download finished. Torrent: "%1" Завантаження торрента завершено. Торрент: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Переміщення торрента скасовано. Торрент: "%1". Джерело: "%2". Пункт призначення: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Не вдалося поставити торрент у чергу. Торрент: "%1". Джерело: "%2". Призначення: "%3". Причина: торрент зараз рухається до місця призначення - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Не вдалося поставити торрент у чергу. Торрент: "%1". Джерело: "%2" Місце призначення: "%3". Причина: обидва шляхи вказують на одне місце - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Переміщення торрента в черзі. Торрент: "%1". Джерело: "%2". Пункт призначення: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Почати переміщення торрента. Торрент: "%1". Пункт призначення: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Не вдалося зберегти конфігурацію категорій. Файл: "%1". Помилка: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Не вдалося проаналізувати конфігурацію категорій. Файл: "%1". Помилка: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Рекурсивне завантаження файлу .torrent у торренті. Вихідний торрент: "%1". Файл: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Не вдалося завантажити файл .torrent у торрент. Вихідний торрент: "%1". Файл: "%2". Помилка: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Файл IP-фільтра успішно проаналізовано. Кількість застосованих правил: %1 - + Failed to parse the IP filter file Не вдалося проаналізувати файл IP-фільтра - + Restored torrent. Torrent: "%1" Відновлений торрент. Торрент: "%1" - + Added new torrent. Torrent: "%1" Додано новий торрент. Торрент: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Помилка торрента. Торрент: "%1". Помилка: "%2" - - Removed torrent. Torrent: "%1" - Видалений торрент. Торрент: "%1" + Видалений торрент. Торрент: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Видалив торрент і видалив його вміст. Торрент: "%1" + Видалив торрент і видалив його вміст. Торрент: "%1" + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + У торенті відсутні параметри SSL. Торрент: "%1". Повідомлення: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Сповіщення про помилку файлу. Торрент: "%1". Файл: "%2". Причина: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Помилка зіставлення портів UPnP/NAT-PMP. Повідомлення: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Зіставлення порту UPnP/NAT-PMP виконано успішно. Повідомлення: "%1" - + IP filter this peer was blocked. Reason: IP filter. IP фільтр - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). відфільтрований порт (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). привілейований порт (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Під час сеансу BitTorrent сталася серйозна помилка. Причина: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Помилка проксі SOCKS5. Адреса: %1. Повідомлення: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 обмеження змішаного режиму - + Failed to load Categories. %1 Не вдалося завантажити категорії. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Не вдалося завантажити конфігурацію категорій. Файл: "%1". Помилка: "Неправильний формат даних" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Видалено торрент, але не вдалося видалити його вміст і/або частину файлу. Торент: "%1". Помилка: "%2" + Видалено торрент, але не вдалося видалити його вміст і/або частину файлу. Торент: "%1". Помилка: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 вимкнено - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 вимкнено - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Помилка DNS-пошуку початкового URL-адреси. Торрент: "%1". URL: "%2". Помилка: "%3" + Помилка DNS-пошуку початкового URL-адреси. Торрент: "%1". URL: "%2". Помилка: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Отримано повідомлення про помилку від початкового URL-адреси. Торрент: "%1". URL: "%2". Повідомлення: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Успішне прослуховування IP. IP: "%1". Порт: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Не вдалося прослухати IP. IP: "%1". Порт: "%2/%3". Причина: "%4" - + Detected external IP. IP: "%1" Виявлено зовнішній IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Помилка: внутрішня черга сповіщень заповнена, сповіщення видаляються, ви можете спостерігати зниження продуктивності. Тип видаленого сповіщення: "%1". Повідомлення: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Торрент успішно перенесено. Торрент: "%1". Пункт призначення: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Не вдалося перемістити торрент. Торрент: "%1". Джерело: "%2". Призначення: "%3". Причина: "%4" - BitTorrent::TorrentCreator - - - Operation aborted - Операцію перервано - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - Не вдалось створити новий торрент файл. Підстава: %1. + + Failed to start seeding. + Не вдалося розпочати роздачу. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Операцію перервано + Операцію перервано + + Create new torrent file failed. Reason: %1. - Не вдалось створити новий торрент файл. Підстава: %1. + Не вдалось створити новий торрент файл. Підстава: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 Не вдалося додати піра "%1" до торрента "%2". Причина: %3 - + Peer "%1" is added to torrent "%2" Піра "%1" додано до торрента "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Виявлено несподівані дані. Торрент: %1. Дані: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Не вдалося записати у файл. Причина: "%1". Торрент зараз у режимі "тільки завантаження". - + Download first and last piece first: %1, torrent: '%2' Завантажувати з першої та останньої частини: %1, торрент: '%2' - + On Увімк. - + Off Вимк. - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Не вдалося перезавантажити торрент. Торрент: %1. Причина: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Не вдалося створити , відновити дані. Торрент: "%1". Причина: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Не вдалося відновити торрент. Файли були мабуть переміщенні, або сховище недоступне. Торрент: "%1". Причина: "%2" - + Missing metadata Відсутні метадані - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Перейменування файлу не вдалося. Торрент: "%1", файл: "%2", причина: "%3" - + Performance alert: %1. More info: %2 Попередження продуктивності: %1. Більше інформації: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Параметр '%1' повинен відповідати синтаксису '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Параметр '%1' повинен відповідати синтаксису '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Очікувалося ціле число у змінній середовища '%1', але отримано '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Параметр '%1' повинен відповідати синтаксису '%1=%2' + Параметр '%1' повинен відповідати синтаксису '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Очікувалося %1 у змінній середовища '%2', але отримано '%3' - - + + %1 must specify a valid port (1 to 65535). %1 має вказувати коректний порт (від 1 до 65535). - + Usage: Використання: - + [options] [(<filename> | <url>)...] [параметри] [(<filename> | <url>)...] - + Options: Параметри: - + Display program version and exit Показати версію програми та вийти - + Display this help message and exit Показати цю довідку та вийти - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Параметр '%1' повинен відповідати синтаксису '%1=%2' + + + + Confirm the legal notice + Підтвердьте офіційне повідомлення + + + + port порт - - Change the Web UI port - Змінити порт Веб-інтерфейсу + + Change the WebUI port + Зміна порту WebUI - + Change the torrenting port Змініть торрент-порт - + Disable splash screen Вимкнути початкову заставку - + Run in daemon-mode (background) Виконувати у фоновому режимі (daemon) - + dir Use appropriate short form or abbreviation of "directory" тека - + Store configuration files in <dir> Зберігати файли конфігурації в <dir> - - + + name назва - + Store configuration files in directories qBittorrent_<name> Зберігати файли налаштувань у каталогах qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Змінити файли швидкого відновлення libtorrent та створити шляхи файлів відносно каталогу профілю - + files or URLs файли або посилання - + Download the torrents passed by the user Завантажити торренти, вказані користувачем - + Options when adding new torrents: Опції для додавання нових торрентів: - + path шлях - + Torrent save path Шлях збереження торрента - + + Add torrents as running or stopped + + + Add torrents as started or paused - Додавати торренти як запущені чи призупинені + Додавати торренти як запущені чи призупинені - + Skip hash check Пропустити перевірку хешу - + Assign torrents to category. If the category doesn't exist, it will be created. Призначити торренти до категорії. Якщо категорія не існує, вона буде створена. - + Download files in sequential order Завантажувати файли по порядку - + Download first and last pieces first Спочатку завантажувати першу і останню частину - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Укажіть, чи відкриватиметься діалогове вікно «Додати новий торрент» під час додавання торрента. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Значення параметрів можуть передаватися через змінні середовища. Для опції з назвою 'parameter-name' змінна середовища — 'QBT_PARAMETER_NAME' (в верхньому регістрі, '-' замінюється на '_'). Щоб передати значення прапорця, встановіть для змінної значення '1' або 'TRUE'. Наприклад, щоб відключити заставку: - + Command line parameters take precedence over environment variables Параметри командного рядка мають пріоритет над змінними середовища - + Help Допомога @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Категорії - + All Всі - + Uncategorized Без категорії @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Відновити торренти + Start torrents + + Stop torrents + + + + Resume torrents + Відновити торренти + + Pause torrents - Призупинити торренти + Призупинити торренти @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Редагувати... - + Reset Забрати + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 Не вдалося завантажити власну таблицю стилів теми. %1 - + Failed to load custom theme colors. %1 Не вдалося завантажити власні кольори теми. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 Не вдалося завантажити кольори теми за замовчуванням. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Також остаточно видалити файли + Також остаточно видалити файли - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Ви впевнені, що бажаєте видалити «%1» зі списку передачі? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Ви впевнені, що хочете видалити ці %1 торренти зі списку передачі? - + Remove Вилучити @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Завантажити з адрес - + Add torrent links Додати посилання на торрент - + One link per line (HTTP links, Magnet links and info-hashes are supported) Одне посилання на рядок (підтримуються HTTP- і magnet-посилання та інформаційні хеші) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Завантажити - + No URL entered Не введено адресу - + Please type at least one URL. Будь ласка, введіть хоча б одну адресу. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Помилка розбору: Файл фільтра не є коректним файлом PeerGuardian P2B. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Завантаження торрента... Джерело: "%1" - Trackers cannot be merged because it is a private torrent - + Трекери не можна об’єднати, оскільки це приватний торрент - + Torrent is already present - Торрент вже існує + Торрент вже існує + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Торрент '%1' вже є у списку завантажень. Трекери не об'єднано, бо цей торрент приватний. + Торрент '%1' вже є у списку завантажень. Трекери не об'єднано, бо цей торрент приватний. GeoIPDatabase - - + + Unsupported database file size. Непідтримуваний розмір файла бази даних. - + Metadata error: '%1' entry not found. Помилка метаданих: запис '%1' не знайдено. - + Metadata error: '%1' entry has invalid type. Помилка метаданих: запис '%1' має некоректний тип. - + Unsupported database version: %1.%2 Непідтримувана версія бази даних: %1.%2 - + Unsupported IP version: %1 Непідтримувана версія IP: %1 - + Unsupported record size: %1 Непідтримуваний розмір запису: %1 - + Database corrupted: no data section found. Пошкоджена база даних: не знайдено розділ даних. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Розмір HTTP-запиту перевищує обмеження, закриття сокета. Обмеження: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Неправильний метод HTTP-запиту, закриття сокета. IP: %1. Метод: "%2" - + Bad Http request, closing socket. IP: %1 Невірний HTTP-запит, закриття сокета. IP: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Відкрити... - + Reset Забрати - + Select icon Виберіть значок - + Supported image files Підтримувані файли образів + + LegalNotice + + + Legal Notice + Правова примітка + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent — це програма для роздачі файлів. Коли ви запускаєте торрент, його дані будуть доступні іншим через відвантаження. Всі дані, які ви роздаєте, на вашій відповідальності. + + + + No further notices will be issued. + Жодних подальших сповіщень виводитися не буде. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Якщо ви прочитали офіційне повідомлення, ви можете скористатися параметром командного рядка `--confirm-legal-notice`, щоб приховати його. + + + + Press 'Enter' key to continue... + Натисніть клавішу 'Enter', щоб продовжити... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 заблоковано. Підстава: %2. - + %1 was banned 0.0.0.0 was banned %1 заблоковано @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 — невідомий параметр командного рядка. - - + + %1 must be the single command line parameter. %1 повинен бути єдиним параметром командного рядка. - - You cannot use %1: qBittorrent is already running for this user. - Ви не можете використовувати %1: qBittorrent уже запущено для цього користувача. - - - + Run application with -h option to read about command line parameters. Запустіть програму із параметром -h, щоб прочитати про параметри командного рядка. - + Bad command line Поганий командний рядок - + Bad command line: Хибний командний рядок: - + An unrecoverable error occurred. - + Сталася невиправна помилка. - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - Правова примітка - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent — це програма для роздачі файлів. Коли ви запускаєте торрент, його дані будуть доступні іншим через відвантаження. Всі дані, які ви роздаєте, на вашій відповідальності. - - - - No further notices will be issued. - Жодних подальших сповіщень виводитися не буде. - - - - Press %1 key to accept and continue... - Натисніть %1, щоб погодитись і продовжити... + qBittorrent виявив невиправну помилку. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent — це програма для роздачі файлів. Коли ви запускаєте торрент, його дані будуть доступні іншим через відвантаження. Всі дані, які ви роздаєте, на вашій відповідальності. - -Ця замітка більше не з'являтиметься. + + You cannot use %1: qBittorrent is already running. + Ви не можете використовувати %1: qBittorrent вже запущено. - - Legal notice - Правова примітка + + Another qBittorrent instance is already running. + Інший екземпляр qBittorrent вже запущено. - - Cancel - Скасувати + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Знайдено неочікуваний екземпляр qBittorrent. Вихід з цього екземпляру. Ідентифікатор процесу: %1. - - I Agree - Я погоджуюсь + + Error when daemonizing. Reason: "%1". Error code: %2. + Помилка при демонізації. Причина: "%1". Код помилки: %2. @@ -3524,621 +3660,706 @@ No further notices will be issued. &Торренти - + &Tools &Інструменти - + &File &Файл - + &Help &Допомога - + On Downloads &Done Після &завершення завантажень - + &View &Показати - + &Options... &Налаштування... - &Resume - &Відновити + &Відновити - + &Remove &Вилучити - + Torrent &Creator С&творення торрента - - + + Alternative Speed Limits Альтернативні обмеження швидкості - + &Top Toolbar &Верхню панель - + Display Top Toolbar Показувати верхню панель - + Status &Bar Рядок &стану - + Filters Sidebar Бічна Панель Фільтрів - + S&peed in Title Bar &Швидкість у заголовку - + Show Transfer Speed in Title Bar Показувати швидкість передачі у заголовку - + &RSS Reader &Читач RSS - + Search &Engine &Пошуковик - + L&ock qBittorrent За&блокувати qBittorrent - + Do&nate! По&жертвувати гроші - + + Sh&utdown System + + + + &Do nothing &Нічого не робити - + Close Window Закрити вікно - R&esume All - П&родовжити всі + П&родовжити всі - + Manage Cookies... Керування Cookies... - + Manage stored network cookies Керування збереженими мережевими Cookies - + Normal Messages Звичайні повідомлення - + Information Messages Інформаційні повідомлення - + Warning Messages Попередження - + Critical Messages Критичні повідомлення - + &Log &Журнал - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Встановити глобальний ліміт швидкості... - + Bottom of Queue В кінець - + Move to the bottom of the queue Перемістити в кінець - + Top of Queue На початок - + Move to the top of the queue Перемістити на початок - + Move Down Queue Посунути назад - + Move down in the queue Посунути назад - + Move Up Queue Посунути вперед - + Move up in the queue Посунути вперед - + &Exit qBittorrent В&ийти з qBittorrent - + &Suspend System При&зупинити систему - + &Hibernate System При&спати систему - S&hutdown System - &Вимкнути систему + &Вимкнути систему - + &Statistics &Статистика - + Check for Updates Перевірити оновлення - + Check for Program Updates Перевірити оновлення програми - + &About &Про програму - &Pause - При&зупинити + При&зупинити - P&ause All - &Зупинити всі + &Зупинити всі - + &Add Torrent File... &Додати torrent-файл... - + Open Відкрити - + E&xit &Вийти - + Open URL Відкрити адресу - + &Documentation &Документація - + Lock Замкнути - - - + + + Show Показати - + Check for program updates Перевірити, чи є свіжіші версії програми - + Add Torrent &Link... Додати &посилання на торрент - + If you like qBittorrent, please donate! Якщо вам подобається qBittorrent, будь ласка, пожертвуйте кошти! - - + + Execution Log Журнал виконання - + Clear the password Забрати пароль - + &Set Password &Встановити пароль - + Preferences Налаштування - + &Clear Password &Забрати пароль - + Transfers Завантаження - - + + qBittorrent is minimized to tray qBittorrent згорнено до системного лотка - - - + + + This behavior can be changed in the settings. You won't be reminded again. Цю поведінку можна змінити в Налаштуваннях. Більше дане повідомлення показуватися не буде. - + Icons Only Лише значки - + Text Only Лише текст - + Text Alongside Icons Текст біля значків - + Text Under Icons Текст під значками - + Follow System Style Наслідувати стиль системи - - + + UI lock password Пароль блокування інтерфейсу - - + + Please type the UI lock password: Будь ласка, введіть пароль блокування інтерфейсу: - + Are you sure you want to clear the password? Ви впевнені, що хочете забрати пароль? - + Use regular expressions Використовувати регулярні вирази - - Search - Пошук + + + Search Engine + Пошуковик - - Transfers (%1) - Завантаження (%1) + + Search has failed + Пошук невдалий - Recursive download confirmation - Підтвердження рекурсивного завантаження + + Search has finished + Пошук закінчено - Never - Ніколи + + Search + Пошук + + + + Transfers (%1) + Завантаження (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent щойно був оновлений і потребує перезапуску, щоб застосувати зміни. - + qBittorrent is closed to tray qBittorrent закрито до системного лотка - + Some files are currently transferring. Деякі файли наразі передаються. - + Are you sure you want to quit qBittorrent? Ви впевнені, що хочете вийти з qBittorrent? - + &No &Ні - + &Yes &Так - + &Always Yes &Завжди так - + Options saved. Параметри збережені. - %1/s - s is a shorthand for seconds - %1/с + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + - - + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Відсутнє середовище виконання Python - + qBittorrent Update Available Доступне оновлення qBittorrent - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Для використання Пошуковика потрібен Python, але, здається, він не встановлений. Встановити його зараз? - + Python is required to use the search engine but it does not seem to be installed. Для використання Пошуковика потрібен Python, але, здається, він не встановлений. - - + + Old Python Runtime Стара версія Python - + A new version is available. Доступна нова версія. - + Do you want to download %1? Чи ви хочете завантажити %1? - + Open changelog... Відкрити список змін... - + No updates available. You are already using the latest version. Немає доступних оновлень. Ви вже користуєтеся найновішою версією. - + &Check for Updates &Перевірити оновлення - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Ваша версія Python (%1) застаріла. Мінімальна вимога: %2 Ви бажаєте встановити більш нову версію зараз? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Ваша версія Python (%1) застаріла. Будь ласка, оновіться до останньої версії, щоб пошукові системи працювали. Мінімально необхідна версія: %2. - + + Paused + Призупинений + + + Checking for Updates... Перевірка оновлень... - + Already checking for program updates in the background Вже відбувається фонова перевірка оновлень - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Помилка завантаження - Python setup could not be downloaded, reason: %1. Please install it manually. - Не вдалося завантажити програму інсталяції Python. Причина: %1. + Не вдалося завантажити програму інсталяції Python. Причина: %1. Будь ласка, встановіть Python самостійно. - - + + Invalid password Неправильний пароль - + Filter torrents... Фільтрувати торренти... - + Filter by: Фільтрувати за: - + The password must be at least 3 characters long Пароль має містити щонайменше 3 символи - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Торрентний файл «%1» містить файли .torrent, продовжити їх завантаження? - - - + The password is invalid Цей пароль неправильний - + DL speed: %1 e.g: Download speed: 10 KiB/s Шв. завант.: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Шв. відвант.: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [З: %1, В: %2] qBittorrent %3 - - - + Hide Сховати - + Exiting qBittorrent Вихід із qBittorrent - + Open Torrent Files Відкрити torrent-файли - + Torrent Files Torrent-файли @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 Помилка вводу-виводу: %1 - + The file size (%1) exceeds the download limit (%2) Розмір файлу (%1) перевищує ліміт завантаження (%2) - + Exceeded max redirections (%1) Перевищено максимальну кількість перенаправлень (%1) - + Redirected to magnet URI Перенаправлення на magnet URI - + The remote host name was not found (invalid hostname) Віддалений сервер не знайдено (неправильна адреса) - + The operation was canceled Операцію скасовано - + The remote server closed the connection prematurely, before the entire reply was received and processed Віддалений сервер закрив з'єднання передчасно, перед тим, як було отримано і оброблено відповідь - + The connection to the remote server timed out Час підключення до віддаленого сервера минув - + SSL/TLS handshake failed SSL/TLS рукостискання не вдалось - + The remote server refused the connection Віддалений сервер відмовив у з’єднанні - + The connection to the proxy server was refused Відмовлено у з’єднанні з проксі-сервером - + The proxy server closed the connection prematurely Проксі-сервер закрив з’єднання передчасно - + The proxy host name was not found Назву проксі-хоста не знайдено - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Вичерпано час на з'єднання з проксі або сервер не встиг відповісти на запит - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Проксі потребує автентифікації, щоб задовольнити запит, але не прийняв запропонованих автентифікаційних даних - + The access to the remote content was denied (401) Відмовлено у доступі до віддалених даних (401) - + The operation requested on the remote content is not permitted Операція щодо віддаленого вмісту не дозволена - + The remote content was not found at the server (404) Віддалені дані не знайдено на сервері (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Віддалений сервер потребує автентифікації, щоб надати вміст, але не прийняв наданих автентифікаційних даних - + The Network Access API cannot honor the request because the protocol is not known Не вдалось задовольнити запит: невідомий протокол - + The requested operation is invalid for this protocol Запитана операція недійсна для цього протоколу - + An unknown network-related error was detected Виявлено невідому помилку, пов'язану з мережею - + An unknown proxy-related error was detected Виявлено невідому помилку, пов'язану з проксі - + An unknown error related to the remote content was detected Виявлено невідому помилку, пов’язану з віддаленим вмістом - + A breakdown in protocol was detected Виявлено поломку в протоколі - + Unknown error Невідома помилка @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Ігнорування помилки SSL, адреса: "%1", помилки: "%2" @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Веб-інтерфейс + Веб-інтерфейс - + Advanced Додатково - + Customize UI Theme... Налаштувати тему інтерфейсу користувача... - + Transfer List Список завантажень - + Confirm when deleting torrents Підтверджувати видалення торрентів - Shows a confirmation dialog upon pausing/resuming all the torrents - Показує діалогове вікно підтвердження після призупинення/відновлення всіх торрентів + Показує діалогове вікно підтвердження після призупинення/відновлення всіх торрентів - Confirm "Pause/Resume all" actions - Підтвердьте дії "призупинити/відновити все" + Підтвердьте дії "призупинити/відновити все" - + Use alternating row colors In table elements, every other row will have a grey background. Кожен другий рядок виділений кольором - + Hide zero and infinity values Сховати значення нуль та нескінченність - + Always Завжди - Paused torrents only - Лише призупинені торренти + Лише призупинені торренти - + Action on double-click Дія при подвійному клацанні - + Downloading torrents: Якщо завантажується: - - Start / Stop Torrent - Запустити або зупинити торрент + Запустити або зупинити торрент - - + + Open destination folder Відкрити теку призначення - - + + No action Нічого не робити - + Completed torrents: Завершені торренти: - + Auto hide zero status filters Автоматичне приховування фільтрів нульового стану - + Desktop Робочий стіл - + Start qBittorrent on Windows start up Запускати qBittorrent при завантаженні системи - + Show splash screen on start up Показувати логотип при завантаженні програми - + Confirmation on exit when torrents are active Підтверджувати вихід, коли є активні торренти - + Confirmation on auto-exit when downloads finish Підтверджувати автоматичний вихід після завершення завантажень - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Щоб встановити qBittorrent як програму за замовчуванням для файлів .torrent і/або Magnet посилань<br/>ви можете використовувати <span style=" font-weight:600;">Програми за замовчуванням</span> діалог від <span style=" font-weight:600;">Панель управління</span>.</p></body></html> - + KiB КіБ - + Torrent content layout: Структура вмісту торрента: - + Original Без змін - + Create subfolder Створити підтеку - + Don't create subfolder Не створювати підтеку - + The torrent will be added to the top of the download queue Торрент буде додано на початок черги завантаження - + Add to top of queue The torrent will be added to the top of the download queue Додати в початок черги - + When duplicate torrent is being added При додаванні дубліката торрента - + Merge trackers to existing torrent Об'єднати трекери в існуючий торрент - + + Keep unselected files in ".unwanted" folder + Зберігайте невибрані файли у теці ".unwanted" + + + Add... Додати... - + Options.. Опції... - + Remove Видалити - + Email notification &upon download completion Сповіщення через e-mail про &завершення завантажень - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Протокол підключення пірів: - + Any Будь-який - + I2P (experimental) I2P (експериментальний) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Якщо &quot; ввімкнено «змішаний режим»&quot;, торрентам I2P також дозволено отримувати однорангові джерела з інших джерел, крім трекера, і підключатися до звичайних IP-адрес, не забезпечуючи анонімізації. Це може бути корисним, якщо користувач не зацікавлений в анонімізації I2P, але все одно хоче мати можливість підключатися до однорангових I2P..</p></body></html> + <html><head/><body><p>Якщо &quot; ввімкнено «змішаний режим»&quot;, торрентам I2P також дозволено отримувати однорангові джерела з інших джерел, крім трекера, і підключатися до звичайних IP-адрес, не забезпечуючи анонімізації. Це може бути корисним, якщо користувач не зацікавлений в анонімізації I2P, але все одно хоче мати можливість підключатися до однорангових I2P..</p></body></html> - + Mixed mode Змішаний режим - + Some options are incompatible with the chosen proxy type! Деякі параметри несумісні з вибраним типом проксі! - + If checked, hostname lookups are done via the proxy Якщо позначено, пошук імені хоста виконується через проксі - + Perform hostname lookup via proxy Виконайте пошук імені хоста через проксі - + Use proxy for BitTorrent purposes Використовуйте проксі для цілей BitTorrent - + RSS feeds will use proxy RSS-канали використовуватимуть проксі - + Use proxy for RSS purposes Використовуйте проксі для цілей RSS - + Search engine, software updates or anything else will use proxy Пошукова система, оновлення програмного забезпечення чи щось інше використовуватиме проксі - + Use proxy for general purposes Використовуйте проксі для загальних цілей - + IP Fi&ltering &Фільтрування IP - + Schedule &the use of alternative rate limits Використання альтернативних обмежень &швидкості за розкладом - + From: From start time З: - + To: To end time До: - + Find peers on the DHT network Шукати пірів в DHT (децентралізованій мережі) - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption Вимкнути шифрування: лише підключатися до пірів без шифрування протоколу - + Allow encryption Дозволити шифрування - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Детальніше</a>) - + Maximum active checking torrents: Максимум активних перевірок торрентів: - + &Torrent Queueing &Черга торрентів - + When total seeding time reaches По досягненні загального часу роздачі - + When inactive seeding time reaches По досягненні часу бездіяльності роздачі - A&utomatically add these trackers to new downloads: - Автоматично &додавати ці трекери до нових завантажень: + Автоматично &додавати ці трекери до нових завантажень: - + RSS Reader Читач RSS - + Enable fetching RSS feeds Увімкнути завантаження RSS-подач - + Feeds refresh interval: Інтервал оновлення подач: - + + Same host request delay: + Затримка запиту до хоста: + + + Maximum number of articles per feed: Максимальна кількість новин на подачу: - - - + + + min minutes хв - + Seeding Limits Обмеження роздачі - Pause torrent - Призупинити торрент + Призупинити торрент - + Remove torrent Видалити торрент - + Remove torrent and its files Видалити торрент та його файли - + Enable super seeding for torrent Увімкнути режим супер-сід для торрента - + When ratio reaches При досягненні коефіцієнта роздачі - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + Адреса: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader Автозавантажувач торрентів із RSS - + Enable auto downloading of RSS torrents Увімкнути автоматичне завантаження торрентів із RSS - + Edit auto downloading rules... Редагувати правила автозавантаження... - + RSS Smart Episode Filter Розумний фільтр серій по RSS - + Download REPACK/PROPER episodes Завантажувати серії REPACK/PROPER - + Filters: Фільтри: - + Web User Interface (Remote control) Веб-інтерфейс користувача (дистанційне керування) - + IP address: IP адреса: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv "::" для будь-якої адреси IPv6, або "*" для IPv4 і IPv6. - + Ban client after consecutive failures: Заблокувати клієнта після послідовних збоїв: - + Never Ніколи - + ban for: заблокувати на: - + Session timeout: Тайм-аут сеансу: - + Disabled Вимкнено - Enable cookie Secure flag (requires HTTPS) - Увімкнути захист cookie (вимагає HTTPS) + Увімкнути захист cookie (вимагає HTTPS) - + Server domains: Домени сервера: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP &Використовувати HTTPS замість HTTP - + Bypass authentication for clients on localhost Пропустити автентифікацію для клієнтів на цьому ж комп'ютері - + Bypass authentication for clients in whitelisted IP subnets Пропустити автентифікацію для клієнтів із дозволених підмереж IP - + IP subnet whitelist... Список дозволених підмереж IP... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Укажіть IP-адреси зворотного проксі-сервера (або підмережі, наприклад 0.0.0.0/24), щоб використовувати перенаправлену адресу клієнта (заголовок X-Forwarded-For). Використовуйте ';' щоб розділити кілька записів. - + Upda&te my dynamic domain name Оновлювати мій &динамічний домен - + Minimize qBittorrent to notification area Згортати qBittorrent у область сповіщень - + + Search + Пошук + + + + WebUI + + + + Interface Інтерфейс - + Language: Мова: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Стиль значка в системному лотку: - - + + Normal Звичайний - + File association Прив'язка файлів - + Use qBittorrent for .torrent files Використовувати qBittorrent для файлів .torrent - + Use qBittorrent for magnet links Використовувати qBittorrent для magnet-посилань - + Check for program updates Перевірити оновлення програми - + Power Management Керування енергоспоживанням - + + &Log Files + + + + Save path: Шлях збереження: - + Backup the log file after: Робити окрему копію журналу після: - + Delete backup logs older than: Видаляти файли журналу, старіші ніж: - + + Show external IP in status bar + + + + When adding a torrent При додаванні торрента - + Bring torrent dialog to the front Підняти вікно торрента - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Також видаляти .torrent-файли, додавання яких було скасовано - + Also when addition is cancelled Також, якщо додавання скасовано - + Warning! Data loss possible! Увага! Можлива втрата даних! - + Saving Management Керування зберіганням - + Default Torrent Management Mode: Усталений режим керування торрентами: - + Manual Вручну - + Automatic Автоматичний - + When Torrent Category changed: Коли змінилася категорія торрента: - + Relocate torrent Перемістити торрент - + Switch torrent to Manual Mode Перемкнути торрент до ручного режиму - - + + Relocate affected torrents Перемістити відповідні торренти - - + + Switch affected torrents to Manual Mode Перемкнути відповідні торренти до ручного режиму - + Use Subcategories Використовувати підкатегорії - + Default Save Path: Типовий шлях збереження: - + Copy .torrent files to: Копіювати torrent-файли до: - + Show &qBittorrent in notification area Показувати &qBittorrent в області сповіщень - &Log file - Файл &журналу + Файл &журналу - + Display &torrent content and some options Показувати вміст &торрента та деякі налаштування - + De&lete .torrent files afterwards &Видаляти файли .torrent опісля - + Copy .torrent files for finished downloads to: Копіювати torrent-файли для завершених завантажень до: - + Pre-allocate disk space for all files Попередньо виділяти місце для всіх файлів - + Use custom UI Theme Використовувати власну тему - + UI Theme file: Шлях до файла теми: - + Changing Interface settings requires application restart Для застосування налаштувань інтерфейсу, потрібно перезапустити програму - + Shows a confirmation dialog upon torrent deletion Відображення діалогу підтвердження при видаленні торрента - - + + Preview file, otherwise open destination folder Переглянути файл або відкрити теку призначення - - Show torrent options - Показати параметри торрента + Показати параметри торрента - + Shows a confirmation dialog when exiting with active torrents Показувати діалог підтвердження при закритті, якщо є активні торренти - + When minimizing, the main window is closed and must be reopened from the systray icon При згортанні, головне вікно закривається і відновлюється через значок в області сповіщень - + The systray icon will still be visible when closing the main window Значок в області сповіщень залишається видимим після закриття головного вікна - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window При закритті згортати qBittorrent в область сповіщень - + Monochrome (for dark theme) Монохромний (для темної теми) - + Monochrome (for light theme) Монохромний (для світлої теми) - + Inhibit system sleep when torrents are downloading Заборонити сплячий режим, коли торренти завантажуються - + Inhibit system sleep when torrents are seeding Заборонити сплячий режим, коли торренти роздаються - + Creates an additional log file after the log file reaches the specified file size Створює додатковий файл журналу при досягненні певного розміру попереднього файлу - + days Delete backup logs older than 10 days днів - + months Delete backup logs older than 10 months місяців - + years Delete backup logs older than 10 years років - + Log performance warnings Писати в журнал попередження швидкодії - The torrent will be added to download list in a paused state - Торрент додаватиметься до списку завантаження у призупиненому стані + Торрент додаватиметься до списку завантаження у призупиненому стані - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Не починати завантаження автоматично - + Whether the .torrent file should be deleted after adding it Чи слід видалити файл .torrent після його додавання - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Перед початком завантаження виділяти на диску місце під повний розмір файлу, щоб мінімізувати фрагментацію. Корисно лише для HDD. - + Append .!qB extension to incomplete files Додавати розширення .!qB до незавершених файлів - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Коли торрент завантажено, запропонувати додати торренти з будь-яких файлів .torrent, знайдених у ньому - + Enable recursive download dialog Увімкнути діалог рекурсивного завантаження - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Автоматично: різні властивості торренту (наприклад, шлях збереження) визначатимуться відповідною категорією Вручну: різні властивості торренту (наприклад, шлях збереження) потрібно призначати вручну - + When Default Save/Incomplete Path changed: Коли стандартний шлях для зберігання/невиконаних торрентів змінюється: - + When Category Save Path changed: Коли змінився шлях збереження категорії: - + Use Category paths in Manual Mode Використовувати шляхи Категорій в Ручному Режимі - + Resolve relative Save Path against appropriate Category path instead of Default one Визначити відносний Шлях Збереження у відповідному шляху Категорії замість типового - + Use icons from system theme Використовуйте іконки з системної теми - + Window state on start up: Стан вікна під час запуску: - + qBittorrent window state on start up Стан вікна qBittorrent під час запуску - + Torrent stop condition: Умови зупинки торрента: - - + + None Жодного - - + + Metadata received Метадані отримано - - + + Files checked Файли перевірені - + Ask for merging trackers when torrent is being added manually Просити про об'єднання трекерів, при ручному додаванні торрента - + Use another path for incomplete torrents: Використовувати інший шлях для неповних торрентів: - + Automatically add torrents from: Автоматично додавати торренти із: - + Excluded file names Виключені імена файлів - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: фільтрувати точне ім'я файлу. readme[0-9].txt: фільтр 'readme1.txt', 'readme2.txt', але не 'readme10.txt'. - + Receiver Одержувач - + To: To receiver Кому: - + SMTP server: Сервер SMTP: - + Sender Відправник - + From: From sender Від: - + This server requires a secure connection (SSL) Цей сервер вимагає безпечного з'єднання (SSL) - - + + Authentication Автентифікація - - - - + + + + Username: Ім'я користувача: - - - - + + + + Password: Пароль: - + Run external program Запускати зовнішню програму - Run on torrent added - Запускати при додаванні торрента + Запускати при додаванні торрента - Run on torrent finished - Запускати при завершені торрента + Запускати при завершені торрента - + Show console window Показати вікно консолі - + TCP and μTP TCP та μTP - + Listening Port Порт для вхідних з'єднань - + Port used for incoming connections: Порт, який використовуватиметься для вхідних з'єднань: - + Set to 0 to let your system pick an unused port Встановіть рівним 0, щоб дозволити системі вибрати якийсь невикористаний порт - + Random Випадковий - + Use UPnP / NAT-PMP port forwarding from my router Використовувати на моєму роутері перенаправлення портів UPnP / NAT-PMP - + Connections Limits Обмеження з'єднань - + Maximum number of connections per torrent: Максимальна кількість з'єднань на торрент: - + Global maximum number of connections: Загальна максимальна кількість з'єднань: - + Maximum number of upload slots per torrent: Макс. з'єднань для відвантаження на торрент: - + Global maximum number of upload slots: Загальна максимальна кількість з'єднань для відвантаження: - + Proxy Server Проксі-сервер - + Type: Тип: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Адреса: - - - + + + Port: Порт: - + Otherwise, the proxy server is only used for tracker connections В іншому випадку, проксі-сервер використовується лише для з'єднань з трекером - + Use proxy for peer connections Використовувати проксі для з'єднання з пірами - + A&uthentication &Автентифікація - + Info: The password is saved unencrypted Увага: пароль зберігається в незашифрованому вигляді - + Filter path (.dat, .p2p, .p2b): Шлях до фільтра (.dat, .p2p, .p2b): - + Reload the filter Перезавантажити фільтр - + Manually banned IP addresses... Вручну заблоковані IP-адреси... - + Apply to trackers Застосувати до трекерів - + Global Rate Limits Глобальні обмеження швидкості - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s КіБ/с - - + + Upload: Відвантаження: - - + + Download: Завантаження: - + Alternative Rate Limits Альтернативні обмеження швидкості - + Start time Час початку - + End time Час завершення - + When: Коли: - + Every day Щодня - + Weekdays Робочі дні - + Weekends Вихідні - + Rate Limits Settings Налаштування обмежень швидкості - + Apply rate limit to peers on LAN Застосувати обмеження для пірів з LAN - + Apply rate limit to transport overhead Включати в обмеження протокол передачі - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Включати в обмеження протокол uTP - + Privacy Конфіденційність - + Enable DHT (decentralized network) to find more peers Увімкнути DHT (децентралізовану мережу), щоб знаходити більше пірів - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Обмін пірами із сумісними Bittorrent-клієнтами (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Увімкнути обмін пірами (PeX), щоб знаходити більше пірів - + Look for peers on your local network Шукати пірів у локальній мережі - + Enable Local Peer Discovery to find more peers Увімкнути локальний пошук пірів, щоб знаходити більше пірів - + Encryption mode: Режим шифрування: - + Require encryption Вимагати шифрування - + Disable encryption Вимкнути шифрування - + Enable when using a proxy or a VPN connection Увімкнути при використанні з'єднання через проксі або VPN - + Enable anonymous mode Увімкнути анонімний режим - + Maximum active downloads: Максимум активних завантажень: - + Maximum active uploads: Максимум активних відвантажень: - + Maximum active torrents: Максимум активних торрентів: - + Do not count slow torrents in these limits Не враховувати повільні торренти до цих обмежень - + Upload rate threshold: Поріг швидкості відвантаження: - + Download rate threshold: Поріг швидкості завантаження: - - - + + + + sec seconds сек - + Torrent inactivity timer: Час простоювання торрента: - + then а тоді - + Use UPnP / NAT-PMP to forward the port from my router Використовувати UPnP / NAT-PMP, щоб направити порт в роутері - + Certificate: Сертифікат: - + Key: Ключ: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Інформація про сертифікати</a> - + Change current password Змінити поточний пароль - Use alternative Web UI - Використовувати альтернативний Веб-інтерфейс + Використовувати альтернативний Веб-інтерфейс - + Files location: Розташування файлів: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Безпека - + Enable clickjacking protection Увімкнути захист від клікджекінгу - + Enable Cross-Site Request Forgery (CSRF) protection Увімкнути захист від міжсайтової підробки запиту (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Увімкнути перевірку заголовку хоста - + Add custom HTTP headers Додати власні заголовки HTTP - + Header: value pairs, one per line По одному запису "заголовок: значення" на рядок - + Enable reverse proxy support Увімкнути підтримку зворотного проксі-сервера - + Trusted proxies list: Список довірених проксі: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Сервіс: - + Register Зареєструватись - + Domain name: Домен: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Увімкнувши ці налаштування, ви ризикуєте <strong>безповоротно втратити</strong> ваші файли .torrent! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Якщо увімкнути другий параметр ( &ldquo;Також, якщо додавання скасовано&rdquo;) файл .torrent <strong>буде видалено</strong> навіть якщо ви натиснете &ldquo;<strong>Скасувати</strong>&rdquo; у вікні &ldquo;Додати торрент&rdquo; - + Select qBittorrent UI Theme file Вибрати файл теми qBittorrent - + Choose Alternative UI files location Використовувати розташування файлів альтернативного інтерфейсу - + Supported parameters (case sensitive): Підтримувані параметри (чутливо до регістру): - + Minimized Згорнуто - + Hidden Приховано - + Disabled due to failed to detect system tray presence Вимкнено, оскільки не вдалося виявити наявність системного лотка - + No stop condition is set. Умову зупинки не задано. - + Torrent will stop after metadata is received. Торрент зупиниться після отримання метаданих. - - Torrents that have metadata initially aren't affected. - Це не впливає на торренти, які спочатку мають метадані. - - - + Torrent will stop after files are initially checked. Торрент зупиниться після початкової перевірки файлів. - + This will also download metadata if it wasn't there initially. Це також завантажить метадані, якщо їх не було спочатку. - + %N: Torrent name %N: Назва торрента - + %L: Category %L: Категорія - + %F: Content path (same as root path for multifile torrent) %F: Шлях вмісту (для торрента з багатьма файлами те саме що корінь) - + %R: Root path (first torrent subdirectory path) %R: Кореневий шлях (шлях до головної теки торрента) - + %D: Save path %D: Шлях збереження - + %C: Number of files %C: Кількість файлів - + %Z: Torrent size (bytes) %Z: Розмір торрента (в байтах) - + %T: Current tracker %T: Поточний трекер - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Порада: Візьміть параметр у лапки, щоб заборонити обрізання тексту на пробілах (наприклад, "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Немає) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Торрент буде вважатися повільним, якщо його швидкість відвантаження або віддачі стане менше зазначених значень на час "Таймера бездіяльності торрента" - + Certificate Сертифікат: - + Select certificate Вибрати сертифікат - + Private key Закритий ключ - + Select private key Вибрати закритий ключ - + + WebUI configuration failed. Reason: %1 + Не вдалося виконати конфігурацію WebUI. Причина: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Виберіть теку для спостереження - + Adding entry failed Не вдалося додати запис - - Location Error - Помилка розташування + + The WebUI username must be at least 3 characters long. + Ім'я користувача WebUI повинно мати довжину не менше 3 символів. + + + + The WebUI password must be at least 6 characters long. + Пароль WebUI повинен мати довжину не менше 6 символів. - - The alternative Web UI files location cannot be blank. - Розташування альтернативних файлів Веб-інтерфейсу не може бути порожнім. + + Location Error + Помилка розташування - - + + Choose export directory Виберіть каталог для експорту - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Коли ці параметри увімкнено, qBittorrent <strong>видалить</strong> файли .torrent після того як їх успішно (перший варіант) або неуспішно (другий варіант) додано до черги завантаження. Це буде застосовано <strong>не лише</strong> до файлів відкритих через меню &ldquo;Додати тооррент&rdquo;, але також до тих, що відкриваються через <strong>асоціацію типів файлів</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Файл теми інтерфейсу користувача qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Мітки (розділені комами) - + %I: Info hash v1 (or '-' if unavailable) %I: інфо хеш v1 (або '-', якщо він недоступний) - + %J: Info hash v2 (or '-' if unavailable) %J: інфо хеш v2 (або '-', якщо він недоступний) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: Torrent ID (або sha-1 інфо хеш для торрента v1 або урізаний інфо хеш sha-256 для v2/гібридного торрента) - - - + + + Choose a save directory Виберіть каталог для збереження - + + Torrents that have metadata initially will be added as stopped. + Торренти, які мають метадані, будуть додані як зупинені. + + + Choose an IP filter file Виберіть файл IP-фільтра - + All supported filters Всі підтримувані фільтри - + + The alternative WebUI files location cannot be blank. + Альтернативне розташування файлів WebUI не може бути порожнім. + + + Parsing error Помилка розбору - + Failed to parse the provided IP filter Не вдалося розібрати даний фільтр IP - + Successfully refreshed Успішно оновлено - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Успішно розібрано наданий фільтр IP: застосовано %1 правил. - + Preferences Налаштування - + Time Error Помилка часу - + The start time and the end time can't be the same. Час початку і кінця не може бути тим самим. - - + + Length Error Помилка довжини - - - The Web UI username must be at least 3 characters long. - Ім'я користувача веб-інтерфейсу повинне містити хоча б 3 символи. - - - - The Web UI password must be at least 6 characters long. - Пароль від Веб-інтерфейсу повинен містити хоча би 6 символів. - PeerInfo - + Unknown Невідомий - + Interested (local) and choked (peer) ми зацікавлені, пір відмовляється - + Interested (local) and unchoked (peer) ми зацікавлені, пір погоджується (успішно завантажуємо) - + Interested (peer) and choked (local) пір зацікавлений, ми відмовляємось - + Interested (peer) and unchoked (local) пір зацікавлений, ми погоджуємося (успішно відвантажуємо) - + Not interested (local) and unchoked (peer) ми незацікавлені, пір погоджується - + Not interested (peer) and unchoked (local) пір незацікавлений, ми погоджуємося - + Optimistic unchoke оптимістичний вибір - + Peer snubbed пір зупинився - + Incoming connection Вхідне з'єднання - + Peer from DHT Пір із DHT - + Peer from PEX Пір із PEX - + Peer from LSD Пір із LSD - + Encrypted traffic Шифрований трафік - + Encrypted handshake зашифроване рукостискання + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt: фільтр 'readme1.txt', 'readme2.txt', Пір "%1" заблокований вручну - + N/A @@ -7668,7 +8080,7 @@ readme[0-9].txt: фільтр 'readme1.txt', 'readme2.txt', Список пірів, яких ви хочете додати (один IP на рядок): - + Format: IPv4:port / [IPv6]:port Формат: IPv4:порт / [IPv6]:порт @@ -7709,27 +8121,27 @@ readme[0-9].txt: фільтр 'readme1.txt', 'readme2.txt', PiecesBar - + Files in this piece: Файли в даній частині: - + File in this piece: Файл у цій частині: - + File in these pieces: Файл у таких частинах: - + Wait until metadata become available to see detailed information Для перегляду детальної інформації, зачекайте, поки метадані стануть доступними - + Hold Shift key for detailed information Утримуйте клавішу Shift для перегляду розширеної інформації @@ -7742,58 +8154,58 @@ readme[0-9].txt: фільтр 'readme1.txt', 'readme2.txt', Пошукові додатки - + Installed search plugins: Встановлені пошукові додатки: - + Name Назва - + Version Версія - + Url Адреса - - + + Enabled Увімкнено - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Попередження: Під час завантаження торрентів з будь-якої з цих пошукових систем, обов'язково дотримуйтесь законів про захист авторських прав у вашій країні. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Ви можете отримати нові плагіни для пошукових систем тут: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Встановити новий - + Check for updates Перевірити оновлення - + Close Закрити - + Uninstall Видалити @@ -7913,17 +8325,17 @@ Those plugins were disabled. Джерело додатка - + Search plugin source: Джерело пошукового додатка: - + Local file Локальний файл - + Web link Веб-посилання @@ -7941,70 +8353,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + Керування живленням знайшло відповідний інтерфейс D-Bus. Інтерфейс: %1 Power management error. Did not found suitable D-Bus interface. - + Помилка керування живленням. Не знайдено відповідний інтерфейс D-Bus. Power management error. Action: %1. Error: %2 - + Помилка керування живленням. Дія: %1. Помилка: %2 Power management unexpected error. State: %1. Error: %2 - + Неочікувана помилка керування живленням. Стан: %1. Помилка: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Наступні файли з торрента "%1" підтримують попередній перегляд, будь ласка, виберіть один з них: - + Preview Попередній перегляд - + Name Назва - + Size Розмір - + Progress Перебіг - + Preview impossible Попередній перегляд неможливий - + Sorry, we can't preview this file: "%1". Вибачте, попередній перегляд цього файла неможливий: "%1". - + Resize columns Змінити розмір стовпців - + Resize all non-hidden columns to the size of their contents Змінити розмір усіх не прихованих стовпців до розміру їх вмісту @@ -8017,27 +8429,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist Шляху не існує - + Path does not point to a directory Шлях не вказує на каталог - + Path does not point to a file Шлях не вказує на файл - + Don't have read permission to path Немає дозволу на читання шляху - + Don't have write permission to path Немає дозволу на запис до шляху @@ -8078,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: Завантажено: - + Availability: Доступно: @@ -8098,53 +8510,53 @@ Those plugins were disabled. Передача - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Активний протягом: - + ETA: Залишилось: - + Uploaded: Відвантажено: - + Seeds: Сіди: - + Download Speed: Швидкість завантаження: - + Upload Speed: Швидкість відвантаження: - + Peers: Піри: - + Download Limit: Обмеження завантаження: - + Upload Limit: Обмеження відвантаження: - + Wasted: Змарновано: @@ -8154,193 +8566,249 @@ Those plugins were disabled. З'єднання: - + Information Інформація - + Info Hash v1: Інфо-хеш v1: - + Info Hash v2: Інфо-хеш v2: - + Comment: Коментар: - + Select All Вибрати все - + Select None Зняти виділення - + Share Ratio: Коефіцієнт роздачі: - + Reannounce In: Повторне анонсування через: - + Last Seen Complete: Востаннє завершений: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Загальний розмір: - + Pieces: Частин: - + Created By: Автор: - + Added On: Додано: - + Completed On: Завершено: - + Created On: Створено: - + + Private: + + + + Save Path: Шлях збереження: - + Never Ніколи - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 × %2 (є %3) - - + + %1 (%2 this session) %1 (%2 цього сеансу) - - + + + N/A - + + Yes + Так + + + + No + Ні + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (роздавався %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (макс. %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (%2 загалом) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 середн.) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Додати Веб-сід + Додати Веб-сід - Remove Web seed - Вилучити Веб-сід + Вилучити Веб-сід - Copy Web seed URL - Скопіювати адресу веб-сіда + Скопіювати адресу веб-сіда - Edit Web seed URL - Редагувати адресу веб-сіда + Редагувати адресу веб-сіда - + Filter files... Фільтрувати файли... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Графіки швидкості вимкнені - + You can enable it in Advanced Options Ви можете увімкнути їх в додаткових параметрах - New URL seed New HTTP source - Нова адреса сіда + Нова адреса сіда - New URL seed: - Нова адреса сіда: + Нова адреса сіда: - - This URL seed is already in the list. - Ця адреса сіда вже є у списку. + Ця адреса сіда вже є у списку. - + Web seed editing Редагування Веб-сіда - + Web seed URL: Адреса Веб-сіда: @@ -8359,22 +8827,22 @@ Those plugins were disabled. Не вдалося зберегти дані Автозавантажувача RSS з %1. Помилка: %2 - + Invalid data format Хибний формат даних - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... RSS-стаття '%1' прийнята правилом '%2'. Спроба додати торрент. - + Failed to read RSS AutoDownloader rules. %1 Не вдалося прочитати правила Автозавантажувача RSS. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Не вдалося завантажити правила Автозавантажувача RSS. Причина: %1 @@ -8382,22 +8850,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Не вдалося завантажити RSS-канал з '%1'. Причина: %2 - + RSS feed at '%1' updated. Added %2 new articles. RSS-канал з '%1' оновлено. Додано %2 нових статей. - + Failed to parse RSS feed at '%1'. Reason: %2 Не вдалося розібрати RSS-канал з '%1'. Причина: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. RSS-канал з '%1' успішно завантажений. Почався його розбір. @@ -8433,12 +8901,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. Некоректна RSS подача. - + %1 (line: %2, column: %3, offset: %4). %1 (рядок: %2, стовпець: %3, зсув: %4). @@ -8446,99 +8914,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Не вдалося зберегти конфігурацію сесії RSS подачі. Файл: "%1". Помилка: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Не вдалося зберегти данні сесії RSS подачі. Файл: "%1". Помилка: "%2" - - + + RSS feed with given URL already exists: %1. RSS канал за адресою вже присутній: %1. - + Feed doesn't exist: %1. Канал не існує: %1. - + Cannot move root folder. Не вдалося перемістити кореневу теку - - + + Item doesn't exist: %1. Елемент не існує: %1. - + Couldn't move folder into itself. Не вдалося перемістити папку в саму себе. - + Cannot delete root folder. Не вдалося видалити кореневу теку. - + Failed to read RSS session data. %1 Не вдалося прочитати дані сеансу RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Не вдалося розібрати дані сеансу RSS. Файл: "%1". Помилка: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Не вдалося завантажити дані сеансу RSS. Файл: "%1". Помилка: "Неправильний формат даних". - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Не вдалося завантажити RSS-канал "%1". Канал: "%1". Причина: Потрібна адреса. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Не вдалося завантажити RSS-канал "%1". Канал: "%1". Причина: Хибний UID. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Повторна RSS роздача знайдена. UID: "%1". Помилка: Конфігурація схоже пошкоджена. - + Couldn't load RSS item. Item: "%1". Invalid data format. Не вдалося завантажити елемент RSS. Елемент: "%1". Хибний формат даних. - + Corrupted RSS list, not loading it. Пошкоджений список RSS подач, не завантажую його. - + Incorrect RSS Item path: %1. Некоректний шлях елемента RSS: %1. - + RSS item with given path already exists: %1. Запис RSS за даним шляхом вже присутній: %1. - + Parent folder doesn't exist: %1. Батьківська тека не існує: %1. @@ -8562,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read Позначити як прочитане @@ -8588,132 +9056,132 @@ Those plugins were disabled. Торренти: (двічі клацніть щоб завантажити) - - + + Delete Видалити - + Rename... Перейменувати... - + Rename Перейменувати - - + + Update Оновити - + New subscription... Нова підписка... - - + + Update all feeds Оновити всі подачі - + Download torrent Завантажити торрент - + Open news URL Відкрити адресу новини - + Copy feed URL Копіювати адресу подачі - + New folder... Нова тека... - + Edit feed URL... Редагувати розсилку URL каналу... - + Edit feed URL Редагувати розсилку URL каналу... - + Please choose a folder name Будь ласка, виберіть назву теки - + Folder name: Назва теки: - + New folder Нова тека - - + + Please type a RSS feed URL Будь-ласка, введіть адресу подачі RSS - - + + Feed URL: Адреса подачі: - + Deletion confirmation Підтвердження видалення - + Are you sure you want to delete the selected RSS feeds? Ви впевнені, що хочете видалити вибрані RSS-подачі? - + Please choose a new name for this RSS feed Будь ласка, виберіть нову назву для цієї RSS-подачі - + New feed name: Нова назва подачі: - + Rename failed Перейменування не вдалося - + Date: Дата: - + Feed: - + канал: - + Author: Автор: @@ -8721,38 +9189,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. Для використання пошуковика вимагається встановлений Python. - + Unable to create more than %1 concurrent searches. Не можна створити більше %1 одночасних пошуків. - - + + Offset is out of range Зсув поза діапазоном - + All plugins are already up to date. Всі додатки свіжої версії. - + Updating %1 plugins Оновлення %1 додатків - + Updating plugin %1 Оновлюється додаток %1 - + Failed to check for plugin updates: %1 Не вдалося перевірити оновлення додатку: %1 @@ -8827,132 +9295,146 @@ Those plugins were disabled. Розмір: - + Name i.e: file name Назва - + Size i.e: file size Розмір - + Seeders i.e: Number of full sources Сідери - + Leechers i.e: Number of partial sources Лічери - Search engine - Пошуковик + Пошуковик - + Filter search results... Фільтрувати результати пошуку... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Результати (показано <i>%1</i> із <i>%2</i>): - + Torrent names only Лише назви торрентів - + Everywhere Всюди - + Use regular expressions Використовувати регулярні вирази - + Open download window Відкрити вікно завантаження - + Download Завантажити - + Open description page Відкрити сторінку опису - + Copy Копіювати - + Name Назва - + Download link Посилання для завантаження - + Description page URL Адреса сторінки з описом - + Searching... Шукаю... - + Search has finished Пошук закінчено - + Search aborted Пошук скасовано - + An error occurred during search... Під час пошуку сталася помилка... - + Search returned no results Пошук не дав результів - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Показані колонки - + Resize columns Змінити розмір стовпців - + Resize all non-hidden columns to the size of their contents Змінити розмір усіх не прихованих стовпців до розміру їх вмісту @@ -8960,104 +9442,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. Нова адреса пошукового додатка - + Plugin already at version %1, which is greater than %2 Плаґін уже має версію %1, що вище ніж %2 - + A more recent version of this plugin is already installed. Новіша версія цього пошукового додатка вже встановлена. - + Plugin %1 is not supported. Додаток %1 не підтримується. - - + + Plugin is not supported. Додаток не підтримується. - + Plugin %1 has been successfully updated. Додаток %1 успішно оновлено. - + All categories Всі категорії - + Movies Фільми - + TV shows Телешоу - + Music Музика - + Games Ігри - + Anime Аніме - + Software Програми - + Pictures Зображення - + Books Книги - + Update server is temporarily unavailable. %1 Сервер оновлень тимчасово недоступний. %1 - - + + Failed to download the plugin file. %1 Не вдалося завантажити файл додатка. %1 - + Plugin "%1" is outdated, updating to version %2 Плаґін "%1 " застарів, оновлення до версії %2 - + Incorrect update info received for %1 out of %2 plugins. Отримано неправильну інформацію про оновлення для %1 з %2 плаґінів. - + Search plugin '%1' contains invalid version string ('%2') Пошуковий додаток '%1' містить хибний рядок версії ('%2') @@ -9067,114 +9549,153 @@ Those plugins were disabled. - - - - Search Пошук - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Не встановлено жодного пошукового додатку. Клацніть кнопку "Шукати додатки..." справа знизу, щоб встановити їх. - + Search plugins... Пошукові додатки... - + A phrase to search for. Пошукова фраза. - + Spaces in a search term may be protected by double quotes. Пробіли в пошуковій фразі можна захистити прямими подвійними лапками - + Example: Search phrase example Наприклад: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: шукати <b>foo bar</b> - + All plugins Всі додатки - + Only enabled Лише увімкнені - + + + Invalid data format. + Хибний формат даних. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: пошук для <b>foo</b> і <b>bar</b> - + + Refresh + + + + Close tab Закрити вкладку - + Close all tabs Закрити усі вкладки - + Select... Вибрати... - - - + + Search Engine Пошуковик - + + Please install Python to use the Search Engine. Будь ласка, встановіть Python, щоб використовувати Пошуковик - + Empty search pattern Порожній шаблон пошуку - + Please type a search pattern first Будь ласка, спочатку введіть шаблон пошуку - + + Stop Зупинити - Search has finished - Пошук закінчено + Пошук закінчено - Search has failed - Пошук невдалий + Пошук невдалий + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: Відвантаження: - - - + + + - - - + + + KiB/s КіБ/с - - + + Download: Завантаження: - + Alternative speed limits Альтернативні обмеження швидкості @@ -9506,32 +10027,32 @@ Click the "Search plugins..." button at the bottom right of the window Середній час в черзі: - + Connected peers: Під'єднані піри: - + All-time share ratio: Коєфіцієнт відданого за весь час: - + All-time download: Завантажено за весь час: - + Session waste: Змарновано за сеанс: - + All-time upload: Відвантажено за весь час: - + Total buffer size: Загальний розмір буфера: @@ -9546,12 +10067,12 @@ Click the "Search plugins..." button at the bottom right of the window Завдання вводу/виводу в черзі: - + Write cache overload: Перевантаження кешу запису: - + Read cache overload: Перевантаження кешу зчитування: @@ -9570,51 +10091,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: Статус з'єднання: - - + + No direct connections. This may indicate network configuration problems. Немає прямих з'єднань. Це може означати, що є проблеми з налаштуванням мережі. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 вузлів - + qBittorrent needs to be restarted! Потрібно перезапустити qBittorrent! - - - + + + Connection Status: Статус з'єднання: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Не в мережі. Зазвичай це означає, що qBittorrent не може приймати вхідні з'єднання з вибраного порту. - + Online В мережі - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Клацніть, щоб перемкнутись на альтернативні обмеження швидкості - + Click to switch to regular speed limits Клацніть, щоб повернутись до звичайних обмежень швидкості @@ -9643,14 +10180,22 @@ Click the "Search plugins..." button at the bottom right of the window Завершені (0) - Resumed (0) - Відновлені (0) + Відновлені (0) - Paused (0) - Призупинені (0) + Призупинені (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) Завершені (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Призупинені (%1) + Призупинені (%1) @@ -9723,14 +10287,12 @@ Click the "Search plugins..." button at the bottom right of the window Переміщення (%1) - Resume torrents - Відновити завантаження + Відновити завантаження - Pause torrents - Призупинити завантаження + Призупинити завантаження @@ -9738,9 +10300,8 @@ Click the "Search plugins..." button at the bottom right of the window Вилучити торренти - Resumed (%1) - Відновлені (%1) + Відновлені (%1) @@ -9781,17 +10342,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags Мітки - + All Всі - + Untagged Без мітки @@ -9799,52 +10360,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... Додати мітку... - + Remove tag Вилучити мітку - + Remove unused tags Вилучити невикористовувані мітки - Resume torrents - Відновити торренти + Відновити торренти - Pause torrents - Призупинити торренти + Призупинити торренти - + Remove torrents Вилучити торренти - New Tag - Нова мітка + Нова мітка + + + + Start torrents + - + + Stop torrents + + + + Tag: Мітка: - + + Add tag + + + + Invalid tag name Некоректна назва мітки - + Tag name '%1' is invalid Назва мітки '%1' некоректна @@ -9984,32 +10557,32 @@ Please choose a different name and try again. TorrentContentModel - + Name Назва - + Progress Прогрес - + Download Priority Пріоритет - + Remaining Залишилось - + Availability Доступно - + Total Size Загальний розмір @@ -10054,102 +10627,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error Помилка перейменування - + Renaming Перейменування - + New name: Нова назва: - + Column visibility Видимість колонки - + Resize columns Змінити розмір стовпців - + Resize all non-hidden columns to the size of their contents Змінити розмір усіх не прихованих стовпців до розміру їх вмісту - + Open Відкрити - + Open containing folder Відкрити папку, що містить - + Rename... Перейменувати... - + Priority Пріоритет - - + + Do not download Не завантажувати - + Normal Нормальний - + High Високий - + Maximum Максимальний - + By shown file order За показаним порядком файлів - + Normal priority Звичайний пріоритет - + High priority Високий пріоритет - + Maximum priority Максимальний пріоритет - + Priority by shown file order Пріоритет за порядком файлів + + TorrentCreatorController + + + Too many active tasks + Забагато активних завдань + + + + Torrent creation is still unfinished. + Створення торрента ще не завершено. + + + + Torrent creation failed. + Не вдалося створити торрент. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Please choose a different name and try again. - + Select file Виберіть файл - + Select folder Виберіть теку @@ -10205,58 +10796,10 @@ Please choose a different name and try again. Розмір частини: - + Auto Автоматично - - 16 KiB - 16 КіБ - - - 32 KiB - 32 КіБ - - - 64 KiB - 64 КіБ - - - 128 KiB - 128 КіБ - - - 256 KiB - 256 КіБ - - - 512 KiB - 512 КіБ - - - 1 MiB - 1 МіБ - - - 2 MiB - 2 МіБ - - - 4 MiB - 4 МіБ - - - 8 MiB - 8 МіБ - - - 16 MiB - 16 МіБ - - - 32 MiB - 32 МіБ - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Please choose a different name and try again. Поля - + You can separate tracker tiers / groups with an empty line. Використовуйте порожні рядки для поділу рівнів / груп трекерів. - + Web seed URLs: Адреси веб-сідів: - + Tracker URLs: Адреси трекерів: - + Comments: Коментарі: - + Source: Джерело: - + Progress: Прогрес: - + Create Torrent Створити торрент - - + + Torrent creation failed Не вдалося створити торрент - + Reason: Path to file/folder is not readable. Причина: Шлях до файла або теки недоступний для читання. - + Select where to save the new torrent Виберіть, куди зберегти новий торрент - + Torrent Files (*.torrent) Torrent-файли (*.torrent) - - Reason: %1 - Причина: %1 - - - + Add torrent to transfer list failed. - + Не вдалося додати торрент до списку передачі. - + Reason: "%1" - + Причина: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Причина: Створений торрент некоректний. Його не буде додано до списку завантажень. + Не вдалося додати торрент - + Torrent creator Створення торрента - + Torrent created: Торрент створено: @@ -10396,32 +10930,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Не вдалося завантажити конфігурацію спостережуваних папок. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Не вдалося розібрати налаштування переглянутих папок з %1. Помилка: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Не вдалося завантажити налаштуваня спостережуваних папок з %1. Помилка: "Неправильний формат даних". - + Couldn't store Watched Folders configuration to %1. Error: %2 Не вдалося зберегти конфігурацію Спостережуваних тек у %1. Помилка: %2 - + Watched folder Path cannot be empty. Спостережувана тека не може бути порожньою. - + Watched folder Path cannot be relative. Шлях до Спостережуваної теки не може бути відносним @@ -10429,27 +10963,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Недійсний URI магніту. URI: %1. Причина: %2 - + Magnet file too big. File: %1 Magnet-файл занадто великий. Файл: %1 - + Failed to open magnet file: %1 Не вдалось відкрити magnet-посилання: %1 - + Rejecting failed torrent file: %1 Відхилення невдалого торрент-файлу: %1 - + Watching folder: "%1" Папка перегляду: "%1" @@ -10457,14 +10991,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Не вдалося виділити пам'ять при читанні файла. Файл: "%1". Помилка: "%2" + Не вдалося виділити пам'ять при читанні файла. Файл: "%1". Помилка: "%2" - Invalid metadata - Хибні метадані + Хибні метадані @@ -10495,127 +11027,203 @@ Please choose a different name and try again. Використовувати інший шлях для неповних торрентів - + Category: Категорія: - + + Torrent Share Limits + + + Torrent speed limits - Обмеження швидкості торрента + Обмеження швидкості торрента - + Download: Завантаження: - - + + - - + + Torrent Speed Limits + + + + + KiB/s КіБ/с - + These will not exceed the global limits Це не перевищить глобальні обмеження - + Upload: Відвантаження: - Torrent share limits - Обмеження роздачі торрента + Обмеження роздачі торрента - Use global share limit - Використовувати глобальні обмеження + Використовувати глобальні обмеження - Set no share limit - Встановити необмежену роздачу + Встановити необмежену роздачу - Set share limit to - Встановити обмеження роздачі + Встановити обмеження роздачі - ratio - коефіцієнт + коефіцієнт - total minutes - всього хвилин + всього хвилин - inactive minutes - хвилин неактивності + хвилин неактивності - + Disable DHT for this torrent Вимкнути DHT для цього торрента - + Download in sequential order Завантажувати послідовно - + Disable PeX for this torrent Вимкнути PeX для цього торрента - + Download first and last pieces first Завантажувати спочатку першу та останню частину - + Disable LSD for this torrent Вимкнути LSD для цього торрента - + Currently used categories Наразі задіяні категорії - - + + Choose save path Виберіть шлях збереження - + Not applicable to private torrents Не застосовується до приватних торрентів - No share limit method selected - Не вибраний метод обмеження роздачі + Не вибраний метод обмеження роздачі - Please select a limit method first - Будь ласка, виберіть метод обмеження + Будь ласка, виберіть метод обмеження + + + + TorrentShareLimitsWidget + + + + + + Default + Типово + + + + + + Unlimited + Без обмежень + + + + + + Set to + Встановити на + + + + Seeding time: + Час роздачі: + + + + + + + + + min + minutes + хв + + + + Inactive seeding time: + Неактивний час роздачі: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Видалити торрент + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Увімкнути режим супер-сід для торрента + + + + Ratio: + Співвідношення: @@ -10626,32 +11234,36 @@ Please choose a different name and try again. Торрент теги - New Tag - Нова мітка + Нова мітка + Add tag + + + + Tag: Мітка: - + Invalid tag name Некоректна назва мітки - + Tag name '%1' is invalid. Назва мітки '%1' некоректна - + Tag exists Мітка існує - + Tag name already exists. Мітка під такою назвою вже існує. @@ -10659,115 +11271,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. Помилка: '%1' не є коректним torrent-файлом. - + Priority must be an integer Пріоритет повинен бути цілим числом - + Priority is not valid Некоректний пріоритет - + Torrent's metadata has not yet downloaded Метадані торрента ще не завантажені - + File IDs must be integers Ідентифікатори файлів повинні бути цілими числами - + File ID is not valid Некоректний ідентифікатор файла - - - - + + + + Torrent queueing must be enabled Черга торрентів повинна бути увімкнена - - + + Save path cannot be empty Шлях збереження не може бути порожнім - - + + Cannot create target directory Не вдається створити цільовий каталог - - + + Category cannot be empty Категорія не може бути порожньою - + Unable to create category Не вдалося створити категорію - + Unable to edit category Не вдалося редагувати категорію - + Unable to export torrent file. Error: %1 Не вдалося експортувати торрент-файл. Помилка: "%1" - + Cannot make save path Не вдалося створити шлях збереження - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid хибно вказаний параметр "sort" - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" не є коректним індексом файлу. - + Index %1 is out of bounds. Індекс %1 виходить за межі. - - + + Cannot write to directory Не вдалося записати до каталогу - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI Задати розташування: переміщення "%1" з "%2" на "%3" - + Incorrect torrent name Хибна назва торрента - - + + Incorrect category name Некоректна назва категорії @@ -10798,257 +11425,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - Працює + Працює - + Disabled - Вимкнено + Вимкнено - + Disabled for this torrent - Відключити для цього торрента + Відключити для цього торрента - + This torrent is private - Цей торрент приватний + Цей торрент приватний - + N/A - + - + Updating... - Оновлюю... + Оновлюється... - + Not working - Не працює + Не працює - + Tracker error - + Помилка трекера - + Unreachable - + Недосяжний - + Not contacted yet - Ще не зв'язувався + Ще не зв'язувався - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - Ранг + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + Недійсний статус! + + + URL/Announce endpoint + URL/Оголошення кінцевої точки + Tier + Ранг + + Protocol - + Протокол - + Status - Статус + Статус - + Peers - Піри + Піри - + Seeds - Сіди + Сіди - + Leeches - Лічери + Лічери - + Times Downloaded - Разів Завантажено + Разів Завантажено - + Message - Повідомлення + Повідомлення - Next announce - + Наступний анонс - Min announce - + Мін анонсувати - v%1 - + v%1 TrackerListWidget - Working - Працює - - - Disabled - Вимкнено - - - Disabled for this torrent - Відключити для цього торрента - - - + This torrent is private Цей торрент приватний - Updating... - Оновлюю... - - - Not working - Не працює - - - Not contacted yet - Ще не зв'язувався - - - N/A - - - - + Tracker editing Редагування трекера - + Tracker URL: Адреса трекера: - - + + Tracker editing failed Не вдалось відредагувати трекер - + The tracker URL entered is invalid. Введено некоректну адресу трекера. - + The tracker URL already exists. Така адреса трекера вже існує. - + Edit tracker URL... Редагувати адресу трекера... - + Remove tracker Вилучити трекер - + Copy tracker URL Копіювати адресу трекера - + Force reannounce to selected trackers Примусово отримати пірів із вибраних трекерів - + Force reannounce to all trackers Примусово отримати піри з усіх трекерів - Tier - Ранг - - - URL - Адреса - - - Status - Статус - - - Seeds - Сіди - - - Times Downloaded - Разів Завантажено - - - + Resize columns Змінити розмір стовпців - + Resize all non-hidden columns to the size of their contents Змінити розмір усіх не прихованих стовпців до розміру їх вмісту - Peers - Піри - - - + Add trackers... Додати трекери... - Leeches - Лічери - - - Message - Повідомлення - - - + Column visibility Показані колонки @@ -11066,37 +11651,37 @@ Please choose a different name and try again. Список трекерів, які ви хочете додати (один на рядок): - + µTorrent compatible list URL: Адреса списку, сумісного з µTorrent: - + Download trackers list Завантажте список трекерів - + Add Додати - + Trackers list URL error Помилка URL-адреси списку трекерів - + The trackers list URL cannot be empty URL-адреса списку трекерів не може бути пустою - + Download trackers list error Помилка списку трекерів завантаження - + Error occurred when downloading the trackers list. Reason: "%1" Під час завантаження списку трекерів сталася помилка. Причина: "%1" @@ -11104,87 +11689,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - Всі (0) - - - Trackerless (0) - Без трекерів (0) - - - Error (0) - Помилка (0) - - - Warning (0) - Попередження (0) - - - Trackerless - Без трекера - - - Error (%1) - Помилка (%1) - - - + Warning (%1) Попередження (%1) - + Trackerless (%1) Без трекерів (%1) - + Tracker error (%1) - + Помилка трекера (%1) - + Other error (%1) - + Інша помилка (%1) - + Remove tracker - Вилучити трекер + Вилучити трекер + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Відновити торренти + Відновити торренти - Pause torrents - Призупинити завантаження + Призупинити завантаження - + Remove torrents Вилучити торренти - + Removal confirmation - + Підтвердження видалення - + Are you sure you want to remove tracker "%1" from all torrents? - + Ви впевнені, що хочете видалити трекер "%1" з усіх торрентів? - + Don't ask me again. - + Більше не питай мене. - + All (%1) this is for the tracker filter Всі (%1) @@ -11193,7 +11761,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'режим': недійсний аргумент @@ -11286,9 +11854,8 @@ Please choose a different name and try again. Перевірка даних відновлення - Paused - Призупинений + Призупинений @@ -11313,220 +11880,262 @@ Please choose a different name and try again. З помилкою - + Name i.e: torrent name Назва - + Size i.e: torrent size Розмір - + Progress % Done Прогрес - Status Torrent status (e.g. downloading, seeding, paused) - Статус + Статус - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Статус + + + Seeds i.e. full sources (often untranslated) Сіди - + Peers i.e. partial sources (often untranslated) Піри - + Down Speed i.e: Download speed Шв. завант. - + Up Speed i.e: Upload speed Шв. відвант. - + Ratio Share ratio Коеф. - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Залишилось - + Category Категорія - + Tags Мітки - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Додано - + Completed On Torrent was completed on 01/01/2010 08:00 Завершено - + Tracker Трекер - + Down Limit i.e: Download limit Обмеження завантаження - + Up Limit i.e: Upload limit Обмеження відвантаження - + Downloaded Amount of data downloaded (e.g. in MB) Завантажено - + Uploaded Amount of data uploaded (e.g. in MB) Відвантажено - + Session Download Amount of data downloaded since program open (e.g. in MB) Завантажено за сеанс - + Session Upload Amount of data uploaded since program open (e.g. in MB) Відвантажено за сеанс - + Remaining Amount of data left to download (e.g. in MB) Залишилось - + + Time Active + Time (duration) the torrent is active (not stopped) + Активний протягом + + + + Yes + Так + + + + No + Ні + + Time Active Time (duration) the torrent is active (not paused) - Активний протягом + Активний протягом - + Save Path Torrent save path Шлях збереження - + Incomplete Save Path Torrent incomplete save path Неповний шлях збереження - + Completed Amount of data completed (e.g. in MB) Завершені - + Ratio Limit Upload share ratio limit Обмеження коефіцієнта - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Востаннє завершений - + Last Activity Time passed since a chunk was downloaded/uploaded Востаннє активний - + Total Size i.e. Size including unwanted data Загальний розмір - + Availability The number of distributed copies of the torrent Доступно - + Info Hash v1 i.e: torrent info hash v1 Хеш інформації v1 - + Info Hash v2 i.e: torrent info hash v2 Хеш інформації v2 - + Reannounce In Indicates the time until next trackers reannounce + Повторно оголосити в + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A - + %1 ago e.g.: 1h 20m ago %1 тому - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (роздається %2) @@ -11535,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility Показані колонки - + Recheck confirmation Підтвердження повторної перевірки - + Are you sure you want to recheck the selected torrent(s)? Ви впевнені, що хочете повторно перевірити вибрані торрент(и)? - + Rename Перейменувати - + New name: Нова назва: - + Choose save path Виберіть шлях збереження - Confirm pause - Підтвердити паузу + Підтвердити паузу - Would you like to pause all torrents? - Хочете призупинити всі торренти? + Хочете призупинити всі торренти? - Confirm resume - Підтвердити відновити + Підтвердити відновити - Would you like to resume all torrents? - Бажаєте відновити всі торренти? + Бажаєте відновити всі торренти? - + Unable to preview Попередній перегляд не вдався - + The selected torrent "%1" does not contain previewable files Обраний торрент "%1" не містить файлів для попереднього перегляду - + Resize columns Змінити розмір стовпців - + Resize all non-hidden columns to the size of their contents Змінити розмір усіх не прихованих стовпців до розміру їх вмісту - + Enable automatic torrent management Увімкнути автоматичне керування торрентами - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Ви впевнені, що хочете увімкнути Автоматичне Керування Торрентами для вибраних торрент(ів)? Вони можуть бути переміщенні. - Add Tags - Додати мітки + Додати мітки - + Choose folder to save exported .torrent files Виберіть теку для збереження експортованих .torrent файлів - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Експорт .torrent файла не вдалий. Торрент: "%1". Шлях збереження: "%2". Причина: "%3" - + A file with the same name already exists Файл з такою назвою вже існує - + Export .torrent file error Помилка експорта .torrent файла - + Remove All Tags Вилучити всі мітки - + Remove all tags from selected torrents? Вилучити всі мітки із вибраних торрентів? - + Comma-separated tags: Мітки, розділені комами: - + Invalid tag Некоректна мітка - + Tag name: '%1' is invalid Назва мітки: '%1' некоректна - &Resume Resume/start the torrent - &Відновити + &Відновити - &Pause Pause the torrent - &Призупинити + &Призупинити - Force Resu&me Force Resume/start the torrent - Примусово Продо&вжити + Примусово Продо&вжити - + Pre&view file... Пере&глянути файл... - + Torrent &options... Налаштування &торрента... - + Open destination &folder Відкрити &теку призначення - + Move &up i.e. move up in the queue Посунути &вперед - + Move &down i.e. Move down in the queue Посунути &назад - + Move to &top i.e. Move to top of the queue Перемістити на &початок - + Move to &bottom i.e. Move to bottom of the queue Перемістити в &кінець - + Set loc&ation... Змінити розта&шування... - + Force rec&heck Примусова перев&ірка - + Force r&eannounce Примусове п&овторне анонсування - + &Magnet link &Magnet-посилання - + Torrent &ID &ID торрента - + + &Comment + &Коментар + + + &Name &Назва - + Info &hash v1 Інформаційний &хеш версія 1 - + Info h&ash v2 Інформаційний х&еш версія 2 - + Re&name... Пере&йменувати... - + Edit trac&kers... Редагувати тре&кери... - + E&xport .torrent... Е&кспортувати .torrent... - + Categor&y Категорі&я - + &New... New category... &Нова... - + &Reset Reset category &Збросити - + Ta&gs Те&ги - + &Add... Add / assign multiple tags... &Додати... - + &Remove All Remove all tags &Вилучити Всі - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue &Черга - + &Copy &Копіювати - + Exported torrent is not necessarily the same as the imported Експортований торрент не обов’язково збігається з імпортованим - + Download in sequential order Завантажувати послідовно - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Під час експорту файлів .torrent виникли помилки. Подробиці перевірте в журналі виконання. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent &Вилучити - + Download first and last pieces first Спочатку завантажувати першу і останню частину - + Automatic Torrent Management Автоматичне керування торрентами - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Автоматичний режим означає, що різні властивості торрента (наприклад, шлях збереження) визначатимуться відповідною категорією - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Неможливо примусово оголосити повторно, якщо торрент Призупинено/Поставлено в чергу/З помилкою/Перевіряється + Неможливо примусово оголосити повторно, якщо торрент Призупинено/Поставлено в чергу/З помилкою/Перевіряється - + Super seeding mode Режим супер-сідування @@ -11907,28 +12540,28 @@ Please choose a different name and try again. Ідентифікатор значка - + UI Theme Configuration. Конфігурація теми інтерфейсу користувача - + The UI Theme changes could not be fully applied. The details can be found in the Log. Зміни теми інтерфейсу користувача не вдалося застосувати повністю. Подробиці можна знайти в журналі. - + Couldn't save UI Theme configuration. Reason: %1 Не вдалося зберегти конфігурацію теми інтерфейсу користувача. Причина: %1 - - + + Couldn't remove icon file. File: %1. Не вдалося видалити файл значка. Файл: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. Не вдалося скопіювати файл значка. Джерело: %1. Призначення: %2. @@ -11936,7 +12569,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" Не вдалося завантажити тему інтерфейсу з файлу: "%1" @@ -11967,89 +12605,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Не вдалося перенести налаштування: Веб-інтерфейс https, файл: "%1", помилка: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Перенесені налаштування: Веб-інтерфейс https, експортовано дані у файл: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". У файлі конфігурації знайдено недійсне значення, повертаємо його до значення за замовчуванням. Ключ: "%1". Недійсне значення: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Python виявлено, виконуваний файл: '%1', версія: %2 - - - Python not detected - Python не виявлено - Found Python executable. Name: "%1". Version: "%2" - + Знайдено виконуваний файл Python. Ім'я: "%1". Версія: "%2" Failed to find Python executable. Path: "%1". - + Не вдалося знайти виконуваний файл Python. Шлях: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Не вдалося знайти виконуваний файл `python3` у змінній середовища PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Не вдалося знайти виконуваний файл `python` у змінній середовища PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Не вдалося знайти виконуваний файл `python` у реєстрі Windows. Failed to find Python executable - + Не вдалося знайти виконуваний файл Python Utils::IO - + File open error. File: "%1". Error: "%2" Помилка відкриття файлу. Файл: "%1". Помилка: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 Розмір файлу перевищує ліміт. Файл: "%1". Розмір файлу: %2. Обмеження розміру: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Розмір файлу перевищує ліміт обсягу даних. Файл: "%1". Розмір файлу: %2. Ліміт масиву: %3 - + File read error. File: "%1". Error: "%2" Помилка читання файлу. Файл: "%1". Помилка: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 Невідповідність розміру файлу. Файл: "%1". Очікуваний: %2. Фактичний: %3 @@ -12113,72 +12744,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Вказано неприйнятне ім’я cookie сеансу: «%1». Використовується стандартний. - + Unacceptable file type, only regular file is allowed. Неприпустимий тип файлу, дозволені лише звичайні файли. - + Symlinks inside alternative UI folder are forbidden. Символічні посилання всередині теки альтернативного інтерфейсу заборонені. - - Using built-in Web UI. - Використовується вбудований веб-інтерфейс. + + Using built-in WebUI. + Використовуючи вбудований WebUI. - - Using custom Web UI. Location: "%1". - Для веб-інтерфейсу використовується власна тема. Розташування: "%1". + + Using custom WebUI. Location: "%1". + Використання кастомного WebUI. Місцезнаходження: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Переклад веб-інтерфейсу для обраної мови (%1) успішно довантажено. + + WebUI translation for selected locale (%1) has been successfully loaded. + Переклад WebUI для вибраної локалі (%1) успішно завантажено. - - Couldn't load Web UI translation for selected locale (%1). - Не вдалось довантажити переклад веб-інтерфейсу для обраної мови (%1). + + Couldn't load WebUI translation for selected locale (%1). + Не вдалося завантажити переклад WebUI для вибраної локалі (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Відсутній роздільник ":" у спеціальному HTTP-заголовку Веб-інтерфейсу: "%1" - + Web server error. %1 Помилка веб-сервера. %1 - + Web server error. Unknown error. Помилка веб-сервера. Невідома помилка. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Веб-інтерфейс: заголовок напрямку переходу не співпадає з цільовою адресою! IP джерела: «%1». Заголовок напрямку переходу: «%2». Цільова адреса: «%3» - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Веб-інтерфейс: заголовок джерела не співпадають з цільовою адресою! IP джерела: «%1». Заголовок джерела: «%2». Цільова адреса: «%3» - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Веб-інтерфейс: неправильний заголовок хоста. IP джерела запиту: «%1». Порт серверу: «%2». Отриманий заголовок хоста: «%3» - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Веб-інтерфейс: неправильний заголовок хоста. IP джерела запиту: '%1'. Отриманий заголовок хоста: '%2' @@ -12186,143 +12817,328 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI: HTTPS налаштування успішне + + Credentials are not set + Облікові дані не задано - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: не вдалося налаштувати HTTPS, повернення до HTTP + + WebUI: HTTPS setup successful + WebUI: Налаштування HTTPS виконано успішно - - Web UI: Now listening on IP: %1, port: %2 - Веб-інтерфейс: відтепер очікує з'єднань до IP %1 на порті %2 + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: Не вдалося налаштувати HTTPS, поверніться до HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Веб-інтерфейс: Не вдалося зайняти IP: %1, порт: %2. Причина: %3 + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Зараз слухаємо на IP: %1, порт: %2 + + + + Unable to bind to IP: %1, port: %2. Reason: %3 + Не вдалося прив'язатися до IP: %1, порт: %2. Причина: %3 + + + + fs + + + Unknown error + Невідома помилка misc - + B bytes Б - + KiB kibibytes (1024 bytes) КіБ - + MiB mebibytes (1024 kibibytes) МіБ - + GiB gibibytes (1024 mibibytes) ГіБ - + TiB tebibytes (1024 gibibytes) ТіБ - + PiB pebibytes (1024 tebibytes) ПіБ - + EiB exbibytes (1024 pebibytes) ЕіБ - + /s per second - + %1s e.g: 10 seconds - %1хв {1s?} - - - + %1s +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + + + %1m e.g: 10 minutes - %1хв + %1хв - + %1h %2m e.g: 3 hours 5 minutes - %1г %2хв + %1г %2хв - + %1d %2h e.g: 2 days 10 hours - %1д %2г + %1д %2г - + %1y %2d e.g: 2 years 10 days - %1р %2д + %1y %2d - %1h %2m - e.g: 3hours 5minutes - %1г %2хв - - - %1d %2h - e.g: 2days 10hours - %1д %2г - - - %1y %2d - e.g: 2years 10days - %1р %2д - - - - + + Unknown Unknown (size) Невідомо - + qBittorrent will shutdown the computer now because all downloads are complete. Зараз qBittorrent вимкне комп'ютер, бо всі завантаження завершено. - + < 1m < 1 minute < 1хв - - %1m - e.g: 10minutes - %1хв - diff --git a/src/lang/qbittorrent_uz@Latn.ts b/src/lang/qbittorrent_uz@Latn.ts index 1fb3fc1da3c0..af26decce193 100644 --- a/src/lang/qbittorrent_uz@Latn.ts +++ b/src/lang/qbittorrent_uz@Latn.ts @@ -7,105 +7,110 @@ qBittorrent haqida - + About Haqida - + Authors - + Mualliflar - + Current maintainer - Joriy tarjimon + Joriy ta'minotchi - + Greece Gretsiya - - + + Nationality: Millati: - - + + E-mail: E-mail: - - + + Name: Nomi: - + Original author - Asl muallifi: + Asl muallif - + France Fransiya - + Special Thanks Alohida minnatdorchilik - + Translators Tarjimonlar - + License Litsenziya - + Software Used - Foydalanilgan dasturlar + Foydalanilgan dasturiy ta'minot - + qBittorrent was built with the following libraries: - qBittorrent quyidagi kutubxonalar asosida ishlab chiqilgan: + qBittorrent quyidagi kutubxonalar bilan ishlab chiqilgan: + + + + Copy to clipboard + Buferga nusxalash - + An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. C++ tilida Qt tulkit va libtorrent-rasterbar kutubxonalari asosida ishlab chiqilgan kengaytirilgan BitTorrent mijoz dasturi. - - Copyright %1 2006-2023 The qBittorrent project - + + Copyright %1 2006-2024 The qBittorrent project + Mualliflik huquqi %1 2006-2024 qBittorrent loyihasi - + Home Page: - Bosh sahifa: + Uy sahifasi: - + Forum: Forum: - + Bug Tracker: - Xatolar trekeri: + Xato kuzatuvchisi: - + The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License @@ -159,7 +164,7 @@ Saqlash joyi - + Never show again Boshqa ko‘rsatilmasin @@ -184,12 +189,12 @@ Torrentni boshlash - + Torrent information Torrent axboroti - + Skip hash check Shifr tekshirilmasin @@ -216,7 +221,7 @@ ... - + ... @@ -224,70 +229,75 @@ - - + + None - - + + Metadata received - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked - + Add to top of queue - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog - + Content layout: Kontent maketi: - + Original Asli - + Create subfolder Quyi jild yaratish - + Don't create subfolder Quyi jild yaratilmasin - + Info hash v1: - + Size: Hajmi: - + Comment: Sharh: - + Date: Sana: @@ -304,7 +314,7 @@ Manual - Mustaqil + Qo'llanma @@ -317,233 +327,182 @@ - + Do not delete .torrent file - + Download in sequential order - + Download first and last pieces first - + Info hash v2: - + Select All - + Select None - + Save as .torrent file... - + I/O Error I/O xatosi - - - Invalid torrent - Torrent fayli yaroqsiz - - - + Not Available This comment is unavailable Mavjud emas - + Not Available This date is unavailable Mavjud emas - + Not available Mavjud emas - - Invalid magnet link - Magnet havolasi yaroqsiz - - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - - - - - This magnet link was not recognized - Bu magnet havolasi noma’lum formatda - - - + Magnet link Magnet havola - + Retrieving metadata... Tavsif ma’lumotlari olinmoqda... - - + + Choose save path Saqlash yo‘lagini tanlang - - - - - - - Torrent is already present - - - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - - - - - Torrent is already queued for processing. - - - - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - - - - + + N/A Noaniq - - Magnet link is already queued for processing. - - - - + %1 (Free space on disk: %2) %1 (Diskdagi boʻsh joy: %2) - + Not available This size is unavailable. Mavjud emas - + Torrent file (*%1) - + Save as torrent file Torrent fayl sifatida saqlash - + Couldn't export torrent metadata file '%1'. Reason: %2. - + Cannot create v2 torrent until its data is fully downloaded. - - Cannot download '%1': %2 - "%1" yuklab olinmadi: %2 - - - + Filter files... - - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. + + Parsing metadata... + Tavsif ma’lumotlari ochilmoqda... + + + + Metadata retrieval complete + Tavsif ma’lumotlari olindi + + + + AddTorrentManager + + + Downloading torrent... Source: "%1" - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + + Failed to add torrent. Source: "%1". Reason: "%2" - - Parsing metadata... - Tavsif ma’lumotlari ochilmoqda... + + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 + - - Metadata retrieval complete - Tavsif ma’lumotlari olindi + + Merging of trackers is disabled + - - Failed to load from URL: %1. -Error: %2 - URL orqali yuklanmadi: %1. -Xato: %2 + + Trackers cannot be merged because it is a private torrent + - - Download Error - Yuklab olish xatoligi + + Trackers are merged from new source + @@ -601,7 +560,7 @@ Xato: %2 ... - + ... @@ -629,72 +588,77 @@ Xato: %2 Shifr tekshirilmasin - - - Choose save path - Saqlash yo‘lagini tanlang + + Torrent share limits + - - - - - - - Default - + + + Choose save path + Saqlash yo‘lagini tanlang + + + - Yes - Ha + Default + + Yes + Ha + + + + + No Yo‘q - + Manual Mustaqil - + Automatic Avtomatik - + Original Asli - + Create subfolder Quyi jild yaratish - + Don't create subfolder Quyi jild yaratilmasin - + None - + Metadata received - + Files checked @@ -702,597 +666,642 @@ Xato: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Torrentlar tugallanganidan so‘ng yana bir bor tekshirilsin - - + + ms milliseconds ms - + Setting Sozlama - + Value Value set for this setting Qiymat - + (disabled) (faolsizlantirilgan) - + (auto) (avtomatik) - + min minutes daq - + All addresses Barcha manzillar - + qBittorrent Section - - + + Open documentation Qoʻllanmani ochish - + All IPv4 addresses Barcha IPv4 manzillar - + All IPv6 addresses Barcha IPv6 manzillar - + libtorrent Section - + Fastresume files - + SQLite database (experimental) - + Resume data storage type (requires restart) - + Normal Normal - + Below normal - + Medium - + Low - + Very low - - Process memory priority (Windows >= 8 only) - - - - + Physical memory (RAM) usage limit - + Asynchronous I/O threads - + Hashing threads - + File pool size - + Outstanding memory when checking torrents - + Disk cache - - - - + + + + s seconds s - + Disk cache expiry interval Disk keshining saqlanish muddati - + Disk queue size - - + + Enable OS cache OT keshi ishga tushirilsin - + Coalesce reads & writes - + Use piece extent affinity - + Send upload piece suggestions - - - - + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer - - - - - + + + + + KiB KiB - + (infinite) - + (system default) - + This option is less effective on Linux - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default - + Memory mapped files - + POSIX-compliant - + Disk IO type (requires restart) - - + + Disable OS cache - + Disk IO read mode - + Write-through - + Disk IO write mode - + Send buffer watermark - + Send buffer low watermark - + Send buffer watermark factor - + Outgoing connections per second - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size - + .torrent file size limit - + Type of service (ToS) for connections to peers - + Prefer TCP - + Peer proportional (throttles TCP) - + Support internationalized domain name (IDN) - + Allow multiple connections from the same IP address - + Validate HTTPS tracker certificates - + Server-side request forgery (SSRF) mitigation - + Disallow connection to peers on privileged ports - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates - + Refresh interval - + Resolve peer host names Pir xost nomlarini tahlillash - + IP address reported to trackers (requires restart) - + Reannounce to all trackers when IP or port changed - + Enable icons in menus - + Enable port forwarding for embedded tracker - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + (Auto detect if empty) + + + + + Python executable path (may require restart) + + + + + Confirm removal of tracker from all torrents + + + + Peer turnover disconnect percentage - + Peer turnover threshold percentage - + Peer turnover disconnect interval - + + Resets to default if empty + + + + + DHT bootstrap nodes + + + + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications - + Display notifications for added torrents - + Download tracker's favicon - + Save path history length - + Enable speed graphs - + Fixed slots - + Upload rate based - + Upload slots behavior - + Round-robin - + Fastest upload - + Anti-leech - + Upload choking algorithm - + Confirm torrent recheck Torrent qayta tekshirilishi tasdiqlansin - + Confirm removal of all tags - + Always announce to all trackers in a tier - + Always announce to all tiers - + Any interface i.e. Any network interface Har qanday interfeys - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm - + Resolve peer countries - + Network interface - + Optional IP address to bind to - + Max concurrent HTTP announces - + Enable embedded tracker Ichki o‘rnatilgan treker ishga tushirilsin - + Embedded tracker port Ichki o‘rnatilgan treker porti @@ -1300,96 +1309,120 @@ Xato: %2 Application - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 boshlandi - - - + Running in portable mode. Auto detected profile folder at: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. - + Using config directory: %1 - + Torrent name: %1 - + Torrent size: %1 - + Save path: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds - + Thank you for using qBittorrent. - + Torrent: %1, sending mail notification - + + Add torrent failed + + + + + Couldn't add torrent '%1', reason: %2. + + + + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. + + + + Running external program. Torrent: "%1". Command: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading - + WebUI will be started shortly after internal preparations. Please wait... - - + + Loading torrents... - + E&xit &Chiqish - + I/O Error i.e: Input/Output Error I/O xatosi - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1398,120 +1431,100 @@ Xato: %2 Sababi: %2 - - Error - Xato - - - - Failed to add torrent: %1 - Ushbu torrentni qo‘shib bo‘lmadi: %1 - - - + Torrent added - + '%1' was added. e.g: xxx.avi was added. - + Download completed - + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + + + + '%1' has finished downloading. e.g: xxx.avi has finished downloading. “%1” yuklab olishni tamomladi. - - URL download error - URL manzilini yuklab olish xatoligi - - - - Couldn't download file at URL '%1', reason: %2. - “%1” manzilidagi faylni yuklab olib bo‘lmadi, sababi: %2. - - - - Torrent file association - Torrent faylini biriktirish + + Information + Ma’lumot - - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? + + To fix the error, you may need to edit the config file manually. - - Information - Ma’lumot - - - + To control qBittorrent, access the WebUI at: %1 - - The Web UI administrator username is: %1 + + Exit - - The Web UI administrator password has not been changed from the default: %1 - + + Recursive download confirmation + Navbatma-navbat yuklab olishni tasdiqlash - - This is a security risk, please change your password in program preferences. + + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - Application failed to start. - + + Never + Hech qachon - - Exit + + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated - + qBittorrent is shutting down... - + Saving torrent progress... Torrent rivoji saqlanmoqda... - + qBittorrent is now ready to exit @@ -1519,7 +1532,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. @@ -1527,22 +1540,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 - + Your IP address has been banned after too many failed authentication attempts. - + WebAPI login success. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 @@ -1647,263 +1660,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Eksport qilish... - + Matches articles based on episode filter. Qism filtriga asoslangan maqolalar mosligini aniqlaydi. - + Example: Misol: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match birinchi faslning 2, 5, 8-15, 30 va undan keyingi qismlariga mos keladi - + Episode filter rules: Qism filtri qoidalari: - + Season number is a mandatory non-zero value Fasl raqamiga nol bo‘lmagan qiymat kiritish shart - + Filter must end with semicolon Filtr oxirida nuqta-vergul qo‘yilishi shart - + Three range types for episodes are supported: Qismlar uchun uch xildagi miqyos qo‘llanadi: - + Single number: <b>1x25;</b> matches episode 25 of season one Bitta son: <b>1x25;</b> birinchi faslning 25-qismiga mos keladi - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Normal miqyos <b>1x25-40;</b> birinchi faslning 25-40 qismlariga mos keladi - + Episode number is a mandatory positive value - + Rules - + Rules (legacy) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons - + Last Match: %1 days ago Oxirgi marta %1 kun oldin mos kelgan - + Last Match: Unknown Oxirgi mos kelish sanasi noma’lum - + New rule name Yangi qoida nomi - + Please type the name of the new download rule. Yangi yuklab olish qoidasi uchun nom kiriting - - + + Rule name conflict Qoida nomida ziddiyat - - + + A rule with this name already exists, please choose another name. Bu nomdagi qoida oldindan mavjud, boshqa kiriting. - + Are you sure you want to remove the download rule named '%1'? Haqiqatan ham “%1” nomli yuklab olish qoidasini o‘chirib tashlamoqchimisiz? - + Are you sure you want to remove the selected download rules? Haqiqatan ham tanlangan yuklab olish qoidalarini o‘chirib tashlamoqchimisiz? - + Rule deletion confirmation Qoidani o‘chirib tashlashni tasdiqlash - + Invalid action Amal noto‘g‘ri - + The list is empty, there is nothing to export. Ro‘yxat bo‘m-bo‘sh, eksport qilinadigan narsa yo‘q. - + Export RSS rules - + I/O Error I/O xatosi - + Failed to create the destination file. Reason: %1 - + Import RSS rules - + Failed to import the selected rules file. Reason: %1 - + Add new rule... Yangi qoida qo‘shish... - + Delete rule Qoidani o‘chirib tashlash - + Rename rule... Qoida nomini o‘zgartirish... - + Delete selected rules Tanlangan qoidalarni o‘chirib tashlash - + Clear downloaded episodes... - + Rule renaming Qoida ismini o‘zgartirish - + Please type the new rule name Yangi qoida nomini kiriting - + Clear downloaded episodes - + Are you sure you want to clear the list of downloaded episodes for the selected rule? - + Regex mode: use Perl-compatible regular expressions - - + + Position %1: %2 - + Wildcard mode: you can use - - + + Import error - + Failed to read the file. %1 - + ? to match any single character - + * to match zero or more of any characters - + Whitespaces count as AND operators (all words, any order) - + | is used as OR operator - + If word order is important use * instead of whitespace. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) - + will match all articles. - + will exclude all articles. @@ -1945,53 +1958,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" - + Cannot parse resume data: invalid format - - + + Cannot parse torrent info: %1 - + Cannot parse torrent info: invalid format - - Couldn't save torrent metadata to '%1'. Error: %2. + + Mismatching info-hash detected in resume data + Couldn't save torrent metadata to '%1'. Error: %2. + + + + Couldn't save torrent resume data to '%1'. Error: %2. - + Couldn't load torrents queue: %1 - + Cannot parse resume data: %1 - + Resume data is invalid: neither metadata nor info-hash was found - + Couldn't save data to '%1'. Error: %2 @@ -1999,38 +2017,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. - + Couldn't load resume data of torrent '%1'. Error: %2 - - + + Database is corrupted. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2038,22 +2056,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 - + Couldn't store torrents queue positions. Error: %1 @@ -2061,514 +2079,479 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 - + Restart is required to toggle Peer Exchange (PeX) support - + Failed to resume torrent. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" - + HTTP User-Agent: "%1" - + Peer Exchange (PeX) support: %1 - - + + Anonymous mode: %1 - - + + Encryption support: %1 - - + + FORCED - + Could not find GUID of network interface. Interface: "%1" - + Trying to listen on the following list of IP addresses: "%1" - + Torrent reached the share ratio limit. - - - + + + Torrent: "%1". - - - + + + Removed torrent. - - - + + + Removed torrent and deleted its content. - - - + + + Torrent paused. - - - + + + Super seeding enabled. - + Torrent reached the seeding time limit. - + Torrent reached the inactive seeding time limit. - - + Failed to load torrent. Reason: "%1" - - Downloading torrent, please wait... Source: "%1" - - - - - Failed to load torrent. Source: "%1". Reason: "%2" - - - - - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - - - - - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - - - - - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 + + I2P error. Message: "%1". - + UPnP/NAT-PMP support: ON - + UPnP/NAT-PMP support: OFF - + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - + Aborted saving resume data. Number of outstanding torrents: %1 - - System network status changed to %1 - e.g: System network status changed to ONLINE - Tizim tarmog‘i holati “%1”ga o‘zgardi - - - - ONLINE - ONLAYN - - - - OFFLINE - OFLAYN - - - - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 tarmoq sozlamasi o‘zgardi, seans bog‘lamasi yangilanmoqda - - - + The configured network address is invalid. Address: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" - + The configured network interface is invalid. Interface: "%1" - + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" - + Torrent paused. Torrent: "%1" - + Torrent resumed. Torrent: "%1" - + Torrent download finished. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" - - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - - - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - - - - + Successfully parsed the IP filter file. Number of rules applied: %1 - + Failed to parse the IP filter file - + Restored torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" - - + + Removed torrent. Torrent: "%1" - + Removed torrent and deleted its content. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" - + IP filter this peer was blocked. Reason: IP filter. - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + BitTorrent session encountered a serious error. Reason: "%1" + + + + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - + Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. - + %1 is disabled this peer was blocked. Reason: TCP is disabled. - + URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - + Detected external IP. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreationTask + + + Failed to start seeding. + + + + + BitTorrent::TorrentCreator - + Operation aborted - - + + Create new torrent file failed. Reason: %1. @@ -2576,62 +2559,67 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - + Peer "%1" is added to torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. - + Download first and last piece first: %1, torrent: '%2' - + On - + Off - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" - + Missing metadata - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" - + Performance alert: %1. More info: %2 @@ -2639,12 +2627,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::Tracker - + Embedded Tracker: Now listening on IP: %1, port: %2 - + Embedded Tracker: Unable to bind to IP: %1, port: %2. Reason: %3 @@ -2652,184 +2640,189 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - + Expected integer number in environment variable '%1', but got '%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - + Expected %1 in environment variable '%2', but got '%3' - - + + %1 must specify a valid port (1 to 65535). - + Usage: - + [options] [(<filename> | <url>)...] - + Options: - + Display program version and exit - + Display this help message and exit - - + + Confirm the legal notice + + + + + port - - Change the Web UI port + + Change the WebUI port - + Change the torrenting port - + Disable splash screen - + Run in daemon-mode (background) - + dir Use appropriate short form or abbreviation of "directory" - + Store configuration files in <dir> - - + + name - + Store configuration files in directories qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory - + files or URLs - + Download the torrents passed by the user - + Options when adding new torrents: - + path - + Torrent save path - + Add torrents as started or paused - + Skip hash check Shifr tekshirilmasin - + Assign torrents to category. If the category doesn't exist, it will be created. - + Download files in sequential order - + Download first and last pieces first - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - + Command line parameters take precedence over environment variables - + Help Yordam @@ -2837,17 +2830,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories - + All Hammasini - + Uncategorized @@ -2855,42 +2848,42 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterWidget - + Add category... - + Add subcategory... - + Edit category... - + Remove category - + Remove unused categories - + Resume torrents Torrentlarni davomlash - + Pause torrents Torrentlarni pauza qilish - + Remove torrents @@ -2898,12 +2891,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset @@ -2947,12 +2940,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3091,7 +3084,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also FileLogger - + An error occurred while trying to open the log file. Logging to file is disabled. @@ -3102,7 +3095,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ... Launch file dialog button text (brief) - + ... @@ -3187,6 +3180,29 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Tahlil xatosi: bu filtr fayli yaroqli PeerGuardian P2B fayli emas. + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" + + + + + Trackers cannot be merged because it is a private torrent + + + + + Torrent is already present + + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? + + + GeoIPDatabase @@ -3280,26 +3296,54 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Belgila... - + Reset - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + + + + + No further notices will be issued. + + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel @@ -3318,77 +3362,61 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. - - + + %1 must be the single command line parameter. - - You cannot use %1: qBittorrent is already running for this user. - - - - + Run application with -h option to read about command line parameters. - + Bad command line - + Bad command line: - - Legal Notice - - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - - - - - No further notices will be issued. + + An unrecoverable error occurred. - - Press %1 key to accept and continue... + + + qBittorrent has encountered an unrecoverable error. - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. + + You cannot use %1: qBittorrent is already running. - - Legal notice + + Another qBittorrent instance is already running. - - Cancel + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. - - I Agree + + Error when daemonizing. Reason: "%1". Error code: %2. @@ -3678,12 +3706,12 @@ No further notices will be issued. - + Show Ko‘rsatish - + Check for program updates Dastur yangilanishlarini tekshirish @@ -3698,325 +3726,304 @@ No further notices will be issued. Sizga qBittorrent dasturi yoqqan bo‘lsa, marhamat qilib xayriya qiling! - - + + Execution Log Faoliyat logi - + Clear the password Parolni tozalash - + &Set Password &Parol qo‘yish - + Preferences - + &Clear Password Parolni &tozalash - + Transfers Oldi-berdilar - - + + qBittorrent is minimized to tray - - - + + + This behavior can be changed in the settings. You won't be reminded again. - + Icons Only Faqat ikonlar - + Text Only Faqat matn - + Text Alongside Icons Ikonlar yonida matn - + Text Under Icons Ikonlar tagida matn - + Follow System Style Tizim stiliga muvofiq - - + + UI lock password FI qulflash paroli - - + + Please type the UI lock password: UI qulflash parolini kiriting: - + Are you sure you want to clear the password? Haqiqatan ham parolni olib tashlamoqchimisiz? - + Use regular expressions - + Search Qidiruv - + Transfers (%1) Oldi-berdi (%1) - - Recursive download confirmation - Navbatma-navbat yuklab olishni tasdiqlash - - - - Never - Hech qachon - - - + qBittorrent was just updated and needs to be restarted for the changes to be effective. - + qBittorrent is closed to tray - + Some files are currently transferring. - + Are you sure you want to quit qBittorrent? - + &No &Yo‘q - + &Yes &Ha - + &Always Yes &Doim ha - + Options saved. - - %1/s - s is a shorthand for seconds + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title - - + + Missing Python Runtime - + qBittorrent Update Available qBittorrent uchun yangilanish mavjud - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Qidiruv vositasini ishlatish uchun Python kerak, ammo o‘rnatilmagan shekilli. Uni o‘rnatishni istaysizmi? - + Python is required to use the search engine but it does not seem to be installed. Qidiruv vositasini ishlatish uchun Python kerak, ammo o‘rnatilmagan shekilli. - - + + Old Python Runtime - + A new version is available. - + Do you want to download %1? - + Open changelog... - + No updates available. You are already using the latest version. Hech qanday yangilanish mavjud emas. Siz eng yangi versiyasidan foydalanmoqdasiz. - + &Check for Updates &Yangilanishlarni tekshirish - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. - + Checking for Updates... Yangilanishlar tekshirilmoqda... - + Already checking for program updates in the background Dastur yangilanishlar fonda tekshirilmoqda - + Download error Yuklab olish xatoligi - + Python setup could not be downloaded, reason: %1. Please install it manually. Python o‘rnatish faylini olib bo‘lmadi, sababi: %1. Uni o‘zingiz o‘rnating. - - + + Invalid password Parol noto‘g‘ri - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long - - - + + + RSS (%1) RSS (%1) - - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - - - - + The password is invalid Parol yaroqsiz - + DL speed: %1 e.g: Download speed: 10 KiB/s YO tezligi: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Y tezligi: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [O: %1, Y: %2] qBittorrent %3 - - - + Hide Yashirish - + Exiting qBittorrent qBittorrent dasturidan chiqilmoqda - + Open Torrent Files Torrent fayllarini ochish - + Torrent Files Torrent fayllari @@ -4077,133 +4084,133 @@ Uni o‘zingiz o‘rnating. Net::DownloadHandlerImpl - - + + I/O Error: %1 - + The file size (%1) exceeds the download limit (%2) - + Exceeded max redirections (%1) - + Redirected to magnet URI - + The remote host name was not found (invalid hostname) - + The operation was canceled - + The remote server closed the connection prematurely, before the entire reply was received and processed - + The connection to the remote server timed out - + SSL/TLS handshake failed - + The remote server refused the connection - + The connection to the proxy server was refused - + The proxy server closed the connection prematurely - + The proxy host name was not found - + The connection to the proxy timed out or the proxy did not reply in time to the request sent - + The proxy requires authentication in order to honor the request but did not accept any credentials offered - + The access to the remote content was denied (401) - + The operation requested on the remote content is not permitted - + The remote content was not found at the server (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted - + The Network Access API cannot honor the request because the protocol is not known - + The requested operation is invalid for this protocol - + An unknown network-related error was detected - + An unknown proxy-related error was detected - + An unknown error related to the remote content was detected - + A breakdown in protocol was detected - + Unknown error @@ -5598,456 +5605,471 @@ Uni o‘zingiz o‘rnating. - + Customize UI Theme... - + Transfer List - + Confirm when deleting torrents - + Shows a confirmation dialog upon pausing/resuming all the torrents - + Confirm "Pause/Resume all" actions - + Use alternating row colors In table elements, every other row will have a grey background. - + Hide zero and infinity values - + Always Har doim - + Paused torrents only - + Action on double-click - + Downloading torrents: - - + + Start / Stop Torrent - - + + Open destination folder - - + + No action - + Completed torrents: - + Auto hide zero status filters - + Desktop - + Start qBittorrent on Windows start up - + Show splash screen on start up - + Confirmation on exit when torrents are active - + Confirmation on auto-exit when downloads finish - + + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> + + + + KiB KiB - + Torrent content layout: - + Original Asli - + Create subfolder Quyi jild yaratish - + Don't create subfolder Quyi jild yaratilmasin - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... - + Options.. - + Remove - + Email notification &upon download completion - + Peer connection protocol: - + Any - + I2P (experimental) - + <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering - + Schedule &the use of alternative rate limits - + From: From start time - + To: To end time - + Find peers on the DHT network - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption - + Allow encryption - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) - + Maximum active checking torrents: - + &Torrent Queueing - + When total seeding time reaches - + When inactive seeding time reaches - + A&utomatically add these trackers to new downloads: - + RSS Reader - + Enable fetching RSS feeds - + Feeds refresh interval: - + + Same host request delay: + + + + Maximum number of articles per feed: - - - + + + min minutes daq - + Seeding Limits - + Pause torrent - + Remove torrent - + Remove torrent and its files - + Enable super seeding for torrent - + When ratio reaches - + RSS Torrent Auto Downloader - + Enable auto downloading of RSS torrents - + Edit auto downloading rules... - + RSS Smart Episode Filter - + Download REPACK/PROPER episodes - + Filters: - + Web User Interface (Remote control) - + IP address: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. - + Ban client after consecutive failures: - + Never Hech qachon - + ban for: - + Session timeout: - + Disabled - + Enable cookie Secure flag (requires HTTPS) - + Server domains: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6056,37 +6078,37 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP - + Bypass authentication for clients on localhost - + Bypass authentication for clients in whitelisted IP subnets - + IP subnet whitelist... - + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - + Upda&te my dynamic domain name - + Minimize qBittorrent to notification area @@ -6101,180 +6123,180 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + Tray icon style: - - + + Normal Normal - + File association - + Use qBittorrent for .torrent files - + Use qBittorrent for magnet links - + Check for program updates Dastur yangilanishlarini tekshirish - + Power Management - + Save path: - + Backup the log file after: - + Delete backup logs older than: - + When adding a torrent - + Bring torrent dialog to the front - + Also delete .torrent files whose addition was cancelled - + Also when addition is cancelled - + Warning! Data loss possible! - + Saving Management - + Default Torrent Management Mode: - + Manual Mustaqil - + Automatic Avtomatik - + When Torrent Category changed: - + Relocate torrent - + Switch torrent to Manual Mode - - + + Relocate affected torrents - - + + Switch affected torrents to Manual Mode - + Use Subcategories - + Default Save Path: - + Copy .torrent files to: - + Show &qBittorrent in notification area - + &Log file - + Display &torrent content and some options - + De&lete .torrent files afterwards - + Copy .torrent files for finished downloads to: - + Pre-allocate disk space for all files - + Use custom UI Theme - + UI Theme file: @@ -6284,213 +6306,213 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + Shows a confirmation dialog upon torrent deletion - - + + Preview file, otherwise open destination folder - - + + Show torrent options - + Shows a confirmation dialog when exiting with active torrents - + When minimizing, the main window is closed and must be reopened from the systray icon - + The systray icon will still be visible when closing the main window - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window - + Monochrome (for dark theme) - + Monochrome (for light theme) - + Inhibit system sleep when torrents are downloading - + Inhibit system sleep when torrents are seeding - + Creates an additional log file after the log file reaches the specified file size - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings - + The torrent will be added to download list in a paused state - + Do not start the download automatically The torrent will be added to download list in a paused state - + Whether the .torrent file should be deleted after adding it - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - + Append .!qB extension to incomplete files - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it - + Enable recursive download dialog - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually - + When Default Save/Incomplete Path changed: - + When Category Save Path changed: - + Use Category paths in Manual Mode - + Resolve relative Save Path against appropriate Category path instead of Default one - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: - - + + None - - + + Metadata received - - + + Files checked - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: - + Automatically add torrents from: - + Excluded file names - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6507,763 +6529,769 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not - + Receiver - + To: To receiver - + SMTP server: - + Sender - + From: From sender - + This server requires a secure connection (SSL) - - + + Authentication - - - - + + + + Username: - - - - + + + + Password: - + Run external program - + Run on torrent added - + Run on torrent finished - + Show console window - + TCP and μTP - + Listening Port - + Port used for incoming connections: - + Set to 0 to let your system pick an unused port - + Random - + Use UPnP / NAT-PMP port forwarding from my router - + Connections Limits - + Maximum number of connections per torrent: - + Global maximum number of connections: - + Maximum number of upload slots per torrent: - + Global maximum number of upload slots: - + Proxy Server - + Type: - + SOCKS4 - + SOCKS5 - + HTTP - - + + Host: - - - + + + Port: - + Otherwise, the proxy server is only used for tracker connections - + Use proxy for peer connections - + A&uthentication - + Info: The password is saved unencrypted - + Filter path (.dat, .p2p, .p2b): - + Reload the filter - + Manually banned IP addresses... - + Apply to trackers - + Global Rate Limits - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s - - + + Upload: - - + + Download: - + Alternative Rate Limits - + Start time - + End time - + When: - + Every day Har kuni - + Weekdays - + Weekends - + Rate Limits Settings - + Apply rate limit to peers on LAN - + Apply rate limit to transport overhead - + Apply rate limit to µTP protocol - + Privacy - + Enable DHT (decentralized network) to find more peers - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers - + Look for peers on your local network - + Enable Local Peer Discovery to find more peers - + Encryption mode: - + Require encryption - + Disable encryption - + Enable when using a proxy or a VPN connection - + Enable anonymous mode - + Maximum active downloads: - + Maximum active uploads: - + Maximum active torrents: - + Do not count slow torrents in these limits - + Upload rate threshold: - + Download rate threshold: - - - + + + + sec seconds - + Torrent inactivity timer: - + then - + Use UPnP / NAT-PMP to forward the port from my router - + Certificate: - + Key: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> - + Change current password - + Use alternative Web UI - + Files location: - + Security - + Enable clickjacking protection - + Enable Cross-Site Request Forgery (CSRF) protection - + Enable Host header validation - + Add custom HTTP headers - + Header: value pairs, one per line - + Enable reverse proxy support - + Trusted proxies list: - + Service: - + Register - + Domain name: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog - + Select qBittorrent UI Theme file - + Choose Alternative UI files location - + Supported parameters (case sensitive): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence - + No stop condition is set. - + Torrent will stop after metadata is received. - - Torrents that have metadata initially aren't affected. - - - - + Torrent will stop after files are initially checked. - + This will also download metadata if it wasn't there initially. - + %N: Torrent name - + %L: Category - + %F: Content path (same as root path for multifile torrent) - + %R: Root path (first torrent subdirectory path) - + %D: Save path - + %C: Number of files - + %Z: Torrent size (bytes) - + %T: Current tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") - + (None) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds - + Certificate - + Select certificate - + Private key - + Select private key - + + WebUI configuration failed. Reason: %1 + + + + Select folder to monitor - + Adding entry failed - - Location Error + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. - - The alternative Web UI files location cannot be blank. + + Location Error - - + + Choose export directory - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well - + qBittorrent UI Theme file (*.qbtheme config.json) - + %G: Tags (separated by comma) - + %I: Info hash v1 (or '-' if unavailable) - + %J: Info hash v2 (or '-' if unavailable) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) - - - + + + Choose a save directory - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file - + All supported filters - + + The alternative WebUI files location cannot be blank. + + + + Parsing error - + Failed to parse the provided IP filter - + Successfully refreshed - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Berilgan IP filtri tahlil qilindi: %1 ta qoida qo‘llandi. - + Preferences - + Time Error - + The start time and the end time can't be the same. - - + + Length Error - - - The Web UI username must be at least 3 characters long. - Veb interfeysidagi foydalanuvchi ismi kamida 3 ta belgidan iborat bo‘lishi kerak. - - - - The Web UI password must be at least 6 characters long. - - PeerInfo @@ -7346,163 +7374,163 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PeerListWidget - + Country/Region - + IP/Address - + Port - + Flags - + Connection - + Client i.e.: Client application - + Peer ID Client i.e.: Client resolved from Peer ID - + Progress i.e: % downloaded - + Down Speed i.e: Download speed - + Up Speed i.e: Upload speed - + Downloaded i.e: total data downloaded Yuklab olingan - + Uploaded i.e: total data uploaded - + Relevance i.e: How relevant this peer is to us. How many pieces it has that we don't. - + Files i.e. files that are being downloaded right now - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Add peers... - - + + Adding peers - + Some peers cannot be added. Check the Log for details. - + Peers are added to this torrent. - - + + Ban peer permanently - + Cannot add peers to a private torrent - + Cannot add peers when the torrent is checking - + Cannot add peers when the torrent is queued - + No peer was selected - + Are you sure you want to permanently ban the selected peers? - + Peer "%1" is manually banned - + N/A Noaniq - + Copy IP:port @@ -7561,27 +7589,27 @@ readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not PiecesBar - + Files in this piece: - + File in this piece: - + File in these pieces: - + Wait until metadata become available to see detailed information - + Hold Shift key for detailed information @@ -7782,35 +7810,60 @@ Those plugins were disabled. PowerManagement - + qBittorrent is active + + PowerManagementInhibitor + + + Power management found suitable D-Bus interface. Interface: %1 + + + + + Power management error. Did not found suitable D-Bus interface. + + + + + + + Power management error. Action: %1. Error: %2 + + + + + Power management unexpected error. State: %1. Error: %2 + + + PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: - + Preview - + Name - + Size - + Progress @@ -7843,27 +7896,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist - + Path does not point to a directory - + Path does not point to a file - + Don't have read permission to path - + Don't have write permission to path @@ -8060,50 +8113,50 @@ Those plugins were disabled. - + Never Hech qachon - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) - - + + %1 (%2 this session) - - + + N/A Noaniq - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) - + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) @@ -8174,33 +8227,33 @@ Those plugins were disabled. RSS::AutoDownloader - - + + Invalid data format. - + Couldn't save RSS AutoDownloader data in %1. Error: %2 - + Invalid data format - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 @@ -8208,22 +8261,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' updated. Added %2 new articles. - + Failed to parse RSS feed at '%1'. Reason: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. @@ -8231,27 +8284,27 @@ Those plugins were disabled. RSS::Private::FeedSerializer - + Failed to read RSS session data. %1 - + Failed to save RSS feed in '%1', Reason: %2 - + Couldn't parse RSS Session data. Error: %1 - + Couldn't load RSS Session data. Invalid data format. - + Couldn't load RSS article '%1#%2'. Invalid data format. @@ -8272,99 +8325,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" - - + + RSS feed with given URL already exists: %1. - + Feed doesn't exist: %1. - + Cannot move root folder. - - + + Item doesn't exist: %1. - + Couldn't move folder into itself. - + Cannot delete root folder. - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. - + Couldn't load RSS item. Item: "%1". Invalid data format. - + Corrupted RSS list, not loading it. - + Incorrect RSS Item path: %1. - + RSS item with given path already exists: %1. - + Parent folder doesn't exist: %1. @@ -8477,64 +8530,69 @@ Those plugins were disabled. - + Please choose a folder name - + Folder name: - + New folder - - + + Please type a RSS feed URL - - + + Feed URL: - + Deletion confirmation - + Are you sure you want to delete the selected RSS feeds? - + Please choose a new name for this RSS feed - + New feed name: - + Rename failed - + Date: - + + Feed: + + + + Author: @@ -8648,132 +8706,132 @@ Those plugins were disabled. Hajmi: - + Name i.e: file name - + Size i.e: file size - + Seeders i.e: Number of full sources - + Leechers i.e: Number of partial sources - + Search engine - + Filter search results... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results - + Torrent names only - + Everywhere - + Use regular expressions - + Open download window - + Download Yuklab olish - + Open description page - + Copy Nusxalash - + Name - + Download link - + Description page URL - + Searching... - + Search has finished - + Search aborted - + An error occurred during search... - + Search returned no results - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents @@ -8781,104 +8839,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. - + Plugin already at version %1, which is greater than %2 - + A more recent version of this plugin is already installed. - + Plugin %1 is not supported. - - + + Plugin is not supported. - + Plugin %1 has been successfully updated. - + All categories - + Movies - + TV shows - + Music - + Games - + Anime - + Software - + Pictures - + Books - + Update server is temporarily unavailable. %1 - - + + Failed to download the plugin file. %1 - + Plugin "%1" is outdated, updating to version %2 - + Incorrect update info received for %1 out of %2 plugins. - + Search plugin '%1' contains invalid version string ('%2') @@ -8888,10 +8946,10 @@ Those plugins were disabled. - - - - + + + + Search Qidiruv @@ -8960,39 +9018,39 @@ Click the "Search plugins..." button at the bottom right of the window - - - + + + Search Engine - + Please install Python to use the Search Engine. - + Empty search pattern - + Please type a search pattern first - + Stop - + Search has finished - + Search has failed @@ -9142,52 +9200,52 @@ Click the "Search plugins..." button at the bottom right of the window SpeedPlotView - + Total Upload - + Total Download - + Payload Upload - + Payload Download - + Overhead Upload - + Overhead Download - + DHT Upload - + DHT Download - + Tracker Upload - + Tracker Download @@ -9396,13 +9454,13 @@ Click the "Search plugins..." button at the bottom right of the window - + No direct connections. This may indicate network configuration problems. - + DHT: %1 nodes @@ -9412,29 +9470,29 @@ Click the "Search plugins..." button at the bottom right of the window - - - + + + Connection Status: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. - + Online - + Click to switch to alternative speed limits - + Click to switch to regular speed limits @@ -9601,17 +9659,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags - + All Hammasini - + Untagged @@ -9619,62 +9677,62 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... - + Remove tag - + Remove unused tags - + Resume torrents Torrentlarni davomlash - + Pause torrents Torrentlarni pauza qilish - + Remove torrents - + New Tag - + Tag: - + Invalid tag name - + Tag name '%1' is invalid - + Tag exists - + Tag name already exists. @@ -9801,32 +9859,32 @@ Please choose a different name and try again. TorrentContentModel - + Name - + Progress - + Download Priority - + Remaining - + Availability - + Total Size @@ -9876,97 +9934,115 @@ Please choose a different name and try again. - + Renaming - + New name: Yangi nomi: - + Column visibility - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Open Ochish - + Open containing folder - + Rename... Nomini o‘zgartirish... - + Priority Dolzarblik - - + + Do not download Yuklab olinmasin - + Normal Normal - + High Yuqori - + Maximum Maksimal - + By shown file order - + Normal priority - + High priority - + Maximum priority - + Priority by shown file order + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -9991,220 +10067,164 @@ Please choose a different name and try again. - + Select file - + Select folder - Settings - - - - - Torrent format: - - - - - Hybrid - - - - - Piece size: - - - - - Auto - - - - - 16 KiB - - - - - 32 KiB - - - - - 64 KiB - - - - - 128 KiB - - - - - 256 KiB - - - - - 512 KiB - - - - - 1 MiB - - - - - 2 MiB + Settings - - 4 MiB + + Torrent format: - - 8 MiB + + Hybrid - - 16 MiB + + Piece size: - - 32 MiB + + Auto - + Calculate number of pieces: - + Private torrent (Won't distribute on DHT network) - + Start seeding immediately - + Ignore share ratio limits for this torrent - + Optimize alignment - + Align to piece boundary for files larger than: - + Disabled - + KiB KiB - + Fields - + You can separate tracker tiers / groups with an empty line. - + Web seed URLs: - + Tracker URLs: - + Comments: - + Source: - + Progress: - + Create Torrent - - - + + Torrent creation failed - + Reason: Path to file/folder is not readable. - + Select where to save the new torrent - + Torrent Files (*.torrent) - - Reason: %1 + + Add torrent to transfer list failed. + + + + + Reason: "%1" - - Reason: Created torrent is invalid. It won't be added to download list. + + Add torrent failed - + Torrent creator - + Torrent created: @@ -10212,32 +10232,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 - + Watched folder Path cannot be empty. - + Watched folder Path cannot be relative. @@ -10245,22 +10265,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + + Invalid Magnet URI. URI: %1. Reason: %2 + + + + Magnet file too big. File: %1 - + Failed to open magnet file: %1 - + Rejecting failed torrent file: %1 - + Watching folder: "%1" @@ -10414,21 +10439,69 @@ Please choose a different name and try again. Saqlash yo‘lagini tanlang - + Not applicable to private torrents - + No share limit method selected - + Please select a limit method first + + TorrentShareLimitsWidget + + + + + Default + + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + min + minutes + daq + + + + Inactive seeding time: + + + + + Ratio: + + + TorrentTagsDialog @@ -10437,7 +10510,7 @@ Please choose a different name and try again. - + New Tag @@ -10470,115 +10543,115 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. - + Priority must be an integer - + Priority is not valid - + Torrent's metadata has not yet downloaded - + File IDs must be integers - + File ID is not valid - - - - + + + + Torrent queueing must be enabled - - + + Save path cannot be empty - - + + Cannot create target directory - - + + Category cannot be empty - + Unable to create category - + Unable to edit category - + Unable to export torrent file. Error: %1 - + Cannot make save path - + 'sort' parameter is invalid - + "%1" is not a valid file index. - + Index %1 is out of bounds. - - + + Cannot write to directory - + WebUI Set location: moving "%1", from "%2" to "%3" - + Incorrect torrent name - - + + Incorrect category name @@ -10602,160 +10675,198 @@ Please choose a different name and try again. - TrackerListWidget + TrackerListModel - - + Working - + Disabled - + Disabled for this torrent - - + This torrent is private - + + N/A + Noaniq + + + Updating... - + Not working - + + Tracker error + + + + + Unreachable + + + + Not contacted yet - - - - - N/A - Noaniq + + Invalid status! + - - Tracker editing + + URL/Announce endpoint - - Tracker URL: + + Tier - - - Tracker editing failed + + Protocol - - The tracker URL entered is invalid. + + Status - - The tracker URL already exists. + + Peers - - Edit tracker URL... + + Seeds - - Remove tracker + + Leeches - - Copy tracker URL + + Times Downloaded - - Force reannounce to selected trackers + + Message - - Force reannounce to all trackers + + Next announce - - Tier + + Min announce - - URL + + v%1 + + + TrackerListWidget - - Status + + This torrent is private - - Seeds + + Tracker editing - - Times Downloaded + + Tracker URL: - - Resize columns + + + Tracker editing failed - - Resize all non-hidden columns to the size of their contents + + The tracker URL entered is invalid. - - Peers + + The tracker URL already exists. - - Add trackers... + + Edit tracker URL... - - Leeches + + Remove tracker - - Message + + Copy tracker URL - + + Force reannounce to selected trackers + + + + + Force reannounce to all trackers + + + + + Resize columns + + + + + Resize all non-hidden columns to the size of their contents + + + + + Add trackers... + + + + Column visibility @@ -10763,47 +10874,47 @@ Please choose a different name and try again. TrackersAdditionDialog - + Add trackers - + List of trackers to add (one per line): - + µTorrent compatible list URL: - + Download trackers list - + Add Qo‘shish - + Trackers list URL error - + The trackers list URL cannot be empty - + Download trackers list error - + Error occurred when downloading the trackers list. Reason: "%1" @@ -10811,67 +10922,62 @@ Please choose a different name and try again. TrackersFilterWidget - - All (0) - this is for the tracker filter - Hammasi (0) - - - - Trackerless (0) + + Warning (%1) - Error (0) - - - - - Warning (0) - - - - - - Trackerless + Trackerless (%1) - - - Error (%1) + + Tracker error (%1) - - - Warning (%1) + + Other error (%1) - - Trackerless (%1) + + Remove tracker - + Resume torrents Torrentlarni davomlash - + Pause torrents Torrentlarni pauza qilish - + Remove torrents - - + + Removal confirmation + + + + + Are you sure you want to remove tracker "%1" from all torrents? + + + + + Don't ask me again. + + + + All (%1) this is for the tracker filter Hammasi (%1) @@ -11000,214 +11106,220 @@ Please choose a different name and try again. - + Name i.e: torrent name - + Size i.e: torrent size - + Progress % Done - + Status Torrent status (e.g. downloading, seeding, paused) - + Seeds i.e. full sources (often untranslated) - + Peers i.e. partial sources (often untranslated) - + Down Speed i.e: Download speed - + Up Speed i.e: Upload speed - + Ratio Share ratio - + ETA i.e: Estimated Time of Arrival / Time left - + Category - + Tags - + Added On Torrent was added to transfer list on 01/01/2010 08:00 - + Completed On Torrent was completed on 01/01/2010 08:00 - + Tracker - + Down Limit i.e: Download limit - + Up Limit i.e: Upload limit - + Downloaded Amount of data downloaded (e.g. in MB) Yuklab olingan - + Uploaded Amount of data uploaded (e.g. in MB) - + Session Download Amount of data downloaded since program open (e.g. in MB) - + Session Upload Amount of data uploaded since program open (e.g. in MB) - + Remaining Amount of data left to download (e.g. in MB) - + Time Active Time (duration) the torrent is active (not paused) - + Save Path Torrent save path - + Incomplete Save Path Torrent incomplete save path - + Completed Amount of data completed (e.g. in MB) Tugallangan - + Ratio Limit Upload share ratio limit - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole - + Last Activity Time passed since a chunk was downloaded/uploaded - + Total Size i.e. Size including unwanted data - + Availability The number of distributed copies of the torrent - + Info Hash v1 i.e: torrent info hash v1 - + Info Hash v2 i.e: torrent info hash v2 - - + + Reannounce In + Indicates the time until next trackers reannounce + + + + + N/A Noaniq - + %1 ago e.g.: 1h 20m ago - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) @@ -11216,334 +11328,339 @@ Please choose a different name and try again. TransferListWidget - + Column visibility - + Recheck confirmation - + Are you sure you want to recheck the selected torrent(s)? - + Rename - + New name: Yangi nomi: - + Choose save path Saqlash yo‘lagini tanlang - + Confirm pause - + Would you like to pause all torrents? - + Confirm resume - + Would you like to resume all torrents? - + Unable to preview - + The selected torrent "%1" does not contain previewable files - + Resize columns - + Resize all non-hidden columns to the size of their contents - + Enable automatic torrent management - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. - + Add Tags - + Choose folder to save exported .torrent files - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" - + A file with the same name already exists - + Export .torrent file error - + Remove All Tags - + Remove all tags from selected torrents? - + Comma-separated tags: - + Invalid tag - + Tag name: '%1' is invalid - + &Resume Resume/start the torrent &Davomlash - + &Pause Pause the torrent &Pauza qilish - + Force Resu&me Force Resume/start the torrent - + Pre&view file... - + Torrent &options... - + Open destination &folder - + Move &up i.e. move up in the queue - + Move &down i.e. Move down in the queue - + Move to &top i.e. Move to top of the queue - + Move to &bottom i.e. Move to bottom of the queue - + Set loc&ation... - + Force rec&heck - + Force r&eannounce - + &Magnet link - + Torrent &ID - + + &Comment + + + + &Name - + Info &hash v1 - + Info h&ash v2 - + Re&name... - + Edit trac&kers... - + E&xport .torrent... - + Categor&y - + &New... New category... - + &Reset Reset category - + Ta&gs - + &Add... Add / assign multiple tags... - + &Remove All Remove all tags - + &Queue - + &Copy - + Exported torrent is not necessarily the same as the imported - + Download in sequential order - + Errors occurred when exporting .torrent files. Check execution log for details. - + &Remove Remove the torrent - + Download first and last pieces first - + Automatic Torrent Management - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category - + Can not force reannounce if torrent is Paused/Queued/Errored/Checking - + Super seeding mode @@ -11580,7 +11697,7 @@ Please choose a different name and try again. Icons - + Belgilar @@ -11588,28 +11705,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11669,35 +11786,60 @@ Please choose a different name and try again. Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 + + Found Python executable. Name: "%1". Version: "%2" - Python not detected + Failed to find Python executable. Path: "%1". + + + + + Failed to find `python3` executable in PATH environment variable. PATH: "%1" + + + + + Failed to find `python` executable in PATH environment variable. PATH: "%1" + + + + + Failed to find `python` executable in Windows Registry. + + + + + Failed to find Python executable Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 + + + + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -11728,32 +11870,32 @@ Please choose a different name and try again. WatchedFoldersModel - + Watched Folder - + Watched folder path cannot be empty. - + Watched folder path cannot be relative. - + Folder '%1' is already in watch list. - + Folder '%1' doesn't exist. - + Folder '%1' isn't readable. @@ -11761,72 +11903,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. - + Symlinks inside alternative UI folder are forbidden. - - Using built-in Web UI. + + Using built-in WebUI. - - Using custom Web UI. Location: "%1". + + Using custom WebUI. Location: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. + + WebUI translation for selected locale (%1) has been successfully loaded. - - Couldn't load Web UI translation for selected locale (%1). + + Couldn't load WebUI translation for selected locale (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' @@ -11834,116 +11976,128 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful + + Credentials are not set - - Web UI: HTTPS setup failed, fallback to HTTP + + WebUI: HTTPS setup successful - - Web UI: Now listening on IP: %1, port: %2 + + WebUI: HTTPS setup failed, fallback to HTTP - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 + + WebUI: Now listening on IP: %1, port: %2 + + + + + Unable to bind to IP: %1, port: %2. Reason: %3 misc - + B bytes - + KiB kibibytes (1024 bytes) - + MiB mebibytes (1024 kibibytes) - + GiB gibibytes (1024 mibibytes) - + TiB tebibytes (1024 gibibytes) - + PiB pebibytes (1024 tebibytes) - + EiB exbibytes (1024 pebibytes) - + /s per second - + + %1s + e.g: 10 seconds + + + + + %1m + e.g: 10 minutes + + + + %1h %2m - e.g: 3hours 5minutes + e.g: 3 hours 5 minutes - + %1d %2h - e.g: 2days 10hours + e.g: 2 days 10 hours - + %1y %2d - e.g: 2years 10days + e.g: 2 years 10 days - + + Unknown Unknown (size) - + qBittorrent will shutdown the computer now because all downloads are complete. - + < 1m < 1 minute - - - %1m - e.g: 10minutes - - \ No newline at end of file diff --git a/src/lang/qbittorrent_vi.ts b/src/lang/qbittorrent_vi.ts index fb2920598df4..0679742e77c1 100644 --- a/src/lang/qbittorrent_vi.ts +++ b/src/lang/qbittorrent_vi.ts @@ -6,7 +6,7 @@ About qBittorrent - Giới thiệu về qBittorrent + Thông tin qBittorrent @@ -14,77 +14,77 @@ Thông tin - + Authors Tác giả - + Current maintainer - Người duy trì hiện tại + Người bảo trì hiện tại - + Greece Hy Lạp - - + + Nationality: Quốc tịch: - - + + E-mail: E-mail: - - + + Name: Tên: - + Original author Tác giả gốc - + France Pháp - + Special Thanks - Cảm Tạ + Đặc biệt cảm ơn - + Translators Người dịch - + License Giấy phép - + Software Used Phần mềm Được sử dụng - + qBittorrent was built with the following libraries: qBittorrent được xây dựng với các thư viện sau: - + Copy to clipboard - + Sao chép vào bộ nhớ tạm @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Bản quyền %1 2006-2023 Dự án qBittorrent + Copyright %1 2006-2024 The qBittorrent project + Bản quyền %1 2006-2024 Dự án qBittorrent @@ -109,12 +109,12 @@ Bug Tracker: - Máy theo dõi Lỗi: + Máy Theo Dõi Lỗi: The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License - Cơ sở dữ liệu IP đến Country Lite miễn phí của DB-IP được sử dụng để giải quyết các quốc gia ngang hàng. Cơ sở dữ liệu được cấp phép theo Giấy phép Quốc tế Ghi Công Sáng Tạo Công Cộng 4.0 + Cơ sở dữ liệu IP to Country Lite miễn phí của DB-IP được sử dụng để xử lý các quốc gia ngang hàng. Cơ sở dữ liệu được cấp phép theo Giấy phép Quốc tế Ghi Công Sáng Tạo Công Cộng 4.0 @@ -166,14 +166,13 @@ Lưu tại - + Never show again Không hiển thị lại - Torrent settings - Cài đặt torrent + Cài đặt torrent @@ -188,22 +187,27 @@ Start torrent - Khởi chạy torrent + Chạy torrent - + Torrent information - Thông tin về torrent + Thông tin torrent - + Skip hash check Bỏ qua kiểm tra hash Use another path for incomplete torrent - Dùng một đường dẫn khác cho torrent chưa xong + Dùng đường dẫn khác cho torrent chưa xong + + + + Torrent options + @@ -231,77 +235,82 @@ Điều kiện dừng: - - + + None - Không có + Không - - + + Metadata received - Đã nhận dữ liệu mô tả + Dữ liệu mô tả đã nhận + + + + Torrents that have metadata initially will be added as stopped. + Các torrent có dữ liệu mô tả ban đầu sẽ được thêm vào dưới dạng đã dừng. - - + + Files checked Tệp đã kiểm tra - + Add to top of queue Thêm vào đầu hàng đợi - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog Khi được chọn, tệp .torrent sẽ không bị xóa bất kể cài đặt nào tại trang "Tải xuống" của hộp thoại Tùy chọn - + Content layout: Bố cục nội dung: - + Original Gốc - + Create subfolder Tạo thư mục con - + Don't create subfolder Không tạo thư mục con - + Info hash v1: Thông tin băm v1: - + Size: Kích cỡ: - + Comment: - Bình luận: + Chú thích: - + Date: Ngày: Torrent Management Mode: - Chế độ Quản lí Torrent: + Chế Độ Quản Lý Torrent: @@ -321,248 +330,185 @@ Remember last used save path - Nhớ đường dẫn lưu đã dùng gần nhất + Nhớ đường dẫn lưu đã dùng lần cuối - + Do not delete .torrent file Không xóa tệp .torrent - + Download in sequential order Tải xuống theo thứ tự tuần tự - + Download first and last pieces first Tải về phần đầu và phần cuối trước - + Info hash v2: Thông tin băm v2: - + Select All - Chọn Tất cả + Chọn Hết - + Select None Không Chọn - + Save as .torrent file... - Lưu dưới dạng .torrent... + Lưu tệp .torrent... - + I/O Error Lỗi I/O - Invalid torrent - Torrent không hợp lệ - - - + Not Available This comment is unavailable Không có sẵn - + Not Available This date is unavailable Không có sẵn - + Not available Không có sẵn - Invalid magnet link - Liên kết magnet không hợp lệ - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - Không tải được torrent: %1. -Lỗi: %2 - - - This magnet link was not recognized - Liên kết magnet này không nhận dạng được - - - + Magnet link Liên kết magnet - + Retrieving metadata... Đang truy xuất dữ liệu mô tả... - - + + Choose save path Chọn đường dẫn lưu - Torrent is already present - Torrent đã tồn tại - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' này đã có trong danh sách trao đổi. Tracker chưa được gộp vì nó là một torrent riêng tư. - - - Torrent is already queued for processing. - Torrent đã được xếp hàng đợi xử lý. - - - + No stop condition is set. - Không có điều kiện dừng nào được đặt. + Chưa đặt điều kiện dừng. - + Torrent will stop after metadata is received. - Torrent sẽ dừng sau khi nhận được dữ liệu mô tả. - - - - Torrents that have metadata initially aren't affected. - Các torrent có dữ liệu mô tả ban đầu không bị ảnh hưởng. + Torrent sẽ dừng sau khi nhận dữ liệu mô tả. - + Torrent will stop after files are initially checked. Torrent sẽ dừng sau khi tệp được kiểm tra lần đầu. - + This will also download metadata if it wasn't there initially. - Điều này sẽ tải xuống dữ liệu mô tả nếu nó không có ở đó ban đầu. + Sẽ tải xuống dữ liệu mô tả nếu ban đầu không có. - - + + N/A Không - Magnet link is already queued for processing. - Liên kết nam châm đã được xếp hàng đợi xử lý. - - - + %1 (Free space on disk: %2) - %1 (Dung lượng trống trên đĩa: %2) + %1 (Dung lượng đĩa trống: %2) - + Not available This size is unavailable. Không có sẵn - + Torrent file (*%1) Tệp torrent (*%1) - + Save as torrent file - Lưu dưới dạng torrent + Lưu tệp torrent - + Couldn't export torrent metadata file '%1'. Reason: %2. Không thể xuất tệp dữ liệu mô tả torrent '%1'. Lý do: %2. - + Cannot create v2 torrent until its data is fully downloaded. Không thể tạo torrent v2 cho đến khi dữ liệu của nó đã tải về đầy đủ. - Cannot download '%1': %2 - Không thể tải về '%1': %2 - - - + Filter files... Lọc tệp... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent '%1' đã có trong danh sách trao đổi. Không thể gộp các máy theo dõi vì nó là một torrent riêng tư. - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' đã có trong danh sách trao đổi. Bạn có muốn gộp các máy theo dõi từ nguồn mới không? - - - + Parsing metadata... Đang phân tích dữ liệu mô tả... - + Metadata retrieval complete Hoàn tất truy xuất dữ liệu mô tả - - Failed to load from URL: %1. -Error: %2 - Không tải được từ URL: %1. -Lỗi: %2 - - - Download Error - Lỗi Tải Về - AddTorrentManager Downloading torrent... Source: "%1" - + Đang tải torrent... Nguồn: "%1" Failed to add torrent. Source: "%1". Reason: "%2" - + Thêm torrent thất bại. Nguồn: "%1". Lý do: "%2" - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Đã phát hiện nỗ lực thêm torrent trùng lặp. Nguồn: %1. Torrent hiện có: %2. Kết quả: %3 - + Merging of trackers is disabled - + Gộp các máy theo dõi bị tắt - + Trackers cannot be merged because it is a private torrent - + Không thể hợp nhất trình theo dõi vì đây là torrent riêng tư - + Trackers are merged from new source - + Máy theo dõi được gộp từ ​​nguồn mới @@ -570,7 +516,7 @@ Lỗi: %2 Form - Form + Mẫu @@ -580,7 +526,7 @@ Lỗi: %2 Automatic mode means that various torrent properties(eg save path) will be decided by the associated category - Chế độ tự động có nghĩa là các thuộc tính torrent khác nhau (ví dụ: đường dẫn lưu) sẽ được quyết định bởi danh mục liên quan + Chế độ tự động nghĩa là các thuộc tính của torrent (ví dụ: đường dẫn lưu) được quyết định bởi danh mục liên quan @@ -590,17 +536,17 @@ Lỗi: %2 Note: the current defaults are displayed for reference. - Lưu ý: giá trị mặc định hiện tại được hiển thị để tham khảo. + Lưu ý: mặc định hiện tại được hiển thị để tham khảo. Use another path for incomplete torrents: - Sử dụng đường dẫn khác cho torrent chưa hoàn thành: + Dùng đường dẫn khác cho torrent chưa xong: Category: - Thể loại: + Danh mục: @@ -648,72 +594,77 @@ Lỗi: %2 Bỏ qua kiểm tra băm - - - Choose save path - Chọn đường dẫn lưu + + Torrent share limits + Giới hạn chia sẻ torrent - - - - - - - Default - Mặc định + + + Choose save path + Chọn đường dẫn lưu + + + - Yes - Đồng ý + Default + Mặc định + Yes + Đồng ý + + + + + No Không - + Manual Thủ công - + Automatic Tự động - + Original Gốc - + Create subfolder Tạo thư mục con - + Don't create subfolder Không tạo thư mục con - + None Không có - + Metadata received Đã nhận dữ liệu mô tả - + Files checked Đã kiểm tra tệp @@ -721,734 +672,852 @@ Lỗi: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion Kiểm tra lại torrent khi hoàn tất - - + + ms milliseconds ms - + Setting Cài đặt - + Value Value set for this setting Giá trị - + (disabled) - ‎ (bị vô hiệu hóa)‎ + ‎ (bị tắt)‎ - + (auto) (tự động) - + + min minutes phút - + All addresses Tất cả các địa chỉ - + qBittorrent Section Phần qBittorrent - - + + Open documentation Mở tài liệu - + All IPv4 addresses Tất cả địa chỉ IPv4 - + All IPv6 addresses Tất cả địa chỉ IPv6 - + libtorrent Section Phần libtorrent - + Fastresume files Tệp fastresume - + SQLite database (experimental) Cơ sở dữ liệu SQLite (thử nghiệm) - + Resume data storage type (requires restart) Kiểu lưu trữ dữ liệu tiếp tục (cần khởi động lại) - + Normal Bình thường - + Below normal Dưới bình thường - + Medium Trung bình - + Low Thấp - + Very low Rất thấp - - Process memory priority (Windows >= 8 only) - Ưu tiên bộ nhớ xử lý (chỉ dành cho Windows >= 8) - - - + Physical memory (RAM) usage limit Giới hạn sử dụng bộ nhớ vật lý (RAM) - + Asynchronous I/O threads Luồng I/O không đồng bộ - + Hashing threads Luồng băm - + File pool size Kích thước nhóm tệp - + Outstanding memory when checking torrents - Bộ nhớ vượt trội khi kiểm tra torrent + Bộ nhớ vượt mức khi kiểm tra torrents - + Disk cache Bộ nhớ đệm trên đĩa - - - - + + + + s seconds gi. - + Disk cache expiry interval Khoảng thời gian hết hạn bộ nhớ đệm trên đĩa - + Disk queue size Kích thước hàng đợi đĩa - - + + Enable OS cache Bật bộ nhớ đệm của HĐH - + Coalesce reads & writes Kết hợp đọc và ghi - + Use piece extent affinity Sử dụng tương đồng khoảng mảnh - + Send upload piece suggestions Gửi đề xuất phần tải lên - - - - + + + + + 0 (disabled) 0 (tắt) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - Khoản thời gian lưu dữ liệu tiếp tục [0: tắt] + Khoảng thời gian lưu dữ liệu tiếp tục [0: tắt] - + Outgoing ports (Min) [0: disabled] Cổng đi (Tối thiểu) [0: đã tắt] - + Outgoing ports (Max) [0: disabled] Cổng đi (Tối đa) [0: đã tắt] - + 0 (permanent lease) 0 (thuê vĩnh viễn) - + UPnP lease duration [0: permanent lease] Thời hạn thuê UPnP [0: thuê vĩnh viễn] - + Stop tracker timeout [0: disabled] Dừng thời gian tạm ngưng máy theo dõi [0: đã tắt] - + Notification timeout [0: infinite, -1: system default] Thời gian chờ thông báo [0: vô hạn, -1: mặc định hệ thống] - + Maximum outstanding requests to a single peer Số lượng yêu cầu tồn đọng tối đa tới một máy ngang hàng - - - - - + + + + + KiB KiB - + (infinite) (vô hạn) - + (system default) (mặc định hệ thống) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux Tùy chọn này ít hiệu quả trên Linux - + + Process memory priority + Ưu tiên bộ nhớ xử lý + + + Bdecode depth limit - + Giới hạn độ sâu Bdecode - + Bdecode token limit - + Giới hạn độ sâu Bdecode - + Default Mặc định - + Memory mapped files - Các tệp được ánh xạ bộ nhớ + Tệp ánh xạ bộ nhớ - + POSIX-compliant Chuẩn POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) Loại IO trên đĩa (cần khởi động lại) - - + + Disable OS cache - Tắt bộ nhớ cache của hệ điều hành + Tắt bộ nhớ đệm của hệ điều hành - + Disk IO read mode Chế độ đọc IO trên đĩa - + Write-through Viết qua - + Disk IO write mode Chế độ ghi IO trên đĩa - + Send buffer watermark Gửi buffer watermark - + Send buffer low watermark Gửi hình mờ thấp của bộ đệm - + Send buffer watermark factor Gửi buffer watermark factor - + Outgoing connections per second Kết nối đi mỗi giây - - + + 0 (system default) 0 (mặc định hệ thống) - + Socket send buffer size [0: system default] Socket gửi đi kích cỡ vùng đệm [0: mặc định hệ thống] - + Socket receive buffer size [0: system default] Socket nhận kích cỡ vùng đệm [0: mặc định hệ thống] - + Socket backlog size Kích thước tồn đọng socket - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit giới hạn kích thước tệp .torrent - + Type of service (ToS) for connections to peers Loại dịch vụ (ToS) cho các kết nối tới ngang hàng - + Prefer TCP Ưu tiên TCP - + Peer proportional (throttles TCP) Tỷ lệ ngang hàng (điều chỉnh TCP) - + Support internationalized domain name (IDN) Hỗ trợ tên miền quốc tế hóa (IDN) - + Allow multiple connections from the same IP address Cho phép nhiều kết nối từ cùng một địa chỉ IP - + Validate HTTPS tracker certificates Xác thực chứng chỉ máy theo dõi HTTPS - + Server-side request forgery (SSRF) mitigation - Giảm thiểu giả mạo yêu cầu phía máy chủ (SSRF) + Chống giả mạo yêu cầu phía máy chủ (SSRF) - + Disallow connection to peers on privileged ports - Không cho phép kết nối ngang hàng trên các cổng đặc quyền + Không kết nối ngang hàng trên các cổng đặc quyền - + + It appends the text to the window title to help distinguish qBittorent instances + Nó nối văn bản vào tiêu đề cửa sổ để giúp phân biệt các phiên bản qBittorent + + + + Customize application instance name + Tùy chỉnh tên phiên bản ứng dụng + + + It controls the internal state update interval which in turn will affect UI updates - Nó kiểm soát khoảng thời gian cập nhật trạng thái nội bộ, do đó sẽ ảnh hưởng đến các bản cập nhật giao diện người dùng + Kiểm soát khoảng thời gian cập nhật trạng thái nội bộ, nó sẽ ảnh hưởng đến cập nhật giao diện người dùng - + Refresh interval Khoảng thời gian làm mới - + Resolve peer host names Xử lý tên các máy chủ ngang hàng - + IP address reported to trackers (requires restart) Địa chỉ IP được báo cáo cho máy theo dõi (yêu cầu khởi động lại) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed Thông báo lại với tất cả máy theo dõi khi IP hoặc cổng thay đổi - + Enable icons in menus Bật các biểu tượng trong menu - + Enable port forwarding for embedded tracker Bật chuyển tiếp cổng cho máy theo dõi được nhúng - - (Auto detect if empty) + + Enable quarantine for downloaded files + Bật cách ly cho các tệp đã tải xuống + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + Bật Mark-of-the-Web (MOTW) cho các tệp đã tải xuống + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (Tự động phát hiện nếu trống) + + + Python executable path (may require restart) + Đường dẫn thực thi Python (có thể yêu cầu khởi động lại) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + giây + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + Xác nhận xóa máy theo dõi khỏi tất cả torrent + + + Peer turnover disconnect percentage Phần trăm ngắt kết nối xoay vòng ngang hàng - + Peer turnover threshold percentage Phần trăm ngưỡng xoay vòng ngang hàng - + Peer turnover disconnect interval Khoảng ngắt kết nối xoay vòng ngang hàng - + Resets to default if empty - + Đặt lại về mặc định nếu trống - + DHT bootstrap nodes - + Các nút khởi động DHT - + I2P inbound quantity Số lượng đầu vào I2P - + I2P outbound quantity Số lượng đầu ra I2P - + I2P inbound length Độ dài đầu vào I2P - + I2P outbound length Độ dài đầu ra I2P - + Display notifications Hiển thị thông báo - + Display notifications for added torrents Hiển thị thông báo cho các torrent được thêm vào - + Download tracker's favicon Tải về biểu tượng đại diện của máy theo dõi - + Save path history length Độ dài lịch sử đường dẫn lưu - + Enable speed graphs Bật biểu đồ tốc độ - + Fixed slots - Các vị trí cố định + Cố định số lượng - + Upload rate based Tỷ lệ tải lên dựa trên - + Upload slots behavior Hành vi các lượt tải lên - + Round-robin Round-robin - + Fastest upload Tải lên nhanh nhất - + Anti-leech Chống leech - + Upload choking algorithm Thuật toán làm nghẽn tải lên - + Confirm torrent recheck Xác nhận kiểm tra lại torrent - + Confirm removal of all tags Xác nhận xóa tất cả các thẻ - + Always announce to all trackers in a tier Luôn thông báo cho tất cả các máy theo dõi trong một cấp - + Always announce to all tiers Luôn thông báo cho tất cả các cấp - + Any interface i.e. Any network interface Bất kỳ giao diện - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP thuật toán chế đọ hỗn hợp - + Resolve peer countries Giải quyết các quốc gia ngang hàng - + Network interface Giao diện mạng - + Optional IP address to bind to Địa chỉ IP tùy chọn để liên kết với - + Max concurrent HTTP announces Thông báo HTTP đồng thời tối đa - + Enable embedded tracker Bật máy theo dõi đã nhúng - + Embedded tracker port Cổng máy theo dõi đã nhúng - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 đã bắt đầu + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + Application - + Running in portable mode. Auto detected profile folder at: %1 Chạy ở chế độ di động. Thư mục hồ sơ được phát hiện tự động tại: %1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. Đã phát hiện cờ dòng lệnh dự phòng: "%1". Chế độ di động ngụ ý số lượng nhanh tương đối. - + Using config directory: %1 Sử dụng thư mục cấu hình: %1 - + Torrent name: %1 Tên torrent: %1 - + Torrent size: %1 Kích cỡ Torrent: %1 - + Save path: %1 Đường dẫn lưu: %1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent đã được tải về trong %1. - + + Thank you for using qBittorrent. Cảm ơn bạn đã sử dụng qBittorrent. - + Torrent: %1, sending mail notification Torrent: %1, gửi thông báo qua thư - + Add torrent failed - + Thêm torrent thất bại - + Couldn't add torrent '%1', reason: %2. - + Không thể thêm torrent '%1', lý do: %2. + + + + The WebUI administrator username is: %1 + Tên người dùng của quản trị viên WebUI là: %1 + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + Mật khẩu quản trị viên WebUI chưa được đặt. Mật khẩu tạm thời được cung cấp cho phiên này: %1 + + + + You should set your own password in program preferences. + Bạn nên đặt mật khẩu của riêng mình trong tùy chọn chương trình. - + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI bị tắt! Để bật WebUI, hãy sửa tệp cấu hình theo cách thủ công. - + Running external program. Torrent: "%1". Command: `%2` Chạy chương trình bên ngoài. Torrent: "%1". Lệnh: `%2` - + Failed to run external program. Torrent: "%1". Command: `%2` Không thể chạy chương trình bên ngoài. Torrent: "%1". Lệnh: `%2` - + Torrent "%1" has finished downloading Torrent "%1" đã hoàn tất tải xuống - + WebUI will be started shortly after internal preparations. Please wait... WebUI sẽ được bắt đầu ngay sau khi chuẩn bị nội bộ. Vui lòng chờ... - - + + Loading torrents... Đang tải torrent... - + E&xit Thoát - + I/O Error i.e: Input/Output Error Lỗi Nhập/Xuất - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Lỗi: %2 Lý do: %2 - Error - Lỗi - - - Failed to add torrent: %1 - Thêm torrent thất bại: %1 - - - + Torrent added Đã thêm torrent - + '%1' was added. e.g: xxx.avi was added. '%1' đã được thêm. - + Download completed Đã tải về xong - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - '%1' đã tải về hoàn tất. - - - URL download error - Lỗi liên kết URL tải về + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 đã bắt đầu. ID tiến trình: %2 - Couldn't download file at URL '%1', reason: %2. - Không thể tải về tệp tại URL '%1', lý do: %2. + + This is a test email. + - Torrent file association - Liên kết tệp Torrent + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent không phải là ứng dụng mặc định để mở tệp torrent hoặc liên kết Nam Châm. -Bạn có muốn đặt qBittorrent làm ứng dụng mặc định không? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + '%1' đã tải về hoàn tất. - + Information Thông tin - + To fix the error, you may need to edit the config file manually. - + Để sửa lỗi, bạn có thể cần phải sửa tệp cấu hình thủ công. - + To control qBittorrent, access the WebUI at: %1 Để điều khiển qBittorrent, hãy truy cập WebUI tại: %1 - - The Web UI administrator username is: %1 - Tên người dùng quản trị giao diện người dùng Web là: %1 - - - - The Web UI administrator password has not been changed from the default: %1 - Mật khẩu quản trị viên giao diện người dùng Web không được thay đổi so với mặc định: %1 - - - - This is a security risk, please change your password in program preferences. - Đây là một rủi ro bảo mật, vui lòng thay đổi mật khẩu của bạn trong tùy chọn chương trình. - - - Application failed to start. - Ứng dụng không khởi động được. - - - + Exit Thoát - + Recursive download confirmation - Xác nhận Tải về Đệ quy + Xác nhận tải về đệ quy - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' chứa các tệp .torrent, bạn có muốn tiếp tục tải chúng xuống không? + Torrent '%1' chứa các tệp .torrent, bạn có muốn tiếp tục tải chúng xuống không? - + Never - + Không bao giờ - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Tải xuống đệ quy tệp .torrent trong torrent. Nguồn torrent: "%1". Tệp: "%2" + Tải xuống đệ quy tệp .torrent trong torrent. Nguồn torrent: "%1". Tệp: "%2" - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" Không đặt được giới hạn sử dụng bộ nhớ vật lý (RAM). Mã lỗi: %1. Thông báo lỗi: "%2" - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" Không thể đặt giới hạn cứng sử dụng bộ nhớ vật lý (RAM). Kích thước được yêu cầu: %1. Giới hạn cứng của hệ thống: %2. Mã lỗi: %3. Thông báo lỗi: "%4" - + qBittorrent termination initiated Đã bắt đầu thoát qBittorrent - + qBittorrent is shutting down... qBittorrent đang tắt... - + Saving torrent progress... Đang lưu tiến trình torrent... - + qBittorrent is now ready to exit qBittorrent đã sẵn sàng để thoát @@ -1597,7 +1637,7 @@ Bạn có muốn đặt qBittorrent làm ứng dụng mặc định không? AsyncFileStorage - + Could not create directory '%1'. Không thể tạo thư mục '%1'. @@ -1605,22 +1645,22 @@ Bạn có muốn đặt qBittorrent làm ứng dụng mặc định không? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 Đăng nhập WebAPI thất bại. Lí do: IP đã bị ban, IP: %1, tên người dùng: %2 - + Your IP address has been banned after too many failed authentication attempts. Địa chỉ IP của bạn đã bị cấm sau quá nhiều lần xác thực không thành công. - + WebAPI login success. IP: %1 Đăng nhập WebAPI thành công. IP: %1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 Đăng nhập WebAPI thất bại. Lí do: chứng chỉ không hợp lệ, số lần thử: %1, IP: %2, tên người dùng: %3 @@ -1668,12 +1708,12 @@ Bạn có muốn đặt qBittorrent làm ứng dụng mặc định không?Ưu tiên: - + Must Not Contain: Không được chứa: - + Episode Filter: Bộ lọc phân đoạn @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also &Xuất... - + Matches articles based on episode filter. Chọn bài viết phù hợp dựa vào bộ lọc phân đoạn. - + Example: Ví dụ: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match sẽ khớp với các tập 2, 5, 8 đến 15, 30 và các tập tiếp theo của phần một - + Episode filter rules: Quy luật lọc phân đoạn: - + Season number is a mandatory non-zero value Số phần là một giá trị khác 0 bắt buộc - + Filter must end with semicolon Bộ lọc phải kết thúc bằng dấu chấm phẩy - + Three range types for episodes are supported: Ba loại phạm vi cho các tập được hỗ trợ: - + Single number: <b>1x25;</b> matches episode 25 of season one Số đơn: <b>1x25;</b> phù hợp với phân đoạn 25 của mùa một - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one Khoảng thông thường: <b>1x25-40;</b> phù hợp với các tập từ 25 đến 40 của phần một - + Episode number is a mandatory positive value Số tập là một giá trị dương bắt buộc - + Rules Quy tắc - + Rules (legacy) Quy tắc (kế thừa) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons Phạm vi vô hạn:<b>1x25-;</b> khớp với các tập từ 25 trở lên của phần một và tất cả các tập của các phần sau - + Last Match: %1 days ago Phù hợp gần đây: %1 ngày trước - + Last Match: Unknown Phù hợp gần đây: Không rõ - + New rule name Tên quy tắc mới - + Please type the name of the new download rule. Hãy nhập tên quy tắc tải về mới. - - + + Rule name conflict Xung đột tên quy tắc - - + + A rule with this name already exists, please choose another name. Một quy tắc có tên này đã tồn tại, hãy chọn một tên khác. - + Are you sure you want to remove the download rule named '%1'? Bạn có chắc muốn xóa quy tắc tải xuống tên là '%1' không? - + Are you sure you want to remove the selected download rules? Bạn có chắc muốn xóa các quy tắc tải xuống đã chọn không? - + Rule deletion confirmation Xác nhận xóa quy tắc - + Invalid action Hành động không hợp lệ - + The list is empty, there is nothing to export. Danh sách trống, không có gì để xuất. - + Export RSS rules Xuất quy tắc RSS - + I/O Error Lỗi I/O - + Failed to create the destination file. Reason: %1 Không thể tạo tệp đích. Lý do: %1 - + Import RSS rules Nhập quy tắc RSS - + Failed to import the selected rules file. Reason: %1 Không thể nhập tệp quy tắc đã chọn. Lý do: %1 - + Add new rule... Thêm quy tắc mới... - + Delete rule Xoá quy tắc - + Rename rule... Đổi tên quy tắc... - + Delete selected rules Xoá các quy tắc đã chọn - + Clear downloaded episodes... Xóa các tập đã tải xuống... - + Rule renaming Đổi tên quy tắc - + Please type the new rule name Vui lòng nhập tên quy tắc mới - + Clear downloaded episodes Xóa các tập đã tải xuống - + Are you sure you want to clear the list of downloaded episodes for the selected rule? Bạn có chắc chắn muốn xóa danh sách các tập đã tải xuống cho quy tắc đã chọn không? - + Regex mode: use Perl-compatible regular expressions Chế độ Biểu thức chính quy: sử dụng biểu thức chính quy tương thích với Perl - - + + Position %1: %2 Vị trí %1: %2 - + Wildcard mode: you can use Chế độ ký tự đại diện: bạn có thể sử dụng - - + + Import error Lỗi nhập - + Failed to read the file. %1 Không đọc được tệp. %1 - + ? to match any single character ? để khớp với bất kỳ ký tự đơn lẻ nào - + * to match zero or more of any characters * để khớp với không hoặc nhiều hơn bất kỳ ký tự nào - + Whitespaces count as AND operators (all words, any order) Khoảng trắng được tính là toán tử VÀ (tất cả các từ, bất kỳ thứ tự nào) - + | is used as OR operator | được sử dụng như toán tử HOẶC - + If word order is important use * instead of whitespace. Nếu thứ tự từ là quan trọng, hãy sử dụng * thay vì khoảng trắng. - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) Một biểu thức có mệnh đề %1 trống (ví dụ: %2) - + will match all articles. sẽ phù hợp với tất cả các bài báo. - + will exclude all articles. sẽ loại trừ tất cả các bài báo. @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" Không thể tạo thư mục tiếp tục torrent: "%1" - + Cannot parse resume data: invalid format Không thể phân tích cú pháp dữ liệu tiếp tục: định dạng không hợp lệ - - + + Cannot parse torrent info: %1 Không thể phân tích cú pháp thông tin của torrent: %1 - + Cannot parse torrent info: invalid format Không thể phân tích cú pháp thông tin của torrent: dịnh dạng không hợp lệ - + + Mismatching info-hash detected in resume data + Phát hiện hàm băm thông tin không khớp trong dữ liệu tiếp tục + + + Couldn't save torrent metadata to '%1'. Error: %2. Không thể lưu dữ liệu mô tả torrent vào '%1'. Lỗi:%2. - + Couldn't save torrent resume data to '%1'. Error: %2. Không thể lưu dữ liệu tiếp tục torrent vào '%1'. Lỗi: %2. - + Couldn't load torrents queue: %1 Không thể tải hàng đợi torrent: %1 - + Cannot parse resume data: %1 Không thể phân tích cú pháp dữ liệu tiếp tục: %1 - + Resume data is invalid: neither metadata nor info-hash was found Dữ liệu tiếp tục không hợp lệ: không tìm thấy dữ liệu mô tả hay thông tin băm - + Couldn't save data to '%1'. Error: %2 Không thể lưu dữ liệu tới '%1'. Lỗi: %2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. Không tìm thấy. - + Couldn't load resume data of torrent '%1'. Error: %2 Không thể tải dữ liệu tiếp tục của torrent '%1'. Lỗi: %2 - - + + Database is corrupted. Cơ sở dữ liệu bị hỏng. - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. Không thể bật chế độ ghi nhật ký Ghi-Trước (WAL). Lỗi: %1. - + Couldn't obtain query result. Không thể nhận được kết quả truy vấn. - + WAL mode is probably unsupported due to filesystem limitations. Chế độ WAL có thể không được hỗ trợ do hạn chế của hệ thống tệp. - + Couldn't begin transaction. Error: %1 Không thể bắt đầu giao dịch. Lỗi: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. Không thể lưu dữ liệu mô tả torrent. Lỗi: %1. - + Couldn't store resume data for torrent '%1'. Error: %2 Không thể lưu trữ dữ liệu tiếp tục cho torrent '%1'. Lỗi: %2 - + Couldn't delete resume data of torrent '%1'. Error: %2 Không thể xóa dữ liệu tiếp tục của torrent '%1'. Lỗi: %2 - + Couldn't store torrents queue positions. Error: %1 Không thể lưu được vị trí hàng đợi torrent. Lỗi: %1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 Hỗ trợ Bảng Băm Phân Tán (DHT): %1 - - - - - - - - - + + + + + + + + + ON BẬT - - - - - - - - - + + + + + + + + + OFF TẮT - - + + Local Peer Discovery support: %1 Hỗ trợ tìm kiếm ngang hàng địa phương: %1 - + Restart is required to toggle Peer Exchange (PeX) support Khởi động lại là bắt buộc để chuyển đổi hỗ trợ trao đổi ngang hàng (PeX) - + Failed to resume torrent. Torrent: "%1". Reason: "%2" Tiếp tục tải xuống torrent thất bại/không thành công. Torrent: "%1". Reason: "%2" - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" Tiếp tục tải xuống torrent thất bại/không thành công: ID torrent không nhất quán đã được phát hiện/bị phát hiện/được nhận dạng. Torrent: "%1" - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" Đã phát hiện dữ liệu không nhất quán: danh mục bị thiếu trong tệp cấu hình. Danh mục sẽ được khôi phục nhưng cài đặt của nó sẽ được đặt lại về mặc định. Torrent: "%1". Danh mục: "%2" - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" Đã phát hiện dữ liệu không nhất quán: danh mục không hợp lệ. Torrent: "%1". Danh mục: "%2" - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" Đã phát hiện sự không khớp giữa các đường dẫn lưu của danh mục đã khôi phục và đường dẫn lưu hiện tại của torrent. Torrent hiện đã được chuyển sang chế độ Thủ công. Torrent: "%1". Danh mục: "%2" - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" Đã phát hiện dữ liệu không nhất quán: thiếu thẻ trong tệp cấu hình. Thẻ sẽ được phục hồi. Torrent: "%1". Thẻ: "%2" - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" Đã phát hiện dữ liệu không nhất quán: thẻ không hợp lệ. Torrent: "%1". Thẻ: "%2" - + System wake-up event detected. Re-announcing to all the trackers... Đã phát hiện sự kiện đánh thức hệ thống. Thông báo lại cho tất cả các máy theo dõi... - + Peer ID: "%1" ID Ngang hàng: "%1" - + HTTP User-Agent: "%1" Tác nhân Người dùng HTTP: '%1' - + Peer Exchange (PeX) support: %1 Hỗ trợ trao đổi ngang hàng (PeX): %1 - - + + Anonymous mode: %1 Chế độ ẩn danh: %1 - - + + Encryption support: %1 Hỗ trợ mã hóa: %1 - - + + FORCED BẮT BUỘC - + Could not find GUID of network interface. Interface: "%1" Không thể tìm thấy GUID của giao diện mạng. Giao diện: "%1" - + Trying to listen on the following list of IP addresses: "%1" Đang cố nghe danh sách địa chỉ IP sau: "%1" - + Torrent reached the share ratio limit. - Torrent đạt đến giới hạn tỷ lệ chia sẻ. + Torrent đã đến giới hạn tỷ lệ chia sẻ. - - - + Torrent: "%1". Torrent: "%1". - - - Removed torrent. - Xóa torrent. + Xóa torrent. - - - Removed torrent and deleted its content. - Đã xóa torrent và xóa nội dung của nó. + Đã xóa torrent và xóa nội dung của nó. - - - Torrent paused. - Torrent đã tạm dừng. + Torrent đã tạm dừng. - - - + Super seeding enabled. Đã bật siêu chia sẻ. - + Torrent reached the seeding time limit. Torrent đã đạt đến giới hạn thời gian chia sẻ. - + Torrent reached the inactive seeding time limit. - + Torrent đã đạt đến giới hạn thời gian chia sẻ không hoạt động. - + Failed to load torrent. Reason: "%1" Không tải được torrent. Lý do: "%1" - + I2P error. Message: "%1". + Lỗi I2P. Thông báo: "%1". + + + + UPnP/NAT-PMP support: ON + Hỗ trợ UPnP/NAT-PMP: BẬT + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - Đang tải xuống torrent, vui lòng đợi... Nguồn: "%1" + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - Không thể tải torrent. Nguồn: "%1". Lý do: "%2" + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - Đã phát hiện nỗ lực thêm một torrent trùng lặp. Gộp các máy theo dõi bị tắt. Torrent: %1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - Đã phát hiện nỗ lực thêm một torrent trùng lặp. Không thể gộp các máy theo dõi vì đây là một torrent riêng tư. Torrent: %1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - Đã phát hiện nỗ lực thêm một torrent trùng lặp. Trình theo dõi được hợp nhất từ ​​nguồn mới. Torrent: %1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - Hỗ trợ UPnP/NAT-PMP: BẬT + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - Hỗ trợ UPnP/NAT-PMP: TẮT + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - Không xuất được torrent. Dòng chảy: "%1". Điểm đến: "%2". Lý do: "%3" + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - Đã hủy lưu dữ liệu tiếp tục. Số lượng torrent đang giải quyết: %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + Gộp các máy theo dõi bị tắt + + + + Trackers cannot be merged because it is a private torrent + - System network status changed to %1 - e.g: System network status changed to ONLINE - Trạng thái mạng hệ thống đã thay đổi thành %1 + + Trackers are merged from new source + Máy theo dõi được gộp từ ​​nguồn mới - ONLINE - TRỰC TUYẾN + + UPnP/NAT-PMP support: OFF + Hỗ trợ UPnP/NAT-PMP: TẮT - OFFLINE - NGOẠI TUYẾN + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + Không xuất được torrent. Dòng chảy: "%1". Điểm đến: "%2". Lý do: "%3" - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - Cấu hình mạng của %1 đã thay đổi, làm mới ràng buộc phiên + + Aborted saving resume data. Number of outstanding torrents: %1 + Đã hủy lưu dữ liệu tiếp tục. Số lượng torrent đang giải quyết: %1 - + The configured network address is invalid. Address: "%1" Địa chỉ mạng đã cấu hình không hợp lệ. Địa chỉ: "%1" - - + + Failed to find the configured network address to listen on. Address: "%1" Không thể tìm thấy địa chỉ mạng được định cấu hình để nghe. Địa chỉ: "%1" - + The configured network interface is invalid. Interface: "%1" Giao diện mạng được cấu hình không hợp lệ. Giao diện: "%1" - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" Đã từ chối địa chỉ IP không hợp lệ trong khi áp dụng danh sách các địa chỉ IP bị cấm. IP: "%1" - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" Đã thêm máy theo dõi vào torrent. Torrent: "%1". Máy theo dõi: "%2" - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" Đã xóa máy theo dõi khỏi torrent. Torrent: "%1". Máy theo dõi: "%2" - + Added URL seed to torrent. Torrent: "%1". URL: "%2" Đã thêm URL chia sẻ vào torrent. Torrent: "%1". URL: "%2" - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" Đã URL seed khỏi torrent. Torrent: "%1". URL: "%2" - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent tạm dừng. Torrent: "%1" + Torrent tạm dừng. Torrent: "%1" - + Torrent resumed. Torrent: "%1" Torrent đã tiếp tục. Torrent: "%1" - + Torrent download finished. Torrent: "%1" Tải xuống torrent đã hoàn tất. Torrent: "%1" - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" Di chuyển Torrent bị hủy bỏ. Torrent: "%1". Nguồn: "%2". Đích đến: "%3" - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination Không thể xếp hàng di chuyển torrent. Torrent: "%1". Nguồn: "%2". Đích đến: "%3". Lý do: torrent hiện đang di chuyển đến đích - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location Không thể xếp hàng di chuyển torrent. Torrent: "%1". Nguồn: "%2" Đích đến: "%3". Lý do: hai đường dẫn trỏ đến cùng một vị trí - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" Đã xếp hàng di chuyển torent. Torrent: "%1". Nguồn: "%2". Đích đến: "%3" - + Start moving torrent. Torrent: "%1". Destination: "%2" Bắt đầu di chuyển torrent. Torrent: "%1". Đích đến: "%2" - + Failed to save Categories configuration. File: "%1". Error: "%2" Không lưu được cấu hình Danh mục. Tập tin: "%1". Lỗi: "%2" - + Failed to parse Categories configuration. File: "%1". Error: "%2" Không thể phân tích cú pháp cấu hình Danh mục. Tập tin: "%1". Lỗi: "%2" - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - Tải xuống đệ quy tệp .torrent trong torrent. Nguồn torrent: "%1". Tệp: "%2" - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - Không tải được tệp .torrent trong torrent. Nguồn torrent: "%1". Tập tin: "%2". Lỗi: "%3" - - - + Successfully parsed the IP filter file. Number of rules applied: %1 Đã phân tích cú pháp thành công tệp bộ lọc IP. Số quy tắc được áp dụng: %1 - + Failed to parse the IP filter file Không thể phân tích cú pháp tệp bộ lọc IP - + Restored torrent. Torrent: "%1" Đã khôi phục torrent. Torrent: "%1" - + Added new torrent. Torrent: "%1" Đã thêm torrent mới. Torrent: "%1" - + Torrent errored. Torrent: "%1". Error: "%2" Torrent đã bị lỗi. Torrent: "%1". Lỗi: "%2" - - Removed torrent. Torrent: "%1" - Đã xóa torrent. Torrent: "%1" + Đã xóa torrent. Torrent: "%1" - Removed torrent and deleted its content. Torrent: "%1" - Đã xóa torrent và xóa nội dung của nó. Torrent: "%1" + Đã xóa torrent và xóa nội dung của nó. Torrent: "%1" - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent thiếu tham số SSL. Torrent: "%1". Thông báo: "%2" + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" Cảnh báo lỗi tập tin. Torrent: "%1". Tập tin: "%2". Lý do: "%3" - + UPnP/NAT-PMP port mapping failed. Message: "%1" Ánh xạ cổng UPnP/NAT-PMP không thành công. Thông báo: "%1" - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" Ánh xạ cổng UPnP/NAT-PMP đã thành công. Thông báo: "%1" - + IP filter this peer was blocked. Reason: IP filter. Lọc IP - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). đã lọc cổng (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). cổng đặc quyền (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + Phiên BitTorrent gặp lỗi nghiêm trọng. Lý do: "%1" + + + SOCKS5 proxy error. Address: %1. Message: "%2". Lỗi proxy SOCKS5. Địa chỉ %1. Thông báo: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 hạn chế chế độ hỗn hợp - + Failed to load Categories. %1 Không tải được Danh mục. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" Không tải được cấu hình Danh mục. Tập tin: "%1". Lỗi: "Định dạng dữ liệu không hợp lệ" - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - Đã xóa torrent nhưng không xóa được nội dung và/hoặc phần tệp của nó. Torrent: "%1". Lỗi: "%2" + Đã xóa torrent nhưng không xóa được nội dung và/hoặc phần tệp của nó. Torrent: "%1". Lỗi: "%2" - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 đã tắt - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 đã tắt - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - Tra cứu DNS URL chia sẻ không thành công. Torrent: "%1". URL: "%2". Lỗi: "%3" + Tra cứu DNS URL chia sẻ không thành công. Torrent: "%1". URL: "%2". Lỗi: "%3" - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" Đã nhận được thông báo lỗi từ URL chia sẻ. Torrent: "%1". URL: "%2". Thông báo: "%3" - + Successfully listening on IP. IP: "%1". Port: "%2/%3" Nghe thành công trên IP. IP: "%1". Cổng: "%2/%3" - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" Không nghe được trên IP. IP: "%1". Cổng: "%2/%3". Lý do: "%4" - + Detected external IP. IP: "%1" Đã phát hiện IP bên ngoài. IP: "%1" - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" Lỗi: Hàng đợi cảnh báo nội bộ đã đầy và cảnh báo bị xóa, bạn có thể thấy hiệu suất bị giảm sút. Loại cảnh báo bị giảm: "%1". Tin nhắn: "%2" - + Moved torrent successfully. Torrent: "%1". Destination: "%2" Đã chuyển torrent thành công. Torrent: "%1". Đích đến: "%2" - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" Không thể di chuyển torrent. Torrent: "%1". Nguồn: "%2". Đích đến: "%3". Lý do: "%4" - BitTorrent::TorrentCreator + BitTorrent::TorrentCreationTask - - Operation aborted - Hoạt động bị hủy bỏ - - - - - Create new torrent file failed. Reason: %1. - Tạo tệp torrent mới thất bại. Lý do: %1. + + Failed to start seeding. + Thất bại seeding. - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - Hoạt động bị hủy bỏ + Thao tác bị hủy bỏ + + Create new torrent file failed. Reason: %1. - Tạo tệp torrent mới thất bại. Lý do: %1. + Tạo tệp torrent mới thất bại. Lý do: %1. BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 - Không thêm được máy ngang hàng "%1" vào torrent "%2". Lý do: %3 + Thất bại thêm máy ngang hàng "%1" vào torrent "%2". Lý do: %3 - + Peer "%1" is added to torrent "%2" Máy ngang hàng "%1" được thêm vào torrent "%2" - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. Đã phát hiện dữ liệu không mong muốn. Torrent: %1. Dữ liệu: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. Không thể ghi vào tệp. Lý do: "%1". Torrent hiện ở chế độ "chỉ tải lên". - + Download first and last piece first: %1, torrent: '%2' Tải về phần đầu và phần cuối trước: %1, torrent: '%2' - + On Mở - + Off Tắt - + + Failed to reload torrent. Torrent: %1. Reason: %2 + Không thể tải lại torrent. Torrent: %1. Lý do: %2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" Tạo dữ liệu tiếp tục không thành công. Torrent: "%1". Lý do: "%2" - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" Khôi phục torrent thất bại. Các tệp có thể đã được di chuyển hoặc không thể truy cập bộ nhớ. Torrent: "%1". Lý do: "%2" - + Missing metadata Thiếu dữ liệu mô tả - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" Đổi tên tệp thất bại. Torrent: "%1", tệp: "%2", lý do: "%3" - + Performance alert: %1. More info: %2 Cảnh báo hiệu suất: %1. Thông tin khác: %2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' Tham số '%1' phải theo cú pháp '%1=%2' - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' Tham số '%1' phải theo cú pháp '%1=%2' - + Expected integer number in environment variable '%1', but got '%2' Số nguyên mong đợi trong biến môi trường '%1', nhưng có '%2' - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - Tham số '%1' phải theo cú pháp '%1=%2' + Tham số '%1' phải theo cú pháp '%1=%2' - + Expected %1 in environment variable '%2', but got '%3' Dự kiến %1 trong biến môi trường '%2', nhưng có '%3' - - + + %1 must specify a valid port (1 to 65535). %1 phải nêu một cổng hợp lệ (1 tới 65535). - + Usage: Sử dụng: - + [options] [(<filename> | <url>)...] [tùy chọn] [(<filename> | <url>)...] - + Options: Tùy chọn: - + Display program version and exit Hiển thị phiên bản chương trình và thoát - + Display this help message and exit Hiển thị thông báo trợ giúp này và thoát - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + Tham số '%1' phải theo cú pháp '%1=%2' + + + + Confirm the legal notice + Xác nhận thông báo pháp lý + + + + port cổng - - Change the Web UI port - Thay đổi cổng giao diện người dùng Web + + Change the WebUI port + Thay đổi cổng WebUI - + Change the torrenting port Thay đổi cổng torrent - + Disable splash screen Tắt màn hình giật gân - + Run in daemon-mode (background) Chạy ở chế độ-daemon (nền) - + dir Use appropriate short form or abbreviation of "directory" dir - + Store configuration files in <dir> Lưu trữ các tệp cấu hình trong <dir> - - + + name tên - + Store configuration files in directories qBittorrent_<name> Lưu trữ các tệp cấu hình trong thư mục qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory Tấn công vào tệp fastresume libtorrent và tạo đường dẫn tệp liên quan đến thư mục hồ sơ - + files or URLs tập tin hoặc URL - + Download the torrents passed by the user Tải xuống torrent được chấp thuận bởi người dùng - + Options when adding new torrents: Các tùy chọn khi thêm torrent mới: - + path đường dẫn - + Torrent save path Đường dẫn lưu torrent - + + Add torrents as running or stopped + + + Add torrents as started or paused - Thêm torrent khi bắt đầu hoặc tạm dừng + Thêm torrent khi bắt đầu hoặc tạm dừng - + Skip hash check Bỏ qua kiểm tra băm - + Assign torrents to category. If the category doesn't exist, it will be created. Gán torrent cho danh mục. Nếu danh mục không tồn tại, nó sẽ được tạo. - + Download files in sequential order Tải về các tệp theo thứ tự tuần tự - + Download first and last pieces first Tải về phần đầu và phần cuối trước - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. Chỉ định xem hộp thoại "Thêm Torrent mới" có mở khi thêm torrent hay không. - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: Giá trị tùy chọn có thể được cung cấp qua các biến môi trường. Đối với tùy chọn tên 'parameter-name', tên biến môi trường là 'QBT_PARAMETER_NAME' (nếu viết hoa, '-' được thay bằng '_'). Để thông qua giá trị canh, đặt biến thành '1' hoặc 'TRUE'. Lấy ví dụ, để vô hiệu hóa màn hình khởi động: - + Command line parameters take precedence over environment variables Tham số dòng lệnh được ưu tiên hơn giá trị môi trường - + Help Trợ giúp @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories Danh mục - + All Tất cả - + Uncategorized Chưa phân loại @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - Tiếp tục torrent + Start torrents + + Stop torrents + + + + Resume torrents + Tiếp tục torrent + + Pause torrents - Tạm dừng các torrent + Tạm dừng các torrent @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... Sửa... - + Reset Cài lại + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 Không tải được biểu định kiểu chủ đề tùy chỉnh. %1 - + Failed to load custom theme colors. %1 Không tải được màu chủ đề tùy chỉnh. %1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 Không tải được màu chủ đề mặc định. %1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - Đồng thời xóa vĩnh viễn các tệp + Đồng thời xóa vĩnh viễn các tệp - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? Bạn có chắc muốn xóa '%1' từ danh sách trao đổi? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? Bạn có chắc muốn xóa những %1 torrent này từ danh sách trao đổi? - + Remove Xóa @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Tải về từ URL - + Add torrent links Thêm liên kết torrent - + One link per line (HTTP links, Magnet links and info-hashes are supported) Một liên kết trên mỗi dòng (liên kết HTTP, liên kết nam châm và băm thông tin được hỗ trợ) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Tải về - + No URL entered Chưa có URL được điền - + Please type at least one URL. Vui lòng nhập ít nhất một URL. @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Lỗi phân tích cú pháp: Tệp bộ lọc không phải là tệp PeerGuardian P2B hợp lệ. + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + Đang tải torrent... Nguồn: "%1" - Trackers cannot be merged because it is a private torrent - + Không thể hợp nhất máy theo dõi vì đây là torrent riêng tư - + Torrent is already present - Torrent đã tồn tại + Torrent đã tồn tại + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent '%1' đã có trong danh sách trao đổi. Bạn có muốn gộp các máy theo dõi từ nguồn mới không? + Torrent '%1' đã có trong danh sách trao đổi. Bạn có muốn gộp các máy theo dõi từ nguồn mới không? GeoIPDatabase - - + + Unsupported database file size. Kích thước tệp cơ sở dữ liệu không được hỗ trợ. - + Metadata error: '%1' entry not found. Lỗi dữ liệu mô tả: không tìm thấy mục nhập '%1'. - + Metadata error: '%1' entry has invalid type. Lỗi dữ liệu mô tả: mục nhập '%1' có loại không hợp lệ. - + Unsupported database version: %1.%2 Phiên bản cơ sở dữ liệu không được hỗ trợ: %1.%2 - + Unsupported IP version: %1 Phiên bản IP không hỗ trợ: %1 - + Unsupported record size: %1 Kích thước bản ghi không hỗ trợ: %1 - + Database corrupted: no data section found. Cơ sở dữ liệu bị hỏng: không tìm thấy phần dữ liệu. @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 Kích thước yêu cầu http vượt quá giới hạn, đóng socket. Giới hạn: %1, IP: %2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" Phương thức yêu cầu HTTP không hợp lệ, đóng ổ cắm. IP: %1. Phương thức: "%2" - + Bad Http request, closing socket. IP: %1 Yêu cầu Http không hợp lệ, đóng ổ cắm. IP: %1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... Duyệt qua... - + Reset Cài lại - + Select icon Chọn biểu tượng - + Supported image files - Các tệp hình ảnh được hỗ trợ + Tệp ảnh được hỗ trợ + + + + LegalNotice + + + Legal Notice + Lưu ý về vấn đề Pháp Lý + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent là một chương trình chia sẻ tệp. Khi bạn chạy một torrent, dữ liệu của nó sẽ được cung cấp cho người khác bằng cách tải lên. Mọi nội dung bạn chia sẻ là trách nhiệm duy nhất của bạn. + + + + No further notices will be issued. + Không có thông báo nào khác sẽ được phát hành. + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + Nếu bạn đã đọc thông báo pháp lý, bạn có thể sử dụng tùy chọn dòng lệnh `--confirm-legal-notice` để chặn thông báo này. + + + + Press 'Enter' key to continue... + Nhấn phím 'Enter' để tiếp tục... LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 đã bị chặn. Lí do: %2. - + %1 was banned 0.0.0.0 was banned %1 đã bị cấm. @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 là một tham số dòng lệnh không xác định. - - + + %1 must be the single command line parameter. %1 phải là tham số dòng lệnh duy nhất. - - You cannot use %1: qBittorrent is already running for this user. - Bạn không thể sử dụng %1: qBittorrent đang chạy cho người dùng này. - - - + Run application with -h option to read about command line parameters. Chạy ứng dụng với tùy chọn -h để đọc về các tham số dòng lệnh. - + Bad command line Dòng lệnh xấu - + Bad command line: Dòng lệnh xấu: - + An unrecoverable error occurred. - + Đã xảy ra lỗi không thể khôi phục. - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent đã gặp lỗi không thể khôi phục. - - Legal Notice - Thông báo pháp lý - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent là một chương trình chia sẻ tệp. Khi bạn chạy một torrent, dữ liệu của nó sẽ được cung cấp cho người khác bằng cách tải lên. Mọi nội dung bạn chia sẻ là trách nhiệm duy nhất của bạn. - - - - No further notices will be issued. - Không có thông báo nào khác sẽ được phát hành. - - - - Press %1 key to accept and continue... - Nhấn phím %1 để chấp nhận và tiếp tục... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent là một chương trình chia sẻ tệp. Khi bạn chạy một torrent, dữ liệu của nó sẽ được cung cấp cho người khác bằng cách tải lên. Mọi nội dung bạn chia sẻ là trách nhiệm duy nhất của bạn. - -Không có thông báo nào khác sẽ được phát hành. + + You cannot use %1: qBittorrent is already running. + Bạn không thể sử dụng %1: qBittorrent đang chạy. - - Legal notice - Thông báo pháp lý + + Another qBittorrent instance is already running. + Một phiên bản qBittorrent khác đang chạy. - - Cancel - Hủy bỏ + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + Đã tìm thấy phiên bản qBittorrent không mong muốn. Thoát khỏi trường hợp này. ID tiến trình hiện tại: %1. - - I Agree - Tôi Đồng Ý + + Error when daemonizing. Reason: "%1". Error code: %2. + Lỗi khi daemonizing. Lý do: "%1". Mã lỗi: %2. @@ -3524,621 +3660,706 @@ Không có thông báo nào khác sẽ được phát hành. &Chỉnh sửa - + &Tools &Công cụ - + &File &Tệp - + &Help &Trợ giúp - + On Downloads &Done Khi Tải về &Hoàn tất - + &View &Xem - + &Options... &Tùy chọn... - &Resume - Tiếp tục + Tiếp tục - + &Remove Xóa - + Torrent &Creator Trình tạo &Torrent - - + + Alternative Speed Limits Giới Hạn Tốc Độ Thay Thế - + &Top Toolbar &Thanh công cụ Trên - + Display Top Toolbar Hiển thị Thanh công cụ Hàng đầu - + Status &Bar Thanh &Trạng thái - + Filters Sidebar Bộ Lọc Thanh Bên - + S&peed in Title Bar Tốc độ trên Thanh Tiêu đề - + Show Transfer Speed in Title Bar Hiển Thị Tốc Độ Truyền Tải Trong Thanh Tiêu Đề - + &RSS Reader &Trình đọc RSS - + Search &Engine Máy &Tìm kiếm - + L&ock qBittorrent Kh&óa qBittorrent - + Do&nate! Đó&ng góp! - + + Sh&utdown System + + + + &Do nothing &Không làm gì cả - + Close Window Đóng cửa sổ - R&esume All - Tiếp tục Tất cả + Tiếp tục Tất cả - + Manage Cookies... Quản lý Cookie... - + Manage stored network cookies Quản lý cookie mạng được lưu trữ - + Normal Messages Thông báo Bình thường - + Information Messages Thông báo Thông tin - + Warning Messages Thông báo Cảnh báo - + Critical Messages Thông Báo Quan Trọng - + &Log &Nhật ký - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... Đặt Giới Hạn Tốc Độ Chung... - + Bottom of Queue Dưới cùng của Hàng đợi - + Move to the bottom of the queue Dời xuống dưới cùng của hàng đợi - + Top of Queue Trên cùng của Hàng đợi - + Move to the top of the queue Dời lên trên cùng của hàng đợi - + Move Down Queue Di chuyển Xuống Hàng đợi - + Move down in the queue Di chuyển xuống hàng đợi - + Move Up Queue Di chuyển Lên Hàng đợi - + Move up in the queue Dời lên trong hàng đợi - + &Exit qBittorrent &Thoát qBittorrent - + &Suspend System &Tạm ngừng Hệ thống - + &Hibernate System &Ngủ đông Hệ thống - S&hutdown System - T&ắt máy + T&ắt máy - + &Statistics &Thống kê - + Check for Updates Kiểm tra Cập nhật - + Check for Program Updates Kiểm tra Cập nhật Chương trình - + &About Thông tin - &Pause - Tạm dừng + Tạm dừng - P&ause All - Tạ&m Dừng Tất Cả + Tạ&m Dừng Tất Cả - + &Add Torrent File... &Thêm tệp Torrent... - + Open Mở - + E&xit T&hoát - + Open URL Mở URL - + &Documentation &Tài liệu Hướng dẫn - + Lock Khóa - - - + + + Show Hiển Thị - + Check for program updates Kiểm tra cập nhật chương trình - + Add Torrent &Link... Thêm &Liên kết Torrent... - + If you like qBittorrent, please donate! Nếu Bạn Thích qBittorrent, Hãy Quyên Góp! - - + + Execution Log Nhật Ký Thực Thi - + Clear the password Xóa mật khẩu - + &Set Password &Đặt Mật khẩu - + Preferences Tùy chọn - + &Clear Password &Xóa Mật khẩu - + Transfers Trao đổi - - + + qBittorrent is minimized to tray qBittorrent được thu nhỏ xuống khay hệ thống - - - + + + This behavior can be changed in the settings. You won't be reminded again. Hành vi này có thể được thay đổi trong cài đặt. Bạn sẽ không được nhắc lại. - + Icons Only Chỉ Biểu Tượng - + Text Only Chỉ Văn Bản - + Text Alongside Icons Biểu tượng văn bản dọc theo văn bản - + Text Under Icons Văn bản dưới biểu tượng - + Follow System Style Theo kiểu hệ thống - - + + UI lock password Mật Khẩu Khóa Giao Diện - - + + Please type the UI lock password: Vui Lòng Nhập Mật Khẩu Khóa Giao Diện: - + Are you sure you want to clear the password? Bạn có chắc chắn muốn xóa mật khẩu không? - + Use regular expressions Sử dụng biểu thức chính quy - - Search - Tìm Kiếm + + + Search Engine + Máy tìm kiếm - - Transfers (%1) - Trao đổi (%1) + + Search has failed + Tìm kiếm thất bại - Recursive download confirmation - Xác nhận Tải về Đệ quy + + Search has finished + Tìm kiếm đã kết thúc - Never - Không Bao Giờ + + Search + Tìm Kiếm + + + + Transfers (%1) + Trao đổi (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent vừa được cập nhật và cần được khởi động lại để các thay đổi có hiệu lực. - + qBittorrent is closed to tray qBittorrent được đóng xuống khay hệ thống - + Some files are currently transferring. Một số tệp hiện đang trao đổi. - + Are you sure you want to quit qBittorrent? Bạn có chắc mình muốn thoát qBittorrent? - + &No &Không - + &Yes &Đồng ý - + &Always Yes &Luôn Đồng ý - + Options saved. Đã lưu Tùy chọn. - %1/s - s is a shorthand for seconds - %1/giây + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime Thiếu thời gian chạy Python - + qBittorrent Update Available Cập Nhật qBittorrent Có Sẵn - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? Cần Python để sử dụng công cụ tìm kiếm nhưng nó dường như không được cài đặt. Bạn muốn cài đặt nó bây giờ không? - + Python is required to use the search engine but it does not seem to be installed. Python được yêu cầu để sử dụng công cụ tìm kiếm nhưng nó dường như không được cài đặt. - - + + Old Python Runtime Python Runtime cũ - + A new version is available. Một phiên bản mới có sẵn. - + Do you want to download %1? Bạn có muốn tải về %1? - + Open changelog... Mở nhật ký thay đổi... - + No updates available. You are already using the latest version. Không có bản cập nhật có sẵn. Bạn đang sử dụng phiên bản mới nhất. - + &Check for Updates &Kiểm tra Cập nhật - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? Phiên bản Python của bạn (%1) đã lỗi thời. Yêu cầu tối thiểu: %2. Bạn có muốn cài đặt phiên bản mới hơn ngay bây giờ không? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. Phiên bản Python của bạn (%1) đã lỗi thời. Vui lòng nâng cấp lên phiên bản mới nhất để công cụ tìm kiếm hoạt động. Yêu cầu tối thiểu: %2. - + + Paused + Tạm dừng + + + Checking for Updates... Đang kiểm tra Cập nhật... - + Already checking for program updates in the background Đã kiểm tra các bản cập nhật chương trình trong nền - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error Lỗi tải về - Python setup could not be downloaded, reason: %1. Please install it manually. - Không thể tải xuống thiết lập Python, lý do: %1. + Không thể tải xuống thiết lập Python, lý do: %1. Hãy cài đặt thủ công. - - + + Invalid password Mật Khẩu Không Hợp Lệ - + Filter torrents... Lọc torrent... - + Filter by: Lọc bởi: - + The password must be at least 3 characters long Mật khẩu buộc phải dài ít nhất 3 ký tự - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent '%1' chứa các tệp .torrent, bạn có muốn tiếp tục tải chúng xuống không? - - - + The password is invalid Mật khẩu không hợp lệ - + DL speed: %1 e.g: Download speed: 10 KiB/s Tốc độ TX: %1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s Tốc độ TL: %1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide Ẩn - + Exiting qBittorrent Thoát qBittorrent - + Open Torrent Files Mở Các Tệp Torrent - + Torrent Files Các Tệp Torrent @@ -4199,133 +4420,133 @@ Hãy cài đặt thủ công. Net::DownloadHandlerImpl - - + + I/O Error: %1 Lỗi I/O: %1 - + The file size (%1) exceeds the download limit (%2) Kích thước tệp (%1) vượt quá giới hạn tải xuống (%2) - + Exceeded max redirections (%1) Đã vượt quá số lần chuyển hướng tối đa (%1) - + Redirected to magnet URI Đã chuyển hướng đến URI nam châm - + The remote host name was not found (invalid hostname) Không tìm thấy tên máy chủ từ xa (tên máy chủ không hợp lệ) - + The operation was canceled Các hoạt động đã bị hủy bỏ - + The remote server closed the connection prematurely, before the entire reply was received and processed Máy chủ từ xa đã đóng kết nối sớm, trước khi toàn bộ phản hồi được nhận và xử lý - + The connection to the remote server timed out Đã hết thời gian kết nối với máy chủ từ xa - + SSL/TLS handshake failed Bắt tay SSL/TLS không thành công - + The remote server refused the connection Máy chủ từ xa từ chối kết nối - + The connection to the proxy server was refused Kết nối với máy chủ proxy bị từ chối - + The proxy server closed the connection prematurely Máy chủ proxy đã đóng kết nối sớm - + The proxy host name was not found Không tìm thấy tên máy chủ proxy - + The connection to the proxy timed out or the proxy did not reply in time to the request sent Đã hết thời gian kết nối với proxy hoặc proxy không trả lời kịp thời yêu cầu được gửi - + The proxy requires authentication in order to honor the request but did not accept any credentials offered Proxy yêu cầu xác thực để thực hiện yêu cầu nhưng không chấp nhận bất kỳ thông tin đăng nhập nào được cung cấp - + The access to the remote content was denied (401) Quyền truy cập vào nội dung từ xa bị từ chối (401) - + The operation requested on the remote content is not permitted Hoạt động đã yêu cầu trên nội dung từ xa không được phép - + The remote content was not found at the server (404) Không tìm thấy nội dung từ xa tại máy chủ (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted Máy chủ từ xa yêu cầu xác thực để phục vụ nội dung nhưng thông tin đăng nhập đã cung cấp không được chấp nhận - + The Network Access API cannot honor the request because the protocol is not known API Truy Cập Mạng không thể thực hiện yêu cầu vì giao thức không được xác định - + The requested operation is invalid for this protocol Thao tác đã yêu cầu không hợp lệ đối với giao thức này - + An unknown network-related error was detected Một lỗi không xác định liên quan đến mạng đã được phát hiện - + An unknown proxy-related error was detected Đã phát hiện lỗi không xác định liên quan đến proxy - + An unknown error related to the remote content was detected Đã phát hiện lỗi không xác định liên quan đến nội dung từ xa - + A breakdown in protocol was detected Một sự cố trong giao thức đã được phát hiện - + Unknown error Không rõ lỗi @@ -4333,7 +4554,12 @@ Hãy cài đặt thủ công. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" Đang bỏ qua lỗi SSL, URL: "%1", lỗi: "%2" @@ -5705,294 +5931,307 @@ Hãy cài đặt thủ công. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced Nâng cao - + Customize UI Theme... Tùy chỉnh chủ đề giao diện người dùng... - + Transfer List Danh sách Trao đổi - + Confirm when deleting torrents Xác nhận khi xóa torrent - Shows a confirmation dialog upon pausing/resuming all the torrents - Hiển thị hộp thoại xác nhận khi tạm dừng/tiếp tục tất cả các torrent + Hiển thị hộp thoại xác nhận khi tạm dừng/tiếp tục tất cả các torrent - Confirm "Pause/Resume all" actions - Xác nhận hành động "Tạm dừng/Tiếp tục tất cả" + Xác nhận hành động "Tạm dừng/Tiếp tục tất cả" - + Use alternating row colors In table elements, every other row will have a grey background. Sử dụng các màu hàng xen kẽ - + Hide zero and infinity values Ẩn các giá trị không và vô cùng - + Always Luôn luôn - Paused torrents only - Chỉ torrent bị tạm dừng + Chỉ torrent bị tạm dừng - + Action on double-click Thao tác khi đúp chuột - + Downloading torrents: Đang tải xuống torrent: - - Start / Stop Torrent - Khởi chạy / Dừng Torrent + Khởi chạy / Dừng Torrent - - + + Open destination folder Mở thư mục đích - - + + No action Không thao tác - + Completed torrents: Torrent đã hoàn tất: - + Auto hide zero status filters Tự động ẩn bộ lọc trạng thái không - + Desktop Màn hình nền - + Start qBittorrent on Windows start up Khởi chạy qBittorrent lúc Windows khởi động - + Show splash screen on start up Hiển thị màn hình giới thiệu khi mới chạy - + Confirmation on exit when torrents are active Xác nhận thoát khi torrent đang hoạt động - + Confirmation on auto-exit when downloads finish Xác nhận tự động thoát khi tải xuống hoàn tất - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>Để đặt qBittorrent mặc định cho tệp .torrent và liên kết Magnet<br/>bạn có thể dùng hộp thoại <span style=" font-weight:600;">Chương Trình Mặc Định</span> từ<span style=" font-weight:600;">Bảng Điều Khiển</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Bố cục nội dung torrent: - + Original Gốc - + Create subfolder Tạo thư mục con - + Don't create subfolder Không tạo thư mục con - + The torrent will be added to the top of the download queue Torrent sẽ được thêm vào đầu hàng đợi tải xuống - + Add to top of queue The torrent will be added to the top of the download queue Thêm vào đầu hàng đợi - + When duplicate torrent is being added Khi torrent trùng lặp đang được thêm vào - + Merge trackers to existing torrent Gộp máy theo dõi với torrent hiện có - + + Keep unselected files in ".unwanted" folder + Giữ các tập tin không được chọn trong thư mục ".unwanted" + + + Add... Thêm... - + Options.. Tùy chọn... - + Remove Xóa - + Email notification &upon download completion Thông báo qua email khi tải về xong - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Giao thức kết nối ngang hàng: - + Any Bất kỳ - + I2P (experimental) I2P (thử nghiệm) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>Nếu &quot;chế độ hỗn hợp&quot; được bật Các torrent I2P cũng được phép nhận các máy ngang hàng từ các nguồn khác ngoài trình theo dõi và kết nối với các IP thông thường, không cung cấp bất kỳ ẩn danh nào. Điều này có thể hữu ích nếu người dùng không quan tâm đến việc ẩn danh I2P, nhưng vẫn muốn có thể kết nối với các máy ngang hàng I2P.</p></body></html> + <html><head/><body><p>Nếu &quot;chế độ hỗn hợp&quot; được bật Các torrent I2P cũng được phép nhận các máy ngang hàng từ các nguồn khác ngoài trình theo dõi và kết nối với các IP thông thường, không cung cấp bất kỳ ẩn danh nào. Điều này có thể hữu ích nếu người dùng không quan tâm đến việc ẩn danh I2P, nhưng vẫn muốn có thể kết nối với các máy ngang hàng I2P.</p></body></html> - + Mixed mode Chế độ hỗn hợp - + Some options are incompatible with the chosen proxy type! Một số tùy chọn không tương thích với loại proxy đã chọn! - + If checked, hostname lookups are done via the proxy Nếu được chọn, tra cứu tên máy chủ được thực hiện thông qua proxy - + Perform hostname lookup via proxy Thực hiện tra cứu tên máy chủ qua proxy - + Use proxy for BitTorrent purposes Sử dụng proxy cho mục đích BitTorrent - + RSS feeds will use proxy Nguồn cấp dữ liệu RSS sẽ sử dụng proxy - + Use proxy for RSS purposes Sử dụng proxy cho mục đích RSS - + Search engine, software updates or anything else will use proxy Công cụ tìm kiếm, cập nhật phần mềm hoặc bất kỳ thứ gì khác sẽ sử dụng proxy - + Use proxy for general purposes Sử dụng proxy cho các mục đích chung - + IP Fi&ltering &Lọc IP - + Schedule &the use of alternative rate limits Sắp xếp &sử dụng giới hạn tỉ lệ khác - + From: From start time Từ: - + To: To end time Đến: - + Find peers on the DHT network Tìm ngang hàng trên mạng DHT - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Yêu cầu mã hóa: Chỉ kết nối đến máy ngang hàng với giao thức Tắt mã hóa: Chỉ kết nối đến máy ngang hàng không có giao thức mã hóa - + Allow encryption Cho phép mã hóa - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">Thêm thông tin</a>) - + Maximum active checking torrents: Hoạt dộng kiểm tra torrents tối đa: - + &Torrent Queueing &Hàng đợi Torrent - + When total seeding time reaches Khi tổng thời gian seeding đạt - + When inactive seeding time reaches Khi thời gian gieo hạt không hoạt động đạt đến - A&utomatically add these trackers to new downloads: - Tự động thêm các máy theo dõi này vào các bản tải về mới: + Tự động thêm các máy theo dõi này vào các bản tải về mới: - + RSS Reader Trình đọc RSS - + Enable fetching RSS feeds Bật nạp luồng RSS - + Feeds refresh interval: Khoảng làm mới luồng: - + + Same host request delay: + Độ trễ yêu cầu máy chủ tương tự: + + + Maximum number of articles per feed: Số lượng tối đa của các bài viết cho một luồng: - - - + + + min minutes phút - + Seeding Limits Giới hạn chia sẻ - - Pause torrent - Tạm dừng torrent + Pause torrent + Tạm dừng torrent + + + + Remove torrent + Loại bỏ torrent + + + + Remove torrent and its files + Xóa torrent và các tệp của nó + + + + Enable super seeding for torrent + Bật siêu chia sẻ cho torrent + + + + When ratio reaches + Khi tỷ lệ đạt đến + + + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + - - Remove torrent - Loại bỏ torrent + + Search UI + - - Remove torrent and its files - Xóa torrent và các tệp của nó + + Store opened tabs + - - Enable super seeding for torrent - Bật siêu chia sẻ cho torrent + + Also store search results + - - When ratio reaches - Khi tỷ lệ đạt đến + + History length + - + RSS Torrent Auto Downloader Trình Tải Về RSS Torrent Tự Động - + Enable auto downloading of RSS torrents Bật tự động tải về RSS torrents - + Edit auto downloading rules... Chỉnh sửa quy tắc tải về tự động... - + RSS Smart Episode Filter Bộ Lọc Tập Thông Minh RSS - + Download REPACK/PROPER episodes Tải về các tập phim REPACK/PROPER - + Filters: Bộ Lọc: - + Web User Interface (Remote control) Giao diện người dùng web (Điều khiển từ xa) - + IP address: Địa chỉ IP: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Nêu một địa chỉ IPv4 or IPv6. Bạn có thể nêu "0.0.0.0" c "::" cho bất kì địa chỉ IPv6 nào, hoặc "*" cho cả hai IPv4 và IPv6. - + Ban client after consecutive failures: Cấm máy khách sau các lần thất bại liên tiếp: - + Never Không bao giờ - + ban for: cấm: - + Session timeout: Thời gian chờ phiên: - + Disabled Vô hiệu hóa - Enable cookie Secure flag (requires HTTPS) - Bật cờ bảo mật cookie (yêu cầu HTTPS) + Bật cờ bảo mật cookie (yêu cầu HTTPS) - + Server domains: Miền máy chủ: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ bạn nên đặt tên miền được sử dụng bởi máy chủ WebUI. Sử dụng ';' để chia nhiều mục nhập. Có thể sử dụng ký tự đại diện '*'. - + &Use HTTPS instead of HTTP &Sử dụng HTTPS thay vì HTTP - + Bypass authentication for clients on localhost Bỏ qua xác thực máy khách trên máy chủ cục bộ. - + Bypass authentication for clients in whitelisted IP subnets Bỏ qua xác thực cho máy khách trong các mạng con IP được cho phép. - + IP subnet whitelist... Danh sách cho phép mạng con IP... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. Chỉ định IP proxy ngược (hoặc mạng con, ví dụ: 0.0.0.0/24) để sử dụng địa chỉ ứng dụng khách được chuyển tiếp (tiêu đề X-Forwarded-For). Sử dụng ';' để chia nhiều mục nhập. - + Upda&te my dynamic domain name Cập &nhật tên miền động của tôi - + Minimize qBittorrent to notification area Thu nhỏ qBittorrent vào vùng thông báo - + + Search + Tìm Kiếm + + + + WebUI + + + + Interface Giao diện - + Language: Ngôn ngữ: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: Kiểu biểu tượng khay hệ thống: - - + + Normal Bình thường - + File association Gắn kết tệp - + Use qBittorrent for .torrent files Sử dụng qBittorrent cho các tệp .torrent - + Use qBittorrent for magnet links Sử dụng qBittorrent cho các liên kết nam châm - + Check for program updates Kiểm tra cập nhật chương trình - + Power Management Quản lý năng lượng - + + &Log Files + + + + Save path: Đường dẫn lưu: - + Backup the log file after: Sao lưu tệp nhật ký sau: - + Delete backup logs older than: Xóa nhật ký sao lưu cũ hơn: - + + Show external IP in status bar + + + + When adding a torrent Khi thêm vào một torrent - + Bring torrent dialog to the front Đem hộp thoại torrent lên phía trước - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled Đồng thời xóa các tệp .torrent có phần bổ sung đã bị hủy - + Also when addition is cancelled Ngoài ra khi việc bổ sung bị hủy bỏ - + Warning! Data loss possible! Cảnh báo! Có thể mất dữ liệu! - + Saving Management Quản lý tiết kiệm - + Default Torrent Management Mode: Chế độ quản lý Torrent mặc định: - + Manual Thủ công - + Automatic Tự động - + When Torrent Category changed: Khi Danh mục Torrent bị thay đổi: - + Relocate torrent Đổi vị trí torrent - + Switch torrent to Manual Mode Chuyển torrent sang Chế độ thủ công - - + + Relocate affected torrents Đổi vị trí các torrent bị ảnh hưởng - - + + Switch affected torrents to Manual Mode Chuyển torrent bị ảnh hưởng sang Chế độ thủ công - + Use Subcategories Sử dụng các danh mục phụ - + Default Save Path: Đường dẫn Lưu Mặc định: - + Copy .torrent files to: Sao chép tệp .torrent đến: - + Show &qBittorrent in notification area Hiển thị &qBittorrent trong khu vực thông báo - &Log file - &Tệp nhật ký + &Tệp nhật ký - + Display &torrent content and some options Hiển thị nội dung &torrent và các tùy chọn khác` - + De&lete .torrent files afterwards Xóa các tập tin .torrent sau đó - + Copy .torrent files for finished downloads to: Sao chép các tệp .torrent đã tải về xong vào: - + Pre-allocate disk space for all files Phân bổ trước dung lượng đĩa cho tất cả các tệp - + Use custom UI Theme Dùng Chủ đề UI tự chọn - + UI Theme file: Tệp Chủ đề UI: - + Changing Interface settings requires application restart Thay đổi cài đặt Giao diện yêu cầu khởi động lại ứng dụng - + Shows a confirmation dialog upon torrent deletion Hiển thị hộp thoại xác nhận khi xóa torrent - - + + Preview file, otherwise open destination folder Xem trước tệp, nếu không, hãy mở thư mục đích - - Show torrent options - Hiển thị các tùy chọn torrent + Hiển thị các tùy chọn torrent - + Shows a confirmation dialog when exiting with active torrents Hiển thị hộp thoại xác nhận khi thoát với torrent đang hoạt động - + When minimizing, the main window is closed and must be reopened from the systray icon Khi thu nhỏ, cửa sổ chính sẽ bị đóng và phải được mở lại từ biểu tượng systray - + The systray icon will still be visible when closing the main window Biểu tượng systray sẽ vẫn hiển thị khi đóng cửa sổ chính - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window Đóng lại qBittorrent vào khay hệ thống - + Monochrome (for dark theme) Màu đơn (giao diện tối) - + Monochrome (for light theme) Màu đơn (giao diện sáng) - + Inhibit system sleep when torrents are downloading Ngăn chặn chế độ ngủ của hệ thống khi torrent đang tải xuống - + Inhibit system sleep when torrents are seeding Ngăn cản chế độ ngủ của hệ thống khi torrent đang khởi động - + Creates an additional log file after the log file reaches the specified file size Tạo tệp nhật ký bổ sung sau khi tệp nhật ký đạt đến kích thước tệp được chỉ định - + days Delete backup logs older than 10 days ngày - + months Delete backup logs older than 10 months tháng - + years Delete backup logs older than 10 years năm - + Log performance warnings Ghi nhật ký cảnh báo hiệu suất - The torrent will be added to download list in a paused state - Torrent sẽ được thêm vào danh sách tải xuống ở trạng thái tạm dừng + Torrent sẽ được thêm vào danh sách tải xuống ở trạng thái tạm dừng - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state Không bắt đầu tải xuống tự động - + Whether the .torrent file should be deleted after adding it Liệu tệp .torrent có bị xóa sau khi thêm nó hay không - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. Phân bổ kích thước tệp đầy đủ trên đĩa trước khi bắt đầu tải xuống, để giảm thiểu phân mảnh. Chỉ hữu ích cho HDDs. - + Append .!qB extension to incomplete files Nối phần mở rộng .!QB vào các tệp chưa hoàn chỉnh - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it Khi một torrent dược tải về, đề nghị thêm các torrent từ bất kỳ tệp .torrent nào tìm thấy trong nó - + Enable recursive download dialog Bật hộp thoại tải xuống đệ quy - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually Tự động: Các thuộc tính torrent khác nhau (ví dụ: đường dẫn lưu) sẽ do danh mục liên quan quyết định Thủ công: Các thuộc tính torrent khác nhau (ví dụ: đường dẫn lưu) phải được gán thủ công - + When Default Save/Incomplete Path changed: Khi Đường Dẫn Lưu/Chưa Hoàn Tất Mặc Định thay đổi: - + When Category Save Path changed: Khi Đường dẫn Lưu Danh mục bị thay đổi: - + Use Category paths in Manual Mode Dùng đường dẫn Danh Mục ở Chế Độ Thủ Công - + Resolve relative Save Path against appropriate Category path instead of Default one Xử lý Đường Dẫn Lưu tương đối dựa trên đường dẫn Danh Mục thích hợp thay vì đường dẫn Mặc định - + Use icons from system theme Sử dụng các biểu tượng từ chủ đề hệ thống - + Window state on start up: Trạng thái cửa sổ khi khởi động: - + qBittorrent window state on start up Trạng thái cửa sổ qBittorrent khi khởi động - + Torrent stop condition: Điều kiện dừng torrent: - - + + None Không có - - + + Metadata received Đã nhận dữ liệu mô tả - - + + Files checked Đã kiểm tra tệp - + Ask for merging trackers when torrent is being added manually Hỏi về gộp máy theo dõi khi torrent được thêm thủ công - + Use another path for incomplete torrents: Dùng một đường dẫn khác cho các torrent chưa xong: - + Automatically add torrents from: Tự động thêm torrent từ: - + Excluded file names Tên tệp bị loại trừ - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt: lọc chính xác tên tập tin. readme[0-9].txt: lọc 'readme1.txt', 'readme2.txt' nhưng không lọc 'readme10.txt'. - + Receiver Nhận - + To: To receiver Đến: - + SMTP server: Máy chủ SMTP: - + Sender Gửi - + From: From sender Từ: - + This server requires a secure connection (SSL) Máy chủ này yêu cầu kết nối an toàn (SSL) - - + + Authentication Xác thực - - - - + + + + Username: Tên người dùng: - - - - + + + + Password: Mật khẩu: - + Run external program Chạy chương trình bên ngoài - Run on torrent added - Chạy trên torrent đã thêm + Chạy trên torrent đã thêm - Run on torrent finished - Chạy trên torrent đã xong + Chạy trên torrent đã xong - + Show console window Hiển thị cửa sổ bảng điều khiển - + TCP and μTP TCP và μTP - + Listening Port Cổng Nghe - + Port used for incoming connections: Cổng được sử dụng cho các kết nối đến: - + Set to 0 to let your system pick an unused port Đặt là 0 để hệ thống chọn một cổng không sử dụng - + Random Ngẫu nhiên - + Use UPnP / NAT-PMP port forwarding from my router Sử dụng chuyển tiếp cổng UPnP / NAT-PMP từ bộ định tuyến của tôi - + Connections Limits Giới hạn Kết nối - + Maximum number of connections per torrent: Số lượng kết nối tối đa mỗi torrent: - + Global maximum number of connections: Số lượng kết nối tối đa chung: - + Maximum number of upload slots per torrent: Số lượng máy tải lên tối đa trên mỗi torrent: - + Global maximum number of upload slots: Số lượng máy tải lên tối đa chung: - + Proxy Server Máy chủ proxy - + Type: Loại: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: Máy chủ lưu trữ: - - - + + + Port: Cổng: - + Otherwise, the proxy server is only used for tracker connections Nếu không, máy chủ proxy chỉ dùng cho các kết nối máy theo dõi - + Use proxy for peer connections Sử dụng proxy cho các kết nối ngang hàng - + A&uthentication X&ác thực - + Info: The password is saved unencrypted Thông tin: Mật khẩu đã lưu không mã hóa - + Filter path (.dat, .p2p, .p2b): Đường dẫn bộ lọc (.dat, .p2p, .p2b): - + Reload the filter Tải lại bộ lọc - + Manually banned IP addresses... Các địa chỉ IP bị cấm theo cách thủ công... - + Apply to trackers Áp dụng với máy theo dõi - + Global Rate Limits Giới hạn Tỉ lệ Chung - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: Tải lên: - - + + Download: Tải về: - + Alternative Rate Limits Giới hạn Tỉ lệ Thay thế - + Start time Thời gian bắt đầu - + End time Thời gian kết thúc - + When: Vào lúc: - + Every day Mọi ngày - + Weekdays Ngày tuần - + Weekends Ngày cuối tuần - + Rate Limits Settings Cài đặt giới hạn tỷ lệ - + Apply rate limit to peers on LAN Áp dụng giới hạn tỉ lệ với ngang hàng trên LAN - + Apply rate limit to transport overhead Áp dụng giới hạn tốc độ cho mào đầu truyền tải - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol Áp dụng giới hạn tỉ lệ với giao thức uTP - + Privacy Riêng tư - + Enable DHT (decentralized network) to find more peers Bật DHT (mạng phi tập trung) để tìm thêm máy ngang hàng - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) Hoán chuyển mạng ngang hàng với các máy trạm Bittorrent tương thích (µTorrent, Vuze, ...) - + Enable Peer Exchange (PeX) to find more peers Bật Trao Đổi Ngang Hàng (PeX) để tìm thêm máy ngang hàng - + Look for peers on your local network Tìm các máy ngang hàng ở mạng cục bộ của bạn - + Enable Local Peer Discovery to find more peers Bật tính năng Khám phá ngang hàng cục bộ để tìm thêm máy ngang hàng khác - + Encryption mode: Chế độ mã hóa: - + Require encryption Yêu cầu mã hóa - + Disable encryption Vô hiệu mã hóa - + Enable when using a proxy or a VPN connection Bật khi sử dụng một kết nối proxy hoặc VPN - + Enable anonymous mode Bật chế độ ẩn danh - + Maximum active downloads: Tải xuống hoạt động tối đa: - + Maximum active uploads: Tải lên hoạt động tối đa: - + Maximum active torrents: Các torrent hoạt động tối đa: - + Do not count slow torrents in these limits Không tính các torrent chậm trong các giới hạn này - + Upload rate threshold: Ngưỡng tỉ lệ tải lên: - + Download rate threshold: Ngưỡng tỉ lệ tải xuống: - - - + + + + sec seconds giây - + Torrent inactivity timer: Đếm giờ torrent bất hoạt: - + then thì - + Use UPnP / NAT-PMP to forward the port from my router Sử dụng UPnP / NAT-PMP để chuyển tiếp cổng từ bộ định tuyến của tôi - + Certificate: Chứng chỉ: - + Key: Chìa khóa: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Thông tin về chứng chỉ</a> - + Change current password Thay đổi mật khẩu hiện tại - Use alternative Web UI - Sử dụng giao diện người dùng web thay thế + Sử dụng giao diện người dùng web thay thế - + Files location: Vị trí tập tin: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security Bảo mật - + Enable clickjacking protection Bật tính năng bảo vệ chống tấn công bằng nhấp chuột - + Enable Cross-Site Request Forgery (CSRF) protection Bật tính năng bảo vệ Truy vấn Yêu cầu Trên Trang web (CSRF) - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation Bật xác thực tiêu đề máy chủ lưu trữ - + Add custom HTTP headers Thêm tiêu đề HTTP tùy chỉnh - + Header: value pairs, one per line Phần đầu: các cặp giá trị, một cặp trên mỗi dòng - + Enable reverse proxy support Bật hỗ trợ proxy ngược - + Trusted proxies list: Danh sách proxy tin cậy: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: Dịch vụ: - + Register Đăng ký - + Domain name: Tên miền: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! Bằng cách bật các tùy chọn này, bạn có thể <strong>mất mãi mãi</strong> tệp .torrent của bạn! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog Nếu bạn bật tùy chọn thứ hai (&ldquo;khi việc bổ sung bị hủy&rdquo;) tập tin .torrent <strong>sẽ bị xóa</strong> kể cả khi bạn bấm &ldquo;<strong>Hủy</strong>&rdquo; trong hộp thoại &ldquo;Thêm torrent&rdquo; - + Select qBittorrent UI Theme file Chọn tệp chủ đề UI qBittorrent - + Choose Alternative UI files location Chọn vị trí tệp giao diện người dùng thay thế - + Supported parameters (case sensitive): Các thông số được hỗ trợ (phân biệt chữ hoa chữ thường): - + Minimized Thu nhỏ - + Hidden Ẩn - + Disabled due to failed to detect system tray presence Đã vô hiệu hóa vì không thể phát hiện được sự hiện diện của thanh hệ thống - + No stop condition is set. Không có điều kiện dừng nào được đặt. - + Torrent will stop after metadata is received. Torrent sẽ dừng sau khi nhận được dữ liệu mô tả. - - Torrents that have metadata initially aren't affected. - Các torrent có dữ liệu mô tả ban đầu không bị ảnh hưởng. - - - + Torrent will stop after files are initially checked. Torrent sẽ dừng sau khi tệp được kiểm tra lần đầu. - + This will also download metadata if it wasn't there initially. Điều này sẽ tải xuống dữ liệu mô tả nếu nó không có ở đó ban đầu. - + %N: Torrent name %N: Tên torrent - + %L: Category %L: Danh mục - + %F: Content path (same as root path for multifile torrent) %F: Đường dẫn nội dung (giống như đường dẫn gốc cho nhiều tệp torrent) - + %R: Root path (first torrent subdirectory path) %R: Đường dẫn gốc (đường dẫn thư mục con torrent đầu tiên) - + %D: Save path %D: Đường dẫn lưu - + %C: Number of files %C: Số lượng tệp - + %Z: Torrent size (bytes) %Z: Kích cỡ Torrent (bytes) - + %T: Current tracker %T: Máy theo dõi hiện tại - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") Mẹo: Bao bọc tham số bằng ngoặc kép để tránh văn bản bị cắt tại khoảng trắng (v.d., "%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (Trống) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Một torrent sẽ bị xem là chậm nếu tỉ lệ tải lên và tải xuống của nó ở dưới các giá trị sau trong "Đếm giờ torrent bất hoạt" giây - + Certificate Chứng chỉ - + Select certificate Chọn chứng chỉ - + Private key Key riêng tư - + Select private key Chọn key riêng tư - + + WebUI configuration failed. Reason: %1 + Cấu hình WebUI không thành công. Lý do: %1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor Chọn thư mục để theo dõi - + Adding entry failed Thêm mục nhập thất bại - - Location Error - Lỗi Vị trí + + The WebUI username must be at least 3 characters long. + Tên người dùng WebUI phải dài ít nhất 3 ký tự. + + + + The WebUI password must be at least 6 characters long. + Mật khẩu WebUI phải dài ít nhất 6 ký tự. - - The alternative Web UI files location cannot be blank. - Vị trí tệp giao diện người dùng Web thay thế không được để trống. + + Location Error + Lỗi Vị trí - - + + Choose export directory Chọn thư mục xuất - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well Khi bật các tùy chọn này, qBittorrent sẽ <strong>xóa</strong> tệp .torrent sau khi đã thêm thành công (tùy chọn 1) hoặc thất bại (tùy chọn 2) vào hàng đợi tải về. Nó sẽ được áp dụng <strong>không chỉ</strong> các tập tin mở với thao tác menu &ldquo;Thêm torrent&rdquo; mà còn với những thứ được mở bằng <strong>tệp liên kết</strong> - + qBittorrent UI Theme file (*.qbtheme config.json) Tệp chủ đề giao diện người dùng qBittorrent (*.qbtheme config.json) - + %G: Tags (separated by comma) %G: Thẻ (phân tách bằng dấu phẩy) - + %I: Info hash v1 (or '-' if unavailable) %I: thông tin băm v1 (hoặc '-' nếu không có) - + %J: Info hash v2 (or '-' if unavailable) %J: Băm thông tin v2 (hoặc '-' nếu không có) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K: ID Torrent (băm thông tin sha-1 cho torrent v1 hoặc băm thông tin sha-256 bị cắt ngắn cho v2 / torrent lai) - - - + + + Choose a save directory Chọn một chỉ mục lưu - + + Torrents that have metadata initially will be added as stopped. + Các torrent có dữ liệu mô tả ban đầu sẽ được thêm vào dưới dạng đã dừng. + + + Choose an IP filter file Chọn tệp bộ lọc IP - + All supported filters Tất cả các bộ lọc được hỗ trợ - + + The alternative WebUI files location cannot be blank. + Vị trí tệp WebUI thay thế không được để trống. + + + Parsing error Lỗi Phân tích cú pháp - + Failed to parse the provided IP filter Không phân tích được bộ lọc IP đã cung cấp - + Successfully refreshed Đã cập nhật thành công - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number Đã phân tích cú pháp thành công bộ lọc IP đã cung cấp: %1 quy tắc đã được áp dụng. - + Preferences Tùy chỉnh - + Time Error Lỗi Thời gian - + The start time and the end time can't be the same. Thời gian bắt đầu và thời gian kết thúc không được phép giống nhau. - - + + Length Error Lỗi độ dài - - - The Web UI username must be at least 3 characters long. - Tên người dùng giao diện người dùng Web phải dài ít nhất 3 ký tự. - - - - The Web UI password must be at least 6 characters long. - Mật khẩu giao diện người dùng Web phải dài ít nhất 6 ký tự. - PeerInfo - + Unknown Không rõ - + Interested (local) and choked (peer) Muốn có mảnh file (nội bộ) và không muốn gửi file (peer) - + Interested (local) and unchoked (peer) Muốn có mảnh (cục bộ) và muốn gửi đi dữ liệu (ngang hàng) - + Interested (peer) and choked (local) Muốn có mảnh (ngang hàng) và không muốn gửi đi dữ liệu (cục bộ) - + Interested (peer) and unchoked (local) Muốn có mảnh (ngang hàng) và muốn gửi đi dữ liệu (ngang hàng) - + Not interested (local) and unchoked (peer) Không muốn có mảnh (cục bộ) và muốn gửi đi dữ liệu (ngang hàng) - + Not interested (peer) and unchoked (local) không quan tâm(ngang hàng) và gỡ nghẽn mạng(nội bộ) - + Optimistic unchoke Optimistic unchoke - + Peer snubbed Máy ngang hàng bị bỏ rơi - + Incoming connection Kết nối đến - + Peer from DHT Máy ngang hàng từ DHT - + Peer from PEX Máy ngang hàng từ PEX - + Peer from LSD Máy ngang hàng từ LSD - + Encrypted traffic Lưu lượng được mã hóa - + Encrypted handshake Bắt tay được mã hóa + + + Peer is using NAT hole punching + + PeerListWidget @@ -7570,7 +7982,7 @@ readme[0-9].txt: lọc 'readme1.txt', 'readme2.txt' nhưng k Files i.e. files that are being downloaded right now - Các Tệp + Tệp @@ -7645,7 +8057,7 @@ readme[0-9].txt: lọc 'readme1.txt', 'readme2.txt' nhưng k Máy ngang hàng "%1" bị cấm theo cách thủ công - + N/A Không áp dụng @@ -7668,7 +8080,7 @@ readme[0-9].txt: lọc 'readme1.txt', 'readme2.txt' nhưng k Danh sách máy ngang hàng để thêm vào (một IP trên mỗi đường dây) - + Format: IPv4:port / [IPv6]:port Định dạng: IPv4:port / [IPv6]:port @@ -7709,27 +8121,27 @@ readme[0-9].txt: lọc 'readme1.txt', 'readme2.txt' nhưng k PiecesBar - + Files in this piece: Các tệp trong phần này: - + File in this piece: Tập tin trong mảnh này: - + File in these pieces: Tập tin trong các mảnh này: - + Wait until metadata become available to see detailed information Chờ cho đến khi dữ liệu mô tả có sẵn để xem thông tin chi tiết - + Hold Shift key for detailed information Giữ phím Shift để xem thông tin chi tiết @@ -7742,58 +8154,58 @@ readme[0-9].txt: lọc 'readme1.txt', 'readme2.txt' nhưng k Tìm kiếm plugin - + Installed search plugins: Các plugin tìm kiếm đã cài đặt: - + Name Tên - + Version Phiên bản - + Url Url - - + + Enabled Đã bật - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. Cảnh báo: Đảm bảo tuân thủ luật bản quyền của quốc gia bạn khi tải xuống torrent từ bất kỳ công cụ tìm kiếm nào trong số này. - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> Bạn có thể lấy các gói cài thêm công cụ tìm kiếm mới tại đây: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one Cài đặt một cái mới - + Check for updates Kiểm tra cập nhật - + Close Đóng - + Uninstall Gỡ bỏ @@ -7913,17 +8325,17 @@ Các plugin đó đã bị vô hiệu hóa. Nguồn tiện ích - + Search plugin source: Tìm kiếm nguồn plugin: - + Local file Tệp cục bộ - + Web link Liên kết Web @@ -7941,70 +8353,70 @@ Các plugin đó đã bị vô hiệu hóa. Power management found suitable D-Bus interface. Interface: %1 - + Quản lý năng lượng tìm thấy giao diện D-Bus phù hợp. Giao diện: %1 Power management error. Did not found suitable D-Bus interface. - + Lỗi quản lý nguồn. Không tìm thấy giao diện D-Bus phù hợp. Power management error. Action: %1. Error: %2 - + Lỗi quản lý nguồn. Hành động: %1. Lỗi: %2 Power management unexpected error. State: %1. Error: %2 - + Lỗi quản lý nguồn không mong muốn. Giai đoạn 1. Lỗi: %2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: Các tệp sau từ torrent "%1" hỗ trợ xem trước, vui lòng chọn một trong số chúng: - + Preview Xem trước - + Name Tên - + Size Kích cỡ - + Progress Tiến độ - + Preview impossible Không thể xem trước - + Sorry, we can't preview this file: "%1". Xin lỗi, chúng tôi không thể xem trước tệp này: "%1". - + Resize columns Đổi kích cỡ cột - + Resize all non-hidden columns to the size of their contents Thay đổi kích thước tất cả các cột không ẩn thành kích thước của nội dung của chúng @@ -8017,27 +8429,27 @@ Các plugin đó đã bị vô hiệu hóa. Private::FileLineEdit - + Path does not exist Đường dẫn không tồn tại - + Path does not point to a directory Đường dẫn không dẫn tới một chỉ mục - + Path does not point to a file Đường dẫn không chỉ tới một tập tin - + Don't have read permission to path Không có quyền đọc ở đường dẫn - + Don't have write permission to path Không có quyền ghi ở đường dẫn @@ -8078,12 +8490,12 @@ Các plugin đó đã bị vô hiệu hóa. PropertiesWidget - + Downloaded: Đã tải về: - + Availability: Khả dụng: @@ -8098,53 +8510,53 @@ Các plugin đó đã bị vô hiệu hóa. Trao đổi - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) Thời Gian Hoạt Động: - + ETA: ETA - + Uploaded: Đã tải lên: - + Seeds: Chia sẻ: - + Download Speed: Tốc độ Tải về: - + Upload Speed: Tốc Độ Tải Lên: - + Peers: Ngang hàng: - + Download Limit: Giới Hạn Tải Xuống: - + Upload Limit: Giới hạn Tải lên - + Wasted: Lãng phí: @@ -8154,193 +8566,249 @@ Các plugin đó đã bị vô hiệu hóa. Kết nối: - + Information Thông tin - + Info Hash v1: Thông Tin Băm v1: - + Info Hash v2: Thông Tin Băm v2: - + Comment: Bình luận: - + Select All Chọn Tất Cả - + Select None Không Chọn - + Share Ratio: Tỷ Lệ Chia Sẻ: - + Reannounce In: Thông báo lại Trong: - + Last Seen Complete: Lần Cuối Trông Thấy Hoàn Thành: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: Tổng Kích Thước: - + Pieces: Mảnh: - + Created By: Tạo Bởi: - + Added On: Thêm Lúc: - + Completed On: Hoàn Thành Lúc: - + Created On: Tạo Lúc: - + + Private: + + + + Save Path: Đường Dẫn Lưu: - + Never Không bao giờ - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (có %3) - - + + %1 (%2 this session) %1 (%2 phiên này) - - + + + N/A Không áp dụng - + + Yes + + + + + No + Không + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (đã chia sẻ cho %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (tối đa %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (tổng %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (%2 tr. bình) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - Web Chia Sẻ Mới + Web Chia Sẻ Mới - Remove Web seed - Loại bỏ seed Web + Loại bỏ seed Web - Copy Web seed URL - Sao chép URL seed Web + Sao chép URL seed Web - Edit Web seed URL - Chỉnh sửa đường dẫn seed Web + Chỉnh sửa đường dẫn seed Web - + Filter files... Bộ Lọc tệp ... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled Biểu đồ tốc độ bị tắt - + You can enable it in Advanced Options Bạn có thể bật nó trong Tùy Chọn Nâng Cao - New URL seed New HTTP source - URL chia sẻ mới + URL chia sẻ mới - New URL seed: - URL chia sẻ mới: + URL chia sẻ mới: - - This URL seed is already in the list. - URL chia sẻ này đã có trong danh sách. + URL chia sẻ này đã có trong danh sách. - + Web seed editing Đang chỉnh sửa seed Web - + Web seed URL: Đường liên kết seed Web: @@ -8359,22 +8827,22 @@ Các plugin đó đã bị vô hiệu hóa. Không thể lưu dữ liệu Trình tải xuống tự động RSS trong %1. Lỗi: %2 - + Invalid data format Định dạng dữ liệu không hợp lệ - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... Bài đăng RSS '%1' được chấp nhận theo quy tắc '%2'. Đang cố thêm torrent... - + Failed to read RSS AutoDownloader rules. %1 Không thể đọc các quy tắc RSS AutoDownloader. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 Không thể tải quy tắc Trình tải xuống tự động RSS. Lý do: %1 @@ -8382,22 +8850,22 @@ Các plugin đó đã bị vô hiệu hóa. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 Không tải xuống được nguồn cấp RSS tại '%1'. Lý do: %2 - + RSS feed at '%1' updated. Added %2 new articles. Đã cập nhật nguồn cấp dữ liệu RSS tại '%1'. Đã thêm %2 bài viết mới. - + Failed to parse RSS feed at '%1'. Reason: %2 Không thể phân tích cú pháp nguồn cấp dữ liệu RSS tại '%1'. Lý do: %2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. Luồng RSS tại '%1' đã được tải xuống thành công. Bắt đầu phân tích nó. @@ -8433,12 +8901,12 @@ Các plugin đó đã bị vô hiệu hóa. RSS::Private::Parser - + Invalid RSS feed. Luồng RSS không hợp lệ. - + %1 (line: %2, column: %3, offset: %4). %1 (dòng: %2, cột: %3, bù đắp: %4). @@ -8446,99 +8914,99 @@ Các plugin đó đã bị vô hiệu hóa. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" Không thể lưu cấu hình phiên RSS. Tệp: "%1". Lỗi: "%2" - + Couldn't save RSS session data. File: "%1". Error: "%2" Không thể lưu dữ liệu phiên RSS. Tệp: "%1". Lỗi: "%2" - - + + RSS feed with given URL already exists: %1. Nguồn cấp dữ liệu RSS với URL nhất định đã tồn tại: %1. - + Feed doesn't exist: %1. Luồng không tồn tại: %1. - + Cannot move root folder. Không thể di chuyển thư mục gốc. - - + + Item doesn't exist: %1. Mục không tồn tại: %1. - + Couldn't move folder into itself. Không thể di chuyển thư mục vào chính nó. - + Cannot delete root folder. Không thể xóa thư mục gốc. - + Failed to read RSS session data. %1 Không thể đọc dữ liệu phiên RSS. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" Không thể phân tích cú pháp dữ liệu phiên RSS. Tập tin: "%1". Lỗi: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." Không tải được dữ liệu phiên RSS. Tập tin: "%1". Lỗi: "Định dạng dữ liệu không hợp lệ." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. Không thể tải nguồn cấp dữ liệu RSS. Nguồn cấp dữ liệu: "%1". Lý do: URL là bắt buộc. - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. Không thể tải nguồn cấp dữ liệu RSS. Nguồn cấp dữ liệu: "%1". Lý do: UID không hợp lệ. - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. Đã tìm thấy nguồn cấp dữ liệu RSS trùng lặp. UID: "%1". Lỗi: Cấu hình dường như bị hỏng. - + Couldn't load RSS item. Item: "%1". Invalid data format. Không thể tải mục RSS. Mục: "%1". Định dạng dữ liệu không hợp lệ. - + Corrupted RSS list, not loading it. Danh sách RSS bị hỏng, không tải được. - + Incorrect RSS Item path: %1. Đường dẫn Mục RSS không chính xác: %1. - + RSS item with given path already exists: %1. Mục RSS với đường dẫn nhất định đã tồn tại: %1. - + Parent folder doesn't exist: %1. Thư mục mẹ không tồn tại: %1. @@ -8562,8 +9030,8 @@ Các plugin đó đã bị vô hiệu hóa. - - + + Mark items read Đánh dấu các mục đã đọc @@ -8588,132 +9056,132 @@ Các plugin đó đã bị vô hiệu hóa. Torrent: (nhấp đúp để tải xuống) - - + + Delete Xóa - + Rename... Đổi tên... - + Rename Đổi tên - - + + Update Cập nhật - + New subscription... Đăng ký mới - - + + Update all feeds Cập nhật tất cả các nguồn cấp dữ liệu - + Download torrent Tải xuống torrent - + Open news URL Mở URL tin tức - + Copy feed URL Sao chép luồng URL - + New folder... Thư mục mới... - + Edit feed URL... Sửa URL nguồn cấp... - + Edit feed URL Sửa URL nguồn cấp - + Please choose a folder name Vui lòng chọn tên thư mục - + Folder name: Tên thư mục: - + New folder Thư mục mới - - + + Please type a RSS feed URL Vui lòng nhập URL nguồn cấp RSS - - + + Feed URL: URL nguồn cấp dữ liệu: - + Deletion confirmation Xác nhận xóa - + Are you sure you want to delete the selected RSS feeds? Bạn có chắc muốn xóa các nguồn cấp RSS đã chọn không? - + Please choose a new name for this RSS feed Vui lòng chọn một tên mới cho nguồn cấp dữ liệu RSS này - + New feed name: Tên nguồn cấp dữ liệu mới: - + Rename failed Đổi tên thất bại - + Date: Ngày: - + Feed: - + Luồng: - + Author: Tác giả: @@ -8721,38 +9189,38 @@ Các plugin đó đã bị vô hiệu hóa. SearchController - + Python must be installed to use the Search Engine. Để dùng Công cụ Tìm kiếm cần phải cài đặt Python. - + Unable to create more than %1 concurrent searches. Không thể tạo nhiều hơn %1 tìm kiếm đồng thời. - - + + Offset is out of range Chênh lệch nằm ngoài phạm vi - + All plugins are already up to date. Tất cả các plugin đã được cập nhật. - + Updating %1 plugins Đang cập nhật %1 plugins - + Updating plugin %1 Đang cập nhật plugin %1 - + Failed to check for plugin updates: %1 Không thể kiểm tra các bản cập nhật plugin: %1 @@ -8827,132 +9295,146 @@ Các plugin đó đã bị vô hiệu hóa. Kích cỡ: - + Name i.e: file name Tên - + Size i.e: file size Kích cỡ - + Seeders i.e: Number of full sources Máy chia sẻ - + Leechers i.e: Number of partial sources Người leech - Search engine - Máy tìm kiếm + Máy tìm kiếm - + Filter search results... Lọc kết quả tìm kiếm... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results Kết quả (đang hiện <i>%1</i> trong tổng số <i>%2</i>): - + Torrent names only Chỉ tên torrent - + Everywhere Mọi nơi - + Use regular expressions Sử dụng biểu thức chính quy - + Open download window Mở cửa sổ tải xuống - + Download Tải về - + Open description page Mở trang mô tả - + Copy Sao chép - + Name Tên - + Download link Liên kết tải xuống - + Description page URL URL trang mô tả - + Searching... Đang tìm kiếm... - + Search has finished Tìm kiếm đã kết thúc - + Search aborted Tìm kiếm bị hủy bỏ - + An error occurred during search... Đã xảy ra lỗi khi tìm kiếm... - + Search returned no results Tìm kiếm không trả về kết quả - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility Hiển thị cột - + Resize columns Đổi kích cỡ cột - + Resize all non-hidden columns to the size of their contents Thay đổi kích thước tất cả các cột không ẩn thành kích thước của nội dung của chúng @@ -8960,104 +9442,104 @@ Các plugin đó đã bị vô hiệu hóa. SearchPluginManager - + Unknown search engine plugin file format. Định dạng tệp plugin của công cụ tìm kiếm không xác định. - + Plugin already at version %1, which is greater than %2 Phiên bản tiện ích đã là %1, mới hơn %2 - + A more recent version of this plugin is already installed. Một phiên bản mới hơn của tiện ích này đã được cài đặt. - + Plugin %1 is not supported. Tiện ích %1 không được hỗ trợ. - - + + Plugin is not supported. Tiện ích không được hỗ trợ. - + Plugin %1 has been successfully updated. Plugin %1 đã được cập nhật thành công. - + All categories Tất cả danh mục - + Movies Phim - + TV shows Chương trình TV - + Music Âm nhạc - + Games Trò chơi - + Anime Anime - + Software Phần mềm - + Pictures Hình ảnh - + Books Sách - + Update server is temporarily unavailable. %1 Máy chủ cập nhật tạm thời không khả dụng. %1 - - + + Failed to download the plugin file. %1 Không thể tải xuống tệp plugin. %1 - + Plugin "%1" is outdated, updating to version %2 Plugin "%1" đã lỗi thời, cập nhật lên phiên bản %2 - + Incorrect update info received for %1 out of %2 plugins. Đã nhận được thông tin cập nhật không chính xác cho %1 trong số %2 plugin. - + Search plugin '%1' contains invalid version string ('%2') Plugin tìm kiếm '%1' chứa chuỗi phiên bản không hợp lệ ('%2') @@ -9067,114 +9549,153 @@ Các plugin đó đã bị vô hiệu hóa. - - - - Search Tìm Kiếm - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. Không có bất kỳ plugin tìm kiếm nào được cài đặt. Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phải của cửa sổ để cài đặt một số plugin. - + Search plugins... Tìm kiếm plugins... - + A phrase to search for. Một cụm từ để tìm kiếm. - + Spaces in a search term may be protected by double quotes. Các dấu cách trong một cụm từ tìm kiếm có thể được bảo vệ bằng dấu ngoặc kép. - + Example: Search phrase example Ví dụ: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: tìm kiếm <b>foo bar</b> - + All plugins Tất cả tiện ích - + Only enabled Chỉ được bật - + + + Invalid data format. + Dạng dữ liệu không hợp lệ. + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>: tìm kiếm <b>foo</b> và <b>bar</b> - + + Refresh + + + + Close tab Đóng tab - + Close all tabs Đóng tất cả cửa sổ - + Select... Lựa chọn... - - - + + Search Engine Máy tìm kiếm - + + Please install Python to use the Search Engine. Hãy cài đặt Python để dùng Công cụ tìm kiếm. - + Empty search pattern Mẫu tìm kiếm trống - + Please type a search pattern first Vui lòng nhập một mẫu tìm kiếm trước tiên - + + Stop Dừng - - Search has finished - Tìm kiếm đã kết thúc + Search has finished + Tìm kiếm đã kết thúc + + + Search has failed + Tìm kiếm thất bại + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - Tìm kiếm thất bại + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả - + Upload: Tải lên: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: Tải về: - + Alternative speed limits Giới hạn tốc độ thay thế @@ -9506,32 +10027,32 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả Thời gian trung bình xếp hàng: - + Connected peers: Máy ngang hàng đã kết nối: - + All-time share ratio: Tỷ lệ chia sẻ mọi lúc: - + All-time download: Tải xuống mọi lúc: - + Session waste: Phiên lãng phí: - + All-time upload: Tải lên mọi lúc: - + Total buffer size: Tổng kích cỡ bộ đệm: @@ -9546,12 +10067,12 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả Tác vụ Nhập/Xuất đang đợi thực thi: - + Write cache overload: Ghi quá tải bộ nhớ đệm: - + Read cache overload: Đọc quá tải bộ nhớ đệm: @@ -9570,51 +10091,67 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả StatusBar - + Connection status: Trạng thái kết nối: - - + + No direct connections. This may indicate network configuration problems. Không có kết nối trực tiếp. Điều này có thể cho thấy sự cố cấu hình mạng. - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT: %1 nút - + qBittorrent needs to be restarted! qBittorrent buộc khởi động lại! - - - + + + Connection Status: Trạng Thái Kết Nối: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. Ngoại tuyến. Điều này có nghĩa rằng qBittorrent không thể tiếp nhận các tín hiệu từ cổng kết nối được chọn dành cho những kết nối đầu vào. - + Online Trực tuyến - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits Nhấp để chuyển sang các giới hạn tốc độ thay thế - + Click to switch to regular speed limits Bấm để chuyển sang giới hạn tốc độ thông thường @@ -9643,14 +10180,22 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả Đã hoàn tất (0) - Resumed (0) - Đã tiếp tục (0) + Đã tiếp tục (0) - Paused (0) - Tạm dừng (0) + Tạm dừng (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả Completed (%1) Đã hoàn tất (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - Tạm dừng (%1) + Tạm dừng (%1) @@ -9723,14 +10287,12 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả Đang di chuyển (%1) - Resume torrents - Tiếp tục torrent + Tiếp tục torrent - Pause torrents - Tạm dừng torrent + Tạm dừng torrent @@ -9738,9 +10300,8 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả Xóa các torrent - Resumed (%1) - Đã tiếp tục (%1) + Đã tiếp tục (%1) @@ -9781,17 +10342,17 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả TagFilterModel - + Tags Thẻ - + All Tất cả - + Untagged Không được gắn thẻ @@ -9799,52 +10360,64 @@ Nhấp vào nút "Tìm kiếm plugin ..." ở dưới cùng bên phả TagFilterWidget - + Add tag... Thêm thẻ... - + Remove tag Xóa thẻ - + Remove unused tags Xóa thẻ không dùng - Resume torrents - Tiếp tục torrent + Tiếp tục torrent - Pause torrents - Tạm dừng torrent + Tạm dừng torrent - + Remove torrents Xóa các torrent - New Tag - Thẻ mới + Thẻ mới + + + + Start torrents + - + + Stop torrents + + + + Tag: Thẻ: - + + Add tag + + + + Invalid tag name Tên thẻ không hợp lệ - + Tag name '%1' is invalid Tên thẻ '%1' không hợp lệ @@ -9984,32 +10557,32 @@ Vui lòng chọn một tên khác và thử lại. TorrentContentModel - + Name Tên - + Progress Tiến độ - + Download Priority Ưu Tiên Tải Về - + Remaining Còn lại - + Availability Khả dụng - + Total Size Tổng Kích Cỡ @@ -10054,102 +10627,120 @@ Vui lòng chọn một tên khác và thử lại. TorrentContentWidget - + Rename error Lỗi đổi tên - + Renaming Đổi tên - + New name: Tên mới: - + Column visibility Khả năng hiển thị của cột - + Resize columns Đổi kích cỡ cột - + Resize all non-hidden columns to the size of their contents Thay đổi kích thước tất cả các cột không bị ẩn thành kích thước nội dung của chúng - + Open Mở - + Open containing folder Mở thư mục chứa - + Rename... Đổi tên... - + Priority Ưu tiên - - + + Do not download Không tải về - + Normal Bình thường - + High Cao - + Maximum Tối đa - + By shown file order Theo tứ tự hiển thị tệp - + Normal priority Ưu tiên bình thường - + High priority Ưu tiên cao - + Maximum priority Ưu tiên tối đa - + Priority by shown file order Ưu tiên hiển thị tệp theo thứ tự + + TorrentCreatorController + + + Too many active tasks + Quá nhiều nhiệm vụ đang hoạt động + + + + Torrent creation is still unfinished. + Tạo torrent vẫn chưa hoàn thành. + + + + Torrent creation failed. + Tạo torrent thất bại. + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Vui lòng chọn một tên khác và thử lại. - + Select file Chọn tệp - + Select folder Chọn thư mục @@ -10205,58 +10796,10 @@ Vui lòng chọn một tên khác và thử lại. Kích thước mảnh: - + Auto Tự động - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Vui lòng chọn một tên khác và thử lại. Trường - + You can separate tracker tiers / groups with an empty line. Bạn có thể phân biệt các hạng / nhóm máy theo theo dõi bằng một hàng rỗng. - + Web seed URLs: URL Web chia sẻ - + Tracker URLs: URL máy theo dõi: - + Comments: Bình luận: - + Source: Nguồn: - + Progress: Tiến độ: - + Create Torrent Tạo Torrent - - + + Torrent creation failed Tạo Torrent thất bại - + Reason: Path to file/folder is not readable. Lí do: Đường dẫn đến tập tin/thư mục không thể đọc được. - + Select where to save the new torrent Chọn nơi lưu torrent mới - + Torrent Files (*.torrent) Tệp Torrent (*.torrent) - - Reason: %1 - Nguyên nhân: %1 - - - + Add torrent to transfer list failed. - + Thêm torrent vào danh sách trao đổi thất bại. - + Reason: "%1" - + Lý do: "%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - Lý do: torrent đã tạo không hợp lệ. Nó sẽ không được thêm vào danh sách tải xuống. + Thêm torrent thất bại - + Torrent creator Trình tạo Torrent - + Torrent created: Torrent đã tạo: @@ -10396,32 +10930,32 @@ Vui lòng chọn một tên khác và thử lại. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 Không tải được cấu hình Thư Mục Đã Xem. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" Không thể phân tích cú pháp cấu hình Thư Mục Đã Xem từ %1. Lỗi: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." Không tải được cấu hình Thư Mục Đã Xem từ %1. Lỗi: "Định dạng dữ liệu không hợp lệ." - + Couldn't store Watched Folders configuration to %1. Error: %2 Không thể lưu trữ cấu hình Thư mục đã xem vào %1. Lỗi: %2 - + Watched folder Path cannot be empty. Đường dẫn thư mục Đã Xem không được để trống. - + Watched folder Path cannot be relative. Đường dẫn thư mục Đã Xem không thể là tương đối. @@ -10429,27 +10963,27 @@ Vui lòng chọn một tên khác và thử lại. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + URI Magnet không hợp lệ. URI: %1. Lý do: %2 - + Magnet file too big. File: %1 Tệp nam châm quá lớn. Tệp: %1 - + Failed to open magnet file: %1 Không mở được tệp nam châm: %1 - + Rejecting failed torrent file: %1 Từ chối tệp torrent thất bại: %1 - + Watching folder: "%1" Thư mục đang xem: "%1" @@ -10457,14 +10991,12 @@ Vui lòng chọn một tên khác và thử lại. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - Không thể cấp phát bộ nhớ khi đọc tệp. Tập tin: "%1". Lỗi: "%2" + Không thể cấp phát bộ nhớ khi đọc tệp. Tập tin: "%1". Lỗi: "%2" - Invalid metadata - Dữ liệu mô tả không hợp lệ + Dữ liệu mô tả không hợp lệ @@ -10495,127 +11027,203 @@ Vui lòng chọn một tên khác và thử lại. Sử dụng một đường dẫn khác cho torrent chưa hoàn thành - + Category: Danh mục: - + + Torrent Share Limits + + + Torrent speed limits - Giới hạn tốc độ torrent + Giới hạn tốc độ torrent - + Download: Tải về: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits Những cái này sẽ không vượt quá giới hạn chung - + Upload: Tải lên: - Torrent share limits - Giới hạn chia sẻ torrent + Giới hạn chia sẻ torrent - Use global share limit - Sử dụng giới hạn chung + Sử dụng giới hạn chung - Set no share limit - Không đặt giới hạn chia sẻ + Không đặt giới hạn chia sẻ - Set share limit to - Đặt giới hạn chia sẻ thành + Đặt giới hạn chia sẻ thành - ratio - tỉ lệ + tỉ lệ - total minutes - tổng số phút + tổng số phút - inactive minutes - phút không hoạt động + phút không hoạt động - + Disable DHT for this torrent Tắt DHT cho torrent này - + Download in sequential order Tải xuống theo thứ tự tuần tự - + Disable PeX for this torrent Tắt PeX cho torrent này - + Download first and last pieces first Tải xuống phần đầu tiên và phần cuối cùng trước tiên - + Disable LSD for this torrent Tắt LSD cho torrent này - + Currently used categories Danh mục được sử dụng hiện tại - - + + Choose save path Chọn đường dẫn lưu - + Not applicable to private torrents Không áp được được với torrent riêng tư - No share limit method selected - Không có phương thức giới hạn chia sẻ nào được chọn + Không cách giới hạn chia sẻ nào được chọn - Please select a limit method first - Vui lòng chọn một cách giới hạn trước tiên + Vui lòng chọn một cách giới hạn trước tiên + + + + TorrentShareLimitsWidget + + + + + + Default + Mặc định + + + + + + Unlimited + Không giới hạn + + + + + + Set to + Đặt là + + + + Seeding time: + Thời gian Seeding: + + + + + + + + + min + minutes + phút + + + + Inactive seeding time: + Thời gian seeding không hoạt động: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + Loại bỏ torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + Bật siêu chia sẻ cho torrent + + + + Ratio: + Tỉ lệ: @@ -10626,32 +11234,36 @@ Vui lòng chọn một tên khác và thử lại. Thẻ torrent - New Tag - Thẻ mới + Thẻ mới + Add tag + + + + Tag: Thẻ: - + Invalid tag name Tên thẻ không hợp lệ - + Tag name '%1' is invalid. Tên thẻ '%1' không hợp lệ. - + Tag exists Thẻ tồn tại - + Tag name already exists. Tên thẻ đã tồn tại. @@ -10659,115 +11271,130 @@ Vui lòng chọn một tên khác và thử lại. TorrentsController - + Error: '%1' is not a valid torrent file. Lỗi: '%1' không phải là tệp torrent hợp lệ. - + Priority must be an integer Độ Ưu tiên phải là một số nguyên - + Priority is not valid Ưu tiên không hợp lệ - + Torrent's metadata has not yet downloaded Dữ liệu mô tả torrent chưa được tải xuống - + File IDs must be integers ID tệp phải là số nguyên - + File ID is not valid ID tệp không hợp lệ - - - - + + + + Torrent queueing must be enabled Hàng đợi torrent phải được bật - - + + Save path cannot be empty Đường dẫn lưu không được để trống` - - + + Cannot create target directory Không thể tạo thư mục đích - - + + Category cannot be empty Danh mục không được để trống - + Unable to create category Không thể tạo danh mục - + Unable to edit category Không thể sửa danh mục được - + Unable to export torrent file. Error: %1 Không thể xuất tệp torrent. Lỗi: %1 - + Cannot make save path Không thể tạo đường dẫn lưu - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid tham số 'sort' không hợp lệ - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. "%1" không phải là một chỉ mục tệp hợp lệ. - + Index %1 is out of bounds. Chỉ mục %1 nằm ngoài giới hạn. - - + + Cannot write to directory Không thể viết vào chỉ mục - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI Đặt vị trí: di chuyển "%1", từ "%2" đến "%3" - + Incorrect torrent name Tên torrent không chính xác - - + + Incorrect category name Tên danh mục không chính xác @@ -10798,257 +11425,215 @@ Vui lòng chọn một tên khác và thử lại. TrackerListModel - - + Working - Đang làm việc + Đang làm việc - + Disabled - + Đã tắt - + Disabled for this torrent - Đã tắt cho torrent này + Đã tắt cho torrent này - + This torrent is private - Torrent này có dạng riêng tư + Torrent này có dạng riêng tư - + N/A - + Không - + Updating... - Đang cập nhật... + Đang cập nhật... - + Not working - Không làm việc + Không làm việc - + Tracker error - + Lỗi máy theo dõi - + Unreachable - + Không thể truy cập - + Not contacted yet - Chưa liên hệ - - - - Invalid status! - + Chưa liên hệ - - URL/Announce endpoint + + Invalid state! - Tier - Hạng - - - - Protocol + URL/Announce Endpoint - Status - Trạng thái + BT Protocol + - - Peers + + Next Announce - - Seeds - Chia sẻ + + Min Announce + - - Leeches - Tải về + Invalid status! + Trạng thái không hợp lệ! - - Times Downloaded - Số lần Tải về + URL/Announce endpoint + Đích đến URL/Thông Báo - - Message - Thông báo + + Tier + Hạng - - Next announce - + Protocol + Giao thức - - Min announce - + + Status + Trạng thái - - v%1 - + + Peers + Máy ngang hàng - - - TrackerListWidget - Working - Đang làm việc + + Seeds + Chia sẻ - Disabled - Đã tắt + + Leeches + Tải về - Disabled for this torrent - Đã tắt cho torrent này + + Times Downloaded + Số Lần Tải Về - - This torrent is private - Torrent này có dạng riêng tư + + Message + Thông báo - Updating... - Đang cập nhật... + Next announce + Thông báo tiếp theo - Not working - Không làm việc + Min announce + Thông báo tối thiểu - Not contacted yet - Chưa liên hệ + v%1 + v%1 + + + TrackerListWidget - N/A - Không + + This torrent is private + Torrent này có dạng riêng tư - + Tracker editing Sửa máy theo dõi - + Tracker URL: URL máy theo dõi: - - + + Tracker editing failed Sửa máy theo dõi thất bại - + The tracker URL entered is invalid. URL máy theo dõi đã nhập không hợp lệ. - + The tracker URL already exists. URL máy theo dõi đã tồn tại. - + Edit tracker URL... Chỉnh sửa URL máy theo dõi... - + Remove tracker Xóa máy theo dõi - + Copy tracker URL Sao chép URL máy theo dõi - + Force reannounce to selected trackers Buộc thông báo lại với các máy theo dõi đã chọn - + Force reannounce to all trackers Buộc thông báo lại với tất cả máy theo dõi - Tier - Hạng - - - URL - URL - - - Status - Trạng thái - - - Seeds - Chia sẻ - - - Times Downloaded - Số lần Tải về - - - + Resize columns Đổi kích cỡ cột - + Resize all non-hidden columns to the size of their contents Thay đổi kích thước tất cả các cột không ẩn thành kích thước của nội dung của chúng - Peers - Ngang hàng - - - + Add trackers... Thêm máy theo dõi... - Leeches - Tải về - - - Message - Thông báo - - - + Column visibility Khả năng hiển thị của cột @@ -11066,37 +11651,37 @@ Vui lòng chọn một tên khác và thử lại. Danh sách các tracker để thêm vào (từng dòng một): - + µTorrent compatible list URL: URL danh sách tương thích với µTorrent: - + Download trackers list Tải xuống danh sách máy theo dõi - + Add Thêm - + Trackers list URL error Lỗi URL danh sách máy theo dõi - + The trackers list URL cannot be empty URL danh sách máy theo dõi không được để trống - + Download trackers list error Lỗi tải xuống danh sách máy theo dõi - + Error occurred when downloading the trackers list. Reason: "%1" Đã xảy ra lỗi khi tải xuống danh sách máy theo dõi. Lý do: "%1" @@ -11104,87 +11689,70 @@ Vui lòng chọn một tên khác và thử lại. TrackersFilterWidget - All (0) - this is for the tracker filter - Tất cả (0) - - - Trackerless (0) - Không máy theo dõi (0) - - - Error (0) - Lỗi (0) - - - Warning (0) - Cảnh báo (0) - - - Trackerless - Không theo dõi - - - Error (%1) - Lỗi (%1) - - - + Warning (%1) Cảnh báo (%1) - + Trackerless (%1) Không máy theo dõi (%1) - + Tracker error (%1) - + Lỗi máy theo dõi (%1) - + Other error (%1) - + Lỗi khác (%1) - + Remove tracker - Xóa máy theo dõi + Xóa máy theo dõi + + + + Start torrents + + + + + Stop torrents + - Resume torrents - Tiếp tục torrent + Tiếp tục torrent - Pause torrents - Tạm dừng torrent + Tạm dừng torrent - + Remove torrents Xóa các torrent - + Removal confirmation - + Xác nhận xóa - + Are you sure you want to remove tracker "%1" from all torrents? - + Bạn có chắc muốn xóa máy theo dõi "%1" khỏi tất cả torrent không? - + Don't ask me again. - + Đừng hỏi tôi nữa. - + All (%1) this is for the tracker filter Tất cả (%1) @@ -11193,7 +11761,7 @@ Vui lòng chọn một tên khác và thử lại. TransferController - + 'mode': invalid argument 'chế độ': đối số không hợp lệ @@ -11286,9 +11854,8 @@ Vui lòng chọn một tên khác và thử lại. Kiểm tra dữ liệu tiếp tục - Paused - Tạm dừng + Tạm dừng @@ -11313,220 +11880,262 @@ Vui lòng chọn một tên khác và thử lại. Bị lỗi - + Name i.e: torrent name Tên - + Size i.e: torrent size Kích cỡ - + Progress % Done Tiến độ - Status Torrent status (e.g. downloading, seeding, paused) - Trạng thái + Trạng thái - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + Trạng thái + + + Seeds i.e. full sources (often untranslated) Chia sẻ - + Peers i.e. partial sources (often untranslated) Ngang hàng - + Down Speed i.e: Download speed Tốc độ Tải về - + Up Speed i.e: Upload speed Tốc độ Tải lên - + Ratio Share ratio Tỉ Lệ - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left Thời gian dự kiến - + Category Danh mục - + Tags Thẻ - + Added On Torrent was added to transfer list on 01/01/2010 08:00 Thêm Lúc - + Completed On Torrent was completed on 01/01/2010 08:00 Hoàn Thành Lúc - + Tracker Máy theo dõi - + Down Limit i.e: Download limit Giới hạn Tải về - + Up Limit i.e: Upload limit Giới hạn Tải lên - + Downloaded Amount of data downloaded (e.g. in MB) Đã Tải về - + Uploaded Amount of data uploaded (e.g. in MB) Đã tải lên - + Session Download Amount of data downloaded since program open (e.g. in MB) Tải xuống phiên - + Session Upload Amount of data uploaded since program open (e.g. in MB) Tải lên phiên - + Remaining Amount of data left to download (e.g. in MB) Còn lại - + + Time Active + Time (duration) the torrent is active (not stopped) + Thời Gian Hoạt Động + + + + Yes + + + + + No + Không + + Time Active Time (duration) the torrent is active (not paused) - Thời Gian Hoạt Động + Thời Gian Hoạt Động - + Save Path Torrent save path Đường Dẫn Lưu - + Incomplete Save Path Torrent incomplete save path Đường Dẫn Lưu Chưa Hoàn Tất - + Completed Amount of data completed (e.g. in MB) Đã hoàn tất - + Ratio Limit Upload share ratio limit Giới Hạn Tỷ Lệ - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole Lần Cuối Trông Thấy Hoàn Thành - + Last Activity Time passed since a chunk was downloaded/uploaded Hoạt động cuối - + Total Size i.e. Size including unwanted data Tổng Kích Thước - + Availability The number of distributed copies of the torrent Khả dụng - + Info Hash v1 i.e: torrent info hash v1 Thông Tin Băm v1: - + Info Hash v2 i.e: torrent info hash v2 Thông Tin Băm v2 - + Reannounce In Indicates the time until next trackers reannounce + Thông báo lại Trong + + + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is - - + + + N/A Không áp dụng - + %1 ago e.g.: 1h 20m ago %1 trước - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (đã chia sẻ cho %2) @@ -11535,334 +12144,358 @@ Vui lòng chọn một tên khác và thử lại. TransferListWidget - + Column visibility Khả năng hiển thị của cột - + Recheck confirmation Kiểm tra lại xác nhận - + Are you sure you want to recheck the selected torrent(s)? Bạn có chắc muốn kiểm tra lại (các)torrent đã chọn? - + Rename Đổi tên - + New name: Tên mới: - + Choose save path Chọn đường dẫn lưu - Confirm pause - Xác nhận tạm dừng + Xác nhận tạm dừng - Would you like to pause all torrents? - Bạn có muốn tạm dừng tất cả các torrent? + Bạn có muốn tạm dừng tất cả các torrent? - Confirm resume - Xác nhận tiếp tục + Xác nhận tiếp tục - Would you like to resume all torrents? - Bạn có muốn tiếp tục tất cả các torrent không? + Bạn có muốn tiếp tục tất cả các torrent không? - + Unable to preview Không thể xem trước - + The selected torrent "%1" does not contain previewable files Torrent đã chọn "%1" không chứa các tệp có thể xem trước - + Resize columns Đổi kích cỡ cột - + Resize all non-hidden columns to the size of their contents Thay đổi kích thước tất cả các cột không ẩn thành kích thước của nội dung của chúng - + Enable automatic torrent management Bật quản lý torrent tự động - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. Bạn có chắc chắn muốn bật Quản lý Torrent Tự động cho (các) torrent đã chọn không? Nó có thể được đổi chỗ. - Add Tags - Thêm thẻ + Thêm thẻ - + Choose folder to save exported .torrent files Chọn thư mục để lưu các tệp .torrent đã xuất - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" Xuất tệp .torrent thất bại. Torrent: "%1". Đường dẫn lưu: "%2". Lý do: "%3" - + A file with the same name already exists Tệp có cùng tên đã tồn tại - + Export .torrent file error Lỗi xuất tệp .torrent - + Remove All Tags Xóa Hết Các Thẻ - + Remove all tags from selected torrents? Xóa hết thẻ khỏi torrent đã chọn? - + Comma-separated tags: Các thẻ cách nhau bằng dấu phẩy: - + Invalid tag Thẻ không hợp lệ - + Tag name: '%1' is invalid Tên thẻ '%1' không hợp lệ - &Resume Resume/start the torrent - Tiếp tục + Tiếp tục - &Pause Pause the torrent - Tạm ngừng + Tạm ngừng - Force Resu&me Force Resume/start the torrent - Buộc Tiếp Tục + Buộc Tiếp Tục - + Pre&view file... Xem trước tệp... - + Torrent &options... Tùy chọn t&orrent... - + Open destination &folder Mở thư mục đích - + Move &up i.e. move up in the queue Di ch&uyển lên - + Move &down i.e. Move down in the queue &Di chuyển xuống - + Move to &top i.e. Move to top of the queue Di chuyển lên đầu - + Move to &bottom i.e. Move to bottom of the queue Di chuyển xuống cuối - + Set loc&ation... Đặt vị trí... - + Force rec&heck Buộc kiểm tra lại - + Force r&eannounce Buộc thông báo lại - + &Magnet link - Liên kết na&m châm + Liên kết Magnet - + Torrent &ID Torrent &ID - + + &Comment + &Bình luận + + + &Name Tê&n - + Info &hash v1 Thông tin băm v1 - + Info h&ash v2 Thông tin băm v2 - + Re&name... Đổi tê&n - + Edit trac&kers... Sửa máy theo dõi... - + E&xport .torrent... &Xuất .torrent - + Categor&y Danh mục - + &New... New category... Mới... - + &Reset Reset category Đặt lại - + Ta&gs Thẻ - + &Add... Add / assign multiple tags... Thêm - + &Remove All Remove all tags Xoá Hết - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue Xếp hàng - + &Copy Sao &Chép - + Exported torrent is not necessarily the same as the imported Torrent đã xuất không nhất thiết phải giống với torrent đã nhập - + Download in sequential order Tải về theo thứ tự tuần tự - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. Đã xảy ra lỗi khi xuất tệp .torrent. Kiểm tra nhật ký thực thi để biết chi tiết. + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent Xóa - + Download first and last pieces first Tải về phần đầu và phần cuối trước - + Automatic Torrent Management Quản lý Torrent tự động - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category Chế độ tự động có nghĩa là các thuộc tính torrent khác nhau (VD: đường dẫn lưu) sẽ được quyết định bởi danh mục liên quan - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - Không thể buộc thông báo lại nếu torrent bị Tạm dừng/Xếp hàng đợi/ Lỗi/Đang kiểm tra + Không thể buộc thông báo lại nếu torrent bị Tạm dừng/Xếp hàng đợi/ Lỗi/Đang kiểm tra - + Super seeding mode Chế độ siêu chia sẻ @@ -11907,38 +12540,43 @@ Vui lòng chọn một tên khác và thử lại. ID Biểu tượng - + UI Theme Configuration. Cấu hình chủ đề giao diện người dùng. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - Không thể áp dụng đầy đủ các thay đổi Chủ đề giao diện người dùng. Các chi tiết có thể được tìm thấy trong Nhật ký. + Không thể áp dụng đầy đủ các thay đổi Giao diện UI. Chi tiết có thể tìm trong Nhật ký. - + Couldn't save UI Theme configuration. Reason: %1 - Không thể lưu cấu hình Giao diện người dùng. Lý do: %1 + Không thể lưu cấu hình Giao diện UI. Lý do: %1 - - + + Couldn't remove icon file. File: %1. Không thể xóa tệp biểu tượng. Tệp: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. - Không thể sao chép tệp biểu tượng. Nguồn: %1. Nơi đến: %2. + Không thể sao chép tệp biểu tượng. Nguồn: %1. Đích: %2. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" - Không tải được chủ đề giao diện người dùng từ tệp: "%1" + Tải Giao diện UI từ tệp thất bại: "%1" @@ -11946,12 +12584,12 @@ Vui lòng chọn một tên khác và thử lại. Couldn't parse UI Theme configuration file. Reason: %1 - Không thể phân tích cú pháp tệp cấu hình Giao diện người dùng. Lý do: %1 + Không thể phân tích tệp cấu hình Giao diện UI. Lý do: %1 UI Theme configuration file has invalid format. Reason: %1 - Tệp cấu hình chủ đề giao diện người dùng có định dạng không hợp lệ. Lý do: %1 + Tệp cấu hình Giao diện UI định dạng không hợp lệ. Lý do: %1 @@ -11961,97 +12599,90 @@ Vui lòng chọn một tên khác và thử lại. Invalid color for ID "%1" is provided by theme - Màu không hợp lệ cho ID "%1" cung cấp theo chủ đề + Màu không hợp lệ cho ID "%1" cung cấp bởi giao diện Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" Di chuyển tùy chọn thất bại: WebUI https, tệp: "%1", lỗi: "%2" - + Migrated preferences: WebUI https, exported data to file: "%1" Tùy chọn đã di chuyển: WebUI https, dữ liệu được xuất sang tệp: "%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". - Giá trị không hợp lệ được tìm thấy trong tệp cấu hình, hoàn nguyên giá trị đó về mặc định. Khóa: "%1". Giá trị không hợp lệ: "%2". + Tìm thấy giá trị không hợp lệ trong tệp cấu hình, trả về mặc định. Khóa: "%1". Giá trị không hợp lệ: "%2". Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - Đã phát hiện Python, tên thực thi: '%1', phiên bản: %2 - - - Python not detected - Python không được phát hiện - Found Python executable. Name: "%1". Version: "%2" - + Đã tìm thấy Python có thể thực thi được. Tên: "%1". Phiên bản: "%2" Failed to find Python executable. Path: "%1". - + Không tìm thấy tệp thực thi Python. Đường dẫn: "%1". Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + Không tìm thấy tệp thực thi `python3` trong biến môi trường PATH. PATH: "%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + Không tìm thấy tệp thực thi `python` trong biến môi trường PATH. PATH: "%1" Failed to find `python` executable in Windows Registry. - + Không tìm thấy tệp thực thi `python` trong Windows Registry. Failed to find Python executable - + Không thể tìm thấy Python có thể thực thi được Utils::IO - + File open error. File: "%1". Error: "%2" Lỗi mở tệp. Tập tin: "%1". Lỗi: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - Kích thước tệp vượt quá giới hạn. Tập tin: "%1". Kích thước tệp: %2. Giới hạn kích thước: %3 + Kích cỡ tệp quá giới hạn. Tệp: "%1". Kích cỡ: %2. Giới hạn kích cỡ: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + Kích cỡ tệp quá giới hạn kích cỡ dữ liệu. Tệp: "%1". Kích cỡ: %2. Giới hạn mảng: %3 - + File read error. File: "%1". Error: "%2" - Lỗi đọc tệp. Tập tin: "%1". Lỗi: "%2" + Lỗi đọc tệp. Tệp: "%1". Lỗi: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 - Kích thước đọc không khớp. Tập tin: "%1". Dự kiến: %2. Thực tế: %3 + Đọc kích thước không khớp. Tệp "%1". Dự kiến: %2. Thực tế: %3 @@ -12059,7 +12690,7 @@ Vui lòng chọn một tên khác và thử lại. Watched Folder Options - Tùy chọn Thư mục Đã theo dõi + Tùy Chọn Thư Mục Đã Xem @@ -12113,72 +12744,72 @@ Vui lòng chọn một tên khác và thử lại. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. Tên cookie phiên không được chấp nhận được chỉ định: '%1'. Mặc định một được sử dụng. - + Unacceptable file type, only regular file is allowed. Loại tệp không được chấp nhận, chỉ cho phép tệp thông thường. - + Symlinks inside alternative UI folder are forbidden. Liên kết biểu tượng bên trong thư mục giao diện người dùng thay thế bị cấm. - - Using built-in Web UI. - Sử dụng giao diện người dùng Web tích hợp sẵn. + + Using built-in WebUI. + Sử dụng WebUI tích hợp. - - Using custom Web UI. Location: "%1". - Sử dụng giao diện người dùng Web tùy chỉnh. Vị trí: "%1". + + Using custom WebUI. Location: "%1". + Sử dụng WebUI tùy chỉnh. Vị trí: "%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - Bản dịch giao diện người dùng web cho ngôn ngữ đã chọn (%1) đã được tải thành công. + + WebUI translation for selected locale (%1) has been successfully loaded. + Bản dịch WebUI cho ngôn ngữ đã chọn (%1) đã được tải thành công. - - Couldn't load Web UI translation for selected locale (%1). - Không thể tải bản dịch giao diện người dùng Web cho ngôn ngữ đã chọn (%1). + + Couldn't load WebUI translation for selected locale (%1). + Không thể tải bản dịch WebUI cho ngôn ngữ đã chọn (%1). - + Missing ':' separator in WebUI custom HTTP header: "%1" Thiếu dấu phân tách ':' trong tiêu đề HTTP tùy chỉnh WebUI: "%1" - + Web server error. %1 Lỗi máy chủ web. %1 - + Web server error. Unknown error. Lỗi máy chủ web. Không rõ lỗi. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: Tiêu đề nguồn gốc & Nguồn gốc mục tiêu không khớp! IP nguồn: '%1'. Tiêu đề gốc: '%2'. Nguồn gốc mục tiêu: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: Tiêu đề giới thiệu và nguồn gốc mục tiêu không khớp! IP nguồn: '%1'. Tiêu đề giới thiệu: '%2'. Nguồn gốc mục tiêu: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI: Tiêu đề máy chủ lưu trữ không hợp lệ, cổng không khớp. Yêu cầu IP nguồn: '%1'. Cổng máy chủ: '%2'. Tiêu đề Máy chủ đã nhận: '%3' - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI: Tiêu đề máy chủ lưu trữ không hợp lệ. Yêu cầu IP nguồn: '%1'. Tiêu đề Máy chủ đã nhận: '%2' @@ -12186,143 +12817,136 @@ Vui lòng chọn một tên khác và thử lại. WebUI - - Web UI: HTTPS setup successful - Web UI: Thiết lập HTTPS thành công + + Credentials are not set + Thông tin xác thực chưa được đặt + + + + WebUI: HTTPS setup successful + WebUI: Thiết lập HTTPS thành công + + + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI: Thiết lập HTTPS không thành công, chuyển sang HTTP - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI: Cài đặt HTTPS thất bại, dự phòng HTTP + + WebUI: Now listening on IP: %1, port: %2 + WebUI: Hiện đang nghe trên IP: %1, cổng: %2 - - Web UI: Now listening on IP: %1, port: %2 - Giao diện người dùng web: Hiện đang nghe trên IP: %1, cổng: %2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Không thể liên kết với IP: %1, cổng: %2. Lý do: %3 + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Giao diện người dùng web: Không thể liên kết với IP: %1, cổng: %2. Lý do: %3 + + Unknown error + Không rõ lỗi misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /giây - + %1s e.g: 10 seconds - %1phút {1s?} + %1s - + %1m e.g: 10 minutes - %1phút + %1phút - + %1h %2m e.g: 3 hours 5 minutes - %1 giờ %2 phút + %1 giờ %2 phút - + %1d %2h e.g: 2 days 10 hours - %1d %2h + %1d %2h - + %1y %2d e.g: 2 years 10 days - %1năm %2ngày - - - %1h %2m - e.g: 3hours 5minutes - %1 giờ %2 phút - - - %1d %2h - e.g: 2days 10hours - %1d %2h - - - %1y %2d - e.g: 2years 10days - %1năm %2ngày + %1năm %2ngày - - + + Unknown Unknown (size) Chưa rõ - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent sẽ tắt máy tính lập tức bởi vì toàn bộ tải xuống đều đã hoàn tất. - + < 1m < 1 minute < 1phút - - %1m - e.g: 10minutes - %1phút - diff --git a/src/lang/qbittorrent_zh_CN.ts b/src/lang/qbittorrent_zh_CN.ts index 963639f0b7b6..be68517873d0 100644 --- a/src/lang/qbittorrent_zh_CN.ts +++ b/src/lang/qbittorrent_zh_CN.ts @@ -14,77 +14,77 @@ 关于 - + Authors 作者 - + Current maintainer 目前的维护者 - + Greece 希腊 - - + + Nationality: 国籍: - - + + E-mail: E-mail: - - + + Name: 姓名: - + Original author 原始作者 - + France 法国 - + Special Thanks 致谢 - + Translators 译者 - + License 许可 - + Software Used 使用的软件 - + qBittorrent was built with the following libraries: qBittorrent 的构建使用了以下库: - + Copy to clipboard - + 复制到剪贴板 @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - 版权所有 %1 2006-2023 The qBittorrent project + Copyright %1 2006-2024 The qBittorrent project + 版权所有 %1 2006-2024 The qBittorrent project @@ -166,14 +166,13 @@ 保存在 - + Never show again 不再显示 - Torrent settings - Torrent 设置 + Torrent 设置 @@ -191,12 +190,12 @@ 开始 Torrent - + Torrent information Torrent 信息 - + Skip hash check 跳过哈希校验 @@ -205,6 +204,11 @@ Use another path for incomplete torrent 对不完整的 Torrent 使用另一个路径 + + + Torrent options + + Tags: @@ -213,7 +217,7 @@ Click [...] button to add/remove tags. - 单击 [...] 按钮添加/删除标签。 + 单击 [...] 按钮添加/删除标签。 @@ -231,70 +235,75 @@ 停止条件: - - + + None - - + + Metadata received 已收到元数据 - - + + Torrents that have metadata initially will be added as stopped. + 最开始就有元数据的 Torrent 文件被添加后将处在停止状态 + + + + Files checked 文件已被检查 - + Add to top of queue 添加到队列顶部 - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog 勾选后,无论选项对话框的“下载”页面如何设置,.torrent 文件都不不会被删除 - + Content layout: 内容布局: - + Original 原始 - + Create subfolder 创建子文件夹 - + Don't create subfolder 不创建子文件夹 - + Info hash v1: 信息哈希值 v1: - + Size: 大小: - + Comment: 注释: - + Date: 日期: @@ -324,245 +333,182 @@ 记住上次使用的保存路径 - + Do not delete .torrent file 不删除 .torrent 文件 - + Download in sequential order 按顺序下载 - + Download first and last pieces first 先下载首尾文件块 - + Info hash v2: 信息哈希值 v2: - + Select All 全选 - + Select None 全不选 - + Save as .torrent file... 保存为 .torrent 文件... - + I/O Error I/O 错误 - Invalid torrent - 无效 Torrent - - - + Not Available This comment is unavailable 不可用 - + Not Available This date is unavailable 不可用 - + Not available 不可用 - Invalid magnet link - 无效的磁力链接 - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - 加载 Torrent 失败:%1。 -错误:%2 - - - This magnet link was not recognized - 该磁力链接未被识别 - - - + Magnet link 磁力链接 - + Retrieving metadata... 正在检索元数据... - - + + Choose save path 选择保存路径 - Torrent is already present - Torrent 已存在 - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent '%1' 已在下载列表中。Tracker 信息没有合并,因为这是一个私有 Torrent。 - - - Torrent is already queued for processing. - Torrent 已在队列中等待处理。 - - - + No stop condition is set. 未设置停止条件。 - + Torrent will stop after metadata is received. 接收到元数据后,Torrent 将停止。 - - Torrents that have metadata initially aren't affected. - 不会影响起初就有元数据的 Torrent。 - - - + Torrent will stop after files are initially checked. 第一次文件检查完成后,Torrent 将停止。 - + This will also download metadata if it wasn't there initially. 如果最开始不存在元数据,勾选此选项也会下载元数据。 - - + + N/A N/A - Magnet link is already queued for processing. - 磁力链接已在队列中等待处理。 - - - + %1 (Free space on disk: %2) %1(剩余磁盘空间:%2) - + Not available This size is unavailable. 不可用 - + Torrent file (*%1) Torrent 文件 (*%1) - + Save as torrent file 另存为 Torrent 文件 - + Couldn't export torrent metadata file '%1'. Reason: %2. 无法导出 Torrent 元数据文件 “%1”。原因:%2。 - + Cannot create v2 torrent until its data is fully downloaded. 在完全下载数据之前无法创建 v2 Torrent。 - Cannot download '%1': %2 - 无法下载 '%1':%2 - - - + Filter files... 过滤文件... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent “%1” 已经在传输列表中。无法合并 Tracker,因为这是一个私有 Torrent。 - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent “%1” 已经在传输列表中。你想合并来自新来源的 Tracker 吗? - - - + Parsing metadata... 正在解析元数据... - + Metadata retrieval complete 元数据检索完成 - - Failed to load from URL: %1. -Error: %2 - 加载 URL 失败:%1。 -错误:%2 - - - Download Error - 下载错误 - AddTorrentManager Downloading torrent... Source: "%1" - + 正在下载 Torrent... 来源:“%1” Failed to add torrent. Source: "%1". Reason: "%2" - + 添加 Torrent 失败。来源:“%1”。原因:“%2” - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + 检测到尝试添加重复 Torrent 文件。来源:%1。现有 Torrent 文件:%2。结果:%3 - + Merging of trackers is disabled - + 合并 Tracker 已禁用 - + Trackers cannot be merged because it is a private torrent - + 因为这是一个私有 Torrent,所以无法合并 Tracker - + Trackers are merged from new source - + 来自新来源的 Tracker 已经合并 @@ -610,7 +556,7 @@ Error: %2 Click [...] button to add/remove tags. - 单击 [...] 按钮添加/删除标签。 + 单击 [...] 按钮添加/删除标签。 @@ -625,7 +571,7 @@ Error: %2 Start torrent: - 启动 torrent: + 启动 Torrent: @@ -648,72 +594,77 @@ Error: %2 跳过哈希校验 - - - Choose save path - 选择保存路径 + + Torrent share limits + Torrent 分享限制 - - - - - - - Default - 默认 + + + Choose save path + 选择保存路径 + + + - Yes - + Default + 默认 + Yes + + + + + + No - + Manual 手动 - + Automatic 自动 - + Original 原始 - + Create subfolder 创建子文件夹 - + Don't create subfolder 不创建子文件夹 - + None - + Metadata received 已收到元数据 - + Files checked 文件已被检查 @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion 完成后重新校验 Torrent - - + + ms milliseconds 毫秒 - + Setting 设置 - + Value Value set for this setting - + (disabled) (禁用) - + (auto) (自动) - + + min minutes 分钟 - + All addresses 所有地址 - + qBittorrent Section qBittorrent 相关 - - + + Open documentation 打开文档 - + All IPv4 addresses 所有 IPv4 地址 - + All IPv6 addresses 所有 IPv6 地址 - + libtorrent Section libtorrent 相关 - + Fastresume files 快速恢复文件 - + SQLite database (experimental) SQLite 数据库(实验性功能) - + Resume data storage type (requires restart) 恢复数据存储类型(需要重新启动) - + Normal 正常 - + Below normal 低于正常 - + Medium 中等 - + Low - + Very low 极低 - - Process memory priority (Windows >= 8 only) - 进程的内存优先级(只在 Windows >= 8 有效) - - - + Physical memory (RAM) usage limit 物理内存(RAM)使用限制 - + Asynchronous I/O threads 异步 I/O 线程数 - + Hashing threads 散列线程 - + File pool size 文件池大小 - + Outstanding memory when checking torrents 校验时内存使用扩增量 - + Disk cache 磁盘缓存 - - - - + + + + s seconds - + Disk cache expiry interval 磁盘缓存到期间隔 - + Disk queue size 磁盘队列大小 - - + + Enable OS cache 启用操作系统缓存 - + Coalesce reads & writes 合并读写 - + Use piece extent affinity 启用相连文件块下载模式 - + Send upload piece suggestions 发送分块上传建议 - - - - + + + + + 0 (disabled) 0(禁用) - + Save resume data interval [0: disabled] How often the fastresume file is saved. 保存恢复数据的间隔 [0:禁用] - + Outgoing ports (Min) [0: disabled] - 传出端口 (最低) [0:禁用] + 传出端口(最低)[0:禁用] - + Outgoing ports (Max) [0: disabled] - 传出端口 (最高) [0:禁用] + 传出端口(最高)[0:禁用] - + 0 (permanent lease) 0(永久租约) - + UPnP lease duration [0: permanent lease] UPnP 租期 [0:永久 ] - + Stop tracker timeout [0: disabled] - 停止 tracker 超时 [0:禁用] + 停止 Tracker 超时 [0:禁用] - + Notification timeout [0: infinite, -1: system default] 通知超时 [0:无限,-1:系统默认值] - + Maximum outstanding requests to a single peer 单一 peer 的最大未完成请求数 - - - - - + + + + + KiB KiB - + (infinite) (无限) - + (system default) (系统默认) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux 这个选项在 Linux 上没那么有效 - + + Process memory priority + 处理内存优先级 + + + Bdecode depth limit Bdecode 深度限制 - + Bdecode token limit Bdecode 令牌限制 - + Default 默认 - + Memory mapped files 内存映射文件 - + POSIX-compliant 遵循 POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) 磁盘 IO 类型(需要重启) - - + + Disable OS cache 禁用操作系统缓存 - + Disk IO read mode 磁盘 IO 读取模式 - + Write-through 连续写入 - + Disk IO write mode 磁盘 IO 写入模式 - + Send buffer watermark 发送缓冲区上限 - + Send buffer low watermark 发送缓冲区下限 - + Send buffer watermark factor 发送缓冲区增长系数 - + Outgoing connections per second 每秒传出连接数 - - + + 0 (system default) 0(系统默认) - + Socket send buffer size [0: system default] 套接字发送缓存大小 [0:系统默认值] - + Socket receive buffer size [0: system default] 套接字接收缓存大小 [0:系统默认值] - + Socket backlog size 套接字 backlog 大小 - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - torrent 文件大小上限 + .torrent 文件大小上限 - + Type of service (ToS) for connections to peers 与 peers 连接的服务类型(ToS) - + Prefer TCP 优先使用 TCP - + Peer proportional (throttles TCP) 按用户比重 (抑制 TCP) - + Support internationalized domain name (IDN) 支持国际化域名(IDN) - + Allow multiple connections from the same IP address 允许来自同一 IP 地址的多个连接 - + Validate HTTPS tracker certificates 验证 HTTPS tracker 证书 - + Server-side request forgery (SSRF) mitigation 服务器端请求伪造(SSRF)缓解 - + Disallow connection to peers on privileged ports 禁止连接到特权端口上的 peer - + + It appends the text to the window title to help distinguish qBittorent instances + 它将文本附加到窗口标题来区分不同的 qBittorrent 实例 + + + + Customize application instance name + 定制程序实例名 + + + It controls the internal state update interval which in turn will affect UI updates 它控制内部状态更新间隔,此间隔会影响用户界面更新 - + Refresh interval 刷新间隔 - + Resolve peer host names 解析用户主机名 - + IP address reported to trackers (requires restart) - IP 地址已报告给 Tracker(需要重启) + 报告给 Tracker 的 IP 地址(需要重启) + + + + Port reported to trackers (requires restart) [0: listening port] + - + Reannounce to all trackers when IP or port changed 当 IP 或端口更改时重新通知所有 Tracker - + Enable icons in menus 启用菜单中的图标 - + Enable port forwarding for embedded tracker 对内置 Tracker 启用端口转发 - - (Auto detect if empty) + + Enable quarantine for downloaded files + 开启已下载文件隔离 + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + 开启已下载文件 Mark-of-the-Web (MOTW) + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (假如为空,自动检测) + + + Python executable path (may require restart) + Python 可执行路径(可能需要重新启动) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + 确认从所有 Torrent 中移除 Tracker + + + Peer turnover disconnect percentage peer 进出断开百分比 - + Peer turnover threshold percentage peer 进出阈值百分比 - + Peer turnover disconnect interval peer 进出断开间隔 - + Resets to default if empty - + 如果为空,则重置为默认值 - + DHT bootstrap nodes - + DHT Bootstrap 节点 - + I2P inbound quantity I2P 传入量 - + I2P outbound quantity I2P 传出量 - + I2P inbound length I2P 传入长度 - + I2P outbound length I2P 传出长度 - + Display notifications 显示通知 - + Display notifications for added torrents 显示已添加 Torrent 的通知 - + Download tracker's favicon 下载 Tracker 的网站图标 - + Save path history length 保存路径的历史记录条目数 - + Enable speed graphs 启用速度图表 - + Fixed slots 固定窗口数 - + Upload rate based 基于上传速度 - + Upload slots behavior 上传窗口策略 - + Round-robin 轮流上传 - + Fastest upload 最快上传 - + Anti-leech 反吸血 - + Upload choking algorithm 上传连接策略 - + Confirm torrent recheck 重新校验 Torrent 时提示确认 - + Confirm removal of all tags 删除所有标签时提示确认 - + Always announce to all trackers in a tier 总是向同级的所有 Tracker 汇报 - + Always announce to all tiers 总是向所有等级的 Tracker 汇报 - + Any interface i.e. Any network interface 任意网络接口 - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP 混合模式策略 - + Resolve peer countries 解析用户所在国家 - + Network interface 网络接口 - + Optional IP address to bind to 绑定到的可选 IP 地址 - + Max concurrent HTTP announces - 最大并发 HTTP 发布 + 最大并发 HTTP 汇报 - + Enable embedded tracker 启用内置 Tracker - + Embedded tracker port 内置 Tracker 端口 - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 已启动 + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 当前运行在便携模式下。自动检测配置文件夹于:%1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. 检测到冗余的命令行参数:“%1”。便携模式使用基于相对路径的快速恢复文件。 - + Using config directory: %1 使用配置目录:%1 - + Torrent name: %1 Torrent 名称:%1 - + Torrent size: %1 Torrent 大小:%1 - + Save path: %1 保存路径:%1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds 该 Torrent 下载用时为 %1。 - + + Thank you for using qBittorrent. 感谢您使用 qBittorrent。 - + Torrent: %1, sending mail notification Torrent:%1,发送邮件提醒 - + Add torrent failed - + 添加 torrent 失败 - + Couldn't add torrent '%1', reason: %2. - + 无法添加 Torrent “%1”,原因:%2。 + + + + The WebUI administrator username is: %1 + WebUI 管理员用户名是:%1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + 未设置 WebUI 管理员密码。为此会话提供了一个临时密码:%1 + + + + You should set your own password in program preferences. + 你应该在程序首选项中设置你自己的密码 + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI 已禁用!要启用 WebUI,请手动编辑配置文件。 - + Running external program. Torrent: "%1". Command: `%2` 运行外部程序。Torrent:“%1”。命令:`%2` - + Failed to run external program. Torrent: "%1". Command: `%2` - 运行外部程序失败。Torrent 文件: "%1"。命令:`%2` + 运行外部程序失败。Torrent 文件:“%1”。命令:`%2` - + Torrent "%1" has finished downloading Torrent “%1” 已完成下载 - + WebUI will be started shortly after internal preparations. Please wait... - WebUI 界面将在内部准备不久后启动。请稍等… + WebUI 将在内部准备不久后启动。请稍等… - - + + Loading torrents... 加载 Torrent 中... - + E&xit 退出(&X) - + I/O Error i.e: Input/Output Error I/O 错误 - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 原因:%2 - Error - 错误 - - - Failed to add torrent: %1 - 未能添加以下 Torrent:%1 - - - + Torrent added 已添加 Torrent - + '%1' was added. e.g: xxx.avi was added. 已添加 “%1”。 - + Download completed 下载完成 - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - “%1” 下载完成。 - - - URL download error - URL 下载出错 + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 已启动。进程 ID:%2 - Couldn't download file at URL '%1', reason: %2. - 无法从 URL “%1” 下载文件,原因:%2。 + + This is a test email. + - Torrent file association - 关联 Torrent 文件 + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent 不是打开 Torrent 文件或 Magnet 链接的默认应用程序。 -您想将 qBittorrent 设置为打开上述内容的默认应用程序吗? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + “%1” 下载完成。 - + Information 信息 - + To fix the error, you may need to edit the config file manually. - + 你可能需要手动编辑配置文件以修复此错误。 - + To control qBittorrent, access the WebUI at: %1 要控制 qBittorrent,请访问下列地址的 WebUI:%1 - - The Web UI administrator username is: %1 - Web UI 管理员的用户名是:%1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web UI 管理员密码仍为默认值:%1 - - - - This is a security risk, please change your password in program preferences. - 这是一个安全风险,请在程序首选项中更改密码。 - - - Application failed to start. - 程序启动失败。 - - - + Exit 退出 - + Recursive download confirmation - 确认递归下载 + 确认递归下载 - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent “%1” 包含 .torrent 文件,您要继续下载它们的内容吗? + Torrent “%1” 包含 .torrent 文件,您要继续下载它们的内容吗? - + Never - 从不 + 从不 - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 递归下载 Torrent 内的 .torrent 文件。源 Torrent:“%1”。文件:“%2” + 递归下载 Torrent 内的 .torrent 文件。源 Torrent:“%1”。文件:“%2” - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" 设置物理内存(RAM)使用限制失败。错误代码:%1。错误信息:“%2” - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - 未能设置硬性物理内存(RAM)用量限制。请求的大小:%1。硬性系统限制:%2。错误码:%3。错误消息: "%4" + 未能设置硬性物理内存(RAM)用量限制。请求的大小:%1。硬性系统限制:%2。错误码:%3。错误消息:“%4” - + qBittorrent termination initiated 发起了 qBittorrent 终止操作 - + qBittorrent is shutting down... qBittorrent 正在关闭... - + Saving torrent progress... 正在保存 Torrent 进度... - + qBittorrent is now ready to exit qBittorrent 现在准备好退出了 @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. 无法创建目录 '%1'。 @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI 登录失败。原因: IP 被封禁,IP:%1,用户名:%2 - + Your IP address has been banned after too many failed authentication attempts. 身份认证失败次数过多,您的 IP 地址已被封禁。 - + WebAPI login success. IP: %1 WebAPI 登录成功。IP:%1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI 登录失败。原因:凭证无效,尝试次数:%1,IP:%2,用户名:%3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? 优先级: - + Must Not Contain: 必须不含: - + Episode Filter: 剧集过滤器: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 导出(&E)... - + Matches articles based on episode filter. 使用剧集过滤器匹配文章。 - + Example: 示例: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match 可匹配第 1 季的第 2 集、第 5 集、第 8 至 15 集、第 30 集及之后的集数 - + Episode filter rules: 剧集过滤器规则: - + Season number is a mandatory non-zero value 季数必须是非零数 - + Filter must end with semicolon 过滤规则必须以分号结束 - + Three range types for episodes are supported: 支持 3 种集数范围写法: - + Single number: <b>1x25;</b> matches episode 25 of season one 单个数字:<b>1x25;</b> 匹配第 1 季的第 25 集 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one 正常范围:<b>1x25-40;</b> 匹配第 1 季的第 25 至 40 集 - + Episode number is a mandatory positive value 集数必须是正数 - + Rules 规则 - + Rules (legacy) 规则 (旧式) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons 无限范围:<b>1x25-;</b> 匹配第 1 季的第 25 集及之后的集数,以及之后所有季度的集数 - + Last Match: %1 days ago 上次匹配:%1 天前 - + Last Match: Unknown 上次匹配:未知 - + New rule name 新规则名称 - + Please type the name of the new download rule. 请输入新的下载规则的名称。 - - + + Rule name conflict 规则名称冲突 - - + + A rule with this name already exists, please choose another name. 该名称已被另一规则使用,请重新命名。 - + Are you sure you want to remove the download rule named '%1'? 您确定要删除下载规则 '%1' 吗? - + Are you sure you want to remove the selected download rules? 您确定要删除所选的下载规则吗? - + Rule deletion confirmation 删除规则时提示确认 - + Invalid action 无效操作 - + The list is empty, there is nothing to export. 列表为空,没有可导出的项目。 - + Export RSS rules 导出 RSS 规则 - + I/O Error I/O 错误 - + Failed to create the destination file. Reason: %1 无法创建目标文件。原因:%1 - + Import RSS rules 导入 RSS 规则 - + Failed to import the selected rules file. Reason: %1 无法导入所选规则文件。原因:%1 - + Add new rule... 添加新规则... - + Delete rule 删除规则 - + Rename rule... 重命名规则... - + Delete selected rules 删除所选规则 - + Clear downloaded episodes... 清空已下载剧集... - + Rule renaming 重命名规则 - + Please type the new rule name 请输入新的规则名称 - + Clear downloaded episodes 清空已下载剧集 - + Are you sure you want to clear the list of downloaded episodes for the selected rule? 您确定要清空所选规则下的已下载剧集列表吗? - + Regex mode: use Perl-compatible regular expressions 正则模式:使用兼容 Perl 的正则表达式 - - + + Position %1: %2 位置 %1:%2 - + Wildcard mode: you can use 通配符模式:您可以使用—— - - + + Import error 导入错误 - + Failed to read the file. %1 - 未能读取文件: %1 + 未能读取文件:%1 - + ? to match any single character ? —— 匹配任意单个字符 - + * to match zero or more of any characters * —— 匹配 0 个或多个任意字符 - + Whitespaces count as AND operators (all words, any order) 空格 —— "与" 运算符 (所有关键词,任意顺序) - + | is used as OR operator | —— "或" 运算符 - + If word order is important use * instead of whitespace. 如果要区分关键词顺序,请使用 * 替代空格。 - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) 将 %1 符号的一侧留空的表达式 (例如 %2) - + will match all articles. 将匹配所有文章。 - + will exclude all articles. 将排除所有文章。 @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" 无法建立 Torrent 恢复文件夹:“%1” - + Cannot parse resume data: invalid format 无法解析恢复数据:无效格式 - - + + Cannot parse torrent info: %1 无法解析 Torrent 信息:%1 - + Cannot parse torrent info: invalid format 无法解析 Torrent 信息:无效格式 - + + Mismatching info-hash detected in resume data + 在继续数据中检测到不匹配的 info-hash + + + Couldn't save torrent metadata to '%1'. Error: %2. 无法将 Torrent 元数据保存到 “%1”。错误:%2 - + Couldn't save torrent resume data to '%1'. Error: %2. 无法将 Torrent 恢复数据保存到 “%1”。错误:%2 - + Couldn't load torrents queue: %1 无法加载 Torrent 队列:%1 - + Cannot parse resume data: %1 无法解析恢复数据:%1 - + Resume data is invalid: neither metadata nor info-hash was found 恢复数据无效:没有找到元数据和信息哈希 - + Couldn't save data to '%1'. Error: %2 无法将数据保存到 “%1”。错误:%2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. 未找到。 - + Couldn't load resume data of torrent '%1'. Error: %2 无法加载 Torrent “%1”的恢复数据。错误:%2 - - + + Database is corrupted. 数据库损坏。 - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - 无法启用预写式日志(Write-Ahead Logging)记录模式。错误:%1。 + 无法启用预写式日志(WAL)记录模式。错误:%1。 - + Couldn't obtain query result. 无法获取查询结果。 - + WAL mode is probably unsupported due to filesystem limitations. 由于文件系统限制,WAL 模式可能不受支持。 - + Couldn't begin transaction. Error: %1 无法开始处理。错误:%1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. 无法保存 Torrent 元数据。 错误:%1。 - + Couldn't store resume data for torrent '%1'. Error: %2 无法存储 Torrent “%1” 的恢复数据。错误:%2 - + Couldn't delete resume data of torrent '%1'. Error: %2 无法删除 Torrent “%1” 的恢复数据。错误:%2 - + Couldn't store torrents queue positions. Error: %1 无法存储 Torrent 的队列位置。错误:%1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 分布式哈希表(DHT)支持:%1 - - - - - - - - - + + + + + + + + + ON - - - - - - - - - + + + + + + + + + OFF - - + + Local Peer Discovery support: %1 本地 Peer 发现支持:%1 - + Restart is required to toggle Peer Exchange (PeX) support 开/关 Peer 交换(PeX)功能必须重新启动程序 - + Failed to resume torrent. Torrent: "%1". Reason: "%2" 未能继续下载 Torrent。Torrent:“%1”。原因:“%2” - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" 未能继续下载 Torrent:检测到不一致的 Torrent ID。Torrent:“%1” - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" 检测到不一致的数据:配置文件缺少分类。分类将被恢复但其设置将被重置到默认值。Torrent:“%1”。分类:“%2” - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" 检测到不一致的数据:无效分类。Torrent:“%1”。分类:“%2” - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" 检测到已恢复分类的路径和 Torrent 当前保存路径不一致。Torrent 现在切换到手动模式。Torrent:“%1”。分类:“%2” - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" 检测到不一致的数据:配置文件缺少标签。标签将被恢复。Torrent:“%1”。标签:“%2” - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" 检测到不一致的数据:无效标签。Torrent:“%1”。标签:“%2” - + System wake-up event detected. Re-announcing to all the trackers... - 检测到系统唤醒事件。正重新向所有 trackers 广播... + 检测到系统唤醒事件。正重新向所有 Tracker 广播... - + Peer ID: "%1" Peer ID:“%1” - + HTTP User-Agent: "%1" HTTP User-Agent:“%1” - + Peer Exchange (PeX) support: %1 Peer 交换(PeX)支持:%1 - - + + Anonymous mode: %1 匿名模式:%1 - - + + Encryption support: %1 加密支持:%1 - - + + FORCED 强制 - + Could not find GUID of network interface. Interface: "%1" 找不到网络接口的 GUID。接口:“%1” - + Trying to listen on the following list of IP addresses: "%1" 尝试侦听下列 IP 地址列表:“%1” - + Torrent reached the share ratio limit. Torrent 到达了分享率上限。 - - - + Torrent: "%1". Torrent:“%1”。 - - - Removed torrent. - 已移除 Torrent。 + 已移除 Torrent。 - - - Removed torrent and deleted its content. - 已移除 Torrent 并删除了其内容。 + 已移除 Torrent 并删除了其内容。 - - - Torrent paused. - Torrent 已暂停。 + Torrent 已暂停。 - - - + Super seeding enabled. 已开启超级做种。 - + Torrent reached the seeding time limit. Torrent 到达做种时间上限。 - + Torrent reached the inactive seeding time limit. Torrent 到达了不活跃做种时间上限。 - + Failed to load torrent. Reason: "%1" 加载 Torrent 失败,原因:“%1” - + I2P error. Message: "%1". + I2P 错误。消息:“%1”。 + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP 支持:开 + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - 正在下载 Torrent,请稍等...来源:“%1” + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - 加载 Torrent 失败。来源:“%1”。原因:“%2” + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - 检测到添加重复 torrent 的尝试。trackers 合并被禁用。Torrent:%1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - 检测到添加重复 torrent 的尝试。无法合并 trackers,因其为私有 torrent。Torrent:%1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - 检测到添加重复 torrent 的尝试。从新来源合并了 trackers。Torrent:%1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP 支持:开 + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP 支持:关 + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - 导出 Torrent 失败。Torrent:“%1”。保存位置:“%2”。原因:“%3” + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - 终止了保存恢复数据。未完成 Torrent 数目:%1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + 合并 Tracker 已禁用 + + + + Trackers cannot be merged because it is a private torrent + - System network status changed to %1 - e.g: System network status changed to ONLINE - 系统网络状态更改为 %1 + + Trackers are merged from new source + 来自新来源的 Tracker 已经合并 - ONLINE - 在线 + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP 支持:关 - OFFLINE - 离线 + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + 导出 Torrent 失败。Torrent:“%1”。保存位置:“%2”。原因:“%3” - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 的网络配置已变化,刷新会话绑定 + + Aborted saving resume data. Number of outstanding torrents: %1 + 终止了保存恢复数据。未完成 Torrent 数目:%1 - + The configured network address is invalid. Address: "%1" 配置的网络地址无效。地址:“%1” - - + + Failed to find the configured network address to listen on. Address: "%1" 未能找到配置的要侦听的网络地址。地址:“%1” - + The configured network interface is invalid. Interface: "%1" 配置的网络接口无效。接口:“%1” - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" 应用被禁止的 IP 地址列表时拒绝了无效的 IP 地址。IP:“%1” - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" 已添加 Tracker 到 Torrent。Torrent:“%1”。Tracker:“%2” - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" 从 Torrent 删除了 Tracker。Torrent:“%1”。Tracker:“%2” - + Added URL seed to torrent. Torrent: "%1". URL: "%2" 已添加 URL 种子到 Torrent。Torrent:“%1”。URL:“%2” - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" 从 Torrent 中删除了 URL 种子。Torrent:“%1”。URL:“%2” - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent 已暂停。Torrent:“%1” + Torrent 已暂停。Torrent:“%1” - + Torrent resumed. Torrent: "%1" Torrent 已恢复。Torrent:“%1” - + Torrent download finished. Torrent: "%1" Torrent 下载完成。Torrent:“%1” - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" 取消了 Torrent 移动。Torrent:“%1”。 源位置:“%2”。目标位置:“%3” - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination 未能将 Torrent 移动加入队列。Torrent:“%1”。源位置:“%2”。目标位置:“%3”。原因:正在将 Torrent 移动到目标位置 - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location 未能将 Torrent 移动加入队列。Torrent:“%1”。源位置:“%2”。目标位置:“%3”。原因:两个路径指向同一个位置 - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" 已将 Torrent 移动加入队列。Torrent:“%1”。源位置:“%2”。目标位置:“%3” - + Start moving torrent. Torrent: "%1". Destination: "%2" 开始移动 Torrent。Torrent:“%1”。目标位置:“%2” - + Failed to save Categories configuration. File: "%1". Error: "%2" 保存分类配置失败。文件:“%1”。错误:“%2” - + Failed to parse Categories configuration. File: "%1". Error: "%2" 解析分类配置失败。文件:“%1”。错误:“%2” - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 递归下载 Torrent 内的 .torrent 文件。源 Torrent:“%1”。文件:“%2” - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - 加载 Torrent 内的 .torrent 文件失败。源 Torrent:“%1”.文件:“%2”。错误:“%3” - - - + Successfully parsed the IP filter file. Number of rules applied: %1 成功解析了 IP 过滤规则文件。应用的规则数:%1 - + Failed to parse the IP filter file 解析 IP 过滤规则文件失败 - + Restored torrent. Torrent: "%1" 已还原 Torrent。Torrent:“%1” - + Added new torrent. Torrent: "%1" 添加了新 Torrent。Torrent:“%1” - + Torrent errored. Torrent: "%1". Error: "%2" Torrent 出错了。Torrent:“%1”。错误:“%2” - - Removed torrent. Torrent: "%1" - 移除了 Torrent。Torrent:“%1” + 移除了 Torrent。Torrent:“%1” - Removed torrent and deleted its content. Torrent: "%1" - 移除了 Torrent 并删除了其内容。Torrent:“%1” + 移除了 Torrent 并删除了其内容。Torrent:“%1” + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent 缺少 SSL 参数。Torrent:"%1"。消息: "%2" - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" 文件错误警报。Torrent:“%1”。文件:“%2”。原因:“%3” - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP 端口映射失败。消息:“%1” - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP 端口映射成功。消息:“%1” - + IP filter this peer was blocked. Reason: IP filter. IP 过滤规则 - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). 过滤的端口(%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - 端口特权端口(%1) + 特权端口(%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent 会话遇到严重错误。原因:“%1” + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 代理错误。地址:%1。消息:“%2”。 - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 混合模式限制 - + Failed to load Categories. %1 未能加载类别:%1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - 未能加载类别配置。文件: "%1"。错误: "无效数据格式" + 未能加载分类配置。文件:“%1”。错误:“无效数据格式” - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - 移除了 Torrent 文件但未能删除其内容和/或 part 文件。Torrent:“%1”。错误:“%2” + 移除了 Torrent 文件但未能删除其内容和/或 part 文件。Torrent:“%1”。错误:“%2” - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 已停用 - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 已停用 - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL 种子 DNS 查询失败。Torrent:“%1”。URL:“%2”。错误:“%3” + URL 种子 DNS 查询失败。Torrent:“%1”。URL:“%2”。错误:“%3” - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" 收到了来自 URL 种子的错误信息。Torrent:“%1”。URL:“%2”。消息:“%3” - + Successfully listening on IP. IP: "%1". Port: "%2/%3" - 成功监听 IP。IP:“%1”。端口:"%2/%3" + 成功监听 IP。IP:“%1”。端口:“%2/%3” - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" - 监听 IP 失败。IP:“%1”。端口:"%2/%3"。原因:“%4” + 监听 IP 失败。IP:“%1”。端口:“%2/%3”。原因:“%4” - + Detected external IP. IP: "%1" 检测到外部 IP。IP:“%1” - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" 错误:内部警报队列已满,警报被丢弃。您可能注意到性能下降。被丢弃的警报类型:“%1”。消息:“%2” - + Moved torrent successfully. Torrent: "%1". Destination: "%2" 成功移动了 Torrent。Torrent:“%1”。目标位置:“%2” - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" 移动 Torrent 失败。Torrent:“%1”。源位置:“%2”。目标位置:“%3”。原因:“%4” - BitTorrent::TorrentCreator - - - Operation aborted - 操作中止 - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - 创建新的 Torrent 文件失败。原因:%1。 + + Failed to start seeding. + 启动做种失败 - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - 操作中止 + 操作中止 + + Create new torrent file failed. Reason: %1. - 创建新的 Torrent 文件失败。原因:%1。 + 创建新的 Torrent 文件失败。原因:%1。 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 无法将用户 “%1” 添加到 Torrent “%2”。原因:%3 - + Peer "%1" is added to torrent "%2" 用户 “%1” 已被添加到 Torrent “%2” - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. 检测到异常数据。Torrent 文件:%1。数据: total_wanted=%2 total_wanted_done=%3。 - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. 无法写入文件。原因:“%1”。Torrent 目前处在 “仅上传” 模式。 - + Download first and last piece first: %1, torrent: '%2' 先下载首尾文件块:%1,Torrent:“%2” - + On 开启 - + Off 关闭 - + + Failed to reload torrent. Torrent: %1. Reason: %2 + 重加载 torrent 文件失败。Torrent:%1. 原因:%2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" 生成恢复数据失败。Torrent:“%1”。原因:“%2” - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" 恢复 Torrent 失败。文件可能被移动或存储不可访问。Torrent:“%1”。原因:“%2” - + Missing metadata 缺少元数据 - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" 文件重命名错误。Torrent:“%1”,文件:“%2”,错误:“%3” - + Performance alert: %1. More info: %2 性能警报:%1。更多信息:%2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' - 参数 '%1' 必须符合语法 '%1=%2' + 参数 “%1” 必须符合语法 “%1=%2” - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' - 参数 '%1' 必须符合语法 '%1=%2' + 参数 “%1” 必须符合语法 “%1=%2” - + Expected integer number in environment variable '%1', but got '%2' - 预期环境变量 '%1' 是一个整数,而它的值为 '%2' + 预期环境变量 “%1” 是一个整数,而它的值为 “%2” - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - 参数 '%1' 必须符合语法 '%1=%2' + 参数 “%1” 必须符合语法 “%1=%2” - + Expected %1 in environment variable '%2', but got '%3' - 预期环境变量 '%2' 是 '%1',而它是 '%3' + 预期环境变量 “%2” 是 “%1”,而它是 “%3” - - + + %1 must specify a valid port (1 to 65535). - %1 必须指定一个有效的端口号(1 ~ 65535)。 + %1 必须指定一个有效的端口号(1 - 65535)。 - + Usage: 使用: - + [options] [(<filename> | <url>)...] [options] [(<filename> | <url>)...] - + Options: 设定: - + Display program version and exit 显示程序版本并退出 - + Display this help message and exit 显示帮助信息并退出 - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + 参数 “%1” 必须符合语法 “%1=%2” + + + + Confirm the legal notice + 确认法律注意事项 + + + + port 端口 - - Change the Web UI port - 修改 Web UI 端口 + + Change the WebUI port + 更改 WebUI 端口 - + Change the torrenting port 更改做种端口 - + Disable splash screen 禁用启动界面 - + Run in daemon-mode (background) 运行在守护进程模式(后台运行) - + dir Use appropriate short form or abbreviation of "directory" 路径 - + Store configuration files in <dir> 保存配置文件于 <dir> - - + + name 名称 - + Store configuration files in directories qBittorrent_<name> 保存配置文件于 qBittorrent_<name> 文件夹 - + Hack into libtorrent fastresume files and make file paths relative to the profile directory 将修改 libtorrent 的快速恢复文件并使文件路径相对于设置文件夹 - + files or URLs 文件或 URL - + Download the torrents passed by the user 下载用户传入的 Torrent - + Options when adding new torrents: - 添加新的 torrent 时的选项: + 添加新的 Torrent 时的选项: - + path 路径 - + Torrent save path Torrent 保存路径 - + + Add torrents as running or stopped + + + Add torrents as started or paused - 添加 torrent 时的状态为开始或暂停 + 添加 Torrent 时的状态为开始或暂停 - + Skip hash check 跳过哈希校验 - + Assign torrents to category. If the category doesn't exist, it will be created. - 指定 torrent 的分类。如果分类不存在,则会创建它。 + 指定 Torrent 的分类。如果分类不存在,则会创建它。 - + Download files in sequential order 按顺序下载文件 - + Download first and last pieces first 先下载首尾文件块 - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. - 指定在添加 torrent 时是否开启“新建 Torrent”窗口 + 指定在添加 Torrent 时是否开启“新建 Torrent”窗口 - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: - 选项的值可以通过环境变量设置。例如选项的名称为 'parameter-name',那么它的环境变量名为 'QBT_PARAMETER_NAME'(字符大写,使用 '_' 替换 '-')。若要指定标记的值,将值设置为 '1' 或 'TRUE'。例如,若要禁用启动画面: + 选项的值可以通过环境变量设置。例如选项的名称为 “parameter-name”,那么它的环境变量名为 “QBT_PARAMETER_NAME”(字符大写,使用 “_” 替换 “-”)。若要指定标记的值,将值设置为 “1” 或 “TRUE”。例如,若要禁用启动画面: - + Command line parameters take precedence over environment variables 命令行参数将覆盖环境变量 - + Help 帮助 @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories 分类 - + All 全部 - + Uncategorized 未分类 @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - 继续 torrent + Start torrents + + Stop torrents + + + + Resume torrents + 继续 torrent + + Pause torrents - 暂停 torrent + 暂停 torrent @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... 编辑... - + Reset 重置 + + + System + + CookiesDialog @@ -3035,22 +3141,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 未能加载自定义主题样式表:%1 - + Failed to load custom theme colors. %1 - 未能加载自定义主题颜色: %1 + 未能加载自定义主题颜色:%1 DefaultThemeSource - + Failed to load default theme colors. %1 - 未能加载默认主题颜色: %1 + 未能加载默认主题颜色:%1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - 并永久删除这些文件 + 并永久删除这些文件 - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? 您确定要从传输列表中删除 “%1” 吗? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? 您确定要从传输列表中删除这 %1 个 Torrent 吗? - + Remove 删除 @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 从 URL 下载 - + Add torrent links 添加 torrent 链接 - + One link per line (HTTP links, Magnet links and info-hashes are supported) 每行一个链接(支持 HTTP 链接,磁力链接和哈希值) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 下载 - + No URL entered 没有输入 URL - + Please type at least one URL. 请输入至少一个 URL。 @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 解析错误:过滤规则文件不是一个有效的 PeerGuardian P2B 文件。 + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + 正在下载 Torrent... 来源:“%1” - Trackers cannot be merged because it is a private torrent - + 无法合并 Tracker,因为这是一个私有 Torrent - + Torrent is already present - Torrent 已存在 + Torrent 已存在 + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent “%1” 已经在传输列表中。你想合并来自新来源的 Tracker 吗? + Torrent “%1” 已经在传输列表中。你想合并来自新来源的 Tracker 吗? GeoIPDatabase - - + + Unsupported database file size. 不支持数据库文件大小。 - + Metadata error: '%1' entry not found. 元数据错误:未找到 '%1' 项目。 - + Metadata error: '%1' entry has invalid type. 元数据错误:'%1' 项目类型无效。 - + Unsupported database version: %1.%2 不支持的数据库版本:%1.%2 - + Unsupported IP version: %1 不支持 IP 版本:%1 - + Unsupported record size: %1 不支持的记录大小:%1 - + Database corrupted: no data section found. 数据库损坏:未发现数据段。 @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 - HTTP 请求大小超过限制,正在关闭套接字。限制:%1,IP:%2 + HTTP 请求大小超过限制,将关闭套接字。限制:%1,IP:%2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - 不正确的 Http 请求方式,正在关闭 socket。IP:%1。方式: "%2" + 不正确的 HTTP 请求方式,将关闭套接字。IP:%1。方式:“%2” - + Bad Http request, closing socket. IP: %1 Http 请求错误,关闭套接字。IP:%1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... 浏览... - + Reset 重置 - + Select icon 选择图标 - + Supported image files 支持的图片文件 + + LegalNotice + + + Legal Notice + 法律声明 + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent 是一个文件共享程序。当您运行一个 Torrent 文件时,它的数据会被上传给其他用户。您需要对共享的任何内容负全部责任。 + + + + No further notices will be issued. + 之后不会再提醒。 + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + 如果你已经阅读了法律注意事项,可以使用命令行选项 '--confirm-legal-notice' 来隐藏此消息。 + + + + Press 'Enter' key to continue... + 按下 'Enter' 键继续... + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 被阻止,原因:%2。 - + %1 was banned 0.0.0.0 was banned %1 被禁止 @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 是未知的命令行参数。 - - + + %1 must be the single command line parameter. %1 必须是一个单一的命令行参数。 - - You cannot use %1: qBittorrent is already running for this user. - 您不能使用 %1:qBittorrent 已在当前用户运行。 - - - + Run application with -h option to read about command line parameters. 启动程序时加入 -h 参数以参看相关命令行信息。 - + Bad command line 错误的命令 - + Bad command line: 错误的命令: - + An unrecoverable error occurred. - + 发生不可恢复的错误。 - - + + qBittorrent has encountered an unrecoverable error. - + qBittorrent 遇到无法恢复的错误。 - - Legal Notice - 法律声明 - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent 是一个文件共享程序。当您运行一个 torrent 文件时,它的数据会被上传给其他用户。您需要对你共享的任何内容负全部的责任。 - - - - No further notices will be issued. - 之后不会再提醒。 - - - - Press %1 key to accept and continue... - 按 %1 键接受并且继续... - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent 是一个文件共享程序。当您运行一个 torrent 文件时,它的数据会被上传给其他用户。您需要对你共享的任何内容负全部的责任。 - -之后不会再提醒。 + + You cannot use %1: qBittorrent is already running. + 你不能使用 %1:qBittorrent 已经在运行。 - - Legal notice - 法律声明 + + Another qBittorrent instance is already running. + 另一个 qBittorrent 实例已经在运行。 - - Cancel - 取消 + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + 发现了未预期的 qBittorrent 实例。正在退出此实例。当前进程 ID: %1. - - I Agree - 同意 + + Error when daemonizing. Reason: "%1". Error code: %2. + 转变成后台驻留进程时出错。原因: "%1". 错误代码:%2. @@ -3524,621 +3660,706 @@ No further notices will be issued. 编辑(&E) - + &Tools 工具(&T) - + &File 文件(&F) - + &Help 帮助(&H) - + On Downloads &Done 下载完成后的操作(&D) - + &View 视图(&V) - + &Options... 设置(&O)... - &Resume - 继续(&R) + 继续(&R) - + &Remove 移除(&R) - + Torrent &Creator 生成 Torrent(&C) - - + + Alternative Speed Limits 备用速度限制 - + &Top Toolbar 顶部工具栏(&T) - + Display Top Toolbar 显示顶部工具栏 - + Status &Bar 状态栏(&B) - + Filters Sidebar 筛选器侧边栏 - + S&peed in Title Bar 在标题栏显示速度(&P) - + Show Transfer Speed in Title Bar 在标题栏显示传输速度 - + &RSS Reader RSS 阅读器(&R) - + Search &Engine 搜索引擎(&E) - + L&ock qBittorrent 锁定 qBittorrent(&O) - + Do&nate! 捐赠(&N) - + + Sh&utdown System + + + + &Do nothing 什么都不做(&D) - + Close Window 关闭窗口 - R&esume All - 全部继续(&E) + 全部继续(&E) - + Manage Cookies... 管理 Cookies... - + Manage stored network cookies 管理存储的网络 cookies - + Normal Messages 一般消息 - + Information Messages 通知消息 - + Warning Messages 警告信息 - + Critical Messages 严重信息 - + &Log 日志(&L) - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... 设置全局速度限制... - + Bottom of Queue 队列底部 - + Move to the bottom of the queue 移动到队列底部 - + Top of Queue 队列顶部 - + Move to the top of the queue 移动到队列顶部 - + Move Down Queue 向下移动队列 - + Move down in the queue 在队列中向下移动 - + Move Up Queue 向上移动队列 - + Move up in the queue 在队列中向上移动 - + &Exit qBittorrent 退出 qBittorrent(&E) - + &Suspend System 系统睡眠(&S) - + &Hibernate System 系统休眠(&H) - S&hutdown System - 关机(&U) + 关机(&U) - + &Statistics 统计(&S) - + Check for Updates 检查更新 - + Check for Program Updates 检查程序更新 - + &About 关于(&A) - &Pause - 暂停(&P) + 暂停(&P) - P&ause All - 全部暂停(&A) + 全部暂停(&A) - + &Add Torrent File... 添加 Torrent 文件(&A)... - + Open 打开 - + E&xit 退出(&X) - + Open URL 打开 URL - + &Documentation 帮助文档(&D) - + Lock 锁定 - - - + + + Show 显示 - + Check for program updates 检查程序更新 - + Add Torrent &Link... 添加 Torrent 链接(&L)... - + If you like qBittorrent, please donate! 如果您喜欢 qBittorrent,请捐款! - - + + Execution Log 执行日志 - + Clear the password 清除密码 - + &Set Password 设置密码(&S) - + Preferences 首选项 - + &Clear Password 清除密码(&C) - + Transfers 传输 - - + + qBittorrent is minimized to tray qBittorrent 已最小化到任务托盘 - - - + + + This behavior can be changed in the settings. You won't be reminded again. 该行为可以在设置中改变。你不会再次收到此提醒。 - + Icons Only 只显示图标 - + Text Only 只显示文字 - + Text Alongside Icons 在图标旁显示文字 - + Text Under Icons 在图标下显示文字 - + Follow System Style 跟随系统设置 - - + + UI lock password 锁定用户界面的密码 - - + + Please type the UI lock password: 请输入用于锁定用户界面的密码: - + Are you sure you want to clear the password? 您确定要清除密码吗? - + Use regular expressions 使用正则表达式 - - Search - 搜索 + + + Search Engine + 搜索引擎 - - Transfers (%1) - 传输 (%1) + + Search has failed + 搜索失败 - Recursive download confirmation - 确认递归下载 + + Search has finished + - Never - 从不 + + Search + 搜索 + + + + Transfers (%1) + 传输 (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent 刚刚被更新,需要重启以使更改生效。 - + qBittorrent is closed to tray qBittorrent 已关闭到任务托盘 - + Some files are currently transferring. 一些文件正在传输中。 - + Are you sure you want to quit qBittorrent? 您确定要退出 qBittorrent 吗? - + &No 否(&N) - + &Yes 是(&Y) - + &Always Yes 总是(&A) - + Options saved. 已保存选项 - %1/s - s is a shorthand for seconds - %1/s + + [PAUSED] %1 + %1 is the rest of the window title + - - + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [D: %1, U: %2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime 缺少 Python 运行环境 - + qBittorrent Update Available qBittorrent 有可用更新 - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? 使用搜索引擎需要 Python,但是它似乎未被安装。 你想现在安装吗? - + Python is required to use the search engine but it does not seem to be installed. 使用搜索引擎需要 Python,但是它似乎未被安装。 - - + + Old Python Runtime Python 运行环境过旧 - + A new version is available. 新版本可用。 - + Do you want to download %1? 您想要下载版本 %1 吗? - + Open changelog... 打开更新日志... - + No updates available. You are already using the latest version. 没有可用更新。 您正在使用的已是最新版本。 - + &Check for Updates 检查更新(&C) - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? 您的 Python 版本(%1)已过时。最低要求:%2。 您想现在安装较新的版本吗? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. 您的 Python 版本(%1)已过时,请更新其至最新版本以继续使用搜索引擎。 最低要求:%2。 - + + Paused + 暂停 + + + Checking for Updates... 正在检查更新... - + Already checking for program updates in the background 已经在后台检查程序更新 - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error 下载出错 - Python setup could not be downloaded, reason: %1. Please install it manually. - 无法下载 Python 安装程序,原因:%1。 + 无法下载 Python 安装程序,原因:%1。 请手动安装。 - - + + Invalid password 无效密码 - + Filter torrents... 过滤 Torrent... - + Filter by: 过滤依据: - + The password must be at least 3 characters long 密码长度至少为 3 个字符 - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent “%1” 包含 .torrent 文件,您要继续下载它们的内容吗? - - - + The password is invalid 该密码无效 - + DL speed: %1 e.g: Download speed: 10 KiB/s 下载速度:%1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s 上传速度:%1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [D: %1, U: %2] qBittorrent %3 - - - + Hide 隐藏 - + Exiting qBittorrent 正在退出 qBittorrent - + Open Torrent Files 打开 Torrent 文件 - + Torrent Files Torrent 文件 @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O 错误:%1 - + The file size (%1) exceeds the download limit (%2) 文件大小(%1)超出了下载限制(%2) - + Exceeded max redirections (%1) 超出最大重定向限制次数(%1) - + Redirected to magnet URI 重定向至磁力链接 - + The remote host name was not found (invalid hostname) 未找到远程主机名(无效主机名) - + The operation was canceled 操作被取消 - + The remote server closed the connection prematurely, before the entire reply was received and processed 远程服务器在完整应答被接收和处理前提早关闭了连接 - + The connection to the remote server timed out 连接远程服务器超时 - + SSL/TLS handshake failed SSL/TLS 握手失败 - + The remote server refused the connection 远程服务器拒绝了连接 - + The connection to the proxy server was refused 到代理服务器的连接被拒绝 - + The proxy server closed the connection prematurely 代理服务器提前关闭了连接 - + The proxy host name was not found 未找到代理服务器主机名 - + The connection to the proxy timed out or the proxy did not reply in time to the request sent 代理服务器连接超时,或代理服务器没有及时响应发送请求 - + The proxy requires authentication in order to honor the request but did not accept any credentials offered 代理服务器要求身份验证以确认请求,但没有接受提供的凭据 - + The access to the remote content was denied (401) 远程内容访问被拒绝(401) - + The operation requested on the remote content is not permitted 对远程内容所请求进行的操作不被允许 - + The remote content was not found at the server (404) - 远程内容在服务器上未找到 (404) + 远程内容在服务器上未找到(404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted 远程服务器要求身份验证以提供资源,但提供的凭据不被接受 - + The Network Access API cannot honor the request because the protocol is not known 网络访问 API 无法处理请求,因为协议未知 - + The requested operation is invalid for this protocol 请求的操作对该协议无效 - + An unknown network-related error was detected 检测到网络相关的未知错误 - + An unknown proxy-related error was detected 检测到代理服务器相关的未知错误 - + An unknown error related to the remote content was detected 检测到和远程内容相关的未知错误 - + A breakdown in protocol was detected 检测到协议故障 - + Unknown error 未知错误 @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" 忽略 SSL 错误,URL:"%1",错误:"%2" @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced 高级 - + Customize UI Theme... 定制用户界面主题... - + Transfer List 传输列表 - + Confirm when deleting torrents 删除 Torrent 时提示确认 - Shows a confirmation dialog upon pausing/resuming all the torrents - 暂停/恢复所有 torrent 时显示确认对话框 + 暂停/恢复所有 torrent 时显示确认对话框 - Confirm "Pause/Resume all" actions - 确认”暂停/继续所有“操作 + 确认”暂停/继续所有“操作 - + Use alternating row colors In table elements, every other row will have a grey background. 使用交替的行颜色 - + Hide zero and infinity values 隐藏为 0 及无穷大的项 - + Always 总是 - Paused torrents only - 仅暂停 torrent + 仅暂停 torrent - + Action on double-click 双击执行操作 - + Downloading torrents: 正在下载 torrent: - - Start / Stop Torrent - 开始 / 停止 Torrent + 开始 / 停止 Torrent - - + + Open destination folder 打开目标文件夹 - - + + No action 不执行操作 - + Completed torrents: 完成的 torrent: - + Auto hide zero status filters 自动隐藏零状态过滤器 - + Desktop 桌面 - + Start qBittorrent on Windows start up 在 Windows 启动时启动 qBittorrent - + Show splash screen on start up 启动时显示程序启动画面 - + Confirmation on exit when torrents are active 如果退出时有 Torrent 活动则提示确认 - + Confirmation on auto-exit when downloads finish 下载完成并自动退出时提示确认 - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p><br/>你可以使用<span style=" font-weight:600;">控制面板</span>里的<span style=" font-weight:600;">默认程序</span>对话框来设置 qBittorrent为打开 .torrent 文件和/或磁力链接的默认程序。</p></body></html> - + KiB KiB - + Torrent content layout: Torrent 内容布局: - + Original 原始 - + Create subfolder 创建子文件夹 - + Don't create subfolder 不创建子文件夹 - + The torrent will be added to the top of the download queue 该 Torrent 将被添加至下载队列顶部 - + Add to top of queue The torrent will be added to the top of the download queue 添加到队列顶部 - + When duplicate torrent is being added 当添加重复的 torrent 时 - + Merge trackers to existing torrent 合并 trackers 到现有 torrent - + + Keep unselected files in ".unwanted" folder + 将未选中的文件保留在 ".unwanted" 文件夹中 + + + Add... 添加... - + Options.. 选项.. - + Remove 删除 - + Email notification &upon download completion 下载完成时发送电子邮件通知(&U) - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: Peer 连接协议: - + Any 任何 - + I2P (experimental) I2P(实验性) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>如启用 “混合模式”,则 I2P Torrent 也被允许从 Tracker 之外的来源获得 peers,并连接到正常的 IP 地址,这样的结果是不提供任何的匿名性。对于对 I2P 匿名性不感兴趣,但让仍希望能连接到 I2P peer 的用户来说,此模式会有用处。</p></body></html> + <html><head/><body><p>如启用 “混合模式”,则 I2P Torrent 也被允许从 Tracker 之外的来源获得 peers,并连接到正常的 IP 地址,这样的结果是不提供任何的匿名性。对于对 I2P 匿名性不感兴趣,但让仍希望能连接到 I2P peer 的用户来说,此模式会有用处。</p></body></html> - + Mixed mode 混合模式 - + Some options are incompatible with the chosen proxy type! 某些选项与所选的代理类型不兼容! - + If checked, hostname lookups are done via the proxy 勾选后,将通过代理查找主机名 - + Perform hostname lookup via proxy 通过代理查找主机名 - + Use proxy for BitTorrent purposes 对 BitTorrent 目的使用代理 - + RSS feeds will use proxy RSS 源将使用代理 - + Use proxy for RSS purposes 对 RSS 目的使用代理 - + Search engine, software updates or anything else will use proxy 搜索引擎、软件更新或其他事项将使用代理 - + Use proxy for general purposes 对常规目的使用代理 - + IP Fi&ltering IP 过滤(&L) - + Schedule &the use of alternative rate limits 自动启用备用速度限制(&T) - + From: From start time 从: - + To: To end time 到: - + Find peers on the DHT network 在 DHT 网络上寻找节点 - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption 禁用加密:仅当节点不使用加密协议时才连接 - + Allow encryption 允许加密 - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">更多信息</a>) - + Maximum active checking torrents: 最大活跃检查 Torrent 数: - + &Torrent Queueing Torrent 队列(&T) - + When total seeding time reaches 达到总做种时间时 - + When inactive seeding time reaches 达到不活跃做种时间时 - A&utomatically add these trackers to new downloads: - 自动将以下 Tracker 添加到新的任务(&U): + 自动将以下 Tracker 添加到新的任务(&U): - + RSS Reader RSS 阅读器 - + Enable fetching RSS feeds 启用获取 RSS 订阅 - + Feeds refresh interval: RSS 订阅源更新间隔: - + + Same host request delay: + 相同的主机请求延迟: + + + Maximum number of articles per feed: 每个订阅源文章数目最大值: - - - + + + min minutes 分钟 - + Seeding Limits 做种限制 - Pause torrent - 暂停 torrent + 暂停 torrent - + Remove torrent 删除 torrent - + Remove torrent and its files 删除 torrent 及所属文件 - + Enable super seeding for torrent 为 torrent 启用超级做种 - + When ratio reaches 当分享率达到 - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + 网址: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS Torrent 自动下载器 - + Enable auto downloading of RSS torrents 启用 RSS Torrent 自动下载 - + Edit auto downloading rules... 修改自动下载规则... - + RSS Smart Episode Filter RSS 智能剧集过滤器 - + Download REPACK/PROPER episodes 下载 REPACK/PROPER 版剧集 - + Filters: 过滤器: - + Web User Interface (Remote control) Web 用户界面(远程控制) - + IP address: IP 地址: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv "::" 为任何 IPv6 地址,或 "*" 为 IPv4 和 IPv6。 - + Ban client after consecutive failures: 连续失败后禁止客户端: - + Never 从不 - + ban for: 禁止: - + Session timeout: 会话超时: - + Disabled 禁用 - Enable cookie Secure flag (requires HTTPS) - 启用 cookie 安全标志(需要 HTTPS) + 启用 cookie 安全标志(需要 HTTPS) - + Server domains: 服务器域名: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP 使用 HTTPS 而不是 HTTP(&U) - + Bypass authentication for clients on localhost 对本地主机上的客户端跳过身份验证 - + Bypass authentication for clients in whitelisted IP subnets 对 IP 子网白名单中的客户端跳过身份验证 - + IP subnet whitelist... IP 子网白名单... - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. 指定反向代理 IP(或子网,如 0.0.0.0/24)以使用转发的客户端地址(X-Forwarded-For 标头)。使用 “;” 符号分割多个条目。 - + Upda&te my dynamic domain name 更新我的动态域名(&T) - + Minimize qBittorrent to notification area 最小化 qBittorrent 到通知区域 - + + Search + 搜索 + + + + WebUI + + + + Interface 接口 - + Language: 语言 - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: 托盘图标样式: - - + + Normal 正常 - + File association 文件关联 - + Use qBittorrent for .torrent files 使用 qBittorrent 打开 .torrent 文件 - + Use qBittorrent for magnet links 使用 qBittorrent 打开磁力链接 - + Check for program updates 检查程序更新 - + Power Management 电源管理 - + + &Log Files + + + + Save path: 保存路径: - + Backup the log file after: 当大于指定大小时备份日志文件: - + Delete backup logs older than: 删除早于指定时间的备份日志文件: - + + Show external IP in status bar + + + + When adding a torrent 添加 torrent 时 - + Bring torrent dialog to the front 前置 torrent 对话框 - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled 添加操作被取消时也删除 .torrent 文件 - + Also when addition is cancelled 添加操作被取消时也删除 .torrent 文件 - + Warning! Data loss possible! 警告!该操作可能会丢失数据! - + Saving Management 保存管理 - + Default Torrent Management Mode: 默认 Torrent 管理模式: - + Manual 手动 - + Automatic 自动 - + When Torrent Category changed: 当 Torrent 分类改变时: - + Relocate torrent 移动 torrent - + Switch torrent to Manual Mode 切换 torrent 至手动模式 - - + + Relocate affected torrents 移动影响的 torrent - - + + Switch affected torrents to Manual Mode 切换受影响的 torrent 至手动模式 - + Use Subcategories 启用子分类: - + Default Save Path: 默认保存路径: - + Copy .torrent files to: 复制 .torrent 文件到: - + Show &qBittorrent in notification area 在通知区域显示 qBittorrent(&Q) - &Log file - 日志文件(&L) + 日志文件(&L) - + Display &torrent content and some options 显示 Torrent 内容和选项(&T) - + De&lete .torrent files afterwards 添加后删除 .torrent 文件(&L) - + Copy .torrent files for finished downloads to: 复制下载完成的 .torrent 文件到: - + Pre-allocate disk space for all files 为所有文件预分配磁盘空间 - + Use custom UI Theme 使用自定义界面主题 - + UI Theme file: 界面主题文件: - + Changing Interface settings requires application restart 改变界面设置需要重启应用程序 - + Shows a confirmation dialog upon torrent deletion 删除 Torrent 时显示确认对话框 - - + + Preview file, otherwise open destination folder 预览文件,否则打开所在目录 - - Show torrent options - 显示 Torrent 选项 + 显示 Torrent 选项 - + Shows a confirmation dialog when exiting with active torrents 如果退出时有 Torrent 活动则提示确认 - + When minimizing, the main window is closed and must be reopened from the systray icon 最小化时,主窗体同时关闭,只能通过托盘图标打开 - + The systray icon will still be visible when closing the main window 关闭主窗体时,托盘图标保持可见 - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window 关闭 qBittorrent 到通知区域 - + Monochrome (for dark theme) 单色(深色主题) - + Monochrome (for light theme) 单色(浅色主题) - + Inhibit system sleep when torrents are downloading 下载时禁止系统自动睡眠 - + Inhibit system sleep when torrents are seeding 做种时禁止系统自动睡眠 - + Creates an additional log file after the log file reaches the specified file size 当日志文件达到指定大小时创建一个新的日志文件 - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings 记录性能警报 - The torrent will be added to download list in a paused state - 将 Torrent 以暂停状态添加到下载列表中 + 将 Torrent 以暂停状态添加到下载列表中 - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state 不要自动开始下载 - + Whether the .torrent file should be deleted after adding it 添加 .torrent 文件后是否要删除它 - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. 开始下载前分配所有文件的磁盘空间,以便最大限度减少磁盘碎片。只对 HDD 硬盘有用。 - + Append .!qB extension to incomplete files 为不完整的文件添加扩展名 .!qB - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it 当 Torrent 下载完成的同时,把其中包含的所有 .torrent 文件一并添加到 Torrent 列表中 - + Enable recursive download dialog 启用递归下载对话框 - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually 自动:各种 Torrent 属性(如保存路径)由关联分类决定 手动:各种 Torrent 属性(如保存路径)必须手工指定 - + When Default Save/Incomplete Path changed: 默认保存/不完整路径更改时: - + When Category Save Path changed: 当分类保存路径更改时: - + Use Category paths in Manual Mode 在手动模式下使用分类路径 - + Resolve relative Save Path against appropriate Category path instead of Default one 根据适当的分类路径而不是默认路径解析相对的保存路径 - + Use icons from system theme 使用来自系统主题的图标 - + Window state on start up: 启动时的窗口状态 - + qBittorrent window state on start up 启动时 qBittorrent 窗口状态 - + Torrent stop condition: Torrent 停止条件: - - + + None - - + + Metadata received 已收到元数据 - - + + Files checked 文件已被检查 - + Ask for merging trackers when torrent is being added manually 手动添加 torrent 时询问是否合并 trackers - + Use another path for incomplete torrents: 对不完整的 Torrent 使用另一个路径: - + Automatically add torrents from: 自动从此处添加 torrent: - + Excluded file names 排除的文件名 - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt:过滤精确文件名。 readme[0-9].txt:过滤 “readme1.txt”、“readme2.txt” 但不过滤 “readme10.txt”。 - + Receiver 接收者 - + To: To receiver 到: - + SMTP server: SMTP 服务器: - + Sender 发送者 - + From: From sender 从: - + This server requires a secure connection (SSL) 该服务器需要安全链接(SSL) - - + + Authentication 验证 - - - - + + + + Username: 用户名: - - - - + + + + Password: 密码: - + Run external program 运行外部程序 - Run on torrent added - 新增 Torrent 时运行 + 新增 Torrent 时运行 - Run on torrent finished - Torrent 完成时运行 + Torrent 完成时运行 - + Show console window 显示控制台窗口 - + TCP and μTP TCP 和 μTP - + Listening Port 监听端口 - + Port used for incoming connections: 用于传入连接的端口: - + Set to 0 to let your system pick an unused port 设为 0,让系统选择一个未使用的端口 - + Random 随机 - + Use UPnP / NAT-PMP port forwarding from my router 使用我的路由器的 UPnP / NAT-PMP 端口转发 - + Connections Limits 连接限制 - + Maximum number of connections per torrent: 每 torrent 最大连接数: - + Global maximum number of connections: 全局最大连接数: - + Maximum number of upload slots per torrent: 每个 Torrent 上传窗口数上限: - + Global maximum number of upload slots: 全局上传窗口数上限: - + Proxy Server 代理服务器 - + Type: 类型: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: 主机: - - - + + + Port: 端口: - + Otherwise, the proxy server is only used for tracker connections 否则,代理服务器将仅用于 tracker 连接 - + Use proxy for peer connections 使用代理服务器进行用户连接 - + A&uthentication 认证(&U) - + Info: The password is saved unencrypted 提示:密码未加密 - + Filter path (.dat, .p2p, .p2b): 过滤规则路径 (.dat, .p2p, .p2b): - + Reload the filter 重新加载过滤规则 - + Manually banned IP addresses... 手动屏蔽 IP 地址... - + Apply to trackers 匹配 tracker - + Global Rate Limits 全局速度限制 - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: 上传: - - + + Download: 下载: - + Alternative Rate Limits 备用速度限制 - + Start time 开始时间 - + End time 结束时间 - + When: 时间: - + Every day 每天 - + Weekdays 工作日 - + Weekends 周末 - + Rate Limits Settings 设置速度限制 - + Apply rate limit to peers on LAN 对本地网络用户进行速度限制 - + Apply rate limit to transport overhead 对传送总开销进行速度限制 - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol 对 µTP 协议进行速度限制 - + Privacy 隐私 - + Enable DHT (decentralized network) to find more peers 启用 DHT (去中心化网络) 以找到更多用户 - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) 与兼容的 Bittorrent 客户端交换用户 (µTorrent, Vuze, …) - + Enable Peer Exchange (PeX) to find more peers 启用用户交换 (PeX) 以找到更多用户 - + Look for peers on your local network 在本地网络上寻找用户 - + Enable Local Peer Discovery to find more peers 启用本地用户发现以找到更多用户 - + Encryption mode: 加密模式: - + Require encryption 强制加密 - + Disable encryption 禁用加密 - + Enable when using a proxy or a VPN connection 使用代理或 VPN 连接时启用 - + Enable anonymous mode 启用匿名模式 - + Maximum active downloads: 最大活动的下载数: - + Maximum active uploads: 最大活动的上传数: - + Maximum active torrents: 最大活动的 torrent 数: - + Do not count slow torrents in these limits 慢速 torrent 不计入限制内 - + Upload rate threshold: 上传速度阈值: - + Download rate threshold: 下载速度阈值: - - - + + + + sec seconds - + Torrent inactivity timer: Torrent 非活动计时器: - + then 达到上限后: - + Use UPnP / NAT-PMP to forward the port from my router 使用我的路由器的 UPnP / NAT-PMP 功能来转发端口 - + Certificate: 证书: - + Key: 密钥: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>关于证书</a> - + Change current password 更改当前密码 - Use alternative Web UI - 使用备用的 Web UI + 使用备用的 Web UI - + Files location: 文件位置: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security 安全 - + Enable clickjacking protection 启用点击劫持保护 - + Enable Cross-Site Request Forgery (CSRF) protection 启用跨站请求伪造 (CSRF) 保护 - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation 启用 Host header 属性验证 - + Add custom HTTP headers 添加自定义 HTTP headers - + Header: value pairs, one per line Header: value 值对,每行一个 - + Enable reverse proxy support 启用反向代理支持 - + Trusted proxies list: 受信任的代理列表: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: 服务: - + Register 注册 - + Domain name: 域名: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! 若启用以下选项,你可能会<strong>永久地丢失<strong>你的 .torrent 文件! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog 如果启用第二个选项&ldquo;取消添加后也删除&rdquo;,即使在&ldquo;添加 Torrent&rdquo;对话框中点击&ldquo;<strong>取消</strong>&rdquo;,<strong>也会删除</strong> .torrent 文件。 - + Select qBittorrent UI Theme file 选择 qBittorrent 界面主题文件 - + Choose Alternative UI files location 选择备用的 UI 文件位置 - + Supported parameters (case sensitive): 支持的参数(区分大小写): - + Minimized 最小化 - + Hidden 隐藏 - + Disabled due to failed to detect system tray presence 因未能检测到系统托盘的存在而禁用 - + No stop condition is set. 未设置停止条件。 - + Torrent will stop after metadata is received. 接收到元数据后,Torrent 将停止。 - - Torrents that have metadata initially aren't affected. - 不会影响起初就有元数据的 Torrent。 - - - + Torrent will stop after files are initially checked. 第一次文件检查完成后,Torrent 将停止。 - + This will also download metadata if it wasn't there initially. 如果最开始不存在元数据,勾选此选项也会下载元数据。 - + %N: Torrent name %N:Torrent 名称 - + %L: Category %L:分类 - + %F: Content path (same as root path for multifile torrent) %F:内容路径(与多文件 torrent 的根目录相同) - + %R: Root path (first torrent subdirectory path) %R:根目录(第一个 torrent 的子目录路径) - + %D: Save path %D:保存路径 - + %C: Number of files %C:文件数 - + %Z: Torrent size (bytes) %Z:Torrent 大小(字节) - + %T: Current tracker %T:当前 tracker - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") 提示:使用引号将参数扩起以防止文本被空白符分割(例如:"%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (无) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds 当 Torrent 下载或上传速度低于指定阈值并持续超过 “Torrent 非活动计时器” 指定的时间时,Torrent 将会被判定为慢速。 - + Certificate 证书 - + Select certificate 选择证书 - + Private key 私钥 - + Select private key 选择私钥 - + + WebUI configuration failed. Reason: %1 + WebUI 配置失败了。原因:%1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor 选择要监视的文件夹 - + Adding entry failed 添加条目失败 - - Location Error - 路径错误 + + The WebUI username must be at least 3 characters long. + WebUI 用户名长度至少为3个字符 + + + + The WebUI password must be at least 6 characters long. + WebUI 密码长度至少为6个字符 - - The alternative Web UI files location cannot be blank. - 备用的 Web UI 文件位置不能为空。 + + Location Error + 路径错误 - - + + Choose export directory 选择导出目录 - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well 如果启用以上选项,qBittorrent 会在 .torrent 文件成功添加到下载队列后(第一个选项)或取消添加后(第二个选项)<strong> 删除</strong>原本的 .torrent 文件。这<strong>不仅</strong>适用于通过&ldquo;添加 Torrent&rdquo;菜单打开的文件,也适用于通过<strong>关联文件类型</strong>打开的文件。 - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI 主题文件 (*.qbtheme config.json) - + %G: Tags (separated by comma) %G:标签(以逗号分隔) - + %I: Info hash v1 (or '-' if unavailable) %I:信息哈希值 v1(如果不可用,则为“-”) - + %J: Info hash v2 (or '-' if unavailable) %J:信息哈希值 v2(如果不可用,则为“-”) - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K:Torrent ID(v1 Torrent 的 sha-1 信息哈希值,或 v2/混合 Torrent 的截断 sha-256 信息哈希值) - - - + + + Choose a save directory 选择保存目录 - + + Torrents that have metadata initially will be added as stopped. + 最开始就有元数据的 Torrent 文件被添加后将处在停止状态 + + + Choose an IP filter file 选择一个 IP 过滤规则文件 - + All supported filters 所有支持的过滤规则 - + + The alternative WebUI files location cannot be blank. + 备选的 WebUI 文件位置不能为空 + + + Parsing error 解析错误 - + Failed to parse the provided IP filter 无法解析提供的 IP 过滤规则 - + Successfully refreshed 刷新成功 - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number 成功解析提供的 IP 过滤规则:%1 条规则已应用。 - + Preferences 首选项 - + Time Error 时间错误 - + The start time and the end time can't be the same. 开始时间和结束时间不能相同。 - - + + Length Error 长度错误 - - - The Web UI username must be at least 3 characters long. - Web UI 用户名长度最少为 3 个字符。 - - - - The Web UI password must be at least 6 characters long. - Web UI 密码长度最少为 6 个字符。 - PeerInfo - + Unknown 未知 - + Interested (local) and choked (peer) 您:期待下载╱他:拒绝上传 - + Interested (local) and unchoked (peer) 您:期待下载╱他:同意上传 - + Interested (peer) and choked (local) 他:期待下载╱您:拒绝上传 - + Interested (peer) and unchoked (local) 他:期待下载╱您:同意上传 - + Not interested (local) and unchoked (peer) 您:不想下载╱他:同意上传 - + Not interested (peer) and unchoked (local) 他:不想下载╱您:同意上传 - + Optimistic unchoke 多传者优先 - + Peer snubbed 下载者突然停止 - + Incoming connection 传入连接 - + Peer from DHT 来自 DHT 的下载者 - + Peer from PEX 来自 PEX 的下载者 - + Peer from LSD 来自 LSD 的下载者 - + Encrypted traffic 加密的流量 - + Encrypted handshake 加密握手 + + + Peer is using NAT hole punching + + PeerListWidget @@ -7645,7 +8057,7 @@ readme[0-9].txt:过滤 “readme1.txt”、“readme2.txt” 但不过滤 “r 用户 "%1" 已被自动屏蔽 - + N/A N/A @@ -7668,7 +8080,7 @@ readme[0-9].txt:过滤 “readme1.txt”、“readme2.txt” 但不过滤 “r 要添加的用户列表(每行一个 IP): - + Format: IPv4:port / [IPv6]:port 格式:IPv4:端口 / [IPv6]:端口 @@ -7709,27 +8121,27 @@ readme[0-9].txt:过滤 “readme1.txt”、“readme2.txt” 但不过滤 “r PiecesBar - + Files in this piece: 在此块中的文件: - + File in this piece: 此块中的文件: - + File in these pieces: 这些块中的文件: - + Wait until metadata become available to see detailed information 待元数据获取成功后即可显示详细信息 - + Hold Shift key for detailed information 按住 Shift 键以查看详细信息 @@ -7742,58 +8154,58 @@ readme[0-9].txt:过滤 “readme1.txt”、“readme2.txt” 但不过滤 “r 搜索插件 - + Installed search plugins: 已安装的搜索插件: - + Name 名称 - + Version 版本 - + Url Url - - + + Enabled 启用 - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. 警告:在下载来自这些搜索引擎的 torrent 时,请确认它符合您所在国家的版权法。 - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> 你可以访问此处获得新的搜索引擎插件:<a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one 安装一个新的搜索引擎 - + Check for updates 检查更新 - + Close 关闭 - + Uninstall 卸载 @@ -7913,17 +8325,17 @@ Those plugins were disabled. 插件来源 - + Search plugin source: 搜索插件来源: - + Local file 本地文件 - + Web link 网站链接 @@ -7941,70 +8353,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + 电源管理发现了合适的 D-Bus 界面。界面:%1 Power management error. Did not found suitable D-Bus interface. - + 电源管理错误。未发现合适的 D-Bus 界面。 Power management error. Action: %1. Error: %2 - + 电源管理错误。操作:%1。错误:%2 Power management unexpected error. State: %1. Error: %2 - + 电源管理异常错误。状态:%1.。错误:%2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: 下列来自 torrent "%1" 的文件支持预览,请选择其中之一: - + Preview 预览 - + Name 名称 - + Size 大小 - + Progress 进度 - + Preview impossible 无法预览 - + Sorry, we can't preview this file: "%1". 抱歉,此文件无法预览:"%1"。 - + Resize columns 调整列大小 - + Resize all non-hidden columns to the size of their contents 将所有非隐藏列的大小调整为其内容的大小 @@ -8017,27 +8429,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist 路径不存在 - + Path does not point to a directory 路径不指向一个目录 - + Path does not point to a file 路径不指向一个文件 - + Don't have read permission to path 没有读取路径的权限 - + Don't have write permission to path 没有写入路径的权限 @@ -8078,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: 已下载: - + Availability: 可用性: @@ -8098,53 +8510,53 @@ Those plugins were disabled. 传输 - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) 活动时间: - + ETA: 剩余时间: - + Uploaded: 已上传: - + Seeds: 做种数: - + Download Speed: 下载速度: - + Upload Speed: 上传速度: - + Peers: 用户: - + Download Limit: 下载限制: - + Upload Limit: 上传限制: - + Wasted: 已丢弃: @@ -8154,193 +8566,249 @@ Those plugins were disabled. 连接: - + Information 信息 - + Info Hash v1: 信息哈希值 v1: - + Info Hash v2: 信息哈希值 v2: - + Comment: 注释: - + Select All 选择所有 - + Select None 全不选 - + Share Ratio: 分享率: - + Reannounce In: 下次汇报: - + Last Seen Complete: 最后完整可见: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: 总大小: - + Pieces: 区块: - + Created By: 创建: - + Added On: 添加于: - + Completed On: 完成于: - + Created On: 创建于: - + + Private: + + + + Save Path: 保存路径: - + Never 从不 - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (已完成 %3) - - + + %1 (%2 this session) %1 (本次会话 %2) - - + + + N/A N/A - + + Yes + + + + + No + + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (已做种 %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (最大 %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (总计 %2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (平均 %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - 新建 Web 种子 + 新建 Web 种子 - Remove Web seed - 移除 Web 种子 + 移除 Web 种子 - Copy Web seed URL - 复制 Web 种子 URL + 复制 Web 种子 URL - Edit Web seed URL - 编辑 Web 种子 URL + 编辑 Web 种子 URL - + Filter files... 过滤文件... - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled 速度图被禁用 - + You can enable it in Advanced Options 您可以在“高级选项”中启用它 - New URL seed New HTTP source - 新建 URL 种子 + 新建 URL 种子 - New URL seed: - 新建 URL 种子: + 新建 URL 种子: - - This URL seed is already in the list. - 该 URL 种子已在列表中。 + 该 URL 种子已在列表中。 - + Web seed editing 编辑 Web 种子 - + Web seed URL: Web 种子 URL: @@ -8359,22 +8827,22 @@ Those plugins were disabled. 无法在 %1 保存 RSS 自动下载器数据。错误:%2 - + Invalid data format 无效数据格式 - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... 已接受 RSS 文章 '%1',依据是规则 '%2'。正尝试添加 torrent... - + Failed to read RSS AutoDownloader rules. %1 未能读取 RSS 自动下载程序规则: %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 无法读取 RSS 自动下载器规则。原因:%1 @@ -8382,22 +8850,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 下载 RSS 订阅 '%1' 失败。原因:%2 - + RSS feed at '%1' updated. Added %2 new articles. 已更新 RSS 订阅 '%1'。添加了 %2 个新文章。 - + Failed to parse RSS feed at '%1'. Reason: %2 无法解析 RSS 订阅 '%1'。原因:%2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. 已成功下载 RSS 订阅 “%1”。开始解析。 @@ -8433,12 +8901,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. 无效的 RSS 订阅。 - + %1 (line: %2, column: %3, offset: %4). %1(行:%2,列:%3,偏移:%4)。 @@ -8446,99 +8914,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" 无法保存 RSS 会话配置。文件:“%1”。错误:“%2” - + Couldn't save RSS session data. File: "%1". Error: "%2" 无法保存 RSS 会话数据。文件:“%1”。错误:“%2” - - + + RSS feed with given URL already exists: %1. 该 URL 已在 RSS 订阅源中存在:%1。 - + Feed doesn't exist: %1. Feed 不存在:%1。 - + Cannot move root folder. 不能移动根文件夹。 - - + + Item doesn't exist: %1. 项目不存在:%1。 - + Couldn't move folder into itself. 文件夹移动的起点和终点不能相同 - + Cannot delete root folder. 不能删除根文件夹。 - + Failed to read RSS session data. %1 未能读取 RSS 会话数据: %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" 未能解析 RSS 会话数据。文件:"%1"。错误: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." 未能加载 RSS 会话数据。文件:"%1"。错误: "无效的数据格式." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. 无法加载 RSS 源。源:“%1”。原因:需要 URL。 - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. 无法加载 RSS 源。源:“%1”。原因:UID 无效。 - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. 找到重复的 RSS 源。UID:“%1”,错误:配置似乎已损坏。 - + Couldn't load RSS item. Item: "%1". Invalid data format. 无法加载 RSS 项目。项目:“%1”。无效的数据格式。 - + Corrupted RSS list, not loading it. 损坏的 RSS 列表,无法加载它。 - + Incorrect RSS Item path: %1. 不正确的 RSS 项路径:%1。 - + RSS item with given path already exists: %1. 该 RSS 项的路径已存在:%1。 - + Parent folder doesn't exist: %1. 父文件夹不存在:%1。 @@ -8562,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read 标记为已读 @@ -8588,132 +9056,132 @@ Those plugins were disabled. Torrent:(双击下载) - - + + Delete 删除 - + Rename... 重命名... - + Rename 重命名 - - + + Update 更新 - + New subscription... 新建订阅... - - + + Update all feeds 更新所有订阅 - + Download torrent 下载 torrent - + Open news URL 打开新闻 URL - + Copy feed URL 复制订阅源 URL - + New folder... 新建文件夹... - + Edit feed URL... 编辑源 URL... - + Edit feed URL 编辑源 URL - + Please choose a folder name 请指定文件夹名 - + Folder name: 文件夹名: - + New folder 新建文件夹 - - + + Please type a RSS feed URL 请输入一个 RSS 订阅地址 - - + + Feed URL: 订阅源 URL: - + Deletion confirmation 确认删除 - + Are you sure you want to delete the selected RSS feeds? 您确定要删除所选的 RSS 订阅吗? - + Please choose a new name for this RSS feed 请重命名该 RSS 订阅源 - + New feed name: 新订阅源名称: - + Rename failed 重命名失败 - + Date: 日期: - + Feed: - + 订阅源: - + Author: 作者: @@ -8721,38 +9189,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. 使用搜索引擎必须先安装 Python。 - + Unable to create more than %1 concurrent searches. 无法创建超过 %1 并发搜索。 - - + + Offset is out of range 偏移超出范围 - + All plugins are already up to date. 所有插件已准备好更新 - + Updating %1 plugins 正在更新 %1 插件 - + Updating plugin %1 正在更新插件 %1 - + Failed to check for plugin updates: %1 检查插件更新失败: %1 @@ -8827,132 +9295,146 @@ Those plugins were disabled. 大小: - + Name i.e: file name 名称 - + Size i.e: file size 大小 - + Seeders i.e: Number of full sources 做种 - + Leechers i.e: Number of partial sources 下载 - Search engine - 搜索引擎 + 搜索引擎 - + Filter search results... 过滤搜索结果... - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results 结果(显示 <i>%1</i> 条,共 <i>%2</i> 条): - + Torrent names only 仅 Torrent 名称 - + Everywhere 任意位置 - + Use regular expressions 使用正则表达式 - + Open download window 打开下载窗口 - + Download 下载 - + Open description page 打开描述页 - + Copy 复制 - + Name 名称 - + Download link 下载链接 - + Description page URL 描述页 URL - + Searching... 搜索... - + Search has finished 搜索已完成 - + Search aborted 搜索中止 - + An error occurred during search... 搜索期间发生错误... - + Search returned no results 搜索未返回任何结果 - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility 显示列 - + Resize columns 调整列大小 - + Resize all non-hidden columns to the size of their contents 将所有非隐藏列的大小调整为其内容的大小 @@ -8960,104 +9442,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. 未知的搜索引擎插件文件格式。 - + Plugin already at version %1, which is greater than %2 插件当前版本为 %1,比 %2 更新。 - + A more recent version of this plugin is already installed. 已安装此插件的更新版本。 - + Plugin %1 is not supported. 不支持插件 %1。 - - + + Plugin is not supported. 不支持的插件。 - + Plugin %1 has been successfully updated. 插件 %1 已成功更新。 - + All categories 所有分类 - + Movies 电影 - + TV shows 电视节目 - + Music 音乐 - + Games 游戏 - + Anime 动画 - + Software 软件 - + Pictures 图片 - + Books 书籍 - + Update server is temporarily unavailable. %1 更新服务器暂时不可用。%1 - - + + Failed to download the plugin file. %1 无法下载插件文件。%1 - + Plugin "%1" is outdated, updating to version %2 插件 "%1" 已过时,正在更新至 %2 版本 - + Incorrect update info received for %1 out of %2 plugins. 在 %2 插件中收到 %1 不正确的更新信息。 - + Search plugin '%1' contains invalid version string ('%2') 搜索插件 '%1' 包含无效的版本字符串 ('%2') @@ -9067,114 +9549,153 @@ Those plugins were disabled. - - - - Search 搜索 - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. 您未安装任何搜索插件。 点击窗口右下角的 "搜索插件..." 按钮来安装一些插件。 - + Search plugins... 搜索插件... - + A phrase to search for. 欲搜索的关键词。 - + Spaces in a search term may be protected by double quotes. 可以使用双引号防止搜索关键词中的空格被忽略。 - + Example: Search phrase example 例如: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>: 搜索 <b>foo bar</b> - + All plugins 所有插件 - + Only enabled 仅启用的 - + + + Invalid data format. + 无效的数据格式。 + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>:搜索 <b>foo</b> 和 <b>bar</b> - + + Refresh + + + + Close tab 关闭标签 - + Close all tabs 关闭所有标签 - + Select... 选择... - - - + + Search Engine 搜索引擎 - + + Please install Python to use the Search Engine. 请安装 Python 以使用搜索引擎。 - + Empty search pattern 无搜索关键词 - + Please type a search pattern first 请先输入关键词 - + + Stop 停止 - Search has finished - 搜索完毕 + 搜索完毕 - Search has failed - 搜索失败 + 搜索失败 + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: 上传: - - - + + + - - - + + + KiB/s KiB/s - - + + Download: 下载: - + Alternative speed limits 备用速率限制 @@ -9506,32 +10027,32 @@ Click the "Search plugins..." button at the bottom right of the window 在队列的平均时间: - + Connected peers: 已连接的用户数: - + All-time share ratio: 全局分享率: - + All-time download: 总计下载: - + Session waste: 本次会话丢弃数据: - + All-time upload: 全局上传: - + Total buffer size: 总缓冲大小: @@ -9546,12 +10067,12 @@ Click the "Search plugins..." button at the bottom right of the window 队列的 I/O 任务: - + Write cache overload: 写入缓存超负荷: - + Read cache overload: 读取缓存超负荷: @@ -9570,51 +10091,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: 连接状态: - - + + No direct connections. This may indicate network configuration problems. 无直接连接。这也许表明网络设置存在问题。 - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT:%1 结点 - + qBittorrent needs to be restarted! 需要重启 qBittorrent! - - - + + + Connection Status: 连接状态: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. 离线。这通常是 qBittorrent 无法监听传入连接的端口。 - + Online 联机 - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits 点击以切换到备用速度限制 - + Click to switch to regular speed limits 点击以切换到常规速度限制 @@ -9643,14 +10180,22 @@ Click the "Search plugins..." button at the bottom right of the window 完成 (0) - Resumed (0) - 恢复 (0) + 恢复 (0) - Paused (0) - 暂停 (0) + 暂停 (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) 完成 (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - 暂停 (%1) + 暂停 (%1) @@ -9723,14 +10287,12 @@ Click the "Search plugins..." button at the bottom right of the window 正在移动 (%1) - Resume torrents - 继续 Torrent + 继续 Torrent - Pause torrents - 暂停 Torrent + 暂停 Torrent @@ -9738,9 +10300,8 @@ Click the "Search plugins..." button at the bottom right of the window 移除 Torrent - Resumed (%1) - 恢复 (%1) + 恢复 (%1) @@ -9781,17 +10342,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags 标签 - + All 全部 - + Untagged 无标签 @@ -9799,52 +10360,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... 添加标签... - + Remove tag 删除标签 - + Remove unused tags 删除未使用的标签 - Resume torrents - 继续 torrent + 继续 torrent - Pause torrents - 暂停 torrent + 暂停 torrent - + Remove torrents 移除 Torrent - New Tag - 新标签 + 新标签 + + + + Start torrents + - + + Stop torrents + + + + Tag: 标签: - + + Add tag + + + + Invalid tag name 无效标签名 - + Tag name '%1' is invalid 标签名 '%1' 无效 @@ -9984,32 +10557,32 @@ Please choose a different name and try again. TorrentContentModel - + Name 名称 - + Progress 进度 - + Download Priority 下载优先级 - + Remaining 剩余 - + Availability 可用性 - + Total Size 总大小 @@ -10054,102 +10627,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error 重命名出错 - + Renaming 重命名 - + New name: 新名称: - + Column visibility 显示列 - + Resize columns 调整列大小 - + Resize all non-hidden columns to the size of their contents 将所有非隐藏列的大小调整为其内容的大小 - + Open 打开 - + Open containing folder 打开包含文件夹 - + Rename... 重命名... - + Priority 优先级 - - + + Do not download 不下载 - + Normal 正常 - + High - + Maximum 最高 - + By shown file order 按显示的文件顺序 - + Normal priority 正常优先级 - + High priority 高优先级 - + Maximum priority 最高优先级 - + Priority by shown file order 按文件顺序显示的优先级 + + TorrentCreatorController + + + Too many active tasks + 活跃任务太多了 + + + + Torrent creation is still unfinished. + 仍未完成 Torrent 创建 + + + + Torrent creation failed. + Torrent 创建失败了。 + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Please choose a different name and try again. - + Select file 选择文件 - + Select folder 选择文件夹 @@ -10205,58 +10796,10 @@ Please choose a different name and try again. 分块大小: - + Auto 自动 - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Please choose a different name and try again. 字段 - + You can separate tracker tiers / groups with an empty line. 你可以用一个空行分隔 Tracker 层级 / 组。 - + Web seed URLs: Web 种子 URL: - + Tracker URLs: Tracker URL: - + Comments: 注释: - + Source: 源: - + Progress: 进度: - + Create Torrent 制作 Torrent - - + + Torrent creation failed Torrent 制作失败 - + Reason: Path to file/folder is not readable. 原因:目标文件/文件夹不可读。 - + Select where to save the new torrent 选择路径存放新 torrent - + Torrent Files (*.torrent) Torrent 文件 (*.torrent) - - Reason: %1 - 原因:%1 - - - + Add torrent to transfer list failed. - + 添加 Torrent 到传输列表失败。 - + Reason: "%1" - + 原因:"%1" - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - 原因:制作的 torrent 文件无效。它将不会被添加到下载列表中。 + 添加 torrent 失败 - + Torrent creator 制作 Torrent - + Torrent created: Torrent 已创建: @@ -10396,32 +10930,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 未能加载已关注文件夹的配置:%1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" 未能从 %1 解析已关注文件夹的配置。错误:"%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." 未能从 %1 解析已关注文件夹的配置。错误:"无效的数据格式" - + Couldn't store Watched Folders configuration to %1. Error: %2 无法将监视文件夹配置存储到 %1。 错误:%2 - + Watched folder Path cannot be empty. 所监视的文件夹路径不能为空。 - + Watched folder Path cannot be relative. 所监视的文件夹路径不能是相对的。 @@ -10429,27 +10963,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + 无效磁力 URI。URI:%1。原因:%2 - + Magnet file too big. File: %1 磁力文件太大。文件:%1 - + Failed to open magnet file: %1 无法打开 magnet 文件:%1 - + Rejecting failed torrent file: %1 拒绝失败的 Torrent 文件: %1 - + Watching folder: "%1" 监视文件夹:“%1” @@ -10457,14 +10991,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - 读取文件时未能分配内存。文件: "%1"。错误: "%2" + 读取文件时未能分配内存。文件: "%1"。错误: "%2" - Invalid metadata - 元数据无效 + 元数据无效 @@ -10495,127 +11027,203 @@ Please choose a different name and try again. 对不完整的 Torrent 使用另一个路径 - + Category: 分类: - + + Torrent Share Limits + + + Torrent speed limits - Torrent 速度限制 + Torrent 速度限制 - + Download: 下载: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits 这些将不会超过全局限制 - + Upload: 上传: - Torrent share limits - Torrent 分享限制 + Torrent 分享限制 - Use global share limit - 使用全局分享限制 + 使用全局分享限制 - Set no share limit - 设置为无分享限制 + 设置为无分享限制 - Set share limit to - 设置分享限制为 + 设置分享限制为 - ratio - 分享率 + 分享率 - total minutes - 总分钟 + 总分钟 - inactive minutes - 不活跃分钟 + 不活跃分钟 - + Disable DHT for this torrent 禁用此 Torrent 的 DHT - + Download in sequential order 按顺序下载 - + Disable PeX for this torrent 禁用此 Torrent 的 PeX - + Download first and last pieces first 先下载首尾文件块 - + Disable LSD for this torrent 禁用此 Torrent 的 LSD - + Currently used categories 当前使用的分类 - - + + Choose save path 选择保存路径 - + Not applicable to private torrents 不适用于私有 Torrent - No share limit method selected - 未指定分享限制方式 + 未指定分享限制方式 - Please select a limit method first - 请先选择一个限制方式 + 请先选择一个限制方式 + + + + TorrentShareLimitsWidget + + + + + + Default + 默认 + + + + + + Unlimited + 无限制的 + + + + + + Set to + 已设为 + + + + Seeding time: + 做种时间: + + + + + + + + + min + minutes + 分钟 + + + + Inactive seeding time: + 不活跃的做种时间: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + 删除 torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + 为 torrent 启用超级做种 + + + + Ratio: + 比率 @@ -10626,32 +11234,36 @@ Please choose a different name and try again. Torrent 标签 - New Tag - 新标签 + 新标签 + Add tag + + + + Tag: 标签: - + Invalid tag name 无效标签名 - + Tag name '%1' is invalid. 标签名 “%1” 无效。 - + Tag exists 标签已存在 - + Tag name already exists. 标签名已存在。 @@ -10659,115 +11271,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. 错误:'%1' 不是一个有效的 torrent 文件。 - + Priority must be an integer 优先级必须是整数 - + Priority is not valid 优先级无效 - + Torrent's metadata has not yet downloaded Torrent 的元数据尚未下载 - + File IDs must be integers 文件 ID 必须是整数 - + File ID is not valid 文件 ID 无效 - - - - + + + + Torrent queueing must be enabled 必须启用 torrent 队列 - - + + Save path cannot be empty 保存路径不能为空 - - + + Cannot create target directory 无法创建目标目录 - - + + Category cannot be empty 分类不能为空 - + Unable to create category 无法创建分类 - + Unable to edit category 无法编辑分类 - + Unable to export torrent file. Error: %1 无法导出 Torrent 文件。错误:%1 - + Cannot make save path 无法保存路径 - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid “sort” 参数无效 - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. “%1” 不是有效的文件索引。 - + Index %1 is out of bounds. 索引 %1 超出范围。 - - + + Cannot write to directory 无法写入目录 - + WebUI Set location: moving "%1", from "%2" to "%3" Web UI 设置路径:从 "%2" 移动 "%1" 至 "%3" - + Incorrect torrent name 不正确的 torrent 名称 - - + + Incorrect category name 不正确的分类名 @@ -10798,257 +11425,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - 工作中 + 工作 - + Disabled - + 禁用 - + Disabled for this torrent - 对此 Torrent 禁用 + 对此 Torrent 禁用 - + This torrent is private - 这是私有 torrent + 这是私有 torrent - + N/A - N/A + N/A - + Updating... - 更新中... + 更新... - + Not working - 未工作 + 未工作 - + Tracker error - + Tracker 错误 - + Unreachable - + 无法连接 - + Not contacted yet - 未联系 + 未联系 - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - 层级 + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + 无效状态! + + + URL/Announce endpoint + URL/汇报 + Tier + 层级 + + Protocol - + 协议 - + Status - 状态 + 状态 - + Peers - 用户 + 用户 - + Seeds - + 种子 - + Leeches - 下载 + 下载 - + Times Downloaded - 下载次数 + 下载次数 - + Message - 消息 + 消息 - Next announce - + 下次汇报 - Min announce - + 最小汇报 - v%1 - + v%1 TrackerListWidget - Working - 工作中 - - - Disabled - 已禁用 - - - Disabled for this torrent - 对此 Torrent 禁用 - - - + This torrent is private 这是私有 torrent - Updating... - 更新中... - - - Not working - 未工作 - - - Not contacted yet - 未联系 - - - N/A - N/A - - - + Tracker editing 编辑 Tracker - + Tracker URL: Tracker URL: - - + + Tracker editing failed Tracker 编辑失败 - + The tracker URL entered is invalid. 输入的 tracker URL 是无效的。 - + The tracker URL already exists. 这个 tracker URL 已经存在。 - + Edit tracker URL... 编辑 tracker URL... - + Remove tracker 移除 tracker - + Copy tracker URL 复制 tracker URL - + Force reannounce to selected trackers 强制向选定的 Tracker 重新汇报 - + Force reannounce to all trackers 强制向所有 Tracker 重新汇报 - Tier - 层级 - - - URL - URL - - - Status - 状态 - - - Seeds - 做种 - - - Times Downloaded - 下载次数 - - - + Resize columns 调整列大小 - + Resize all non-hidden columns to the size of their contents 将所有非隐藏列的大小调整为其内容的大小 - Peers - 用户 - - - + Add trackers... 添加 Tracker... - Leeches - 下载 - - - Message - 消息 - - - + Column visibility 显示列 @@ -11066,37 +11651,37 @@ Please choose a different name and try again. 要添加的 tracker 列表 (每行一个): - + µTorrent compatible list URL: µTorrent 兼容的 URL 列表: - + Download trackers list 下载 Tracker 列表 - + Add 添加 - + Trackers list URL error Tracker 列表 URL 错误 - + The trackers list URL cannot be empty Tracker 列表 URL 不能为空 - + Download trackers list error 下载 Tracker 列表出错 - + Error occurred when downloading the trackers list. Reason: "%1" 下载 Tracker 列表时出错。原因:“%1” @@ -11104,87 +11689,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - 全部 (0) - - - Trackerless (0) - 缺少 Tracker (0) - - - Error (0) - 错误 (0) - - - Warning (0) - 警告 (0) - - - Trackerless - 没有 Tracker - - - Error (%1) - 错误 (%1) - - - + Warning (%1) 警告 (%1) - + Trackerless (%1) 缺少 Tracker (%1) - + Tracker error (%1) - + Tracker 错误(%1) - + Other error (%1) - + 其他错误(%1) - + Remove tracker - 移除 tracker + 移除 tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - 继续 Torrent + 继续 Torrent - Pause torrents - 暂停 Torrent + 暂停 Torrent - + Remove torrents 移除 Torrent - + Removal confirmation - + 移除确认 - + Are you sure you want to remove tracker "%1" from all torrents? - + 你确定要从所有 Torrent 移除 Tracker "%1"吗? - + Don't ask me again. - + 不要再询问我。 - + All (%1) this is for the tracker filter 全部 (%1) @@ -11193,7 +11761,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument “mode”:无效参数 @@ -11286,9 +11854,8 @@ Please choose a different name and try again. 校验恢复数据 - Paused - 暂停 + 暂停 @@ -11313,220 +11880,262 @@ Please choose a different name and try again. 错误 - + Name i.e: torrent name 名称 - + Size i.e: torrent size 选定大小 - + Progress % Done 进度 - Status Torrent status (e.g. downloading, seeding, paused) - 状态 + 状态 - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + 状态 + + + Seeds i.e. full sources (often untranslated) 做种数 - + Peers i.e. partial sources (often untranslated) 用户 - + Down Speed i.e: Download speed 下载速度 - + Up Speed i.e: Upload speed 上传速度 - + Ratio Share ratio 比率 - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left 剩余时间 - + Category 分类 - + Tags 标签 - + Added On Torrent was added to transfer list on 01/01/2010 08:00 添加于 - + Completed On Torrent was completed on 01/01/2010 08:00 完成于 - + Tracker Tracker - + Down Limit i.e: Download limit 下载限制 - + Up Limit i.e: Upload limit 上传限制 - + Downloaded Amount of data downloaded (e.g. in MB) 已下载 - + Uploaded Amount of data uploaded (e.g. in MB) 已上传 - + Session Download Amount of data downloaded since program open (e.g. in MB) 本次会话下载 - + Session Upload Amount of data uploaded since program open (e.g. in MB) 本次会话上传 - + Remaining Amount of data left to download (e.g. in MB) 剩余 - + + Time Active + Time (duration) the torrent is active (not stopped) + 活动时间 + + + + Yes + + + + + No + + + Time Active Time (duration) the torrent is active (not paused) - 活动时间 + 活动时间 - + Save Path Torrent save path 保存路径 - + Incomplete Save Path Torrent incomplete save path 保存路径不完整 - + Completed Amount of data completed (e.g. in MB) 已完成 - + Ratio Limit Upload share ratio limit 比率限制 - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole 最后完整可见 - + Last Activity Time passed since a chunk was downloaded/uploaded 最近活动 - + Total Size i.e. Size including unwanted data 总大小 - + Availability The number of distributed copies of the torrent 可用性 - + Info Hash v1 i.e: torrent info hash v1 信息哈希值 v1 - + Info Hash v2 i.e: torrent info hash v2 信息哈希值 v2 - + Reannounce In Indicates the time until next trackers reannounce + 下次重新汇报 + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1 前 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (已做种 %2) @@ -11535,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility 是否显示列 - + Recheck confirmation 确认重新校验 - + Are you sure you want to recheck the selected torrent(s)? 您确定要重新校验所选的 Torrent 吗? - + Rename 重命名 - + New name: 新名称: - + Choose save path 选择保存路径 - Confirm pause - 确认暂停 + 确认暂停 - Would you like to pause all torrents? - 您要暂停所有的 Torrent 吗? + 您要暂停所有的 Torrent 吗? - Confirm resume - 确认继续 + 确认继续 - Would you like to resume all torrents? - 您要继续所有的 Torrent 吗? + 您要继续所有的 Torrent 吗? - + Unable to preview 无法预览 - + The selected torrent "%1" does not contain previewable files 已选中的 torrent "%1" 不包含任何可预览的文件 - + Resize columns 调整列大小 - + Resize all non-hidden columns to the size of their contents 将所有非隐藏列的大小调整为其内容的大小 - + Enable automatic torrent management 启用自动 Torrent 管理 - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. 你确定要为选定的 Torrent 启用自动 Torrent 管理吗?它们可能会被移动到新位置。 - Add Tags - 添加标签 + 添加标签 - + Choose folder to save exported .torrent files 选择保存所导出 .torrent 文件的文件夹 - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" 导出 .torrent 文件失败。Torrent:“%1”。保存路径:“%2”。原因:“%3” - + A file with the same name already exists 已存在同名文件 - + Export .torrent file error 导出 .torrent 文件错误 - + Remove All Tags 删除所有标签 - + Remove all tags from selected torrents? 从选中的 Torrent 中删除所有标签? - + Comma-separated tags: 标签(以逗号分隔): - + Invalid tag 无效标签 - + Tag name: '%1' is invalid 标签名:'%1' 无效 - &Resume Resume/start the torrent - 继续(&R) + 继续(&R) - &Pause Pause the torrent - 暂停(&P) + 暂停(&P) - Force Resu&me Force Resume/start the torrent - 强制继续(&M) + 强制继续(&M) - + Pre&view file... 预览文件(&V)... - + Torrent &options... Torrent 选项(&O)... - + Open destination &folder 打开目标文件夹(&F) - + Move &up i.e. move up in the queue 上移(&U) - + Move &down i.e. Move down in the queue 下移(&D) - + Move to &top i.e. Move to top of the queue 移至顶部(&T) - + Move to &bottom i.e. Move to bottom of the queue 移至底部(&B) - + Set loc&ation... 设定位置(&A)... - + Force rec&heck 强制重新检查(&H) - + Force r&eannounce 强制重新汇报(&E) - + &Magnet link 磁力链接(&M) - + Torrent &ID Torrent ID(&I) - + + &Comment + 注释(&C) + + + &Name 名称(&N) - + Info &hash v1 信息哈希值 v1(&H) - + Info h&ash v2 信息哈希值 v2(&A) - + Re&name... 重命名(&N)... - + Edit trac&kers... 编辑 Tracker(&K)... - + E&xport .torrent... 导出 .torrent(&X)... - + Categor&y 分类(&Y) - + &New... New category... 新建(&N)... - + &Reset Reset category 重置(&R) - + Ta&gs 标签(&G) - + &Add... Add / assign multiple tags... 添加(&A)... - + &Remove All Remove all tags 删除全部(&R) - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue 队列(&Q) - + &Copy 复制(&C) - + Exported torrent is not necessarily the same as the imported 导出的 Torrent 未必和导入的相同 - + Download in sequential order 按顺序下载 - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. 导出 .torrent 文件时发生错误。详细信息请查看执行日志。 + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent 移除(&R) - + Download first and last pieces first 先下载首尾文件块 - + Automatic Torrent Management 自动 Torrent 管理 - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category 自动模式意味着各种 Torrent 属性(例如保存路径)将由相关的分类决定 - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - 如果 Torrent 处于暂停/排队/出错/检查状态,则无法强制重新汇报 + 如果 Torrent 处于暂停/排队/出错/检查状态,则无法强制重新汇报 - + Super seeding mode 超级做种模式 @@ -11907,28 +12540,28 @@ Please choose a different name and try again. 图标 ID - + UI Theme Configuration. 用户界面主题配置。 - + The UI Theme changes could not be fully applied. The details can be found in the Log. 无法完全应用用户界面主题更改。详情见日志。 - + Couldn't save UI Theme configuration. Reason: %1 无法保存用户界面主题配置。原因:%1 - - + + Couldn't remove icon file. File: %1. 无法删除图标文件。文件:%1。 - + Couldn't copy icon file. Source: %1. Destination: %2. 无法复制图标文件。来源:%1。目标:%2。 @@ -11936,7 +12569,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" 从文件加载 UI 主题失败:"%1" @@ -11967,89 +12605,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" 合并个性化设置失败:WebUI https,文件:"%1",错误:"%2" - + Migrated preferences: WebUI https, exported data to file: "%1" 合并个性化设置成功:WebUI https,数据已导出至文件:"%1" - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". 在配置文件中找到了无效的值,将其还原为默认值。键:“%1”。无效值:“%2”。 Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - 检测到 Python,可执行文件名称:'%1',版本:%2 - - - Python not detected - 没有检测到Python - Found Python executable. Name: "%1". Version: "%2" - + 发现 Python 可执行文件。名称:"%1"。版本:"%2" Failed to find Python executable. Path: "%1". - + 未发现 Python 可执行文件。路径:"%1"。 Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + 未在 PATH 环境变量下发现`python3`可执行文件。PATH:"%1" Failed to find `python` executable in PATH environment variable. PATH: "%1" - + 未在 PATH 环境变量下发现`python`可执行文件。PATH:"%1" Failed to find `python` executable in Windows Registry. - + 未在 Windows 注册表里发现`python`可执行文件。 Failed to find Python executable - + 查找 Python 可执行文件失败 Utils::IO - + File open error. File: "%1". Error: "%2" 打开文件出错。文件: "%1"。错误: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 文件大小超出限制。文件:"%1"。文件大小: %2。大小限制: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + 文件大小超出限制。文件:"%1"。文件大小:%2。大小限制:%3 - + File read error. File: "%1". Error: "%2" 文件读取错误。文件:"%1"。、错误: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 读取大小不匹配。文件:"%1"。预期大小: %2。实际大小: %3 @@ -12113,72 +12744,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. 指定了不可接受的会话 cookie 名:“%1”。将使用默认值。 - + Unacceptable file type, only regular file is allowed. 不可接受的文件类型,只允许使用常规文件。 - + Symlinks inside alternative UI folder are forbidden. 备用 UI 目录中不允许使用符号链接。 - - Using built-in Web UI. - 使用内置 Web UI。 + + Using built-in WebUI. + 使用内置 WebUI - - Using custom Web UI. Location: "%1". - 使用自定义 Web UI。文件位置:"%1"。 + + Using custom WebUI. Location: "%1". + 使用自定义 WebUI。位置:"%1". - - Web UI translation for selected locale (%1) has been successfully loaded. - 已成功加载所选地区 (%1) 的 Web UI 翻译。 + + WebUI translation for selected locale (%1) has been successfully loaded. + 成功加载了所选语言环境 (%1) 的 WebUI 翻译 - - Couldn't load Web UI translation for selected locale (%1). - 无法加载所选地区 (%1) 的 Web UI 翻译。 + + Couldn't load WebUI translation for selected locale (%1). + 无法加载所选语言环境 (%1) 的 Web UI 翻译。 - + Missing ':' separator in WebUI custom HTTP header: "%1" 自定义 WebUI HTTP 头字段缺少分隔符 “:”:“%1” - + Web server error. %1 Web 服务器错误:%1 - + Web server error. Unknown error. Web 服务器错误:未知错误。 - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI: 请求 Header 中 Origin 与 XFH/Host 不匹配!来源 IP: '%1'。Origin: '%2'。XFH/Host: '%3' - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI: 请求 Header 中 Referer 与 XFH/Host 不匹配!来源 IP: '%1'。Referer: '%2'。XFH/Host: '%3' - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI:无效的 Host header,端口不匹配。请求的来源 IP:“%1”。服务器端口:“%2”。收到的 Host header:“%3” - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI:无效的 Host header。请求的来源 IP:“%1”。收到的 Host header:“%2” @@ -12186,143 +12817,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI:HTTPS 设置成功 + + Credentials are not set + 未设置凭据 + + + + WebUI: HTTPS setup successful + WebUI: HTTPS 设置成功 - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI:HTTPS 配置失败,回退至 HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + Web UI: HTTPS 配置失败,回退至 HTTP - - Web UI: Now listening on IP: %1, port: %2 - Web UI:正在监听 IP:%1,端口:%2 + + WebUI: Now listening on IP: %1, port: %2 + Web UI:正在监听 IP:%1,端口:%2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI:无法绑定到 IP:%1,端口:%2。原因:%3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + Web UI:无法绑定到 IP:%1,端口:%2。原因:%3 + + + + fs + + + Unknown error + 未知错误 misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 分钟 {1s?} + %1s - + %1m e.g: 10 minutes - %1 分钟 + %1 分钟 - + %1h %2m e.g: 3 hours 5 minutes - %1 小时 %2 分钟 + %1 小时 %2 分钟 - + %1d %2h e.g: 2 days 10 hours - %1 天 %2 小时 + %1 天 %2 小时 - + %1y %2d e.g: 2 years 10 days - %1 年 %2 天 + %1 年 %2 天 - %1h %2m - e.g: 3hours 5minutes - %1 小时 %2 分钟 - - - %1d %2h - e.g: 2days 10hours - %1 天 %2 小时 - - - %1y %2d - e.g: 2years 10days - %1 年 %2 天 - - - - + + Unknown Unknown (size) 未知 - + qBittorrent will shutdown the computer now because all downloads are complete. 所有下载已完成,qBittorrent 将关闭电脑。 - + < 1m < 1 minute < 1 分钟 - - %1m - e.g: 10minutes - %1 分钟 - diff --git a/src/lang/qbittorrent_zh_HK.ts b/src/lang/qbittorrent_zh_HK.ts index d3e57186e64c..c65e2c43f80a 100644 --- a/src/lang/qbittorrent_zh_HK.ts +++ b/src/lang/qbittorrent_zh_HK.ts @@ -14,75 +14,75 @@ 關於 - + Authors 作者 - + Current maintainer 目前維護者 - + Greece 希臘 - - + + Nationality: 國家: - - + + E-mail: 電郵: - - + + Name: 姓名: - + Original author 原作者 - + France 法國 - + Special Thanks 鳴謝 - + Translators 翻譯 - + License 授權 - + Software Used 使用的軟件 - + qBittorrent was built with the following libraries: qBittorrent使用下列函式庫建立: - + Copy to clipboard @@ -93,8 +93,8 @@ - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 qBittorrent 專案 + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 qBittorrent 專案 @@ -166,14 +166,13 @@ 儲存於 - + Never show again 不要再顯示 - Torrent settings - Torrent設定 + Torrent設定 @@ -191,12 +190,12 @@ 開始Torrent - + Torrent information Torrent資訊 - + Skip hash check 略過驗證碼檢查 @@ -205,6 +204,11 @@ Use another path for incomplete torrent 使用其他路徑取得不完整的 torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ 停止條件: - - + + None - - + + Metadata received 收到的元資料 - - + + Torrents that have metadata initially will be added as stopped. + + + + + Files checked 已檢查的檔案 - + Add to top of queue - + 加至佇列頂部 - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog 勾選後,無論「選項」對話方塊中的「下載」頁面的設定如何,都不會刪除 .torrent 檔案 - + Content layout: 內容佈局: - + Original 原版 - + Create subfolder 建立子資料夾 - + Don't create subfolder 不要建立子資料夾 - + Info hash v1: 資訊雜湊值 v1: - + Size: 大小: - + Comment: 評註: - + Date: 日期: @@ -324,213 +333,150 @@ 記住最後一次儲存路徑 - + Do not delete .torrent file 不要刪除「.torrent」檔 - + Download in sequential order 按順序下載 - + Download first and last pieces first 先下載首片段和最後片段 - + Info hash v2: 資訊雜湊值 v2: - + Select All 全選 - + Select None 全不選 - + Save as .torrent file... 另存為 .torrent 檔案…… - + I/O Error 入出錯誤 - Invalid torrent - 無效Torrent - - - + Not Available This comment is unavailable 不可選用 - + Not Available This date is unavailable 不可選用 - + Not available 不可選用 - Invalid magnet link - 無效磁性連結 - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - 無法載入Torrent:%1 -錯誤:%2 - - - This magnet link was not recognized - 無法辨認此磁性連結 - - - + Magnet link 磁性連結 - + Retrieving metadata... 檢索元資料… - - + + Choose save path 選取儲存路徑 - Torrent is already present - Torrent已存在 - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent「%1」已於傳輸清單。私人Torrent原故,追蹤器不會合併。 - - - Torrent is already queued for processing. - Torrent已加入排程等待處理。 - - - + No stop condition is set. 停止條件未設定。 - + Torrent will stop after metadata is received. Torrent會在收到元資料後停止。 - - Torrents that have metadata initially aren't affected. - 一開始就有元資料的 torrent 則不受影響。 - - - + Torrent will stop after files are initially checked. 初步檢查完檔案後,Torrent 將會停止。 - + This will also download metadata if it wasn't there initially. 如果一開始不存在,這也會下載元資料。 - - + + N/A N/A - Magnet link is already queued for processing. - 磁性連結已加入排程等待處理。 - - - + %1 (Free space on disk: %2) %1(硬碟上的可用空間:%2) - + Not available This size is unavailable. 無法使用 - + Torrent file (*%1) Torrent 檔案 (*%1) - + Save as torrent file 另存為 torrent 檔案 - + Couldn't export torrent metadata file '%1'. Reason: %2. 無法匯出 torrent 詮釋資料檔案「%1」。理由:%2。 - + Cannot create v2 torrent until its data is fully downloaded. 在完全下載其資料前無法建立 v2 torrent。 - Cannot download '%1': %2 - 無法下載「%1」:%2 - - - + Filter files... 過濾檔案… - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent「%1」已經在傳輸清單中。因為這是私有的 torrent,所以追蹤者無法合併。 - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent「%1」已經在傳輸清單中。您想合併來自新來源的追蹤者嗎? - - - + Parsing metadata... 解析元資料… - + Metadata retrieval complete 完成檢索元資料 - - Failed to load from URL: %1. -Error: %2 - 從 URL 載入失敗:%1。 -錯誤:%2 - - - Download Error - 下載錯誤 - AddTorrentManager @@ -545,22 +491,22 @@ Error: %2 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + Merging of trackers is disabled - + Trackers cannot be merged because it is a private torrent - + Trackers are merged from new source @@ -648,72 +594,77 @@ Error: %2 略過雜湊值檢查 - - - Choose save path - 選取儲存路徑 + + Torrent share limits + Torrent 速度限制 - - - - - - - Default - 預設 + + + Choose save path + 選取儲存路徑 + + + - Yes - + Default + 預設 + Yes + + + + + + No - + Manual 手動 - + Automatic 自動 - + Original 原版 - + Create subfolder 建立子資料夾 - + Don't create subfolder 不要建立子資料夾 - + None - + Metadata received 收到的元資料 - + Files checked 已檢查的檔案 @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion 完成後重新檢查Torrent - - + + ms milliseconds 毫秒 - + Setting 設定 - + Value Value set for this setting - + (disabled) (已停用) - + (auto) (自動) - + + min minutes 分鐘 - + All addresses 全部位址 - + qBittorrent Section qBittorrent部份 - - + + Open documentation 網上說明 - + All IPv4 addresses 所有 IPv4 位址 - + All IPv6 addresses 所有 IPv6 位址 - + libtorrent Section libtorrent部份 - + Fastresume files 快速復原檔案 - + SQLite database (experimental) SQLite 資料庫(實驗性) - + Resume data storage type (requires restart) 復原資料儲存類型(需要重新啟動) - + Normal 一般 - + Below normal 低於一般 - + Medium 中等 - + Low - + Very low 非常低 - - Process memory priority (Windows >= 8 only) - 處理程序記憶體優先權(僅適用於 Windows 8 或更新版本) - - - + Physical memory (RAM) usage limit 實體記憶體 (RAM) 使用率限制 - + Asynchronous I/O threads 異步入出執行緒 - + Hashing threads 雜湊執行緒 - + File pool size 檔案叢集大小 - + Outstanding memory when checking torrents 檢查Torrent時未處理資料暫存 - + Disk cache 磁碟快存 - - - - + + + + s seconds - + Disk cache expiry interval 磁碟快存到期間距 - + Disk queue size 磁碟佇列大小 - - + + Enable OS cache 啟用作業系統快存 - + Coalesce reads & writes 結合讀取和寫入 - + Use piece extent affinity 使用片段範圍關聯 - + Send upload piece suggestions 傳送上載片段建議 - - - - + + + + + 0 (disabled) - + Save resume data interval [0: disabled] How often the fastresume file is saved. - + Outgoing ports (Min) [0: disabled] - + Outgoing ports (Max) [0: disabled] - + 0 (permanent lease) - + UPnP lease duration [0: permanent lease] - + Stop tracker timeout [0: disabled] - + Notification timeout [0: infinite, -1: system default] - + Maximum outstanding requests to a single peer 對單個 peer 的最多未完成請求 - - - - - + + + + + KiB KiB - + (infinite) - + (system default) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux 這個選項在 Linux 上沒那麼有效 - + + Process memory priority + + + + Bdecode depth limit - + Bdecode token limit - + Default 預設 - + Memory mapped files 記憶體對映檔案 - + POSIX-compliant 遵循 POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) 硬碟 IO 類型(須重新啟動) - - + + Disable OS cache 停用作業系統快取 - + Disk IO read mode 磁碟 IO 讀取模式 - + Write-through 連續寫入 - + Disk IO write mode 磁碟 IO 寫入模式 - + Send buffer watermark 傳送緩衝區上限 - + Send buffer low watermark 傳送緩衝區下限 - + Send buffer watermark factor 傳送緩衝區上下限因素 - + Outgoing connections per second 每秒對外連線數 - - + + 0 (system default) - + Socket send buffer size [0: system default] - + Socket receive buffer size [0: system default] - + Socket backlog size Socket 紀錄檔大小 - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit - + Type of service (ToS) for connections to peers 與 peers 連線的服務類型 (ToS) - + Prefer TCP 傾向使用TCP - + Peer proportional (throttles TCP) 同路人按比例(抑制TCP) - + Support internationalized domain name (IDN) 支援國際化域名 (IDN) - + Allow multiple connections from the same IP address 容許來自相同IP位置的多重連接 - + Validate HTTPS tracker certificates 驗證 HTTPS Tracker 憑證 - + Server-side request forgery (SSRF) mitigation 伺服器端請求偽造 (SSRF) 緩解 - + Disallow connection to peers on privileged ports 不允許連線到在特權通訊埠上的 peer - + + It appends the text to the window title to help distinguish qBittorent instances + + + + + Customize application instance name + + + + It controls the internal state update interval which in turn will affect UI updates 控制內部狀態更新間隔,進而影響使用者界面更新 - + Refresh interval 重新整理間隔 - + Resolve peer host names 分析同路人主機名 - + IP address reported to trackers (requires restart) 向追蹤器回報的 IP 位置(需要重新啟動) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed 當 IP 或通訊埠變更時回報至所有Tracker - + Enable icons in menus 在選單中啟用圖示 - + Enable port forwarding for embedded tracker 為內置的Tracker啟用通訊埠轉發 - + + Enable quarantine for downloaded files + + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors + + + + (Auto detect if empty) - + Python executable path (may require restart) - + + Start BitTorrent session in paused state + + + + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] + + + + Confirm removal of tracker from all torrents - + Peer turnover disconnect percentage Peer 流動斷線百分比 - + Peer turnover threshold percentage Peer 流動閾值百分比 - + Peer turnover disconnect interval Peer 流動斷線間隔 - + Resets to default if empty - + DHT bootstrap nodes - + I2P inbound quantity - + I2P outbound quantity - + I2P inbound length - + I2P outbound length - + Display notifications 顯示程式通知 - + Display notifications for added torrents 顯示已加入Torrent的通知 - + Download tracker's favicon 下載追蹤器圖示 - + Save path history length 記住的儲存路徑數量 - + Enable speed graphs 啟用速度圖 - + Fixed slots 固定通道 - + Upload rate based 基於上載速度 - + Upload slots behavior 上載通道行為 - + Round-robin 輪流上載 - + Fastest upload 最快上載 - + Anti-leech 反依附 - + Upload choking algorithm 上載與否推算法 - + Confirm torrent recheck 重新檢查Torrent時須確認 - + Confirm removal of all tags 確認清除全部標籤 - + Always announce to all trackers in a tier 總是公告到同一追蹤器群組內全部的追蹤器 - + Always announce to all tiers 總是公告到全部追蹤器群組 - + Any interface i.e. Any network interface 任何介面 - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP混合模式推算法 - + Resolve peer countries 解析 peer 國家 - + Network interface 網絡介面 - + Optional IP address to bind to 可選擇綁紮的 IP 地址 - + Max concurrent HTTP announces 最大並行 HTTP 回報 - + Enable embedded tracker 啟用嵌入式追蹤器 - + Embedded tracker port 嵌入式追蹤器埠 - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - 已啟動qBittorrent %1 + + + Invalid directory path + + + + + Directory does not exist + - + + Invalid mode, allowed values: %1 + + + + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 正以可攜模式執行。自動偵測到的設定檔資料夾位於:%1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. 偵測到冗餘的命令列旗標:「%1」。可攜模式代表了相對快速的恢復。 - + Using config directory: %1 正在使用設定目錄:%1 - + Torrent name: %1 Torrent名:%1 - + Torrent size: %1 Torrent大小:%1 - + Save path: %1 儲存路徑:%1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent用%1完成下載。 - + + Thank you for using qBittorrent. 多謝使用qBittorrent。 - + Torrent: %1, sending mail notification Torrent:%1,傳送電郵通知 - + Add torrent failed - + Couldn't add torrent '%1', reason: %2. - + + The WebUI administrator username is: %1 + + + + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + + + + + You should set your own password in program preferences. + + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + Running external program. Torrent: "%1". Command: `%2` 正在執行外部程式。Torrent:「%1」。指令:「%2」 - + Failed to run external program. Torrent: "%1". Command: `%2` - + Torrent "%1" has finished downloading Torrent「%1」已下載完畢 - + WebUI will be started shortly after internal preparations. Please wait... WebUI 將在內部準備不久後啟動。請稍等… - - + + Loading torrents... 正在載入 torrent… - + E&xit 關閉(&X) - + I/O Error i.e: Input/Output Error I/O 錯誤 - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 理由:「%2」 - Error - 錯誤 - - - Failed to add torrent: %1 - 新增 torrent 失敗:%1 - - - + Torrent added 已新增 Torrent - + '%1' was added. e.g: xxx.avi was added. 「%1」已新增。 - + Download completed 下載完成 - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - 「%1」已下載完畢。 - - - URL download error - URL 下載錯誤 + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + - Couldn't download file at URL '%1', reason: %2. - 無法下載 URL「%1」的檔案,理由:%2。 + + This is a test email. + - Torrent file association - Torrent 檔案關聯 + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent 不是開啟 torrent 檔案或磁力連結的預設應用程式。 -您想要讓 qBittorrent 變成這些關聯的預設應用程式嗎? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + 「%1」已下載完畢。 - + Information 資訊 - + To fix the error, you may need to edit the config file manually. - + To control qBittorrent, access the WebUI at: %1 要控制 qBittorrent,請從 %1 造訪 WebUI - - The Web UI administrator username is: %1 - Web UI遠端控制管理員名稱是:%1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web UI遠端控制管理員密碼尚未從預設值變更:%1 - - - - This is a security risk, please change your password in program preferences. - 此為安全性風險,請在程式的偏好設定中變更您的密碼。 - - - Application failed to start. - 無法啟動程式。 - - - + Exit 關閉 - + Recursive download confirmation - 確認反復下載 + 確認反復下載 - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent「%1」包含 .torrent 檔案,您想要執行下載作業嗎? + Torrent「%1」包含 .torrent 檔案,您想要執行下載作業嗎? - + Never - + 從不 - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 在 torrent 中遞迴下載 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」 + 在 torrent 中遞迴下載 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」 - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" 設定實體記憶體(RAM)使用率限制失敗。錯誤代碼:%1。錯誤訊息:「%2」 - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" - + qBittorrent termination initiated qBittorrent 中止操作 - + qBittorrent is shutting down... qBittorrent 正在關閉…… - + Saving torrent progress... 儲存Torrent進度… - + qBittorrent is now ready to exit qBittorrent 已準備好關閉 @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. 無法建立路徑「%1」。 @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 無法登入WebAPI網絡程式介面。理由:IP已被封鎖,IP:%1,用戶名:%2 - + Your IP address has been banned after too many failed authentication attempts. 你的IP位址因多次驗證失敗而被封鎖。 - + WebAPI login success. IP: %1 成功登入WebAPI網絡程式介面。IP:%1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 無法登入WebAPI網絡程式介面。理由:無效憑證,嘗試次數:%1,IP:%2,用戶名:%3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? - + Must Not Contain: 必須不包含: - + Episode Filter: 分集過濾器: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 匯出(&E)… - + Matches articles based on episode filter. 基於分集過濾器搜尋相符文章。 - + Example: 例子: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match 相符第1季的第2、第5、第8至15,以及由第30集起的往後分集 - + Episode filter rules: 分集過濾器規則: - + Season number is a mandatory non-zero value 季度數值須大於零 - + Filter must end with semicolon 過濾器須以分號作結尾 - + Three range types for episodes are supported: 接受3種分集表達方式: - + Single number: <b>1x25;</b> matches episode 25 of season one 指明分集:<b>1x25;</b> 即第1季第25集 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one 分集範圍:<b>1x25-40;</b>即第1季第25至40集 - + Episode number is a mandatory positive value 分集數值須大於零 - + Rules 規則 - + Rules (legacy) 規則(舊版) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons 往後分集:<b>1x25-;</b> 即第1季由第25集起的往後分集,以及往後季度的全部分集 - + Last Match: %1 days ago 最後相符:%1日前 - + Last Match: Unknown 最後相符:未知 - + New rule name 新規則名 - + Please type the name of the new download rule. 請輸入新下載規則名稱。 - - + + Rule name conflict 規則名稱衝突 - - + + A rule with this name already exists, please choose another name. 存在同名規則,請另選名稱。 - + Are you sure you want to remove the download rule named '%1'? 清除下載規則「%1」,確定? - + Are you sure you want to remove the selected download rules? 清除所選下載規則,確定? - + Rule deletion confirmation 確認清除規則 - + Invalid action 無效行動 - + The list is empty, there is nothing to export. 清單空白,不會匯出任何東西。 - + Export RSS rules 匯出RSS規則 - + I/O Error 入出錯誤 - + Failed to create the destination file. Reason: %1 無法建立目標檔案。理由:%1 - + Import RSS rules 匯入RSS規則 - + Failed to import the selected rules file. Reason: %1 無法匯入所選規則檔。理由:%1 - + Add new rule... 加入新規則… - + Delete rule 刪除規則 - + Rename rule... 重新命名規則… - + Delete selected rules 刪除所選規則 - + Clear downloaded episodes... 清除已下載分集… - + Rule renaming 重新命名規則 - + Please type the new rule name 請輸入新規則名稱 - + Clear downloaded episodes 清除已下載分集 - + Are you sure you want to clear the list of downloaded episodes for the selected rule? 清除所選規則的已下載分集清單,確定? - + Regex mode: use Perl-compatible regular expressions 正規表示法模式:使用兼容Perl的正規表示法 - - + + Position %1: %2 位置%1:%2 - + Wildcard mode: you can use 萬用字元: - - + + Import error - + Failed to read the file. %1 - + ? to match any single character ? 問號代表任何單一字元 - + * to match zero or more of any characters * 星號代表無或多個字元 - + Whitespaces count as AND operators (all words, any order) 空格代表運算子「AND」(全部文字、任何排序) - + | is used as OR operator 「|」代表運算子「OR」 - + If word order is important use * instead of whitespace. 如果文字順序重要,使用「*」,而不是空格。 - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) 帶有空白從屬句「%1」的表示法(例如:%2) - + will match all articles. 將搜尋全部相符文章。 - + will exclude all articles. 將排除全部文章。 @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" 無法建立 torrent 復原資料夾:「%1」 - + Cannot parse resume data: invalid format 無法解析還原資料:無效格式 - - + + Cannot parse torrent info: %1 無法解析 torrent 資訊:%1 - + Cannot parse torrent info: invalid format 無法解析 torrent 資訊:無效格式 - + + Mismatching info-hash detected in resume data + + + + Couldn't save torrent metadata to '%1'. Error: %2. 無法儲存 Torrent 詮釋資料至「%1」。錯誤:%2。 - + Couldn't save torrent resume data to '%1'. Error: %2. 無法儲存 Torrent 復原資料至「%1」。錯誤:%2。 - + Couldn't load torrents queue: %1 無法載入 torrent 佇列:%1 - + Cannot parse resume data: %1 無法解析還原資料:%1 - + Resume data is invalid: neither metadata nor info-hash was found 還原資料無效:沒有找到詮釋資料與資訊雜湊值 - + Couldn't save data to '%1'. Error: %2 無法儲存資料至「%1」。錯誤:%2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. 找不到 - + Couldn't load resume data of torrent '%1'. Error: %2 無法載入 torrent「%1」的復原資料。錯誤:%2 - - + + Database is corrupted. 資料庫毀損。 - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. - + Couldn't obtain query result. - + WAL mode is probably unsupported due to filesystem limitations. - + Couldn't begin transaction. Error: %1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. 無法儲存 torrent 詮釋資料。錯誤:%1。 - + Couldn't store resume data for torrent '%1'. Error: %2 無法儲存 torrent「%1」的復原資料。錯誤:%2 - + Couldn't delete resume data of torrent '%1'. Error: %2 無法載入 torrent「%1」的復原資料。錯誤:%2 - + Couldn't store torrents queue positions. Error: %1 無法儲存 torrent 的排程位置。錯誤:%1 @@ -2140,574 +2185,616 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 分散式雜湊表 (DHT) 支援:%1 - - - - - - - - - + + + + + + + + + ON 開啟 - - - - - - - - - + + + + + + + + + OFF 關閉 - - + + Local Peer Discovery support: %1 區域 Peer 搜尋支援:%1 - + Restart is required to toggle Peer Exchange (PeX) support 切換 Peer 交換 (PeX) 支援必須重新啟動 - + Failed to resume torrent. Torrent: "%1". Reason: "%2" 還原 torrent 失敗。Torrent:「%1」。理由:「%2」 - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" 還原 torrent 失敗:偵測到不一致的 torrent ID。Torrent:「%1」 - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" 偵測到不一致的資料:設定檔中缺少分類。分類將會被還原,但其設定將會重設回預設值。Torrent:「%1」。分類:「%2」 - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" 偵測到不一致的資料:無效分類。Torrent:「%1」。分類:「%2」 - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" 偵測到還原分類的儲存路徑與目前 torrent 的儲存路徑不相符。Torrent 目前已切換至手動模式。Torrent:「%1」。分類:「%2」 - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" 偵測到不一致的資料:設定檔中缺少標籤。標籤將會被還原。Torrent:「%1」。標籤:「%2」 - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" 偵測到不一致的資料:無效標籤。Torrent:「%1」。標籤:「%2」 - + System wake-up event detected. Re-announcing to all the trackers... - + Peer ID: "%1" Peer ID:「%1」 - + HTTP User-Agent: "%1" HTTP 使用者代理:「%1」 - + Peer Exchange (PeX) support: %1 Peer 交換 (PeX) 支援:%1 - - + + Anonymous mode: %1 匿名模式:%1 - - + + Encryption support: %1 加密支援:%1 - - + + FORCED 強制 - + Could not find GUID of network interface. Interface: "%1" 找不到網路介面的 GUID。介面:「%1」 - + Trying to listen on the following list of IP addresses: "%1" 正在嘗試監聽以下 IP 位址清單:「%1」 - + Torrent reached the share ratio limit. Torrent 達到了分享比例限制。 - - - + Torrent: "%1". Torrent:「%1」。 - - - Removed torrent. - 已移除 torrent。 + 已移除 torrent。 - - - Removed torrent and deleted its content. - 已移除 torrent 並刪除其內容。 + 已移除 torrent 並刪除其內容。 - - - Torrent paused. - Torrent 已暫停。 + Torrent 已暫停。 - - - + Super seeding enabled. 超級種子模式已啟用。 - + Torrent reached the seeding time limit. Torrent 達到了種子時間限制。 - + Torrent reached the inactive seeding time limit. - + Failed to load torrent. Reason: "%1" 載入 torrent 失敗。理由:「%1」 - + I2P error. Message: "%1". - Downloading torrent, please wait... Source: "%1" - 正在下載 torrent,請稍候... 來源:「%1」 + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP 支援:開啟 - Failed to load torrent. Source: "%1". Reason: "%2" - 載入 torrent 失敗。來源:「%1」。理由:「%2」 + + Saving resume data completed. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP 支援:開啟 + + BitTorrent session successfully finished. + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP 支援:關閉 + + Session shutdown timed out. + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - 匯出 torrent 失敗。Torrent:「%1」。目的地:「%2」。理由:「%3」 + + Removing torrent. + - - Aborted saving resume data. Number of outstanding torrents: %1 - 中止儲存還原資料。未完成的 torrent 數量:%1 + + Removing torrent and deleting its content. + + + + + Torrent stopped. + + + + + Torrent content removed. Torrent: "%1" + + + + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + + + + + Torrent removed. Torrent: "%1" + - System network status changed to %1 - e.g: System network status changed to ONLINE - 系統的網路狀態變更為 %1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + - ONLINE - 上線 + + Merging of trackers is disabled + - OFFLINE - 離線 + + Trackers cannot be merged because it is a private torrent + - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1的網絡設定已更改,正在更新階段綁定 + + Trackers are merged from new source + - + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP 支援:關閉 + + + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + 匯出 torrent 失敗。Torrent:「%1」。目的地:「%2」。理由:「%3」 + + + + Aborted saving resume data. Number of outstanding torrents: %1 + 中止儲存還原資料。未完成的 torrent 數量:%1 + + + The configured network address is invalid. Address: "%1" 已設定的網絡位址無效。位址:「%1」 - - + + Failed to find the configured network address to listen on. Address: "%1" 未能找到要監聽的網絡位址。位址:「%1」 - + The configured network interface is invalid. Interface: "%1" 已設定的網絡介面無效。介面:「%1」 - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" 套用封鎖 IP 位址清單時拒絕無效的 IP 位址。IP:「%1」 - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" 已新增追蹤器至 torrent。Torrent:「%1」。追蹤器:「%2」 - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" 已從 torrent 移除追蹤器。Torrent:「%1」。追蹤器:「%2」 - + Added URL seed to torrent. Torrent: "%1". URL: "%2" 已新增 URL 種子到 torrent。Torrent:「%1」。URL:「%2」 - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" 已從 torrent 移除 URL 種子。Torrent:「%1」。URL:「%2」 - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent 已暫停。Torrent:「%1」 + Torrent 已暫停。Torrent:「%1」 - + Torrent resumed. Torrent: "%1" Torrent 已恢復下載。Torrent:「%1」 - + Torrent download finished. Torrent: "%1" Torrent 下載完成。Torrent:「%1」 - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" 取消移動 torrent。Torrent:「%1」。來源:「%2」。目的地:「%3」 - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination 未能將 torrent 將入佇列。Torrent:「%1」。來源:「%2」。目的地:「%3」。理由:torrent 目前正在移動至目的地 - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location 將 torrent 移動加入佇列失敗。Torrent:「%1」。來源:「%2」。目的地:「%3」。理由:兩個路徑均指向相同的位置 - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" 已將 torrent 移動加入佇列。Torrent:「%1」。來源:「%2」。目的地:「%3」 - + Start moving torrent. Torrent: "%1". Destination: "%2" 開始移動 torrent。Torrent:「%1」。目的地:「%2」 - + Failed to save Categories configuration. File: "%1". Error: "%2" 儲存分類設定失敗。檔案:「%1」。錯誤:「%2」 - + Failed to parse Categories configuration. File: "%1". Error: "%2" 解析分類設定失敗。檔案:「%1」。錯誤:「%2」 - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 在 torrent 中遞迴下載 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」 - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - 無法在 torrent 中載入 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」。錯誤:「%3」 - - - + Successfully parsed the IP filter file. Number of rules applied: %1 成功解析 IP 位址過濾檔案。套用的規則數量:%1 - + Failed to parse the IP filter file 解析 IP 過濾條件檔案失敗 - + Restored torrent. Torrent: "%1" 已還原 torrent。Torrent:「%1」 - + Added new torrent. Torrent: "%1" 已新增新的 torrent。Torrent:「%1」 - + Torrent errored. Torrent: "%1". Error: "%2" Torrent 錯誤。Torrent:「%1」。錯誤:「%2」 - - Removed torrent. Torrent: "%1" - 已移除 torrent。Torrent:「%1」 + 已移除 torrent。Torrent:「%1」 - Removed torrent and deleted its content. Torrent: "%1" - 已移除 torrent 並刪除其內容。Torrent:「%1」 + 已移除 torrent 並刪除其內容。Torrent:「%1」 - + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + + + + File error alert. Torrent: "%1". File: "%2". Reason: "%3" 檔案錯誤警告。Torrent:「%1」。檔案:「%2」。理由:「%3」 - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP 通訊埠對映失敗。訊息:「%1」 - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP 通訊埠映射成功。訊息:「%1」 - + IP filter this peer was blocked. Reason: IP filter. IP 過濾 - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). - + privileged port (%1) this peer was blocked. Reason: privileged port (80). - + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" + + + + BitTorrent session encountered a serious error. Reason: "%1" - + SOCKS5 proxy error. Address: %1. Message: "%2". - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 混合模式限制 - + Failed to load Categories. %1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" - - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - - - - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 已停用 - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 已停用 - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL 種子 DNS 查詢失敗。Torrent:「%1」。URL:「%2」。錯誤:「%3」 + URL 種子 DNS 查詢失敗。Torrent:「%1」。URL:「%2」。錯誤:「%3」 - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" 從 URL 種子收到錯誤訊息。Torrent:「%1」。URL:「%2」。訊息:「%3」 - + Successfully listening on IP. IP: "%1". Port: "%2/%3" 成功監聽 IP。IP:「%1」。通訊埠:「%2/%3」 - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" 監聽 IP 失敗。IP:「%1」。通訊埠:「%2/%3」。理由:「%4」 - + Detected external IP. IP: "%1" 偵測到外部 IP。IP:「%1」 - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" 錯誤:內部警告佇列已滿,警告已被丟棄,您可能會發現效能變差。被丟棄的警告類型:「%1」。訊息:「%2」 - + Moved torrent successfully. Torrent: "%1". Destination: "%2" 已成功移動 torrent。Torrent:「%1」。目的地:「%2」 - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" 移動 torrent 失敗。Torrent:「%1」。來源:「%2」。目的地:「%3」。理由:「%4」 - BitTorrent::TorrentCreator - - - Operation aborted - 中止運作 - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - 建立新的 torrent 檔案失敗。理由:%1。 + + Failed to start seeding. + - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - 中止運作 + 中止運作 + + Create new torrent file failed. Reason: %1. - 建立新的 torrent 檔案失敗。理由:%1。 + 建立新的 torrent 檔案失敗。理由:%1。 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 新增 peer「%1」到 torrent「%2」失敗。理由:%3 - + Peer "%1" is added to torrent "%2" Peer「%1」新增至 torrent「%2」 - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. 無法寫入檔案。理由:「%1」。Torrent 目前處在「僅上傳」模式。 - + Download first and last piece first: %1, torrent: '%2' 先下載第一及最後一塊:%1,torrent:「%2」 - + On 開啟 - + Off 關閉 - + + Failed to reload torrent. Torrent: %1. Reason: %2 + + + + Generate resume data failed. Torrent: "%1". Reason: "%2" 產生還原資料失敗。Torrent:「%1」。理由:「%2」 - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" 還原 Torrent 失敗。檔案可能被移動或儲存空間不可存取。Torrent:「%1」。原因:「%2」 - + Missing metadata 缺少詮釋資料 - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" 檔案重新命名失敗。Torrent:「%1」,檔案:「%2」,理由:「%3」 - + Performance alert: %1. More info: %2 效能警告:%1。更多資訊:%2 @@ -2728,184 +2815,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' 參數「%1」須跟從句子結構「%1=%2」 - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' 參數「%1」須跟從句子結構「%1=%2」 - + Expected integer number in environment variable '%1', but got '%2' 預期環境變數「%1」是整數,但實際是「%2」 - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - 參數「%1」須跟從句子結構「%1=%2」 + 參數「%1」須跟從句子結構「%1=%2」 - + Expected %1 in environment variable '%2', but got '%3' 預期環境變數「%2」是%1,但實際是「%3」 - - + + %1 must specify a valid port (1 to 65535). %1須指向有效的埠(1到65535)。 - + Usage: 用量: - + [options] [(<filename> | <url>)...] [選項] [(<filename> | <url>)...] - + Options: 選項: - + Display program version and exit 顯示程式版本並離開 - + Display this help message and exit 顯示此說明訊息並離開 - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + 參數「%1」須跟從句子結構「%1=%2」 + + + + Confirm the legal notice + + + + + port - - Change the Web UI port - 更改Web UI遠端控制埠 + + Change the WebUI port + - + Change the torrenting port 變更 torrenting 通訊埠 - + Disable splash screen 不要顯示開始畫面 - + Run in daemon-mode (background) 以守護模式啟動(背景執行) - + dir Use appropriate short form or abbreviation of "directory" 路徑 - + Store configuration files in <dir> 儲存設定檔到<dir> - - + + name 名稱 - + Store configuration files in directories qBittorrent_<name> 儲存設定檔到資料夾qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory 強行存取libtorrent快速復原檔,使檔案路徑關聯到設定檔存放位置 - + files or URLs 檔案或網址 - + Download the torrents passed by the user 下載用戶批准的Torrent - + Options when adding new torrents: 加入新Torrent的選項: - + path 路徑 - + Torrent save path Torrent儲存路徑 - + + Add torrents as running or stopped + + + Add torrents as started or paused - 加入Torrent後,立即開始或暫停 + 加入Torrent後,立即開始或暫停 - + Skip hash check 略過雜湊值檢查 - + Assign torrents to category. If the category doesn't exist, it will be created. 指派Torrent到分類。如果分類不存在,將建立分類。 - + Download files in sequential order 按順序下載檔案 - + Download first and last pieces first 先下載首片段和最後片段 - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. 指示加入Torrent時是否開啟「加入新Torrent」話匣。 - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: 選項的值可以經由環境變數提供。選項是「parameter-name」時,環境變數名稱將會是「QBT_PARAMETER_NAME」(全大楷,並以「_」取代「-」)。要實現旗號值,設定變數為「1」或「TRUE」。例如「不要顯示開始畫面」就是: - + Command line parameters take precedence over environment variables 指令行參數凌駕環境變數 - + Help 說明 @@ -2913,17 +3014,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories 分類 - + All 全部 - + Uncategorized 未分類 @@ -2957,13 +3058,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - 回復Torrent + Start torrents + + Stop torrents + + + + Resume torrents + 回復Torrent + + Pause torrents - 暫停Torrent + 暫停Torrent @@ -2974,15 +3083,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... - + Reset 重設 + + + System + + CookiesDialog @@ -3023,12 +3137,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 - + Failed to load custom theme colors. %1 @@ -3036,7 +3150,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 @@ -3055,23 +3169,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - 同時永久刪除檔案 + 同時永久刪除檔案 - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? 確定要從傳輸清單移除「%1」? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? 您確定要移除在傳輸清單中的這 %1 個 torrent 嗎? - + Remove 移除 @@ -3084,12 +3202,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 從網址下載 - + Add torrent links 加入Torrent連結 - + One link per line (HTTP links, Magnet links and info-hashes are supported) 一行一連結(支援HTTP連結、磁性連結和資料驗證碼) @@ -3099,12 +3217,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 下載 - + No URL entered 未輸入網址 - + Please type at least one URL. 請輸入最少一個網址。 @@ -3264,63 +3382,86 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - GUIAddTorrentManager + FilterPatternFormatMenu - - Downloading torrent... Source: "%1" + + Pattern Format - - Trackers cannot be merged because it is a private torrent + + Plain text + + + + + Wildcards + + + + + Regular expression + + + + + GUIAddTorrentManager + + + Downloading torrent... Source: "%1" - + Torrent is already present - Torrent已存在 + Torrent已存在 - + + Trackers cannot be merged because it is a private torrent. + + + + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent「%1」已經在傳輸清單中。您想合併來自新來源的追蹤者嗎? + Torrent「%1」已經在傳輸清單中。您想合併來自新來源的追蹤者嗎? GeoIPDatabase - - + + Unsupported database file size. 不支援的資料庫檔案大小。 - + Metadata error: '%1' entry not found. 元資料錯誤:未能找到「%1」項。 - + Metadata error: '%1' entry has invalid type. 元資料錯誤:「%1」項類型無效。 - + Unsupported database version: %1.%2 不支援的資料庫版本:%1.%2 - + Unsupported IP version: %1 不支援的IP版本:%1 - + Unsupported record size: %1 不支援的記錄大小:%1 - + Database corrupted: no data section found. 資料庫破損:未能找到資料部份。 @@ -3328,17 +3469,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP 請求超過數量上限,正在關閉網路插座。限制:%1,IP:%2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" - + Bad Http request, closing socket. IP: %1 不正確的 HTTP 請求,正在關閉網路插座。IP:%1 @@ -3379,36 +3520,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... 瀏覽… - + Reset 重設 - + Select icon - + Supported image files + + LegalNotice + + + Legal Notice + 法律聲明 + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent 是一個檔案分享程式。當你運行一個Torrent時,資料會上載予其他人,而你須自行對分享的內容負責。 + + + + No further notices will be issued. + 往後不會再有提醒。 + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + + + + + Press 'Enter' key to continue... + + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 已被封鎖。理由:%2。 - + %1 was banned 0.0.0.0 was banned %1 被封鎖 @@ -3417,91 +3586,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1是未知的指令行參數。 - - + + %1 must be the single command line parameter. %1必須是單一指令行參數。 - - You cannot use %1: qBittorrent is already running for this user. - 無法使用%1:qBittorrent正由此用戶執行。 - - - + Run application with -h option to read about command line parameters. 以-h選項執行應用程式以閱讀關於指令行參數的資訊。 - + Bad command line 錯誤指令行 - + Bad command line: 錯誤指令行: - + An unrecoverable error occurred. - - + + qBittorrent has encountered an unrecoverable error. - - Legal Notice - 法律聲明 - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent 是一個檔案分享程式。當你運行一個Torrent時,資料會上載予其他人,而你須自行對分享的內容負責。 - - - - No further notices will be issued. - 往後不會再有提醒。 - - - - Press %1 key to accept and continue... - 按%1表示接受並繼續… - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent 是一個檔案分享程式。當你運行一個Torrent時,資料會上載予其他人,而你須自行對分享的內容負責。 - -往後不會再有提醒。 + + You cannot use %1: qBittorrent is already running. + - - Legal notice - 法律聲明 + + Another qBittorrent instance is already running. + - - Cancel - 取消 + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + - - I Agree - 我同意 + + Error when daemonizing. Reason: "%1". Error code: %2. + @@ -3512,621 +3652,706 @@ No further notices will be issued. 項目(&E) - + &Tools 工具(&T) - + &File 檔案(&F) - + &Help 程式(&H) - + On Downloads &Done 下載完成時(&D) - + &View 檢視(&V) - + &Options... 喜好設定(&O) - &Resume - 取消暫停(&R) + 取消暫停(&R) - + &Remove 移除(&R) - + Torrent &Creator Torrent建立工具(&C) - - + + Alternative Speed Limits 特別速度限制 - + &Top Toolbar 頂端工具列(&T) - + Display Top Toolbar 顯示頂端工具列 - + Status &Bar 狀態列 - + Filters Sidebar 過濾器側邊欄 - + S&peed in Title Bar 標題列和工作列按鈕顯示速度(&P) - + Show Transfer Speed in Title Bar 標題列和工作列按鈕顯示傳輸速度 - + &RSS Reader RSS閱讀器(&R) - + Search &Engine 搜尋器(&E) - + L&ock qBittorrent 鎖定qBittorrent(&O) - + Do&nate! 捐款(&N) - + + Sh&utdown System + + + + &Do nothing 不做任何事(&D) - + Close Window 關閉視窗 - R&esume All - 全部取消暫停(&E) + 全部取消暫停(&E) - + Manage Cookies... 管理Cookie… - + Manage stored network cookies 管理留駐的網絡Cookie… - + Normal Messages 一般訊息 - + Information Messages 資訊訊息 - + Warning Messages 警告訊息 - + Critical Messages 重要訊息 - + &Log 執行日誌(&L) - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... 設定全域速率限制…… - + Bottom of Queue 佇列底部 - + Move to the bottom of the queue 移動到佇列底部 - + Top of Queue 佇列頂部 - + Move to the top of the queue 移動到佇列頂部 - + Move Down Queue 向下移動佇列 - + Move down in the queue 在佇列中向下移動 - + Move Up Queue 向上移動佇列 - + Move up in the queue 在佇列中向上移動 - + &Exit qBittorrent 關閉qBittorrent - + &Suspend System 睡眠 - + &Hibernate System 休眠 - S&hutdown System - 關機 + 關機 - + &Statistics 統計資料(&S) - + Check for Updates 檢查更新 - + Check for Program Updates 檢查程式更新 - + &About 關於(&A) - &Pause - 暫停(&P) + 暫停(&P) - P&ause All - 全部暫停(&A) + 全部暫停(&A) - + &Add Torrent File... 加入Torrent檔案(&A) - + Open 開啟 - + E&xit 離開(&X) - + Open URL 開啟網址 - + &Documentation 網上說明(&D) - + Lock 鎖定 - - - + + + Show 顯示 - + Check for program updates 檢查程式更新 - + Add Torrent &Link... 加入Torrent連結(&L) - + If you like qBittorrent, please donate! 如果你喜歡qBittorrent,請捐款! - - + + Execution Log 執行日誌 - + Clear the password 清除密碼 - + &Set Password 設定密碼(&S) - + Preferences 喜好設定 - + &Clear Password 清除密碼(&C) - + Transfers 傳輸 - - + + qBittorrent is minimized to tray qBittorrent最小化到工作列通知區域 - - - + + + This behavior can be changed in the settings. You won't be reminded again. 此行為可於喜好設定更改。往後不會再有提醒。 - + Icons Only 只有圖示 - + Text Only 只有文字 - + Text Alongside Icons 文字於圖示旁 - + Text Under Icons 文字於圖示下 - + Follow System Style 跟隨系統風格 - - + + UI lock password UI鎖定密碼 - - + + Please type the UI lock password: 請輸入UI鎖定密碼: - + Are you sure you want to clear the password? 清除密碼,確定? - + Use regular expressions 使用正規表示法 - - Search - 搜尋 + + + Search Engine + 搜尋器 - - Transfers (%1) - 傳輸(%1) + + Search has failed + 搜尋失敗 - Recursive download confirmation - 確認反復下載 + + Search has finished + 搜尋完成 - Never - 從不 + + Search + 搜尋 + + + + Transfers (%1) + 傳輸(%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent更新後須重新啟動。 - + qBittorrent is closed to tray qBittorrent關閉到工作列通知區域 - + Some files are currently transferring. 部份檔案仍在傳輸。 - + Are you sure you want to quit qBittorrent? 確定離開qBittorrent嗎? - + &No 否(&N) - + &Yes 是((&Y) - + &Always Yes 總是(&A) - + Options saved. 已儲存選項。 - %1/s - s is a shorthand for seconds - %1每秒 + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + + + + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + - - + + Missing Python Runtime 沒有Python直譯器 - + qBittorrent Update Available qBittorrent存在新版本 - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? 沒有安裝搜尋器需要的Pyrhon。 立即安裝? - + Python is required to use the search engine but it does not seem to be installed. 沒有安裝搜尋器需要的Pyrhon。 - - + + Old Python Runtime 舊Python直譯器 - + A new version is available. 存在新版本。 - + Do you want to download %1? 下載%1嗎? - + Open changelog... 開啟更新日誌… - + No updates available. You are already using the latest version. 沒有較新的版本 你的版本已是最新。 - + &Check for Updates 檢查更新(&C) - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? 您的 Python 版本 (%1) 太舊了。最低需求:%2。 您想要現在安裝更新版本嗎? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. 您的 Python 版本 (%1) 太舊了。請升級到最新版本來讓搜尋引擎運作。 最低需求:%2。 - + + Paused + 暫停 + + + Checking for Updates... 正在檢查更新… - + Already checking for program updates in the background 已於背景檢查程式更新 - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error 下載錯誤 - Python setup could not be downloaded, reason: %1. Please install it manually. - Python安裝程式無法下載。理由:%1。 + Python安裝程式無法下載。理由:%1。 請手動安裝。 - - + + Invalid password 無效密碼 - + Filter torrents... - + Filter by: - + The password must be at least 3 characters long 密碼長度必須至少有 3 個字元 - - - + + + RSS (%1) RSS(%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent「%1」包含 .torrent 檔案,您想要執行下載作業嗎? - - - + The password is invalid 無效密碼 - + DL speed: %1 e.g: Download speed: 10 KiB/s 下載速度:%1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s 上載速度:%1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [下載:%1,上載:%2] qBittorrent %3 - - - + Hide 隱藏 - + Exiting qBittorrent 離開qBittorrent - + Open Torrent Files 開啟Torrent檔 - + Torrent Files Torrent檔 @@ -4187,133 +4412,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O 錯誤:%1 - + The file size (%1) exceeds the download limit (%2) 檔案大小 (%1) 超過下載限制 (%2) - + Exceeded max redirections (%1) 超過最大重新導向次數 (%1) - + Redirected to magnet URI 重新導向至磁力 URI - + The remote host name was not found (invalid hostname) 找不到遠端主機名稱(無效的主機名稱) - + The operation was canceled 操作已取消 - + The remote server closed the connection prematurely, before the entire reply was received and processed 遠端伺服器在收到完整回覆並在處理前過早關閉連線。 - + The connection to the remote server timed out 連線到遠端伺服器逾時 - + SSL/TLS handshake failed SSL/TLS 握手失敗 - + The remote server refused the connection 遠端伺服器拒絕連線 - + The connection to the proxy server was refused 連線到代理伺服器被拒絕 - + The proxy server closed the connection prematurely 代理伺服器過早關閉連線 - + The proxy host name was not found 找不到代理伺服器主機名稱 - + The connection to the proxy timed out or the proxy did not reply in time to the request sent 連線到代理伺服器逾時或是在要求的時間中沒有回應 - + The proxy requires authentication in order to honor the request but did not accept any credentials offered 為了執行要求, 代理伺服器需要認證但是不接受任何提供的憑證 - + The access to the remote content was denied (401) 存取遠端內容被拒絕 (401) - + The operation requested on the remote content is not permitted 對遠端內容要求的操作不被允許 - + The remote content was not found at the server (404) 遠端內容在伺服器上找不到 (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted 為了提供內容,遠端代理伺服器要求認證,但提供的憑證不被接受 - + The Network Access API cannot honor the request because the protocol is not known 因為未知的協定,網絡存取 API 無法執行要求 - + The requested operation is invalid for this protocol 要求的操作對於這協定是無效的 - + An unknown network-related error was detected 偵測到一個未知的網絡相關錯誤 - + An unknown proxy-related error was detected 偵測到一個未知的代理伺服器相關錯誤 - + An unknown error related to the remote content was detected 偵測到一個未知的遠端內容相關錯誤 - + A breakdown in protocol was detected 偵測到一個協定錯誤 - + Unknown error 未知的錯誤 @@ -4321,7 +4546,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" 正在忽略 SSL 錯誤,URL:「%1」,錯誤:「%2」 @@ -5693,294 +5923,295 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI遠端控制 + Web UI遠端控制 - + Advanced 進階 - + Customize UI Theme... - + Transfer List 傳輸清單 - + Confirm when deleting torrents 刪除Torrent時須確認 - - Shows a confirmation dialog upon pausing/resuming all the torrents - - - - - Confirm "Pause/Resume all" actions - - - - + Use alternating row colors In table elements, every other row will have a grey background. 單雙行交替背景色彩 - + Hide zero and infinity values 隱藏零和無限大數值 - + Always 總是 - Paused torrents only - 僅暫停Torrent + 僅暫停Torrent - + Action on double-click 按兩下鼠鍵的行動 - + Downloading torrents: 下載中的Torrent: - - Start / Stop Torrent - 開始╱停止Torrent + 開始╱停止Torrent - - + + Open destination folder 開啟存放位置 - - + + No action 甚麼都不做 - + Completed torrents: 完成的Torrent: - + Auto hide zero status filters - + Desktop 基本 - + Start qBittorrent on Windows start up Windows啟動時啟動qBittorrent - + Show splash screen on start up 啟動時顯示開始畫面 - + Confirmation on exit when torrents are active Torrent活躍時,離開須確認 - + Confirmation on auto-exit when downloads finish 完成下載所觸發的「自動離開」須確認 - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + KiB KiB - + Torrent content layout: Torrent 內容佈局: - + Original 原版 - + Create subfolder 建立子資料夾 - + Don't create subfolder 不要建立子資料夾 - + The torrent will be added to the top of the download queue - + Add to top of queue The torrent will be added to the top of the download queue - + 加至佇列頂部 - + When duplicate torrent is being added - + Merge trackers to existing torrent - + + Keep unselected files in ".unwanted" folder + + + + Add... 新增…… - + Options.. 選項…… - + Remove 移除 - + Email notification &upon download completion 下載完成時以電郵通知 - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: 下載者連線協定: - + Any 任何 - + I2P (experimental) - - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - - - - + Mixed mode - + Some options are incompatible with the chosen proxy type! - + If checked, hostname lookups are done via the proxy - + Perform hostname lookup via proxy - + Use proxy for BitTorrent purposes - + RSS feeds will use proxy - + Use proxy for RSS purposes - + Search engine, software updates or anything else will use proxy - + Use proxy for general purposes - + IP Fi&ltering IP過濾 - + Schedule &the use of alternative rate limits 設定使用特別速度限制的時間 - + From: From start time 從: - + To: To end time 到: - + Find peers on the DHT network 在 DHT 網路上尋找 peer - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -5989,140 +6220,188 @@ Disable encryption: Only connect to peers without protocol encryption 停用加密:僅連線到沒有加密協議的 peer - + Allow encryption 允許加密 - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">網上說明</a>) - + Maximum active checking torrents: 最大活躍的正在檢查 torrent 數: - + &Torrent Queueing Torrent排程 - + When total seeding time reaches - + When inactive seeding time reaches - A&utomatically add these trackers to new downloads: - 自動加入以下追蹤器到新下載: + 自動加入以下追蹤器到新下載: - + RSS Reader RSS閱讀器 - + Enable fetching RSS feeds 啟用讀取最新RSS Feed - + Feeds refresh interval: RSS Feed更新間距: - + + Same host request delay: + + + + Maximum number of articles per feed: 每個RSS Feed的最大文章數: - - - + + + min minutes 分鐘 - + Seeding Limits 做種限制 - - Pause torrent - 暫停 torrent + Pause torrent + 暫停 torrent + + + + Remove torrent + 移除 torrent + + + + Remove torrent and its files + 移除 torrent 與其檔案 + + + + Enable super seeding for torrent + 為 torrent 啟用超級做種 + + + + When ratio reaches + 當分享率達到 + + + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + 網址: + + + + Fetched trackers + - - Remove torrent - 移除 torrent + + Search UI + - - Remove torrent and its files - 移除 torrent 與其檔案 + + Store opened tabs + - - Enable super seeding for torrent - 為 torrent 啟用超級做種 + + Also store search results + - - When ratio reaches - 當分享率達到 + + History length + - + RSS Torrent Auto Downloader RSS Torrent自動下載器 - + Enable auto downloading of RSS torrents 啟用RSS Torrent自動下載 - + Edit auto downloading rules... 編輯自動下載規則… - + RSS Smart Episode Filter RSS智能分集過濾器 - + Download REPACK/PROPER episodes 下載「重新發佈」╱「足本」分集 - + Filters: 過濾器: - + Web User Interface (Remote control) 網絡用戶介面(Web UI遠端控制) - + IP address: IP位址: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6131,42 +6410,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv 「::」代表任何IPv6位址,而「*」代表任何的IPv4或IPv6位址。 - + Ban client after consecutive failures: 連續失敗後封鎖用戶端: - + Never 永不 - + ban for: 封鎖: - + Session timeout: 工作階段逾時: - + Disabled 已停用 - Enable cookie Secure flag (requires HTTPS) - 啟用 cookie 安全旗標(需要 HTTPS) + 啟用 cookie 安全旗標(需要 HTTPS) - + Server domains: 伺服器域名: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6179,442 +6457,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP 使用HTTPS,而不是HTTP - + Bypass authentication for clients on localhost 略過對本機上用戶的驗證 - + Bypass authentication for clients in whitelisted IP subnets 略過對IP子網絡白名單用戶的驗證 - + IP subnet whitelist... IP子網絡白名單… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. 指定反向代理 IP(或子網路,例如 0.0.0.0/24)以使用轉發的客戶端位置(X-Forwarded-For 標頭)。使用 ';' 來分隔多個項目。 - + Upda&te my dynamic domain name 更新動態域名 - + Minimize qBittorrent to notification area 最小化qBittorrent到工作列通知區域 - + + Search + 搜尋 + + + + WebUI + + + + Interface 界面 - + Language: 語言: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: 圖示款式: - - + + Normal 一般 - + File association 檔案關聯 - + Use qBittorrent for .torrent files Torrent檔使用qBittorrent - + Use qBittorrent for magnet links 磁性連結使用qBittorrent - + Check for program updates 檢查程式更新 - + Power Management 電源管理 - + + &Log Files + + + + Save path: 儲存路徑: - + Backup the log file after: 備份日誌檔,每滿 - + Delete backup logs older than: 只保存備份日誌: - + + Show external IP in status bar + + + + When adding a torrent 加入Torrent時 - + Bring torrent dialog to the front 保持Torrent話匣在畫面最上層 - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled 取消「加入」Torrent動作時,同時刪除相關Torrent檔 - + Also when addition is cancelled 也當「加入」被取消時 - + Warning! Data loss possible! 警告!資料可能消失! - + Saving Management 存檔管理 - + Default Torrent Management Mode: 預設Torrent管理模式: - + Manual 手動 - + Automatic 自動 - + When Torrent Category changed: Torrent的分類更改時: - + Relocate torrent 遷移Torrent - + Switch torrent to Manual Mode 切換Torrent到手動模式 - - + + Relocate affected torrents 遷移受影響Torrent - - + + Switch affected torrents to Manual Mode 切換受影響Torrent到手動模式 - + Use Subcategories 使用子分類 - + Default Save Path: 預設儲存路徑: - + Copy .torrent files to: 複製「.torrent」檔到: - + Show &qBittorrent in notification area 工作列通知區域顯示qBittorrent圖示 - &Log file - 備份執行日誌 + 備份執行日誌 - + Display &torrent content and some options 顯示Torrent內容和其他選項 - + De&lete .torrent files afterwards 往後再清除Torrent檔 - + Copy .torrent files for finished downloads to: 複製完成下載的「.torrent」檔到: - + Pre-allocate disk space for all files 預先分配檔案的磁碟空間 - + Use custom UI Theme 使用自訂 UI 佈景主題 - + UI Theme file: UI 佈景主題檔案: - + Changing Interface settings requires application restart 變更界面設定需要重新啟動 - + Shows a confirmation dialog upon torrent deletion Torrent 刪除時顯示確認對話框 - - + + Preview file, otherwise open destination folder 預覽檔案,否則開啟目標資料夾 - - Show torrent options - 顯示 torrent 選項 + 顯示 torrent 選項 - + Shows a confirmation dialog when exiting with active torrents 在有活躍的 torrent 但要關閉程式時顯示確認對話框 - + When minimizing, the main window is closed and must be reopened from the systray icon 最小化時,主視窗會關閉且必須從系統匣圖示重新開啟 - + The systray icon will still be visible when closing the main window 系統匣圖示將會在關閉主視窗後仍然可見 - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window 將 qBittorrent 關閉到通知區域 - + Monochrome (for dark theme) 單色(供深色主題使用) - + Monochrome (for light theme) 單色(供淺色主題使用) - + Inhibit system sleep when torrents are downloading Torrent下載時,防止系統休眠 - + Inhibit system sleep when torrents are seeding Torrent做種時,防止系統休眠 - + Creates an additional log file after the log file reaches the specified file size 紀錄檔達到一定大小後,建立額外的紀錄檔 - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings 記錄效能警告 - The torrent will be added to download list in a paused state - Torrent 將以暫停狀態加入到下載清單中 + Torrent 將以暫停狀態加入到下載清單中 - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state 不要自動開始下載 - + Whether the .torrent file should be deleted after adding it 是否於加入Torrent檔後將其刪除 - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. 開始下載前,請在磁碟上預先分配好完整檔案大小的空間以減少磁碟碎片。僅對 HDD 有用。 - + Append .!qB extension to incomplete files 未完成檔案加上.!qB副檔名 - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it 下載 torrent 時,可以從其中找到的任何 .torrent 檔案新增 torrent - + Enable recursive download dialog 啟用反復下載確認話匣 - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually 自動:各種 torrent 屬性(如儲存路徑)將由相關分類來決定 手動:各種 torrent 屬性(如儲存路徑)必須手動分配 - + When Default Save/Incomplete Path changed: 當預設儲存/不完整路徑變更時: - + When Category Save Path changed: 分類儲存路徑更改時: - + Use Category paths in Manual Mode 在手動模式下使用分類路徑 - + Resolve relative Save Path against appropriate Category path instead of Default one 根據適當的分類路徑而非預設路徑解析相對儲存路徑 - + Use icons from system theme - + Window state on start up: - + qBittorrent window state on start up - + Torrent stop condition: Torrent 停止條件: - - + + None - - + + Metadata received 收到的元資料 - - + + Files checked 已檢查的檔案 - + Ask for merging trackers when torrent is being added manually - + Use another path for incomplete torrents: 使用其他路徑取得不完整的 torrents: - + Automatically add torrents from: 自動加入以下位置的Torrent: - + Excluded file names 排除的檔案名稱 - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6643,841 +6974,914 @@ readme.txt:過濾精確的檔案名稱。 readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「readme10.txt」。 - + Receiver 接收人 - + To: To receiver 到: - + SMTP server: SMTP伺服器: - + Sender 寄件者 - + From: From sender 從: - + This server requires a secure connection (SSL) 此伺服器需要加密連接(SSL) - - + + Authentication 驗證 - - - - + + + + Username: 用戶名: - - - - + + + + Password: 密碼: - + Run external program 執行外部程式 - Run on torrent added - 在 torrent 新增時執行 + 在 torrent 新增時執行 - Run on torrent finished - 在 torrent 完成時執行 + 在 torrent 完成時執行 - + Show console window 顯示終端機視窗 - + TCP and μTP TCP和μTP - + Listening Port 監聽埠 - + Port used for incoming connections: 連入埠: - + Set to 0 to let your system pick an unused port 設定為 0 讓您的系統挑選未使用的通訊埠 - + Random 隨機 - + Use UPnP / NAT-PMP port forwarding from my router 使用映射自路由器的UPnP╱NAT-PMP連接埠 - + Connections Limits 連接限制 - + Maximum number of connections per torrent: 每個Torrent最大連接數量: - + Global maximum number of connections: 整體最大連接數量: - + Maximum number of upload slots per torrent: 每個Torrent最大上載通道數量: - + Global maximum number of upload slots: 整體最大上載通道數量: - + Proxy Server 代理伺服器 - + Type: 類型: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: 主機: - - - + + + Port: 埠: - + Otherwise, the proxy server is only used for tracker connections 否則,代理伺服器僅用於追蹤器連接 - + Use proxy for peer connections 使用代理伺服器來連接同路人 - + A&uthentication 驗證 - + Info: The password is saved unencrypted (注意:儲存的密碼不會加密) - + Filter path (.dat, .p2p, .p2b): 過濾器(.dat、.p2p、.p2b) - + Reload the filter 重新載入過濾器 - + Manually banned IP addresses... 手動封鎖IP位址… - + Apply to trackers 套用到追蹤器 - + Global Rate Limits 整體速度限制 - - - - - - - + + + + + + + 無限 - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: 上載: - - + + Download: 下載: - + Alternative Rate Limits 特別速度限制 - + Start time 開始時間 - + End time 結束時間 - + When: 日期: - + Every day 每日 - + Weekdays 工作日 - + Weekends 週末 - + Rate Limits Settings 設定速度限制 - + Apply rate limit to peers on LAN 將速度限制套用到區域網絡(LAN)的同路人 - + Apply rate limit to transport overhead 將速度限制套用到傳輸消耗 - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol 將速度限制套用到µTP協定 - + Privacy 私隱 - + Enable DHT (decentralized network) to find more peers 啟用DHT分散式網絡來尋找更多同路人 - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) 與相容的Bittorrent用戶端(µTorrent等)交換同路人資訊 - + Enable Peer Exchange (PeX) to find more peers 啟用PeX同路人交換來尋找更多同路人 - + Look for peers on your local network 於本地網絡尋找同路人 - + Enable Local Peer Discovery to find more peers 啟用LPD本地同路人發現來尋找更多同路人 - + Encryption mode: 加密模式: - + Require encryption 要求加密 - + Disable encryption 停用加密 - + Enable when using a proxy or a VPN connection 使用代理伺服器或VPN連接時啟用 - + Enable anonymous mode 啟用匿名模式 - + Maximum active downloads: 最大活躍下載數量: - + Maximum active uploads: 最大活躍上載數量: - + Maximum active torrents: 最大活躍Torrent數量: - + Do not count slow torrents in these limits 此等限制不要計算慢速Torrent - + Upload rate threshold: 上載速度下限: - + Download rate threshold: 下載速度下限: - - - + + + + sec seconds - + Torrent inactivity timer: 慢速Torrent時間: - + then 然後 - + Use UPnP / NAT-PMP to forward the port from my router 使用UPnP╱NAT-PMP映射路由器連接埠 - + Certificate: 憑證: - + Key: 密匙: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>關於憑證</a> - + Change current password 更改目前密碼 - Use alternative Web UI - 使用後備Web UI遠端控制 + 使用後備Web UI遠端控制 - + Files location: 檔案位置: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security 驗證 - + Enable clickjacking protection 啟用防劫持鼠鍵保護 - + Enable Cross-Site Request Forgery (CSRF) protection 啟用防偽造跨站請求(CSRF)保護 - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation 啟用主機標頭驗證 - + Add custom HTTP headers 新增自訂 HTTP 標頭 - + Header: value pairs, one per line 標頭:鍵值對,一行一個 - + Enable reverse proxy support 啟用反向代理支援 - + Trusted proxies list: 受信任的代理伺服器清單: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: 服務: - + Register 註冊 - + Domain name: 域名: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! 啟用此等選項,你的「.torrent 」檔或會<strong>無可挽回</strong>地離你而去! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog 啟用第二個選項(也當「加入」被取消),「.torrent」檔會被<strong>清除</strong>,不管有否按下「加入Torrent」話匣的「<strong>取消</strong>」按鈕。 - + Select qBittorrent UI Theme file 選取 qBittorrent UI 佈景主題檔案 - + Choose Alternative UI files location 選取後備Web UI遠端控制的檔案位置 - + Supported parameters (case sensitive): 支援的參數(大小楷視為不同): - + Minimized - + Hidden - + Disabled due to failed to detect system tray presence 未偵測到系統匣存在而停用 - + No stop condition is set. 未設定停止條件。 - + Torrent will stop after metadata is received. Torrent 將會在收到詮釋資料後停止。 - - Torrents that have metadata initially aren't affected. - 一開始就有詮釋資料的 torrent 則不受影響。 - - - + Torrent will stop after files are initially checked. 初步檢查檔案後,torrent 將會停止。 - + This will also download metadata if it wasn't there initially. 如果一開始不存在,這也會下載詮釋資料。 - + %N: Torrent name 【%N】Torrent名稱 - + %L: Category 【%L】分類 - + %F: Content path (same as root path for multifile torrent) 【%F】已下載檔案的路徑(單一檔案Torrent) - + %R: Root path (first torrent subdirectory path) 【%R】已下載檔案的路徑(多檔案Torrent首個子資料夾) - + %D: Save path 【%D】儲存路徑 - + %C: Number of files 【%C】檔案數量 - + %Z: Torrent size (bytes) 【%Z】Torrent大小(位元組) - + %T: Current tracker 【%T】目前追蹤器 - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") 提示:以引號包起參數可避免於空格被切斷(例如:"%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (無) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent會被視為慢速,如果於「慢速Torrent時間」設定秒數內的上下載速度都低於設定下限值。 - + Certificate 憑證 - + Select certificate 選取憑證 - + Private key 私密金鑰 - + Select private key 選取私密金鑰 - + + WebUI configuration failed. Reason: %1 + + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor 選取監視的資料夾 - + Adding entry failed 加入項目失敗 - - Location Error - 位置錯誤 + + The WebUI username must be at least 3 characters long. + + + + + The WebUI password must be at least 6 characters long. + - - The alternative Web UI files location cannot be blank. - 後備Web UI遠端控制的檔案位置不可空白。 + + Location Error + 位置錯誤 - - + + Choose export directory 選取輸出路徑 - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well 當這些選項啟用時,qBittorrent 將會在它們成功(第一個選項)或是未(第二個選項)加入其下載佇列時<strong>刪除</strong> .torrent 檔案。這將<strong>不僅是套用於</strong>透過「新增 torrent」選單動作開啟的檔案,也會套用於透過<strong>檔案類型關聯</strong>開啟的檔案。 - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI 佈景主題檔案 (*.qbtheme config.json) - + %G: Tags (separated by comma) %G:標籤(以逗號分隔) - + %I: Info hash v1 (or '-' if unavailable) %I:資訊雜湊值 v1(如果不可用則為 '-') - + %J: Info hash v2 (or '-' if unavailable) %J:資訊雜湊值 v2(如果不可用則為 '-') - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K:Torrent ID(v1 的 torrent 即為 sha-1 資訊雜湊值,若為 v2 或是混合的 torrent 即為截斷的 sha-256 資訊雜湊值) - - - + + + Choose a save directory 選取儲存路徑 - + + Torrents that have metadata initially will be added as stopped. + + + + Choose an IP filter file 選取一個IP過濾器檔 - + All supported filters 全部支援的過濾器 - + + The alternative WebUI files location cannot be blank. + + + + Parsing error 解析錯誤 - + Failed to parse the provided IP filter 解析IP過濾器失敗 - + Successfully refreshed 成功更新 - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number 成功解析IP過濾器:已套用%1個規則。 - + Preferences 喜好設定 - + Time Error 時間錯誤 - + The start time and the end time can't be the same. 開始時間和結尾時間不可相同。 - - + + Length Error 長度錯誤 - - - The Web UI username must be at least 3 characters long. - Web UI遠端控制的用戶名最少含3個字元。 - - - - The Web UI password must be at least 6 characters long. - Web UI遠端控制的密碼最少含6個字元。 - PeerInfo - + Unknown 未知 - + Interested (local) and choked (peer) 【您:期待下載╱他:拒絕上傳】 - + Interested (local) and unchoked (peer) 【您:期待下載╱他:同意上傳】 - + Interested (peer) and choked (local) 【他:期待下載╱您:拒絕上傳】 - + Interested (peer) and unchoked (local) 【他:期待下載╱您:同意上傳】 - + Not interested (local) and unchoked (peer) 【您:不想下載╱他:同意上傳】 - + Not interested (peer) and unchoked (local) 【他:不想下載╱您:同意上傳】 - + Optimistic unchoke 多傳者優先 - + Peer snubbed 下載者突然停止 - + Incoming connection 連入的連線 - + Peer from DHT 來自 DHT 的下載者 - + Peer from PEX 來自 PeX 的下載者 - + Peer from LSD 來自 LSD 的下載者 - + Encrypted traffic 加密的流量 - + Encrypted handshake 加密的交握 + + + Peer is using NAT hole punching + + PeerListWidget @@ -7633,7 +8037,7 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read Peer「%1」已被手動封鎖 - + N/A N/A @@ -7656,7 +8060,7 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read 加入的同路人清單(一行一個IP): - + Format: IPv4:port / [IPv6]:port 格式:IPv4:埠╱[IPv6]:埠 @@ -7697,27 +8101,27 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read PiecesBar - + Files in this piece: 此片段包含: - + File in this piece: 此 Piece 中的檔案: - + File in these pieces: 這些 Piece 中的檔案: - + Wait until metadata become available to see detailed information 等待取得元資料後再檢視詳細資訊 - + Hold Shift key for detailed information 按住「Shift」鍵以取得更多資訊 @@ -7730,58 +8134,58 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read 搜尋附加元件 - + Installed search plugins: 已安裝的搜尋附加元件: - + Name 名稱 - + Version 版本 - + Url 網址 - - + + Enabled 已啟用 - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. 警告:請確保從此等搜尋器下載Torrent時遵守你所在地的版權規定。 - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one 安裝新的 - + Check for updates 檢查更新 - + Close 關閉 - + Uninstall 解除安裝 @@ -7900,17 +8304,17 @@ Those plugins were disabled. 附加元件來源 - + Search plugin source: 搜尋附加元件來源: - + Local file 本機檔案 - + Web link 網絡連結 @@ -7951,47 +8355,47 @@ Those plugins were disabled. PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: 以下從「%1」而來的檔案支援預覽,請從中選取: - + Preview 預覽 - + Name 名稱 - + Size 大小 - + Progress 進度 - + Preview impossible 無法預覽 - + Sorry, we can't preview this file: "%1". 抱歉,我們無法預覽此檔案:「%1」。 - + Resize columns 調整欄位大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄位與其內容的大小 @@ -8004,27 +8408,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist 路徑不存在 - + Path does not point to a directory 路徑未指向目錄 - + Path does not point to a file 路徑未指向檔案 - + Don't have read permission to path 沒有讀取路徑的權限 - + Don't have write permission to path 沒有寫入路徑的權限 @@ -8065,12 +8469,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: 已下載: - + Availability: 可得度: @@ -8085,53 +8489,53 @@ Those plugins were disabled. 傳輸 - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) 已用時間: - + ETA: 預計剩餘時間: - + Uploaded: 已上載: - + Seeds: 種子: - + Download Speed: 下載速度: - + Upload Speed: 上載速度: - + Peers: 同路人: - + Download Limit: 下載速度限制: - + Upload Limit: 上載速度限制: - + Wasted: 已丟棄: @@ -8141,193 +8545,249 @@ Those plugins were disabled. 連接: - + Information 資訊 - + Info Hash v1: 資訊雜湊值 v1: - + Info Hash v2: 資訊雜湊值 v2: - + Comment: 評註: - + Select All 選取全部 - + Select None 取消選取檔案 - + Share Ratio: 分享率: - + Reannounce In: 重新公告於: - + Last Seen Complete: 最後完整可見: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: 總大小: - + Pieces: 片段: - + Created By: 編製工具: - + Added On: 加入於: - + Completed On: 完成於: - + Created On: 建立於: - + + Private: + + + + Save Path: 儲存路徑: - + Never 從不 - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1×%2(完成%3) - - + + %1 (%2 this session) %1(本階段%2) - - + + + N/A N/A - + + Yes + + + + + No + + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1(做種%2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1(最高%2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1(總計%2) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1(平均%2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - 新Web種子 + 新Web種子 - Remove Web seed - 清除Web種子 + 清除Web種子 - Copy Web seed URL - 複製Web種子網址 + 複製Web種子網址 - Edit Web seed URL - 編輯Web種子網址 + 編輯Web種子網址 - + Filter files... 過濾檔案… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled 已停用速度圖表 - + You can enable it in Advanced Options 您可以在進階選項中啟用它 - New URL seed New HTTP source - 新URL種子 + 新URL種子 - New URL seed: - 新URL種子: + 新URL種子: - - This URL seed is already in the list. - 此URL種子已於清單。 + 此URL種子已於清單。 - + Web seed editing 編輯Web種子 - + Web seed URL: Web種子網址: @@ -8346,22 +8806,22 @@ Those plugins were disabled. 無法於%1儲存RSS自動下載器資料。錯誤:%2 - + Invalid data format 無效的資料格式 - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... - + Failed to read RSS AutoDownloader rules. %1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 無法載入RSS自動下載器規則。理由:%1 @@ -8369,22 +8829,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 下載「%1」的RSS Feed失敗。理由:%2 - + RSS feed at '%1' updated. Added %2 new articles. 「%1」的RSS Feed已更新。加入%2個新文章。 - + Failed to parse RSS feed at '%1'. Reason: %2 解析「%1」的RSS Feed失敗。理由:%2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. 在「%1」的 RSS feed 已成功下載。開始解析它。 @@ -8420,12 +8880,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. 無效的RSS Feed。 - + %1 (line: %2, column: %3, offset: %4). %1(行:%2,欄:%3,偏移:%4)。 @@ -8433,99 +8893,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" 無法儲存 RSS 工作階段設定。檔案:「%1」。錯誤:「%2」 - + Couldn't save RSS session data. File: "%1". Error: "%2" 無法儲存 RSS 工作階段資料。檔案:「%1」。錯誤:「%2」 - - + + RSS feed with given URL already exists: %1. 存在同網址RSS Feed:%1。 - + Feed doesn't exist: %1. - + Cannot move root folder. 無法遷移根資料夾。 - - + + Item doesn't exist: %1. 項目不存在:%1。 - + Couldn't move folder into itself. - + Cannot delete root folder. 無法刪除根資料夾。 - + Failed to read RSS session data. %1 - + Failed to parse RSS session data. File: "%1". Error: "%2" - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. 無法載入 RSS feed。Feed:「%1」。理由:URL 為必填。 - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. 無法載入 RSS feed。Feed:「%1」。理由:UID 無效。 - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. 找到重複的 RSS feed。UID:「%1」。錯誤:設定似乎已損壞。 - + Couldn't load RSS item. Item: "%1". Invalid data format. 無法載入 RSS 項目。項目:「%1」。無效的資料格式。 - + Corrupted RSS list, not loading it. 損壞的 RSS 清單,無法載入。 - + Incorrect RSS Item path: %1. 錯誤的RSS項目路徑:%1。 - + RSS item with given path already exists: %1. 存在同路徑RSS項目:%1。 - + Parent folder doesn't exist: %1. 父資料夾不存在:%1。 @@ -8549,8 +9009,8 @@ Those plugins were disabled. - - + + Mark items read 標示項目為已讀 @@ -8575,132 +9035,132 @@ Those plugins were disabled. Torrent:(按兩下下載) - - + + Delete 刪除 - + Rename... 重新命名… - + Rename 重新命名 - - + + Update 更新 - + New subscription... 新訂閱… - - + + Update all feeds 更新全部RSS Feed - + Download torrent 下載Torrent - + Open news URL 開啟消息網址 - + Copy feed URL 複製RSS Feed網址 - + New folder... 新資料夾… - + Edit feed URL... - + Edit feed URL - + Please choose a folder name 請選取資料夾名稱 - + Folder name: 資料夾名稱: - + New folder 新資料夾 - - + + Please type a RSS feed URL 請輸入一個RSS Feed網址 - - + + Feed URL: RSS Feed網址: - + Deletion confirmation 確認刪除 - + Are you sure you want to delete the selected RSS feeds? 刪除所選RSS Feed,確定? - + Please choose a new name for this RSS feed 請為此RSS Feed選取新名稱 - + New feed name: 新RSS Feed名稱: - + Rename failed 重新命名失敗 - + Date: 日期: - + Feed: - + Author: 作者: @@ -8708,38 +9168,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. 必須安裝 Python 以使用搜尋引擎。 - + Unable to create more than %1 concurrent searches. 無法建立多於 %1 個並行搜尋。 - - + + Offset is out of range 偏移量超出範圍 - + All plugins are already up to date. 全部附加元件已是最新版本。 - + Updating %1 plugins 正在更新%1個附加元件 - + Updating plugin %1 正在更新附加元件%1 - + Failed to check for plugin updates: %1 檢查附加元件更新失敗:%1 @@ -8814,132 +9274,146 @@ Those plugins were disabled. 大小: - + Name i.e: file name 名稱 - + Size i.e: file size 大小 - + Seeders i.e: Number of full sources 完整種子 - + Leechers i.e: Number of partial sources 同路人 - Search engine - 搜尋器 + 搜尋器 - + Filter search results... 過濾搜尋結果… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results 搜尋結果(顯示<i>%2</i>個其中<i>%1</i>個): - + Torrent names only 僅Torrent名 - + Everywhere 全部 - + Use regular expressions 使用正規表示法 - + Open download window 開啟下載視窗 - + Download 下載 - + Open description page 開啟描述頁面 - + Copy 複製 - + Name 名稱 - + Download link 下載連結 - + Description page URL 描述頁面的 URL - + Searching... 搜尋中… - + Search has finished 搜尋完成 - + Search aborted 搜尋中止 - + An error occurred during search... 搜尋時發生錯誤… - + Search returned no results 沒有搜尋結果 - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility 欄位顯示 - + Resize columns 調整欄位大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄位與其內容的大小 @@ -8947,104 +9421,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. 未知的搜尋器附加元件檔案格式。 - + Plugin already at version %1, which is greater than %2 附加元件目前版本是%1,比%2新。 - + A more recent version of this plugin is already installed. 已安裝此附加元件較新版本。 - + Plugin %1 is not supported. 不支援附加元件%1。 - - + + Plugin is not supported. 不支援的附加元件。 - + Plugin %1 has been successfully updated. 成功更新附加元件%1。 - + All categories 全部類別 - + Movies 電影 - + TV shows 電視節目 - + Music 音樂 - + Games 遊戲 - + Anime 動畫 - + Software 軟件 - + Pictures 圖片 - + Books - + Update server is temporarily unavailable. %1 更新伺服器暫時不可用。%1 - - + + Failed to download the plugin file. %1 下載附加元件檔案失敗。%1 - + Plugin "%1" is outdated, updating to version %2 附加元件「%1」已過時,正在更新到版本%2 - + Incorrect update info received for %1 out of %2 plugins. %2個附加元件其中%1個有不正確更新資訊。 - + Search plugin '%1' contains invalid version string ('%2') 搜尋附加元件「%1」包含了無效的版本字串(「%2」) @@ -9054,114 +9528,153 @@ Those plugins were disabled. - - - - Search 搜尋 - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. 沒有安裝任何搜尋附加元件。 如果需要搜尋附加元件,請按下視窗右下角的「搜尋附加元件…」按鈕。 - + Search plugins... 搜尋附加元件… - + A phrase to search for. 搜尋的句語: - + Spaces in a search term may be protected by double quotes. 保護搜尋句語的完整,請使用英語雙引號。 - + Example: Search phrase example 例子: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>會搜尋句語<b>foo bar</b> - + All plugins 全部附加元件 - + Only enabled 僅已啟用 - + + + Invalid data format. + 無效的資料格式。 + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>:搜尋 <b>foo</b> 與 <b>bar</b> - + + Refresh + + + + Close tab 關閉分頁 - + Close all tabs 關閉所有分頁 - + Select... 選取… - - - + + Search Engine 搜尋器 - + + Please install Python to use the Search Engine. 請安裝搜尋器需要的Pyrhon。 - + Empty search pattern 空白搜尋模式 - + Please type a search pattern first 請先輸入一個搜尋模式 - + + Stop 停止 - Search has finished - 搜尋完成 + 搜尋完成 + + + Search has failed + 搜尋失敗 + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + - - Search has failed - 搜尋失敗 + + Failed to save search history. File: "%1". Error: "%2" + @@ -9274,34 +9787,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: 上傳: - - - + + + 無限 - - - + + + KiB/s KiB/s - - + + Download: 下載: - + Alternative speed limits 特別速度限制 @@ -9493,32 +10006,32 @@ Click the "Search plugins..." button at the bottom right of the window 排程平均逗留時間: - + Connected peers: 連接的同路人: - + All-time share ratio: 歷年總分享率: - + All-time download: 歷年總下載: - + Session waste: 本階段丟棄: - + All-time upload: 歷年總上載: - + Total buffer size: 總緩衝大小: @@ -9533,12 +10046,12 @@ Click the "Search plugins..." button at the bottom right of the window 已排程入出任務: - + Write cache overload: 寫入超額快存: - + Read cache overload: 讀取超額快存: @@ -9557,51 +10070,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: 連接狀態: - - + + No direct connections. This may indicate network configuration problems. 沒有直接連接。表示你的網絡設定可能有問題。 - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT分散式網絡:%1個節點 - + qBittorrent needs to be restarted! qBittorrent須重新啟動。 - - - + + + Connection Status: 連接狀態: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. 離線。通常表示qBittorrent監聽連入埠失敗。 - + Online 在線 - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits 按下切換到特別速度限制 - + Click to switch to regular speed limits 按下切換到正常速度限制 @@ -9630,14 +10159,22 @@ Click the "Search plugins..." button at the bottom right of the window 完成(0) - Resumed (0) - 回復下載(0) + 回復下載(0) - Paused (0) - 暫停(0) + 暫停(0) + + + + Running (0) + + + + + Stopped (0) + @@ -9699,10 +10236,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) 完成(%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - 暫停(%1) + 暫停(%1) @@ -9710,14 +10266,12 @@ Click the "Search plugins..." button at the bottom right of the window 移動中 (%1) - Resume torrents - 繼續下載 torrent + 繼續下載 torrent - Pause torrents - 暫停 torrent + 暫停 torrent @@ -9725,9 +10279,8 @@ Click the "Search plugins..." button at the bottom right of the window 移除 torrents - Resumed (%1) - 回復下載(%1) + 回復下載(%1) @@ -9768,17 +10321,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags 標籤 - + All 全部 - + Untagged 未標籤 @@ -9786,52 +10339,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... 加入標籤… - + Remove tag 清除標籤 - + Remove unused tags 清除未使用標籤 - Resume torrents - 回復Torrent + 回復Torrent - Pause torrents - 暫停Torrent + 暫停Torrent - + Remove torrents 移除 torrents - New Tag - 新標籤 + 新標籤 + + + + Start torrents + + + + + Stop torrents + - + Tag: 標籤: - + + Add tag + + + + Invalid tag name 無效標籤名 - + Tag name '%1' is invalid 標籤名「%1」無效 @@ -9971,32 +10536,32 @@ Please choose a different name and try again. TorrentContentModel - + Name 名稱 - + Progress 進度 - + Download Priority 下載優先權 - + Remaining 剩餘 - + Availability 可得度 - + Total Size 總大小 @@ -10041,102 +10606,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error 重新命名錯誤 - + Renaming 正在重新命名 - + New name: 新名稱: - + Column visibility 欄位顯示 - + Resize columns 調整欄位大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄位與其內容的大小 - + Open 開啟 - + Open containing folder 開啟包含的資料夾 - + Rename... 重新命名… - + Priority 優先權 - - + + Do not download 不要下載 - + Normal 一般 - + High - + Maximum 最高 - + By shown file order 按顯示的檔案順序 - + Normal priority 一般優先度 - + High priority 高優先度 - + Maximum priority 最高優先度 - + Priority by shown file order 按檔案順序顯示的優先度 + + TorrentCreatorController + + + Too many active tasks + + + + + Torrent creation is still unfinished. + + + + + Torrent creation failed. + + + TorrentCreatorDialog @@ -10161,13 +10744,13 @@ Please choose a different name and try again. - + Select file 選取檔案 - + Select folder 選取資料夾 @@ -10192,58 +10775,10 @@ Please choose a different name and try again. 片段大小: - + Auto 自動 - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10290,92 +10825,83 @@ Please choose a different name and try again. 資料項 - + You can separate tracker tiers / groups with an empty line. 您可以用一行空白行分離 tracker 層/群組。 - + Web seed URLs: Web種子網址: - + Tracker URLs: 追蹤器網址: - + Comments: 評註: - + Source: 來源: - + Progress: 進度: - + Create Torrent 建立Torrent - - + + Torrent creation failed 建立 Torrent 失敗 - + Reason: Path to file/folder is not readable. 理由:檔案╱資料夾的路徑無法讀取。 - + Select where to save the new torrent 選取新Torrent儲存位置 - + Torrent Files (*.torrent) Torrent檔(*.torrent) - - Reason: %1 - 理由:%1 - - - + Add torrent to transfer list failed. - + Reason: "%1" - + Add torrent failed - Reason: Created torrent is invalid. It won't be added to download list. - 理由:建立的Torrent無效,不會被加入到下載清單。 - - - + Torrent creator Torrent建立工具 - + Torrent created: 建立的Torrent: @@ -10383,32 +10909,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." - + Couldn't store Watched Folders configuration to %1. Error: %2 無法儲存監視資料夾設定至 %1。錯誤:%2 - + Watched folder Path cannot be empty. 監視的資料夾路徑不能為空。 - + Watched folder Path cannot be relative. 監視的資料夾路徑不能是相對路徑。 @@ -10416,27 +10942,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + Magnet file too big. File: %1 - + Failed to open magnet file: %1 開啟磁力檔案失敗:%1 - + Rejecting failed torrent file: %1 拒絕失敗的 torrent 檔案:%1 - + Watching folder: "%1" 正在監視資料夾:「%1」 @@ -10444,14 +10970,8 @@ Please choose a different name and try again. TorrentInfo - - Failed to allocate memory when reading file. File: "%1". Error: "%2" - - - - Invalid metadata - 無效的詮釋資料 + 無效的詮釋資料 @@ -10482,127 +11002,195 @@ Please choose a different name and try again. 使用其他路徑取得不完整的 torrent - + Category: 分類: - + + Torrent Share Limits + + + Torrent speed limits - Torrent 速度限制 + Torrent 速度限制 - + Download: 下載: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits 這些不會超過全域限制 - + Upload: 上傳: - Torrent share limits - Torrent 速度限制 + Torrent 速度限制 - Use global share limit - 使用全域分享限制 + 使用全域分享限制 - Set no share limit - 設定無分享限制 + 設定無分享限制 - Set share limit to - 設定分享限制為 + 設定分享限制為 - ratio - 上傳╱下載比率 - - - - total minutes - - - - - inactive minutes - + 上傳╱下載比率 - + Disable DHT for this torrent 停用此 torrent 的 DHT - + Download in sequential order 依順序下載 - + Disable PeX for this torrent 停用此 torrent 的 PeX - + Download first and last pieces first 先下載第一和最後一塊 - + Disable LSD for this torrent 停用此 torrent 的 LSD - + Currently used categories 目前已使用的分類 - - + + Choose save path 選擇儲存路徑 - + Not applicable to private torrents 不適用於私人 torrent - No share limit method selected - 未選取分享限制方法 + 未選取分享限制方法 - Please select a limit method first - 請先選擇限制方式 + 請先選擇限制方式 + + + + TorrentShareLimitsWidget + + + + + + Default + 預設 + + + + + + Unlimited + + + + + + + Set to + + + + + Seeding time: + + + + + + + + + + min + minutes + 分鐘 + + + + Inactive seeding time: + + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + 移除 torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + 為 torrent 啟用超級做種 + + + + Ratio: + @@ -10613,32 +11201,36 @@ Please choose a different name and try again. - New Tag - 新標籤 + 新標籤 + Add tag + + + + Tag: 標籤: - + Invalid tag name 無效標籤名 - + Tag name '%1' is invalid. - + Tag exists 標籤已存在 - + Tag name already exists. 存在同名標籤。 @@ -10646,115 +11238,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. 錯誤:「%1」不是有效Torrent檔。 - + Priority must be an integer 優先權須是整數 - + Priority is not valid 優先權無效 - + Torrent's metadata has not yet downloaded Torrent的元資料未有下載 - + File IDs must be integers 檔案ID須是整數 - + File ID is not valid 檔案ID無效 - - - - + + + + Torrent queueing must be enabled 須啟用Torrent排程 - - + + Save path cannot be empty 儲存路徑不可空白 - - + + Cannot create target directory 無法建立目標目錄 - - + + Category cannot be empty 分類不可空白 - + Unable to create category 無法建立分類 - + Unable to edit category 無法編輯分類 - + Unable to export torrent file. Error: %1 無法匯出Torrent文件。錯誤:%1 - + Cannot make save path 無法建立儲存路徑 - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 「sort」參數無效 - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. 「%1」不是有效的檔案索引。 - + Index %1 is out of bounds. 索引 %1 超出範圍。 - - + + Cannot write to directory 無法寫入到路徑 - + WebUI Set location: moving "%1", from "%2" to "%3" Web UI遠端控制存放位置:將「%1」從「%2」搬到「%3」 - + Incorrect torrent name 錯誤Torrent名稱 - - + + Incorrect category name 錯誤分類名稱 @@ -10785,257 +11392,191 @@ Please choose a different name and try again. TrackerListModel - - + Working - 運行中 + 運行中 - + Disabled - 已停用 + 已停用 - + Disabled for this torrent - 對此 Torrent 停用 + 對此 Torrent 停用 - + This torrent is private - 私人Torrent + 私人Torrent - + N/A - + (無) - + Updating... - 更新中… + 更新中… - + Not working - 閒置 + 閒置 - + Tracker error - + Unreachable - + Not contacted yet - 未嘗連接 - - - - Invalid status! - + 未嘗連接 - - URL/Announce endpoint + + Invalid state! - Tier - - - - - Protocol + URL/Announce Endpoint - Status - 狀態 - - - - Peers - 同路人 - - - - Seeds - - - - - Leeches - 依附者 - - - - Times Downloaded - 下載次數 - - - - Message - 訊息 - - - - Next announce + BT Protocol - Min announce + Next Announce - - v%1 + + Min Announce - - - TrackerListWidget - Working - 運行中 + + Tier + - Disabled - 已停用 + + Status + 狀態 - Disabled for this torrent - 對此 Torrent 停用 + + Peers + 同路人 - - This torrent is private - 私人Torrent + + Seeds + 種子 - Updating... - 更新中… + + Leeches + 依附者 - Not working - 閒置 + + Times Downloaded + 下載次數 - Not contacted yet - 未嘗連接 + + Message + 訊息 + + + TrackerListWidget - N/A - (無) + + This torrent is private + 私人Torrent - + Tracker editing 編輯追蹤器 - + Tracker URL: 追蹤器網址: - - + + Tracker editing failed 編輯追蹤器失敗 - + The tracker URL entered is invalid. 無效追蹤器網址。 - + The tracker URL already exists. 存在同網址的追蹤器。 - + Edit tracker URL... 編輯追蹤器網址… - + Remove tracker 清除追蹤器 - + Copy tracker URL 複製追蹤器網址 - + Force reannounce to selected trackers 強制重新公告到所選追蹤器 - + Force reannounce to all trackers 強制重新公告到全部追蹤器 - Tier - - - - URL - 網址 - - - Status - 狀態 - - - Seeds - 種子 - - - Times Downloaded - 下載次數 - - - + Resize columns 調整欄位大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄位與其內容的大小 - Peers - 同路人 - - - + Add trackers... 新增追蹤者… - Leeches - 依附者 - - - Message - 訊息 - - - + Column visibility 欄位顯示 @@ -11053,37 +11594,37 @@ Please choose a different name and try again. 加入的追蹤器清單(一行一個): - + µTorrent compatible list URL: µTorrent相容清單網址: - + Download trackers list 下載追蹤者列表 - + Add 新增 - + Trackers list URL error 追蹤者列表 URL 錯誤 - + The trackers list URL cannot be empty 追蹤者列表 URL 不能為空 - + Download trackers list error 下載追蹤者列表錯誤 - + Error occurred when downloading the trackers list. Reason: "%1" 下載追蹤者清單時發生錯誤。理由:「%1」 @@ -11091,87 +11632,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - 全部(0) - - - Trackerless (0) - 缺少追蹤器(0) - - - Error (0) - 錯誤(0) - - - Warning (0) - 警告(0) - - - Trackerless - 缺少追蹤器 - - - Error (%1) - 錯誤(%1) - - - + Warning (%1) 警告(%1) - + Trackerless (%1) 缺少追蹤器(%1) - + Tracker error (%1) - + Other error (%1) - + Remove tracker - 清除追蹤器 + 清除追蹤器 + + + + Start torrents + + + + + Stop torrents + - Resume torrents - 回復Torrent + 回復Torrent - Pause torrents - 暫停 torrent + 暫停 torrent - + Remove torrents 移除 torrents - + Removal confirmation - + Are you sure you want to remove tracker "%1" from all torrents? - + Don't ask me again. - + All (%1) this is for the tracker filter 全部(%1) @@ -11180,7 +11704,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'mode':無效參數 @@ -11273,9 +11797,8 @@ Please choose a different name and try again. 正在檢查恢復資料 - Paused - 暫停 + 暫停 @@ -11300,220 +11823,262 @@ Please choose a different name and try again. 錯誤 - + Name i.e: torrent name 名稱 - + Size i.e: torrent size 大小 - + Progress % Done 進度 - Status Torrent status (e.g. downloading, seeding, paused) - 狀態 + 狀態 - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + 狀態 + + + Seeds i.e. full sources (often untranslated) 完整種子 - + Peers i.e. partial sources (often untranslated) 同路人 - + Down Speed i.e: Download speed 下載速度 - + Up Speed i.e: Upload speed 上載速度 - + Ratio Share ratio 分享率 - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left 預計剩餘時間 - + Category 分類 - + Tags 標籤 - + Added On Torrent was added to transfer list on 01/01/2010 08:00 加入於 - + Completed On Torrent was completed on 01/01/2010 08:00 完成於 - + Tracker 追蹤器 - + Down Limit i.e: Download limit 下載速度限制 - + Up Limit i.e: Upload limit 上載速度限制 - + Downloaded Amount of data downloaded (e.g. in MB) 已下載 - + Uploaded Amount of data uploaded (e.g. in MB) 已上載 - + Session Download Amount of data downloaded since program open (e.g. in MB) 本階段下載 - + Session Upload Amount of data uploaded since program open (e.g. in MB) 本階段上載 - + Remaining Amount of data left to download (e.g. in MB) 剩餘 - + + Time Active + Time (duration) the torrent is active (not stopped) + 已用時間 + + + + Yes + + + + + No + + + Time Active Time (duration) the torrent is active (not paused) - 已用時間 + 已用時間 - + Save Path Torrent save path 儲存路徑 - + Incomplete Save Path Torrent incomplete save path 不完整的儲存路徑 - + Completed Amount of data completed (e.g. in MB) 已完成 - + Ratio Limit Upload share ratio limit 最大分享率 - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole 最後完整可見 - + Last Activity Time passed since a chunk was downloaded/uploaded 最後活動 - + Total Size i.e. Size including unwanted data 總大小 - + Availability The number of distributed copies of the torrent 可得性 - + Info Hash v1 i.e: torrent info hash v1 資訊雜湊值 v1 - + Info Hash v2 i.e: torrent info hash v2 資訊雜湊值 v2 - + Reannounce In Indicates the time until next trackers reannounce - - + + Private + Flags private torrents + + + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1 前 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1(已做種 %2) @@ -11522,334 +12087,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility 欄位顯示 - + Recheck confirmation 確認重新檢查 - + Are you sure you want to recheck the selected torrent(s)? 重新檢查所選Torrent,確定? - + Rename 重新命名 - + New name: 新名稱: - + Choose save path 選取儲存路徑 - Confirm pause - 確認暫停 + 確認暫停 - Would you like to pause all torrents? - 您想要暫停所有 torrents 嗎? + 您想要暫停所有 torrents 嗎? - Confirm resume - 確認繼續 + 確認繼續 - Would you like to resume all torrents? - 您想要繼續所有 torrents 嗎? + 您想要繼續所有 torrents 嗎? - + Unable to preview 無法預覽 - + The selected torrent "%1" does not contain previewable files 所選的 torrent「%1」不包含可預覽的檔案 - + Resize columns 調整欄位大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄位與其內容的大小 - + Enable automatic torrent management 啟用自動 torrent 管理 - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. 您確定要為選定的 torrent 啟用自動 Torrent 管理嗎?它們可能會被重新安置。 - Add Tags - 加入標籤 + 加入標籤 - + Choose folder to save exported .torrent files 選擇保存所匯出 .torrent 文件的文件夾 - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" 匯出 .torrent 檔案失敗。Torrent:「%1」。儲存路徑:「%2」。理由:「%3」 - + A file with the same name already exists 已存在同名檔案 - + Export .torrent file error 匯出 .torrent 文件錯誤 - + Remove All Tags 清除全部標籤 - + Remove all tags from selected torrents? 從所選Torrent清除全部標籤? - + Comma-separated tags: 標籤(以英語逗號分開): - + Invalid tag 無效標籤 - + Tag name: '%1' is invalid 標籤名:「%1」無效 - &Resume Resume/start the torrent - 取消暫停(&R) + 取消暫停(&R) - &Pause Pause the torrent - 暫停(&P) + 暫停(&P) - Force Resu&me Force Resume/start the torrent - 強制繼續(&M) + 強制繼續(&M) - + Pre&view file... 預覽檔案(&V)... - + Torrent &options... Torrent 選項(&O)... - + Open destination &folder 開啟目的資料夾(&F) - + Move &up i.e. move up in the queue 上移(&U) - + Move &down i.e. Move down in the queue 下移(&D) - + Move to &top i.e. Move to top of the queue 移至頂端(&T) - + Move to &bottom i.e. Move to bottom of the queue 移至底部(&B) - + Set loc&ation... 設定位置(&A)... - + Force rec&heck 強制重新檢查(&H) - + Force r&eannounce 強制重新回報(&E) - + &Magnet link 磁力連結(&M) - + Torrent &ID Torrent ID(&I) - + + &Comment + + + + &Name 名稱(&N) - + Info &hash v1 資訊雜湊值 v1(&H) - + Info h&ash v2 資訊雜湊值 v2(&A) - + Re&name... 重新命名…(&N) - + Edit trac&kers... 編輯追蹤器…(&K) - + E&xport .torrent... 匯出 .torrent…(&X) - + Categor&y 類別(&Y) - + &New... New category... 新增…(&N) - + &Reset Reset category 重設(&R) - + Ta&gs 標籤(&G) - + &Add... Add / assign multiple tags... 加入…(&A) - + &Remove All Remove all tags 删除全部(&R) - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue 隊列(&Q) - + &Copy 複製(&C) - + Exported torrent is not necessarily the same as the imported 匯出的 torrent 不一定與匯入的相同 - + Download in sequential order 按順序下載 - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. 匯出 .torrent 檔案時發生錯誤。請檢視執行紀錄檔以取得更多資訊。 + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent 移除(&R) - + Download first and last pieces first 先下載首片段和最後片段 - + Automatic Torrent Management 自動Torrent管理 - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category 自動模式代表多個Torrent屬性(例如儲存路徑)將由相關分類決定 - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - 若 Torrent 暫停/排入佇列/錯誤/檢查,則無法強制重新公告 + 若 Torrent 暫停/排入佇列/錯誤/檢查,則無法強制重新公告 - + Super seeding mode 超級種子模式 @@ -11894,28 +12483,28 @@ Please choose a different name and try again. - + UI Theme Configuration. - + The UI Theme changes could not be fully applied. The details can be found in the Log. - + Couldn't save UI Theme configuration. Reason: %1 - - + + Couldn't remove icon file. File: %1. - + Couldn't copy icon file. Source: %1. Destination: %2. @@ -11923,7 +12512,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" 從檔案載入 UI 佈景主題失敗:「%1」 @@ -11954,34 +12548,27 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" 遷移偏好設定失敗:WebUI https,檔案:「%1」,錯誤:「%2」 - + Migrated preferences: WebUI https, exported data to file: "%1" 已遷移偏好設定:WebUI https,已匯出資料到檔案:「%1」 - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". 設定檔中有無效的值,將其還原為預設值。鍵:「%1」。無效的值:「%2」。 Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - 偵測到Python,執行檔名稱:「%1」,版本:%2 - - - Python not detected - 未找到Python - Found Python executable. Name: "%1". Version: "%2" @@ -12016,27 +12603,27 @@ Please choose a different name and try again. Utils::IO - + File open error. File: "%1". Error: "%2" - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + File read error. File: "%1". Error: "%2" - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 @@ -12100,72 +12687,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. - + Unacceptable file type, only regular file is allowed. 不接受的檔案類型,僅容許常規檔案。 - + Symlinks inside alternative UI folder are forbidden. 後備Web UI遠端控制資料夾中不准使用符號連結。 - - Using built-in Web UI. - 使用內置Web UI遠端控制。 + + Using built-in WebUI. + - - Using custom Web UI. Location: "%1". - 使用自訂Web UI遠端控制。位置:「%1」。 + + Using custom WebUI. Location: "%1". + - - Web UI translation for selected locale (%1) has been successfully loaded. - 成功載入所選語言(%1)的Web UI遠端控制翻譯。 + + WebUI translation for selected locale (%1) has been successfully loaded. + - - Couldn't load Web UI translation for selected locale (%1). - 無法載入所選語言(%1)的Web UI遠端控制翻譯。 + + Couldn't load WebUI translation for selected locale (%1). + - + Missing ':' separator in WebUI custom HTTP header: "%1" Web UI遠端控制的自訂 HTTP 標頭缺少 ':' 分隔符號:「%1」 - + Web server error. %1 - + Web server error. Unknown error. - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' Web UI遠端控制:來源標頭和目標來源不相符。來源IP:「%1」╱來源標頭:「%2」╱目標來源:「%3」 - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' Web UI遠端控制:參照標頭和目標來源不相符。來源IP:「%1」╱參照標頭:「%2」╱目標來源:「%3」 - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' Web UI遠端控制:無效主機標頭、埠不相符。請求的來源IP:「%1」╱伺服器埠:「%2」╱接收的主機標頭:「%3」 - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' Web UI遠端控制:無效主機標頭。請求的來源IP:「%1」╱接收的主機標頭:「%2」 @@ -12173,143 +12760,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI遠端控制:HTTPS設定成功 + + Credentials are not set + + + + + WebUI: HTTPS setup successful + + + + + WebUI: HTTPS setup failed, fallback to HTTP + - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI遠端控制:HTTPS設定失敗,返回HTTP + + WebUI: Now listening on IP: %1, port: %2 + - - Web UI: Now listening on IP: %1, port: %2 - Web UI遠端控制:正在監聽IP:%1,埠:%2 + + Unable to bind to IP: %1, port: %2. Reason: %3 + + + + fs - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI遠端控制:無法扣連到IP:%1,埠:%2。理由:%3 + + Unknown error + 未知的錯誤 misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second 每秒 - + %1s e.g: 10 seconds - %1分鐘 {1s?} + - + %1m e.g: 10 minutes - %1分鐘 + %1分鐘 - + %1h %2m e.g: 3 hours 5 minutes - %1小時%2分鐘 + %1小時%2分鐘 - + %1d %2h e.g: 2 days 10 hours - %1日%2小時 + %1日%2小時 - + %1y %2d e.g: 2 years 10 days - %1 年 %2 日 - - - %1h %2m - e.g: 3hours 5minutes - %1小時%2分鐘 - - - %1d %2h - e.g: 2days 10hours - %1日%2小時 - - - %1y %2d - e.g: 2years 10days - %1 年 %2 日 + %1 年 %2 日 - - + + Unknown Unknown (size) 未知 - + qBittorrent will shutdown the computer now because all downloads are complete. qBittorrent完成全部下載,即將關機。 - + < 1m < 1 minute 少於1分鐘 - - %1m - e.g: 10minutes - %1分鐘 - diff --git a/src/lang/qbittorrent_zh_TW.ts b/src/lang/qbittorrent_zh_TW.ts index 98b4579144a4..d2a277819007 100644 --- a/src/lang/qbittorrent_zh_TW.ts +++ b/src/lang/qbittorrent_zh_TW.ts @@ -14,87 +14,87 @@ 關於 - + Authors 作者 - + Current maintainer 目前的維護者 - + Greece 希臘 - - + + Nationality: 國籍: - - + + E-mail: 電子郵件: - - + + Name: 姓名: - + Original author 原始作者 - + France 法國 - + Special Thanks 特別感謝 - + Translators 翻譯者 - + License 授權 - + Software Used 使用的軟體 - + qBittorrent was built with the following libraries: qBittorrent 是使用下列函式庫建構: - + Copy to clipboard - + 複製到剪貼簿 An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar. - 一個以 C++ 撰寫,基於 Qt 工具箱和 libtorrent-rasterbar 的進階 BitTorrent 客戶端。 + 一個以 C++ 撰寫,基於 Qt 工具箱和 libtorrent-rasterbar 的進階 BitTorrent 用戶端。 - Copyright %1 2006-2023 The qBittorrent project - Copyright %1 2006-2023 qBittorrent 專案 + Copyright %1 2006-2024 The qBittorrent project + Copyright %1 2006-2024 qBittorrent 專案 @@ -166,14 +166,13 @@ 儲存至 - + Never show again 不要再顯示 - Torrent settings - Torrent 設定 + Torrent 設定 @@ -191,12 +190,12 @@ 開始 torrent - + Torrent information Torrent 資訊 - + Skip hash check 跳過雜湊值檢查 @@ -205,6 +204,11 @@ Use another path for incomplete torrent 使用其他路徑取得不完整的 torrent + + + Torrent options + + Tags: @@ -231,70 +235,75 @@ 停止條件: - - + + None - - + + Metadata received 收到的詮釋資料 - - + + Torrents that have metadata initially will be added as stopped. + 一開始就有詮釋資料的 torrent 將被新增為已停止。 + + + + Files checked 已檢查的檔案 - + Add to top of queue 新增至佇列頂部 - + When checked, the .torrent file will not be deleted regardless of the settings at the "Download" page of the Options dialog 勾選後,無論「選項」對話方塊中的「下載」頁面的設定如何,都不會刪除 .torrent 檔案 - + Content layout: 內容佈局: - + Original 原始 - + Create subfolder 建立子資料夾 - + Don't create subfolder 不要建立子資料夾 - + Info hash v1: 資訊雜湊值 v1: - + Size: 大小: - + Comment: 註解: - + Date: 日期: @@ -324,245 +333,182 @@ 記住最後一次使用的儲存路徑 - + Do not delete .torrent file 不要刪除 .torrent 檔案 - + Download in sequential order 依順序下載 - + Download first and last pieces first 先下載第一和最後一塊 - + Info hash v2: 資訊雜湊值 v2: - + Select All 全選 - + Select None 全不選 - + Save as .torrent file... 另存為 .torrent 檔案… - + I/O Error I/O 錯誤 - Invalid torrent - 無效的 torrent - - - + Not Available This comment is unavailable 無法使用 - + Not Available This date is unavailable 無法使用 - + Not available 無法使用 - Invalid magnet link - 無效的磁力連結 - - - Failed to load the torrent: %1. -Error: %2 - Don't remove the ' -' characters. They insert a newline. - 無法載入 torrent:%1 -錯誤:%2 - - - This magnet link was not recognized - 無法辨識該磁力連結 - - - + Magnet link 磁力連結 - + Retrieving metadata... 正在檢索詮釋資料… - - + + Choose save path 選擇儲存路徑 - Torrent is already present - Torrent 已經存在 - - - Torrent '%1' is already in the transfer list. Trackers haven't been merged because it is a private torrent. - Torrent「%1」已經在傳輸清單中。因為這是私有的 torrent,所以追蹤者無法合併。 - - - Torrent is already queued for processing. - Torrent 已位居正在處理的佇列中。 - - - + No stop condition is set. 未設定停止條件。 - + Torrent will stop after metadata is received. Torrent 將會在收到詮釋資料後停止。 - - Torrents that have metadata initially aren't affected. - 一開始就有詮釋資料的 torrent 則不受影響。 - - - + Torrent will stop after files are initially checked. 最初檢查檔案後,torrent 將會停止。 - + This will also download metadata if it wasn't there initially. 如果一開始不存在,這也會下載詮釋資料。 - - + + N/A N/A - Magnet link is already queued for processing. - 磁力連結已位居正在處理的佇列中。 - - - + %1 (Free space on disk: %2) - %1(硬碟上的可用空間:%2) + %1(磁碟上的可用空間:%2) - + Not available This size is unavailable. 無法使用 - + Torrent file (*%1) Torrent 檔案 (*%1) - + Save as torrent file 另存為 torrent 檔案 - + Couldn't export torrent metadata file '%1'. Reason: %2. 無法匯出 torrent 詮釋資料檔案「%1」。原因:%2。 - + Cannot create v2 torrent until its data is fully downloaded. 在完全下載其資料前無法建立 v2 torrent。 - Cannot download '%1': %2 - 無法下載「%1」:%2 - - - + Filter files... 過濾檔案... - Torrent '%1' is already in the transfer list. Trackers cannot be merged because it is a private torrent. - Torrent「%1」已經在傳輸清單中。因為這是私有的 torrent,所以追蹤者無法合併。 - - - Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent「%1」已經在傳輸清單中。您想合併來自新來源的追蹤者嗎? - - - + Parsing metadata... 正在解析詮釋資料… - + Metadata retrieval complete 詮釋資料檢索完成 - - Failed to load from URL: %1. -Error: %2 - 無法從 URL 載入:%1。 -錯誤:%2 - - - Download Error - 下載錯誤 - AddTorrentManager Downloading torrent... Source: "%1" - + 正在下載 torrent……來源:「%1」 Failed to add torrent. Source: "%1". Reason: "%2" - + 新增 torrent 失敗。來源:「%1」。理由:「%2」 - + Detected an attempt to add a duplicate torrent. Source: %1. Existing torrent: %2. Result: %3 - + 偵測到嘗試新增重複的 torrent。來源:%1。既有的 torrent:%2。結果:%3 - + Merging of trackers is disabled - + 合併 tracker 已停用 - + Trackers cannot be merged because it is a private torrent - + 因為這是私有的 torrent,所以無法合併 tracker - + Trackers are merged from new source - + 已經合併來自新來源的 tracker @@ -648,72 +594,77 @@ Error: %2 略過雜湊值檢查 - - - Choose save path - 選擇儲存路徑 + + Torrent share limits + Torrent 分享限制 - - - - - - - Default - 預設 + + + Choose save path + 選擇儲存路徑 + + + - Yes - + Default + 預設 + Yes + + + + + + No - + Manual 手動 - + Automatic 自動 - + Original 原始 - + Create subfolder 建立子資料夾 - + Don't create subfolder 不要建立子資料夾 - + None - + Metadata received 收到的詮釋資料 - + Files checked 已檢查的檔案 @@ -721,734 +672,852 @@ Error: %2 AdvancedSettings - - - - + + + + MiB MiB - + Recheck torrents on completion 完成後重新檢查 torrent - - + + ms milliseconds ms - + Setting 設定 - + Value Value set for this setting - + (disabled) (已停用) - + (auto) (自動) - + + min minutes 分鐘 - + All addresses 所有位置 - + qBittorrent Section qBittorrent 小節 - - + + Open documentation 開啟文件 - + All IPv4 addresses 所有 IPv4 地址 - + All IPv6 addresses 所有 IPv6 地址 - + libtorrent Section libtorrent 小節 - + Fastresume files 快速復原檔案 - + SQLite database (experimental) SQLite 資料庫(實驗性) - + Resume data storage type (requires restart) 復原資料儲存類型(需要重新啟動) - + Normal 一般 - + Below normal 低於一般 - + Medium 中等 - + Low - + Very low 非常低 - - Process memory priority (Windows >= 8 only) - 處理程序記憶體優先權(僅適用於 Windows 8 或更新版本) - - - + Physical memory (RAM) usage limit 實體記憶體 (RAM) 使用率限制 - + Asynchronous I/O threads 異步 I/O 執行緒 - + Hashing threads 雜湊執行緒 - + File pool size 檔案叢集大小 - + Outstanding memory when checking torrents 檢查 torrent 時的未完成記憶 - + Disk cache - 硬碟快取 + 磁碟快取 - - - - + + + + s seconds s - + Disk cache expiry interval - 硬碟快取到期區間 + 磁碟快取到期區間 - + Disk queue size 磁碟佇列大小 - - + + Enable OS cache 啟用作業系統快取 - + Coalesce reads & writes 合併讀取與寫入 - + Use piece extent affinity 使用片段範圍關聯 - + Send upload piece suggestions 傳送上傳分塊建議 - - - - + + + + + 0 (disabled) 0(停用) - + Save resume data interval [0: disabled] How often the fastresume file is saved. 儲存復原資料區間 [0:停用] - + Outgoing ports (Min) [0: disabled] 連出埠(最小)[0:停用] - + Outgoing ports (Max) [0: disabled] 連出埠(最大)[0:停用] - + 0 (permanent lease) 0(永久租約) - + UPnP lease duration [0: permanent lease] UPnP 租約期限 [0:永久租約] - + Stop tracker timeout [0: disabled] 停止追蹤器逾時 [0:停用] - + Notification timeout [0: infinite, -1: system default] 通知逾時 [0:無限大,-1:系統預設值] - + Maximum outstanding requests to a single peer 對單個 peer 的最多未完成請求 - - - - - + + + + + KiB KiB - + (infinite) (無限大) - + (system default) (系統預設值) - + + Delete files permanently + + + + + Move files to trash (if possible) + + + + + Torrent content removing mode + + + + This option is less effective on Linux 這個選項在 Linux 上沒那麼有效 - + + Process memory priority + 處理程序記憶體優先程度 + + + Bdecode depth limit Bdecode 深度限制 - + Bdecode token limit Bdecode 權杖限制 - + Default 預設 - + Memory mapped files 記憶體對映檔案 - + POSIX-compliant 遵循 POSIX - + + Simple pread/pwrite + + + + Disk IO type (requires restart) - 磁碟 IO 類型 (需要重新啟動) + 磁碟 IO 類型(需要重新啟動): - - + + Disable OS cache 停用作業系統快取 - + Disk IO read mode 磁碟 IO 讀取模式 - + Write-through 連續寫入 - + Disk IO write mode 磁碟 IO 寫入模式 - + Send buffer watermark 傳送緩衝浮水印 - + Send buffer low watermark 傳送緩衝低浮水印 - + Send buffer watermark factor 傳送緩衝浮水印因子 - + Outgoing connections per second 每秒對外連線數 - - + + 0 (system default) 0(系統預設值) - + Socket send buffer size [0: system default] 插座傳送緩衝大小 [0:系統預設值] - + Socket receive buffer size [0: system default] 插座接收緩衝大小 [0:系統預設值] - + Socket backlog size Socket 紀錄檔大小 - + + Save statistics interval [0: disabled] + How often the statistics file is saved. + + + + .torrent file size limit .torrent 檔案大小限制 - + Type of service (ToS) for connections to peers 與 peers 連線的服務類型 (ToS) - + Prefer TCP 偏好 TCP - + Peer proportional (throttles TCP) 下載者比例 (TCP 節流) - + Support internationalized domain name (IDN) 支援國際化域名 (IDN) - + Allow multiple connections from the same IP address 允許從同一個 IP 位置而來的多重連線 - + Validate HTTPS tracker certificates 驗證 HTTPS 追蹤器憑證 - + Server-side request forgery (SSRF) mitigation 伺服器端請求偽造 (SSRF) 緩解 - + Disallow connection to peers on privileged ports 不允許連線到在特權連接埠上的 peer - + + It appends the text to the window title to help distinguish qBittorent instances + 其將文字附加到視窗標題以協助區分 qBittorrent 實體 + + + + Customize application instance name + 自訂應用程式實體名稱 + + + It controls the internal state update interval which in turn will affect UI updates 其控制內部狀態更新間隔,進而影響使用者介面更新 - + Refresh interval 重新整理間隔 - + Resolve peer host names 解析下載者的主機名 - + IP address reported to trackers (requires restart) 向追蹤器回報的 IP 位置(需要重新啟動) - + + Port reported to trackers (requires restart) [0: listening port] + + + + Reannounce to all trackers when IP or port changed 當 IP 或連接埠變更時通知所有追蹤者 - + Enable icons in menus 在選單中啟用圖示 - + Enable port forwarding for embedded tracker - 為嵌入的追蹤者啟用通訊埠轉發 + 為嵌入的追蹤器啟用通訊埠轉送 - - (Auto detect if empty) + + Enable quarantine for downloaded files + 開啟已下載檔案隔離 + + + + Enable Mark-of-the-Web (MOTW) for downloaded files + 啟用已下載檔案的 Mark-of-the-Web (MOTW) + + + + Affects certificate validation and non-torrent protocol activities (e.g. RSS feeds, program updates, torrent files, geoip db, etc) + + + + + Ignore SSL errors - + + (Auto detect if empty) + (若為空則自動偵測) + + + Python executable path (may require restart) + Python 可執行檔路徑(可能需要重新啟動) + + + + Start BitTorrent session in paused state - - Confirm removal of tracker from all torrents + + sec + seconds + + + + + -1 (unlimited) + + + + + BitTorrent session shutdown timeout [-1: unlimited] - + + Confirm removal of tracker from all torrents + 確認從所有 torrent 中移除 tracker + + + Peer turnover disconnect percentage Peer 流動斷線百分比 - + Peer turnover threshold percentage Peer 流動閾值百分比 - + Peer turnover disconnect interval Peer 流動斷線間隔 - + Resets to default if empty - + 若為空,則重設回預設值 - + DHT bootstrap nodes - + DHT 自舉節點 - + I2P inbound quantity I2P 傳入量 - + I2P outbound quantity I2P 傳出量 - + I2P inbound length I2P 傳入長度 - + I2P outbound length I2P 傳出長度 - + Display notifications 顯示通知 - + Display notifications for added torrents 顯示已加入 torrent 的通知 - + Download tracker's favicon 下載追蹤者的 favicon - + Save path history length 儲存路徑歷史長度 - + Enable speed graphs 啟用速率圖 - + Fixed slots 固定通道 - + Upload rate based 上傳速率基於 - + Upload slots behavior 上傳通道行為 - + Round-robin 循環 - + Fastest upload 上傳最快 - + Anti-leech 反蝗族 - + Upload choking algorithm 是否上傳演算法 - + Confirm torrent recheck Torrent 重新檢查確認 - + Confirm removal of all tags 確認移除所有標籤 - + Always announce to all trackers in a tier 總是發佈到同一追蹤者群組內所有的追蹤者 - + Always announce to all tiers 總是發佈到所有追蹤者群組 - + Any interface i.e. Any network interface 任何介面 - + %1-TCP mixed mode algorithm uTP-TCP mixed mode algorithm %1-TCP 混合模式演算法 - + Resolve peer countries 解析 peer 國家 - + Network interface 網路介面 - + Optional IP address to bind to 可選擇繫結的 IP 位址 - + Max concurrent HTTP announces 最大並行 HTTP 宣佈 - + Enable embedded tracker 啟用嵌入追蹤者 - + Embedded tracker port 嵌入追蹤者埠 - Application + AppController - - qBittorrent %1 started - qBittorrent v3.2.0alpha started - qBittorrent %1 已啟動 + + + Invalid directory path + + + + + Directory does not exist + + + + + Invalid mode, allowed values: %1 + - + + cookies must be array + + + + + Application + + Running in portable mode. Auto detected profile folder at: %1 正以可攜模式執行。自動偵測到的設定檔資料夾位於:%1 - + Redundant command line flag detected: "%1". Portable mode implies relative fastresume. 偵測到冗餘的命令列旗標:「%1」。可攜模式代表了相對快速的恢復。 - + Using config directory: %1 正在使用設定目錄:%1 - + Torrent name: %1 Torrent 名稱:%1 - + Torrent size: %1 Torrent 大小:%1 - + Save path: %1 儲存路徑:%1 - + The torrent was downloaded in %1. The torrent was downloaded in 1 hour and 20 seconds Torrent 已於 %1 下載完成。 - + + Thank you for using qBittorrent. 感謝您使用 qBittorrent。 - + Torrent: %1, sending mail notification Torrent:%1,正在傳送郵件通知 - + Add torrent failed - + 新增 torrent 失敗 - + Couldn't add torrent '%1', reason: %2. - + 無法新增 torrent「%1」,理由:%2。 + + + + The WebUI administrator username is: %1 + WebUI 管理員使用者名稱為:%1 - + + The WebUI administrator password was not set. A temporary password is provided for this session: %1 + 未設定 WebUI 管理員密碼。為此工作階段提供了臨時密碼:%1 + + + + You should set your own password in program preferences. + 您應該在程式的偏好設定中設定您自己的密碼。 + + + The WebUI is disabled! To enable the WebUI, edit the config file manually. - + WebUI 已停用!要啟用 WebUI,請手動編輯設定檔。 - + Running external program. Torrent: "%1". Command: `%2` 正在執行外部程式。Torrent:「%1」。指令:「%2」 - + Failed to run external program. Torrent: "%1". Command: `%2` 無法執行外部程式。Torrent:「%1」。命令:`%2` - + Torrent "%1" has finished downloading Torrent「%1」已完成下載 - + WebUI will be started shortly after internal preparations. Please wait... WebUI 將在內部準備後不久啟動。請稍等... - - + + Loading torrents... 正在載入 torrent... - + E&xit 離開 (&X) - + I/O Error i.e: Input/Output Error I/O 錯誤 - + An I/O error occurred for torrent '%1'. Reason: %2 e.g: An error occurred for torrent 'xxx.avi'. @@ -1457,139 +1526,110 @@ Error: %2 原因:「%2」 - Error - 錯誤 - - - Failed to add torrent: %1 - 無法新增 torrent:%1 - - - + Torrent added 已新增 Torrent - + '%1' was added. e.g: xxx.avi was added. 「%1」已新增。 - + Download completed 下載完成 - - '%1' has finished downloading. - e.g: xxx.avi has finished downloading. - 「%1」已下載完畢。 - - - URL download error - URL 下載錯誤 + + qBittorrent %1 started. Process ID: %2 + qBittorrent v3.2.0alpha started + qBittorrent %1 已啟動。處理程序 ID:%2 - Couldn't download file at URL '%1', reason: %2. - 無法從 URL「%1」下載檔案,原因:%2。 + + This is a test email. + - Torrent file association - Torrent 檔案關聯 + + Test email + - qBittorrent is not the default application for opening torrent files or Magnet links. -Do you want to make qBittorrent the default application for these? - qBittorrent 不是開啟 torrent 檔案或磁力連結的預設應用程式。 -您想要讓 qBittorrent 變成這些關聯的預設應用程式嗎? + + '%1' has finished downloading. + e.g: xxx.avi has finished downloading. + 「%1」已下載完畢。 - + Information 資訊 - + To fix the error, you may need to edit the config file manually. - + 要修復錯誤,您可能需要手動編輯設定檔。 - + To control qBittorrent, access the WebUI at: %1 要控制 qBittorrent,請從 %1 造訪 WebUI - - The Web UI administrator username is: %1 - Web UI 的管理員使用者名稱為:%1 - - - - The Web UI administrator password has not been changed from the default: %1 - Web UI 的管理員密碼尚未自預設值變更:%1 - - - - This is a security risk, please change your password in program preferences. - 此為安全性風險,請在程式的偏好設定中變更您的密碼。 - - - Application failed to start. - 無法啟動程式。 - - - + Exit 離開 - + Recursive download confirmation - 遞迴下載確認 + 遞迴下載確認 - + The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent「%1」包含 .torrent 檔案,您想要執行下載作業嗎? + Torrent「%1」包含 .torrent 檔案,您想要執行下載作業嗎? - + Never - 永不 + 永不 - + Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 在 torrent 中遞迴下載 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」 + 在 torrent 中遞迴下載 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」 - + Failed to set physical memory (RAM) usage limit. Error code: %1. Error message: "%2" 無法設定實體記憶體使用率限制。錯誤代碼:%1。錯誤訊息:「%2」 - + Failed to set physical memory (RAM) usage hard limit. Requested size: %1. System hard limit: %2. Error code: %3. Error message: "%4" 設定實體記憶體 (RAM) 硬性使用量限制失敗。請求大小:%1。系統硬性限制:%2。錯誤代碼:%3。錯誤訊息:「%4」 - + qBittorrent termination initiated qBittorrent 中止操作 - + qBittorrent is shutting down... qBittorrent 正在關閉…… - + Saving torrent progress... 正在儲存 torrent 進度… - + qBittorrent is now ready to exit qBittorrent 已準備好關閉 @@ -1597,7 +1637,7 @@ Do you want to make qBittorrent the default application for these? AsyncFileStorage - + Could not create directory '%1'. 無法建立目錄「%1」。 @@ -1605,22 +1645,22 @@ Do you want to make qBittorrent the default application for these? AuthController - + WebAPI login failure. Reason: IP has been banned, IP: %1, username: %2 WebAPI 登入失敗。原因:IP 已被封鎖,IP:%1,使用者名稱:%2 - + Your IP address has been banned after too many failed authentication attempts. 因為多次驗證失敗,您的 IP 位址已經被封鎖。 - + WebAPI login success. IP: %1 WebAPI 登入成功。IP:%1 - + WebAPI login failure. Reason: invalid credentials, attempt count: %1, IP: %2, username: %3 WebAPI 登入失敗。原因:無效的憑證,嘗試次數:%1,IP:%2,使用者名稱:%3 @@ -1668,12 +1708,12 @@ Do you want to make qBittorrent the default application for these? 優先程度: - + Must Not Contain: 必須不包含: - + Episode Filter: 章節過濾器: @@ -1726,263 +1766,263 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 匯出… (&E) - + Matches articles based on episode filter. 基於章節過濾器的符合文章。 - + Example: 範例: - + will match 2, 5, 8 through 15, 30 and onward episodes of season one example X will match 符合第1季的第 2、第 5、第 8 到 15,以及第 30 集和之後章節 - + Episode filter rules: 章節過濾器原則: - + Season number is a mandatory non-zero value 季的數字為一強制非零的值 - + Filter must end with semicolon 過濾器必須以分號作結尾 - + Three range types for episodes are supported: 支援三種範圍類型的過濾器: - + Single number: <b>1x25;</b> matches episode 25 of season one 單一數字:<b>1x25;</b> 表示第 1 季的第 25 集 - + Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one 一般範圍:<b>1x25-40;</b> 表示第 1 季的第 25 到 40 集 - + Episode number is a mandatory positive value 章節的數字為一強制正值 - + Rules 規則 - + Rules (legacy) 規則 (舊版) - + Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons 無限範圍:<b>1x25-;</b> 表示第 1 季的第 25 集和之後章節,以及後面季度的所有章節 - + Last Match: %1 days ago 最後符合:%1 天前 - + Last Match: Unknown 最後符合:未知 - + New rule name 新原則名稱 - + Please type the name of the new download rule. 請輸入新下載原則的名稱。 - - + + Rule name conflict 原則名稱衝突 - - + + A rule with this name already exists, please choose another name. 已有這原則名稱,請選擇另一個名稱。 - + Are you sure you want to remove the download rule named '%1'? 您確定要移除已下載的原則「%1」嗎? - + Are you sure you want to remove the selected download rules? 您確定要移除選取的下載規則嗎? - + Rule deletion confirmation 原則刪除確認 - + Invalid action 無效的動作 - + The list is empty, there is nothing to export. 這個清單是空白的,沒有東西可以匯出。 - + Export RSS rules 匯出 RSS 規則 - + I/O Error I/O 錯誤 - + Failed to create the destination file. Reason: %1 無法建立目標檔案。原因:%1 - + Import RSS rules 匯入 RSS 規則 - + Failed to import the selected rules file. Reason: %1 無法匯入指定的規則檔案。原因:%1 - + Add new rule... 增加新原則… - + Delete rule 刪除原則 - + Rename rule... 重新命名原則… - + Delete selected rules 刪除選取的規則 - + Clear downloaded episodes... 清除已下載的章節… - + Rule renaming 重新命名原則 - + Please type the new rule name 請輸入新原則的名稱 - + Clear downloaded episodes 清除已下載的章節 - + Are you sure you want to clear the list of downloaded episodes for the selected rule? 您確定要清除選取規則的已下載章節清單嗎? - + Regex mode: use Perl-compatible regular expressions 正規表示法模式:使用相容於 Perl 的正規表示法 - - + + Position %1: %2 位置 %1:%2 - + Wildcard mode: you can use 萬用字元模式:您可以使用 - - + + Import error 匯入錯誤 - + Failed to read the file. %1 讀取檔案失敗。%1 - + ? to match any single character ? 可配對為任何單一字元 - + * to match zero or more of any characters * 可配對為零個或更多個任意字元 - + Whitespaces count as AND operators (all words, any order) 空格會以 AND 運算子來計算(所有文字、任意順序) - + | is used as OR operator | 則作為 OR 運算子使用 - + If word order is important use * instead of whitespace. 若文字順序很重要請使用 * 而非空格。 - + An expression with an empty %1 clause (e.g. %2) We talk about regex/wildcards in the RSS filters section here. So a valid sentence would be: An expression with an empty | clause (e.g. expr|) 帶有空白 %1 子句的表達式 (例如 %2) - + will match all articles. 將會配對所有文章。 - + will exclude all articles. 將會排除所有文章。 @@ -2024,53 +2064,58 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::BencodeResumeDataStorage - + Cannot create torrent resume folder: "%1" 無法建立 torrent 復原資料夾:「%1」 - + Cannot parse resume data: invalid format 無法解析還原資料:無效格式 - - + + Cannot parse torrent info: %1 無法解析 torrent 資訊:%1 - + Cannot parse torrent info: invalid format 無法解析 torrent 資訊:無效格式 - + + Mismatching info-hash detected in resume data + 在還原資料中偵測到不相符的資訊雜湊值 + + + Couldn't save torrent metadata to '%1'. Error: %2. 無法儲存 torrent 詮釋資料至「%1」。錯誤:%2。 - + Couldn't save torrent resume data to '%1'. Error: %2. 無法儲存 torrent 復原資料至「%1」。錯誤:%2。 - + Couldn't load torrents queue: %1 無法載入 torrent 佇列:%1 - + Cannot parse resume data: %1 無法解析還原資料:%1 - + Resume data is invalid: neither metadata nor info-hash was found 還原資料無效:找不到詮釋資料與資訊雜湊值 - + Couldn't save data to '%1'. Error: %2 無法儲存資料至「%1」。錯誤:%2 @@ -2078,38 +2123,38 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::DBResumeDataStorage - + Not found. 找不到 - + Couldn't load resume data of torrent '%1'. Error: %2 無法載入 torrent「%1」的復原資料。錯誤:%2 - - + + Database is corrupted. 資料庫毀損。 - + Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1. 無法啟用預寫紀錄 (WAL) 日誌模式。錯誤:%1。 - + Couldn't obtain query result. 無法取得查詢結果。 - + WAL mode is probably unsupported due to filesystem limitations. 因為檔案系統限制,可能不支援 WAL 模式。 - + Couldn't begin transaction. Error: %1 無法開始交易。錯誤:%1 @@ -2117,22 +2162,22 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::ResumeDataStorage - + Couldn't save torrent metadata. Error: %1. 無法儲存 torrent 詮釋資料。錯誤:%1。 - + Couldn't store resume data for torrent '%1'. Error: %2 無法儲存 torrent「%1」的復原資料。錯誤:%2 - + Couldn't delete resume data of torrent '%1'. Error: %2 無法刪除 torrent「%1」的復原資料。錯誤:%2 - + Couldn't store torrents queue positions. Error: %1 無法儲存 torrent 的佇列位置。錯誤:%1 @@ -2140,586 +2185,620 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also BitTorrent::SessionImpl - - + + Distributed Hash Table (DHT) support: %1 分散式雜湊表 (DHT) 支援:%1 - - - - - - - - - + + + + + + + + + ON 開啟 - - - - - - - - - + + + + + + + + + OFF 關閉 - - + + Local Peer Discovery support: %1 區域 Peer 探索支援:%1 - + Restart is required to toggle Peer Exchange (PeX) support 切換 Peer 交換 (PeX) 支援必須重新啟動 - + Failed to resume torrent. Torrent: "%1". Reason: "%2" 無法繼續 torrent。Torrent:「%1」。原因:「%2」 - - + + Failed to resume torrent: inconsistent torrent ID is detected. Torrent: "%1" 無法繼續 torrent:偵測到不一致的 torrent ID。Torrent:「%1」 - + Detected inconsistent data: category is missing from the configuration file. Category will be recovered but its settings will be reset to default. Torrent: "%1". Category: "%2" 偵測到不一致的資料:設定檔中缺少分類。分類將會被還原,但其設定將會重設回預設值。Torrent:「%1」。分類:「%2」 - + Detected inconsistent data: invalid category. Torrent: "%1". Category: "%2" 偵測到不一致的資料:無效分類。Torrent:「%1」。分類:「%2」 - + Detected mismatch between the save paths of the recovered category and the current save path of the torrent. Torrent is now switched to Manual mode. Torrent: "%1". Category: "%2" 偵測到還原分類的儲存路徑與目前 torrent 的儲存路徑不相符。Torrent 目前已切換至手動模式。Torrent:「%1」。分類:「%2」 - + Detected inconsistent data: tag is missing from the configuration file. Tag will be recovered. Torrent: "%1". Tag: "%2" 偵測到不一致的資料:設定檔中缺少標籤。標籤將會被還原。Torrent:「%1」。標籤:「%2」 - + Detected inconsistent data: invalid tag. Torrent: "%1". Tag: "%2" 偵測到不一致的資料:無效標籤。Torrent:「%1」。標籤:「%2」 - + System wake-up event detected. Re-announcing to all the trackers... 偵測到系統喚醒事件。正重新向所有 tracker 廣播…… - + Peer ID: "%1" Peer ID:「%1」 - + HTTP User-Agent: "%1" HTTP 使用者代理字串:「%1」 - + Peer Exchange (PeX) support: %1 Peer 交換 (PeX) 支援:%1 - - + + Anonymous mode: %1 匿名模式:%1 - - + + Encryption support: %1 加密支援:%1 - - + + FORCED 強制 - + Could not find GUID of network interface. Interface: "%1" 找不到網路介面的 GUID。介面:「%1」 - + Trying to listen on the following list of IP addresses: "%1" 正在嘗試監聽以下 IP 位置清單:「%1」 - + Torrent reached the share ratio limit. Torrent 達到了分享比例限制。 - - - + Torrent: "%1". Torrent:「%1」。 - - - Removed torrent. - 已移除 torrent。 + 已移除 torrent。 - - - Removed torrent and deleted its content. - 已移除 torrent 並刪除其內容。 + 已移除 torrent 並刪除其內容。 - - - Torrent paused. - Torent 已暫停。 + Torent 已暫停。 - - - + Super seeding enabled. 超級種子已啟用。 - + Torrent reached the seeding time limit. Torrent 達到了種子時間限制。 - + Torrent reached the inactive seeding time limit. Torrent 已達到不活躍種子時間限制。 - + Failed to load torrent. Reason: "%1" 無法載入 torrent。原因:「%1」 - + I2P error. Message: "%1". + I2P 錯誤。訊息:「%1」。 + + + + UPnP/NAT-PMP support: ON + UPnP/NAT-PMP 支援:開啟 + + + + Saving resume data completed. - Downloading torrent, please wait... Source: "%1" - 正在下載 torrent,請稍候... 來源:「%1」 + + BitTorrent session successfully finished. + - Failed to load torrent. Source: "%1". Reason: "%2" - 無法載入 torrent。來源:「%1」。原因:「%2」 + + Session shutdown timed out. + - Detected an attempt to add a duplicate torrent. Merging of trackers is disabled. Torrent: %1 - 偵測到新增重複 torrent 的嘗試。停用了從新來源合併 tracker。Torrent:%1 + + Removing torrent. + - Detected an attempt to add a duplicate torrent. Trackers cannot be merged because it is a private torrent. Torrent: %1 - 偵測到新增重複 torrent 的嘗試。無法合併 tracker,因為其是私有 torrent。Torrent:%1 + + Removing torrent and deleting its content. + - Detected an attempt to add a duplicate torrent. Trackers are merged from new source. Torrent: %1 - 偵測到新增重複 torrent 的嘗試。從新來源合併了 tracker。Torrent:%1 + + Torrent stopped. + - - UPnP/NAT-PMP support: ON - UPnP/NAT-PMP 支援:開啟 + + Torrent content removed. Torrent: "%1" + - - UPnP/NAT-PMP support: OFF - UPnP/NAT-PMP 支援:關閉 + + Failed to remove torrent content. Torrent: "%1". Error: "%2" + - - Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" - 無法匯出 torrent。Torrent:「%1」。目標:「%2」。原因:「%3」 + + Torrent removed. Torrent: "%1" + - - Aborted saving resume data. Number of outstanding torrents: %1 - 中止儲存還原資料。未完成的 torrent 數量:%1 + + + + Detected an attempt to add a duplicate torrent. Existing torrent: %1. Result: %2 + + + + + Merging of trackers is disabled + 合併 tracker 已停用 + + + + Trackers cannot be merged because it is a private torrent + 因為這是私有的 torrent,所以無法合併 tracker - System network status changed to %1 - e.g: System network status changed to ONLINE - 系統的網路狀態變更為 %1 + + Trackers are merged from new source + 已經合併來自新來源的 tracker - ONLINE - 上線 + + UPnP/NAT-PMP support: OFF + UPnP/NAT-PMP 支援:關閉 - OFFLINE - 離線 + + Failed to export torrent. Torrent: "%1". Destination: "%2". Reason: "%3" + 無法匯出 torrent。Torrent:「%1」。目標:「%2」。原因:「%3」 - Network configuration of %1 has changed, refreshing session binding - e.g: Network configuration of tun0 has changed, refreshing session binding - %1 的網路設定已變更,正在重新整理工作階段繫結 + + Aborted saving resume data. Number of outstanding torrents: %1 + 中止儲存還原資料。未完成的 torrent 數量:%1 - + The configured network address is invalid. Address: "%1" 已設定的網路地址無效。地址:「%1」 - - + + Failed to find the configured network address to listen on. Address: "%1" 找不到指定監聽的網路位址。位址:「%1」 - + The configured network interface is invalid. Interface: "%1" 已設定的網路介面無效。介面:「%1」 - + + Tracker list updated + + + + + Failed to update tracker list. Reason: "%1" + + + + Rejected invalid IP address while applying the list of banned IP addresses. IP: "%1" 套用封鎖 IP 位置清單時拒絕無效的 IP 位置。IP:「%1」 - + Added tracker to torrent. Torrent: "%1". Tracker: "%2" 已新增追蹤器至 torrent。Torrent:「%1」。追蹤器:「%2」 - + Removed tracker from torrent. Torrent: "%1". Tracker: "%2" 已從 torrent 移除追蹤器。Torrent:「%1」。追蹤器:「%2」 - + Added URL seed to torrent. Torrent: "%1". URL: "%2" 已新增 URL 種子到 torrent。Torrent:「%1」。URL:「%2」 - + Removed URL seed from torrent. Torrent: "%1". URL: "%2" 已從 torrent 移除 URL 種子。Torrent:「%1」。URL:「%2」 - + + Failed to remove partfile. Torrent: "%1". Reason: "%2". + + + Torrent paused. Torrent: "%1" - Torrent 已暫停。Torrent:「%1」 + Torrent 已暫停。Torrent:「%1」 - + Torrent resumed. Torrent: "%1" Torrent 已復原。Torrent:「%1」 - + Torrent download finished. Torrent: "%1" Torrent 下載完成。Torrent:「%1」 - + Torrent move canceled. Torrent: "%1". Source: "%2". Destination: "%3" 已取消移動 torrent。Torrent:「%1」。來源:「%2」。目標:「%3」 - + + Torrent stopped. Torrent: "%1" + + + + Failed to enqueue torrent move. Torrent: "%1". Source: "%2". Destination: "%3". Reason: torrent is currently moving to the destination 無法將 torrent 加入移動佇列。Torrent:「%1」。來源:「%2」。目標:「%3」。原因:torrent 目前正在移動至目標資料夾 - + Failed to enqueue torrent move. Torrent: "%1". Source: "%2" Destination: "%3". Reason: both paths point to the same location 無法將 torrent 移動加入佇列。Torrent:「%1」。來源:「%2」。目標:「%3」。原因:兩個路徑均指向相同的位置 - + Enqueued torrent move. Torrent: "%1". Source: "%2". Destination: "%3" 已將 torrent 移動加入佇列。Torrent:「%1」。來源:「%2」。目標:「%3」 - + Start moving torrent. Torrent: "%1". Destination: "%2" 開始移動 torrent。Torrent:「%1」。目標:「%2」 - + Failed to save Categories configuration. File: "%1". Error: "%2" 無法儲存分類設定。檔案:「%1」。錯誤:「%2」 - + Failed to parse Categories configuration. File: "%1". Error: "%2" 無法解析分類設定。檔案:「%1」。錯誤:「%2」 - Recursive download .torrent file within torrent. Source torrent: "%1". File: "%2" - 在 torrent 中遞迴下載 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」 - - - Failed to load .torrent file within torrent. Source torrent: "%1". File: "%2". Error: "%3" - 無法在 torrent 中載入 .torrent 檔案。來源 torrent:「%1」。檔案:「%2」。錯誤:「%3」 - - - + Successfully parsed the IP filter file. Number of rules applied: %1 成功解析 IP 過濾條件檔案。套用的規則數量:%1 - + Failed to parse the IP filter file 無法解析 IP 過濾條件檔案 - + Restored torrent. Torrent: "%1" 已還原 torrent。Torrent:「%1」 - + Added new torrent. Torrent: "%1" 已新增新的 torrent。Torrent:「%1」 - + Torrent errored. Torrent: "%1". Error: "%2" Torrent 錯誤。Torrent:「%1」。錯誤:「%2」 - - Removed torrent. Torrent: "%1" - 已移除 torrent。Torrent:「%1」 + 已移除 torrent。Torrent:「%1」 - Removed torrent and deleted its content. Torrent: "%1" - 已移除 torrent 並刪除其內容。Torrent:「%1」 + 已移除 torrent 並刪除其內容。Torrent:「%1」 + + + + Torrent is missing SSL parameters. Torrent: "%1". Message: "%2" + Torrent 缺少 SSL 參數。Torretn:「%1」。訊息:「%2」 - + File error alert. Torrent: "%1". File: "%2". Reason: "%3" 檔案錯誤警告。Torrent:「%1」。檔案:「%2」。原因:「%3」 - + UPnP/NAT-PMP port mapping failed. Message: "%1" UPnP/NAT-PMP 連接埠對映失敗。訊息:「%1」 - + UPnP/NAT-PMP port mapping succeeded. Message: "%1" UPnP/NAT-PMP 連接埠對映成功。訊息:「%1」 - + IP filter this peer was blocked. Reason: IP filter. IP 過濾 - + filtered port (%1) this peer was blocked. Reason: filtered port (8899). 已過濾的連接埠 (%1) - + privileged port (%1) this peer was blocked. Reason: privileged port (80). 特權連接埠 (%1) - - BitTorrent session encountered a serious error. Reason: "%1" + + URL seed connection failed. Torrent: "%1". URL: "%2". Error: "%3" - + + BitTorrent session encountered a serious error. Reason: "%1" + BitTorrent 工作階段遇到嚴重錯誤。理由:「%1」 + + + SOCKS5 proxy error. Address: %1. Message: "%2". SOCKS5 代理伺服器錯誤。地址:%1。訊息:「%2」。 - + %1 mixed mode restrictions this peer was blocked. Reason: I2P mixed mode restrictions. %1 混合模式限制 - + Failed to load Categories. %1 載入分類失敗。%1 - + Failed to load Categories configuration. File: "%1". Error: "Invalid data format" 載入分類設定失敗。檔案:「%1」。錯誤:「無效的資料格式」 - Removed torrent but failed to delete its content and/or partfile. Torrent: "%1". Error: "%2" - 已移除 torrent 但刪除其內容及/或部份檔案失敗。Torrent:「%1」。錯誤:「%2」 + 已移除 torrent 但刪除其內容及/或部份檔案失敗。Torrent:「%1」。錯誤:「%2」 - + %1 is disabled this peer was blocked. Reason: uTP is disabled. %1 已停用 - + %1 is disabled this peer was blocked. Reason: TCP is disabled. %1 已停用 - URL seed DNS lookup failed. Torrent: "%1". URL: "%2". Error: "%3" - URL 種子 DNS 查詢失敗。Torrent:「%1」。URL:「%2」。錯誤:「%3」 + URL 種子 DNS 查詢失敗。Torrent:「%1」。URL:「%2」。錯誤:「%3」 - + Received error message from URL seed. Torrent: "%1". URL: "%2". Message: "%3" 從 URL 種子收到錯誤訊息。Torrent:「%1」。URL:「%2」。訊息:「%3」 - + Successfully listening on IP. IP: "%1". Port: "%2/%3" 成功監聽 IP。IP:「%1」。連接埠:「%2/%3」 - + Failed to listen on IP. IP: "%1". Port: "%2/%3". Reason: "%4" 無法監聽該 IP 位址。IP:「%1」。連接埠:「%2/%3」。原因:「%4」 - + Detected external IP. IP: "%1" 偵測到外部 IP。IP:「%1」 - + Error: Internal alert queue is full and alerts are dropped, you might see degraded performance. Dropped alert type: "%1". Message: "%2" 錯誤:內部警告佇列已滿,警告已被丟棄,您可能會發現效能變差。被丟棄的警告類型:「%1」。訊息:「%2」 - + Moved torrent successfully. Torrent: "%1". Destination: "%2" 已成功移動 torrent。Torrent:「%1」。目標:「%2」 - + Failed to move torrent. Torrent: "%1". Source: "%2". Destination: "%3". Reason: "%4" 無法移動 torrent。Torrent:「%1」。來源:「%2」。目標:「%3」。原因:「%4」 - BitTorrent::TorrentCreator - - - Operation aborted - 放棄動作 - + BitTorrent::TorrentCreationTask - - - Create new torrent file failed. Reason: %1. - 無法建立新的 torrent 檔案。原因:%1。 + + Failed to start seeding. + 無法開始做種。 - BitTorrent::TorrentCreatorThread + BitTorrent::TorrentCreator + Operation aborted - 放棄動作 + 放棄動作 + + Create new torrent file failed. Reason: %1. - 無法建立新的 torrent 檔案。原因:%1。 + 無法建立新的 torrent 檔案。原因:%1。 BitTorrent::TorrentImpl - + Failed to add peer "%1" to torrent "%2". Reason: %3 無法新增 peer「%1」到 torrent「%2」。原因:%3 - + Peer "%1" is added to torrent "%2" Peer「%1」新增至 torrent「%2」 - + Unexpected data detected. Torrent: %1. Data: total_wanted=%2 total_wanted_done=%3. 偵測到異常資料。Torrent:%1。資料:total_wanted=%2 total_wanted_done=%3。 - + Couldn't write to file. Reason: "%1". Torrent is now in "upload only" mode. 無法寫入檔案。原因:「%1」。Torrent 目前為「僅上傳」模式。 - + Download first and last piece first: %1, torrent: '%2' 先下載第一及最後一塊:%1,torrent:「%2」 - + On 開啟 - + Off 關閉 - + + Failed to reload torrent. Torrent: %1. Reason: %2 + 重新載入 torrent 失敗。Torrent:%1。理由:%2 + + + Generate resume data failed. Torrent: "%1". Reason: "%2" 無法產生復原資料。Torrent:「%1」。原因:「%2」 - + Failed to restore torrent. Files were probably moved or storage isn't accessible. Torrent: "%1". Reason: "%2" 無法還原 torrent。檔案可能已被移動或儲存空間無法存取。Torrent:「%1」。原因:「%2」 - + Missing metadata 缺少詮釋資料 - + File rename failed. Torrent: "%1", file: "%2", reason: "%3" 無法重新命名檔案。Torrent:「%1」,檔案:「%2」,原因:「%3」 - + Performance alert: %1. More info: %2 效能警告:%1。更多資訊:%2 @@ -2740,184 +2819,198 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CMD Options - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=value' 參數「%1」必須使用語法「%1=%2」 - + Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>' 參數「%1」必須使用語法「%1=%2」 - + Expected integer number in environment variable '%1', but got '%2' 預期環境變數「%1」為整數,但得到的是「%2」 - Parameter '%1' must follow syntax '%1=%2' e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>' - 參數「%1」必須使用語法「%1=%2」 + 參數「%1」必須使用語法「%1=%2」 - + Expected %1 in environment variable '%2', but got '%3' 預期環境變數「%2」為 %1 ,但得到的是「%3」 - - + + %1 must specify a valid port (1 to 65535). %1 必須指定有效的埠 (1 到 65535)。 - + Usage: 使用: - + [options] [(<filename> | <url>)...] [選項] [(<filename> | <url>)...] - + Options: 選項: - + Display program version and exit 顯示程式版本並結束 - + Display this help message and exit 顯示這說明訊息並結束 - - + + Parameter '%1' must follow syntax '%1=%2' + e.g. Parameter '--add-stopped' must follow syntax '--add-stopped=<true|false>' + 參數「%1」必須使用語法「%1=%2」 + + + + Confirm the legal notice + 確認法律聲明 + + + + port - - Change the Web UI port - 變更 Web UI 埠 + + Change the WebUI port + 變更 WebUI 連接埠 - + Change the torrenting port 變更 torrenting 連接埠 - + Disable splash screen 停用起始畫面 - + Run in daemon-mode (background) 以守護模式開啟 (背景執行) - + dir Use appropriate short form or abbreviation of "directory" 目錄 - + Store configuration files in <dir> 儲存設定檔到 <dir> - - + + name 名稱 - + Store configuration files in directories qBittorrent_<name> 儲存設定檔到目錄 qBittorrent_<name> - + Hack into libtorrent fastresume files and make file paths relative to the profile directory 強制修改 libtorrent 快速復原檔案,並設定檔案路徑為設定檔目錄的相對路徑 - + files or URLs 檔案或 URL - + Download the torrents passed by the user 下載由使用者傳遞的 torrent - + Options when adding new torrents: 當新增 torrent 時的選項: - + path 路徑 - + Torrent save path Torrent 儲存路徑 - + + Add torrents as running or stopped + + + Add torrents as started or paused - 新增 torrent 為已開始或已暫停 + 新增 torrent 為已開始或已暫停 - + Skip hash check 略過雜湊值檢查 - + Assign torrents to category. If the category doesn't exist, it will be created. 指派 torrent 到分類。若分類不存在,其將會被建立。 - + Download files in sequential order 依順序下載檔案 - + Download first and last pieces first 先下載第一和最後一塊 - + Specify whether the "Add New Torrent" dialog opens when adding a torrent. 指定是否要在新增 torrent 時開啟「新增 torrent」對話框。 - + Option values may be supplied via environment variables. For option named 'parameter-name', environment variable name is 'QBT_PARAMETER_NAME' (in upper case, '-' replaced with '_'). To pass flag values, set the variable to '1' or 'TRUE'. For example, to disable the splash screen: 選項的值可以透過環境變數提供。選項名為「parameter-name」時,環境變數將會名為「QBT_PARAMETER_NAME」(全大寫,並以「_」替代「-」)。要傳遞旗標值,設定變數為「1」或「TRUE」。舉例來說,要「停用起始畫面」就是: - + Command line parameters take precedence over environment variables 命令列的參數優先於環境變數 - + Help 說明 @@ -2925,17 +3018,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CategoryFilterModel - + Categories 分類 - + All 所有 - + Uncategorized 未分類 @@ -2969,13 +3062,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also - Resume torrents - 繼續 torrent + Start torrents + + Stop torrents + + + + Resume torrents + 繼續 torrent + + Pause torrents - 暫停 torrent + 暫停 torrent @@ -2986,15 +3087,20 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also ColorWidget - + Edit... 編輯…… - + Reset 重設 + + + System + + CookiesDialog @@ -3035,12 +3141,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also CustomThemeSource - + Failed to load custom theme style sheet. %1 載入自訂佈景主題樣式表失敗。%1 - + Failed to load custom theme colors. %1 載入自訂佈景主題色彩。%1 @@ -3048,7 +3154,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also DefaultThemeSource - + Failed to load default theme colors. %1 載入預設佈景主題色彩失敗。%1 @@ -3067,23 +3173,27 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also + Also remove the content files + + + Also permanently delete the files - 同時永久刪除檔案 + 同時永久刪除檔案 - + Are you sure you want to remove '%1' from the transfer list? Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list? 確定要從傳輸清單移除「%1」? - + Are you sure you want to remove these %1 torrents from the transfer list? Are you sure you want to remove these 5 torrents from the transfer list? 您確定要移除在傳輸清單中的這 %1 個 torrent 嗎? - + Remove 移除 @@ -3096,12 +3206,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 從 URL 下載 - + Add torrent links 增加 torrent 連結 - + One link per line (HTTP links, Magnet links and info-hashes are supported) 每行一連結 (HTTP 連結、磁力連結及資訊雜湊值皆支援) @@ -3111,12 +3221,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 下載 - + No URL entered 沒有輸入 URL - + Please type at least one URL. 請輸入至少一個 URL。 @@ -3275,64 +3385,91 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also 解析錯誤:過濾器檔案不是有效的 PeerGuardian P2B 檔案。 + + FilterPatternFormatMenu + + + Pattern Format + + + + + Plain text + + + + + Wildcards + + + + + Regular expression + + + GUIAddTorrentManager - + Downloading torrent... Source: "%1" - + 正在下載 torrent……來源:「%1」 - Trackers cannot be merged because it is a private torrent - + 因為這是私有的 torrent,所以無法合併 tracker - + Torrent is already present - Torrent 已經存在 + Torrent 已經存在 + + + + Trackers cannot be merged because it is a private torrent. + - + Torrent '%1' is already in the transfer list. Do you want to merge trackers from new source? - Torrent「%1」已經在傳輸清單中。您想合併來自新來源的追蹤者嗎? + Torrent「%1」已經在傳輸清單中。您想合併來自新來源的追蹤者嗎? GeoIPDatabase - - + + Unsupported database file size. 不支援的資料庫檔案大小。 - + Metadata error: '%1' entry not found. 詮釋資料錯誤:找不到「%1」項目。 - + Metadata error: '%1' entry has invalid type. 詮釋資料錯誤:「%1」項目有無效的類型。 - + Unsupported database version: %1.%2 不支援的資料庫版本:%1.%2 - + Unsupported IP version: %1 不支援的 IP 版本:%1 - + Unsupported record size: %1 不支援的記錄大小:%1 - + Database corrupted: no data section found. 資料庫毀損:找不到資料項目。 @@ -3340,17 +3477,17 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Http::Connection - + Http request size exceeds limitation, closing socket. Limit: %1, IP: %2 HTTP 請求超過數量上限,正在關閉網路插座。限制:%1,IP:%2 - + Bad Http request method, closing socket. IP: %1. Method: "%2" 不正確的 HTTP 請求方法,正在關閉網路插座。IP:%1。方法:「%2」 - + Bad Http request, closing socket. IP: %1 不正確的 HTTP 請求,正在關閉網路插座。IP:%1 @@ -3391,36 +3528,64 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also IconWidget - + Browse... 瀏覽… - + Reset 重設 - + Select icon 選取圖示 - + Supported image files 支援的影像檔案 + + LegalNotice + + + Legal Notice + 法律聲明 + + + + qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. + qBittorrent 是檔案分享程式。當您執行 torrent 時,它的資料將會透過上傳的方式分享給其他人。您分享任何內容都必須自行負責。 + + + + No further notices will be issued. + 不會有進一步的通知。 + + + + If you have read the legal notice, you can use command line option `--confirm-legal-notice` to suppress this message. + 若您已閱讀法律聲明,您可以使用命令列選項 `--confirm-legal-notice` 來抑制此訊息。 + + + + Press 'Enter' key to continue... + 按「Enter」鍵以繼續…… + + LogPeerModel - + %1 was blocked. Reason: %2. 0.0.0.0 was blocked. Reason: reason for blocking. %1 已被封鎖。原因:%2。 - + %1 was banned 0.0.0.0 was banned %1 被封鎖 @@ -3429,91 +3594,62 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also Main - + %1 is an unknown command line parameter. --random-parameter is an unknown command line parameter. %1 是未知的命令列參數。 - - + + %1 must be the single command line parameter. %1 必須是單一個命令列參數。 - - You cannot use %1: qBittorrent is already running for this user. - 您不能使用 %1:qBittorrent 已經由這使用者執行。 - - - + Run application with -h option to read about command line parameters. 以 -h 選項執行應用程式以閱讀關於命令列參數的資訊。 - + Bad command line 不正確的命令列 - + Bad command line: 不正確的命令列: - + An unrecoverable error occurred. - + 發生無法還原的錯誤。 - - + + qBittorrent has encountered an unrecoverable error. - - - - - Legal Notice - 法律聲明 - - - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - qBittorrent 是檔案分享程式。當您執行 torrent 時,它的資料將會透過上傳的方式分享給其他人。您分享任何內容都必須自行負責。 - - - - No further notices will be issued. - 不會有進一步的通知。 - - - - Press %1 key to accept and continue... - 請按 %1 來接受並繼續… + qBittorrent 遇到無法還原的錯誤。 - - qBittorrent is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility. - -No further notices will be issued. - qBittorrent 是檔案分享程式。當您執行 torrent 時,它的資料將會透過上傳的方式分享給其他人。您分享任何內容都必須自行負責。 - -不會有進一步的通知。 + + You cannot use %1: qBittorrent is already running. + 您無法使用 %1:qBittorent 正在執行。 - - Legal notice - 法律聲明 + + Another qBittorrent instance is already running. + 已有其他 qBittorrent 實體正在執行。 - - Cancel - 取消 + + Found unexpected qBittorrent instance. Exiting this instance. Current process ID: %1. + 找到預料之外的 qBittorrent 實體。正在結束此實體。目前處理程序 ID:%1。 - - I Agree - 我同意 + + Error when daemonizing. Reason: "%1". Error code: %2. + 幕後處理程序化時發生錯誤。理由:「%1」。錯誤碼:%2。 @@ -3524,621 +3660,706 @@ No further notices will be issued. 編輯 (&E) - + &Tools 工具 (&T) - + &File 檔案 (&F) - + &Help 說明 (&H) - + On Downloads &Done 當下載完成 (&D) - + &View 檢視 (&V) - + &Options... 選項… (&O) - &Resume - 繼續 (&R) + 繼續 (&R) - + &Remove 移除(&R) - + Torrent &Creator Torrent 製作器 (&C) - - + + Alternative Speed Limits 替補速率限制 - + &Top Toolbar 頂端工具列 (&T) - + Display Top Toolbar 顯示頂端工具列 - + Status &Bar 狀態列 (&B) - + Filters Sidebar 過濾條件側邊欄 - + S&peed in Title Bar 在標題列顯示速率 (&P) - + Show Transfer Speed in Title Bar 在標題列顯示傳輸速率 - + &RSS Reader RSS 閱讀器 (&R) - + Search &Engine 搜尋引擎 (&E) - + L&ock qBittorrent 鎖定 qBittorrent (&O) - + Do&nate! 捐款!(&N) - + + Sh&utdown System + + + + &Do nothing 不做任何事(&D) - + Close Window 關閉視窗 - R&esume All - 全部繼續 (&E) + 全部繼續 (&E) - + Manage Cookies... 管理 cookie… - + Manage stored network cookies 管理儲存的網路 cookie… - + Normal Messages 一般訊息 - + Information Messages 資訊訊息 - + Warning Messages 警告訊息 - + Critical Messages 重要訊息 - + &Log 記錄 (&L) - + + Sta&rt + + + + + Sto&p + + + + + R&esume Session + + + + + Pau&se Session + + + + Set Global Speed Limits... 設定全域速率限制… - + Bottom of Queue 佇列底部 - + Move to the bottom of the queue 移動到佇列底部 - + Top of Queue 佇列頂部 - + Move to the top of the queue 移動到佇列頂部 - + Move Down Queue 在佇列中向下移動 - + Move down in the queue 在佇列中向下移動 - + Move Up Queue 在佇列中向上移動 - + Move up in the queue 在佇列中向上移動 - + &Exit qBittorrent 結束 qbittorrent (&E) - + &Suspend System 系統暫停 (&S) - + &Hibernate System 系統休眠 (&H) - S&hutdown System - 關機 (&h) + 關機 (&h) - + &Statistics 統計資料 (&S) - + Check for Updates 檢查更新 - + Check for Program Updates 檢查程式更新 - + &About 關於 (&A) - &Pause - 暫停 (&P) + 暫停 (&P) - P&ause All - 全部暫停 (&A) + 全部暫停 (&A) - + &Add Torrent File... 新增 torrent 檔案… (&A) - + Open 開啟 - + E&xit 離開 (&X) - + Open URL 開啟 URL - + &Documentation 說明文件 (&D) - + Lock 鎖定 - - - + + + Show 顯示 - + Check for program updates 檢查軟體更新 - + Add Torrent &Link... 新增 torrent 連結 (&L) - + If you like qBittorrent, please donate! 如果您喜歡 qBittorrent,請捐款! - - + + Execution Log 活動紀錄 - + Clear the password 清除密碼 - + &Set Password 設定密碼 (&S) - + Preferences 偏好設定 - + &Clear Password 清除密碼 (&C) - + Transfers 傳輸 - - + + qBittorrent is minimized to tray qBittorrent 最小化到系統匣 - - - + + + This behavior can be changed in the settings. You won't be reminded again. 這行為可以在設定中變更。您將不會再被提醒。 - + Icons Only 只有圖示 - + Text Only 只有文字 - + Text Alongside Icons 文字在圖示旁 - + Text Under Icons 文字在圖示下 - + Follow System Style 跟隨系統風格 - - + + UI lock password UI 鎖定密碼 - - + + Please type the UI lock password: 請輸入 UI 鎖定密碼: - + Are you sure you want to clear the password? 您確定要清除密碼? - + Use regular expressions 使用正規表示式 - - Search - 搜尋 + + + Search Engine + 搜尋引擎 - - Transfers (%1) - 傳輸 (%1) + + Search has failed + 搜尋失敗 - Recursive download confirmation - 遞迴下載確認 + + Search has finished + 搜尋完成 - Never - 永不 + + Search + 搜尋 + + + + Transfers (%1) + 傳輸 (%1) - + qBittorrent was just updated and needs to be restarted for the changes to be effective. qBittorrent 已經更新了並且需要重新啟動。 - + qBittorrent is closed to tray qBittorrent 關閉到系統匣 - + Some files are currently transferring. 有些檔案還在傳輸中。 - + Are you sure you want to quit qBittorrent? 您確定要退出 qBittorrent 嗎? - + &No 否 (&N) - + &Yes 是 (&Y) - + &Always Yes 總是 (&A) - + Options saved. 已儲存選項。 - %1/s - s is a shorthand for seconds - %1/秒 + + [PAUSED] %1 + %1 is the rest of the window title + + + + + [D: %1, U: %2] %3 + D = Download; U = Upload; %3 is the rest of the window title + [下載:%1,上傳:%2] %3 + + + + Python installer could not be downloaded. Error: %1. +Please install it manually. + + + + + Rename Python installer failed. Source: "%1". Destination: "%2". + + + + + Python installation success. + + + + + Exit code: %1. + - - + + Reason: installer crashed. + + + + + Python installation failed. + + + + + Launching Python installer. File: "%1". + + + + + Missing Python Runtime Python 執行庫遺失 - + qBittorrent Update Available 有新版本的 qBittorrent 可用 - + Python is required to use the search engine but it does not seem to be installed. Do you want to install it now? 使用搜尋引擎需要 Python,但是它似乎尚未安裝。 您想要現在安裝嗎? - + Python is required to use the search engine but it does not seem to be installed. 使用搜尋引擎需要 Python,但是它似乎尚未安裝。 - - + + Old Python Runtime 舊的 Python 執行庫 - + A new version is available. 有新版本可用。 - + Do you want to download %1? 您想要下載 %1 嗎? - + Open changelog... 開啟變更紀錄… - + No updates available. You are already using the latest version. 沒有更新的版本 您已經在用最新的版本了 - + &Check for Updates 檢查更新 (&C) - + Your Python version (%1) is outdated. Minimum requirement: %2. Do you want to install a newer version now? 您的 Python 版本 (%1) 太舊了。最低需求:%2。 您想要現在安裝更新版本嗎? - + Your Python version (%1) is outdated. Please upgrade to latest version for search engines to work. Minimum requirement: %2. 您的 Python 版本 (%1) 太舊了。請升級到最新版本來讓搜尋引擎運作。 最低需求:%2。 - + + Paused + 暫停 + + + Checking for Updates... 正在檢查更新… - + Already checking for program updates in the background 已經在背景檢查程式更新 - + + Python installation in progress... + + + + + Failed to open Python installer. File: "%1". + + + + + Failed MD5 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + + Failed SHA3-512 hash check for Python installer. File: "%1". Result hash: "%2". Expected hash: "%3". + + + + Download error 下載錯誤 - Python setup could not be downloaded, reason: %1. Please install it manually. - 無法下載 Python 安裝程式。原因:%1。 + 無法下載 Python 安裝程式。原因:%1。 請手動安裝。 - - + + Invalid password 無效的密碼 - + Filter torrents... 過濾 torrent…… - + Filter by: 過濾條件: - + The password must be at least 3 characters long 密碼長度必須至少有 3 個字元 - - - + + + RSS (%1) RSS (%1) - The torrent '%1' contains .torrent files, do you want to proceed with their downloads? - Torrent「%1」包含 .torrent 檔案,您想要執行下載作業嗎? - - - + The password is invalid 密碼是無效的 - + DL speed: %1 e.g: Download speed: 10 KiB/s 下載速率:%1 - + UP speed: %1 e.g: Upload speed: 10 KiB/s 上傳速率:%1 - - [D: %1, U: %2] qBittorrent %3 - D = Download; U = Upload; %3 is qBittorrent version - [下載:%1,上傳:%2] qBittorrent %3 - - - + Hide 隱藏 - + Exiting qBittorrent 退出 qBittorrent - + Open Torrent Files 開啟 torrent 檔案 - + Torrent Files Torrent 檔案 @@ -4199,133 +4420,133 @@ Please install it manually. Net::DownloadHandlerImpl - - + + I/O Error: %1 I/O 錯誤:%1 - + The file size (%1) exceeds the download limit (%2) 檔案大小 (%1) 超過下載限制 (%2) - + Exceeded max redirections (%1) 超過最大重新導向 (%1) - + Redirected to magnet URI 重新導向至磁力 URI - + The remote host name was not found (invalid hostname) 找不到遠端主機名稱(無效的主機名稱) - + The operation was canceled 操作被取消 - + The remote server closed the connection prematurely, before the entire reply was received and processed 遠端伺服器在收到並處理整個回應前提早關閉連線 - + The connection to the remote server timed out 遠端伺服器連線逾時 - + SSL/TLS handshake failed SSL/TLS 握手失敗 - + The remote server refused the connection 遠端伺服器拒絕連線 - + The connection to the proxy server was refused 到代理伺服器的連線被拒絕 - + The proxy server closed the connection prematurely 代理伺服器提早關閉連線 - + The proxy host name was not found 找不到代理伺服器主機名稱 - + The connection to the proxy timed out or the proxy did not reply in time to the request sent 連線到代理伺服器逾時或是在要求的時間中沒有回應 - + The proxy requires authentication in order to honor the request but did not accept any credentials offered 為了執行要求,代理伺服器需要認證但是不接受任何提供的憑證 - + The access to the remote content was denied (401) 存取遠端內容被拒絕 (401) - + The operation requested on the remote content is not permitted 對遠端內容要求的操作不被允許 - + The remote content was not found at the server (404) 遠端內容在伺服器上找不到 (404) - + The remote server requires authentication to serve the content but the credentials provided were not accepted 為了提供內容,遠端代理伺服器要求認證,但提供的憑證不被接受 - + The Network Access API cannot honor the request because the protocol is not known 因為未知的協定,網路存取 API 無法執行要求 - + The requested operation is invalid for this protocol 要求的操作對於這協定是無效的 - + An unknown network-related error was detected 偵測到一個未知的網路相關錯誤 - + An unknown proxy-related error was detected 偵測到一個未知的代理伺服器相關錯誤 - + An unknown error related to the remote content was detected 偵測到一個未知的遠端內容相關錯誤 - + A breakdown in protocol was detected 偵測到一個協定錯誤 - + Unknown error 未知的錯誤 @@ -4333,7 +4554,12 @@ Please install it manually. Net::DownloadManager - + + SSL error, URL: "%1", errors: "%2" + + + + Ignoring SSL error, URL: "%1", errors: "%2" 正在忽略 SSL 錯誤,URL:「%1」,錯誤:「%2」 @@ -5705,294 +5931,307 @@ Please install it manually. BitTorrent - + RSS RSS - Web UI - Web UI + Web UI - + Advanced 進階 - + Customize UI Theme... 自訂使用者界面佈景主題…… - + Transfer List 傳輸清單 - + Confirm when deleting torrents 當刪除 torrent 時必須確認 - Shows a confirmation dialog upon pausing/resuming all the torrents - 暫停/繼續所有 torrent 時顯示確認對話方塊 + 暫停/繼續所有 torrent 時顯示確認對話方塊 - Confirm "Pause/Resume all" actions - 確認「暫停/繼續全部」動作 + 確認「暫停/繼續全部」動作 - + Use alternating row colors In table elements, every other row will have a grey background. 單雙列交替背景顏色 - + Hide zero and infinity values 隱藏零或無限大的值。 - + Always 總是 - Paused torrents only - 僅暫停 torrent + 僅暫停 torrent - + Action on double-click 按兩下時的行動 - + Downloading torrents: 下載中的 torrent: - - Start / Stop Torrent - 開始╱停止 torrent + 開始╱停止 torrent - - + + Open destination folder 開啟目標資料夾 - - + + No action 無行動 - + Completed torrents: 已完成的 torrent: - + Auto hide zero status filters 自動隱藏零狀態過濾條件 - + Desktop 桌面 - + Start qBittorrent on Windows start up 在 Windows 啟動時啟動 qBittorrent - + Show splash screen on start up 啟動時顯示起始畫面 - + Confirmation on exit when torrents are active 當 torrent 活躍時,離開時要確認 - + Confirmation on auto-exit when downloads finish 下載完成時的自動離開要確認 - + <html><head/><body><p>To set qBittorrent as default program for .torrent files and/or Magnet links<br/>you can use <span style=" font-weight:600;">Default Programs</span> dialog from <span style=" font-weight:600;">Control Panel</span>.</p></body></html> - + <html><head/><body><p>要設定 qBittorrent 為 .torrent 檔案及/或磁力連結的預設程式<br/>您可以使用來自<span style=" font-weight:600;">控制台</span>的<span style=" font-weight:600;">預設程式</span>對話方塊。</p></body></html> - + KiB KiB - + Torrent content layout: Torrent 內容佈局: - + Original 原始 - + Create subfolder 建立子資料夾 - + Don't create subfolder 不要建立子資料夾 - + The torrent will be added to the top of the download queue Torrent 將會被新增至下載佇列頂部 - + Add to top of queue The torrent will be added to the top of the download queue 新增至佇列頂部 - + When duplicate torrent is being added 新增重複的 torrent 時 - + Merge trackers to existing torrent 合併追蹤器到既有的 torrent - + + Keep unselected files in ".unwanted" folder + 將未選取的檔案保留在「.unwanted」資料夾中 + + + Add... 新增…… - + Options.. 選項…… - + Remove 移除 - + Email notification &upon download completion 下載完成時使用電子郵件通知 (&U) - + + Send test email + + + + + Run on torrent added: + + + + + Run on torrent finished: + + + + Peer connection protocol: 下載者連線協定: - + Any 任何 - + I2P (experimental) I2P(實驗性) - <html><head/><body><p>If &quot;mixed mode&quot; is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> - <html><head/><body><p>若啟用「混合模式」,I2P torrent 也允許從追蹤者以外的來源取得 peer,並連線到一般 IP,不提供任何匿名化。若使用者對 I2P 的匿名化不感興趣,但仍希望可以連線至 I2P peer,這可能會很有用。</p></body></html> + <html><head/><body><p>若啟用「混合模式」,I2P torrent 也允許從追蹤者以外的來源取得 peer,並連線到一般 IP,不提供任何匿名化。若使用者對 I2P 的匿名化不感興趣,但仍希望可以連線至 I2P peer,這可能會很有用。</p></body></html> - + Mixed mode 混合模式 - + Some options are incompatible with the chosen proxy type! 某些選項與選定的代理伺服器類型不相容! - + If checked, hostname lookups are done via the proxy 若勾選,主機名稱查詢將會透過代理伺服器完成 - + Perform hostname lookup via proxy 透過代理伺服器執行主機名稱查詢 - + Use proxy for BitTorrent purposes 對 BitTorrent 使用代理伺服器 - + RSS feeds will use proxy RSS feed 將會使用代理伺服器 - + Use proxy for RSS purposes 對 RSS 使用代理伺服器 - + Search engine, software updates or anything else will use proxy 搜尋引擎、軟體更新或其他任何會使用代理伺服器的東西 - + Use proxy for general purposes 對一般目的使用代理伺服器 - + IP Fi&ltering IP 過濾 (&L) - + Schedule &the use of alternative rate limits 預約使用替補速率限制 (&T) - + From: From start time 從: - + To: To end time 到: - + Find peers on the DHT network 在 DHT 網路上尋找 peer - + Allow encryption: Connect to peers regardless of setting Require encryption: Only connect to peers with protocol encryption Disable encryption: Only connect to peers without protocol encryption @@ -6001,140 +6240,188 @@ Disable encryption: Only connect to peers without protocol encryption 停用加密:僅連線到沒有協議加密的 peer - + Allow encryption 允許加密 - + (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">More information</a>) (<a href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">更多資訊</a>) - + Maximum active checking torrents: 最大活躍的正在檢查 torrent 數: - + &Torrent Queueing Torrent 佇列 (&T) - + When total seeding time reaches 當總種子時間達到 - + When inactive seeding time reaches 當不活躍種子時間達到 - A&utomatically add these trackers to new downloads: - 自動新增這些追蹤者到新的下載中:(&U) + 自動新增這些追蹤者到新的下載中:(&U) - + RSS Reader RSS 閱讀器 - + Enable fetching RSS feeds 啟用抓取 RSS feed - + Feeds refresh interval: Feed 更新區間: - + + Same host request delay: + 相同主機請求延遲: + + + Maximum number of articles per feed: 每個 feed 的最大文章數: - - - + + + min minutes 分鐘 - + Seeding Limits 種子限制 - Pause torrent - 暫停 torrent + 暫停 torrent - + Remove torrent 移除 torrent - + Remove torrent and its files 移除 torrent 與其檔案 - + Enable super seeding for torrent 為 torrent 啟用超級做種 - + When ratio reaches 當分享率達到 - + + Stop torrent + + + + + A&utomatically append these trackers to new downloads: + + + + + Automatically append trackers from URL to new downloads: + + + + + URL: + URL: + + + + Fetched trackers + + + + + Search UI + + + + + Store opened tabs + + + + + Also store search results + + + + + History length + + + + RSS Torrent Auto Downloader RSS torrent 自動下載器 - + Enable auto downloading of RSS torrents 啟用自動 RSS torrent 下載 - + Edit auto downloading rules... 編輯自動下載規則… - + RSS Smart Episode Filter RSS 智慧型章節過濾器 - + Download REPACK/PROPER episodes 下載 REPACK╱PROPER 章節 - + Filters: 過濾器: - + Web User Interface (Remote control) Web UI(遠端控制) - + IP address: IP 位置: - + IP address that the Web UI will bind to. Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv4 address, "::" for any IPv6 address, or "*" for both IPv4 and IPv6. @@ -6143,42 +6430,41 @@ Specify an IPv4 or IPv6 address. You can specify "0.0.0.0" for any IPv 「::」以配對任何 IPv6 位址,或是「*」以配對任何 IPv4 或 IPv6 位址。 - + Ban client after consecutive failures: - 連續失敗後封鎖客戶端: + 連續失敗後封鎖用戶端: - + Never 永不 - + ban for: 封鎖: - + Session timeout: 工作階段逾時: - + Disabled 已停用 - Enable cookie Secure flag (requires HTTPS) - 啟用 cookie 安全旗標(需要 HTTPS) + 啟用 cookie 安全旗標(需要 HTTPS) - + Server domains: 伺服器網域: - + Whitelist for filtering HTTP Host header values. In order to defend against DNS rebinding attack, you should put in domain names used by WebUI server. @@ -6191,442 +6477,495 @@ Use ';' to split multiple entries. Can use wildcard '*'. - + &Use HTTPS instead of HTTP 使用 HTTPS 而不是 HTTP (&U) - + Bypass authentication for clients on localhost - 在本機上跳過客戶端驗證 + 在本機上略過用戶端驗證 - + Bypass authentication for clients in whitelisted IP subnets - 讓已在白名單中的 IP 子網路跳過驗證 + 讓已在白名單中的 IP 子網路略過驗證 - + IP subnet whitelist... IP 子網白名單… - + + Use alternative WebUI + + + + Specify reverse proxy IPs (or subnets, e.g. 0.0.0.0/24) in order to use forwarded client address (X-Forwarded-For header). Use ';' to split multiple entries. - 指定反向代理 IP(或子網路,例如 0.0.0.0/24)以使用轉發的客戶端位置(X-Forwarded-For 標頭)。使用 ';' 來分隔多個項目。 + 指定反向代理 IP(或子網路,例如 0.0.0.0/24)以使用轉送的用戶端位置(X-Forwarded-For 標頭)。使用 ';' 來分隔多個項目。 - + Upda&te my dynamic domain name 更新我的動態領域名稱 (&T) - + Minimize qBittorrent to notification area 最小化 qBittorrent 到通知區域 - + + Search + 搜尋 + + + + WebUI + + + + Interface 界面 - + Language: 語言: - + + Style: + + + + + Color scheme: + + + + + Stopped torrents only + + + + + + Start / stop torrent + + + + + + Open torrent options dialog + + + + Tray icon style: 圖示樣式: - - + + Normal 一般 - + File association 檔案關聯 - + Use qBittorrent for .torrent files Torrent 檔案使用 qBittorrent - + Use qBittorrent for magnet links 磁力連結使用 qBittorrent - + Check for program updates 檢查程式更新 - + Power Management 電源管理 - + + &Log Files + + + + Save path: 儲存路徑: - + Backup the log file after: 備份記錄檔,每滿 - + Delete backup logs older than: 只保存備份記錄: - + + Show external IP in status bar + + + + When adding a torrent 當增加 torrent 時 - + Bring torrent dialog to the front 以最上層顯示 torrent 對話方塊 - + + The torrent will be added to download list in a stopped state + + + + Also delete .torrent files whose addition was cancelled 同時也刪除新增時被取消的 .torrent 檔案 - + Also when addition is cancelled 新增時被取消亦同 - + Warning! Data loss possible! 警告!可能遺失資料! - + Saving Management 存檔管理 - + Default Torrent Management Mode: 預設 torrent 管理模式: - + Manual 手動 - + Automatic 自動 - + When Torrent Category changed: 當 Torrent 分類變更時: - + Relocate torrent 重新定位 torrent - + Switch torrent to Manual Mode 切換 torrent 到手動模式 - - + + Relocate affected torrents 重新定位受影響的 torrent - - + + Switch affected torrents to Manual Mode 切換受影響的 torrent 至手動模式 - + Use Subcategories 使用子分類 - + Default Save Path: 預設儲存路徑: - + Copy .torrent files to: 複製 torrent 檔案到: - + Show &qBittorrent in notification area 在通知區域顯示 qBittorrent (&Q) - &Log file - 備份記錄檔 (&L) + 備份記錄檔 (&L) - + Display &torrent content and some options 顯示 torrent 內容及其他選項 (&T) - + De&lete .torrent files afterwards 事後刪除 .torrent 檔案 (&L) - + Copy .torrent files for finished downloads to: 複製已完成的 torrent 檔案到: - + Pre-allocate disk space for all files - 為所有檔案事先分配硬碟空間 + 為所有檔案預先分配磁碟空間 - + Use custom UI Theme 使用自訂 UI 佈景主題 - + UI Theme file: UI 佈景主題檔案: - + Changing Interface settings requires application restart 變更介面設定需要應用重新啟動 - + Shows a confirmation dialog upon torrent deletion Torrent 刪除時顯示確認對話框 - - + + Preview file, otherwise open destination folder 預覽檔案,否則開啟目標資料夾 - - Show torrent options - 顯示 torrent 選項 + 顯示 torrent 選項 - + Shows a confirmation dialog when exiting with active torrents 在有活躍的 torrent 但要結束程式時顯示確認對話框 - + When minimizing, the main window is closed and must be reopened from the systray icon 最小化時,主視窗會關閉且必須從系統匣圖示重新開啟 - + The systray icon will still be visible when closing the main window 系統匣圖示將會在關閉主視窗後仍然可見 - + Close qBittorrent to notification area The systray icon will still be visible when closing the main window 將 qBittorrent 關閉到通知區域 - + Monochrome (for dark theme) 單色(供暗色背景使用) - + Monochrome (for light theme) 單色(供淺色背景使用) - + Inhibit system sleep when torrents are downloading 當 torrent 正在下載時,防止系統進入睡眠 - + Inhibit system sleep when torrents are seeding 當 torrent 正在做種時,防止系統進入睡眠 - + Creates an additional log file after the log file reaches the specified file size 紀錄檔達到一定大小後,建立額外的紀錄檔 - + days Delete backup logs older than 10 days - + months Delete backup logs older than 10 months - + years Delete backup logs older than 10 years - + Log performance warnings 記錄效能警告 - The torrent will be added to download list in a paused state - Torrent 將以暫停狀態加入到下載清單中 + Torrent 將以暫停狀態加入到下載清單中 - + Do not start the download automatically - The torrent will be added to download list in a paused state + The torrent will be added to download list in a stopped state 無法自動開始下載 - + Whether the .torrent file should be deleted after adding it 新增後是否應刪除 .torrent 檔案 - + Allocate full file sizes on disk before starting downloads, to minimize fragmentation. Only useful for HDDs. - 開始下載前,請在磁碟上預先分配好完整檔案大小的空間以減少空間碎片。僅對 HDD 有用。 + 開始下載前,在磁碟上預先分配好完整檔案大小的空間以減少空間碎片。僅對 HDD 有用。 - + Append .!qB extension to incomplete files 在未完成檔案加上 .!qB 副檔名 - + When a torrent is downloaded, offer to add torrents from any .torrent files found inside it 下載 torrent 時,可以從其中找到的任何 .torrent 檔案新增 torrent - + Enable recursive download dialog 啟用遞迴下載確認對話框 - + Automatic: Various torrent properties (e.g. save path) will be decided by the associated category Manual: Various torrent properties (e.g. save path) must be assigned manually 自動:各種 torrent 屬性(如儲存路徑)將由相關分類來決定 手動:各種 torrent 屬性(如儲存路徑)必須手動分配 - + When Default Save/Incomplete Path changed: 當預設儲存/不完整路徑變更時: - + When Category Save Path changed: 當分類儲存路徑變更: - + Use Category paths in Manual Mode 在手動模式下使用分類路徑 - + Resolve relative Save Path against appropriate Category path instead of Default one 根據適當的分類路徑而非預設路徑解析相對儲存路徑 - + Use icons from system theme 使用來自系統佈景主題的圖示 - + Window state on start up: 啟動時的視窗狀態 - + qBittorrent window state on start up 啟動時的 qBittorrent 視窗狀態 - + Torrent stop condition: Torrent 停止條件: - - + + None - - + + Metadata received 收到的詮釋資料 - - + + Files checked 已檢查的檔案 - + Ask for merging trackers when torrent is being added manually - 手動新增 torrent 時詢問是否合併 tracker + 手動新增 torrent 時詢問是否合併追蹤器 - + Use another path for incomplete torrents: 使用其他路徑取得不完整的 torrents: - + Automatically add torrents from: 自動載入 torrent 檔案: - + Excluded file names 排除的檔案名稱 - + Blacklist filtered file names from being downloaded from torrent(s). Files matching any of the filters in this list will have their priority automatically set to "Do not download". @@ -6655,841 +6994,914 @@ readme.txt:過濾精確的檔案名稱。 readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「readme10.txt」。 - + Receiver 接收者 - + To: To receiver 到: - + SMTP server: SMTP 伺服器: - + Sender 傳送者 - + From: From sender 從: - + This server requires a secure connection (SSL) 這個伺服器需要加密連線 (SSL) - - + + Authentication 驗證 - - - - + + + + Username: 使用者名稱: - - - - + + + + Password: 密碼: - + Run external program 執行外部程式 - Run on torrent added - 在 torrent 新增時執行 + 在 torrent 新增時執行 - Run on torrent finished - 在 torrent 結束時執行 + 在 torrent 結束時執行 - + Show console window 顯示終端機視窗 - + TCP and μTP TCP 與 μTP - + Listening Port 監聽埠 - + Port used for incoming connections: 連入連線時使用的埠: - + Set to 0 to let your system pick an unused port 設定為 0 讓您的系統挑選未使用的連接埠 - + Random 隨機 - + Use UPnP / NAT-PMP port forwarding from my router 使用從路由器轉送的 UPnP/NAT-PMP 連接埠 - + Connections Limits 連線限制 - + Maximum number of connections per torrent: 每個 torrent 的最大連線數: - + Global maximum number of connections: 全域最大連線數: - + Maximum number of upload slots per torrent: 每個 torrent 上傳通道的最大數: - + Global maximum number of upload slots: 全域上傳通道的最大數: - + Proxy Server 代理伺服器 - + Type: 類型: - + SOCKS4 SOCKS4 - + SOCKS5 SOCKS5 - + HTTP HTTP - - + + Host: 主機: - - - + + + Port: 埠: - + Otherwise, the proxy server is only used for tracker connections 除此之外,代理伺服器僅用於追蹤者連線 - + Use proxy for peer connections 使用代理伺服器來連線下載者 - + A&uthentication 驗證 (&U) - + Info: The password is saved unencrypted 資訊:密碼以未加密的形式儲存 - + Filter path (.dat, .p2p, .p2b): 過濾路徑 (.dat, .p2p, .p2b): - + Reload the filter 重新載入過濾器 - + Manually banned IP addresses... 手動封鎖 IP 位置… - + Apply to trackers 套用到追蹤者 - + Global Rate Limits 全域速率限制 - - - - - - - + + + + + + + - - - - - - + + + + + + KiB/s KiB/s - - + + Upload: 上傳: - - + + Download: 下載: - + Alternative Rate Limits 替補速率限制 - + Start time 開始時間 - + End time 結束時間 - + When: 何時: - + Every day 每天 - + Weekdays 平日 - + Weekends 週末 - + Rate Limits Settings 速率限制設定 - + Apply rate limit to peers on LAN 在 LAN 上套用對下載者的速率限制 - + Apply rate limit to transport overhead 套用速率限制至傳輸負載 - + + <html><head/><body><p>If "mixed mode" is enabled I2P torrents are allowed to also get peers from other sources than the tracker, and connect to regular IPs, not providing any anonymization. This may be useful if the user is not interested in the anonymization of I2P, but still wants to be able to connect to I2P peers.</p></body></html> + + + + Apply rate limit to µTP protocol 套用速率限制到 µTP 協定 - + Privacy 隱私 - + Enable DHT (decentralized network) to find more peers 啟用 DHT (分散式網路) 來尋找更多下載者 - + Exchange peers with compatible Bittorrent clients (µTorrent, Vuze, ...) 與相容的 Bittorrent 客戶端 (µTorrent、Vuze 等) 交換下載者資訊 - + Enable Peer Exchange (PeX) to find more peers 啟用下載者交換 (PeX) 來尋找更多下載者 - + Look for peers on your local network 在本地網路找尋下載者 - + Enable Local Peer Discovery to find more peers 啟用本地下載者搜尋來尋找更多下載者 - + Encryption mode: 加密模式: - + Require encryption 要求加密 - + Disable encryption 停用加密 - + Enable when using a proxy or a VPN connection 當使用代理伺服器或 VPN 連線時啟用 - + Enable anonymous mode 啟用匿名模式 - + Maximum active downloads: 最大活躍的下載數: - + Maximum active uploads: 最大活躍的上傳數: - + Maximum active torrents: 最大活躍的 torrent 數: - + Do not count slow torrents in these limits 在這些限制中不要計算速率慢的 torrent - + Upload rate threshold: 上傳速率閾值: - + Download rate threshold: 下載速率閾值: - - - + + + + sec seconds - + Torrent inactivity timer: Torrent 不活躍計時器: - + then 然後 - + Use UPnP / NAT-PMP to forward the port from my router 使用 UPnP/NAT-PMP 轉送路由器連接埠 - + Certificate: 憑證: - + Key: 鍵值: - + <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>Information about certificates</a> <a href=https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts>關於憑證的資訊</a> - + Change current password 變更目前的密碼 - Use alternative Web UI - 使用替補 Web UI + 使用替補 Web UI - + Files location: 檔案位置: - + + <a href="https://github.com/qbittorrent/qBittorrent/wiki/List-of-known-alternate-WebUIs">List of alternative WebUI</a> + + + + Security 安全 - + Enable clickjacking protection 啟用點選劫持保護 - + Enable Cross-Site Request Forgery (CSRF) protection 啟用跨站請求偽造 (CSRF) 保護 - + + Enable cookie Secure flag (requires HTTPS or localhost connection) + + + + Enable Host header validation 啟用主機檔頭驗證 - + Add custom HTTP headers 新增自訂 HTTP 標頭 - + Header: value pairs, one per line 標頭:鍵值對,一行一個 - + Enable reverse proxy support 啟用反向代理支援 - + Trusted proxies list: 受信任的代理伺服器清單: - + + <a href=https://github.com/qbittorrent/qBittorrent/wiki#reverse-proxy-setup-for-webui-access>Reverse proxy setup examples</a> + + + + Service: 服務: - + Register 註冊 - + Domain name: 網域名稱: - + By enabling these options, you can <strong>irrevocably lose</strong> your .torrent files! 啟用這些選項,您可能會<strong>無可挽回地失去</strong>您的 .torrent 檔案! - + If you enable the second option (&ldquo;Also when addition is cancelled&rdquo;) the .torrent file <strong>will be deleted</strong> even if you press &ldquo;<strong>Cancel</strong>&rdquo; in the &ldquo;Add torrent&rdquo; dialog 若您啟用第二個選項 (新增時被取消亦同),即使您只是按下「新增 torrent」對話方塊中的「<strong>取消</strong>」按鈕,您的 .torrent 檔案<strong>也會被刪除</strong>。 - + Select qBittorrent UI Theme file 選取 qBittorrent UI 佈景主題檔案 - + Choose Alternative UI files location 選擇替補 UI 檔案位置 - + Supported parameters (case sensitive): 支援的參數 (區分大小寫): - + Minimized 最小化 - + Hidden 隱藏 - + Disabled due to failed to detect system tray presence 未偵測到系統匣存在而停用 - + No stop condition is set. 未設定停止條件。 - + Torrent will stop after metadata is received. Torrent 將會在收到詮釋資料後停止。 - - Torrents that have metadata initially aren't affected. - 一開始就有詮釋資料的 torrent 則不受影響。 - - - + Torrent will stop after files are initially checked. 最初檢查檔案後,torrent 將會停止。 - + This will also download metadata if it wasn't there initially. 如果一開始不存在,這也會下載詮釋資料。 - + %N: Torrent name %N:Torrent 名稱 - + %L: Category %L:分類 - + %F: Content path (same as root path for multifile torrent) %F:內容路徑 (與多重 torrent 的根路徑相同) - + %R: Root path (first torrent subdirectory path) %R:根路徑 (第一個 torrent 的子目錄路徑) - + %D: Save path %D:儲存路徑 - + %C: Number of files %C:檔案數 - + %Z: Torrent size (bytes) %Z:Torrent 大小 (位元組) - + %T: Current tracker %T:目前的追蹤者 - + Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N") 提示:把參數以引號包起來以避免被空格切斷 (例如:"%N") - + + Test email + + + + + Attempted to send email. Check your inbox to confirm success + + + + (None) (無) - + A torrent will be considered slow if its download and upload rates stay below these values for "Torrent inactivity timer" seconds Torrent 若下載與上傳速率在「Torrent 不活躍計時器」秒數內都低於這些值的話就會被認為是太慢了 - + Certificate 憑證 - + Select certificate 選取憑證 - + Private key 私密金鑰 - + Select private key 選取私密金鑰 - + + WebUI configuration failed. Reason: %1 + WebUI 設定失敗。理由:%1 + + + + %1 is recommended for best compatibility with Windows dark mode + Fusion is recommended for best compatibility with Windows dark mode + + + + + System + System default Qt style + + + + + Let Qt decide the style for this system + + + + + Dark + Dark color scheme + + + + + Light + Light color scheme + + + + + System + System color scheme + + + + Select folder to monitor 選擇資料夾以監視 - + Adding entry failed 新增項目失敗 - - Location Error - 位置錯誤 + + The WebUI username must be at least 3 characters long. + WebUI 使用者名稱必須至少 3 個字元長。 + + + + The WebUI password must be at least 6 characters long. + WebUI 密碼必須至少 6 個字元長。 - - The alternative Web UI files location cannot be blank. - 替補的 Web UI 檔案位置不應該為空白。 + + Location Error + 位置錯誤 - - + + Choose export directory 選擇輸出目錄 - + When these options are enabled, qBittorrent will <strong>delete</strong> .torrent files after they were successfully (the first option) or not (the second option) added to its download queue. This will be applied <strong>not only</strong> to the files opened via &ldquo;Add torrent&rdquo; menu action but to those opened via <strong>file type association</strong> as well 當這些選項啟用時,qBittorrent 將會在它們成功(第一個選項)或是未(第二個選項)加入其下載佇列時<strong>刪除</strong> .torrent 檔案。這將<strong>不僅是套用於</strong>透過「新增 torrent」選單動作開啟的檔案,也會套用於透過<strong>檔案類型關聯</strong>開啟的檔案。 - + qBittorrent UI Theme file (*.qbtheme config.json) qBittorrent UI 佈景主題檔案 (*.qbtheme config.json) - + %G: Tags (separated by comma) %G:標籤(以逗號分隔) - + %I: Info hash v1 (or '-' if unavailable) %I:資訊雜湊值 v1(如果不可用則為 '-') - + %J: Info hash v2 (or '-' if unavailable) %J:資訊雜湊值 v2(如果不可用則為 '-') - + %K: Torrent ID (either sha-1 info hash for v1 torrent or truncated sha-256 info hash for v2/hybrid torrent) %K:Torrent ID(v1 的 torrent 即為 sha-1 資訊雜湊值,若為 v2 或是混合的 torrent 即為截斷的 sha-256 資訊雜湊值) - - - + + + Choose a save directory 選擇儲存的目錄 - + + Torrents that have metadata initially will be added as stopped. + 一開始就有詮釋資料的 torrent 將被新增為已停止。 + + + Choose an IP filter file 選擇一個 IP 過濾器檔案 - + All supported filters 所有支援的過濾器 - + + The alternative WebUI files location cannot be blank. + 替補的 WebUI 檔案位置不應該為空白。 + + + Parsing error 解析錯誤 - + Failed to parse the provided IP filter 所提供的 IP 過濾器解析失敗 - + Successfully refreshed 重新更新成功 - + Successfully parsed the provided IP filter: %1 rules were applied. %1 is a number 成功分析所提供的 IP 過濾器:套用 %1 個規則。 - + Preferences 偏好設定 - + Time Error 時間錯誤 - + The start time and the end time can't be the same. 起始時間與終止時間不應該相同。 - - + + Length Error 長度錯誤 - - - The Web UI username must be at least 3 characters long. - Web UI 使用者名稱必須至少 3 字元長。 - - - - The Web UI password must be at least 6 characters long. - Web UI 密碼必須至少 6 字元長。 - PeerInfo - + Unknown 未知 - + Interested (local) and choked (peer) 【您:期待下載╱他:拒絕上傳】 - + Interested (local) and unchoked (peer) 【您:期待下載╱他:同意上傳】 - + Interested (peer) and choked (local) 【他:期待下載╱您:拒絕上傳】 - + Interested (peer) and unchoked (local) 【他:期待下載╱您:同意上傳】 - + Not interested (local) and unchoked (peer) 【您:不想下載╱他:同意上傳】 - + Not interested (peer) and unchoked (local) 【他:不想下載╱您:同意上傳】 - + Optimistic unchoke 多傳者優先 - + Peer snubbed 下載者突然停止 - + Incoming connection 連入的連線 - + Peer from DHT 來自 DHT 的下載者 - + Peer from PEX 來自 PEX 的下載者 - + Peer from LSD 來自 LSD 的下載者 - + Encrypted traffic 加密的流量 - + Encrypted handshake 加密的溝通 + + + Peer is using NAT hole punching + + PeerListWidget @@ -7522,13 +7934,13 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read Client i.e.: Client application - 客戶端 + 用戶端 Peer ID Client i.e.: Client resolved from Peer ID - Peer ID 客戶端 + Peer ID 用戶端 @@ -7645,7 +8057,7 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read Peer「%1」已被手動封鎖 - + N/A N/A @@ -7668,7 +8080,7 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read 要新增的下載者清單 (每行一個 IP): - + Format: IPv4:port / [IPv6]:port 格式:IPv4:埠/[IPv6]:埠 @@ -7709,27 +8121,27 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read PiecesBar - + Files in this piece: 在這分塊中的檔案: - + File in this piece: 此片段中的檔案: - + File in these pieces: 這些片段中的檔案: - + Wait until metadata become available to see detailed information 等待詮釋資料可用時來檢視詳細資訊 - + Hold Shift key for detailed information 按住 Shift 鍵以取得詳細資訊 @@ -7742,58 +8154,58 @@ readme[0-9].txt:過濾「readme1.txt」、「readme2.txt」但不包含「read 搜尋附加元件 - + Installed search plugins: 已安裝的搜尋附加元件: - + Name 名稱 - + Version 版本 - + Url URL - - + + Enabled 已啟用 - + Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines. 警告:請確保您從這些搜尋引擎中下載 torrent 時遵守您所在國家的版權法。 - + You can get new search engine plugins here: <a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> 您可以造訪此處取得新的搜尋引擎附加元件:<a href="https://plugins.qbittorrent.org">https://plugins.qbittorrent.org</a> - + Install a new one 安裝新的 - + Check for updates 檢查更新 - + Close 關閉 - + Uninstall 解除安裝 @@ -7913,17 +8325,17 @@ Those plugins were disabled. 附加元件來源 - + Search plugin source: 搜尋附加元件來源: - + Local file 本機檔案 - + Web link 網頁連結 @@ -7941,70 +8353,70 @@ Those plugins were disabled. Power management found suitable D-Bus interface. Interface: %1 - + 電源管理找到了合適的 D-Bus 介面。介面:%1 Power management error. Did not found suitable D-Bus interface. - + 電源管理錯誤。找不到合適的 D-Bus 介面。 Power management error. Action: %1. Error: %2 - + 電源管理錯誤。動作:%1。錯誤:%2 Power management unexpected error. State: %1. Error: %2 - + 電源管理非預期的錯誤。狀態:%1。錯誤:%2 PreviewSelectDialog - + The following files from torrent "%1" support previewing, please select one of them: 以下從「%1」而來的檔案支援預覽,請從中選取: - + Preview 預覽 - + Name 名稱 - + Size 大小 - + Progress 進度 - + Preview impossible 不可預覽 - + Sorry, we can't preview this file: "%1". 抱歉,我們無法預覽此檔案:「%1」。 - + Resize columns 調整欄大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄與其內容的大小 @@ -8017,27 +8429,27 @@ Those plugins were disabled. Private::FileLineEdit - + Path does not exist 路徑不存在 - + Path does not point to a directory 路徑未指向目錄 - + Path does not point to a file 路徑未指向檔案 - + Don't have read permission to path 沒有讀取路徑的權限 - + Don't have write permission to path 沒有寫入路徑的權限 @@ -8078,12 +8490,12 @@ Those plugins were disabled. PropertiesWidget - + Downloaded: 已下載: - + Availability: 可得性: @@ -8098,53 +8510,53 @@ Those plugins were disabled. 傳輸 - + Time Active: - Time (duration) the torrent is active (not paused) + Time (duration) the torrent is active (not stopped) 經過時間: - + ETA: 預估剩餘時間: - + Uploaded: 已上傳: - + Seeds: 種子: - + Download Speed: 下載速率: - + Upload Speed: 上傳速率: - + Peers: 下載者: - + Download Limit: 下載限制: - + Upload Limit: 上傳限制: - + Wasted: 已丟棄: @@ -8154,193 +8566,249 @@ Those plugins were disabled. 連線: - + Information 資訊 - + Info Hash v1: 資訊雜湊值 v1: - + Info Hash v2: 資訊雜湊值 v2: - + Comment: 註解: - + Select All 全部選擇 - + Select None 全部不選 - + Share Ratio: 分享率: - + Reannounce In: 重新發佈於: - + Last Seen Complete: 最後完整可見: - + + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + Popularity: + + + + Total Size: 總大小: - + Pieces: 分塊: - + Created By: 製作器: - + Added On: 增加於: - + Completed On: 完成於: - + Created On: 建立於: - + + Private: + + + + Save Path: 儲存路徑: - + Never 永不 - + %1 x %2 (have %3) (torrent pieces) eg 152 x 4MB (have 25) %1 x %2 (已完成 %3) - - + + %1 (%2 this session) %1 (今期 %2) - - + + + N/A N/A - + + Yes + + + + + No + + + + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1 (已做種 %2) - + %1 (%2 max) %1 and %2 are numbers, e.g. 3 (10 max) %1 (最大 %2) - - + + %1 (%2 total) %1 and %2 are numbers, e.g. 3 (10 total) %1 (總共 %2 個) - - + + %1 (%2 avg.) %1 and %2 are speed rates, e.g. 200KiB/s (100KiB/s avg.) %1 (平均 %2) - + + Add web seed + Add HTTP source + + + + + Add web seed: + + + + + + This web seed is already in the list. + + + New Web seed - 新網頁種子 + 新網頁種子 - Remove Web seed - 移除網頁種子 + 移除網頁種子 - Copy Web seed URL - 複製網頁種子 URL + 複製網頁種子 URL - Edit Web seed URL - 編輯網頁種子 URL + 編輯網頁種子 URL - + Filter files... 過濾檔案… - + + Add web seed... + + + + + Remove web seed + + + + + Copy web seed URL + + + + + Edit web seed URL... + + + + Speed graphs are disabled 已停用速度圖 - + You can enable it in Advanced Options 您可以在進階選項中啟用它 - New URL seed New HTTP source - 新的 URL 種子 + 新的 URL 種子 - New URL seed: - 新的 URL 種子: + 新的 URL 種子: - - This URL seed is already in the list. - 這 URL 種子已經在清單裡了。. + 這 URL 種子已經在清單裡了。. - + Web seed editing 編輯網頁種子中 - + Web seed URL: 網頁種子 URL: @@ -8359,22 +8827,22 @@ Those plugins were disabled. 無法在 %1 中儲存 RSS 自動下載器資料。錯誤:%2 - + Invalid data format 無效的資料格式 - + RSS article '%1' is accepted by rule '%2'. Trying to add torrent... 已接受 RSS 文章「%1」,根據規則「%2」。正在嘗試新增 torrent…… - + Failed to read RSS AutoDownloader rules. %1 讀取 RSS 自動下載程式規則失敗。%1 - + Couldn't load RSS AutoDownloader rules. Reason: %1 無法載入 RSS 自動下載器規則。原因:%1 @@ -8382,22 +8850,22 @@ Those plugins were disabled. RSS::Feed - + Failed to download RSS feed at '%1'. Reason: %2 無法從「%1」下載 RSS feed。原因:%2 - + RSS feed at '%1' updated. Added %2 new articles. 「%1」的 RSS feed 已更新。新增 %2 個文章。 - + Failed to parse RSS feed at '%1'. Reason: %2 無法從「%1」解析 RSS feed。原因:%2 - + RSS feed at '%1' is successfully downloaded. Starting to parse it. 在「%1」的 RSS feed 已成功下載。開始解析它。 @@ -8433,12 +8901,12 @@ Those plugins were disabled. RSS::Private::Parser - + Invalid RSS feed. 無效的 RSS feed。 - + %1 (line: %2, column: %3, offset: %4). %1 (行:%2,欄:%3,偏移:%4)。 @@ -8446,99 +8914,99 @@ Those plugins were disabled. RSS::Session - + Couldn't save RSS session configuration. File: "%1". Error: "%2" 無法儲存 RSS 工作階段設定。檔案:「%1」。錯誤:「%2」 - + Couldn't save RSS session data. File: "%1". Error: "%2" 無法儲存 RSS 工作階段資料。檔案:「%1」。錯誤:「%2」 - - + + RSS feed with given URL already exists: %1. 已有這 URL 的 RSS feed:%1。 - + Feed doesn't exist: %1. Feed 不存在:%1。 - + Cannot move root folder. 無法移動根資料夾。 - - + + Item doesn't exist: %1. 項目不存在:%1。 - + Couldn't move folder into itself. 無法將資料夾移動到自己裡面。 - + Cannot delete root folder. 無法刪除根資料夾。 - + Failed to read RSS session data. %1 讀取 RSS 工作階段資料失敗。%1 - + Failed to parse RSS session data. File: "%1". Error: "%2" 解析 RSS 工作階段資料失敗。檔案:「%1」。錯誤:「%2」 - + Failed to load RSS session data. File: "%1". Error: "Invalid data format." 載入 RSS 工作階段資料失敗。檔案:「%1」。錯誤:「無效的資料格式。」 - + Couldn't load RSS feed. Feed: "%1". Reason: URL is required. 無法載入 RSS feed。Feed:「%1」。原因:URL 為必填。 - + Couldn't load RSS feed. Feed: "%1". Reason: UID is invalid. 無法載入 RSS feed。Feed:「%1」。原因:UID 無效。 - + Duplicate RSS feed found. UID: "%1". Error: Configuration seems to be corrupted. 找到重複的 RSS feed。UID:「%1」。錯誤:設定似乎已毀損。 - + Couldn't load RSS item. Item: "%1". Invalid data format. 無法載入 RSS 項目。項目:「%1」。無效的資料格式。 - + Corrupted RSS list, not loading it. 毀損的 RSS 清單,無法載入。 - + Incorrect RSS Item path: %1. 不正確的 RSS 項目路徑:%1。 - + RSS item with given path already exists: %1. 已有這路徑的 RSS 項目:%1。 - + Parent folder doesn't exist: %1. 父資料夾不存在:%1。 @@ -8562,8 +9030,8 @@ Those plugins were disabled. - - + + Mark items read 標記項目為已讀 @@ -8588,132 +9056,132 @@ Those plugins were disabled. Torrent:(雙擊以下載) - - + + Delete 刪除 - + Rename... 重新命名… - + Rename 重新命名 - - + + Update 更新 - + New subscription... 新訂閱… - - + + Update all feeds 更新所有 feed - + Download torrent 下載 torrent - + Open news URL 開啟消息 URL - + Copy feed URL 複製 feed URL - + New folder... 新資料夾… - + Edit feed URL... 編輯 feed URL…… - + Edit feed URL 編輯 feed URL - + Please choose a folder name 請選擇資料夾名稱 - + Folder name: 資料夾名稱: - + New folder 新資料夾 - - + + Please type a RSS feed URL 請輸入一個 RSS feed URL - - + + Feed URL: Feed URL: - + Deletion confirmation 刪除確認 - + Are you sure you want to delete the selected RSS feeds? 您確定要刪除選取的 RSS feed 嗎? - + Please choose a new name for this RSS feed 請為這個 RSS feed 選擇新名稱 - + New feed name: 新 feed 名稱: - + Rename failed 無法重新命名 - + Date: 日期: - + Feed: - + Feed: - + Author: 作者: @@ -8721,38 +9189,38 @@ Those plugins were disabled. SearchController - + Python must be installed to use the Search Engine. 必須安裝 Python 以使用搜尋引擎。 - + Unable to create more than %1 concurrent searches. 無法建立多於 %1 個共時搜尋。 - - + + Offset is out of range 偏移量超出範圍 - + All plugins are already up to date. 所有附加元件都已經是最新版本。 - + Updating %1 plugins 正在更新 %1 個附加元件 - + Updating plugin %1 正在更新附加元件 %1 - + Failed to check for plugin updates: %1 無法檢查附加元件更新:「%1」 @@ -8827,132 +9295,146 @@ Those plugins were disabled. 大小: - + Name i.e: file name 名稱 - + Size i.e: file size 大小 - + Seeders i.e: Number of full sources 種子 - + Leechers i.e: Number of partial sources 下載者 - Search engine - 搜尋引擎 + 搜尋引擎 - + Filter search results... 過濾搜尋結果… - + Results (showing <i>%1</i> out of <i>%2</i>): i.e: Search results 搜尋結果 (顯示 <i>%2</i> 個中的 <i>%1</i> 個): - + Torrent names only 僅 torrent 名稱 - + Everywhere 各處 - + Use regular expressions 使用正規表示式 - + Open download window 開啟下載視窗 - + Download 下載 - + Open description page 開啟描述頁面 - + Copy 複製 - + Name 名稱 - + Download link 下載連結 - + Description page URL 描述頁面的 URL - + Searching... 正在搜尋… - + Search has finished 搜尋完成 - + Search aborted 搜尋中止 - + An error occurred during search... 搜尋時遇到錯誤… - + Search returned no results 沒有搜尋結果 - + + Engine + + + + + Engine URL + + + + + Published On + + + + Column visibility 欄目顯示 - + Resize columns 調整欄大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄與其內容的大小 @@ -8960,104 +9442,104 @@ Those plugins were disabled. SearchPluginManager - + Unknown search engine plugin file format. 未知的搜尋引擎附加元件檔案格式。 - + Plugin already at version %1, which is greater than %2 附加元件已經為版本 %1,大於 %2 - + A more recent version of this plugin is already installed. 已安裝此附加元件的較新版本。 - + Plugin %1 is not supported. 不支援附加元件 %1。 - - + + Plugin is not supported. 不支援的附加元件。 - + Plugin %1 has been successfully updated. 已成功更新附加元件 %1。 - + All categories 所有類別 - + Movies 電影 - + TV shows 電視節目 - + Music 音樂 - + Games 遊戲 - + Anime 動畫 - + Software 軟體 - + Pictures 圖片 - + Books 書籍 - + Update server is temporarily unavailable. %1 更新伺服器暫時不可用。%1 - - + + Failed to download the plugin file. %1 無法下載附加元件更新:「%1」 - + Plugin "%1" is outdated, updating to version %2 附加元件「%1」已過期,正在更新到版本 %2 - + Incorrect update info received for %1 out of %2 plugins. %2 個附加元件中的 %1 個收到不正確的更新資訊。 - + Search plugin '%1' contains invalid version string ('%2') 搜尋附加元件「%1」包含了無效的版本字串(「%2」) @@ -9067,114 +9549,153 @@ Those plugins were disabled. - - - - Search 搜尋 - + There aren't any search plugins installed. Click the "Search plugins..." button at the bottom right of the window to install some. 沒有安裝任何搜尋附加元件。 點選視窗右下角的「搜尋附加元件…」按鈕來安裝一些吧。 - + Search plugins... 搜尋附加元件… - + A phrase to search for. 搜尋的片語: - + Spaces in a search term may be protected by double quotes. 維持搜尋片語的完整,請使用英語雙引號。 - + Example: Search phrase example 範例: - + <b>&quot;foo bar&quot;</b>: search for <b>foo bar</b> Search phrase example, illustrates quotes usage, double quotedpair of space delimited words, the whole pair is highlighted <b>&quot;foo bar&quot;</b>會搜尋片語<b>foo bar</b> - + All plugins 所有附加元件 - + Only enabled 僅已啟用 - + + + Invalid data format. + 無效的資料格式。 + + + <b>foo bar</b>: search for <b>foo</b> and <b>bar</b> Search phrase example, illustrates quotes usage, a pair of space delimited words, individual words are highlighted <b>foo bar</b>:搜尋 <b>foo</b> 與 <b>bar</b> - + + Refresh + + + + Close tab 關閉分頁 - + Close all tabs 關閉所有分頁 - + Select... 選擇… - - - + + Search Engine 搜尋引擎 - + + Please install Python to use the Search Engine. 請安裝 Python 以使用搜尋引擎。 - + Empty search pattern 沒有搜尋模式 - + Please type a search pattern first 請先輸入一個搜尋模式 - + + Stop 停止 - Search has finished - 搜尋完成 + 搜尋完成 - Search has failed - 搜尋失敗 + 搜尋失敗 + + + + SearchWidget::DataStorage + + + Failed to load Search UI saved state data. File: "%1". Error: "%2" + + + + + Failed to load saved search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to save Search UI state. File: "%1". Error: "%2" + + + + + Failed to save search results. Tab: "%1". File: "%2". Error: "%3" + + + + + Failed to load Search UI history. File: "%1". Error: "%2" + + + + + Failed to save search history. File: "%1". Error: "%2" + @@ -9287,34 +9808,34 @@ Click the "Search plugins..." button at the bottom right of the window - + Upload: 上傳 - - - + + + - - - + + + KiB/s KiB/s - - + + Download: 下載: - + Alternative speed limits 替補速率限制 @@ -9506,32 +10027,32 @@ Click the "Search plugins..." button at the bottom right of the window 在佇列的平均時間: - + Connected peers: 已連線的下載者: - + All-time share ratio: 合計總分享率: - + All-time download: 合計總下載: - + Session waste: 今期丟棄: - + All-time upload: 合計總上傳: - + Total buffer size: 總緩衝大小: @@ -9546,12 +10067,12 @@ Click the "Search plugins..." button at the bottom right of the window 佇列的 I/O 任務: - + Write cache overload: 寫入快取超過負荷: - + Read cache overload: 讀取快取超過負荷: @@ -9570,51 +10091,67 @@ Click the "Search plugins..." button at the bottom right of the window StatusBar - + Connection status: 連線狀態: - - + + No direct connections. This may indicate network configuration problems. 沒有直接的連線。這表示您的網路設定可能有問題。 - - + + + External IP: N/A + + + + + DHT: %1 nodes DHT:%1 個節點 - + qBittorrent needs to be restarted! qBittorrent 需要重新啟動! - - - + + + Connection Status: 連線狀態: - + Offline. This usually means that qBittorrent failed to listen on the selected port for incoming connections. 離線。這通常表示 qBittorrent 監聽進來連線的埠失敗。 - + Online 線上 - + + External IPs: %1, %2 + + + + + External IP: %1%2 + + + + Click to switch to alternative speed limits 點選來切換至替補速率限制 - + Click to switch to regular speed limits 點選來切換至一般速率限制 @@ -9643,14 +10180,22 @@ Click the "Search plugins..." button at the bottom right of the window 已完成 (0) - Resumed (0) - 繼續 (0) + 繼續 (0) - Paused (0) - 暫停 (0) + 暫停 (0) + + + + Running (0) + + + + + Stopped (0) + @@ -9712,10 +10257,29 @@ Click the "Search plugins..." button at the bottom right of the window Completed (%1) 已完成 (%1) + + + Running (%1) + + + Stopped (%1) + + + + + Start torrents + + + + + Stop torrents + + + Paused (%1) - 暫停 (%1) + 暫停 (%1) @@ -9723,14 +10287,12 @@ Click the "Search plugins..." button at the bottom right of the window 移動中 (%1) - Resume torrents - 復原 torrent + 復原 torrent - Pause torrents - 暫停 torrent + 暫停 torrent @@ -9738,9 +10300,8 @@ Click the "Search plugins..." button at the bottom right of the window 移除 torrents - Resumed (%1) - 繼續 (%1) + 繼續 (%1) @@ -9781,17 +10342,17 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterModel - + Tags 標籤 - + All 所有 - + Untagged 未標籤 @@ -9799,52 +10360,64 @@ Click the "Search plugins..." button at the bottom right of the window TagFilterWidget - + Add tag... 新增標籤… - + Remove tag 移除標籤 - + Remove unused tags 移除未使用的標籤 - Resume torrents - 繼續 torrent + 繼續 torrent - Pause torrents - 暫停 torrent + 暫停 torrent - + Remove torrents 移除 torrents - New Tag - 新標籤 + 新標籤 + + + + Start torrents + - + + Stop torrents + + + + Tag: 標籤: - + + Add tag + + + + Invalid tag name 無效的標籤名稱 - + Tag name '%1' is invalid 標籤名稱「%1」無效 @@ -9984,32 +10557,32 @@ Please choose a different name and try again. TorrentContentModel - + Name 名稱 - + Progress 進度 - + Download Priority 下載優先度 - + Remaining 剩餘的 - + Availability 可得性 - + Total Size 總大小 @@ -10054,102 +10627,120 @@ Please choose a different name and try again. TorrentContentWidget - + Rename error 重新命名錯誤 - + Renaming 重新命名 - + New name: 新名稱: - + Column visibility 欄位能見度 - + Resize columns 調整欄位大小 - + Resize all non-hidden columns to the size of their contents 將所有非隱藏的欄位調整為其內容的大小 - + Open 開啟 - + Open containing folder 開啟包含的資料夾 - + Rename... 重新命名…… - + Priority 優先程度 - - + + Do not download 不要下載 - + Normal 一般 - + High - + Maximum 最高 - + By shown file order 按顯示的檔案順序 - + Normal priority 一般優先度 - + High priority 高優先度 - + Maximum priority 最高優先度 - + Priority by shown file order 按檔案順序顯示的優先度 + + TorrentCreatorController + + + Too many active tasks + 太多活躍的工作 + + + + Torrent creation is still unfinished. + Torrent 建立仍未完成。 + + + + Torrent creation failed. + Torrent 建立失敗。 + + TorrentCreatorDialog @@ -10174,13 +10765,13 @@ Please choose a different name and try again. - + Select file 選擇檔案 - + Select folder 選擇資料夾 @@ -10205,58 +10796,10 @@ Please choose a different name and try again. 分塊大小: - + Auto 自動 - - 16 KiB - 16 KiB - - - 32 KiB - 32 KiB - - - 64 KiB - 64 KiB - - - 128 KiB - 128 KiB - - - 256 KiB - 256 KiB - - - 512 KiB - 512 KiB - - - 1 MiB - 1 MiB - - - 2 MiB - 2 MiB - - - 4 MiB - 4 MiB - - - 8 MiB - 8 MiB - - - 16 MiB - 16 MiB - - - 32 MiB - 32 MiB - Calculate number of pieces: @@ -10303,92 +10846,83 @@ Please choose a different name and try again. 資訊項 - + You can separate tracker tiers / groups with an empty line. - 您可以用一行空白行分離 tracker 層/群組。 + 您可以用一行空白來分隔追蹤器層級 / 群組。 - + Web seed URLs: 網頁種子 URL: - + Tracker URLs: 追蹤者 URL: - + Comments: 註解: - + Source: 來源: - + Progress: 進度: - + Create Torrent 製作 torrent - - + + Torrent creation failed 無法建立 torrent - + Reason: Path to file/folder is not readable. 原因:到檔案或資料夾的路徑無法讀取。 - + Select where to save the new torrent 選擇要儲存新 torrent 的位置 - + Torrent Files (*.torrent) Torrent 檔案 (*.torrent) - - Reason: %1 - 原因:%1 - - - + Add torrent to transfer list failed. - + 新增 torrent 至傳輸清單失敗。 - + Reason: "%1" - + 理由:「%1」 - + Add torrent failed - - - - Reason: Created torrent is invalid. It won't be added to download list. - 原因:建立的 torrent 無效。它不會被加入到下載清單。 + 新增 torrent 失敗 - + Torrent creator Torrent 製作器 - + Torrent created: 已建立的 torrent: @@ -10396,32 +10930,32 @@ Please choose a different name and try again. TorrentFilesWatcher - + Failed to load Watched Folders configuration. %1 載入監視資料夾設定失敗。%1 - + Failed to parse Watched Folders configuration from %1. Error: "%2" 從 %1 解析監視資料夾設定失敗。錯誤:「%2」 - + Failed to load Watched Folders configuration from %1. Error: "Invalid data format." 從 %1 載入監視資料夾設定失敗。錯誤:「無效的資料格式。」 - + Couldn't store Watched Folders configuration to %1. Error: %2 無法儲存監視資料夾設定至 %1。錯誤:%2 - + Watched folder Path cannot be empty. 監視的資料夾路徑不能為空。 - + Watched folder Path cannot be relative. 監視的資料夾路徑不能是相對路徑。 @@ -10429,27 +10963,27 @@ Please choose a different name and try again. TorrentFilesWatcher::Worker - + Invalid Magnet URI. URI: %1. Reason: %2 - + 無效的磁力 URI。URI:%1。理由:%2 - + Magnet file too big. File: %1 磁力檔案太大。檔案:%1 - + Failed to open magnet file: %1 無法開啟磁力檔案:「%1」 - + Rejecting failed torrent file: %1 拒絕失敗的 torrent 檔案:%1 - + Watching folder: "%1" 正在監視資料夾:「%1」 @@ -10457,14 +10991,12 @@ Please choose a different name and try again. TorrentInfo - Failed to allocate memory when reading file. File: "%1". Error: "%2" - 讀取檔案時分配記憶體失敗。檔案:「%1」。錯誤:「%2」 + 讀取檔案時分配記憶體失敗。檔案:「%1」。錯誤:「%2」 - Invalid metadata - 無效的詮釋資料 + 無效的詮釋資料 @@ -10495,127 +11027,203 @@ Please choose a different name and try again. 使用其他路徑取得不完整的 torrent - + Category: 分類: - + + Torrent Share Limits + + + Torrent speed limits - Torrent 速率限制 + Torrent 速率限制 - + Download: 下載: - - + + - - + + Torrent Speed Limits + + + + + KiB/s KiB/s - + These will not exceed the global limits 這些不會超過全域限制 - + Upload: 上傳: - Torrent share limits - Torrent 分享限制 + Torrent 分享限制 - Use global share limit - 使用全域分享限制 + 使用全域分享限制 - Set no share limit - 設定無分享限制 + 設定無分享限制 - Set share limit to - 設定分享限制為 + 設定分享限制為 - ratio - 上傳╱下載比率 + 上傳╱下載比率 - total minutes - 總分鐘 + 總分鐘 - inactive minutes - 不活躍分鐘 + 不活躍分鐘 - + Disable DHT for this torrent 停用此 torrent 的 DHT - + Download in sequential order 依順序下載 - + Disable PeX for this torrent 停用此 torrent 的 PeX - + Download first and last pieces first 先下載第一和最後一塊 - + Disable LSD for this torrent 停用此 torrent 的 LSD - + Currently used categories 目前已使用的分類 - - + + Choose save path 選擇儲存路徑 - + Not applicable to private torrents 不適用於私人 torrent - No share limit method selected - 未選取分享限制方法 + 未選取分享限制方法 - Please select a limit method first - 請先選擇限制方式 + 請先選擇限制方式 + + + + TorrentShareLimitsWidget + + + + + + Default + 預設 + + + + + + Unlimited + 無限制 + + + + + + Set to + 設定為 + + + + Seeding time: + 做種時間: + + + + + + + + + min + minutes + 分鐘 + + + + Inactive seeding time: + 不活躍的做種時間: + + + + Action when the limit is reached: + + + + + Stop torrent + + + + + Remove torrent + 移除 torrent + + + + Remove torrent and its content + + + + + Enable super seeding for torrent + 為 torrent 啟用超級做種 + + + + Ratio: + 分享率: @@ -10626,32 +11234,36 @@ Please choose a different name and try again. Torrent 標籤 - New Tag - 新標籤 + 新標籤 + Add tag + + + + Tag: 標籤: - + Invalid tag name 無效的標籤名稱 - + Tag name '%1' is invalid. 標籤名稱「%1」無效。 - + Tag exists 已有這標籤 - + Tag name already exists. 已有這標籤名稱。 @@ -10659,115 +11271,130 @@ Please choose a different name and try again. TorrentsController - + Error: '%1' is not a valid torrent file. 錯誤:「%1」不是有效的 torrent 檔案。 - + Priority must be an integer 優先度必須為整數 - + Priority is not valid 優先度無效 - + Torrent's metadata has not yet downloaded 尚未下載 Torrent 的詮釋資料 - + File IDs must be integers 檔案 ID 必須為整數 - + File ID is not valid 檔案 ID 無效 - - - - + + + + Torrent queueing must be enabled Torrent 佇列必須啟用 - - + + Save path cannot be empty 儲存路徑不應該為空白 - - + + Cannot create target directory 無法建立目標目錄 - - + + Category cannot be empty 分類不應該為空白 - + Unable to create category 無法建立分類 - + Unable to edit category 無法編輯分類 - + Unable to export torrent file. Error: %1 無法匯出 Torrent 檔案。錯誤:%1 - + Cannot make save path 無法建立儲存路徑 - + + "%1" is not a valid URL + + + + + URL scheme must be one of [%1] + + + + 'sort' parameter is invalid 「sort」參數無效 - + + "%1" is not an existing URL + + + + "%1" is not a valid file index. 「%1」不是有效的檔案索引。 - + Index %1 is out of bounds. 索引 %1 超出範圍。 - - + + Cannot write to directory 無法寫入目錄 - + WebUI Set location: moving "%1", from "%2" to "%3" WebUI 設定位置:正在移動「%1」,從「%2」到「%3」 - + Incorrect torrent name 不正確的 torrent 名稱 - - + + Incorrect category name 不正確的分類名稱 @@ -10798,257 +11425,215 @@ Please choose a different name and try again. TrackerListModel - - + Working - 正在運作 + 正在運作 - + Disabled - 已停用 + 已停用 - + Disabled for this torrent - 對此 torrent 停用 + 對此 torrent 停用 - + This torrent is private - 這是私有的 torrent + 這是私有的 torrent - + N/A - N/A + N/A - + Updating... - 正在更新… + 正在更新… - + Not working - 沒有運作 + 沒有運作 - + Tracker error - + Tracker 錯誤 - + Unreachable - + 無法連結 - + Not contacted yet - 尚未連線 + 尚未連線 - - Invalid status! + + Invalid state! - - URL/Announce endpoint + + URL/Announce Endpoint - - Tier - + + BT Protocol + + + + + Next Announce + + + + + Min Announce + + + + Invalid status! + 無效的狀態! + + + URL/Announce endpoint + URL/公告端點 + Tier + + + Protocol - + 協定 - + Status - 狀態 + 狀態 - + Peers - 下載者 + 下載者 - + Seeds - 種子 + 種子 - + Leeches - 蝗族 + 蝗族 - + Times Downloaded - 下載時間 + 下載時間 - + Message - 訊息 + 訊息 - Next announce - + 下次公告 - Min announce - + 最小公告 - v%1 - + v%1 TrackerListWidget - Working - 正在運作 - - - Disabled - 已停用 - - - Disabled for this torrent - 對此 torrent 停用 - - - + This torrent is private 這是私有的 torrent - Updating... - 正在更新… - - - Not working - 沒有運作 - - - Not contacted yet - 尚未連線 - - - N/A - N/A - - - + Tracker editing 編輯追蹤者 - + Tracker URL: 追蹤者 URL: - - + + Tracker editing failed 編輯追蹤者失敗 - + The tracker URL entered is invalid. 輸入的追蹤者 URL 無效。 - + The tracker URL already exists. 已有這 URL 的追蹤者。 - + Edit tracker URL... 編輯追蹤者 URL… - + Remove tracker 移除追蹤者 - + Copy tracker URL 複製追蹤者 URL - + Force reannounce to selected trackers 強制重新宣告到選取的追蹤器 - + Force reannounce to all trackers 強制重新回報到所有追蹤者 - Tier - - - - URL - URL - - - Status - 狀態 - - - Seeds - 種子 - - - Times Downloaded - 下載時間 - - - + Resize columns 調整欄大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄與其內容的大小 - Peers - 下載者 - - - + Add trackers... 新增追蹤者…… - Leeches - 蝗族 - - - Message - 訊息 - - - + Column visibility 欄目顯示 @@ -11066,37 +11651,37 @@ Please choose a different name and try again. 要增加的追蹤者清單 (每行一個): - + µTorrent compatible list URL: µTorrent 相容清單 URL: - + Download trackers list 下載追蹤者清單 - + Add 新增 - + Trackers list URL error 追蹤者清單 URL 錯誤 - + The trackers list URL cannot be empty 追蹤者清單 URL 不能為空 - + Download trackers list error 下載追蹤者清單錯誤 - + Error occurred when downloading the trackers list. Reason: "%1" 下載追蹤器清單時發生錯誤。原因:「%1」 @@ -11104,87 +11689,70 @@ Please choose a different name and try again. TrackersFilterWidget - All (0) - this is for the tracker filter - 全部 (0) - - - Trackerless (0) - 缺少追蹤者 (0) - - - Error (0) - 錯誤 (0) - - - Warning (0) - 警告 (0) - - - Trackerless - 沒有 Tracker - - - Error (%1) - 錯誤 (%1) - - - + Warning (%1) 警告 (%1) - + Trackerless (%1) 缺少追蹤者 (%1) - + Tracker error (%1) - + Tracker 錯誤 (%1) - + Other error (%1) - + 其他錯誤 (%1) - + Remove tracker - 移除追蹤者 + 移除 Tracker + + + + Start torrents + + + + + Stop torrents + - Resume torrents - 繼續 torrent + 繼續 torrent - Pause torrents - 暫停 torrent + 暫停 torrent - + Remove torrents 移除 torrents - + Removal confirmation - + 移除確認 - + Are you sure you want to remove tracker "%1" from all torrents? - + 您確定要從所有 torrent 移除 tracker「%1」嗎? - + Don't ask me again. - + 不要再問我。 - + All (%1) this is for the tracker filter 全部 (%1) @@ -11193,7 +11761,7 @@ Please choose a different name and try again. TransferController - + 'mode': invalid argument 'mode':無效參數 @@ -11286,9 +11854,8 @@ Please choose a different name and try again. 正在檢查復原資料 - Paused - 暫停 + 暫停 @@ -11313,220 +11880,262 @@ Please choose a different name and try again. 錯誤 - + Name i.e: torrent name 名稱 - + Size i.e: torrent size 大小 - + Progress % Done 進度 - Status Torrent status (e.g. downloading, seeding, paused) - 狀態 + 狀態 - + + Stopped + + + + + Status + Torrent status (e.g. downloading, seeding, stopped) + 狀態 + + + Seeds i.e. full sources (often untranslated) 種子 - + Peers i.e. partial sources (often untranslated) 下載者 - + Down Speed i.e: Download speed 下載速率 - + Up Speed i.e: Upload speed 上傳速率 - + Ratio Share ratio 分享率 - + + Popularity + + + + ETA i.e: Estimated Time of Arrival / Time left 預估剩餘時間 - + Category 分類 - + Tags 標籤 - + Added On Torrent was added to transfer list on 01/01/2010 08:00 增加於 - + Completed On Torrent was completed on 01/01/2010 08:00 完成於 - + Tracker 追蹤者 - + Down Limit i.e: Download limit 下載限制 - + Up Limit i.e: Upload limit 上傳限制 - + Downloaded Amount of data downloaded (e.g. in MB) 已下載 - + Uploaded Amount of data uploaded (e.g. in MB) 已上傳 - + Session Download Amount of data downloaded since program open (e.g. in MB) 今期下載 - + Session Upload Amount of data uploaded since program open (e.g. in MB) 今期上傳 - + Remaining Amount of data left to download (e.g. in MB) 剩餘的 - + + Time Active + Time (duration) the torrent is active (not stopped) + 經過時間 + + + + Yes + + + + + No + + + Time Active Time (duration) the torrent is active (not paused) - 經過時間 + 經過時間 - + Save Path Torrent save path 儲存路徑 - + Incomplete Save Path Torrent incomplete save path 不完整的儲存路徑 - + Completed Amount of data completed (e.g. in MB) 已完成 - + Ratio Limit Upload share ratio limit 分享率限制 - + Last Seen Complete Indicates the time when the torrent was last seen complete/whole 最後完整可見 - + Last Activity Time passed since a chunk was downloaded/uploaded 最後活動 - + Total Size i.e. Size including unwanted data 總大小 - + Availability The number of distributed copies of the torrent 可得性 - + Info Hash v1 i.e: torrent info hash v1 資訊雜湊值 v1 - + Info Hash v2 i.e: torrent info hash v2 資訊雜湊值 v2 - + Reannounce In Indicates the time until next trackers reannounce + 重新發佈於 + + + + Private + Flags private torrents - - + + Ratio / Time Active (in months), indicates how popular the torrent is + + + + + + N/A N/A - + %1 ago e.g.: 1h 20m ago %1 前 - + %1 (seeded for %2) e.g. 4m39s (seeded for 3m10s) %1(已做種 %2) @@ -11535,334 +12144,358 @@ Please choose a different name and try again. TransferListWidget - + Column visibility 欄目顯示 - + Recheck confirmation 確認重新檢查 - + Are you sure you want to recheck the selected torrent(s)? 您確定要重新檢查選取的 torrent 嗎? - + Rename 重新命名 - + New name: 新名稱: - + Choose save path 選擇儲存路徑 - Confirm pause - 確認暫停 + 確認暫停 - Would you like to pause all torrents? - 您想要暫停所有 torrents 嗎? + 您想要暫停所有 torrents 嗎? - Confirm resume - 確認繼續 + 確認繼續 - Would you like to resume all torrents? - 您想要繼續所有 torrents 嗎? + 您想要繼續所有 torrents 嗎? - + Unable to preview 無法預覽 - + The selected torrent "%1" does not contain previewable files 選定的 torrent「%1」不包含可預覽的檔案 - + Resize columns 調整欄大小 - + Resize all non-hidden columns to the size of their contents 調整所有非隱藏欄與其內容的大小 - + Enable automatic torrent management 啟用自動 torrent 管理 - + Are you sure you want to enable Automatic Torrent Management for the selected torrent(s)? They may be relocated. 您確定要為選定的 torrent 啟用自動 Torrent 管理嗎?它們可能會被重新安置。 - Add Tags - 新增標籤 + 新增標籤 - + Choose folder to save exported .torrent files 選擇儲存所匯出 .torrent 檔案的資料夾 - + Export .torrent file failed. Torrent: "%1". Save path: "%2". Reason: "%3" 無法匯出 .torrent 檔案。Torrent:「%1」。儲存路徑:「%2」。原因:「%3」 - + A file with the same name already exists 已存在同名檔案 - + Export .torrent file error 匯出 .torrent 檔案錯誤 - + Remove All Tags 移除所有標籤 - + Remove all tags from selected torrents? 從選取的 torrent 中移除所有標籤? - + Comma-separated tags: 逗號分隔標籤: - + Invalid tag 無效的標籤 - + Tag name: '%1' is invalid 標籤名稱:「%1」無效 - &Resume Resume/start the torrent - 繼續(&R) + 繼續(&R) - &Pause Pause the torrent - 暫停(&P) + 暫停(&P) - Force Resu&me Force Resume/start the torrent - 強制繼續(&M) + 強制繼續(&M) - + Pre&view file... 預覽檔案(&V)... - + Torrent &options... Torrent 選項(&O)... - + Open destination &folder 開啟目標資料夾 (&F) - + Move &up i.e. move up in the queue 上移(&U) - + Move &down i.e. Move down in the queue 下移(&D) - + Move to &top i.e. Move to top of the queue 移至頂端(&T) - + Move to &bottom i.e. Move to bottom of the queue 移至底部(&B) - + Set loc&ation... 設定位置(&A)... - + Force rec&heck 強制重新檢查(&H) - + Force r&eannounce 強制重新回報(&E) - + &Magnet link 磁力連結(&M) - + Torrent &ID Torrent ID(&I) - + + &Comment + 註解(&C) + + + &Name 名稱(&N) - + Info &hash v1 資訊雜湊值 v1(&H) - + Info h&ash v2 資訊雜湊值 v2(&A) - + Re&name... 重新命名(&N)... - + Edit trac&kers... 編輯 tracker(&K)... - + E&xport .torrent... 匯出 .torrent(&X)... - + Categor&y 類別(&Y) - + &New... New category... 新增(&N)... - + &Reset Reset category 重設(&R) - + Ta&gs 標籤(&G) - + &Add... Add / assign multiple tags... 加入(&A)... - + &Remove All Remove all tags 全部移除(&R) - + + Can not force reannounce if torrent is Stopped/Queued/Errored/Checking + + + + &Queue 佇列(&Q) - + &Copy 複製(&C) - + Exported torrent is not necessarily the same as the imported 匯出的 torrent 不一定與匯入的相同 - + Download in sequential order 依順序下載 - + + Add tags + + + + Errors occurred when exporting .torrent files. Check execution log for details. 匯出 .torrent 檔案時發生錯誤。請檢視執行紀錄檔以取得更多資訊。 + &Start + Resume/start the torrent + + + + + Sto&p + Stop the torrent + + + + + Force Star&t + Force Resume/start the torrent + + + + &Remove Remove the torrent 移除(&R) - + Download first and last pieces first 先下載第一和最後一塊 - + Automatic Torrent Management 自動 torrent 管理 - + Automatic mode means that various torrent properties (e.g. save path) will be decided by the associated category 自動模式代表了多個 torrent 屬性(例如儲存路徑)將會由相關的分類來決定 - Can not force reannounce if torrent is Paused/Queued/Errored/Checking - 若 torrent 暫停/排入佇列/錯誤/檢查,則無法強制重新公告 + 若 torrent 暫停/排入佇列/錯誤/檢查,則無法強制重新公告 - + Super seeding mode 超級種子模式 @@ -11907,28 +12540,28 @@ Please choose a different name and try again. 圖示 ID - + UI Theme Configuration. 使用者界面佈景主題設定。 - + The UI Theme changes could not be fully applied. The details can be found in the Log. 使用者界面佈景主題變更可能未完全套用。詳細資訊可以在紀錄檔中找到。 - + Couldn't save UI Theme configuration. Reason: %1 無法儲存使用者佈景主題設定。原因:%1 - - + + Couldn't remove icon file. File: %1. 無法移除圖示檔案。檔案:%1。 - + Couldn't copy icon file. Source: %1. Destination: %2. 無法複製圖示檔案。來源:%1。目標:%2。 @@ -11936,7 +12569,12 @@ Please choose a different name and try again. UIThemeManager - + + Set app style failed. Unknown style: "%1" + + + + Failed to load UI theme from file: "%1" 無法從檔案載入 UI 佈景主題:「%1」 @@ -11967,89 +12605,82 @@ Please choose a different name and try again. Upgrade - + Migrate preferences failed: WebUI https, file: "%1", error: "%2" 遷移偏好設定失敗:WebUI https,檔案:「%1」,錯誤:「%2」 - + Migrated preferences: WebUI https, exported data to file: "%1" 已遷移偏好設定:WebUI https,已匯出資料到檔案:「%1」 - - - - + + + + + Invalid value found in configuration file, reverting it to default. Key: "%1". Invalid value: "%2". 設定檔中有無效的值,將其還原為預設值。鍵:「%1」。無效的值:「%2」。 Utils::ForeignApps - - Python detected, executable name: '%1', version: %2 - 已偵測到 Python,執行檔名稱:「%1」,版本:%2 - - - Python not detected - 未偵測到 Python - Found Python executable. Name: "%1". Version: "%2" - + 找到 Python 可執行檔。名稱:「%1」。版本:「%2」 Failed to find Python executable. Path: "%1". - + 找不到 Python 可執行檔。路徑:「%1」。 Failed to find `python3` executable in PATH environment variable. PATH: "%1" - + 未在 PATH 環境變數下找到 `python3` 可執行檔。PATH:「%1」 Failed to find `python` executable in PATH environment variable. PATH: "%1" - + 未在 PATH 環境變數下找到 `python` 可執行檔。PATH:「%1」 Failed to find `python` executable in Windows Registry. - + 未在 Windows 登錄檔中發現 `python` 可執行檔。 Failed to find Python executable - + 找不到 Python 可執行檔 Utils::IO - + File open error. File: "%1". Error: "%2" 開啟檔案時發生錯誤。檔案:「%1」。錯誤:「%2」 - + File size exceeds limit. File: "%1". File size: %2. Size limit: %3 檔案大小超過限制。檔案:「%1」。檔案大小:%2。大小限制:%3 - + File size exceeds data size limit. File: "%1". File size: %2. Array limit: %3 - + 檔案大小超過限制。檔案:「%1」。檔案大小:%2。陣列限制:%3 - + File read error. File: "%1". Error: "%2" 檔案讀取錯誤。檔案:「%1」。錯誤:「%2」 - + Read size mismatch. File: "%1". Expected: %2. Actual: %3 讀取大小不相符。檔案:「%1」。預期大小:%2。實際大小:%3 @@ -12113,72 +12744,72 @@ Please choose a different name and try again. WebApplication - + Unacceptable session cookie name is specified: '%1'. Default one is used. 指定了不可接受的工作階段 cookie 名稱:「%1」。將會使用預設值。 - + Unacceptable file type, only regular file is allowed. 無法接受的檔案類型,僅允許一般檔案。 - + Symlinks inside alternative UI folder are forbidden. 在替補 UI 資料夾中的符號連結是被禁止的。 - - Using built-in Web UI. - 正在使用內建的 Web UI。 + + Using built-in WebUI. + 使用內建的 WebUI。 - - Using custom Web UI. Location: "%1". - 正在使用自訂的 Web UI。位置:「%1」。 + + Using custom WebUI. Location: "%1". + 使用自訂的 WebUI。位置:「%1」。 - - Web UI translation for selected locale (%1) has been successfully loaded. - 已成功載入指定語系 (%1) 的 Web UI 翻譯。 + + WebUI translation for selected locale (%1) has been successfully loaded. + 成功載入了選定區域設定 (%1) 的 WebUI 翻譯。 - - Couldn't load Web UI translation for selected locale (%1). - 無法載入指定語系 (%1) 的 Web UI 翻譯。 + + Couldn't load WebUI translation for selected locale (%1). + 無法載入指定語系 (%1) 的 WebUI 翻譯。 - + Missing ':' separator in WebUI custom HTTP header: "%1" WebUI 的自訂 HTTP 標頭遺失 ':' 分隔符號:「%1」 - + Web server error. %1 網路伺服器錯誤。%1 - + Web server error. Unknown error. 網路伺服器錯誤。未知錯誤。 - + WebUI: Origin header & Target origin mismatch! Source IP: '%1'. Origin header: '%2'. Target origin: '%3' WebUI:來源檔頭與目標源頭不符合!來源 IP:「%1」╱來源檔頭:「%2」╱目標源頭:「%3」 - + WebUI: Referer header & Target origin mismatch! Source IP: '%1'. Referer header: '%2'. Target origin: '%3' WebUI:Referer 檔頭與目標源頭不符合!來源 IP:「%1」╱Referer 檔頭:「%2」╱目標源頭:「%3」 - + WebUI: Invalid Host header, port mismatch. Request source IP: '%1'. Server port: '%2'. Received Host header: '%3' WebUI:無效的主機檔頭、埠不符合。請求來源 IP:「%1」╱伺服器埠:「%2」╱收到主機檔頭:「%3」 - + WebUI: Invalid Host header. Request source IP: '%1'. Received Host header: '%2' WebUI:無效的主機檔頭。請求來源 IP:「%1」╱收到主機檔頭:「%2」 @@ -12186,143 +12817,136 @@ Please choose a different name and try again. WebUI - - Web UI: HTTPS setup successful - Web UI:HTTPS 設定成功 + + Credentials are not set + 未設定憑證 + + + + WebUI: HTTPS setup successful + WebUI:HTTPS 設定成功 - - Web UI: HTTPS setup failed, fallback to HTTP - Web UI:HTTPS 設定失敗,退回至 HTTP + + WebUI: HTTPS setup failed, fallback to HTTP + WebUI:HTTPS 設定失敗,退回至 HTTP - - Web UI: Now listening on IP: %1, port: %2 - Web UI:正在監聽 IP:%1,連接埠:%2 + + WebUI: Now listening on IP: %1, port: %2 + WebUI:正在監聽 IP:%1,連接埠:%2 - - Web UI: Unable to bind to IP: %1, port: %2. Reason: %3 - Web UI:無法繫結到 IP:%1,連接埠:%2。原因:%3 + + Unable to bind to IP: %1, port: %2. Reason: %3 + 無法繫結到 IP:%1,連接埠:%2。原因:%3 + + + + fs + + + Unknown error + 未知的錯誤 misc - + B bytes B - + KiB kibibytes (1024 bytes) KiB - + MiB mebibytes (1024 kibibytes) MiB - + GiB gibibytes (1024 mibibytes) GiB - + TiB tebibytes (1024 gibibytes) TiB - + PiB pebibytes (1024 tebibytes) PiB - + EiB exbibytes (1024 pebibytes) EiB - + /s per second /s - + %1s e.g: 10 seconds - %1 分鐘 {1s?} + %1s - + %1m e.g: 10 minutes - %1 分鐘 + %1 分鐘 - + %1h %2m e.g: 3 hours 5 minutes - %1 小時 %2 分鐘 + %1 小時 %2 分鐘 - + %1d %2h e.g: 2 days 10 hours - %1 天 %2 小時 + %1 天 %2 小時 - + %1y %2d e.g: 2 years 10 days - %1y %2d + %1年%2天 - %1h %2m - e.g: 3hours 5minutes - %1 小時 %2 分鐘 - - - %1d %2h - e.g: 2days 10hours - %1 天 %2 小時 - - - %1y %2d - e.g: 2years 10days - %1y %2d - - - - + + Unknown Unknown (size) 未知 - + qBittorrent will shutdown the computer now because all downloads are complete. 因為所有下載已經完成,qBittorrent 現在會將電腦關機。 - + < 1m < 1 minute < 1 分鐘 - - %1m - e.g: 10minutes - %1 分鐘 - diff --git a/src/qbittorrent.exe.manifest b/src/qbittorrent.exe.manifest index 939a56d1eaf2..909409854f39 100644 --- a/src/qbittorrent.exe.manifest +++ b/src/qbittorrent.exe.manifest @@ -1,5 +1,12 @@ + + @@ -28,10 +35,13 @@
    - - - - true - - + + + + + SegmentHeap + + true + + diff --git a/src/qbittorrent.rc b/src/qbittorrent.rc index 48ad729de27a..9e1550c08160 100644 --- a/src/qbittorrent.rc +++ b/src/qbittorrent.rc @@ -35,7 +35,7 @@ BEGIN VALUE "FileDescription", "qBittorrent - A Bittorrent Client" VALUE "FileVersion", VER_FILEVERSION_STR VALUE "InternalName", "qbittorrent" - VALUE "LegalCopyright", "Copyright ©2006-2023 The qBittorrent Project" + VALUE "LegalCopyright", "Copyright ©2006-2024 The qBittorrent Project" VALUE "OriginalFilename", "qbittorrent.exe" VALUE "ProductName", "qBittorrent" VALUE "ProductVersion", VER_PRODUCTVERSION_STR diff --git a/src/searchengine/nova3/__init__.py b/src/searchengine/nova3/__init__.py index 2ae28399f5fd..e69de29bb2d1 100644 --- a/src/searchengine/nova3/__init__.py +++ b/src/searchengine/nova3/__init__.py @@ -1 +0,0 @@ -pass diff --git a/src/searchengine/nova3/helpers.py b/src/searchengine/nova3/helpers.py index 2633c0eeaa48..47db27bcc9a3 100644 --- a/src/searchengine/nova3/helpers.py +++ b/src/searchengine/nova3/helpers.py @@ -1,4 +1,4 @@ -#VERSION: 1.43 +#VERSION: 1.51 # Author: # Christophe DUMEZ (chris@qbittorrent.org) @@ -27,21 +27,41 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import datetime import gzip -import html.entities +import html import io import os import re import socket import socks +import ssl +import sys import tempfile import urllib.error -import urllib.parse import urllib.request +from collections.abc import Mapping +from typing import Any, Optional + + +def getBrowserUserAgent() -> str: + """ Disguise as browser to circumvent website blocking """ + + # Firefox release calendar + # https://whattrainisitnow.com/calendar/ + # https://wiki.mozilla.org/index.php?title=Release_Management/Calendar&redirect=no + + baseDate = datetime.date(2024, 4, 16) + baseVersion = 125 + + nowDate = datetime.date.today() + nowVersion = baseVersion + ((nowDate - baseDate).days // 30) + + return f"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:{nowVersion}.0) Gecko/20100101 Firefox/{nowVersion}.0" + + +headers: dict[str, Any] = {'User-Agent': getBrowserUserAgent()} -# Some sites blocks default python User-agent -user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0' -headers = {'User-Agent': user_agent} # SOCKS5 Proxy support if "sock_proxy" in os.environ and len(os.environ["sock_proxy"].strip()) > 0: proxy_str = os.environ["sock_proxy"].strip() @@ -50,74 +70,64 @@ if m is not None: socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, m.group('host'), int(m.group('port')), True, m.group('username'), m.group('password')) - socket.socket = socks.socksocket - - -def htmlentitydecode(s): - # First convert alpha entities (such as é) - # (Inspired from http://mail.python.org/pipermail/python-list/2007-June/443813.html) - def entity2char(m): - entity = m.group(1) - if entity in html.entities.name2codepoint: - return chr(html.entities.name2codepoint[entity]) - return " " # Unknown entity: We replace with a space. - t = re.sub('&(%s);' % '|'.join(html.entities.name2codepoint), entity2char, s) + socket.socket = socks.socksocket # type: ignore[misc] - # Then convert numerical entities (such as é) - t = re.sub(r'&#(\d+);', lambda x: chr(int(x.group(1))), t) - # Then convert hexa entities (such as é) - return re.sub(r'&#x(\w+);', lambda x: chr(int(x.group(1), 16)), t) +# This is only provided for backward compatibility, new code should not use it +htmlentitydecode = html.unescape -def retrieve_url(url): +def retrieve_url(url: str, custom_headers: Mapping[str, Any] = {}, request_data: Optional[Any] = None, ssl_context: Optional[ssl.SSLContext] = None, unescape_html_entities: bool = True) -> str: """ Return the content of the url page as a string """ - req = urllib.request.Request(url, headers=headers) + + request = urllib.request.Request(url, request_data, {**headers, **custom_headers}) try: - response = urllib.request.urlopen(req) + response = urllib.request.urlopen(request, context=ssl_context) except urllib.error.URLError as errno: - print(" ".join(("Connection error:", str(errno.reason)))) + print(f"Connection error: {errno.reason}", file=sys.stderr) return "" - dat = response.read() + data: bytes = response.read() + # Check if it is gzipped - if dat[:2] == b'\x1f\x8b': + if data[:2] == b'\x1f\x8b': # Data is gzip encoded, decode it - compressedstream = io.BytesIO(dat) - gzipper = gzip.GzipFile(fileobj=compressedstream) - extracted_data = gzipper.read() - dat = extracted_data - info = response.info() + with io.BytesIO(data) as compressedStream, gzip.GzipFile(fileobj=compressedStream) as gzipper: + data = gzipper.read() + charset = 'utf-8' try: - ignore, charset = info['Content-Type'].split('charset=') - except Exception: + charset = response.getheader('Content-Type', '').split('charset=', 1)[1] + except IndexError: pass - dat = dat.decode(charset, 'replace') - dat = htmlentitydecode(dat) - # return dat.encode('utf-8', 'replace') - return dat + dataStr = data.decode(charset, 'replace') + + if unescape_html_entities: + dataStr = html.unescape(dataStr) + + return dataStr -def download_file(url, referer=None): + +def download_file(url: str, referer: Optional[str] = None, ssl_context: Optional[ssl.SSLContext] = None) -> str: """ Download file at url and write it to a file, return the path to the file and the url """ - file, path = tempfile.mkstemp() - file = os.fdopen(file, "wb") + # Download url - req = urllib.request.Request(url, headers=headers) + request = urllib.request.Request(url, headers=headers) if referer is not None: - req.add_header('referer', referer) - response = urllib.request.urlopen(req) - dat = response.read() + request.add_header('referer', referer) + response = urllib.request.urlopen(request, context=ssl_context) + data = response.read() + # Check if it is gzipped - if dat[:2] == b'\x1f\x8b': + if data[:2] == b'\x1f\x8b': # Data is gzip encoded, decode it - compressedstream = io.BytesIO(dat) - gzipper = gzip.GzipFile(fileobj=compressedstream) - extracted_data = gzipper.read() - dat = extracted_data + with io.BytesIO(data) as compressedStream, gzip.GzipFile(fileobj=compressedStream) as gzipper: + data = gzipper.read() # Write it to a file - file.write(dat) - file.close() + fileHandle, path = tempfile.mkstemp() + with os.fdopen(fileHandle, "wb") as file: + file.write(data) + # return file path - return (path + " " + url) + return f"{path} {url}" diff --git a/src/searchengine/nova3/nova2.py b/src/searchengine/nova3/nova2.py index 925481cd4333..fef072113049 100644 --- a/src/searchengine/nova3/nova2.py +++ b/src/searchengine/nova3/nova2.py @@ -1,4 +1,4 @@ -#VERSION: 1.44 +#VERSION: 1.48 # Author: # Fabien Devaux @@ -36,18 +36,24 @@ import importlib import pathlib import sys +import traceback import urllib.parse +import xml.etree.ElementTree as ET +from collections.abc import Iterable +from enum import Enum from glob import glob from multiprocessing import Pool, cpu_count from os import path +from typing import Optional -THREADED = True +THREADED: bool = True try: - MAX_THREADS = cpu_count() + MAX_THREADS: int = cpu_count() except NotImplementedError: MAX_THREADS = 1 -CATEGORIES = {'all', 'movies', 'tv', 'music', 'games', 'anime', 'software', 'pictures', 'books'} +Category = Enum('Category', ['all', 'anime', 'books', 'games', 'movies', 'music', 'pictures', 'software', 'tv']) + ################################################################################ # Every engine should have a "search" method taking @@ -58,138 +64,175 @@ ################################################################################ -def initialize_engines(): - """ Import available engines +EngineModuleName = str # the filename of the engine plugin + + +class Engine: + url: str + name: str + supported_categories: dict[str, str] + + def __init__(self) -> None: + pass + + def search(self, what: str, cat: str = Category.all.name) -> None: + pass + + def download_torrent(self, info: str) -> None: + pass - Return list of available engines + +# global state +engine_dict: dict[EngineModuleName, Optional[type[Engine]]] = {} + + +def list_engines() -> list[EngineModuleName]: + """ List all engines, + including broken engines that would fail on import + + Return list of all engines' module name """ - supported_engines = [] - engines = glob(path.join(path.dirname(__file__), 'engines', '*.py')) - for engine in engines: - engi = path.basename(engine).split('.')[0].strip() - if len(engi) == 0 or engi.startswith('_'): - continue - try: - # import engines.[engine] - engine_module = importlib.import_module("engines." + engi) - # bind class name - globals()[engi] = getattr(engine_module, engi) - supported_engines.append(engi) - except Exception: - pass + names = [] - return supported_engines + for engine_path in glob(path.join(path.dirname(__file__), 'engines', '*.py')): + engine_module_name = path.basename(engine_path).split('.')[0].strip() + if len(engine_module_name) == 0 or engine_module_name.startswith('_'): + continue + names.append(engine_module_name) + return sorted(names) -def engines_to_xml(supported_engines): - """ Generates xml for supported engines """ - tab = " " * 4 - for short_name in supported_engines: - search_engine = globals()[short_name]() +def import_engine(engine_module_name: EngineModuleName) -> Optional[type[Engine]]: + if engine_module_name in engine_dict: + return engine_dict[engine_module_name] - supported_categories = "" - if hasattr(search_engine, "supported_categories"): - supported_categories = " ".join((key - for key in search_engine.supported_categories.keys() - if key != "all")) + # when import fails, return `None` + engine_class = None + try: + # import engines.[engine_module_name] + engine_module = importlib.import_module(f"engines.{engine_module_name}") + engine_class = getattr(engine_module, engine_module_name) + except Exception: + pass - yield "".join((tab, "<", short_name, ">\n", - tab, tab, "", search_engine.name, "\n", - tab, tab, "", search_engine.url, "\n", - tab, tab, "", supported_categories, "\n", - tab, "\n")) + engine_dict[engine_module_name] = engine_class + return engine_class -def displayCapabilities(supported_engines): +def get_capabilities(engines: Iterable[EngineModuleName]) -> str: """ - Display capabilities in XML format + Return capabilities in XML format - + long name http://example.com movies music games - + """ - xml = "".join(("\n", - "".join(engines_to_xml(supported_engines)), - "")) - print(xml) + capabilities_element = ET.Element('capabilities') + + for engine_module_name in engines: + engine_class = import_engine(engine_module_name) + if engine_class is None: + continue + + engine_module_element = ET.SubElement(capabilities_element, engine_module_name) + + ET.SubElement(engine_module_element, 'name').text = engine_class.name + ET.SubElement(engine_module_element, 'url').text = engine_class.url -def run_search(engine_list): + supported_categories = "" + if hasattr(engine_class, "supported_categories"): + supported_categories = " ".join((key + for key in sorted(engine_class.supported_categories.keys()) + if key != Category.all.name)) + ET.SubElement(engine_module_element, 'categories').text = supported_categories + + ET.indent(capabilities_element) + return ET.tostring(capabilities_element, 'unicode') + + +def run_search(search_params: tuple[type[Engine], str, Category]) -> bool: """ Run search in engine - @param engine_list List with engine, query and category + @param search_params Tuple with engine, query and category @retval False if any exceptions occurred @retval True otherwise """ - engine, what, cat = engine_list + + engine_class, what, cat = search_params try: - engine = engine() + engine = engine_class() # avoid exceptions due to invalid category if hasattr(engine, 'supported_categories'): - if cat in engine.supported_categories: - engine.search(what, cat) + if cat.name in engine.supported_categories: + engine.search(what, cat.name) else: engine.search(what) - return True except Exception: + traceback.print_exc() return False -def main(args): - # qbt tend to run this script in 'isolate mode' so append the current path manually - current_path = str(pathlib.Path(__file__).parent.resolve()) - if current_path not in sys.path: - sys.path.append(current_path) - - supported_engines = initialize_engines() - - if not args: - raise SystemExit("./nova2.py [all|engine1[,engine2]*] \n" - "available engines: %s" % (','.join(supported_engines))) - - elif args[0] == "--capabilities": - displayCapabilities(supported_engines) - return - - elif len(args) < 3: - raise SystemExit("./nova2.py [all|engine1[,engine2]*] \n" - "available engines: %s" % (','.join(supported_engines))) - - # get only unique engines with set - engines_list = set(e.lower() for e in args[0].strip().split(',')) - - if 'all' in engines_list: - engines_list = supported_engines - else: - # discard un-supported engines - engines_list = [engine for engine in engines_list - if engine in supported_engines] - - if not engines_list: - # engine list is empty. Nothing to do here - return - - cat = args[1].lower() - - if cat not in CATEGORIES: - raise SystemExit(" - ".join(('Invalid category', cat))) - - what = urllib.parse.quote(' '.join(args[2:])) - if THREADED: - # child process spawning is controlled min(number of searches, number of cpu) - with Pool(min(len(engines_list), MAX_THREADS)) as pool: - pool.map(run_search, ([globals()[engine], what, cat] for engine in engines_list)) - else: - # py3 note: map is needed to be evaluated for content to be executed - all(map(run_search, ([globals()[engine], what, cat] for engine in engines_list))) +if __name__ == "__main__": + def main() -> int: + # qbt tend to run this script in 'isolate mode' so append the current path manually + current_path = str(pathlib.Path(__file__).parent.resolve()) + if current_path not in sys.path: + sys.path.append(current_path) + + # https://docs.python.org/3/library/sys.html#sys.exit + class ExitCode(Enum): + OK = 0 + AppError = 1 + ArgError = 2 + + found_engines = list_engines() + + prog_name = sys.argv[0] + prog_usage = (f"Usage: {prog_name} all|engine1[,engine2]* \n" + f"To list available engines: {prog_name} --capabilities [--names]\n" + f"Found engines: {','.join(found_engines)}") + + if "--capabilities" in sys.argv: + if "--names" in sys.argv: + print(",".join((e for e in found_engines if import_engine(e) is not None))) + return ExitCode.OK.value + + print(get_capabilities(found_engines)) + return ExitCode.OK.value + elif len(sys.argv) < 4: + print(prog_usage, file=sys.stderr) + return ExitCode.ArgError.value + + # get unique engines + engs = set(arg.strip().lower() for arg in sys.argv[1].split(',')) + engines = found_engines if 'all' in engs else [e for e in found_engines if e in engs] + + cat = sys.argv[2].lower() + try: + category = Category[cat] + except KeyError: + print(f"Invalid category: {cat}", file=sys.stderr) + return ExitCode.ArgError.value + + what = urllib.parse.quote(' '.join(sys.argv[3:])) + params = ((engine_class, what, category) for e in engines if (engine_class := import_engine(e)) is not None) + + search_success = False + if THREADED: + processes = max(min(len(engines), MAX_THREADS), 1) + with Pool(processes) as pool: + search_success = all(pool.map(run_search, params)) + else: + search_success = all(map(run_search, params)) + return ExitCode.OK.value if search_success else ExitCode.AppError.value -if __name__ == "__main__": - main(sys.argv[1:]) + sys.exit(main()) diff --git a/src/searchengine/nova3/nova2dl.py b/src/searchengine/nova3/nova2dl.py index 7146a9cb13b1..c35646654f11 100644 --- a/src/searchengine/nova3/nova2dl.py +++ b/src/searchengine/nova3/nova2dl.py @@ -1,7 +1,9 @@ -#VERSION: 1.23 +#VERSION: 1.24 # Author: # Christophe DUMEZ (chris@qbittorrent.org) +# Contributors: +# Vladimir Golovnev (glassez@yandex.ru) # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -27,9 +29,7 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -import glob import importlib -import os import pathlib import sys @@ -40,34 +40,24 @@ from helpers import download_file -supported_engines = dict() - -engines = glob.glob(os.path.join(os.path.dirname(__file__), 'engines', '*.py')) -for engine in engines: - e = engine.split(os.sep)[-1][:-3] - if len(e.strip()) == 0: - continue - if e.startswith('_'): - continue - try: - module = importlib.import_module("engines." + e) - engine_class = getattr(module, e) - globals()[e] = engine_class - engine_url = getattr(engine_class, 'url') - supported_engines[engine_url] = e - except Exception: - pass - if __name__ == '__main__': if len(sys.argv) < 3: - raise SystemExit('./nova2dl.py engine_url download_parameter') - engine_url = sys.argv[1].strip() + raise SystemExit('./nova2dl.py engine_name download_parameter') + + engine_name = sys.argv[1].strip() download_param = sys.argv[2].strip() - if engine_url not in supported_engines.keys(): - raise SystemExit('./nova2dl.py: this engine_url was not recognized') - engine = globals()[supported_engines[engine_url]]() + + try: + module = importlib.import_module("engines." + engine_name) + engine_class = getattr(module, engine_name) + engine = engine_class() + except Exception as e: + print(repr(e)) + raise SystemExit('./nova2dl.py: this engine_name was not recognized') + if hasattr(engine, 'download_torrent'): engine.download_torrent(download_param) else: print(download_file(download_param)) + sys.exit(0) diff --git a/src/searchengine/nova3/novaprinter.py b/src/searchengine/nova3/novaprinter.py index 09250dc85ce4..e5c0b0b7461a 100644 --- a/src/searchengine/nova3/novaprinter.py +++ b/src/searchengine/nova3/novaprinter.py @@ -1,4 +1,4 @@ -#VERSION: 1.46 +#VERSION: 1.52 # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -24,44 +24,65 @@ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +import re +from typing import TypedDict, Union -def prettyPrinter(dictionary): - dictionary['size'] = anySizeToBytes(dictionary['size']) - outtext = "|".join((dictionary["link"], dictionary["name"].replace("|", " "), - str(dictionary["size"]), str(dictionary["seeds"]), - str(dictionary["leech"]), dictionary["engine_url"])) - if 'desc_link' in dictionary: - outtext = "|".join((outtext, dictionary["desc_link"])) +SearchResults = TypedDict('SearchResults', { + 'link': str, + 'name': str, + 'size': Union[float, int, str], # TODO: use `float | int | str` when using Python >= 3.10 + 'seeds': int, + 'leech': int, + 'engine_url': str, + 'desc_link': str, # Optional # TODO: use `NotRequired[str]` when using Python >= 3.11 + 'pub_date': int # Optional # TODO: use `NotRequired[int]` when using Python >= 3.11 +}) + + +def prettyPrinter(dictionary: SearchResults) -> None: + outtext = "|".join(( + dictionary["link"], + dictionary["name"].replace("|", " "), + str(anySizeToBytes(dictionary['size'])), + str(dictionary["seeds"]), + str(dictionary["leech"]), + dictionary["engine_url"], + dictionary.get("desc_link", ""), # Optional + str(dictionary.get("pub_date", -1)) # Optional + )) # fd 1 is stdout with open(1, 'w', encoding='utf-8', closefd=False) as utf8stdout: print(outtext, file=utf8stdout) -def anySizeToBytes(size_string): +sizeUnitRegex: re.Pattern[str] = re.compile(r"^(?P\d*\.?\d+) *(?P[a-z]+)?", re.IGNORECASE) + + +# TODO: use `float | int | str` when using Python >= 3.10 +def anySizeToBytes(size_string: Union[float, int, str]) -> int: """ Convert a string like '1 KB' to '1024' (bytes) + + The canonical type for `size_string` is `str`. However numeric types are also accepted in order to + accommodate poorly written plugins. """ - # separate integer from unit - try: - size, unit = size_string.split() - except: - try: - size = size_string.strip() - unit = ''.join([c for c in size if c.isalpha()]) - if len(unit) > 0: - size = size[:-len(unit)] - except: - return -1 - if len(size) == 0: + + if isinstance(size_string, int): + return size_string + if isinstance(size_string, float): + return round(size_string) + + match = sizeUnitRegex.match(size_string.strip()) + if match is None: return -1 - size = float(size) - if len(unit) == 0: - return int(size) - short_unit = unit.upper()[0] - - # convert - units_dict = {'T': 40, 'G': 30, 'M': 20, 'K': 10} - if short_unit in units_dict: - size = size * 2**units_dict[short_unit] - return int(size) + + size = float(match.group('size')) # need to match decimals + unit = match.group('unit') + + if unit is not None: + units_exponents = {'T': 40, 'G': 30, 'M': 20, 'K': 10} + exponent = units_exponents.get(unit[0].upper(), 0) + size *= 2**exponent + + return round(size) diff --git a/src/update_qrc_files.py b/src/update_qrc_files.py deleted file mode 100755 index 1767bc962706..000000000000 --- a/src/update_qrc_files.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# * Neither the name of the author nor the names of its contributors may be -# used to endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Small script to update qrc files (lang.qrc, icons.qrc) -# by Christophe Dumez - -import os -from os.path import splitext, join - -# update languages files directory -languages_list = [x for x in os.listdir('lang') if x.endswith('.qm')] -output = ''' - -''' -for language in languages_list: - output += ' %s'%('lang'+os.sep+language) - output += os.linesep -output += ''' -''' -lang_file = open('lang.qrc', 'w') -lang_file.write(output) -lang_file.close() - -# update search_engine directory -os.chdir('gui/searchengine') -search_list = [] -for root, dirs, files in os.walk('nova3'): - for file in files: - if file.startswith("__"): - continue - if splitext(file)[-1] in ('.py', '.png'): - search_list.append(join(root, file)) - -output = ''' - -''' -for file in search_list: - output += ' %s'%(file) - output += os.linesep -output += ''' -''' -search_file = open('search.qrc', 'w') -search_file.write(output) -search_file.close() - -os.chdir('../..'); - -# update icons files directory -icons_list = [] -for root, dirs, files in os.walk('icons'): - if 'skin_unused' in dirs: - dirs.remove('skin_unused') - for file in files: - if splitext(file)[-1] in ('.png', '.jpg', '.gif'): - icons_list.append(join(root, file)) - -output = ''' - -''' -for icon in icons_list: - output += ' %s'%(icon) - output += os.linesep -output += ''' -''' -icons_file = open('icons.qrc', 'w') -icons_file.write(output) -icons_file.close() diff --git a/src/webui/CMakeLists.txt b/src/webui/CMakeLists.txt index 610774a72f52..9dfc12831cef 100644 --- a/src/webui/CMakeLists.txt +++ b/src/webui/CMakeLists.txt @@ -9,6 +9,7 @@ add_library(qbt_webui STATIC api/rsscontroller.h api/searchcontroller.h api/synccontroller.h + api/torrentcreatorcontroller.h api/torrentscontroller.h api/transfercontroller.h api/serialize/serialize_torrent.h @@ -25,6 +26,7 @@ add_library(qbt_webui STATIC api/rsscontroller.cpp api/searchcontroller.cpp api/synccontroller.cpp + api/torrentcreatorcontroller.cpp api/torrentscontroller.cpp api/transfercontroller.cpp api/serialize/serialize_torrent.cpp diff --git a/src/webui/api/apicontroller.cpp b/src/webui/api/apicontroller.cpp index 2d0aeb8aaf5d..ca2c318f42be 100644 --- a/src/webui/api/apicontroller.cpp +++ b/src/webui/api/apicontroller.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018, 2022 Vladimir Golovnev + * Copyright (C) 2018-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -32,17 +32,24 @@ #include #include +#include #include -#include #include "apierror.h" +void APIResult::clear() +{ + data.clear(); + mimeType.clear(); + filename.clear(); +} + APIController::APIController(IApplication *app, QObject *parent) : ApplicationComponent(app, parent) { } -QVariant APIController::run(const QString &action, const StringMap ¶ms, const DataMap &data) +APIResult APIController::run(const QString &action, const StringMap ¶ms, const DataMap &data) { m_result.clear(); // clear result m_params = params; @@ -65,7 +72,7 @@ const DataMap &APIController::data() const return m_data; } -void APIController::requireParams(const QVector &requiredParams) const +void APIController::requireParams(const QList &requiredParams) const { const bool hasAllRequiredParams = std::all_of(requiredParams.cbegin(), requiredParams.cend() , [this](const QString &requiredParam) @@ -79,20 +86,22 @@ void APIController::requireParams(const QVector &requiredParams) const void APIController::setResult(const QString &result) { - m_result = result; + m_result.data = result; } void APIController::setResult(const QJsonArray &result) { - m_result = QJsonDocument(result); + m_result.data = QJsonDocument(result); } void APIController::setResult(const QJsonObject &result) { - m_result = QJsonDocument(result); + m_result.data = QJsonDocument(result); } -void APIController::setResult(const QByteArray &result) +void APIController::setResult(const QByteArray &result, const QString &mimeType, const QString &filename) { - m_result = result; + m_result.data = result; + m_result.mimeType = mimeType; + m_result.filename = filename; } diff --git a/src/webui/api/apicontroller.h b/src/webui/api/apicontroller.h index b81f7b64211d..edcfc16fc3d7 100644 --- a/src/webui/api/apicontroller.h +++ b/src/webui/api/apicontroller.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018, 2022 Vladimir Golovnev + * Copyright (C) 2018-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -30,15 +30,23 @@ #include #include +#include #include #include "base/applicationcomponent.h" -class QString; - using DataMap = QHash; using StringMap = QHash; +struct APIResult +{ + QVariant data; + QString mimeType; + QString filename; + + void clear(); +}; + class APIController : public ApplicationComponent { Q_OBJECT @@ -47,20 +55,20 @@ class APIController : public ApplicationComponent public: explicit APIController(IApplication *app, QObject *parent = nullptr); - QVariant run(const QString &action, const StringMap ¶ms, const DataMap &data = {}); + APIResult run(const QString &action, const StringMap ¶ms, const DataMap &data = {}); protected: const StringMap ¶ms() const; const DataMap &data() const; - void requireParams(const QVector &requiredParams) const; + void requireParams(const QList &requiredParams) const; void setResult(const QString &result); void setResult(const QJsonArray &result); void setResult(const QJsonObject &result); - void setResult(const QByteArray &result); + void setResult(const QByteArray &result, const QString &mimeType = {}, const QString &filename = {}); private: StringMap m_params; DataMap m_data; - QVariant m_result; + APIResult m_result; }; diff --git a/src/webui/api/appcontroller.cpp b/src/webui/api/appcontroller.cpp index a99c8d1813e7..95bb6e0d01fe 100644 --- a/src/webui/api/appcontroller.cpp +++ b/src/webui/api/appcontroller.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Jonathan Ketchker * Copyright (C) 2018 Vladimir Golovnev * Copyright (C) 2006-2012 Christophe Dumez * Copyright (C) 2006-2012 Ishan Arora @@ -35,9 +36,12 @@ #include #include +#include +#include #include #include #include +#include #include #include #include @@ -47,6 +51,7 @@ #include "base/bittorrent/session.h" #include "base/global.h" #include "base/interfaces/iapplication.h" +#include "base/net/downloadmanager.h" #include "base/net/portforwarder.h" #include "base/net/proxyconfigurationmanager.h" #include "base/path.h" @@ -55,16 +60,24 @@ #include "base/rss/rss_session.h" #include "base/torrentfileguard.h" #include "base/torrentfileswatcher.h" +#include "base/utils/datetime.h" #include "base/utils/fs.h" #include "base/utils/misc.h" #include "base/utils/net.h" #include "base/utils/password.h" #include "base/utils/string.h" #include "base/version.h" +#include "apierror.h" #include "../webapplication.h" using namespace std::chrono_literals; +const QString KEY_COOKIE_NAME = u"name"_s; +const QString KEY_COOKIE_DOMAIN = u"domain"_s; +const QString KEY_COOKIE_PATH = u"path"_s; +const QString KEY_COOKIE_VALUE = u"value"_s; +const QString KEY_COOKIE_EXPIRATION_DATE = u"expirationDate"_s; + void AppController::webapiVersionAction() { setResult(API_VERSION.toString()); @@ -77,6 +90,17 @@ void AppController::versionAction() void AppController::buildInfoAction() { + const QString platformName = +#ifdef Q_OS_LINUX + u"linux"_s; +#elif defined(Q_OS_MACOS) + u"macos"_s; +#elif defined(Q_OS_WIN) + u"windows"_s; +#else + u"unknown"_s; +#endif + const QJsonObject versions = { {u"qt"_s, QStringLiteral(QT_VERSION_STR)}, @@ -84,7 +108,8 @@ void AppController::buildInfoAction() {u"boost"_s, Utils::Misc::boostVersionString()}, {u"openssl"_s, Utils::Misc::opensslVersionString()}, {u"zlib"_s, Utils::Misc::zlibVersionString()}, - {u"bitness"_s, (QT_POINTER_SIZE * 8)} + {u"bitness"_s, (QT_POINTER_SIZE * 8)}, + {u"platform"_s, platformName} }; setResult(versions); } @@ -111,6 +136,9 @@ void AppController::preferencesAction() // Language data[u"locale"_s] = pref->getLocale(); data[u"performance_warning"_s] = session->isPerformanceWarningEnabled(); + data[u"status_bar_external_ip"_s] = pref->isStatusbarExternalIPDisplayed(); + // Transfer List + data[u"confirm_torrent_deletion"_s] = pref->confirmTorrentDeletion(); // Log file data[u"file_log_enabled"_s] = app()->isFileLoggerEnabled(); data[u"file_log_path"_s] = app()->fileLoggerPath().toString(); @@ -119,17 +147,20 @@ void AppController::preferencesAction() data[u"file_log_delete_old"_s] = app()->isFileLoggerDeleteOld(); data[u"file_log_age"_s] = app()->fileLoggerAge(); data[u"file_log_age_type"_s] = app()->fileLoggerAgeType(); + // Delete torrent contents files on torrent removal + data[u"delete_torrent_content_files"_s] = pref->removeTorrentContent(); // Downloads // When adding a torrent data[u"torrent_content_layout"_s] = Utils::String::fromEnum(session->torrentContentLayout()); data[u"add_to_top_of_queue"_s] = session->isAddTorrentToQueueTop(); - data[u"start_paused_enabled"_s] = session->isAddTorrentPaused(); + data[u"add_stopped_enabled"_s] = session->isAddTorrentStopped(); data[u"torrent_stop_condition"_s] = Utils::String::fromEnum(session->torrentStopCondition()); data[u"merge_trackers"_s] = session->isMergeTrackersEnabled(); data[u"auto_delete_mode"_s] = static_cast(TorrentFileGuard::autoDeleteMode()); data[u"preallocate_all"_s] = session->isPreallocationEnabled(); data[u"incomplete_files_ext"_s] = session->isAppendExtensionEnabled(); + data[u"use_unwanted_folder"_s] = session->isUnwantedFolderEnabled(); // Saving Management data[u"auto_tmm_enabled"_s] = !session->isAutoTMMDisabledByDefault(); data[u"torrent_changed_tmm_enabled"_s] = !session->isDisableAutoTMMWhenCategoryChanged(); @@ -185,6 +216,8 @@ void AppController::preferencesAction() // Connection // Listening Port data[u"listen_port"_s] = session->port(); + data[u"ssl_enabled"_s] = session->isSSLEnabled(); + data[u"ssl_listen_port"_s] = session->sslPort(); data[u"random_port"_s] = (session->port() == 0); // deprecated data[u"upnp"_s] = Net::PortForwarder::instance()->isEnabled(); // Connections Limits @@ -270,10 +303,13 @@ void AppController::preferencesAction() data[u"max_seeding_time"_s] = session->globalMaxSeedingMinutes(); data[u"max_inactive_seeding_time_enabled"_s] = (session->globalMaxInactiveSeedingMinutes() >= 0.); data[u"max_inactive_seeding_time"_s] = session->globalMaxInactiveSeedingMinutes(); - data[u"max_ratio_act"_s] = session->maxRatioAction(); + data[u"max_ratio_act"_s] = static_cast(session->shareLimitAction()); // Add trackers data[u"add_trackers_enabled"_s] = session->isAddTrackersEnabled(); data[u"add_trackers"_s] = session->additionalTrackers(); + data[u"add_trackers_from_url_enabled"_s] = session->isAddTrackersFromURLEnabled(); + data[u"add_trackers_url"_s] = session->additionalTrackersURL(); + data[u"add_trackers_url_list"_s] = session->additionalTrackersFromURL(); // WebUI // HTTP Server @@ -318,6 +354,7 @@ void AppController::preferencesAction() // RSS settings data[u"rss_refresh_interval"_s] = RSS::Session::instance()->refreshInterval(); + data[u"rss_fetch_delay"_s] = static_cast(RSS::Session::instance()->fetchDelay().count()); data[u"rss_max_articles_per_feed"_s] = RSS::Session::instance()->maxArticlesPerFeed(); data[u"rss_processing_enabled"_s] = RSS::Session::instance()->isProcessingEnabled(); data[u"rss_auto_downloading_enabled"_s] = RSS::AutoDownloader::instance()->isProcessingEnabled(); @@ -328,6 +365,8 @@ void AppController::preferencesAction() // qBitorrent preferences // Resume data storage type data[u"resume_data_storage_type"_s] = Utils::String::fromEnum(session->resumeDataStorageType()); + // Torrent content removing mode + data[u"torrent_content_remove_option"_s] = Utils::String::fromEnum(session->torrentContentRemoveOption()); // Physical memory (RAM) usage limit data[u"memory_working_set_limit"_s] = app()->memoryWorkingSetLimit(); // Current network interface @@ -338,16 +377,32 @@ void AppController::preferencesAction() data[u"current_interface_address"_s] = session->networkInterfaceAddress(); // Save resume data interval data[u"save_resume_data_interval"_s] = session->saveResumeDataInterval(); + // Save statistics interval + data[u"save_statistics_interval"_s] = static_cast(session->saveStatisticsInterval().count()); // .torrent file size limit data[u"torrent_file_size_limit"_s] = pref->getTorrentFileSizeLimit(); + // Confirm torrent recheck + data[u"confirm_torrent_recheck"_s] = pref->confirmTorrentRecheck(); // Recheck completed torrents data[u"recheck_completed_torrents"_s] = pref->recheckTorrentsOnCompletion(); + // Customize application instance name + data[u"app_instance_name"_s] = app()->instanceName(); // Refresh interval data[u"refresh_interval"_s] = session->refreshInterval(); // Resolve peer countries data[u"resolve_peer_countries"_s] = pref->resolvePeerCountries(); // Reannounce to all trackers when ip/port changed data[u"reannounce_when_address_changed"_s] = session->isReannounceWhenAddressChangedEnabled(); + // Embedded tracker + data[u"enable_embedded_tracker"_s] = session->isTrackerEnabled(); + data[u"embedded_tracker_port"_s] = pref->getTrackerPort(); + data[u"embedded_tracker_port_forwarding"_s] = pref->isTrackerPortForwardingEnabled(); + // Mark-of-the-Web + data[u"mark_of_the_web"_s] = pref->isMarkOfTheWebEnabled(); + // Ignore SSL errors + data[u"ignore_ssl_errors"_s] = pref->isIgnoreSSLErrors(); + // Python executable path + data[u"python_executable_path"_s] = pref->getPythonExecutablePath().toString(); // libtorrent preferences // Bdecode depth limit @@ -410,14 +465,6 @@ void AppController::preferencesAction() data[u"ssrf_mitigation"_s] = session->isSSRFMitigationEnabled(); // Disallow connection to peers on privileged ports data[u"block_peers_on_privileged_ports"_s] = session->blockPeersOnPrivilegedPorts(); - // Embedded tracker - data[u"enable_embedded_tracker"_s] = session->isTrackerEnabled(); - data[u"embedded_tracker_port"_s] = pref->getTrackerPort(); - data[u"embedded_tracker_port_forwarding"_s] = pref->isTrackerPortForwardingEnabled(); - // Mark-of-the-Web - data[u"mark_of_the_web"_s] = pref->isMarkOfTheWebEnabled(); - // Python executable path - data[u"python_executable_path"_s] = pref->getPythonExecutablePath().toString(); // Choking algorithm data[u"upload_slots_behavior"_s] = static_cast(session->chokingAlgorithm()); // Seed choking algorithm @@ -426,6 +473,7 @@ void AppController::preferencesAction() data[u"announce_to_all_trackers"_s] = session->announceToAllTrackers(); data[u"announce_to_all_tiers"_s] = session->announceToAllTiers(); data[u"announce_ip"_s] = session->announceIP(); + data[u"announce_port"_s] = session->announcePort(); data[u"max_concurrent_http_announces"_s] = session->maxConcurrentHTTPAnnounces(); data[u"stop_tracker_timeout"_s] = session->stopTrackerTimeout(); // Peer Turnover @@ -476,8 +524,13 @@ void AppController::setPreferencesAction() pref->setLocale(locale); } } + if (hasKey(u"status_bar_external_ip"_s)) + pref->setStatusbarExternalIPDisplayed(it.value().toBool()); if (hasKey(u"performance_warning"_s)) session->setPerformanceWarningEnabled(it.value().toBool()); + // Transfer List + if (hasKey(u"confirm_torrent_deletion"_s)) + pref->setConfirmTorrentDeletion(it.value().toBool()); // Log file if (hasKey(u"file_log_enabled"_s)) app()->setFileLoggerEnabled(it.value().toBool()); @@ -493,6 +546,9 @@ void AppController::setPreferencesAction() app()->setFileLoggerAge(it.value().toInt()); if (hasKey(u"file_log_age_type"_s)) app()->setFileLoggerAgeType(it.value().toInt()); + // Delete torrent content files on torrent removal + if (hasKey(u"delete_torrent_content_files"_s)) + pref->setRemoveTorrentContent(it.value().toBool()); // Downloads // When adding a torrent @@ -500,8 +556,8 @@ void AppController::setPreferencesAction() session->setTorrentContentLayout(Utils::String::toEnum(it.value().toString(), BitTorrent::TorrentContentLayout::Original)); if (hasKey(u"add_to_top_of_queue"_s)) session->setAddTorrentToQueueTop(it.value().toBool()); - if (hasKey(u"start_paused_enabled"_s)) - session->setAddTorrentPaused(it.value().toBool()); + if (hasKey(u"add_stopped_enabled"_s)) + session->setAddTorrentStopped(it.value().toBool()); if (hasKey(u"torrent_stop_condition"_s)) session->setTorrentStopCondition(Utils::String::toEnum(it.value().toString(), BitTorrent::Torrent::StopCondition::None)); if (hasKey(u"merge_trackers"_s)) @@ -513,6 +569,8 @@ void AppController::setPreferencesAction() session->setPreallocationEnabled(it.value().toBool()); if (hasKey(u"incomplete_files_ext"_s)) session->setAppendExtensionEnabled(it.value().toBool()); + if (hasKey(u"use_unwanted_folder"_s)) + session->setUnwantedFolderEnabled(it.value().toBool()); // Saving Management if (hasKey(u"auto_tmm_enabled"_s)) @@ -632,6 +690,11 @@ void AppController::setPreferencesAction() { session->setPort(it.value().toInt()); } + // SSL Torrents + if (hasKey(u"ssl_enabled"_s)) + session->setSSLEnabled(it.value().toBool()); + if (hasKey(u"ssl_listen_port"_s)) + session->setSSLPort(it.value().toInt()); if (hasKey(u"upnp"_s)) Net::PortForwarder::instance()->setEnabled(it.value().toBool()); // Connections Limits @@ -781,12 +844,33 @@ void AppController::setPreferencesAction() ? m[u"max_inactive_seeding_time"_s].toInt() : -1); } if (hasKey(u"max_ratio_act"_s)) - session->setMaxRatioAction(static_cast(it.value().toInt())); + { + switch (it.value().toInt()) + { + default: + case 0: + session->setShareLimitAction(BitTorrent::ShareLimitAction::Stop); + break; + case 1: + session->setShareLimitAction(BitTorrent::ShareLimitAction::Remove); + break; + case 2: + session->setShareLimitAction(BitTorrent::ShareLimitAction::EnableSuperSeeding); + break; + case 3: + session->setShareLimitAction(BitTorrent::ShareLimitAction::RemoveWithContent); + break; + } + } // Add trackers if (hasKey(u"add_trackers_enabled"_s)) session->setAddTrackersEnabled(it.value().toBool()); if (hasKey(u"add_trackers"_s)) session->setAdditionalTrackers(it.value().toString()); + if (hasKey(u"add_trackers_from_url_enabled"_s)) + session->setAddTrackersFromURLEnabled(it.value().toBool()); + if (hasKey(u"add_trackers_url"_s)) + session->setAdditionalTrackersURL(it.value().toString()); // WebUI // HTTP Server @@ -862,6 +946,8 @@ void AppController::setPreferencesAction() if (hasKey(u"rss_refresh_interval"_s)) RSS::Session::instance()->setRefreshInterval(it.value().toInt()); + if (hasKey(u"rss_fetch_delay"_s)) + RSS::Session::instance()->setFetchDelay(std::chrono::seconds(it.value().toLongLong())); if (hasKey(u"rss_max_articles_per_feed"_s)) RSS::Session::instance()->setMaxArticlesPerFeed(it.value().toInt()); if (hasKey(u"rss_processing_enabled"_s)) @@ -878,6 +964,9 @@ void AppController::setPreferencesAction() // Resume data storage type if (hasKey(u"resume_data_storage_type"_s)) session->setResumeDataStorageType(Utils::String::toEnum(it.value().toString(), BitTorrent::ResumeDataStorageType::Legacy)); + // Torrent content removing mode + if (hasKey(u"torrent_content_remove_option"_s)) + session->setTorrentContentRemoveOption(Utils::String::toEnum(it.value().toString(), BitTorrent::TorrentContentRemoveOption::MoveToTrash)); // Physical memory (RAM) usage limit if (hasKey(u"memory_working_set_limit"_s)) app()->setMemoryWorkingSetLimit(it.value().toInt()); @@ -906,12 +995,21 @@ void AppController::setPreferencesAction() // Save resume data interval if (hasKey(u"save_resume_data_interval"_s)) session->setSaveResumeDataInterval(it.value().toInt()); + // Save statistics interval + if (hasKey(u"save_statistics_interval"_s)) + session->setSaveStatisticsInterval(std::chrono::minutes(it.value().toInt())); // .torrent file size limit if (hasKey(u"torrent_file_size_limit"_s)) pref->setTorrentFileSizeLimit(it.value().toLongLong()); + // Confirm torrent recheck + if (hasKey(u"confirm_torrent_recheck"_s)) + pref->setConfirmTorrentRecheck(it.value().toBool()); // Recheck completed torrents if (hasKey(u"recheck_completed_torrents"_s)) pref->recheckTorrentsOnCompletion(it.value().toBool()); + // Customize application instance name + if (hasKey(u"app_instance_name"_s)) + app()->setInstanceName(it.value().toString()); // Refresh interval if (hasKey(u"refresh_interval"_s)) session->setRefreshInterval(it.value().toInt()); @@ -921,6 +1019,22 @@ void AppController::setPreferencesAction() // Reannounce to all trackers when ip/port changed if (hasKey(u"reannounce_when_address_changed"_s)) session->setReannounceWhenAddressChangedEnabled(it.value().toBool()); + // Embedded tracker + if (hasKey(u"embedded_tracker_port"_s)) + pref->setTrackerPort(it.value().toInt()); + if (hasKey(u"embedded_tracker_port_forwarding"_s)) + pref->setTrackerPortForwardingEnabled(it.value().toBool()); + if (hasKey(u"enable_embedded_tracker"_s)) + session->setTrackerEnabled(it.value().toBool()); + // Mark-of-the-Web + if (hasKey(u"mark_of_the_web"_s)) + pref->setMarkOfTheWebEnabled(it.value().toBool()); + // Ignore SLL errors + if (hasKey(u"ignore_ssl_errors"_s)) + pref->setIgnoreSSLErrors(it.value().toBool()); + // Python executable path + if (hasKey(u"python_executable_path"_s)) + pref->setPythonExecutablePath(Path(it.value().toString())); // libtorrent preferences // Bdecode depth limit @@ -1015,19 +1129,6 @@ void AppController::setPreferencesAction() // Disallow connection to peers on privileged ports if (hasKey(u"block_peers_on_privileged_ports"_s)) session->setBlockPeersOnPrivilegedPorts(it.value().toBool()); - // Embedded tracker - if (hasKey(u"embedded_tracker_port"_s)) - pref->setTrackerPort(it.value().toInt()); - if (hasKey(u"embedded_tracker_port_forwarding"_s)) - pref->setTrackerPortForwardingEnabled(it.value().toBool()); - if (hasKey(u"enable_embedded_tracker"_s)) - session->setTrackerEnabled(it.value().toBool()); - // Mark-of-the-Web - if (hasKey(u"mark_of_the_web"_s)) - pref->setMarkOfTheWebEnabled(it.value().toBool()); - // Python executable path - if (hasKey(u"python_executable_path"_s)) - pref->setPythonExecutablePath(Path(it.value().toString())); // Choking algorithm if (hasKey(u"upload_slots_behavior"_s)) session->setChokingAlgorithm(static_cast(it.value().toInt())); @@ -1044,6 +1145,8 @@ void AppController::setPreferencesAction() const QHostAddress announceAddr {it.value().toString().trimmed()}; session->setAnnounceIP(announceAddr.isNull() ? QString {} : announceAddr.toString()); } + if (hasKey(u"announce_port"_s)) + session->setAnnouncePort(it.value().toInt()); if (hasKey(u"max_concurrent_http_announces"_s)) session->setMaxConcurrentHTTPAnnounces(it.value().toInt()); if (hasKey(u"stop_tracker_timeout"_s)) @@ -1071,6 +1174,103 @@ void AppController::defaultSavePathAction() setResult(BitTorrent::Session::instance()->savePath().toString()); } +void AppController::sendTestEmailAction() +{ + app()->sendTestEmail(); +} + + +void AppController::getDirectoryContentAction() +{ + requireParams({u"dirPath"_s}); + + const QString dirPath = params().value(u"dirPath"_s); + if (dirPath.isEmpty() || dirPath.startsWith(u':')) + throw APIError(APIErrorType::BadParams, tr("Invalid directory path")); + + const QDir dir {dirPath}; + if (!dir.isAbsolute()) + throw APIError(APIErrorType::BadParams, tr("Invalid directory path")); + if (!dir.exists()) + throw APIError(APIErrorType::NotFound, tr("Directory does not exist")); + + const QString visibility = params().value(u"mode"_s, u"all"_s); + + const auto parseDirectoryContentMode = [](const QString &visibility) -> QDir::Filters + { + if (visibility == u"dirs") + return QDir::Dirs; + if (visibility == u"files") + return QDir::Files; + if (visibility == u"all") + return (QDir::Dirs | QDir::Files); + throw APIError(APIErrorType::BadParams, tr("Invalid mode, allowed values: %1").arg(u"all, dirs, files"_s)); + }; + + QJsonArray ret; + QDirIterator it {dirPath, (QDir::NoDotAndDotDot | parseDirectoryContentMode(visibility))}; + while (it.hasNext()) + ret.append(it.next()); + setResult(ret); +} + +void AppController::cookiesAction() +{ + const QList cookies = Net::DownloadManager::instance()->allCookies(); + QJsonArray ret; + for (const QNetworkCookie &cookie : cookies) + { + ret << QJsonObject { + {KEY_COOKIE_NAME, QString::fromLatin1(cookie.name())}, + {KEY_COOKIE_DOMAIN, cookie.domain()}, + {KEY_COOKIE_PATH, cookie.path()}, + {KEY_COOKIE_VALUE, QString::fromLatin1(cookie.value())}, + {KEY_COOKIE_EXPIRATION_DATE, Utils::DateTime::toSecsSinceEpoch(cookie.expirationDate())}, + }; + } + + setResult(ret); +} + +void AppController::setCookiesAction() +{ + requireParams({u"cookies"_s}); + const QString cookiesParam {params()[u"cookies"_s].trimmed()}; + + QJsonParseError jsonError; + const auto cookiesJsonDocument = QJsonDocument::fromJson(cookiesParam.toUtf8(), &jsonError); + if (jsonError.error != QJsonParseError::NoError) + throw APIError(APIErrorType::BadParams, jsonError.errorString()); + if (!cookiesJsonDocument.isArray()) + throw APIError(APIErrorType::BadParams, tr("cookies must be array")); + + const QJsonArray cookiesJsonArr = cookiesJsonDocument.array(); + QList cookies; + cookies.reserve(cookiesJsonArr.size()); + for (const QJsonValue &jsonVal : cookiesJsonArr) + { + if (!jsonVal.isObject()) + throw APIError(APIErrorType::BadParams); + + QNetworkCookie cookie; + const QJsonObject jsonObj = jsonVal.toObject(); + if (jsonObj.contains(KEY_COOKIE_NAME)) + cookie.setName(jsonObj.value(KEY_COOKIE_NAME).toString().toLatin1()); + if (jsonObj.contains(KEY_COOKIE_DOMAIN)) + cookie.setDomain(jsonObj.value(KEY_COOKIE_DOMAIN).toString()); + if (jsonObj.contains(KEY_COOKIE_PATH)) + cookie.setPath(jsonObj.value(KEY_COOKIE_PATH).toString()); + if (jsonObj.contains(KEY_COOKIE_VALUE)) + cookie.setValue(jsonObj.value(KEY_COOKIE_VALUE).toString().toUtf8()); + if (jsonObj.contains(KEY_COOKIE_EXPIRATION_DATE)) + cookie.setExpirationDate(QDateTime::fromSecsSinceEpoch(jsonObj.value(KEY_COOKIE_EXPIRATION_DATE).toInteger())); + + cookies << cookie; + } + + Net::DownloadManager::instance()->setAllCookies(cookies); +} + void AppController::networkInterfaceListAction() { QJsonArray ifaceList; diff --git a/src/webui/api/appcontroller.h b/src/webui/api/appcontroller.h index 93bf1fd7b06d..dea33eadaec4 100644 --- a/src/webui/api/appcontroller.h +++ b/src/webui/api/appcontroller.h @@ -48,6 +48,10 @@ private slots: void preferencesAction(); void setPreferencesAction(); void defaultSavePathAction(); + void sendTestEmailAction(); + void getDirectoryContentAction(); + void cookiesAction(); + void setCookiesAction(); void networkInterfaceListAction(); void networkInterfaceAddressListAction(); diff --git a/src/webui/api/authcontroller.cpp b/src/webui/api/authcontroller.cpp index eb1d1baf2376..5c308a62e4a8 100644 --- a/src/webui/api/authcontroller.cpp +++ b/src/webui/api/authcontroller.cpp @@ -103,8 +103,8 @@ void AuthController::logoutAction() const bool AuthController::isBanned() const { - const auto failedLoginIter = m_clientFailedLogins.find(m_sessionManager->clientId()); - if (failedLoginIter == m_clientFailedLogins.end()) + const auto failedLoginIter = m_clientFailedLogins.constFind(m_sessionManager->clientId()); + if (failedLoginIter == m_clientFailedLogins.cend()) return false; bool isBanned = (failedLoginIter->banTimer.remainingTime() >= 0); diff --git a/src/webui/api/logcontroller.cpp b/src/webui/api/logcontroller.cpp index 22d157444a42..b5a36b3e46b5 100644 --- a/src/webui/api/logcontroller.cpp +++ b/src/webui/api/logcontroller.cpp @@ -30,7 +30,7 @@ #include #include -#include +#include #include "base/global.h" #include "base/logger.h" diff --git a/src/webui/api/rsscontroller.cpp b/src/webui/api/rsscontroller.cpp index f3cd11bba338..0dd5d1dc3540 100644 --- a/src/webui/api/rsscontroller.cpp +++ b/src/webui/api/rsscontroller.cpp @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include "base/rss/rss_article.h" #include "base/rss/rss_autodownloader.h" @@ -49,7 +49,7 @@ void RSSController::addFolderAction() { requireParams({u"path"_s}); - const QString path = params()[u"path"_s].trimmed(); + const QString path = params()[u"path"_s]; const nonstd::expected result = RSS::Session::instance()->addFolder(path); if (!result) throw APIError(APIErrorType::Conflict, result.error()); @@ -59,8 +59,8 @@ void RSSController::addFeedAction() { requireParams({u"url"_s, u"path"_s}); - const QString url = params()[u"url"_s].trimmed(); - const QString path = params()[u"path"_s].trimmed(); + const QString url = params()[u"url"_s]; + const QString path = params()[u"path"_s]; const nonstd::expected result = RSS::Session::instance()->addFeed(url, (path.isEmpty() ? url : path)); if (!result) throw APIError(APIErrorType::Conflict, result.error()); @@ -70,8 +70,8 @@ void RSSController::setFeedURLAction() { requireParams({u"path"_s, u"url"_s}); - const QString path = params()[u"path"_s].trimmed(); - const QString url = params()[u"url"_s].trimmed(); + const QString path = params()[u"path"_s]; + const QString url = params()[u"url"_s]; const nonstd::expected result = RSS::Session::instance()->setFeedURL(path, url); if (!result) throw APIError(APIErrorType::Conflict, result.error()); @@ -81,7 +81,7 @@ void RSSController::removeItemAction() { requireParams({u"path"_s}); - const QString path = params()[u"path"_s].trimmed(); + const QString path = params()[u"path"_s]; const nonstd::expected result = RSS::Session::instance()->removeItem(path); if (!result) throw APIError(APIErrorType::Conflict, result.error()); @@ -91,8 +91,8 @@ void RSSController::moveItemAction() { requireParams({u"itemPath"_s, u"destPath"_s}); - const QString itemPath = params()[u"itemPath"_s].trimmed(); - const QString destPath = params()[u"destPath"_s].trimmed(); + const QString itemPath = params()[u"itemPath"_s]; + const QString destPath = params()[u"destPath"_s]; const nonstd::expected result = RSS::Session::instance()->moveItem(itemPath, destPath); if (!result) throw APIError(APIErrorType::Conflict, result.error()); @@ -146,8 +146,8 @@ void RSSController::setRuleAction() { requireParams({u"ruleName"_s, u"ruleDef"_s}); - const QString ruleName {params()[u"ruleName"_s].trimmed()}; - const QByteArray ruleDef {params()[u"ruleDef"_s].trimmed().toUtf8()}; + const QString ruleName {params()[u"ruleName"_s]}; + const QByteArray ruleDef {params()[u"ruleDef"_s].toUtf8()}; const auto jsonObj = QJsonDocument::fromJson(ruleDef).object(); RSS::AutoDownloader::instance()->setRule(RSS::AutoDownloadRule::fromJsonObject(jsonObj, ruleName)); @@ -157,8 +157,8 @@ void RSSController::renameRuleAction() { requireParams({u"ruleName"_s, u"newRuleName"_s}); - const QString ruleName {params()[u"ruleName"_s].trimmed()}; - const QString newRuleName {params()[u"newRuleName"_s].trimmed()}; + const QString ruleName {params()[u"ruleName"_s]}; + const QString newRuleName {params()[u"newRuleName"_s]}; RSS::AutoDownloader::instance()->renameRule(ruleName, newRuleName); } @@ -167,7 +167,7 @@ void RSSController::removeRuleAction() { requireParams({u"ruleName"_s}); - const QString ruleName {params()[u"ruleName"_s].trimmed()}; + const QString ruleName {params()[u"ruleName"_s]}; RSS::AutoDownloader::instance()->removeRule(ruleName); } diff --git a/src/webui/api/searchcontroller.cpp b/src/webui/api/searchcontroller.cpp index f8b1c56649ef..d7b0c9786358 100644 --- a/src/webui/api/searchcontroller.cpp +++ b/src/webui/api/searchcontroller.cpp @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2018 Thomas Piccirello * * This program is free software; you can redistribute it and/or @@ -36,9 +37,13 @@ #include #include +#include "base/addtorrentmanager.h" #include "base/global.h" +#include "base/interfaces/iapplication.h" #include "base/logger.h" +#include "base/search/searchdownloadhandler.h" #include "base/search/searchhandler.h" +#include "base/utils/datetime.h" #include "base/utils/foreignapps.h" #include "base/utils/random.h" #include "base/utils/string.h" @@ -126,8 +131,8 @@ void SearchController::stopAction() const int id = params()[u"id"_s].toInt(); - const auto iter = m_searchHandlers.find(id); - if (iter == m_searchHandlers.end()) + const auto iter = m_searchHandlers.constFind(id); + if (iter == m_searchHandlers.cend()) throw APIError(APIErrorType::NotFound); const std::shared_ptr &searchHandler = iter.value(); @@ -171,8 +176,8 @@ void SearchController::resultsAction() int limit = params()[u"limit"_s].toInt(); int offset = params()[u"offset"_s].toInt(); - const auto iter = m_searchHandlers.find(id); - if (iter == m_searchHandlers.end()) + const auto iter = m_searchHandlers.constFind(id); + if (iter == m_searchHandlers.cend()) throw APIError(APIErrorType::NotFound); const std::shared_ptr &searchHandler = iter.value(); @@ -202,8 +207,8 @@ void SearchController::deleteAction() const int id = params()[u"id"_s].toInt(); - const auto iter = m_searchHandlers.find(id); - if (iter == m_searchHandlers.end()) + const auto iter = m_searchHandlers.constFind(id); + if (iter == m_searchHandlers.cend()) throw APIError(APIErrorType::NotFound); const std::shared_ptr &searchHandler = iter.value(); @@ -212,6 +217,29 @@ void SearchController::deleteAction() m_searchHandlers.erase(iter); } +void SearchController::downloadTorrentAction() +{ + requireParams({u"torrentUrl"_s, u"pluginName"_s}); + + const QString torrentUrl = params()[u"torrentUrl"_s]; + const QString pluginName = params()[u"pluginName"_s]; + + if (torrentUrl.startsWith(u"magnet:", Qt::CaseInsensitive)) + { + app()->addTorrentManager()->addTorrent(torrentUrl); + } + else + { + SearchDownloadHandler *downloadHandler = SearchPluginManager::instance()->downloadTorrent(pluginName, torrentUrl); + connect(downloadHandler, &SearchDownloadHandler::downloadFinished + , this, [this, downloadHandler](const QString &source) + { + app()->addTorrentManager()->addTorrent(source); + downloadHandler->deleteLater(); + }); + } +} + void SearchController::pluginsAction() { const QStringList allPlugins = SearchPluginManager::instance()->allPlugins(); @@ -299,8 +327,10 @@ int SearchController::generateSearchId() const * - "fileSize" * - "nbSeeders" * - "nbLeechers" + * - "engineName" * - "siteUrl" * - "descrLink" + * - "pubDate" */ QJsonObject SearchController::getResults(const QList &searchResults, const bool isSearchActive, const int totalResults) const { @@ -314,8 +344,10 @@ QJsonObject SearchController::getResults(const QList &searchResult {u"fileSize"_s, searchResult.fileSize}, {u"nbSeeders"_s, searchResult.nbSeeders}, {u"nbLeechers"_s, searchResult.nbLeechers}, + {u"engineName"_s, searchResult.engineName}, {u"siteUrl"_s, searchResult.siteUrl}, - {u"descrLink"_s, searchResult.descrLink} + {u"descrLink"_s, searchResult.descrLink}, + {u"pubDate"_s, Utils::DateTime::toSecsSinceEpoch(searchResult.pubDate)} }; } diff --git a/src/webui/api/searchcontroller.h b/src/webui/api/searchcontroller.h index 78e70e759c37..b5fd7928b8a6 100644 --- a/src/webui/api/searchcontroller.h +++ b/src/webui/api/searchcontroller.h @@ -1,5 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev * Copyright (C) 2018 Thomas Piccirello * * This program is free software; you can redistribute it and/or @@ -56,6 +57,7 @@ private slots: void statusAction(); void resultsAction(); void deleteAction(); + void downloadTorrentAction(); void pluginsAction(); void installPluginAction(); void uninstallPluginAction(); diff --git a/src/webui/api/serialize/serialize_torrent.cpp b/src/webui/api/serialize/serialize_torrent.cpp index 15c4007af314..bc75a76985dd 100644 --- a/src/webui/api/serialize/serialize_torrent.cpp +++ b/src/webui/api/serialize/serialize_torrent.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018 Vladimir Golovnev + * Copyright (C) 2018-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -29,14 +29,15 @@ #include "serialize_torrent.h" #include -#include +#include #include "base/bittorrent/infohash.h" #include "base/bittorrent/torrent.h" -#include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/path.h" #include "base/tagset.h" -#include "base/utils/fs.h" +#include "base/utils/datetime.h" +#include "base/utils/string.h" namespace { @@ -50,8 +51,8 @@ namespace return u"missingFiles"_s; case BitTorrent::TorrentState::Uploading: return u"uploading"_s; - case BitTorrent::TorrentState::PausedUploading: - return u"pausedUP"_s; + case BitTorrent::TorrentState::StoppedUploading: + return u"stoppedUP"_s; case BitTorrent::TorrentState::QueuedUploading: return u"queuedUP"_s; case BitTorrent::TorrentState::StalledUploading: @@ -66,8 +67,8 @@ namespace return u"metaDL"_s; case BitTorrent::TorrentState::ForcedDownloadingMetadata: return u"forcedMetaDL"_s; - case BitTorrent::TorrentState::PausedDownloading: - return u"pausedDL"_s; + case BitTorrent::TorrentState::StoppedDownloading: + return u"stoppedDL"_s; case BitTorrent::TorrentState::QueuedDownloading: return u"queuedDL"_s; case BitTorrent::TorrentState::StalledDownloading: @@ -102,8 +103,8 @@ QVariantMap serialize(const BitTorrent::Torrent &torrent) { const qlonglong timeSinceActivity = torrent.timeSinceActivity(); return (timeSinceActivity < 0) - ? torrent.addedTime().toSecsSinceEpoch() - : (QDateTime::currentDateTime().toSecsSinceEpoch() - timeSinceActivity); + ? Utils::DateTime::toSecsSinceEpoch(torrent.addedTime()) + : (QDateTime::currentSecsSinceEpoch() - timeSinceActivity); }; return { @@ -128,14 +129,15 @@ QVariantMap serialize(const BitTorrent::Torrent &torrent) {KEY_TORRENT_FIRST_LAST_PIECE_PRIO, torrent.hasFirstLastPiecePriority()}, {KEY_TORRENT_CATEGORY, torrent.category()}, - {KEY_TORRENT_TAGS, torrent.tags().join(u", "_s)}, + {KEY_TORRENT_TAGS, Utils::String::joinIntoString(torrent.tags(), u", "_s)}, {KEY_TORRENT_SUPER_SEEDING, torrent.superSeeding()}, {KEY_TORRENT_FORCE_START, torrent.isForced()}, {KEY_TORRENT_SAVE_PATH, torrent.savePath().toString()}, {KEY_TORRENT_DOWNLOAD_PATH, torrent.downloadPath().toString()}, {KEY_TORRENT_CONTENT_PATH, torrent.contentPath().toString()}, - {KEY_TORRENT_ADDED_ON, torrent.addedTime().toSecsSinceEpoch()}, - {KEY_TORRENT_COMPLETION_ON, torrent.completedTime().toSecsSinceEpoch()}, + {KEY_TORRENT_ROOT_PATH, torrent.rootPath().toString()}, + {KEY_TORRENT_ADDED_ON, Utils::DateTime::toSecsSinceEpoch(torrent.addedTime())}, + {KEY_TORRENT_COMPLETION_ON, Utils::DateTime::toSecsSinceEpoch(torrent.completedTime())}, {KEY_TORRENT_TRACKER, torrent.currentTracker()}, {KEY_TORRENT_TRACKERS_COUNT, torrent.trackers().size()}, {KEY_TORRENT_DL_LIMIT, torrent.downloadLimit()}, @@ -151,9 +153,10 @@ QVariantMap serialize(const BitTorrent::Torrent &torrent) {KEY_TORRENT_MAX_INACTIVE_SEEDING_TIME, torrent.maxInactiveSeedingTime()}, {KEY_TORRENT_RATIO, adjustRatio(torrent.realRatio())}, {KEY_TORRENT_RATIO_LIMIT, torrent.ratioLimit()}, + {KEY_TORRENT_POPULARITY, torrent.popularity()}, {KEY_TORRENT_SEEDING_TIME_LIMIT, torrent.seedingTimeLimit()}, {KEY_TORRENT_INACTIVE_SEEDING_TIME_LIMIT, torrent.inactiveSeedingTimeLimit()}, - {KEY_TORRENT_LAST_SEEN_COMPLETE_TIME, torrent.lastSeenComplete().toSecsSinceEpoch()}, + {KEY_TORRENT_LAST_SEEN_COMPLETE_TIME, Utils::DateTime::toSecsSinceEpoch(torrent.lastSeenComplete())}, {KEY_TORRENT_AUTO_TORRENT_MANAGEMENT, torrent.isAutoTMMEnabled()}, {KEY_TORRENT_TIME_ACTIVE, torrent.activeTime()}, {KEY_TORRENT_SEEDING_TIME, torrent.finishedTime()}, @@ -161,7 +164,8 @@ QVariantMap serialize(const BitTorrent::Torrent &torrent) {KEY_TORRENT_AVAILABILITY, torrent.distributedCopies()}, {KEY_TORRENT_REANNOUNCE, torrent.nextAnnounce()}, {KEY_TORRENT_COMMENT, torrent.comment()}, - - {KEY_TORRENT_TOTAL_SIZE, torrent.totalSize()} + {KEY_TORRENT_PRIVATE, (torrent.hasMetadata() ? torrent.isPrivate() : QVariant())}, + {KEY_TORRENT_TOTAL_SIZE, torrent.totalSize()}, + {KEY_TORRENT_HAS_METADATA, torrent.hasMetadata()} }; } diff --git a/src/webui/api/serialize/serialize_torrent.h b/src/webui/api/serialize/serialize_torrent.h index 3a67551a9528..883efa6dd5cd 100644 --- a/src/webui/api/serialize/serialize_torrent.h +++ b/src/webui/api/serialize/serialize_torrent.h @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018 Vladimir Golovnev + * Copyright (C) 2018-2023 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -54,6 +54,7 @@ inline const QString KEY_TORRENT_NUM_COMPLETE = u"num_complete"_s; inline const QString KEY_TORRENT_LEECHS = u"num_leechs"_s; inline const QString KEY_TORRENT_NUM_INCOMPLETE = u"num_incomplete"_s; inline const QString KEY_TORRENT_RATIO = u"ratio"_s; +inline const QString KEY_TORRENT_POPULARITY = u"popularity"_s; inline const QString KEY_TORRENT_ETA = u"eta"_s; inline const QString KEY_TORRENT_STATE = u"state"_s; inline const QString KEY_TORRENT_SEQUENTIAL_DOWNLOAD = u"seq_dl"_s; @@ -65,6 +66,7 @@ inline const QString KEY_TORRENT_FORCE_START = u"force_start"_s; inline const QString KEY_TORRENT_SAVE_PATH = u"save_path"_s; inline const QString KEY_TORRENT_DOWNLOAD_PATH = u"download_path"_s; inline const QString KEY_TORRENT_CONTENT_PATH = u"content_path"_s; +inline const QString KEY_TORRENT_ROOT_PATH = u"root_path"_s; inline const QString KEY_TORRENT_ADDED_ON = u"added_on"_s; inline const QString KEY_TORRENT_COMPLETION_ON = u"completion_on"_s; inline const QString KEY_TORRENT_TRACKER = u"tracker"_s; @@ -92,5 +94,7 @@ inline const QString KEY_TORRENT_SEEDING_TIME = u"seeding_time"_s; inline const QString KEY_TORRENT_AVAILABILITY = u"availability"_s; inline const QString KEY_TORRENT_REANNOUNCE = u"reannounce"_s; inline const QString KEY_TORRENT_COMMENT = u"comment"_s; +inline const QString KEY_TORRENT_PRIVATE = u"private"_s; +inline const QString KEY_TORRENT_HAS_METADATA = u"has_metadata"_s; QVariantMap serialize(const BitTorrent::Torrent &torrent); diff --git a/src/webui/api/synccontroller.cpp b/src/webui/api/synccontroller.cpp index aea6693f4778..222b066aa485 100644 --- a/src/webui/api/synccontroller.cpp +++ b/src/webui/api/synccontroller.cpp @@ -1,6 +1,6 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2018-2023 Vladimir Golovnev + * Copyright (C) 2018-2024 Vladimir Golovnev * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -28,8 +28,6 @@ #include "synccontroller.h" -#include - #include #include #include @@ -43,7 +41,7 @@ #include "base/bittorrent/sessionstatus.h" #include "base/bittorrent/torrent.h" #include "base/bittorrent/torrentinfo.h" -#include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/global.h" #include "base/net/geoipmanager.h" #include "base/preferences.h" @@ -87,6 +85,8 @@ namespace const QString KEY_TRANSFER_DLRATELIMIT = u"dl_rate_limit"_s; const QString KEY_TRANSFER_DLSPEED = u"dl_info_speed"_s; const QString KEY_TRANSFER_FREESPACEONDISK = u"free_space_on_disk"_s; + const QString KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V4 = u"last_external_address_v4"_s; + const QString KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V6 = u"last_external_address_v6"_s; const QString KEY_TRANSFER_UPDATA = u"up_info_data"_s; const QString KEY_TRANSFER_UPRATELIMIT = u"up_rate_limit"_s; const QString KEY_TRANSFER_UPSPEED = u"up_info_speed"_s; @@ -119,9 +119,9 @@ namespace const QString KEY_FULL_UPDATE = u"full_update"_s; const QString KEY_RESPONSE_ID = u"rid"_s; - void processMap(const QVariantMap &prevData, const QVariantMap &data, QVariantMap &syncData); - void processHash(QVariantHash prevData, const QVariantHash &data, QVariantMap &syncData, QVariantList &removedItems); - void processList(QVariantList prevData, const QVariantList &data, QVariantList &syncData, QVariantList &removedItems); + QVariantMap processMap(const QVariantMap &prevData, const QVariantMap &data); + std::pair processHash(QVariantHash prevData, const QVariantHash &data); + std::pair processList(QVariantList prevData, const QVariantList &data); QJsonObject generateSyncData(int acceptedResponseId, const QVariantMap &data, QVariantMap &lastAcceptedData, QVariantMap &lastData); QVariantMap getTransferInfo() @@ -161,6 +161,8 @@ namespace map[KEY_TRANSFER_AVERAGE_TIME_QUEUE] = cacheStatus.averageJobTime; map[KEY_TRANSFER_TOTAL_QUEUED_SIZE] = cacheStatus.queuedBytes; + map[KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V4] = session->lastExternalIPv4Address(); + map[KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V6] = session->lastExternalIPv6Address(); map[KEY_TRANSFER_DHT_NODES] = sessionStatus.dhtNodes; map[KEY_TRANSFER_CONNECTION_STATUS] = session->isListening() ? (sessionStatus.hasIncomingConnections ? u"connected"_s : u"firewalled"_s) @@ -171,31 +173,28 @@ namespace // Compare two structures (prevData, data) and calculate difference (syncData). // Structures encoded as map. - void processMap(const QVariantMap &prevData, const QVariantMap &data, QVariantMap &syncData) + QVariantMap processMap(const QVariantMap &prevData, const QVariantMap &data) { // initialize output variable - syncData.clear(); + QVariantMap syncData; for (auto i = data.cbegin(); i != data.cend(); ++i) { const QString &key = i.key(); const QVariant &value = i.value(); - QVariantList removedItems; switch (value.userType()) { case QMetaType::QVariantMap: { - QVariantMap map; - processMap(prevData[key].toMap(), value.toMap(), map); + const QVariantMap map = processMap(prevData[key].toMap(), value.toMap()); if (!map.isEmpty()) syncData[key] = map; } break; case QMetaType::QVariantHash: { - QVariantMap map; - processHash(prevData[key].toHash(), value.toHash(), map, removedItems); + const auto [map, removedItems] = processHash(prevData[key].toHash(), value.toHash()); if (!map.isEmpty()) syncData[key] = map; if (!removedItems.isEmpty()) @@ -204,8 +203,7 @@ namespace break; case QMetaType::QVariantList: { - QVariantList list; - processList(prevData[key].toList(), value.toList(), list, removedItems); + const auto [list, removedItems] = processList(prevData[key].toList(), value.toList()); if (!list.isEmpty()) syncData[key] = list; if (!removedItems.isEmpty()) @@ -222,26 +220,28 @@ namespace case QMetaType::UInt: case QMetaType::QDateTime: case QMetaType::Nullptr: + case QMetaType::UnknownType: if (prevData[key] != value) syncData[key] = value; break; default: Q_ASSERT_X(false, "processMap" - , u"Unexpected type: %1"_s - .arg(QString::fromLatin1(value.metaType().name())) - .toUtf8().constData()); + , u"Unexpected type: %1"_s.arg(QString::fromLatin1(value.metaType().name())) + .toUtf8().constData()); } } + + return syncData; } // Compare two lists of structures (prevData, data) and calculate difference (syncData, removedItems). // Structures encoded as map. // Lists are encoded as hash table (indexed by structure key value) to improve ease of searching for removed items. - void processHash(QVariantHash prevData, const QVariantHash &data, QVariantMap &syncData, QVariantList &removedItems) + std::pair processHash(QVariantHash prevData, const QVariantHash &data) { // initialize output variables - syncData.clear(); - removedItems.clear(); + std::pair result; + auto &[syncData, removedItems] = result; if (prevData.isEmpty()) { @@ -263,8 +263,7 @@ namespace } else { - QVariantMap map; - processMap(prevData[i.key()].toMap(), i.value().toMap(), map); + const QVariantMap map = processMap(prevData[i.key()].toMap(), i.value().toMap()); // existing list item found - remove it from prevData prevData.remove(i.key()); if (!map.isEmpty()) @@ -282,9 +281,7 @@ namespace } else { - QVariantList list; - QVariantList removedList; - processList(prevData[i.key()].toList(), i.value().toList(), list, removedList); + const auto [list, removedList] = processList(prevData[i.key()].toList(), i.value().toList()); // existing list item found - remove it from prevData prevData.remove(i.key()); if (!list.isEmpty() || !removedList.isEmpty()) @@ -295,7 +292,7 @@ namespace } break; default: - Q_ASSERT(false); + Q_UNREACHABLE(); break; } } @@ -308,14 +305,16 @@ namespace removedItems << i.key(); } } + + return result; } // Compare two lists of simple value (prevData, data) and calculate difference (syncData, removedItems). - void processList(QVariantList prevData, const QVariantList &data, QVariantList &syncData, QVariantList &removedItems) + std::pair processList(QVariantList prevData, const QVariantList &data) { // initialize output variables - syncData.clear(); - removedItems.clear(); + std::pair result; + auto &[syncData, removedItems] = result; if (prevData.isEmpty()) { @@ -345,6 +344,8 @@ namespace removedItems = prevData; } } + + return result; } QJsonObject generateSyncData(int acceptedResponseId, const QVariantMap &data, QVariantMap &lastAcceptedData, QVariantMap &lastData) @@ -372,7 +373,7 @@ namespace } else { - processMap(lastAcceptedData, data, syncData); + syncData = processMap(lastAcceptedData, data); } const int responseId = (lastResponseId % 1000000) + 1; // cycle between 1 and 1000000 @@ -449,6 +450,8 @@ void SyncController::updateFreeDiskSpace(const qint64 freeDiskSpace) // - "dl_info_data": bytes downloaded // - "dl_info_speed": download speed // - "dl_rate_limit: download rate limit +// - "last_external_address_v4": last external address v4 +// - "last_external_address_v6": last external address v6 // - "up_info_data: bytes uploaded // - "up_info_speed: upload speed // - "up_rate_limit: upload speed limit @@ -474,8 +477,8 @@ void SyncController::maindataAction() connect(btSession, &BitTorrent::Session::torrentAboutToBeRemoved, this, &SyncController::onTorrentAboutToBeRemoved); connect(btSession, &BitTorrent::Session::torrentCategoryChanged, this, &SyncController::onTorrentCategoryChanged); connect(btSession, &BitTorrent::Session::torrentMetadataReceived, this, &SyncController::onTorrentMetadataReceived); - connect(btSession, &BitTorrent::Session::torrentPaused, this, &SyncController::onTorrentPaused); - connect(btSession, &BitTorrent::Session::torrentResumed, this, &SyncController::onTorrentResumed); + connect(btSession, &BitTorrent::Session::torrentStopped, this, &SyncController::onTorrentStopped); + connect(btSession, &BitTorrent::Session::torrentStarted, this, &SyncController::onTorrentStarted); connect(btSession, &BitTorrent::Session::torrentSavePathChanged, this, &SyncController::onTorrentSavePathChanged); connect(btSession, &BitTorrent::Session::torrentSavingModeChanged, this, &SyncController::onTorrentSavingModeChanged); connect(btSession, &BitTorrent::Session::torrentTagAdded, this, &SyncController::onTorrentTagAdded); @@ -523,8 +526,8 @@ void SyncController::makeMaindataSnapshot() QVariantMap serializedTorrent = serialize(*torrent); serializedTorrent.remove(KEY_TORRENT_ID); - for (const BitTorrent::TrackerEntry &tracker : asConst(torrent->trackers())) - m_knownTrackers[tracker.url].insert(torrentID); + for (const BitTorrent::TrackerEntryStatus &status : asConst(torrent->trackers())) + m_knownTrackers[status.url].insert(torrentID); m_maindataSnapshot.torrents[torrentID.toString()] = serializedTorrent; } @@ -540,8 +543,8 @@ void SyncController::makeMaindataSnapshot() m_maindataSnapshot.categories[categoryName] = category.toVariantMap(); } - for (const QString &tag : asConst(session->tags())) - m_maindataSnapshot.tags.append(tag); + for (const Tag &tag : asConst(session->tags())) + m_maindataSnapshot.tags.append(tag.toString()); for (auto trackersIter = m_knownTrackers.cbegin(); trackersIter != m_knownTrackers.cend(); ++trackersIter) { @@ -594,8 +597,11 @@ QJsonObject SyncController::generateMaindataSyncData(const int id, const bool fu category.insert(u"name"_s, categoryName); auto &categorySnapshot = m_maindataSnapshot.categories[categoryName]; - processMap(categorySnapshot, category, m_maindataSyncBuf.categories[categoryName]); - categorySnapshot = category; + if (const QVariantMap syncData = processMap(categorySnapshot, category); !syncData.isEmpty()) + { + m_maindataSyncBuf.categories[categoryName] = syncData; + categorySnapshot = category; + } } m_updatedCategories.clear(); @@ -629,8 +635,12 @@ QJsonObject SyncController::generateMaindataSyncData(const int id, const bool fu serializedTorrent.remove(KEY_TORRENT_ID); auto &torrentSnapshot = m_maindataSnapshot.torrents[torrentID.toString()]; - processMap(torrentSnapshot, serializedTorrent, m_maindataSyncBuf.torrents[torrentID.toString()]); - torrentSnapshot = serializedTorrent; + + if (const QVariantMap syncData = processMap(torrentSnapshot, serializedTorrent); !syncData.isEmpty()) + { + m_maindataSyncBuf.torrents[torrentID.toString()] = syncData; + torrentSnapshot = serializedTorrent; + } } m_updatedTorrents.clear(); @@ -667,8 +677,11 @@ QJsonObject SyncController::generateMaindataSyncData(const int id, const bool fu serverState[KEY_SYNC_MAINDATA_USE_ALT_SPEED_LIMITS] = session->isAltGlobalSpeedLimitEnabled(); serverState[KEY_SYNC_MAINDATA_REFRESH_INTERVAL] = session->refreshInterval(); serverState[KEY_SYNC_MAINDATA_USE_SUBCATEGORIES] = session->isSubcategoriesEnabled(); - processMap(m_maindataSnapshot.serverState, serverState, m_maindataSyncBuf.serverState); - m_maindataSnapshot.serverState = serverState; + if (const QVariantMap syncData = processMap(m_maindataSnapshot.serverState, serverState); !syncData.isEmpty()) + { + m_maindataSyncBuf.serverState = syncData; + m_maindataSnapshot.serverState = serverState; + } QJsonObject syncData; syncData[KEY_RESPONSE_ID] = id; @@ -732,7 +745,7 @@ void SyncController::torrentPeersAction() QVariantMap data; QVariantHash peers; - const QVector peersList = torrent->peers(); + const QList peersList = torrent->peers(); bool resolvePeerCountries = Preferences::instance()->resolvePeerCountries(); @@ -815,16 +828,16 @@ void SyncController::onSubcategoriesSupportChanged() } } -void SyncController::onTagAdded(const QString &tag) +void SyncController::onTagAdded(const Tag &tag) { - m_removedTags.remove(tag); - m_addedTags.insert(tag); + m_removedTags.remove(tag.toString()); + m_addedTags.insert(tag.toString()); } -void SyncController::onTagRemoved(const QString &tag) +void SyncController::onTagRemoved(const Tag &tag) { - m_addedTags.remove(tag); - m_removedTags.insert(tag); + m_addedTags.remove(tag.toString()); + m_removedTags.insert(tag.toString()); } void SyncController::onTorrentAdded(BitTorrent::Torrent *torrent) @@ -834,11 +847,11 @@ void SyncController::onTorrentAdded(BitTorrent::Torrent *torrent) m_removedTorrents.remove(torrentID); m_updatedTorrents.insert(torrentID); - for (const BitTorrent::TrackerEntry &trackerEntry : asConst(torrent->trackers())) + for (const BitTorrent::TrackerEntryStatus &status : asConst(torrent->trackers())) { - m_knownTrackers[trackerEntry.url].insert(torrentID); - m_updatedTrackers.insert(trackerEntry.url); - m_removedTrackers.remove(trackerEntry.url); + m_knownTrackers[status.url].insert(torrentID); + m_updatedTrackers.insert(status.url); + m_removedTrackers.remove(status.url); } } @@ -849,9 +862,9 @@ void SyncController::onTorrentAboutToBeRemoved(BitTorrent::Torrent *torrent) m_updatedTorrents.remove(torrentID); m_removedTorrents.insert(torrentID); - for (const BitTorrent::TrackerEntry &trackerEntry : asConst(torrent->trackers())) + for (const BitTorrent::TrackerEntryStatus &status : asConst(torrent->trackers())) { - auto iter = m_knownTrackers.find(trackerEntry.url); + const auto iter = m_knownTrackers.find(status.url); Q_ASSERT(iter != m_knownTrackers.end()); if (iter == m_knownTrackers.end()) [[unlikely]] continue; @@ -861,12 +874,12 @@ void SyncController::onTorrentAboutToBeRemoved(BitTorrent::Torrent *torrent) if (torrentIDs.isEmpty()) { m_knownTrackers.erase(iter); - m_updatedTrackers.remove(trackerEntry.url); - m_removedTrackers.insert(trackerEntry.url); + m_updatedTrackers.remove(status.url); + m_removedTrackers.insert(status.url); } else { - m_updatedTrackers.insert(trackerEntry.url); + m_updatedTrackers.insert(status.url); } } } @@ -882,12 +895,12 @@ void SyncController::onTorrentMetadataReceived(BitTorrent::Torrent *torrent) m_updatedTorrents.insert(torrent->id()); } -void SyncController::onTorrentPaused(BitTorrent::Torrent *torrent) +void SyncController::onTorrentStopped(BitTorrent::Torrent *torrent) { m_updatedTorrents.insert(torrent->id()); } -void SyncController::onTorrentResumed(BitTorrent::Torrent *torrent) +void SyncController::onTorrentStarted(BitTorrent::Torrent *torrent) { m_updatedTorrents.insert(torrent->id()); } @@ -902,17 +915,17 @@ void SyncController::onTorrentSavingModeChanged(BitTorrent::Torrent *torrent) m_updatedTorrents.insert(torrent->id()); } -void SyncController::onTorrentTagAdded(BitTorrent::Torrent *torrent, [[maybe_unused]] const QString &tag) +void SyncController::onTorrentTagAdded(BitTorrent::Torrent *torrent, [[maybe_unused]] const Tag &tag) { m_updatedTorrents.insert(torrent->id()); } -void SyncController::onTorrentTagRemoved(BitTorrent::Torrent *torrent, [[maybe_unused]] const QString &tag) +void SyncController::onTorrentTagRemoved(BitTorrent::Torrent *torrent, [[maybe_unused]] const Tag &tag) { m_updatedTorrents.insert(torrent->id()); } -void SyncController::onTorrentsUpdated(const QVector &torrents) +void SyncController::onTorrentsUpdated(const QList &torrents) { for (const BitTorrent::Torrent *torrent : torrents) m_updatedTorrents.insert(torrent->id()); @@ -922,11 +935,12 @@ void SyncController::onTorrentTrackersChanged(BitTorrent::Torrent *torrent) { using namespace BitTorrent; - const QVector currentTrackerEntries = torrent->trackers(); + const QList trackers = torrent->trackers(); + QSet currentTrackers; - currentTrackers.reserve(currentTrackerEntries.size()); - for (const TrackerEntry ¤tTrackerEntry : currentTrackerEntries) - currentTrackers.insert(currentTrackerEntry.url); + currentTrackers.reserve(trackers.size()); + for (const TrackerEntryStatus &status : trackers) + currentTrackers.insert(status.url); const TorrentID torrentID = torrent->id(); Algorithm::removeIf(m_knownTrackers diff --git a/src/webui/api/synccontroller.h b/src/webui/api/synccontroller.h index 2123f625db88..af2223827ad9 100644 --- a/src/webui/api/synccontroller.h +++ b/src/webui/api/synccontroller.h @@ -32,6 +32,7 @@ #include #include "base/bittorrent/infohash.h" +#include "base/tag.h" #include "apicontroller.h" namespace BitTorrent @@ -64,19 +65,19 @@ private slots: void onCategoryRemoved(const QString &categoryName); void onCategoryOptionsChanged(const QString &categoryName); void onSubcategoriesSupportChanged(); - void onTagAdded(const QString &tag); - void onTagRemoved(const QString &tag); + void onTagAdded(const Tag &tag); + void onTagRemoved(const Tag &tag); void onTorrentAdded(BitTorrent::Torrent *torrent); void onTorrentAboutToBeRemoved(BitTorrent::Torrent *torrent); void onTorrentCategoryChanged(BitTorrent::Torrent *torrent, const QString &oldCategory); void onTorrentMetadataReceived(BitTorrent::Torrent *torrent); - void onTorrentPaused(BitTorrent::Torrent *torrent); - void onTorrentResumed(BitTorrent::Torrent *torrent); + void onTorrentStopped(BitTorrent::Torrent *torrent); + void onTorrentStarted(BitTorrent::Torrent *torrent); void onTorrentSavePathChanged(BitTorrent::Torrent *torrent); void onTorrentSavingModeChanged(BitTorrent::Torrent *torrent); - void onTorrentTagAdded(BitTorrent::Torrent *torrent, const QString &tag); - void onTorrentTagRemoved(BitTorrent::Torrent *torrent, const QString &tag); - void onTorrentsUpdated(const QVector &torrents); + void onTorrentTagAdded(BitTorrent::Torrent *torrent, const Tag &tag); + void onTorrentTagRemoved(BitTorrent::Torrent *torrent, const Tag &tag); + void onTorrentsUpdated(const QList &torrents); void onTorrentTrackersChanged(BitTorrent::Torrent *torrent); qint64 m_freeDiskSpace = 0; diff --git a/src/webui/api/torrentcreatorcontroller.cpp b/src/webui/api/torrentcreatorcontroller.cpp new file mode 100644 index 000000000000..8167ec99fb52 --- /dev/null +++ b/src/webui/api/torrentcreatorcontroller.cpp @@ -0,0 +1,247 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#include "torrentcreatorcontroller.h" + +#include +#include +#include + +#include "base/global.h" +#include "base/bittorrent/torrentcreationmanager.h" +#include "base/preferences.h" +#include "base/utils/io.h" +#include "base/utils/string.h" +#include "apierror.h" + +const QString KEY_COMMENT = u"comment"_s; +const QString KEY_ERROR_MESSAGE = u"errorMessage"_s; +const QString KEY_FORMAT = u"format"_s; +const QString KEY_OPTIMIZE_ALIGNMENT = u"optimizeAlignment"_s; +const QString KEY_PADDED_FILE_SIZE_LIMIT = u"paddedFileSizeLimit"_s; +const QString KEY_PIECE_SIZE = u"pieceSize"_s; +const QString KEY_PRIVATE = u"private"_s; +const QString KEY_PROGRESS = u"progress"_s; +const QString KEY_SOURCE = u"source"_s; +const QString KEY_SOURCE_PATH = u"sourcePath"_s; +const QString KEY_STATUS = u"status"_s; +const QString KEY_TASK_ID = u"taskID"_s; +const QString KEY_TIME_ADDED = u"timeAdded"_s; +const QString KEY_TIME_FINISHED = u"timeFinished"_s; +const QString KEY_TIME_STARTED = u"timeStarted"_s; +const QString KEY_TORRENT_FILE_PATH = u"torrentFilePath"_s; +const QString KEY_TRACKERS = u"trackers"_s; +const QString KEY_URL_SEEDS = u"urlSeeds"_s; + +namespace +{ + using Utils::String::parseBool; + using Utils::String::parseInt; + +#ifdef QBT_USES_LIBTORRENT2 + BitTorrent::TorrentFormat parseTorrentFormat(const QString &str) + { + if (str == u"v1") + return BitTorrent::TorrentFormat::V1; + if (str == u"v2") + return BitTorrent::TorrentFormat::V2; + return BitTorrent::TorrentFormat::Hybrid; + } + + QString torrentFormatToString(const BitTorrent::TorrentFormat torrentFormat) + { + switch (torrentFormat) + { + case BitTorrent::TorrentFormat::V1: + return u"v1"_s; + case BitTorrent::TorrentFormat::V2: + return u"v2"_s; + default: + return u"hybrid"_s; + } + } +#endif + + QString taskStatusString(const std::shared_ptr task) + { + if (task->isFailed()) + return u"Failed"_s; + + switch (task->state()) + { + case BitTorrent::TorrentCreationTask::Queued: + default: + return u"Queued"_s; + case BitTorrent::TorrentCreationTask::Running: + return u"Running"_s; + case BitTorrent::TorrentCreationTask::Finished: + return u"Finished"_s; + } + } +} + +TorrentCreatorController::TorrentCreatorController(BitTorrent::TorrentCreationManager *torrentCreationManager, IApplication *app, QObject *parent) + : APIController(app, parent) + , m_torrentCreationManager {torrentCreationManager} +{ +} + +void TorrentCreatorController::addTaskAction() +{ + requireParams({KEY_SOURCE_PATH}); + + const BitTorrent::TorrentCreatorParams createTorrentParams + { + .isPrivate = parseBool(params()[KEY_PRIVATE]).value_or(false), +#ifdef QBT_USES_LIBTORRENT2 + .torrentFormat = parseTorrentFormat(params()[KEY_FORMAT].toLower()), +#else + .isAlignmentOptimized = parseBool(params()[KEY_OPTIMIZE_ALIGNMENT]).value_or(true), + .paddedFileSizeLimit = parseInt(params()[KEY_PADDED_FILE_SIZE_LIMIT]).value_or(-1), +#endif + .pieceSize = parseInt(params()[KEY_PIECE_SIZE]).value_or(0), + .sourcePath = Path(params()[KEY_SOURCE_PATH]), + .torrentFilePath = Path(params()[KEY_TORRENT_FILE_PATH]), + .comment = params()[KEY_COMMENT], + .source = params()[KEY_SOURCE], + .trackers = params()[KEY_TRACKERS].split(u'|'), + .urlSeeds = params()[KEY_URL_SEEDS].split(u'|') + }; + + bool const startSeeding = parseBool(params()[u"startSeeding"_s]).value_or(createTorrentParams.torrentFilePath.isEmpty()); + + auto task = m_torrentCreationManager->createTask(createTorrentParams, startSeeding); + if (!task) + throw APIError(APIErrorType::Conflict, tr("Too many active tasks")); + + setResult(QJsonObject {{KEY_TASK_ID, task->id()}}); +} + +void TorrentCreatorController::statusAction() +{ + const QString id = params()[KEY_TASK_ID]; + + const auto singleTask = m_torrentCreationManager->getTask(id); + if (!id.isEmpty() && !singleTask) + throw APIError(APIErrorType::NotFound); + + const QList> tasks = id.isEmpty() + ? m_torrentCreationManager->tasks() + : QList> {singleTask}; + QJsonArray statusArray; + for (const auto &task : tasks) + { + QJsonObject taskJson { + {KEY_TASK_ID, task->id()}, + {KEY_SOURCE_PATH, task->params().sourcePath.toString()}, + {KEY_PIECE_SIZE, task->params().pieceSize}, + {KEY_PRIVATE, task->params().isPrivate}, + {KEY_TIME_ADDED, task->timeAdded().toString()}, +#ifdef QBT_USES_LIBTORRENT2 + {KEY_FORMAT, torrentFormatToString(task->params().torrentFormat)}, +#else + {KEY_OPTIMIZE_ALIGNMENT, task->params().isAlignmentOptimized}, + {KEY_PADDED_FILE_SIZE_LIMIT, task->params().paddedFileSizeLimit}, +#endif + {KEY_STATUS, taskStatusString(task)}, + }; + + if (!task->params().comment.isEmpty()) + taskJson[KEY_COMMENT] = task->params().comment; + + if (!task->params().torrentFilePath.isEmpty()) + taskJson[KEY_TORRENT_FILE_PATH] = task->params().torrentFilePath.toString(); + + if (!task->params().source.isEmpty()) + taskJson[KEY_SOURCE] = task->params().source; + + if (!task->params().trackers.isEmpty()) + taskJson[KEY_TRACKERS] = QJsonArray::fromStringList(task->params().trackers); + + if (!task->params().urlSeeds.isEmpty()) + taskJson[KEY_URL_SEEDS] = QJsonArray::fromStringList(task->params().urlSeeds); + + if (const QDateTime timeStarted = task->timeStarted(); !timeStarted.isNull()) + taskJson[KEY_TIME_STARTED] = timeStarted.toString(); + + if (const QDateTime timeFinished = task->timeFinished(); !task->timeFinished().isNull()) + taskJson[KEY_TIME_FINISHED] = timeFinished.toString(); + + if (task->isFinished()) + { + if (task->isFailed()) + { + taskJson[KEY_ERROR_MESSAGE] = task->errorMsg(); + } + else + { + taskJson[KEY_PIECE_SIZE] = task->result().pieceSize; + } + } + else if (task->isRunning()) + { + taskJson[KEY_PROGRESS] = task->progress(); + } + + statusArray.append(taskJson); + } + + setResult(statusArray); +} + +void TorrentCreatorController::torrentFileAction() +{ + requireParams({KEY_TASK_ID}); + const QString id = params()[KEY_TASK_ID]; + + const auto task = m_torrentCreationManager->getTask(id); + if (!task) + throw APIError(APIErrorType::NotFound); + + if (!task->isFinished()) + throw APIError(APIErrorType::Conflict, tr("Torrent creation is still unfinished.")); + + if (task->isFailed()) + throw APIError(APIErrorType::Conflict, tr("Torrent creation failed.")); + + const auto readResult = Utils::IO::readFile(task->result().torrentFilePath, Preferences::instance()->getTorrentFileSizeLimit()); + if (!readResult) + throw APIError(APIErrorType::Conflict, readResult.error().message); + + setResult(readResult.value(), u"application/x-bittorrent"_s, (id + u".torrent")); +} + +void TorrentCreatorController::deleteTaskAction() +{ + requireParams({KEY_TASK_ID}); + const QString id = params()[KEY_TASK_ID]; + + if (!m_torrentCreationManager->deleteTask(id)) + throw APIError(APIErrorType::NotFound); +} diff --git a/src/webui/api/torrentcreatorcontroller.h b/src/webui/api/torrentcreatorcontroller.h new file mode 100644 index 000000000000..7d6916e6bea2 --- /dev/null +++ b/src/webui/api/torrentcreatorcontroller.h @@ -0,0 +1,55 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +#pragma once + +#include "apicontroller.h" + +namespace BitTorrent +{ + class TorrentCreationManager; +} + +class TorrentCreatorController final : public APIController +{ + Q_OBJECT + Q_DISABLE_COPY_MOVE(TorrentCreatorController) + +public: + TorrentCreatorController(BitTorrent::TorrentCreationManager *torrentCreationManager, IApplication *app, QObject *parent = nullptr); + +private slots: + void addTaskAction(); + void statusAction(); + void torrentFileAction(); + void deleteTaskAction(); + +private: + BitTorrent::TorrentCreationManager *m_torrentCreationManager = nullptr; +}; diff --git a/src/webui/api/torrentscontroller.cpp b/src/webui/api/torrentscontroller.cpp index 0fe0a5466487..6fd5f6fbfa96 100644 --- a/src/webui/api/torrentscontroller.cpp +++ b/src/webui/api/torrentscontroller.cpp @@ -28,13 +28,13 @@ #include "torrentscontroller.h" +#include #include #include #include #include #include -#include #include #include @@ -45,15 +45,18 @@ #include "base/bittorrent/peeraddress.h" #include "base/bittorrent/peerinfo.h" #include "base/bittorrent/session.h" +#include "base/bittorrent/sslparameters.h" #include "base/bittorrent/torrent.h" #include "base/bittorrent/torrentdescriptor.h" #include "base/bittorrent/trackerentry.h" +#include "base/bittorrent/trackerentrystatus.h" #include "base/interfaces/iapplication.h" #include "base/global.h" #include "base/logger.h" -#include "base/net/downloadmanager.h" #include "base/torrentfilter.h" +#include "base/utils/datetime.h" #include "base/utils/fs.h" +#include "base/utils/sslkey.h" #include "base/utils/string.h" #include "apierror.h" #include "serialize/serialize_torrent.h" @@ -93,6 +96,7 @@ const QString KEY_PROP_SEEDS_TOTAL = u"seeds_total"_s; const QString KEY_PROP_PEERS = u"peers"_s; const QString KEY_PROP_PEERS_TOTAL = u"peers_total"_s; const QString KEY_PROP_RATIO = u"share_ratio"_s; +const QString KEY_PROP_POPULARITY = u"popularity"_s; const QString KEY_PROP_REANNOUNCE = u"reannounce"_s; const QString KEY_PROP_TOTAL_SIZE = u"total_size"_s; const QString KEY_PROP_PIECES_NUM = u"pieces_num"_s; @@ -106,7 +110,15 @@ const QString KEY_PROP_CREATION_DATE = u"creation_date"_s; const QString KEY_PROP_SAVE_PATH = u"save_path"_s; const QString KEY_PROP_DOWNLOAD_PATH = u"download_path"_s; const QString KEY_PROP_COMMENT = u"comment"_s; -const QString KEY_PROP_ISPRIVATE = u"is_private"_s; +const QString KEY_PROP_IS_PRIVATE = u"is_private"_s; // deprecated, "private" should be used instead +const QString KEY_PROP_PRIVATE = u"private"_s; +const QString KEY_PROP_SSL_CERTIFICATE = u"ssl_certificate"_s; +const QString KEY_PROP_SSL_PRIVATEKEY = u"ssl_private_key"_s; +const QString KEY_PROP_SSL_DHPARAMS = u"ssl_dh_params"_s; +const QString KEY_PROP_HAS_METADATA = u"has_metadata"_s; +const QString KEY_PROP_PROGRESS = u"progress"_s; +const QString KEY_PROP_TRACKERS = u"trackers"_s; + // File keys const QString KEY_FILE_INDEX = u"index"_s; @@ -124,7 +136,11 @@ namespace using Utils::String::parseInt; using Utils::String::parseDouble; - void applyToTorrents(const QStringList &idList, const std::function &func) + const QSet SUPPORTED_WEB_SEED_SCHEMES {u"http"_s, u"https"_s, u"ftp"_s}; + + template + void applyToTorrents(const QStringList &idList, Func func) + requires std::invocable { if ((idList.size() == 1) && (idList[0] == u"all")) { @@ -152,6 +168,15 @@ namespace return it.value(); } + std::optional getOptionalTag(const StringMap ¶ms, const QString &name) + { + const auto it = params.constFind(name); + if (it == params.cend()) + return std::nullopt; + + return Tag(it.value()); + } + QJsonArray getStickyTrackers(const BitTorrent::Torrent *const torrent) { int seedsDHT = 0, seedsPeX = 0, seedsLSD = 0, leechesDHT = 0, leechesPeX = 0, leechesLSD = 0; @@ -179,7 +204,7 @@ namespace } } - const int working = static_cast(BitTorrent::TrackerEntryStatus::Working); + const int working = static_cast(BitTorrent::TrackerEndpointState::Working); const int disabled = 0; const QString privateMsg {QCoreApplication::translate("TrackerListWidget", "This torrent is private")}; @@ -224,19 +249,58 @@ namespace return {dht, pex, lsd}; } - QVector toTorrentIDs(const QStringList &idStrings) + QJsonArray getTrackers(const BitTorrent::Torrent *const torrent) + { + QJsonArray trackerList; + + for (const BitTorrent::TrackerEntryStatus &tracker : asConst(torrent->trackers())) + { + const bool isNotWorking = (tracker.state == BitTorrent::TrackerEndpointState::NotWorking) + || (tracker.state == BitTorrent::TrackerEndpointState::TrackerError) + || (tracker.state == BitTorrent::TrackerEndpointState::Unreachable); + trackerList << QJsonObject + { + {KEY_TRACKER_URL, tracker.url}, + {KEY_TRACKER_TIER, tracker.tier}, + {KEY_TRACKER_STATUS, static_cast((isNotWorking ? BitTorrent::TrackerEndpointState::NotWorking : tracker.state))}, + {KEY_TRACKER_MSG, tracker.message}, + {KEY_TRACKER_PEERS_COUNT, tracker.numPeers}, + {KEY_TRACKER_SEEDS_COUNT, tracker.numSeeds}, + {KEY_TRACKER_LEECHES_COUNT, tracker.numLeeches}, + {KEY_TRACKER_DOWNLOADED_COUNT, tracker.numDownloaded} + }; + } + + return trackerList; + } + + QList toTorrentIDs(const QStringList &idStrings) { - QVector idList; + QList idList; idList.reserve(idStrings.size()); for (const QString &hash : idStrings) idList << BitTorrent::TorrentID::fromString(hash); return idList; } + + nonstd::expected validateWebSeedUrl(const QString &urlStr) + { + const QString normalizedUrlStr = QUrl::fromPercentEncoding(urlStr.toLatin1()); + + const QUrl url {normalizedUrlStr, QUrl::StrictMode}; + if (!url.isValid()) + return nonstd::make_unexpected(TorrentsController::tr("\"%1\" is not a valid URL").arg(normalizedUrlStr)); + + if (!SUPPORTED_WEB_SEED_SCHEMES.contains(url.scheme())) + return nonstd::make_unexpected(TorrentsController::tr("URL scheme must be one of [%1]").arg(SUPPORTED_WEB_SEED_SCHEMES.values().join(u", "))); + + return url; + } } void TorrentsController::countAction() { - setResult(QString::number(BitTorrent::Session::instance()->torrents().count())); + setResult(QString::number(BitTorrent::Session::instance()->torrentsCount())); } // Returns all the torrents in JSON format. @@ -261,10 +325,12 @@ void TorrentsController::countAction() // - "force_start": Torrent force start state // - "category": Torrent category // GET params: -// - filter (string): all, downloading, seeding, completed, paused, resumed, active, inactive, stalled, stalled_uploading, stalled_downloading +// - filter (string): all, downloading, seeding, completed, stopped, running, active, inactive, stalled, stalled_uploading, stalled_downloading // - category (string): torrent category for filtering by it (empty string means "uncategorized"; no "category" param presented means "any category") // - tag (string): torrent tag for filtering by it (empty string means "untagged"; no "tag" param presented means "any tag") // - hashes (string): filter by hashes, can contain multiple hashes separated by | +// - private (bool): filter torrents that are from private trackers (true) or not (false). Empty means any torrent (no filtering) +// - includeTrackers (bool): include trackers in list output (true) or not (false). Empty means not included // - sort (string): name of column for sorting by its value // - reverse (bool): enable reverse sorting // - limit (int): set limit number of torrents returned (if greater than 0, otherwise - unlimited) @@ -273,12 +339,14 @@ void TorrentsController::infoAction() { const QString filter {params()[u"filter"_s]}; const std::optional category = getOptionalString(params(), u"category"_s); - const std::optional tag = getOptionalString(params(), u"tag"_s); + const std::optional tag = getOptionalTag(params(), u"tag"_s); const QString sortedColumn {params()[u"sort"_s]}; const bool reverse {parseBool(params()[u"reverse"_s]).value_or(false)}; int limit {params()[u"limit"_s].toInt()}; int offset {params()[u"offset"_s].toInt()}; const QStringList hashes {params()[u"hashes"_s].split(u'|', Qt::SkipEmptyParts)}; + const std::optional isPrivate = parseBool(params()[u"private"_s]); + const bool includeTrackers = parseBool(params()[u"includeTrackers"_s]).value_or(false); std::optional idSet; if (!hashes.isEmpty()) @@ -288,12 +356,19 @@ void TorrentsController::infoAction() idSet->insert(BitTorrent::TorrentID::fromString(hash)); } - const TorrentFilter torrentFilter {filter, idSet, category, tag}; + const TorrentFilter torrentFilter {filter, idSet, category, tag, isPrivate}; QVariantList torrentList; for (const BitTorrent::Torrent *torrent : asConst(BitTorrent::Session::instance()->torrents())) { - if (torrentFilter.match(torrent)) - torrentList.append(serialize(*torrent)); + if (!torrentFilter.match(torrent)) + continue; + + QVariantMap serializedTorrent = serialize(*torrent); + + if (includeTrackers) + serializedTorrent.insert(KEY_PROP_TRACKERS, getTrackers(torrent)); + + torrentList.append(serializedTorrent); } if (torrentList.isEmpty()) @@ -346,8 +421,6 @@ void TorrentsController::infoAction() // normalize offset if (offset < 0) offset = size + offset; - if ((offset >= size) || (offset < 0)) - offset = 0; // normalize limit if (limit <= 0) limit = -1; // unlimited @@ -382,6 +455,7 @@ void TorrentsController::infoAction() // - "peers": Torrent connected peers // - "peers_total": Torrent total number of peers // - "share_ratio": Torrent share ratio +// - "popularity": Torrent popularity // - "reannounce": Torrent next reannounce time // - "total_size": Torrent total size // - "pieces_num": Torrent pieces count @@ -404,65 +478,70 @@ void TorrentsController::propertiesAction() requireParams({u"hash"_s}); const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); - BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); + const BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); if (!torrent) throw APIError(APIErrorType::NotFound); - QJsonObject dataDict; - - dataDict[KEY_TORRENT_INFOHASHV1] = torrent->infoHash().v1().toString(); - dataDict[KEY_TORRENT_INFOHASHV2] = torrent->infoHash().v2().toString(); - dataDict[KEY_TORRENT_NAME] = torrent->name(); - dataDict[KEY_TORRENT_ID] = torrent->id().toString(); - dataDict[KEY_PROP_TIME_ELAPSED] = torrent->activeTime(); - dataDict[KEY_PROP_SEEDING_TIME] = torrent->finishedTime(); - dataDict[KEY_PROP_ETA] = static_cast(torrent->eta()); - dataDict[KEY_PROP_CONNECT_COUNT] = torrent->connectionsCount(); - dataDict[KEY_PROP_CONNECT_COUNT_LIMIT] = torrent->connectionsLimit(); - dataDict[KEY_PROP_DOWNLOADED] = torrent->totalDownload(); - dataDict[KEY_PROP_DOWNLOADED_SESSION] = torrent->totalPayloadDownload(); - dataDict[KEY_PROP_UPLOADED] = torrent->totalUpload(); - dataDict[KEY_PROP_UPLOADED_SESSION] = torrent->totalPayloadUpload(); - dataDict[KEY_PROP_DL_SPEED] = torrent->downloadPayloadRate(); + const BitTorrent::InfoHash infoHash = torrent->infoHash(); + const qlonglong totalDownload = torrent->totalDownload(); + const qlonglong totalUpload = torrent->totalUpload(); const qlonglong dlDuration = torrent->activeTime() - torrent->finishedTime(); - dataDict[KEY_PROP_DL_SPEED_AVG] = torrent->totalDownload() / ((dlDuration == 0) ? -1 : dlDuration); - dataDict[KEY_PROP_UP_SPEED] = torrent->uploadPayloadRate(); const qlonglong ulDuration = torrent->activeTime(); - dataDict[KEY_PROP_UP_SPEED_AVG] = torrent->totalUpload() / ((ulDuration == 0) ? -1 : ulDuration); - dataDict[KEY_PROP_DL_LIMIT] = torrent->downloadLimit() <= 0 ? -1 : torrent->downloadLimit(); - dataDict[KEY_PROP_UP_LIMIT] = torrent->uploadLimit() <= 0 ? -1 : torrent->uploadLimit(); - dataDict[KEY_PROP_WASTED] = torrent->wastedSize(); - dataDict[KEY_PROP_SEEDS] = torrent->seedsCount(); - dataDict[KEY_PROP_SEEDS_TOTAL] = torrent->totalSeedsCount(); - dataDict[KEY_PROP_PEERS] = torrent->leechsCount(); - dataDict[KEY_PROP_PEERS_TOTAL] = torrent->totalLeechersCount(); + const int downloadLimit = torrent->downloadLimit(); + const int uploadLimit = torrent->uploadLimit(); const qreal ratio = torrent->realRatio(); - dataDict[KEY_PROP_RATIO] = ratio > BitTorrent::Torrent::MAX_RATIO ? -1 : ratio; - dataDict[KEY_PROP_REANNOUNCE] = torrent->nextAnnounce(); - dataDict[KEY_PROP_TOTAL_SIZE] = torrent->totalSize(); - dataDict[KEY_PROP_PIECES_NUM] = torrent->piecesCount(); - dataDict[KEY_PROP_PIECE_SIZE] = torrent->pieceLength(); - dataDict[KEY_PROP_PIECES_HAVE] = torrent->piecesHave(); - dataDict[KEY_PROP_CREATED_BY] = torrent->creator(); - dataDict[KEY_PROP_ISPRIVATE] = torrent->isPrivate(); - dataDict[KEY_PROP_ADDITION_DATE] = static_cast(torrent->addedTime().toSecsSinceEpoch()); - if (torrent->hasMetadata()) - { - dataDict[KEY_PROP_LAST_SEEN] = torrent->lastSeenComplete().isValid() ? torrent->lastSeenComplete().toSecsSinceEpoch() : -1; - dataDict[KEY_PROP_COMPLETION_DATE] = torrent->completedTime().isValid() ? torrent->completedTime().toSecsSinceEpoch() : -1; - dataDict[KEY_PROP_CREATION_DATE] = static_cast(torrent->creationDate().toSecsSinceEpoch()); - } - else - { - dataDict[KEY_PROP_LAST_SEEN] = -1; - dataDict[KEY_PROP_COMPLETION_DATE] = -1; - dataDict[KEY_PROP_CREATION_DATE] = -1; - } - dataDict[KEY_PROP_SAVE_PATH] = torrent->savePath().toString(); - dataDict[KEY_PROP_DOWNLOAD_PATH] = torrent->downloadPath().toString(); - dataDict[KEY_PROP_COMMENT] = torrent->comment(); + const qreal popularity = torrent->popularity(); + const bool hasMetadata = torrent->hasMetadata(); + const bool isPrivate = torrent->isPrivate(); - setResult(dataDict); + const QJsonObject ret + { + {KEY_TORRENT_INFOHASHV1, infoHash.v1().toString()}, + {KEY_TORRENT_INFOHASHV2, infoHash.v2().toString()}, + {KEY_TORRENT_NAME, torrent->name()}, + {KEY_TORRENT_ID, torrent->id().toString()}, + {KEY_PROP_TIME_ELAPSED, torrent->activeTime()}, + {KEY_PROP_SEEDING_TIME, torrent->finishedTime()}, + {KEY_PROP_ETA, torrent->eta()}, + {KEY_PROP_CONNECT_COUNT, torrent->connectionsCount()}, + {KEY_PROP_CONNECT_COUNT_LIMIT, torrent->connectionsLimit()}, + {KEY_PROP_DOWNLOADED, totalDownload}, + {KEY_PROP_DOWNLOADED_SESSION, torrent->totalPayloadDownload()}, + {KEY_PROP_UPLOADED, totalUpload}, + {KEY_PROP_UPLOADED_SESSION, torrent->totalPayloadUpload()}, + {KEY_PROP_DL_SPEED, torrent->downloadPayloadRate()}, + {KEY_PROP_DL_SPEED_AVG, ((dlDuration > 0) ? (totalDownload / dlDuration) : -1)}, + {KEY_PROP_UP_SPEED, torrent->uploadPayloadRate()}, + {KEY_PROP_UP_SPEED_AVG, ((ulDuration > 0) ? (totalUpload / ulDuration) : -1)}, + {KEY_PROP_DL_LIMIT, ((downloadLimit > 0) ? downloadLimit : -1)}, + {KEY_PROP_UP_LIMIT, ((uploadLimit > 0) ? uploadLimit : -1)}, + {KEY_PROP_WASTED, torrent->wastedSize()}, + {KEY_PROP_SEEDS, torrent->seedsCount()}, + {KEY_PROP_SEEDS_TOTAL, torrent->totalSeedsCount()}, + {KEY_PROP_PEERS, torrent->leechsCount()}, + {KEY_PROP_PEERS_TOTAL, torrent->totalLeechersCount()}, + {KEY_PROP_RATIO, ((ratio > BitTorrent::Torrent::MAX_RATIO) ? -1 : ratio)}, + {KEY_PROP_POPULARITY, ((popularity > BitTorrent::Torrent::MAX_RATIO) ? -1 : popularity)}, + {KEY_PROP_REANNOUNCE, torrent->nextAnnounce()}, + {KEY_PROP_TOTAL_SIZE, torrent->totalSize()}, + {KEY_PROP_PIECES_NUM, torrent->piecesCount()}, + {KEY_PROP_PIECE_SIZE, torrent->pieceLength()}, + {KEY_PROP_PIECES_HAVE, torrent->piecesHave()}, + {KEY_PROP_CREATED_BY, torrent->creator()}, + {KEY_PROP_IS_PRIVATE, torrent->isPrivate()}, // used for maintaining backward compatibility + {KEY_PROP_PRIVATE, (hasMetadata ? isPrivate : QJsonValue())}, + {KEY_PROP_ADDITION_DATE, Utils::DateTime::toSecsSinceEpoch(torrent->addedTime())}, + {KEY_PROP_LAST_SEEN, Utils::DateTime::toSecsSinceEpoch(torrent->lastSeenComplete())}, + {KEY_PROP_COMPLETION_DATE, Utils::DateTime::toSecsSinceEpoch(torrent->completedTime())}, + {KEY_PROP_CREATION_DATE, Utils::DateTime::toSecsSinceEpoch(torrent->creationDate())}, + {KEY_PROP_SAVE_PATH, torrent->savePath().toString()}, + {KEY_PROP_DOWNLOAD_PATH, torrent->downloadPath().toString()}, + {KEY_PROP_COMMENT, torrent->comment()}, + {KEY_PROP_HAS_METADATA, torrent->hasMetadata()}, + {KEY_PROP_PROGRESS, torrent->progress()} + }; + + setResult(ret); } // Returns the trackers for a torrent in JSON format. @@ -485,27 +564,13 @@ void TorrentsController::trackersAction() if (!torrent) throw APIError(APIErrorType::NotFound); - QJsonArray trackerList = getStickyTrackers(torrent); + QJsonArray trackersList = getStickyTrackers(torrent); - for (const BitTorrent::TrackerEntry &tracker : asConst(torrent->trackers())) - { - const bool isNotWorking = (tracker.status == BitTorrent::TrackerEntryStatus::NotWorking) - || (tracker.status == BitTorrent::TrackerEntryStatus::TrackerError) - || (tracker.status == BitTorrent::TrackerEntryStatus::Unreachable); - trackerList << QJsonObject - { - {KEY_TRACKER_URL, tracker.url}, - {KEY_TRACKER_TIER, tracker.tier}, - {KEY_TRACKER_STATUS, static_cast((isNotWorking ? BitTorrent::TrackerEntryStatus::NotWorking : tracker.status))}, - {KEY_TRACKER_MSG, tracker.message}, - {KEY_TRACKER_PEERS_COUNT, tracker.numPeers}, - {KEY_TRACKER_SEEDS_COUNT, tracker.numSeeds}, - {KEY_TRACKER_LEECHES_COUNT, tracker.numLeeches}, - {KEY_TRACKER_DOWNLOADED_COUNT, tracker.numDownloaded} - }; - } + // merge QJsonArray + for (const auto &tracker : asConst(getTrackers(torrent))) + trackersList.append(tracker); - setResult(trackerList); + setResult(trackersList); } // Returns the web seeds for a torrent in JSON format. @@ -533,6 +598,84 @@ void TorrentsController::webseedsAction() setResult(webSeedList); } +void TorrentsController::addWebSeedsAction() +{ + requireParams({u"hash"_s, u"urls"_s}); + const QStringList paramUrls = params()[u"urls"_s].split(u'|', Qt::SkipEmptyParts); + + const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); + BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); + if (!torrent) + throw APIError(APIErrorType::NotFound); + + QList urls; + urls.reserve(paramUrls.size()); + for (const QString &urlStr : paramUrls) + { + const auto result = validateWebSeedUrl(urlStr); + if (!result) + throw APIError(APIErrorType::BadParams, result.error()); + urls << result.value(); + } + + torrent->addUrlSeeds(urls); +} + +void TorrentsController::editWebSeedAction() +{ + requireParams({u"hash"_s, u"origUrl"_s, u"newUrl"_s}); + + const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); + const QString origUrlStr = params()[u"origUrl"_s]; + const QString newUrlStr = params()[u"newUrl"_s]; + + BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); + if (!torrent) + throw APIError(APIErrorType::NotFound); + + const auto origUrlResult = validateWebSeedUrl(origUrlStr); + if (!origUrlResult) + throw APIError(APIErrorType::BadParams, origUrlResult.error()); + const QUrl origUrl = origUrlResult.value(); + + const auto newUrlResult = validateWebSeedUrl(newUrlStr); + if (!newUrlResult) + throw APIError(APIErrorType::BadParams, newUrlResult.error()); + const QUrl newUrl = newUrlResult.value(); + + if (newUrl != origUrl) + { + if (!torrent->urlSeeds().contains(origUrl)) + throw APIError(APIErrorType::Conflict, tr("\"%1\" is not an existing URL").arg(origUrl.toString())); + + torrent->removeUrlSeeds({origUrl}); + torrent->addUrlSeeds({newUrl}); + } +} + +void TorrentsController::removeWebSeedsAction() +{ + requireParams({u"hash"_s, u"urls"_s}); + const QStringList paramUrls = params()[u"urls"_s].split(u'|', Qt::SkipEmptyParts); + + const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); + BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); + if (!torrent) + throw APIError(APIErrorType::NotFound); + + QList urls; + urls.reserve(paramUrls.size()); + for (const QString &urlStr : paramUrls) + { + const auto result = validateWebSeedUrl(urlStr); + if (!result) + throw APIError(APIErrorType::BadParams, result.error()); + urls << result.value(); + } + + torrent->removeUrlSeeds(urls); +} + // Returns the files in a torrent in JSON format. // The return value is a JSON-formatted list of dictionaries. // The dictionary keys are: @@ -554,7 +697,7 @@ void TorrentsController::filesAction() throw APIError(APIErrorType::NotFound); const int filesCount = torrent->filesCount(); - QVector fileIndexes; + QList fileIndexes; const auto idxIt = params().constFind(u"indexes"_s); if (idxIt != params().cend()) { @@ -582,9 +725,9 @@ void TorrentsController::filesAction() QJsonArray fileList; if (torrent->hasMetadata()) { - const QVector priorities = torrent->filePriorities(); - const QVector fp = torrent->filesProgress(); - const QVector fileAvailability = torrent->availableFileFractions(); + const QList priorities = torrent->filePriorities(); + const QList fp = torrent->filesProgress(); + const QList fileAvailability = torrent->availableFileFractions(); const BitTorrent::TorrentInfo info = torrent->info(); for (const int index : asConst(fileIndexes)) { @@ -626,7 +769,7 @@ void TorrentsController::pieceHashesAction() QJsonArray pieceHashes; if (torrent->hasMetadata()) { - const QVector hashes = torrent->info().pieceHashes(); + const QList hashes = torrent->info().pieceHashes(); for (const QByteArray &hash : hashes) pieceHashes.append(QString::fromLatin1(hash.toHex())); } @@ -666,13 +809,13 @@ void TorrentsController::pieceStatesAction() void TorrentsController::addAction() { const QString urls = params()[u"urls"_s]; - const QString cookie = params()[u"cookie"_s]; const bool skipChecking = parseBool(params()[u"skip_checking"_s]).value_or(false); const bool seqDownload = parseBool(params()[u"sequentialDownload"_s]).value_or(false); const bool firstLastPiece = parseBool(params()[u"firstLastPiecePrio"_s]).value_or(false); + const bool addForced = parseBool(params()[u"forced"_s]).value_or(false); const std::optional addToQueueTop = parseBool(params()[u"addToTopOfQueue"_s]); - const std::optional addPaused = parseBool(params()[u"paused"_s]); + const std::optional addStopped = parseBool(params()[u"stopped"_s]); const QString savepath = params()[u"savepath"_s].trimmed(); const QString downloadPath = params()[u"downloadPath"_s].trimmed(); const std::optional useDownloadPath = parseBool(params()[u"useDownloadPath"_s]); @@ -684,6 +827,7 @@ void TorrentsController::addAction() const double ratioLimit = parseDouble(params()[u"ratioLimit"_s]).value_or(BitTorrent::Torrent::USE_GLOBAL_RATIO); const int seedingTimeLimit = parseInt(params()[u"seedingTimeLimit"_s]).value_or(BitTorrent::Torrent::USE_GLOBAL_SEEDING_TIME); const int inactiveSeedingTimeLimit = parseInt(params()[u"inactiveSeedingTimeLimit"_s]).value_or(BitTorrent::Torrent::USE_GLOBAL_INACTIVE_SEEDING_TIME); + const BitTorrent::ShareLimitAction shareLimitAction = Utils::String::toEnum(params()[u"shareLimitAction"_s], BitTorrent::ShareLimitAction::Default); const std::optional autoTMM = parseBool(params()[u"autoTMM"_s]); const QString stopConditionParam = params()[u"stopCondition"_s]; @@ -696,44 +840,39 @@ void TorrentsController::addAction() ? Utils::String::toEnum(contentLayoutParam, BitTorrent::TorrentContentLayout::Original) : std::optional {}); - QList cookies; - if (!cookie.isEmpty()) + const BitTorrent::AddTorrentParams addTorrentParams { - const QStringList cookiesStr = cookie.split(u"; "_s); - for (QString cookieStr : cookiesStr) + // TODO: Check if destination actually exists + .name = torrentName, + .category = category, + .tags = {tags.cbegin(), tags.cend()}, + .savePath = Path(savepath), + .useDownloadPath = useDownloadPath, + .downloadPath = Path(downloadPath), + .sequential = seqDownload, + .firstLastPiecePriority = firstLastPiece, + .addForced = addForced, + .addToQueueTop = addToQueueTop, + .addStopped = addStopped, + .stopCondition = stopCondition, + .filePaths = {}, + .filePriorities = {}, + .skipChecking = skipChecking, + .contentLayout = contentLayout, + .useAutoTMM = autoTMM, + .uploadLimit = upLimit, + .downloadLimit = dlLimit, + .seedingTimeLimit = seedingTimeLimit, + .inactiveSeedingTimeLimit = inactiveSeedingTimeLimit, + .ratioLimit = ratioLimit, + .shareLimitAction = shareLimitAction, + .sslParameters = { - cookieStr = cookieStr.trimmed(); - int index = cookieStr.indexOf(u'='); - if (index > 1) - { - QByteArray name = cookieStr.left(index).toLatin1(); - QByteArray value = cookieStr.right(cookieStr.length() - index - 1).toLatin1(); - cookies += QNetworkCookie(name, value); - } + .certificate = QSslCertificate(params()[KEY_PROP_SSL_CERTIFICATE].toLatin1()), + .privateKey = Utils::SSLKey::load(params()[KEY_PROP_SSL_PRIVATEKEY].toLatin1()), + .dhParams = params()[KEY_PROP_SSL_DHPARAMS].toLatin1() } - } - - BitTorrent::AddTorrentParams addTorrentParams; - // TODO: Check if destination actually exists - addTorrentParams.skipChecking = skipChecking; - addTorrentParams.sequential = seqDownload; - addTorrentParams.firstLastPiecePriority = firstLastPiece; - addTorrentParams.addToQueueTop = addToQueueTop; - addTorrentParams.addPaused = addPaused; - addTorrentParams.stopCondition = stopCondition; - addTorrentParams.contentLayout = contentLayout; - addTorrentParams.savePath = Path(savepath); - addTorrentParams.downloadPath = Path(downloadPath); - addTorrentParams.useDownloadPath = useDownloadPath; - addTorrentParams.category = category; - addTorrentParams.tags.insert(tags.cbegin(), tags.cend()); - addTorrentParams.name = torrentName; - addTorrentParams.uploadLimit = upLimit; - addTorrentParams.downloadLimit = dlLimit; - addTorrentParams.seedingTimeLimit = seedingTimeLimit; - addTorrentParams.inactiveSeedingTimeLimit = inactiveSeedingTimeLimit; - addTorrentParams.ratioLimit = ratioLimit; - addTorrentParams.useAutoTMM = autoTMM; + }; bool partialSuccess = false; for (QString url : asConst(urls.split(u'\n'))) @@ -741,12 +880,11 @@ void TorrentsController::addAction() url = url.trimmed(); if (!url.isEmpty()) { - Net::DownloadManager::instance()->setCookiesFromUrl(cookies, QUrl::fromEncoded(url.toUtf8())); partialSuccess |= app()->addTorrentManager()->addTorrent(url, addTorrentParams); } } - const DataMap torrents = data(); + const DataMap &torrents = data(); for (auto it = torrents.constBegin(); it != torrents.constEnd(); ++it) { if (const auto loadResult = BitTorrent::TorrentDescriptor::load(it.value())) @@ -774,7 +912,7 @@ void TorrentsController::addTrackersAction() if (!torrent) throw APIError(APIErrorType::NotFound); - const QVector entries = BitTorrent::parseTrackerEntries(params()[u"urls"_s]); + const QList entries = BitTorrent::parseTrackerEntries(params()[u"urls"_s]); torrent->addTrackers(entries); } @@ -797,25 +935,37 @@ void TorrentsController::editTrackerAction() if (!newTrackerUrl.isValid()) throw APIError(APIErrorType::BadParams, u"New tracker URL is invalid"_s); - QVector trackers = torrent->trackers(); + const QList currentTrackers = torrent->trackers(); + QList entries; + entries.reserve(currentTrackers.size()); + bool match = false; - for (BitTorrent::TrackerEntry &tracker : trackers) + for (const BitTorrent::TrackerEntryStatus &tracker : currentTrackers) { const QUrl trackerUrl {tracker.url}; + if (trackerUrl == newTrackerUrl) throw APIError(APIErrorType::Conflict, u"New tracker URL already exists"_s); + + BitTorrent::TrackerEntry entry + { + .url = tracker.url, + .tier = tracker.tier + }; + if (trackerUrl == origTrackerUrl) { match = true; - tracker.url = newTrackerUrl.toString(); + entry.url = newTrackerUrl.toString(); } + entries.append(entry); } if (!match) throw APIError(APIErrorType::Conflict, u"Tracker not found"_s); - torrent->replaceTrackers(trackers); + torrent->replaceTrackers(entries); - if (!torrent->isPaused()) + if (!torrent->isStopped()) torrent->forceReannounce(); } @@ -823,16 +973,34 @@ void TorrentsController::removeTrackersAction() { requireParams({u"hash"_s, u"urls"_s}); - const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); - BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); - if (!torrent) - throw APIError(APIErrorType::NotFound); + const QString hashParam = params()[u"hash"_s]; + const QStringList urlsParam = params()[u"urls"_s].split(u'|', Qt::SkipEmptyParts); - const QStringList urls = params()[u"urls"_s].split(u'|'); - torrent->removeTrackers(urls); + QStringList urls; + urls.reserve(urlsParam.size()); + for (const QString &urlStr : urlsParam) + urls << QUrl::fromPercentEncoding(urlStr.toLatin1()); - if (!torrent->isPaused()) - torrent->forceReannounce(); + QList torrents; + + if (hashParam == u"*"_s) + { + // remove trackers from all torrents + torrents = BitTorrent::Session::instance()->torrents(); + } + else + { + // remove trackers from specified torrent + const auto id = BitTorrent::TorrentID::fromString(hashParam); + BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); + if (!torrent) + throw APIError(APIErrorType::NotFound); + + torrents.append(torrent); + } + + for (BitTorrent::Torrent *const torrent : asConst(torrents)) + torrent->removeTrackers(urls); } void TorrentsController::addPeersAction() @@ -842,7 +1010,7 @@ void TorrentsController::addPeersAction() const QStringList hashes = params()[u"hashes"_s].split(u'|'); const QStringList peers = params()[u"peers"_s].split(u'|'); - QVector peerList; + QList peerList; peerList.reserve(peers.size()); for (const QString &peer : peers) { @@ -873,20 +1041,20 @@ void TorrentsController::addPeersAction() setResult(results); } -void TorrentsController::pauseAction() +void TorrentsController::stopAction() { requireParams({u"hashes"_s}); const QStringList hashes = params()[u"hashes"_s].split(u'|'); - applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->pause(); }); + applyToTorrents(hashes, [](BitTorrent::Torrent *const torrent) { torrent->stop(); }); } -void TorrentsController::resumeAction() +void TorrentsController::startAction() { requireParams({u"hashes"_s}); const QStringList idStrings = params()[u"hashes"_s].split(u'|'); - applyToTorrents(idStrings, [](BitTorrent::Torrent *const torrent) { torrent->resume(); }); + applyToTorrents(idStrings, [](BitTorrent::Torrent *const torrent) { torrent->start(); }); } void TorrentsController::filePrioAction() @@ -909,7 +1077,7 @@ void TorrentsController::filePrioAction() throw APIError(APIErrorType::Conflict, tr("Torrent's metadata has not yet downloaded")); const int filesCount = torrent->filesCount(); - QVector priorities = torrent->filePriorities(); + QList priorities = torrent->filePriorities(); bool priorityChanged = false; for (const QString &fileID : params()[u"id"_s].split(u'|')) { @@ -1040,7 +1208,7 @@ void TorrentsController::setForceStartAction() const QStringList hashes {params()[u"hashes"_s].split(u'|')}; applyToTorrents(hashes, [value](BitTorrent::Torrent *const torrent) { - torrent->resume(value ? BitTorrent::TorrentOperatingMode::Forced : BitTorrent::TorrentOperatingMode::AutoManaged); + torrent->start(value ? BitTorrent::TorrentOperatingMode::Forced : BitTorrent::TorrentOperatingMode::AutoManaged); }); } @@ -1049,11 +1217,11 @@ void TorrentsController::deleteAction() requireParams({u"hashes"_s, u"deleteFiles"_s}); const QStringList hashes {params()[u"hashes"_s].split(u'|')}; - const DeleteOption deleteOption = parseBool(params()[u"deleteFiles"_s]).value_or(false) - ? DeleteTorrentAndFiles : DeleteTorrent; + const BitTorrent::TorrentRemoveOption deleteOption = parseBool(params()[u"deleteFiles"_s]).value_or(false) + ? BitTorrent::TorrentRemoveOption::RemoveContent : BitTorrent::TorrentRemoveOption::KeepContent; applyToTorrents(hashes, [deleteOption](const BitTorrent::Torrent *torrent) { - BitTorrent::Session::instance()->deleteTorrent(torrent->id(), deleteOption); + BitTorrent::Session::instance()->removeTorrent(torrent->id(), deleteOption); }); } @@ -1317,16 +1485,36 @@ void TorrentsController::addTagsAction() const QStringList hashes {params()[u"hashes"_s].split(u'|')}; const QStringList tags {params()[u"tags"_s].split(u',', Qt::SkipEmptyParts)}; - for (const QString &tag : tags) + for (const QString &tagStr : tags) { - const QString tagTrimmed {tag.trimmed()}; - applyToTorrents(hashes, [&tagTrimmed](BitTorrent::Torrent *const torrent) + applyToTorrents(hashes, [&tagStr](BitTorrent::Torrent *const torrent) { - torrent->addTag(tagTrimmed); + torrent->addTag(Tag(tagStr)); }); } } +void TorrentsController::setTagsAction() +{ + requireParams({u"hashes"_s, u"tags"_s}); + + const QStringList hashes {params()[u"hashes"_s].split(u'|', Qt::SkipEmptyParts)}; + const QStringList tags {params()[u"tags"_s].split(u',', Qt::SkipEmptyParts)}; + + const TagSet newTags {tags.begin(), tags.end()}; + applyToTorrents(hashes, [&newTags](BitTorrent::Torrent *const torrent) + { + TagSet tmpTags {newTags}; + for (const Tag &tag : asConst(torrent->tags())) + { + if (tmpTags.erase(tag) == 0) + torrent->removeTag(tag); + } + for (const Tag &tag : tmpTags) + torrent->addTag(tag); + }); +} + void TorrentsController::removeTagsAction() { requireParams({u"hashes"_s}); @@ -1334,12 +1522,11 @@ void TorrentsController::removeTagsAction() const QStringList hashes {params()[u"hashes"_s].split(u'|')}; const QStringList tags {params()[u"tags"_s].split(u',', Qt::SkipEmptyParts)}; - for (const QString &tag : tags) + for (const QString &tagStr : tags) { - const QString tagTrimmed {tag.trimmed()}; - applyToTorrents(hashes, [&tagTrimmed](BitTorrent::Torrent *const torrent) + applyToTorrents(hashes, [&tagStr](BitTorrent::Torrent *const torrent) { - torrent->removeTag(tagTrimmed); + torrent->removeTag(Tag(tagStr)); }); } @@ -1358,8 +1545,8 @@ void TorrentsController::createTagsAction() const QStringList tags {params()[u"tags"_s].split(u',', Qt::SkipEmptyParts)}; - for (const QString &tag : tags) - BitTorrent::Session::instance()->addTag(tag.trimmed()); + for (const QString &tagStr : tags) + BitTorrent::Session::instance()->addTag(Tag(tagStr)); } void TorrentsController::deleteTagsAction() @@ -1367,15 +1554,15 @@ void TorrentsController::deleteTagsAction() requireParams({u"tags"_s}); const QStringList tags {params()[u"tags"_s].split(u',', Qt::SkipEmptyParts)}; - for (const QString &tag : tags) - BitTorrent::Session::instance()->removeTag(tag.trimmed()); + for (const QString &tagStr : tags) + BitTorrent::Session::instance()->removeTag(Tag(tagStr)); } void TorrentsController::tagsAction() { QJsonArray result; - for (const QString &tag : asConst(BitTorrent::Session::instance()->tags())) - result << tag; + for (const Tag &tag : asConst(BitTorrent::Session::instance()->tags())) + result << tag.toString(); setResult(result); } @@ -1436,5 +1623,45 @@ void TorrentsController::exportAction() if (!result) throw APIError(APIErrorType::Conflict, tr("Unable to export torrent file. Error: %1").arg(result.error())); - setResult(result.value()); + setResult(result.value(), u"application/x-bittorrent"_s, (id.toString() + u".torrent")); +} + +void TorrentsController::SSLParametersAction() +{ + requireParams({u"hash"_s}); + + const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); + const BitTorrent::Torrent *torrent = BitTorrent::Session::instance()->getTorrent(id); + if (!torrent) + throw APIError(APIErrorType::NotFound); + + const BitTorrent::SSLParameters sslParams = torrent->getSSLParameters(); + const QJsonObject ret + { + {KEY_PROP_SSL_CERTIFICATE, QString::fromLatin1(sslParams.certificate.toPem())}, + {KEY_PROP_SSL_PRIVATEKEY, QString::fromLatin1(sslParams.privateKey.toPem())}, + {KEY_PROP_SSL_DHPARAMS, QString::fromLatin1(sslParams.dhParams)} + }; + setResult(ret); +} + +void TorrentsController::setSSLParametersAction() +{ + requireParams({u"hash"_s, KEY_PROP_SSL_CERTIFICATE, KEY_PROP_SSL_PRIVATEKEY, KEY_PROP_SSL_DHPARAMS}); + + const auto id = BitTorrent::TorrentID::fromString(params()[u"hash"_s]); + BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id); + if (!torrent) + throw APIError(APIErrorType::NotFound); + + const BitTorrent::SSLParameters sslParams + { + .certificate = QSslCertificate(params()[KEY_PROP_SSL_CERTIFICATE].toLatin1()), + .privateKey = Utils::SSLKey::load(params()[KEY_PROP_SSL_PRIVATEKEY].toLatin1()), + .dhParams = params()[KEY_PROP_SSL_DHPARAMS].toLatin1() + }; + if (!sslParams.isValid()) + throw APIError(APIErrorType::BadData); + + torrent->setSSLParameters(sslParams); } diff --git a/src/webui/api/torrentscontroller.h b/src/webui/api/torrentscontroller.h index e961505f83a6..a233048acc76 100644 --- a/src/webui/api/torrentscontroller.h +++ b/src/webui/api/torrentscontroller.h @@ -44,11 +44,14 @@ private slots: void propertiesAction(); void trackersAction(); void webseedsAction(); + void addWebSeedsAction(); + void editWebSeedAction(); + void removeWebSeedsAction(); void filesAction(); void pieceHashesAction(); void pieceStatesAction(); - void resumeAction(); - void pauseAction(); + void startAction(); + void stopAction(); void recheckAction(); void reannounceAction(); void renameAction(); @@ -58,6 +61,7 @@ private slots: void removeCategoriesAction(); void categoriesAction(); void addTagsAction(); + void setTagsAction(); void removeTagsAction(); void createTagsAction(); void deleteTagsAction(); @@ -89,4 +93,6 @@ private slots: void renameFileAction(); void renameFolderAction(); void exportAction(); + void SSLParametersAction(); + void setSSLParametersAction(); }; diff --git a/src/webui/api/transfercontroller.cpp b/src/webui/api/transfercontroller.cpp index 115804270565..66ecb27470a5 100644 --- a/src/webui/api/transfercontroller.cpp +++ b/src/webui/api/transfercontroller.cpp @@ -29,7 +29,7 @@ #include "transfercontroller.h" #include -#include +#include #include "base/bittorrent/peeraddress.h" #include "base/bittorrent/peerinfo.h" @@ -45,6 +45,8 @@ const QString KEY_TRANSFER_DLRATELIMIT = u"dl_rate_limit"_s; const QString KEY_TRANSFER_UPSPEED = u"up_info_speed"_s; const QString KEY_TRANSFER_UPDATA = u"up_info_data"_s; const QString KEY_TRANSFER_UPRATELIMIT = u"up_rate_limit"_s; +const QString KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V4 = u"last_external_address_v4"_s; +const QString KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V6 = u"last_external_address_v6"_s; const QString KEY_TRANSFER_DHT_NODES = u"dht_nodes"_s; const QString KEY_TRANSFER_CONNECTION_STATUS = u"connection_status"_s; @@ -57,11 +59,14 @@ const QString KEY_TRANSFER_CONNECTION_STATUS = u"connection_status"_s; // - "up_info_data": Data uploaded this session // - "dl_rate_limit": Download rate limit // - "up_rate_limit": Upload rate limit +// - "last_external_address_v4": external IPv4 address +// - "last_external_address_v6": external IPv6 address // - "dht_nodes": DHT nodes connected to // - "connection_status": Connection status void TransferController::infoAction() { - const BitTorrent::SessionStatus &sessionStatus = BitTorrent::Session::instance()->status(); + const auto *btSession = BitTorrent::Session::instance(); + const BitTorrent::SessionStatus &sessionStatus = btSession->status(); QJsonObject dict; @@ -69,10 +74,12 @@ void TransferController::infoAction() dict[KEY_TRANSFER_DLDATA] = static_cast(sessionStatus.totalPayloadDownload); dict[KEY_TRANSFER_UPSPEED] = static_cast(sessionStatus.payloadUploadRate); dict[KEY_TRANSFER_UPDATA] = static_cast(sessionStatus.totalPayloadUpload); - dict[KEY_TRANSFER_DLRATELIMIT] = BitTorrent::Session::instance()->downloadSpeedLimit(); - dict[KEY_TRANSFER_UPRATELIMIT] = BitTorrent::Session::instance()->uploadSpeedLimit(); + dict[KEY_TRANSFER_DLRATELIMIT] = btSession->downloadSpeedLimit(); + dict[KEY_TRANSFER_UPRATELIMIT] = btSession->uploadSpeedLimit(); + dict[KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V4] = btSession->lastExternalIPv4Address(); + dict[KEY_TRANSFER_LAST_EXTERNAL_ADDRESS_V6] = btSession->lastExternalIPv6Address(); dict[KEY_TRANSFER_DHT_NODES] = static_cast(sessionStatus.dhtNodes); - if (!BitTorrent::Session::instance()->isListening()) + if (!btSession->isListening()) dict[KEY_TRANSFER_CONNECTION_STATUS] = u"disconnected"_s; else dict[KEY_TRANSFER_CONNECTION_STATUS] = sessionStatus.hasIncomingConnections ? u"connected"_s : u"firewalled"_s; diff --git a/src/webui/webapplication.cpp b/src/webui/webapplication.cpp index 49963a7cf2a8..0f556f3f36a0 100644 --- a/src/webui/webapplication.cpp +++ b/src/webui/webapplication.cpp @@ -1,6 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2014, 2022-2023 Vladimir Golovnev + * Copyright (C) 2014-2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -46,6 +47,7 @@ #include #include "base/algorithm.h" +#include "base/bittorrent/torrentcreationmanager.h" #include "base/http/httperror.h" #include "base/logger.h" #include "base/preferences.h" @@ -62,6 +64,7 @@ #include "api/rsscontroller.h" #include "api/searchcontroller.h" #include "api/synccontroller.h" +#include "api/torrentcreatorcontroller.h" #include "api/torrentscontroller.h" #include "api/transfercontroller.h" #include "freediskspacechecker.h" @@ -112,9 +115,8 @@ namespace if (contentType.startsWith(u"image/")) return u"private, max-age=604800"_s; // 1 week - if ((contentType == Http::CONTENT_TYPE_CSS) - || (contentType == Http::CONTENT_TYPE_JS)) - { + if ((contentType == Http::CONTENT_TYPE_CSS) || (contentType == Http::CONTENT_TYPE_JS)) + { // short interval in case of program update return u"private, max-age=43200"_s; // 12 hrs } @@ -125,14 +127,18 @@ namespace QString createLanguagesOptionsHtml() { // List language files - const QDir langDir {u":/www/translations"_s}; - const QStringList langFiles = langDir.entryList(QStringList(u"webui_*.qm"_s), QDir::Files); + const QStringList langFiles = QDir(u":/www/translations"_s) + .entryList({u"webui_*.qm"_s}, QDir::Files, QDir::Name); + QStringList languages; + languages.reserve(langFiles.size()); + for (const QString &langFile : langFiles) { - const QString localeStr = langFile.section(u"_"_s, 1, -1).section(u"."_s, 0, 0); // remove "webui_" and ".qm" - languages << u""_s.arg(localeStr, Utils::Misc::languageToLocalizedString(localeStr)); - qDebug() << "Supported locale:" << localeStr; + const auto langCode = QStringView(langFile).sliced(6).chopped(3); // remove "webui_" and ".qm" + const QString entry = u""_s + .arg(langCode, Utils::Misc::languageToLocalizedString(langCode)); + languages.append(entry); } return languages.join(u'\n'); @@ -158,6 +164,7 @@ WebApplication::WebApplication(IApplication *app, QObject *parent) , m_workerThread {new QThread} , m_freeDiskSpaceChecker {new FreeDiskSpaceChecker} , m_freeDiskSpaceCheckingTimer {new QTimer(this)} + , m_torrentCreationManager {new BitTorrent::TorrentCreationManager(app, this)} { declarePublicAPI(u"auth/login"_s); @@ -177,6 +184,7 @@ WebApplication::WebApplication(IApplication *app, QObject *parent) m_freeDiskSpaceChecker->moveToThread(m_workerThread.get()); connect(m_workerThread.get(), &QThread::finished, m_freeDiskSpaceChecker, &QObject::deleteLater); + m_workerThread->setObjectName("WebApplication m_workerThread"); m_workerThread->start(); m_freeDiskSpaceCheckingTimer->setInterval(FREEDISKSPACE_CHECK_TIMEOUT); @@ -258,9 +266,11 @@ void WebApplication::translateDocument(QString &data) const // it should fallback to `sourceText` QString translation = loadedText.isEmpty() ? sourceText : loadedText; - // Use HTML code for quotes to prevent issues with JS - translation.replace(u'\'', u"'"_s); - translation.replace(u'\"', u"""_s); + // Escape quotes to workaround issues with HTML attributes + // FIXME: this is a dirty workaround to deal with broken translation strings: + // 1. Translation strings is the culprit of the issue, they should be fixed instead + // 2. The escaped quote/string is wrong for JS. JS use backslash to escape the quote: "\"" + translation.replace(u'"', u"""_s); data.replace(i, regexMatch.capturedLength(), translation); i += translation.length(); @@ -329,8 +339,8 @@ void WebApplication::doProcessRequest() } // Filter HTTP methods - const auto allowedMethodIter = m_allowedMethod.find({scope, action}); - if (allowedMethodIter == m_allowedMethod.end()) + const auto allowedMethodIter = m_allowedMethod.constFind({scope, action}); + if (allowedMethodIter == m_allowedMethod.cend()) { // by default allow both GET, POST methods if ((m_request.method != Http::METHOD_GET) && (m_request.method != Http::METHOD_POST)) @@ -348,18 +358,25 @@ void WebApplication::doProcessRequest() try { - const QVariant result = controller->run(action, m_params, data); - switch (result.userType()) + const APIResult result = controller->run(action, m_params, data); + switch (result.data.userType()) { case QMetaType::QJsonDocument: - print(result.toJsonDocument().toJson(QJsonDocument::Compact), Http::CONTENT_TYPE_JSON); + print(result.data.toJsonDocument().toJson(QJsonDocument::Compact), Http::CONTENT_TYPE_JSON); break; case QMetaType::QByteArray: - print(result.toByteArray(), Http::CONTENT_TYPE_TXT); + { + const auto resultData = result.data.toByteArray(); + print(resultData, (!result.mimeType.isEmpty() ? result.mimeType : Http::CONTENT_TYPE_TXT)); + if (!result.filename.isEmpty()) + { + setHeader({u"Content-Disposition"_s, u"attachment; filename=\"%1\""_s.arg(result.filename)}); + } + } break; case QMetaType::QString: default: - print(result.toString(), Http::CONTENT_TYPE_TXT); + print(result.data.toString(), Http::CONTENT_TYPE_TXT); break; } } @@ -379,7 +396,8 @@ void WebApplication::doProcessRequest() case APIErrorType::NotFound: throw NotFoundHTTPError(error.message()); default: - Q_ASSERT(false); + Q_UNREACHABLE(); + break; } } } @@ -449,7 +467,7 @@ void WebApplication::configure() const QString contentSecurityPolicy = (m_isAltUIUsed ? QString() - : u"default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; object-src 'none'; form-action 'self';"_s) + : u"default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src 'self' 'unsafe-inline'; object-src 'none'; form-action 'self'; frame-src 'self' blob:;"_s) + (isClickjackingProtectionEnabled ? u" frame-ancestors 'self';"_s : QString()) + (m_isHttpsEnabled ? u" upgrade-insecure-requests;"_s : QString()); if (!contentSecurityPolicy.isEmpty()) @@ -682,7 +700,7 @@ QString WebApplication::generateSid() const bool WebApplication::isAuthNeeded() { - if (!m_isLocalAuthEnabled && Utils::Net::isLoopbackAddress(m_clientAddress)) + if (!m_isLocalAuthEnabled && m_clientAddress.isLoopback()) return false; if (m_isAuthSubnetWhitelistEnabled && Utils::Net::isIPInSubnets(m_clientAddress, m_authSubnetWhitelist)) return false; @@ -713,27 +731,28 @@ void WebApplication::sessionStart() m_currentSession = new WebSession(generateSid(), app()); m_sessions[m_currentSession->id()] = m_currentSession; - m_currentSession->registerAPIController(u"app"_s); - m_currentSession->registerAPIController(u"log"_s); - m_currentSession->registerAPIController(u"rss"_s); - m_currentSession->registerAPIController(u"search"_s); - m_currentSession->registerAPIController(u"torrents"_s); - m_currentSession->registerAPIController(u"transfer"_s); + m_currentSession->registerAPIController(u"app"_s, new AppController(app(), m_currentSession)); + m_currentSession->registerAPIController(u"log"_s, new LogController(app(), m_currentSession)); + m_currentSession->registerAPIController(u"torrentcreator"_s, new TorrentCreatorController(m_torrentCreationManager, app(), m_currentSession)); + m_currentSession->registerAPIController(u"rss"_s, new RSSController(app(), m_currentSession)); + m_currentSession->registerAPIController(u"search"_s, new SearchController(app(), m_currentSession)); + m_currentSession->registerAPIController(u"torrents"_s, new TorrentsController(app(), m_currentSession)); + m_currentSession->registerAPIController(u"transfer"_s, new TransferController(app(), m_currentSession)); - auto *syncController = m_currentSession->registerAPIController(u"sync"_s); + auto *syncController = new SyncController(app(), m_currentSession); syncController->updateFreeDiskSpace(m_freeDiskSpaceChecker->lastResult()); connect(m_freeDiskSpaceChecker, &FreeDiskSpaceChecker::checked, syncController, &SyncController::updateFreeDiskSpace); + m_currentSession->registerAPIController(u"sync"_s, syncController); - QNetworkCookie cookie {m_sessionCookieName.toLatin1(), m_currentSession->id().toUtf8()}; + QNetworkCookie cookie {m_sessionCookieName.toLatin1(), m_currentSession->id().toLatin1()}; cookie.setHttpOnly(true); - cookie.setSecure(m_isSecureCookieEnabled && m_isHttpsEnabled); + cookie.setSecure(m_isSecureCookieEnabled && isOriginTrustworthy()); // [rfc6265] 4.1.2.5. The Secure Attribute cookie.setPath(u"/"_s); - QByteArray cookieRawForm = cookie.toRawForm(); if (m_isCSRFProtectionEnabled) - cookieRawForm.append("; SameSite=Strict"); + cookie.setSameSitePolicy(QNetworkCookie::SameSite::Strict); else if (cookie.isSecure()) - cookieRawForm.append("; SameSite=None"); - setHeader({Http::HEADER_SET_COOKIE, QString::fromLatin1(cookieRawForm)}); + cookie.setSameSitePolicy(QNetworkCookie::SameSite::None); + setHeader({Http::HEADER_SET_COOKIE, QString::fromLatin1(cookie.toRawForm())}); } void WebApplication::sessionEnd() @@ -750,6 +769,23 @@ void WebApplication::sessionEnd() setHeader({Http::HEADER_SET_COOKIE, QString::fromLatin1(cookie.toRawForm())}); } +bool WebApplication::isOriginTrustworthy() const +{ + // https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy + + if (m_isReverseProxySupportEnabled) + { + const QString forwardedProto = request().headers.value(Http::HEADER_X_FORWARDED_PROTO); + if (forwardedProto.compare(u"https", Qt::CaseInsensitive) == 0) + return true; + } + + if (m_isHttpsEnabled) + return true; + + return false; +} + bool WebApplication::isCrossSiteRequest(const Http::Request &request) const { // https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Verifying_Same_Origin_with_Standard_Headers @@ -897,6 +933,12 @@ void WebSession::updateTimestamp() m_timer.start(); } +void WebSession::registerAPIController(const QString &scope, APIController *controller) +{ + Q_ASSERT(controller); + m_apiControllers[scope] = controller; +} + APIController *WebSession::getAPIController(const QString &scope) const { return m_apiControllers.value(scope); diff --git a/src/webui/webapplication.h b/src/webui/webapplication.h index 15549eb5c895..e30d5f349e69 100644 --- a/src/webui/webapplication.h +++ b/src/webui/webapplication.h @@ -1,6 +1,7 @@ /* * Bittorrent Client using Qt and libtorrent. - * Copyright (C) 2014, 2017, 2022-2023 Vladimir Golovnev + * Copyright (C) 2014-2024 Vladimir Golovnev + * Copyright (C) 2024 Radu Carpa * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -35,12 +36,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include "base/applicationcomponent.h" #include "base/global.h" @@ -53,7 +54,7 @@ #include "base/utils/version.h" #include "api/isessionmanager.h" -inline const Utils::Version<3, 2> API_VERSION {2, 10, 1}; +inline const Utils::Version<3, 2> API_VERSION {2, 11, 4}; class QTimer; @@ -62,6 +63,11 @@ class AuthController; class FreeDiskSpaceChecker; class WebApplication; +namespace BitTorrent +{ + class TorrentCreationManager; +} + class WebSession final : public ApplicationComponent, public ISession { public: @@ -72,15 +78,7 @@ class WebSession final : public ApplicationComponent, public ISession bool hasExpired(qint64 seconds) const; void updateTimestamp(); - template - T *registerAPIController(const QString &scope) - { - static_assert(std::is_base_of_v, "Class should be derived from APIController."); - auto *controller = new T(app(), this); - m_apiControllers[scope] = controller; - return controller; - } - + void registerAPIController(const QString &scope, APIController *controller); APIController *getAPIController(const QString &scope) const; private: @@ -130,9 +128,11 @@ class WebApplication final : public ApplicationComponent bool isAuthNeeded(); bool isPublicAPI(const QString &scope, const QString &action) const; + bool isOriginTrustworthy() const; bool isCrossSiteRequest(const Http::Request &request) const; bool validateHostHeader(const QStringList &domains) const; + // reverse proxy QHostAddress resolveClientAddress() const; // Persistent data @@ -151,12 +151,13 @@ class WebApplication final : public ApplicationComponent const QHash, QString> m_allowedMethod = { // <, HTTP method> + {{u"app"_s, u"sendTestEmail"_s}, Http::METHOD_POST}, + {{u"app"_s, u"setCookies"_s}, Http::METHOD_POST}, {{u"app"_s, u"setPreferences"_s}, Http::METHOD_POST}, {{u"app"_s, u"shutdown"_s}, Http::METHOD_POST}, {{u"auth"_s, u"login"_s}, Http::METHOD_POST}, {{u"auth"_s, u"logout"_s}, Http::METHOD_POST}, {{u"rss"_s, u"addFeed"_s}, Http::METHOD_POST}, - {{u"rss"_s, u"setFeedURL"_s}, Http::METHOD_POST}, {{u"rss"_s, u"addFolder"_s}, Http::METHOD_POST}, {{u"rss"_s, u"markAsRead"_s}, Http::METHOD_POST}, {{u"rss"_s, u"moveItem"_s}, Http::METHOD_POST}, @@ -164,6 +165,7 @@ class WebApplication final : public ApplicationComponent {{u"rss"_s, u"removeItem"_s}, Http::METHOD_POST}, {{u"rss"_s, u"removeRule"_s}, Http::METHOD_POST}, {{u"rss"_s, u"renameRule"_s}, Http::METHOD_POST}, + {{u"rss"_s, u"setFeedURL"_s}, Http::METHOD_POST}, {{u"rss"_s, u"setRule"_s}, Http::METHOD_POST}, {{u"search"_s, u"delete"_s}, Http::METHOD_POST}, {{u"search"_s, u"enablePlugin"_s}, Http::METHOD_POST}, @@ -172,10 +174,14 @@ class WebApplication final : public ApplicationComponent {{u"search"_s, u"stop"_s}, Http::METHOD_POST}, {{u"search"_s, u"uninstallPlugin"_s}, Http::METHOD_POST}, {{u"search"_s, u"updatePlugins"_s}, Http::METHOD_POST}, + {{u"torrentcreator"_s, u"addTask"_s}, Http::METHOD_POST}, + {{u"torrentcreator"_s, u"deleteTask"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"add"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"addPeers"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"addTags"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"addTrackers"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"addWebSeeds"_s}, Http::METHOD_POST}, + {{u"transfer"_s, u"banPeers"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"bottomPrio"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"createCategory"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"createTags"_s}, Http::METHOD_POST}, @@ -184,18 +190,18 @@ class WebApplication final : public ApplicationComponent {{u"torrents"_s, u"deleteTags"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"editCategory"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"editTracker"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"editWebSeed"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"filePrio"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"increasePrio"_s}, Http::METHOD_POST}, - {{u"torrents"_s, u"pause"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"reannounce"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"recheck"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"removeCategories"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"removeTags"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"removeTrackers"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"removeWebSeeds"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"rename"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"renameFile"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"renameFolder"_s}, Http::METHOD_POST}, - {{u"torrents"_s, u"resume"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setAutoManagement"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setCategory"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setDownloadLimit"_s}, Http::METHOD_POST}, @@ -204,16 +210,19 @@ class WebApplication final : public ApplicationComponent {{u"torrents"_s, u"setLocation"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setSavePath"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setShareLimits"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"setSSLParameters"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setSuperSeeding"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"setTags"_s}, Http::METHOD_POST}, {{u"torrents"_s, u"setUploadLimit"_s}, Http::METHOD_POST}, - {{u"torrents"_s, u"toggleFirstLastPiecePrio"_s}, Http::METHOD_POST}, - {{u"torrents"_s, u"toggleSequentialDownload"_s}, Http::METHOD_POST}, - {{u"torrents"_s, u"topPrio"_s}, Http::METHOD_POST}, - {{u"transfer"_s, u"banPeers"_s}, Http::METHOD_POST}, {{u"transfer"_s, u"setDownloadLimit"_s}, Http::METHOD_POST}, {{u"transfer"_s, u"setSpeedLimitsMode"_s}, Http::METHOD_POST}, {{u"transfer"_s, u"setUploadLimit"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"start"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"stop"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"toggleFirstLastPiecePrio"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"toggleSequentialDownload"_s}, Http::METHOD_POST}, {{u"transfer"_s, u"toggleSpeedLimitsMode"_s}, Http::METHOD_POST}, + {{u"torrents"_s, u"topPrio"_s}, Http::METHOD_POST}, }; bool m_isAltUIUsed = false; Path m_rootFolder; @@ -232,7 +241,7 @@ class WebApplication final : public ApplicationComponent AuthController *m_authController = nullptr; bool m_isLocalAuthEnabled = false; bool m_isAuthSubnetWhitelistEnabled = false; - QVector m_authSubnetWhitelist; + QList m_authSubnetWhitelist; int m_sessionTimeout = 0; QString m_sessionCookieName; @@ -245,12 +254,13 @@ class WebApplication final : public ApplicationComponent // Reverse proxy bool m_isReverseProxySupportEnabled = false; - QVector m_trustedReverseProxyList; + QList m_trustedReverseProxyList; QHostAddress m_clientAddress; - QVector m_prebuiltHeaders; + QList m_prebuiltHeaders; Utils::Thread::UniquePtr m_workerThread; FreeDiskSpaceChecker *m_freeDiskSpaceChecker = nullptr; QTimer *m_freeDiskSpaceCheckingTimer = nullptr; + BitTorrent::TorrentCreationManager *m_torrentCreationManager = nullptr; }; diff --git a/src/webui/webui.cpp b/src/webui/webui.cpp index 20036c156e85..fc177d56bfec 100644 --- a/src/webui/webui.cpp +++ b/src/webui/webui.cpp @@ -42,7 +42,7 @@ WebUI::WebUI(IApplication *app, const QByteArray &tempPasswordHash) : ApplicationComponent(app) - , m_passwordHash {tempPasswordHash} + , m_tempPasswordHash {tempPasswordHash} { configure(); connect(Preferences::instance(), &Preferences::changed, this, &WebUI::configure); @@ -54,12 +54,17 @@ void WebUI::configure() m_errorMsg.clear(); const Preferences *pref = Preferences::instance(); + m_isEnabled = pref->isWebUIEnabled(); const QString username = pref->getWebUIUsername(); - if (const QByteArray passwordHash = pref->getWebUIPassword(); !passwordHash.isEmpty()) - m_passwordHash = passwordHash; + QByteArray passwordHash = m_tempPasswordHash; + if (const QByteArray prefPasswordHash = pref->getWebUIPassword(); !prefPasswordHash.isEmpty()) + { + passwordHash = prefPasswordHash; + m_tempPasswordHash.clear(); + } - if (m_isEnabled && (username.isEmpty() || m_passwordHash.isEmpty())) + if (m_isEnabled && (username.isEmpty() || passwordHash.isEmpty())) { setError(tr("Credentials are not set")); } @@ -98,7 +103,7 @@ void WebUI::configure() } m_webapp->setUsername(username); - m_webapp->setPasswordHash(m_passwordHash); + m_webapp->setPasswordHash(passwordHash); if (pref->isWebUIHttpsEnabled()) { diff --git a/src/webui/webui.h b/src/webui/webui.h index fa0589c2a743..01820060b957 100644 --- a/src/webui/webui.h +++ b/src/webui/webui.h @@ -77,5 +77,5 @@ private slots: QPointer m_dnsUpdater; QPointer m_webapp; - QByteArray m_passwordHash; + QByteArray m_tempPasswordHash; }; diff --git a/src/webui/www/.eslintrc.json b/src/webui/www/.eslintrc.json deleted file mode 100644 index 92f607d69848..000000000000 --- a/src/webui/www/.eslintrc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "env": { - "browser": true, - "es2020": true - }, - "extends": "eslint:recommended", - "plugins": [ - "html" - ], - "rules": { - "no-undef": "off", - "no-unused-vars": "off", - "nonblock-statement-body-position": ["error", "below"], - "semi": "error" - } -} diff --git a/src/webui/www/.gitignore b/src/webui/www/.gitignore new file mode 100644 index 000000000000..2f85f13cb7f0 --- /dev/null +++ b/src/webui/www/.gitignore @@ -0,0 +1,5 @@ +# Web UI tools +.eslintcache +.stylelintcache +node_modules +package-lock.json diff --git a/src/webui/www/.htmlvalidate.json b/src/webui/www/.htmlvalidate.json deleted file mode 100644 index d07cc98d38da..000000000000 --- a/src/webui/www/.htmlvalidate.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": [ - "html-validate:recommended" - ], - "rules": { - "empty-heading": "off", - "long-title": "off", - "no-conditional-comment": "off", - "no-inline-style": "off", - "prefer-button": "off", - "prefer-tbody": "off", - "text-content": "off", - "void-style": "off", - "wcag/h63": "off", - "wcag/h71": "off" - } -} diff --git a/src/webui/www/.htmlvalidate.mjs b/src/webui/www/.htmlvalidate.mjs new file mode 100644 index 000000000000..b39ef1db3ade --- /dev/null +++ b/src/webui/www/.htmlvalidate.mjs @@ -0,0 +1,20 @@ +import { defineConfig } from "html-validate"; + +export default defineConfig({ + extends: [ + "html-validate:recommended" + ], + rules: { + "input-missing-label": "error", + "long-title": "off", + "no-inline-style": "off", + "no-missing-references": "error", + "prefer-button": "off", + "require-sri": [ + "error", + { + target: "crossorigin" + } + ] + } +}); diff --git a/src/webui/www/.stylelintrc.json b/src/webui/www/.stylelintrc.json deleted file mode 100644 index 55324a0dd449..000000000000 --- a/src/webui/www/.stylelintrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "stylelint-config-standard", - "plugins": [ - "stylelint-order" - ], - "ignoreFiles": ["private/css/lib/*.css"], - "rules": { - "color-hex-length": null, - "comment-empty-line-before": null, - "comment-whitespace-inside": null, - "function-name-case": null, - "length-zero-no-unit": null, - "no-descending-specificity": null, - "order/properties-alphabetical-order": true, - "selector-class-pattern": null, - "selector-id-pattern": null, - "value-keyword-case": null - } -} diff --git a/src/webui/www/README.md b/src/webui/www/README.md index 9422da5b9452..511598f2b558 100644 --- a/src/webui/www/README.md +++ b/src/webui/www/README.md @@ -1,18 +1,31 @@ -qBittorrent Web UI +qBittorrent WebUI --- ### Browser compatibility -| Browser | Lower bound | -| ----------------- | -------------------------------------------------- | -| Chrome | [The release from 1 year ago][Chrome-history-link] | -| Firefox | [Oldest active ESR release][Firefox-ESR-link] | -| Microsoft Edge | [The release from 1 year ago][MSEdge-history-link] | -| Safari | [The release from 1 year ago][Safari-history-link] | - The upper bound will always be the latest stable release. -[Chrome-history-link]: https://en.wikipedia.org/wiki/Google_Chrome_version_history -[Firefox-ESR-link]: https://en.wikipedia.org/wiki/Firefox_version_history#Current_and_future_releases -[MSEdge-history-link]: https://en.wikipedia.org/wiki/Microsoft_Edge#Release_history -[Safari-history-link]: https://en.wikipedia.org/wiki/Safari_version_history +| Browser | Lower bound | +| ----------------- | ------------------------------------------------------ | +| Chrome | [The release from 1 year ago][Chrome-lower-bound-link] | +| Firefox | [Latest active ESR release][Firefox-ESR-link] | +| Microsoft Edge | [The release from 1 year ago][MSEdge-lower-bound-link] | +| Safari | [The release from 1 year ago][Safari-lower-bound-link] | + +[Supported browsers table](https://browsersl.ist/?results#q=Chrome+%3E+0+and+last+1+year%0AEdge+%3E+0+and+last+1+year%0AFirefox+ESR%0ASafari+%3E+0+and+last+1+year) + +[Chrome-lower-bound-link]: https://browsersl.ist/?results#q=Chrome+%3E+0+and+last+1+year +[Firefox-ESR-link]: https://browsersl.ist/?results#q=Firefox+ESR +[MSEdge-lower-bound-link]: https://browsersl.ist/?results#q=Edge+%3E+0+and+last+1+year +[Safari-lower-bound-link]: https://browsersl.ist/?results#q=Safari+%3E+0+and+last+1+year + +### Notices + +* The [MooTools library][mootools-home] has seen [little maintenance][mootools-code-frequency] and therefore + its usage is [discouraged][mootools-deprecate]. \ + New code should prefer vanilla JavaScript and resort to MooTools only if necessary. \ + See also: [CVE-2021-20088](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2021-20088) + +[mootools-home]: https://mootools.net/ +[mootools-code-frequency]: https://github.com/mootools/mootools-core/graphs/code-frequency +[mootools-deprecate]: https://github.com/mootools/mootools-core/issues/2798 diff --git a/src/webui/www/eslint.config.mjs b/src/webui/www/eslint.config.mjs new file mode 100644 index 000000000000..6aafb8d64496 --- /dev/null +++ b/src/webui/www/eslint.config.mjs @@ -0,0 +1,65 @@ +import Globals from "globals"; +import Html from "eslint-plugin-html"; +import Js from "@eslint/js"; +import PreferArrowFunctions from "eslint-plugin-prefer-arrow-functions"; +import Stylistic from "@stylistic/eslint-plugin"; +import * as RegexpPlugin from "eslint-plugin-regexp"; + +export default [ + Js.configs.recommended, + RegexpPlugin.configs["flat/recommended"], + Stylistic.configs["disable-legacy"], + { + files: [ + "**/*.html", + "**/*.js", + "**/*.mjs" + ], + languageOptions: { + ecmaVersion: 2022, + globals: { + ...Globals.browser + } + }, + plugins: { + Html, + PreferArrowFunctions, + RegexpPlugin, + Stylistic + }, + rules: { + "curly": ["error", "multi-or-nest", "consistent"], + "eqeqeq": "error", + "guard-for-in": "error", + "no-undef": "off", + "no-unused-vars": "off", + "no-var": "error", + "operator-assignment": "error", + "prefer-arrow-callback": "error", + "prefer-const": "error", + "prefer-template": "error", + "radix": "error", + "PreferArrowFunctions/prefer-arrow-functions": "error", + "Stylistic/no-mixed-operators": [ + "error", + { + groups: [ + ["&", "|", "^", "~", "<<", ">>", ">>>", "==", "!=", "===", "!==", ">", ">=", "<", "<=", "&&", "||", "in", "instanceof"] + ] + } + ], + "Stylistic/nonblock-statement-body-position": ["error", "below"], + "Stylistic/quotes": [ + "error", + "double", + { + avoidEscape: true, + allowTemplateLiterals: true + } + ], + "Stylistic/quote-props": ["error", "consistent-as-needed"], + "Stylistic/semi": "error", + "Stylistic/spaced-comment": ["error", "always", { exceptions: ["*"] }] + } + } +]; diff --git a/src/webui/www/package.json b/src/webui/www/package.json index 6be44e27386b..2e0a23b4b569 100644 --- a/src/webui/www/package.json +++ b/src/webui/www/package.json @@ -6,17 +6,23 @@ "url": "https://github.com/qbittorrent/qBittorrent.git" }, "scripts": { - "format": "js-beautify private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js && prettier --write **.css", - "lint": "eslint private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js && stylelint **/*.css && html-validate private public" + "format": "js-beautify -r *.mjs private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js test/*/*.js && prettier --write **.css", + "lint": "eslint --cache *.mjs private/*.html private/scripts/*.js private/views/*.html public/*.html public/scripts/*.js test/*/*.js && stylelint --cache **/*.css && html-validate private public", + "test": "vitest run --dom" }, "devDependencies": { + "@stylistic/eslint-plugin": "*", "eslint": "*", "eslint-plugin-html": "*", + "eslint-plugin-prefer-arrow-functions": "*", + "eslint-plugin-regexp": "*", + "happy-dom": "*", "html-validate": "*", "js-beautify": "*", "prettier": "*", "stylelint": "*", "stylelint-config-standard": "*", - "stylelint-order": "*" + "stylelint-order": "*", + "vitest": "*" } } diff --git a/src/webui/www/private/addpeers.html b/src/webui/www/private/addpeers.html index 4a23ace3df90..ad645b3d9e63 100644 --- a/src/webui/www/private/addpeers.html +++ b/src/webui/www/private/addpeers.html @@ -1,57 +1,56 @@ - + - + QBT_TR(Add Peers)QBT_TR[CONTEXT=PeersAdditionDialog] - + + + @@ -59,10 +58,10 @@
    -

    QBT_TR(List of peers to add (one IP per line):)QBT_TR[CONTEXT=PeersAdditionDialog]

    +
    - +
    diff --git a/src/webui/www/private/addtrackers.html b/src/webui/www/private/addtrackers.html index 5bf5670cf25d..818f20f09bcd 100644 --- a/src/webui/www/private/addtrackers.html +++ b/src/webui/www/private/addtrackers.html @@ -1,57 +1,55 @@ - + - + QBT_TR(Add trackers)QBT_TR[CONTEXT=TrackersAdditionDialog] - + + + -
    -
    -

    QBT_TR(List of trackers to add (one per line):)QBT_TR[CONTEXT=TrackersAdditionDialog]

    +
    + -
    - +
    diff --git a/src/webui/www/private/addwebseeds.html b/src/webui/www/private/addwebseeds.html new file mode 100644 index 000000000000..c87c171467f9 --- /dev/null +++ b/src/webui/www/private/addwebseeds.html @@ -0,0 +1,57 @@ + + + + + + QBT_TR(Add web seeds)QBT_TR[CONTEXT=HttpServer] + + + + + + + + + +
    +
    + + +
    + +
    + + + diff --git a/src/webui/www/private/confirmdeletion.html b/src/webui/www/private/confirmdeletion.html deleted file mode 100644 index 6ce0174e882c..000000000000 --- a/src/webui/www/private/confirmdeletion.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg] - - - - - - - -
    - -

      QBT_TR(Are you sure you want to remove the selected torrents from the transfer list?)QBT_TR[CONTEXT=HttpServer]

    -     

    -
    -      -
    - - - diff --git a/src/webui/www/private/confirmfeeddeletion.html b/src/webui/www/private/confirmfeeddeletion.html index dba355316a8b..b0f2abe5c6e5 100644 --- a/src/webui/www/private/confirmfeeddeletion.html +++ b/src/webui/www/private/confirmfeeddeletion.html @@ -1,42 +1,48 @@ - + - + QBT_TR(Deletion confirmation)QBT_TR[CONTEXT=RSSWidget] - + + + @@ -46,8 +52,8 @@

    QBT_TR(Are you sure you want to delete the selected RSS feeds?)QBT_TR[CONTEXT=RSSWidget]

    - - + +
    diff --git a/src/webui/www/private/confirmruleclear.html b/src/webui/www/private/confirmruleclear.html index 6ea5ce63eea8..9817d3c1d25e 100644 --- a/src/webui/www/private/confirmruleclear.html +++ b/src/webui/www/private/confirmruleclear.html @@ -1,35 +1,39 @@ - + - + QBT_TR(Clear downloaded episodes)QBT_TR[CONTEXT=AutomatedRssDownloader] - + + + @@ -39,8 +43,8 @@

    QBT_TR(Are you sure you want to clear the list of downloaded episodes for the selected rule?)QBT_TR[CONTEXT=AutomatedRssDownloader]

    - - + +
    diff --git a/src/webui/www/private/confirmruledeletion.html b/src/webui/www/private/confirmruledeletion.html index 6418ff122b4c..cf9f7d874916 100644 --- a/src/webui/www/private/confirmruledeletion.html +++ b/src/webui/www/private/confirmruledeletion.html @@ -1,43 +1,48 @@ - + - + QBT_TR(Rule deletion confirmation)QBT_TR[CONTEXT=AutomatedRssDownloader] - + + + @@ -47,8 +52,8 @@

    QBT_TR(Are you sure you want to remove the selected download rules?)QBT_TR[CONTEXT=AutomatedRssDownloader]

    - - + +
    diff --git a/src/webui/www/private/confirmtrackerdeletion.html b/src/webui/www/private/confirmtrackerdeletion.html new file mode 100644 index 000000000000..4324f528f51f --- /dev/null +++ b/src/webui/www/private/confirmtrackerdeletion.html @@ -0,0 +1,57 @@ + + + + + + QBT_TR(Remove tracker)QBT_TR[CONTEXT=confirmDeletionDlg] + + + + + + + + + +
    +

    +
    + + +
    +
    + + + diff --git a/src/webui/www/private/css/Layout.css b/src/webui/www/private/css/Layout.css index 1e30090d1249..fb940cbf1408 100644 --- a/src/webui/www/private/css/Layout.css +++ b/src/webui/www/private/css/Layout.css @@ -18,15 +18,6 @@ Required by: /* Layout ---------------------------------------------------------------- */ -html, -body { - background: #fff; -} - -body { - margin: 0; /* Required */ -} - #desktop { cursor: default; /* Fix for issue in IE7. IE7 wants to use the I-bar text cursor */ height: 100%; @@ -36,12 +27,7 @@ body { position: relative; } -#desktopHeader { - background: #f2f2f2; -} - #desktopTitlebarWrapper { - background: #718ba6 url("../images/bg-header.gif") repeat-x; height: 45px; overflow: hidden; position: relative; @@ -55,7 +41,6 @@ body { } #desktopTitlebar h1.applicationTitle { - color: #fff; display: none; font-size: 20px; font-weight: bold; @@ -65,7 +50,6 @@ body { } #desktopTitlebar h2.tagline { - color: #d4dce4; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; @@ -75,12 +59,10 @@ body { } #desktopTitlebar h2.tagline .taglineEm { - color: #fff; font-weight: bold; } #topNav { - color: #d4dce4; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; padding: 13px 10px 0 0; @@ -91,7 +73,6 @@ body { } #topNav a { - color: #fff; font-weight: normal; } @@ -102,19 +83,15 @@ body { /* Navbar */ #desktopNavbar { - background: #f2f2f2; - /*background-color: #ccc;*/ - border-bottom: 1px solid #3f3f3f; - height: 20px; - margin: 0 0px; + background-color: var(--color-background-default); overflow: hidden; /* Remove this line if you want the menu to be backward compatible with Firefox 2 */ } #desktopNavbar ul { font-size: 12px; - list-style: none; margin: 0; padding: 0; + user-select: none; } #desktopNavbar > ul > li { @@ -126,14 +103,18 @@ body { } #desktopNavbar ul li a { - color: #333; + color: var(--color-text-default); font-weight: normal; - padding: 2px 10px 6px; + padding: 4px 10px; } #desktopNavbar ul li a:hover { - background-color: #fff; - color: #333; + background-color: var(--color-background-hover); + color: var(--color-text-white); +} + +#desktopNavbar a:hover img { + filter: var(--color-icon-hover); } #desktopNavbar ul li a.arrow-right, @@ -144,10 +125,9 @@ body { } #desktopNavbar li ul { - background: #fff url("../images/bg-dropdown.gif") repeat-y; - border: 1px solid #3f3f3f; + background-color: var(--color-background-default); + border: 1px solid var(--color-border-default); left: -999em; - margin-top: -6px; position: absolute; z-index: 8000; } @@ -165,7 +145,6 @@ body { } #desktopNavbar li ul li .check { - background: #555; font-size: 1px; height: 5px; left: 6px; @@ -177,21 +156,16 @@ body { } #desktopNavbar li ul li a { - color: #3f3f3f; + color: var(--color-text-default); font-weight: normal; - min-width: 120px; - padding: 1px 10px 1px 20px; + min-width: 155px; + padding: 4px 10px 4px 23px; position: relative; } #desktopNavbar li ul li a:hover { - background: #6c98d9; - border-radius: 2px; - color: #fff; -} - -#desktopNavbar li ul li a:hover .check { - background: #fff; + background-color: var(--color-background-hover); + color: var(--color-text-white); } /* lists nested under hovered list items */ @@ -210,24 +184,27 @@ body { } li.divider { - border-top: 1px solid #ebebeb; + border-top: 1px solid var(--color-border-default); margin-top: 2px; padding-top: 3px; } #pageWrapper { - border-bottom: 1px solid #909090; - border-top: 1px solid #909090; + border-bottom: 1px solid var(--color-border-default); + border-top: 1px solid var(--color-border-default); overflow: hidden; /* This can be set to hidden or auto */ position: relative; - /*height: 100%;*/ +} + +#propertiesPanel_header { + height: 28px; } /* Footer */ #desktopFooterWrapper { bottom: 0; - height: 30px; + height: 28px; left: 0; overflow: hidden; position: absolute; @@ -235,11 +212,10 @@ li.divider { } #desktopFooter { - background: #f2f2f2; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; - height: 24px; - padding: 6px 8px 0; + height: 28px; + padding: 2px; } /* Panel Layout @@ -256,8 +232,7 @@ li.divider { /* Panels */ .panel { - background: #f8f8f8; - border-bottom: 1px solid #b9b9b9; + border-bottom: 1px solid var(--color-border-default); overflow: auto; position: relative; } @@ -266,26 +241,17 @@ li.divider { border-bottom: 0; } -.panelAlt { - background: #f2f2f2; -} - .bottomPanel { border-bottom: 0; } .pad { + height: 100%; padding: 8px; } -#mainPanel { - background: #fff; -} - .panel-header { - background: #f1f1f1 url("../images/bg-panel-header.gif") repeat-x; - border-bottom: 1px solid #d3d3d3; - height: 30px; + border-bottom: 1px solid var(--color-border-default); overflow: hidden; position: relative; } @@ -294,17 +260,10 @@ li.divider { padding-top: 2px; } -.panel-headerContent.tabs { - background: url("../images/tabs.gif") repeat-x; - background-position: left -68px; -} - .panel-header h2 { - color: #333; display: inline-block; font-size: 12px; height: 22px; - margin: 0; overflow: hidden; padding: 3px 8px 0; } @@ -326,7 +285,6 @@ li.divider { /* Column and Panel Handles */ .horizontalHandle { - background: #eee url("../images/bg-handle-horizontal.gif") repeat-x; font-size: 1px; height: 4px; line-height: 1px; @@ -341,21 +299,21 @@ li.divider { background: url("../images/handle-icon-horizontal.gif") center center no-repeat; font-size: 1px; - height: 4px; + height: 6px; line-height: 1px; margin: 0 auto; overflow: hidden; } .columnHandle { - background: #c3c3c3 url("../images/handle-icon.gif") center center no-repeat; - border: 1px solid #909090; + background: url("../images/handle-icon.gif") center center no-repeat; + border: 1px solid var(--color-border-default); border-bottom: 0; border-top: 0; float: left; min-height: 10px; overflow: hidden; - width: 4px; + width: 8px; } /* Toolboxes */ @@ -363,7 +321,7 @@ li.divider { .toolbox { float: right; height: 24px; - margin-top: 3px; + margin-top: 1px; overflow: hidden; padding: 0 5px; text-align: right; diff --git a/src/webui/www/private/css/Tabs.css b/src/webui/www/private/css/Tabs.css index 34f80748f5b6..06a5cebb8f76 100644 --- a/src/webui/www/private/css/Tabs.css +++ b/src/webui/www/private/css/Tabs.css @@ -18,47 +18,48 @@ Required by: /* Toolbar Tabs */ .toolbarTabs { - background: url("../images/tabs.gif") repeat-x; - background-position: left -70px; overflow: visible; - padding: 0 5px 2px 2px; + user-select: none; } .tab-menu { font-size: 11px; - line-height: 16px; - list-style: none; - margin: 0; + list-style-type: none; padding: 0; } .tab-menu li { - background: url("../images/tabs.gif") repeat-x; - background-position: left -35px; cursor: pointer; float: left; - margin: 0 0 5px; } -.tab-menu li.selected { - background: url("../images/tabs.gif") repeat-x; - background-position: left 0; +.tab-menu .selected img, +.tab-menu li:hover img { + filter: var(--color-icon-hover); } .tab-menu li a { - background: url("../images/tabs.gif") repeat-x; - background-position: right -35px; - color: #181818; - display: block; - font-weight: normal; - margin-left: 8px; - padding: 6px 15px 5px 9px; + align-items: center; + background-color: var(--color-background-default); + border-radius: 3px 3px 0 0; + color: var(--color-text-default); + display: flex; + gap: 5px; + margin-left: 6px; + padding: 5px 7px 3px; text-align: center; } +.tab-menu li:first-child a { + margin-left: 4px; +} + +.tab-menu li:hover a { + background-color: var(--color-background-hover); + color: var(--color-text-white); +} + .tab-menu li.selected a { - background: url("../images/tabs.gif") repeat-x; - background-position: right 0; - color: #181818; - font-weight: bold; + background-color: var(--color-background-blue); + color: var(--color-text-white); } diff --git a/src/webui/www/private/css/Window.css b/src/webui/www/private/css/Window.css index d211dd980ccb..9aeaf365f69e 100644 --- a/src/webui/www/private/css/Window.css +++ b/src/webui/www/private/css/Window.css @@ -19,12 +19,15 @@ Required by: ---------------------------------------------------------------- */ .mocha { - background-color: #e5e5e5; + background-color: var(--color-background-default); display: none; overflow: hidden; } .mochaOverlay { + background-color: var(--color-background-default); + border-radius: 5px; + height: auto !important; /* also fixes out of block issue */ left: 0; position: absolute; /* This is also set in theme.js in order to make theme transitions smoother */ top: 0; @@ -42,28 +45,26 @@ Required by: */ .mochaTitlebar { - background: url("../images/spacer.gif?from=fafafa&to=e5e5e5"); + background-color: var(--color-background-default); + border-radius: 5px; overflow: hidden; width: 100%; } .mochaTitlebar h3 { - color: #888; + background-size: 16px !important; /* override mocha titlebar logo inline style */ font-size: 12px; font-weight: bold; line-height: 15px; - margin: 0; + overflow: hidden; padding: 5px 10px 4px 12px; -} - -.mocha.isFocused .mochaTitlebar h3 { - color: #181818; + text-overflow: ellipsis; + white-space: nowrap; } .mochaToolbarWrapper { - background: #f1f1f1; - border-top: 1px solid #d9d9d9; - height: 29px; + background-color: var(--color-background-popup); + height: auto !important; overflow: hidden; position: relative; width: 100%; /* For IE */ @@ -71,22 +72,24 @@ Required by: div.mochaToolbarWrapper.bottom { border: 0; - border-bottom: 1px solid #d9d9d9; + border-bottom: 1px solid var(--color-border-default); } .mochaToolbar { - border-top: 1px solid #fff; + border-top: 1px solid var(--color-border-default); + height: auto !important; + padding-top: 4px; width: 100%; /* For IE */ } .mochaContentBorder { - border-bottom: 1px solid #dadada; - border-top: 1px solid #dadada; + border-bottom: 1px solid var(--color-border-default); + border-top: 1px solid var(--color-border-default); } /* Has a fixed height and scrollbars if required. */ .mochaContentWrapper { - background: #fff; + background-color: var(--color-background-popup); font-size: 12px; overflow: auto; } @@ -96,7 +99,7 @@ div.mochaToolbarWrapper.bottom { } .mocha .handle { - background: #0f0; + background: #00ff00; font-size: 1px; /* For IE6 */ height: 3px; opacity: 0; @@ -108,20 +111,19 @@ div.mochaToolbarWrapper.bottom { /* Corner resize handles */ .mocha .corner { - background: #f00; + background: #ff0000; height: 10px; width: 10px; } /* Bottom right resize handle */ .mocha .cornerSE { - background: #fefefe; /* This is the color of the visible resize handle */ + background-color: var(--color-background-default); height: 20px; width: 20px; } .mochaCanvasHeader { - background: transparent; left: 0; overflow: hidden; position: absolute; @@ -131,7 +133,6 @@ div.mochaToolbarWrapper.bottom { } .mochaControls { - background: transparent; height: 14px; position: absolute; right: 8px; @@ -141,7 +142,6 @@ div.mochaToolbarWrapper.bottom { } .mochaCanvasControls { - background: transparent; position: absolute; right: 8px; top: 8px; @@ -159,8 +159,8 @@ div.mochaToolbarWrapper.bottom { .mochaMinimizeButton, .mochaMaximizeButton, .mochaCloseButton { - background-color: #fff; - color: #666; + background-color: var(--color-background-default); + color: var(--color-text-default); cursor: pointer; float: right; font-size: 1px; @@ -205,7 +205,7 @@ div.mochaToolbarWrapper.bottom { ---------------------------------------------------------------- */ #modalOverlay { - background: #000; + background: hsl(0deg 0% 0% / 30%); display: none; left: 0; opacity: 0; @@ -229,7 +229,7 @@ div.mochaToolbarWrapper.bottom { /* Underlay */ #windowUnderlay { - background: #fff; + background: #ffffff; left: 0; position: fixed; top: 0; @@ -276,18 +276,18 @@ div.mochaToolbarWrapper.bottom { /* Modals */ .modal2 { - border: 8px solid #fff; + border: 8px solid #ffffff; } .modal2 .mochaContentBorder { - border-width: 0px; + border-width: 0; } /* Window Themes */ .mocha.no-canvas { background: #e5e5e5; - border: 1px solid #555; + border: 1px solid #555555; } .mocha.no-canvas .mochaTitlebar { @@ -295,7 +295,7 @@ div.mochaToolbarWrapper.bottom { } .mocha.transparent .mochaTitlebar h3 { - color: #fff; + color: #ffffff; display: none; } @@ -312,7 +312,7 @@ div.mochaToolbarWrapper.bottom { } .mocha.notification .mochaContentBorder { - border-width: 0px; + border-width: 0; } .mocha.notification .mochaContentWrapper { @@ -345,12 +345,12 @@ div.mochaToolbarWrapper.bottom { } .jsonExample .mochaTitlebar h3 { - color: #ddd; + color: #dddddd; } /* This does not work in IE6. */ .isFocused.jsonExample .mochaTitlebar h3 { - color: #fff; + color: #ffffff; } #fxmorpherExample .mochaContentWrapper { @@ -358,7 +358,7 @@ div.mochaToolbarWrapper.bottom { } #clock { - background: #fff; + background: #ffffff; } /* Workaround to make invisible buttons clickable */ diff --git a/src/webui/www/private/css/dynamicTable.css b/src/webui/www/private/css/dynamicTable.css index f54c35692ccd..9ca43539490f 100644 --- a/src/webui/www/private/css/dynamicTable.css +++ b/src/webui/www/private/css/dynamicTable.css @@ -4,42 +4,84 @@ v 0.4 **************************************************************/ - -.dynamicTable tbody tr { - background-color: #fff; -} - -.dynamicTable tbody tr:nth-child(even), -.dynamicTable tbody tr.alt { - background-color: #eee; +.altRowColors tbody tr:nth-child(odd of :not(.invisible)) { + background-color: var(--color-background-default); } #transferList .dynamicTable td { - padding: 0 2px; + padding: 2px; } -.dynamicTable tbody tr.selected { - background-color: #354158; - color: #fff; +.dynamicTableDiv table.dynamicTable tbody tr.selected { + background-color: var(--color-background-blue); + color: var(--color-text-white); } -.dynamicTable tbody tr:hover { - background-color: #ee6600; - color: #fff; +.dynamicTableDiv table.dynamicTable tbody tr:hover { + background-color: var(--color-background-hover); + color: var(--color-text-white); } -#transferList tr:hover { - cursor: pointer; -} +#transferList .stateIcon { + background: left center / contain no-repeat; + margin-left: 3px; + padding-left: 1.65em; + + &.stateIconColumn { + height: 14px; + margin: auto; + padding-left: 0; + width: 14px; + } + + &.stateDownloading { + background-image: url("../images/downloading.svg"); + } + + &.stateUploading { + background-image: url("../images/upload.svg"); + } + + &.stateStalledUP { + background-image: url("../images/stalledUP.svg"); + } -#transferList img.stateIcon { - height: 1.3em; - margin-bottom: -1px; - vertical-align: middle; + &.stateStalledDL { + background-image: url("../images/stalledDL.svg"); + } + + &.stateStoppedDL { + background-image: url("../images/stopped.svg"); + } + + &.stateStoppedUP { + background-image: url("../images/checked-completed.svg"); + } + + &.stateQueued { + background-image: url("../images/queued.svg"); + } + + &.stateChecking { + background-image: url("../images/force-recheck.svg"); + } + + &.stateMoving { + background-image: url("../images/set-location.svg"); + } + + &.stateError { + background-image: url("../images/error.svg"); + } + + &.stateUnknown { + background-image: none; + } } -tr.dynamicTableHeader { - cursor: pointer; +#transferList #transferList_pad { + /* override for default mocha inline style */ + display: flex !important; } .dynamicTable { @@ -50,20 +92,22 @@ tr.dynamicTableHeader { } .dynamicTable th { - background-color: #eee; - border-right: 1px solid #ccc; - box-sizing: border-box; - padding: 4px; + border-right: 1px solid var(--color-border-default); + padding: 4px 2px; white-space: nowrap; } -.dynamicTable td { - padding: 0px 4px; - white-space: nowrap; +.dynamicTable tr:hover { + cursor: pointer; } -.dynamicTable thead tr { - background-color: #eee; +.dynamicTable tr:is(:hover, .selected) img:not(.flags) { + filter: var(--color-icon-hover); +} + +.dynamicTable td { + padding: 4px 2px; + white-space: nowrap; } .dynamicTable th, @@ -75,31 +119,68 @@ tr.dynamicTableHeader { .dynamicTable th.sorted { background-image: url("../images/go-up.svg"); - background-position: right; + background-position: right 3px center; background-repeat: no-repeat; - background-size: 15px; + background-size: 12px; } .dynamicTable th.sorted.reverse { background-image: url("../images/go-down.svg"); } -.dynamicTable td img.flags { - height: 1.25em; - vertical-align: middle; +.dynamicTable span.flags { + background: left center / contain no-repeat; + margin-left: 2px; + padding-left: 25px; +} + +div:has(> div.dynamicTableFixedHeaderDiv):not(.invisible) { + display: flex; + flex-direction: column; + height: 100%; } .dynamicTableFixedHeaderDiv { + flex-shrink: 0; overflow: hidden; } +#propertiesPanel .dynamicTableFixedHeaderDiv, +#torrentsTableFixedHeaderDiv { + border-bottom: 1px solid var(--color-border-default); +} + .dynamicTableDiv { + flex-grow: 1; overflow: auto; } .dynamicTableDiv thead th { - height: 0px !important; - line-height: 0px !important; - padding-bottom: 0px !important; - padding-top: 0px !important; + height: 0 !important; + line-height: 0 !important; + padding-bottom: 0 !important; + padding-top: 0 !important; +} + +/* Trackers table */ +#torrentTrackersTableDiv tr:not(.selected, :hover) { + & .trackerDisabled { + color: var(--color-tracker-disabled); + } + + & .trackerNotContacted { + color: var(--color-tracker-not-contacted); + } + + & .trackerWorking { + color: var(--color-tracker-working); + } + + & .trackerUpdating { + color: var(--color-tracker-updating); + } + + & .trackerNotWorking { + color: var(--color-tracker-not-working); + } } diff --git a/src/webui/www/private/css/lib/vanillaSelectBox.css b/src/webui/www/private/css/lib/vanillaSelectBox.css deleted file mode 100644 index b12a75766cb8..000000000000 --- a/src/webui/www/private/css/lib/vanillaSelectBox.css +++ /dev/null @@ -1,271 +0,0 @@ -.hidden-search { - display: none !important; -} - - -li[data-parent].closed{ - display:none !important; -} - -li[data-parent].open:not(.hidden-search){ - display:block !important; -} - -.vsb-menu{ - cursor:pointer; - z-index:1000; - display:block; - visibility: hidden; - position:absolute;/*Don't change*/ - border:1px solid #B2B2B2; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0,0,0,.15); - box-shadow: 0 6px 12px rgba(0,0,0,.175); - border-radius:4px; - font-size : 11px; -} - -.vsb-js-search-zone{ - position:absolute;/*Don't change*/ - z-index:1001; - width: 80%; - min-height:1.8em; - padding: 2px; - background-color: #fff; -} - -.vsb-js-search-zone input{ - border: 1px solid grey; - margin-left: 2px; - width: 96%; - border-radius: 4px; - height: 25px !important; -} - -.vsb-main{ - position: relative;/*Don't change*/ - display: inline-block; - vertical-align: middle; - text-align:left; -} - -.vsb-menu li:hover { - background: linear-gradient(#f5f5f5, #e8e8e8); -} - -.vsb-menu ul{ - user-select:none; - list-style:none; - white-space: nowrap; - margin:0px; - margin-top:4px; - padding-left:10px; - padding-right:10px; - padding-bottom:3px; - color: #333; - cursor:pointer; - overflow-y:auto; -} - -li.disabled{ - cursor:not-allowed; - opacity:0.3; - background-color: #999; -} - -li.overflow{ - cursor:not-allowed; - opacity:0.3; - background-color: #999; -} - -li.short{ - overflow:hidden; - text-overflow: ellipsis; -} - -.vsb-main button{ - min-width: 120px; - border-radius: 0; - width: 100%; - text-align: left; - z-index: 1; - color: #333; - background: white !important; - border: 1px solid #999 !important; - line-height:20px; - font-size:14px; - padding:6px 12px; -} - -.vsb-main button.disabled{ - cursor:not-allowed; - opacity:0.65; -} - -.vsb-main .title { - margin-right: 6px; - user-select:none; -} - -.vsb-main li:hover { - background: linear-gradient(#f5f5f5, #e8e8e8); -} - -.vsb-main ul{ - white-space: nowrap; -} - -.vsb-menu li { - font-size: 14px; - background-color: #fff; - min-height:1.4em; - padding: 0.2em 2em 0.2em 1em; -} - -.vsb-menu li.grouped-option b { - display: inline-block; - font-size: 15px; - margin-left:10px; - transform: translate(-18px); -} - -.vsb-menu li.grouped-option.open span { - display: inline-block; - font-size: inherit; - margin-top:-2px; - height: 8px; - width: 8px; - transform: translate(-38px) rotate(45deg); - border-bottom: 3px solid black; - border-right: 3px solid black; - border-radius:2px; -} - -.vsb-menu li.grouped-option.closed span { - display: inline-block; - font-size: inherit; - height: 8px; - width: 8px; - transform: translate(-38px) rotate(-45deg); - border-bottom: 3px solid black; - border-right: 3px solid black; - border-radius:2px; -} - -.vsb-menu li.grouped-option i { - display: inline-block; - font-size: inherit; - float:left; - font-weight:bold; - margin-left:22px; - margin-right:2px; - height: 11px; - width: 8px; - border : 1px solid; - border-radius : 3px; - padding: 1px 3px 2px 3px; - margin-top:0px; - color:black; -} - -.vsb-menu li.grouped-option.checked i::after { - content: ""; - display: inline-block; - font-size: inherit; - color: #333; - float:left; - margin-left:0px; - display: inline-block; - transform: rotate(45deg); - height: 8px; - width: 5px; - border-bottom: 3px solid black; - border-right: 3px solid black; -} - -.vsb-menu :not(.multi) li.active { - margin-left:7px; -} - -.vsb-menu :not(.multi) li.active::before { - content: ""; - display: inline-block; - font-size: inherit; - margin-left:-18px; - transform: rotate(45deg); - height: 10px; - width: 5px; - border-bottom: 3px solid black; - border-right: 3px solid black; - border-radius:2px; -} - -.vsb-menu .multi li { - font-size: 14px; - background-color: #fff; - min-height:1.4em; - padding: 0.2em 2em 0.2em 26px; -} - -.vsb-menu .multi li.grouped-option { - font-size: 15px; - padding-left: 5px; -} - - -.vsb-menu .multi li.grouped-option:hover { - font-weight: bold; - text-decoration: underline; - color:rgb(52, 31, 112); -} - -.vsb-menu .multi li:not(.grouped-option)::before{ - content: ""; - display: inline-block; - font-size: inherit; - float:left; - font-weight:bold; - margin-left:-22px; - margin-right:2px; - border : 1px solid; - border-radius : 3px; - padding : 7px; - margin-top:0px; - color:black; -} - -.vsb-menu .multi li:not(.grouped-option).active::after { - content: ""; - display: inline-block; - font-size: inherit; - color: #333; - float:left; - margin-left:-18px; - display: inline-block; - transform: rotate(45deg); - margin-top:1px; - height: 8px; - width: 5px; - border-bottom: 3px solid black; - border-right: 3px solid black; -} - -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} - - -li[data-parent]{ - padding-left: 50px !important; -} - diff --git a/src/webui/www/private/css/noscript.css b/src/webui/www/private/css/noscript.css index 090b572b866e..cb0063ac54e3 100644 --- a/src/webui/www/private/css/noscript.css +++ b/src/webui/www/private/css/noscript.css @@ -3,6 +3,6 @@ } #noscript { - color: #f00; + color: #ff0000; text-align: center; } diff --git a/src/webui/www/private/css/style.css b/src/webui/www/private/css/style.css index 7f7f201bddb6..f28e0a5cf18d 100644 --- a/src/webui/www/private/css/style.css +++ b/src/webui/www/private/css/style.css @@ -1,12 +1,147 @@ +/* Adaptive color palette */ + +/* Default rules */ +:root { + --color-accent-blue: hsl(210deg 65% 55%); + --color-text-blue: hsl(210deg 100% 55%); + --color-text-orange: hsl(26deg 100% 45%); + --color-text-red: hsl(0deg 100% 65%); + --color-text-green: hsl(110deg 94% 27%); + --color-text-white: hsl(0deg 0% 100%); + --color-text-disabled: hsl(0deg 0% 60%); + --color-text-default: hsl(0deg 0% 33%); + --color-background-primary: hsl(0deg 0% 100%); + --color-background-blue: hsl(210deg 65% 55%); + --color-background-popup: hsl(0deg 0% 100%); + --color-background-default: hsl(0deg 0% 94%); + --color-background-hover: hsl(26deg 80% 60%); + --color-border-blue: hsl(210deg 42% 48%); + --color-border-default: hsl(0deg 0% 85%); + --color-icon-hover: brightness(0) invert(100%) sepia(100%) saturate(0%) + hue-rotate(108deg) brightness(104%) contrast(104%); + + & #torrentTrackersTableDiv tr { + --color-tracker-disabled: hsl(240deg 4% 46%); + --color-tracker-not-contacted: hsl(32deg 95% 44%); + --color-tracker-working: hsl(142deg 76% 36%); + --color-tracker-updating: hsl(210deg 100% 55%); + --color-tracker-not-working: hsl(0deg 100% 65%); + } + + &:not(.dark) { + color-scheme: light; + } + + &.dark { + --color-accent-blue: hsl(210deg 42% 48%); + --color-text-blue: hsl(210deg 88.1% 73.5%); + --color-text-orange: hsl(26deg 65% 70%); + --color-text-default: hsl(0deg 0% 90%); + --color-background-primary: hsl(0deg 0% 7%); + --color-background-blue: hsl(210deg 42% 48%); + --color-background-popup: hsl(0deg 0% 20%); + --color-background-default: hsl(0deg 0% 25%); + --color-background-hover: hsl(26deg 50% 55%); + --color-border-default: hsl(0deg 0% 33%); + + & #torrentTrackersTableDiv tr { + --color-tracker-disabled: hsl(240deg 6% 83%); + --color-tracker-not-contacted: hsl(39deg 100% 72%); + --color-tracker-working: hsl(142deg 69% 58%); + --color-tracker-updating: hsl(210deg 88.1% 73.5%); + --color-tracker-not-working: hsl(0deg 100% 71%); + } + + color-scheme: dark; + + #rssButtonBar img, + #startSearchButton img, + #manageSearchPlugins img { + filter: brightness(0) saturate(100%) invert(100%) sepia(0%) + saturate(1%) hue-rotate(156deg) brightness(106%) contrast(101%); + } + } +} + /* Reset */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +* { + margin: 0; +} + +input, +button, +textarea, +select { + font: inherit; +} + a img, :link img, :visited img { border: none; } -/*table { border-collapse: collapse; border-spacing: 0; }*/ +ul, +ol { + list-style: none; +} + +/* Scrollbars */ + +@supports (scrollbar-width: auto) and (selector(::-webkit-scrollbar)) { + :root[slick-uniqueid], /* targets iframe mocha dialogs */ + .dynamicTableDiv, + .mochaContentWrapper, + .panel, + .scrollableMenu, + #rssDetailsView { + scrollbar-width: thin; + } +} + +/* Forms */ + +input[type="search"], +input[type="text"], +input[type="number"], +input[type="password"], +input[type="button"], +button, +select { + border: 1px solid var(--color-border-default); + border-radius: 3px; + color: var(--color-text-default); + padding: 3px; +} + +select { + padding: 4px; +} + +input[type="checkbox"], +input[type="radio"] { + accent-color: var(--color-accent-blue); + margin: 3px 3px 3px 4px; +} + +input[type="button"], +input[type="submit"], +button { + cursor: pointer; + padding-left: 10px; + padding-right: 10px; +} + +button:disabled { + cursor: initial; +} :focus { outline: none; @@ -15,14 +150,19 @@ a img, /* Structure */ body { - color: #555; + background-color: var(--color-background-primary); + color: var(--color-text-default); font-family: Arial, Helvetica, sans-serif; font-size: 12px; - line-height: 18px; - margin: 0; + line-height: 1.5; text-align: left; } +/* targets dialog windows loaded via iframes */ +body:not(:has(#desktop)) { + background-color: var(--color-background-popup); +} + .aside { width: 300px; } @@ -36,21 +176,19 @@ body { h2, h3, h4 { - color: #333; font-size: 12px; font-weight: bold; - margin: 0; padding: 0 0 5px; } h2 { - color: #555; + color: var(--color-text-default); font-size: 14px; font-weight: bold; } #mochaPage h3 { - border-bottom: 1px solid #bbb; + border-bottom: 1px solid var(--color-border-default); display: block; font-size: 12px; margin: 0 0 8px; @@ -59,7 +197,7 @@ h2 { #error_div, #rename_error { - color: #f00; + color: var(--color-text-red); float: left; font-size: 14px; font-weight: bold; @@ -70,7 +208,7 @@ h4 { } a { - color: #e60; + color: var(--color-text-orange); cursor: pointer; text-decoration: none; } @@ -80,17 +218,11 @@ a:hover { } p { - margin: 0; padding: 0 0 9px; } /* List Elements */ -ul { - list-style: outside; - margin: 0 0 9px 16px; -} - dt { font-weight: bold; } @@ -99,12 +231,20 @@ dd { padding: 0 0 9px; } +/* Forms */ + +fieldset { + border: 1px solid var(--color-border-default); + border-radius: 1px; + margin: 0 2px; +} + /* Code */ pre { - background-color: #f6f6f6; - border: 1px solid #d1d7dc; - color: #006600; + background-color: var(--color-background-default); + border: 1px solid var(--color-border-default); + color: var(--color-text-green); display: block; font-family: "Courier New", Courier, monospace; font-size: 11px; @@ -117,10 +257,11 @@ pre { /* Dividers */ hr { - background-color: #ddd; - border: 0px; - color: #ccc; + background-color: var(--color-background-default); + border: 0; + color: var(--color-text-default); height: 1px; + margin-bottom: 6px; } .vcenter { @@ -133,43 +274,29 @@ hr { } #trackersUrls { + display: block; height: 100%; + margin: 0 auto 10px; width: 90%; } -#Filters ul { - list-style-type: none; -} - -#Filters ul li { - margin-left: -16px; +#Filters { + overflow-x: hidden !important; /* override for default mocha inline style */ } #Filters ul img { height: 16px; - padding: 2px 4px; - vertical-align: middle; width: 16px; } -.selectedFilter { - background-color: #415a8d; - color: #ffffff; -} - -.selectedFilter a { - color: #ffffff; -} - #properties { - background-color: #e5e5e5; + background-color: var(--color-background-default); } a.propButton { border: 1px solid rgb(85 81 91); margin-left: 3px; margin-right: 3px; - /*border-radius: 3px;*/ padding: 2px; } @@ -181,57 +308,73 @@ a.propButton img { overflow: hidden auto; } +.propertiesTabContent { + height: 100%; + + > div { + height: 100%; + } +} + /* context menu specific */ .contextMenu { - background: #eee; - border: 1px solid #999; + background-color: var(--color-background-default); + border: 1px solid var(--color-border-default); display: none; - list-style-type: none; padding: 0; } .contextMenu .separator { - border-top: 1px solid #999; + border-top: 1px solid var(--color-border-default); +} + +.contextMenu .separatorBottom { + border-bottom: 1px solid var(--color-border-default); } .contextMenu li { - margin: 0; padding: 0; + user-select: none; +} + +.contextMenu li.disabled { + background-color: transparent; + cursor: default; + opacity: 0.5; +} + +.contextMenu li.disabled a { + pointer-events: none; } .contextMenu li a { - color: #000; - display: block; - font-family: tahoma, arial, sans-serif; - font-size: 12px; + align-items: center; + color: var(--color-text-default); + display: flex; + gap: 2px; padding: 5px 20px 5px 5px; text-decoration: none; white-space: nowrap; } .contextMenu li a:hover { - background-color: #ddd; + background-color: var(--color-background-hover); + color: var(--color-text-white); } -.contextMenu li a.disabled { - color: #ccc; - font-style: italic; -} - -.contextMenu li a.disabled:hover { - background-color: #eee; +.contextMenu li a:hover img:not(.highlightedCategoryIcon) { + filter: var(--color-icon-hover); } .contextMenu li ul { - background: #eee; - border: 1px solid #999; + background: var(--color-background-default); + border: 1px solid var(--color-border-default); left: -999em; - list-style-type: none; margin: -29px 0 0 100%; padding: 0; position: absolute; - width: 164px; + width: max-content; z-index: 8000; } @@ -239,32 +382,36 @@ a.propButton img { position: relative; } -.contextMenu li a.arrow-right, -.contextMenu li a:hover.arrow-right { +.contextMenu li:not(.disabled) .arrow-right { background-image: url("../images/arrow-right.gif"); background-position: right center; background-repeat: no-repeat; } -.contextMenu li:hover ul, -.contextMenu li.ieHover ul, -.contextMenu li li.ieHover ul, -.contextMenu li li li.ieHover ul, -.contextMenu li li:hover ul, -.contextMenu li li li:hover ul { +.contextMenu li:not(.disabled):hover > ul { /* lists nested under hovered list items */ left: auto; } .contextMenu li img { height: 16px; - margin-bottom: -4px; + margin-right: 0.5em; width: 16px; } .contextMenu li input[type="checkbox"] { - position: relative; - top: 3px; + margin: 0 0.5em 0 0; + width: 16px; +} + +#contextCategoryList img { + border: 1px solid transparent; + box-sizing: content-box; + padding: 1px; +} + +#contextCategoryList img.highlightedCategoryIcon { + background-color: hsl(213deg 94% 86%); } /* Sliders */ @@ -289,13 +436,12 @@ a.propButton img { .sliderarea { background: #f2f2f2 url("../images/slider-area.gif") repeat-x; border: 1px solid #a3a3a3; - border-bottom: 1px solid #ccc; - border-left: 1px solid #ccc; + border-bottom: 1px solid #cccccc; + border-left: 1px solid #cccccc; font-size: 1px; height: 7px; left: 0; line-height: 1px; - margin: 0; overflow: hidden; padding: 0; position: absolute; @@ -328,7 +474,7 @@ a.propButton img { /* Mocha Customization */ #mochaToolbar { - height: 29px; + height: auto !important; margin-top: 5px; overflow-y: hidden; position: relative; @@ -343,9 +489,7 @@ a.propButton img { } .MyMenuIcon { - margin-bottom: -3px; - margin-left: -18px; - padding-right: 5px; + margin: 0 6px -3px -18px; } #mainWindowTabs { @@ -354,31 +498,73 @@ a.propButton img { } #torrentsFilterToolbar { - float: right; - margin-right: 30px; + display: inline-block; + vertical-align: top; } #torrentsFilterInput { + background-color: var(--color-background-default); background-image: url("../images/edit-find.svg"); - background-position: left; + background-position: 2px; background-repeat: no-repeat; background-size: 1.5em; - padding-left: 2em; - width: 160px; + border: 1px solid var(--color-border-default); + border-radius: 3px; + min-width: 170px; + padding: 2px 2px 2px 25px; +} + +#torrentsFilterRegexBox { + display: none; +} + +#torrentsFilterRegexBox + label { + background-image: url("../images/regex.svg"); + background-position: center; + background-repeat: no-repeat; + background-size: 1.5em; + border: 1px solid var(--color-border-default); + border-radius: 4px; + cursor: pointer; + display: inline-block; + height: 26px; + margin-bottom: -9px; + width: 26px; +} + +#torrentsFilterRegexBox:checked + label { + background-color: var(--color-background-default); + background-image: url("../images/regex.svg"); + background-position: center; + background-repeat: no-repeat; + background-size: 1.5em; + border: 1px solid var(--color-accent-blue); + border-radius: 4px; + display: inline-block; + height: 26px; + margin-bottom: -9px; + width: 26px; +} + +#torrentsFilterSelect { + padding: 2px 4px; } #torrentFilesFilterToolbar { float: right; - margin-right: 30px; + margin-right: 5px; } #torrentFilesFilterInput { background-image: url("../images/edit-find.svg"); - background-position: left; + background-position: 1px; background-repeat: no-repeat; background-size: 1.5em; + margin-top: -1px; + padding-bottom: 1px; padding-left: 2em; - width: 160px; + padding-top: 1px; + width: 190px; } /* Tri-state checkbox */ @@ -388,7 +574,7 @@ label.tristate { display: block; float: left; height: 13px; - margin: 0.15em 8px 5px 0px; + margin: 0.15em 8px 5px 0; overflow: hidden; text-indent: -999em; width: 13px; @@ -403,9 +589,8 @@ label.partial { } fieldset.settings { - border: solid 1px black; - border-radius: 8px; - padding: 4px 4px 4px 10px; + border: 1px solid var(--color-border-default); + padding: 4px 4px 6px 6px; } fieldset.settings legend { @@ -428,46 +613,95 @@ div.formRow { } .filterTitle { - display: block; + cursor: pointer; + display: flex; font-weight: bold; + gap: 4px; overflow: hidden; - padding-left: 5px; - padding-top: 5px; + padding: 4px 0 4px 6px; text-overflow: ellipsis; text-transform: uppercase; + user-select: none; white-space: nowrap; } .filterTitle img { height: 16px; - margin-bottom: -3px; - padding: 0 5px; + padding: 2px; width: 16px; } +.collapsedCategory > ul { + display: none; +} + +.collapsedCategory .categoryToggle, .filterTitle img.rotate { - transform: rotate(270deg); + transform: rotate(-90deg); } ul.filterList { - margin: 0 0 0 16px; + margin: 0; padding-left: 0; } -ul.filterList a { - color: inherit; - display: block; +ul.filterList span.link:hover :is(img, button), +ul.filterList .selectedFilter > .link :is(img, button) { + filter: var(--color-icon-hover); +} + +ul.filterList span.link { + align-items: center; + cursor: pointer; + display: flex; + gap: 5px; + overflow: hidden; + padding: 4px 6px; + white-space: nowrap; +} + +ul.filterList span.link:hover { + background-color: var(--color-background-hover); + color: var(--color-text-white); +} + +span.link :last-child { + min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -ul.filterList li:hover { - background-color: #e60; +span.link :is(img, button) { + flex-shrink: 0; } -ul.filterList li:hover a { - color: white; +.selectedFilter > span.link { + background-color: var(--color-background-blue); + color: var(--color-text-white); +} + +.subcategories, +.subcategories ul { + margin: 0; + padding: 0; +} + +.subcategories .categoryToggle { + display: inline-block; + visibility: hidden; +} + +.categoryToggle { + background: url("../images/go-down.svg") center center / 10px no-repeat + transparent; + border: none; + display: none; + height: 16px; + margin-right: -2px; + padding: 2px; + transition: transform 0.3s; + width: 16px; } td.generalLabel { @@ -477,13 +711,9 @@ td.generalLabel { width: 1px; } -#torrentFilesTableDiv { - line-height: 20px; -} - -#torrentTrackersTableDiv, -#webseedsTable { - line-height: 25px; +#tristate_cb { + margin-bottom: 0; + margin-top: 0; } .filesTableCollapseIcon { @@ -504,10 +734,26 @@ td.generalLabel { user-select: none; } -#prop_general { +#propGeneral { padding: 2px; } +#propProgressWrapper { + align-items: center; + display: flex; + height: auto; + margin: 5px 2px; + + & > span:not(:first-child, :empty) { + margin-left: 6px; + min-width: 3.5em; + } + + & #progress { + flex: 1; + } +} + .piecesbarWrapper { position: relative; width: 100%; @@ -532,29 +778,28 @@ td.generalLabel { } .select-watched-folder-editable { - background-color: white; - border: solid grey 1px; - height: 20px; + border: 1px solid var(--color-border-default); + height: 22px; position: relative; width: 160px; } .select-watched-folder-editable select { border: none; - bottom: 0px; - left: 0px; - margin: 0; + bottom: 0; + left: 0; + padding: 0; position: absolute; - top: 0px; - width: 160px; + top: 0; + width: 158px; } .select-watched-folder-editable input { border: none; - left: 0px; - padding: 1px; + left: 0; + padding: 0; position: absolute; - top: 0px; + top: 0; width: 140px; } @@ -573,6 +818,7 @@ td.generalLabel { .combo_priority { font-size: 1em; + padding: 2px 6px; } td.statusBarSeparator { @@ -580,12 +826,27 @@ td.statusBarSeparator { background-position: center 1px; background-repeat: no-repeat; background-size: 2px 18px; - width: 22px; + width: 24px; } /* Statistics window */ -.statisticsValue { - text-align: right; +#statisticsContent { + & table { + background-color: var(--color-background-default); + border-radius: 6px; + margin-bottom: 6px; + padding: 6px 10px; + + & .statisticsValue { + text-align: right; + } + } + + & h3 { + color: var(--color-text-default); + margin-bottom: 1px; + padding: 2px; + } } /* Search tab */ @@ -602,15 +863,11 @@ td.statusBarSeparator { } #searchResultsTableContainer { - -moz-height: calc(100% - 140px); - -webkit-height: calc(100% - 140px); - height: calc(100% - 140px); + height: calc(100% - 177px); overflow: auto; } #searchResultsTableDiv { - -moz-height: calc(100% - 26px) !important; - -webkit-height: calc(100% - 26px) !important; height: calc(100% - 26px) !important; } @@ -623,27 +880,79 @@ td.statusBarSeparator { } .red { - color: red; + color: var(--color-text-red); } .green { - color: green; + color: var(--color-text-green); } -.searchPluginsTableRow { - cursor: pointer; +#torrentFilesTableDiv .dynamicTable tr.nonAlt:hover { + background-color: var(--color-background-hover); + color: var(--color-text-white); } -#torrentFilesTableDiv .dynamicTable tr.nonAlt { - background-color: #fff; +/* Modals */ +.modalDialog .mochaContent.pad { + display: flex !important; /* override for default mocha inline style */ + flex-direction: column; + height: 100%; } -#torrentFilesTableDiv .dynamicTable tr.nonAlt.selected { - background-color: #354158; - color: #fff; +.modalDialog .mochaContent.pad > :last-child { + align-self: flex-end; } -#torrentFilesTableDiv .dynamicTable tr.nonAlt:hover { - background-color: #ee6600; - color: #fff; +.modalDialog .mochaContent.pad > :first-child { + margin: auto 0; +} + +#rememberBtn { + background: url("../images/object-locked.svg") center center / 24px + no-repeat var(--color-background-popup); + height: 38px; + padding: 4px 6px; + width: 38px; +} + +#rememberBtn.disabled { + filter: grayscale(100%); +} + +#deleteFromDiskCB { + margin: 0 2px 0 0; + vertical-align: -1px; +} + +.dialogMessage { + overflow-wrap: anywhere; +} + +.genericConfirmGrid, +.confirmDeletionGrid { + align-items: center; + display: grid; + gap: 3px 4px; + grid-template-columns: max-content 1fr; + margin-bottom: 10px; +} + +.confirmGridItem, +.deletionGridItem { + padding: 3px; +} + +.deletionGridItem:first-child { + justify-self: center; +} + +.confirmWarning, +.confirmDialogWarning { + background: url("../images/dialog-warning.svg") center center no-repeat; + height: 38px; + width: 38px; +} + +.confirmWarning { + background-image: url("../images/help-about.svg"); } diff --git a/src/webui/www/private/css/vanillaSelectBox.css b/src/webui/www/private/css/vanillaSelectBox.css new file mode 100644 index 000000000000..63a38c776878 --- /dev/null +++ b/src/webui/www/private/css/vanillaSelectBox.css @@ -0,0 +1,229 @@ +.hidden-search { + display: none !important; +} + +li[data-parent].closed { + display: none !important; +} + +li[data-parent].open:not(.hidden-search) { + display: block !important; +} + +.vsb-menu { + background-clip: padding-box; + background-color: var(--color-background-default); + border: 1px solid var(--color-border-default); + cursor: pointer; + display: block; + font-size: 11px; + position: absolute; + visibility: hidden; + z-index: 1000; /*Don't change*/ +} + +.vsb-js-search-zone { + min-height: 1.8em; + padding: 2px; + position: absolute; + width: 80%; + z-index: 1001; /*Don't change*/ +} + +.vsb-js-search-zone input { + border-radius: 4px; + height: 25px !important; + margin-left: 2px; + width: 96%; +} + +.vsb-main { + display: inline-block; + position: relative; + text-align: left; + vertical-align: top; /*Don't change*/ +} + +.vsb-menu ul { + cursor: pointer; + list-style: none; + margin: 0; + overflow-y: auto; + padding: 0; + user-select: none; + white-space: nowrap; +} + +li.disabled { + background-color: #999999; + cursor: not-allowed; + opacity: 0.3; +} + +li.overflow { + background-color: #999999; + cursor: not-allowed; + opacity: 0.3; +} + +li.short { + overflow: hidden; + text-overflow: ellipsis; +} + +.vsb-main button { + border: 1px solid var(--color-border-default); + border-radius: 4px; + min-width: 120px; + padding: 6px 12px; + text-align: left; + width: 100%; + z-index: 1; +} + +.vsb-main button.disabled { + cursor: not-allowed; + opacity: 0.65; +} + +.vsb-main .title { + margin-right: 6px; + user-select: none; +} + +.vsb-main ul { + white-space: nowrap; +} + +.vsb-menu li { + font-size: 12px; + padding: 4px 26px; +} + +.vsb-menu li:hover { + background-color: var(--color-background-hover); + color: var(--color-text-white); +} + +.vsb-menu li.grouped-option b { + display: inline-block; + margin-left: 10px; + transform: translate(-18px); +} + +.vsb-menu li.grouped-option.open span { + border-radius: 2px; + display: inline-block; + font-size: inherit; + height: 8px; + margin-top: -2px; + transform: translate(-38px) rotate(45deg); + width: 8px; +} + +.vsb-menu li.grouped-option.closed span { + border-radius: 2px; + display: inline-block; + font-size: inherit; + height: 8px; + transform: translate(-38px) rotate(-45deg); + width: 8px; +} + +.vsb-menu li.grouped-option i { + border: 1px solid; + border-radius: 3px; + display: inline-block; + float: left; + font-size: inherit; + font-weight: bold; + height: 11px; + margin-left: 22px; + margin-right: 2px; + margin-top: 0; + padding: 1px 3px 2px; + width: 8px; +} + +.vsb-menu li.grouped-option.checked i::after { + content: ""; + display: inline-block; + float: left; + font-size: inherit; + height: 8px; + margin-left: 0; + transform: rotate(45deg); + width: 5px; +} + +.vsb-menu :not(.multi) li.active { + margin-left: 7px; +} + +.vsb-menu :not(.multi) li.active::before { + border-bottom: 3px solid var(--color-border-blue); + border-radius: 2px; + border-right: 3px solid var(--color-border-blue); + content: ""; + display: inline-block; + font-size: inherit; + height: 10px; + margin-left: -18px; + transform: rotate(45deg); + width: 5px; +} + +.vsb-menu .multi li.grouped-option { + padding-left: 5px; +} + +.vsb-menu .multi li.grouped-option:hover { + color: rgb(52 31 112); + font-weight: bold; + text-decoration: underline; +} + +.vsb-menu .multi li:not(.grouped-option)::before { + background: var(--color-background-popup); + border: 1px solid; + border-radius: 3px; + content: ""; + display: inline-block; + float: left; + font-size: inherit; + font-weight: bold; + margin-left: -22px; + margin-right: 2px; + margin-top: 0; + padding: 7px; +} + +.vsb-menu .multi li:not(.grouped-option).active::after { + border-bottom: 3px solid var(--color-border-blue); + border-right: 3px solid var(--color-border-blue); + content: ""; + display: inline-block; + float: left; + font-size: inherit; + height: 8px; + margin-left: -18px; + margin-top: 1px; + transform: rotate(45deg); + width: 5px; +} + +.caret { + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px dashed; + border-top: 4px solid; + display: inline-block; + height: 0; + margin-left: 2px; + vertical-align: middle; + width: 0; +} + +li[data-parent] { + padding-left: 50px !important; +} diff --git a/src/webui/www/private/download.html b/src/webui/www/private/download.html index 913a10001867..ecd1bb6bbb28 100644 --- a/src/webui/www/private/download.html +++ b/src/webui/www/private/download.html @@ -1,158 +1,156 @@ - + - + QBT_TR(Add Torrent Links)QBT_TR[CONTEXT=downloadFromURL] - - + + + + +
    -
    -

    QBT_TR(Download Torrents from their URLs or Magnet links)QBT_TR[CONTEXT=HttpServer]

    +
    +

    -

    QBT_TR(Only one link per line)QBT_TR[CONTEXT=HttpServer]

    +

    QBT_TR(One link per line (HTTP links, Magnet links and info-hashes are supported))QBT_TR[CONTEXT=AddNewTorrentDialog]

    + QBT_TR(Torrent options)QBT_TR[CONTEXT=AddNewTorrentDialog] - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    - - - -
    - - - -
    - - - -
    - - - -
    - - -
    -
    + + + - - -
    - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - - -
    - - - - -
    + + + +
    + + + +
    + + +
    + + +
    +
    + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + +
    + + + + +
    @@ -160,37 +158,37 @@

    QBT_TR(Download Torrents from their URLs or Magnet links)QBT

    - -
    diff --git a/src/webui/www/private/downloadlimit.html b/src/webui/www/private/downloadlimit.html index fa49266dded9..d703cf79ebf0 100644 --- a/src/webui/www/private/downloadlimit.html +++ b/src/webui/www/private/downloadlimit.html @@ -1,87 +1,90 @@ - + - + QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget] - + + + -
    +
    -
    QBT_TR(Download limit:)QBT_TR[CONTEXT=PropertiesWidget] QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]
    +
    + + + QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog] +
    - - +
    - diff --git a/src/webui/www/private/editfeedurl.html b/src/webui/www/private/editfeedurl.html new file mode 100644 index 000000000000..83618a0b53cb --- /dev/null +++ b/src/webui/www/private/editfeedurl.html @@ -0,0 +1,89 @@ + + + + + + QBT_TR(Please type a RSS feed URL)QBT_TR[CONTEXT=RSSWidget] + + + + + + + + + + +
    + + +
    + +
    +
    + + + diff --git a/src/webui/www/private/edittracker.html b/src/webui/www/private/edittracker.html index 17d2a92d2322..2b4ff2553ef8 100644 --- a/src/webui/www/private/edittracker.html +++ b/src/webui/www/private/edittracker.html @@ -1,56 +1,57 @@ - + - + QBT_TR(Tracker editing)QBT_TR[CONTEXT=TrackerListWidget] - + + + @@ -58,13 +59,13 @@
    -
    -

    QBT_TR(Tracker URL:)QBT_TR[CONTEXT=TrackerListWidget]

    +
    +
    - +
    -
    - +
    +
    diff --git a/src/webui/www/private/editwebseed.html b/src/webui/www/private/editwebseed.html new file mode 100644 index 000000000000..ef6b70998abf --- /dev/null +++ b/src/webui/www/private/editwebseed.html @@ -0,0 +1,68 @@ + + + + + + QBT_TR(Edit web seed)QBT_TR[CONTEXT=HttpServer] + + + + + + + + + +
    +
    + +
    + +
    +
    + +
    + + + diff --git a/src/webui/www/private/images/bg-dropdown.gif b/src/webui/www/private/images/bg-dropdown.gif deleted file mode 100644 index b598f9dd0bd0..000000000000 Binary files a/src/webui/www/private/images/bg-dropdown.gif and /dev/null differ diff --git a/src/webui/www/private/images/bg-handle-horizontal.gif b/src/webui/www/private/images/bg-handle-horizontal.gif deleted file mode 100644 index 27fd405babc5..000000000000 Binary files a/src/webui/www/private/images/bg-handle-horizontal.gif and /dev/null differ diff --git a/src/webui/www/private/images/bg-header.gif b/src/webui/www/private/images/bg-header.gif deleted file mode 100644 index 6f44fb91f85f..000000000000 Binary files a/src/webui/www/private/images/bg-header.gif and /dev/null differ diff --git a/src/webui/www/private/images/bg-panel-header.gif b/src/webui/www/private/images/bg-panel-header.gif deleted file mode 100644 index ea746f0d2946..000000000000 Binary files a/src/webui/www/private/images/bg-panel-header.gif and /dev/null differ diff --git a/src/webui/www/private/images/browser-cookies.svg b/src/webui/www/private/images/browser-cookies.svg new file mode 100644 index 000000000000..0873b0db0beb --- /dev/null +++ b/src/webui/www/private/images/browser-cookies.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/flags/ad.svg b/src/webui/www/private/images/flags/ad.svg index 3793d99aa3ac..067ab772f61a 100644 --- a/src/webui/www/private/images/flags/ad.svg +++ b/src/webui/www/private/images/flags/ad.svg @@ -2,16 +2,16 @@ - + - + - + @@ -96,11 +96,11 @@ - + - + @@ -110,17 +110,17 @@ - - - + + + - + - - - + + + @@ -128,21 +128,21 @@ - + - + - + - + - + diff --git a/src/webui/www/private/images/flags/ae.svg b/src/webui/www/private/images/flags/ae.svg index b7acdbdb3671..651ac8523d3d 100644 --- a/src/webui/www/private/images/flags/ae.svg +++ b/src/webui/www/private/images/flags/ae.svg @@ -1,6 +1,6 @@ - + diff --git a/src/webui/www/private/images/flags/af.svg b/src/webui/www/private/images/flags/af.svg index 417dd04769e5..521ac4cfd880 100644 --- a/src/webui/www/private/images/flags/af.svg +++ b/src/webui/www/private/images/flags/af.svg @@ -1,29 +1,29 @@ - + - + - + - - + + - - + + - + - + - - - - + + + + @@ -59,23 +59,23 @@ - + - + - - - - - - - - - + + + + + + + + + - - + + diff --git a/src/webui/www/private/images/flags/ag.svg b/src/webui/www/private/images/flags/ag.svg index 250b50126913..243c3d8f9e78 100644 --- a/src/webui/www/private/images/flags/ag.svg +++ b/src/webui/www/private/images/flags/ag.svg @@ -4,11 +4,11 @@ - - - - - - + + + + + + diff --git a/src/webui/www/private/images/flags/ai.svg b/src/webui/www/private/images/flags/ai.svg index 81a857d5bce2..628ad9be9389 100644 --- a/src/webui/www/private/images/flags/ai.svg +++ b/src/webui/www/private/images/flags/ai.svg @@ -1,17 +1,17 @@ - + - + - + - - + + @@ -25,5 +25,5 @@ - + diff --git a/src/webui/www/private/images/flags/al.svg b/src/webui/www/private/images/flags/al.svg index b69ae195dc9b..1135b4b80a74 100644 --- a/src/webui/www/private/images/flags/al.svg +++ b/src/webui/www/private/images/flags/al.svg @@ -1,5 +1,5 @@ - + diff --git a/src/webui/www/private/images/flags/ao.svg b/src/webui/www/private/images/flags/ao.svg index 4dc39f6aaf22..b1863bd0f687 100644 --- a/src/webui/www/private/images/flags/ao.svg +++ b/src/webui/www/private/images/flags/ao.svg @@ -1,12 +1,12 @@ - + - - - - + + + + diff --git a/src/webui/www/private/images/flags/ar.svg b/src/webui/www/private/images/flags/ar.svg index 364fca8ff4b4..d20cbbdcdcc6 100644 --- a/src/webui/www/private/images/flags/ar.svg +++ b/src/webui/www/private/images/flags/ar.svg @@ -1,7 +1,7 @@ - + @@ -20,13 +20,13 @@ - - - - + + + + - + - + diff --git a/src/webui/www/private/images/flags/arab.svg b/src/webui/www/private/images/flags/arab.svg index c45e3d207d43..96d27157e9f7 100644 --- a/src/webui/www/private/images/flags/arab.svg +++ b/src/webui/www/private/images/flags/arab.svg @@ -14,7 +14,7 @@ - + @@ -60,7 +60,7 @@ - + diff --git a/src/webui/www/private/images/flags/as.svg b/src/webui/www/private/images/flags/as.svg index b974013aceaf..3543556725d8 100644 --- a/src/webui/www/private/images/flags/as.svg +++ b/src/webui/www/private/images/flags/as.svg @@ -6,67 +6,67 @@ - + - - + + - - + + - - - - + + + + - - - + + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + - - - - + + + + - + - - + + - - - - - - - + + + + + + + - + diff --git a/src/webui/www/private/images/flags/at.svg b/src/webui/www/private/images/flags/at.svg index c28250887f96..9d2775c08328 100644 --- a/src/webui/www/private/images/flags/at.svg +++ b/src/webui/www/private/images/flags/at.svg @@ -1,6 +1,4 @@ - - - - + + diff --git a/src/webui/www/private/images/flags/au.svg b/src/webui/www/private/images/flags/au.svg index 407fef43dcae..96e80768bb70 100644 --- a/src/webui/www/private/images/flags/au.svg +++ b/src/webui/www/private/images/flags/au.svg @@ -2,7 +2,7 @@ - + - + diff --git a/src/webui/www/private/images/flags/aw.svg b/src/webui/www/private/images/flags/aw.svg index 32cabd5457be..413b7c45b60d 100644 --- a/src/webui/www/private/images/flags/aw.svg +++ b/src/webui/www/private/images/flags/aw.svg @@ -5,182 +5,182 @@ - - + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webui/www/private/images/flags/az.svg b/src/webui/www/private/images/flags/az.svg index 8e56ef53c2ec..35575221104f 100644 --- a/src/webui/www/private/images/flags/az.svg +++ b/src/webui/www/private/images/flags/az.svg @@ -4,5 +4,5 @@ - + diff --git a/src/webui/www/private/images/flags/ba.svg b/src/webui/www/private/images/flags/ba.svg index fcd18914a8b2..93bd9cf93784 100644 --- a/src/webui/www/private/images/flags/ba.svg +++ b/src/webui/www/private/images/flags/ba.svg @@ -4,9 +4,9 @@ - - - - + + + + diff --git a/src/webui/www/private/images/flags/bb.svg b/src/webui/www/private/images/flags/bb.svg index 263bdec05744..cecd5cc33439 100644 --- a/src/webui/www/private/images/flags/bb.svg +++ b/src/webui/www/private/images/flags/bb.svg @@ -1,6 +1,6 @@ - + diff --git a/src/webui/www/private/images/flags/be.svg b/src/webui/www/private/images/flags/be.svg index 327f28fa2eb1..ac706a0b5a14 100644 --- a/src/webui/www/private/images/flags/be.svg +++ b/src/webui/www/private/images/flags/be.svg @@ -1,6 +1,6 @@ - + diff --git a/src/webui/www/private/images/flags/bg.svg b/src/webui/www/private/images/flags/bg.svg index b100dd0dc68d..af2d0d07c31e 100644 --- a/src/webui/www/private/images/flags/bg.svg +++ b/src/webui/www/private/images/flags/bg.svg @@ -1,7 +1,5 @@ - - - - - + + + diff --git a/src/webui/www/private/images/flags/bi.svg b/src/webui/www/private/images/flags/bi.svg index 1050838bc861..a4434a955fbc 100644 --- a/src/webui/www/private/images/flags/bi.svg +++ b/src/webui/www/private/images/flags/bi.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/bl.svg b/src/webui/www/private/images/flags/bl.svg index 819afc111d5f..f84cbbaeb194 100644 --- a/src/webui/www/private/images/flags/bl.svg +++ b/src/webui/www/private/images/flags/bl.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/bm.svg b/src/webui/www/private/images/flags/bm.svg index a4dbc728f1e9..bab3e0abe025 100644 --- a/src/webui/www/private/images/flags/bm.svg +++ b/src/webui/www/private/images/flags/bm.svg @@ -8,18 +8,18 @@ - + - + - + @@ -57,38 +57,38 @@ - + - + - + - + - + - + - + - - + + - - + + - + diff --git a/src/webui/www/private/images/flags/bn.svg b/src/webui/www/private/images/flags/bn.svg index f906abfebbdb..4b416ebb73f9 100644 --- a/src/webui/www/private/images/flags/bn.svg +++ b/src/webui/www/private/images/flags/bn.svg @@ -1,36 +1,36 @@ - - - + + + - + - - - - + + + + - - - - + + + + - + - + - - - - - - + + + + + + diff --git a/src/webui/www/private/images/flags/bo.svg b/src/webui/www/private/images/flags/bo.svg index 17a0a0c12876..46dc76735eaa 100644 --- a/src/webui/www/private/images/flags/bo.svg +++ b/src/webui/www/private/images/flags/bo.svg @@ -73,10 +73,10 @@ - + - + @@ -101,19 +101,19 @@ - + - - - - + + + + - + @@ -139,16 +139,16 @@ - - - - + + + + - + - + @@ -157,21 +157,21 @@ - + - + - + - + @@ -183,24 +183,24 @@ - + - + - + - + - + - + - + @@ -299,28 +299,28 @@ - - - - - - - - + + + + + + + + - - + + - - - - + + + + @@ -330,157 +330,155 @@ - + - + - - - + - + - + - + - - + + - - - - + + + + - - + + - - - - - + + + + + - - - + + + - - - - - - - + + + + + + + - + - - - + + + - - - - + + + + - - + + - - - + + + - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - - - + + + + + + + + - - - + + + - - + + - - - + + + - - - - - - + + + + + + - - + + @@ -491,18 +489,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -510,41 +508,41 @@ - - + + - + - + - + - - - - + + + + - - - - - - + + + + + + - + @@ -558,7 +556,7 @@ - + @@ -566,33 +564,33 @@ - - - + + + - + - - - - + + + + - + - - - - - + + + + + - - + + @@ -600,19 +598,19 @@ - + - - + + - + @@ -620,54 +618,54 @@ - + - - + + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - - - + + + - + - + diff --git a/src/webui/www/private/images/flags/br.svg b/src/webui/www/private/images/flags/br.svg index 354a7013f3c7..22c908e7e34c 100644 --- a/src/webui/www/private/images/flags/br.svg +++ b/src/webui/www/private/images/flags/br.svg @@ -1,45 +1,45 @@ - - + + - - + + - - + + - - + + - - + + - + - + - - + + - - + + - + - + diff --git a/src/webui/www/private/images/flags/bs.svg b/src/webui/www/private/images/flags/bs.svg index 513be43ac43d..5cc918e5ad40 100644 --- a/src/webui/www/private/images/flags/bs.svg +++ b/src/webui/www/private/images/flags/bs.svg @@ -8,6 +8,6 @@ - + diff --git a/src/webui/www/private/images/flags/bt.svg b/src/webui/www/private/images/flags/bt.svg index cea6006c1993..798c79b381dd 100644 --- a/src/webui/www/private/images/flags/bt.svg +++ b/src/webui/www/private/images/flags/bt.svg @@ -3,25 +3,25 @@ - - - - - - - - - + + + + + + + + + - - - - + + + + - + @@ -60,7 +60,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/src/webui/www/private/images/flags/bw.svg b/src/webui/www/private/images/flags/bw.svg index a1c8db0af1d1..3435608d6c0d 100644 --- a/src/webui/www/private/images/flags/bw.svg +++ b/src/webui/www/private/images/flags/bw.svg @@ -2,6 +2,6 @@ - + diff --git a/src/webui/www/private/images/flags/by.svg b/src/webui/www/private/images/flags/by.svg index 8d25ee3c1fc9..7e90ff255c35 100644 --- a/src/webui/www/private/images/flags/by.svg +++ b/src/webui/www/private/images/flags/by.svg @@ -1,20 +1,18 @@ - + - + - - - - - - - - - - - + + + + + + + + + diff --git a/src/webui/www/private/images/flags/bz.svg b/src/webui/www/private/images/flags/bz.svg index 08d3579de385..25386a51a455 100644 --- a/src/webui/www/private/images/flags/bz.svg +++ b/src/webui/www/private/images/flags/bz.svg @@ -17,16 +17,16 @@ - - + + - - + + - + - + @@ -40,7 +40,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -60,9 +60,9 @@ - + - + @@ -70,21 +70,21 @@ - + - + - + - + @@ -92,7 +92,7 @@ - + @@ -104,42 +104,42 @@ - + - + - + - + - + - + - + - + - + diff --git a/src/webui/www/private/images/flags/ca.svg b/src/webui/www/private/images/flags/ca.svg index f1b2c968aad5..89da5b7b556e 100644 --- a/src/webui/www/private/images/flags/ca.svg +++ b/src/webui/www/private/images/flags/ca.svg @@ -1,4 +1,4 @@ - + diff --git a/src/webui/www/private/images/flags/cc.svg b/src/webui/www/private/images/flags/cc.svg index 93025bd2dc5b..ddfd1803820b 100644 --- a/src/webui/www/private/images/flags/cc.svg +++ b/src/webui/www/private/images/flags/cc.svg @@ -8,8 +8,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/cd.svg b/src/webui/www/private/images/flags/cd.svg index e106ddd5328f..b9cf52894137 100644 --- a/src/webui/www/private/images/flags/cd.svg +++ b/src/webui/www/private/images/flags/cd.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/cg.svg b/src/webui/www/private/images/flags/cg.svg index 9128715f6197..f5a0e42d4595 100644 --- a/src/webui/www/private/images/flags/cg.svg +++ b/src/webui/www/private/images/flags/cg.svg @@ -6,7 +6,7 @@ - - + + diff --git a/src/webui/www/private/images/flags/cl.svg b/src/webui/www/private/images/flags/cl.svg index 01766fefd7b6..5b3c72fa7c26 100644 --- a/src/webui/www/private/images/flags/cl.svg +++ b/src/webui/www/private/images/flags/cl.svg @@ -7,7 +7,7 @@ - + diff --git a/src/webui/www/private/images/flags/cm.svg b/src/webui/www/private/images/flags/cm.svg index 389b66277bd8..70adc8b6818f 100644 --- a/src/webui/www/private/images/flags/cm.svg +++ b/src/webui/www/private/images/flags/cm.svg @@ -2,7 +2,7 @@ - + diff --git a/src/webui/www/private/images/flags/cp.svg b/src/webui/www/private/images/flags/cp.svg index b3efb074296f..b8aa9cfd693d 100644 --- a/src/webui/www/private/images/flags/cp.svg +++ b/src/webui/www/private/images/flags/cp.svg @@ -1,7 +1,7 @@ - - + + diff --git a/src/webui/www/private/images/flags/cu.svg b/src/webui/www/private/images/flags/cu.svg index 6464f8ebaa3c..053c9ee3a029 100644 --- a/src/webui/www/private/images/flags/cu.svg +++ b/src/webui/www/private/images/flags/cu.svg @@ -4,10 +4,10 @@ - + - - + + diff --git a/src/webui/www/private/images/flags/cv.svg b/src/webui/www/private/images/flags/cv.svg index 5c251da2a947..aec8994902cc 100644 --- a/src/webui/www/private/images/flags/cv.svg +++ b/src/webui/www/private/images/flags/cv.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/cx.svg b/src/webui/www/private/images/flags/cx.svg index 6803b3b66131..374ff2dab511 100644 --- a/src/webui/www/private/images/flags/cx.svg +++ b/src/webui/www/private/images/flags/cx.svg @@ -2,11 +2,11 @@ - + - + - + diff --git a/src/webui/www/private/images/flags/cy.svg b/src/webui/www/private/images/flags/cy.svg index 2f69bf79f8a7..7e3d883da817 100644 --- a/src/webui/www/private/images/flags/cy.svg +++ b/src/webui/www/private/images/flags/cy.svg @@ -1,6 +1,6 @@ - + - + diff --git a/src/webui/www/private/images/flags/de.svg b/src/webui/www/private/images/flags/de.svg index b08334b62e2f..71aa2d2c30f5 100644 --- a/src/webui/www/private/images/flags/de.svg +++ b/src/webui/www/private/images/flags/de.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/dg.svg b/src/webui/www/private/images/flags/dg.svg index b9f99a99d164..f163caf94750 100644 --- a/src/webui/www/private/images/flags/dg.svg +++ b/src/webui/www/private/images/flags/dg.svg @@ -30,7 +30,7 @@ - + @@ -104,8 +104,8 @@ - - + + @@ -120,7 +120,7 @@ - + diff --git a/src/webui/www/private/images/flags/dj.svg b/src/webui/www/private/images/flags/dj.svg index ebf2fc66f1c5..9b00a8205662 100644 --- a/src/webui/www/private/images/flags/dj.svg +++ b/src/webui/www/private/images/flags/dj.svg @@ -4,10 +4,10 @@ - + - + diff --git a/src/webui/www/private/images/flags/dm.svg b/src/webui/www/private/images/flags/dm.svg index 60457b79618f..f692094ddb14 100644 --- a/src/webui/www/private/images/flags/dm.svg +++ b/src/webui/www/private/images/flags/dm.svg @@ -4,66 +4,66 @@ - + - - + + - + - - + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - + - + - - + + - + - + - + diff --git a/src/webui/www/private/images/flags/do.svg b/src/webui/www/private/images/flags/do.svg index d837690055bf..b1be393ed1eb 100644 --- a/src/webui/www/private/images/flags/do.svg +++ b/src/webui/www/private/images/flags/do.svg @@ -2,64 +2,64 @@ - + - - - + + + - - - + + + - - - - - - - - - - + + + + + + + + + + - - + + - + - - - - - - + + + + + + - - - + + + - - - - + + + + - - - - - + + + + + - + @@ -67,20 +67,20 @@ - - - - - + + + + + - + - + @@ -101,7 +101,7 @@ - + @@ -110,12 +110,12 @@ - + - + - - + + diff --git a/src/webui/www/private/images/flags/eac.svg b/src/webui/www/private/images/flags/eac.svg index 25a09a132bbc..aaf8133f35a0 100644 --- a/src/webui/www/private/images/flags/eac.svg +++ b/src/webui/www/private/images/flags/eac.svg @@ -4,45 +4,45 @@ - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + - - - - - + + + + + - - + + diff --git a/src/webui/www/private/images/flags/ec.svg b/src/webui/www/private/images/flags/ec.svg index 65b78858a684..397bfd982251 100644 --- a/src/webui/www/private/images/flags/ec.svg +++ b/src/webui/www/private/images/flags/ec.svg @@ -5,15 +5,15 @@ - - - + + + - - - - - + + + + + @@ -40,9 +40,9 @@ - - - + + + @@ -50,15 +50,15 @@ - - - + + + - - - - + + + + @@ -73,10 +73,10 @@ - - - - + + + + @@ -86,53 +86,53 @@ - - - - + + + + - - - - + + + + - + - + - - - + + + - - + + - + - + - + - + - - + + - + diff --git a/src/webui/www/private/images/flags/ee.svg b/src/webui/www/private/images/flags/ee.svg index 36ea288ca8a7..8b98c2c429bc 100644 --- a/src/webui/www/private/images/flags/ee.svg +++ b/src/webui/www/private/images/flags/ee.svg @@ -1,7 +1,5 @@ - - - - - + + + diff --git a/src/webui/www/private/images/flags/eg.svg b/src/webui/www/private/images/flags/eg.svg index 58c943c231ef..00d1fa59eedc 100644 --- a/src/webui/www/private/images/flags/eg.svg +++ b/src/webui/www/private/images/flags/eg.svg @@ -1,37 +1,37 @@ - + - - - + + + - + - - - - + + + + - - + + - + - + diff --git a/src/webui/www/private/images/flags/eh.svg b/src/webui/www/private/images/flags/eh.svg index 2c9525bd025f..6aec72883c46 100644 --- a/src/webui/www/private/images/flags/eh.svg +++ b/src/webui/www/private/images/flags/eh.svg @@ -4,8 +4,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/er.svg b/src/webui/www/private/images/flags/er.svg index 2705295f2784..3f4f3f292143 100644 --- a/src/webui/www/private/images/flags/er.svg +++ b/src/webui/www/private/images/flags/er.svg @@ -1,8 +1,8 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/es-ga.svg b/src/webui/www/private/images/flags/es-ga.svg index a91ffed06732..31657813ea87 100644 --- a/src/webui/www/private/images/flags/es-ga.svg +++ b/src/webui/www/private/images/flags/es-ga.svg @@ -1,7 +1,7 @@ - + @@ -10,27 +10,27 @@ - + - + - + - + - + @@ -124,7 +124,7 @@ - + @@ -136,11 +136,11 @@ - + - - + + @@ -150,7 +150,7 @@ - + @@ -181,7 +181,7 @@ - + diff --git a/src/webui/www/private/images/flags/es.svg b/src/webui/www/private/images/flags/es.svg index 815e0f8468b2..acdf927f235a 100644 --- a/src/webui/www/private/images/flags/es.svg +++ b/src/webui/www/private/images/flags/es.svg @@ -8,20 +8,20 @@ - + - + - - + + - + - - + + @@ -30,15 +30,15 @@ - + - + - + - + @@ -46,33 +46,33 @@ - - + + - + - + - + - + - + - + - + - + - + - + @@ -82,54 +82,54 @@ - - + + - - + + - - - + + + - + - + - - + + - - + + - + - + - + @@ -153,49 +153,49 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -206,16 +206,16 @@ - - + + - - + + - - + + @@ -232,25 +232,25 @@ - - + + - - + + - + - + - + @@ -276,24 +276,24 @@ - + - + - - + + - + - + - - + + @@ -309,65 +309,65 @@ - + - - + + - - + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - - + + + - + - + - - + + - - - - + + + + - - + + @@ -462,78 +462,78 @@ - - - - + + + + - - + + - - + + - - - - + + + + - + - + - - - + + + - + - + - - - + + + - - - + + + - + - + - + - + - + - - - + + + - - + + diff --git a/src/webui/www/private/images/flags/et.svg b/src/webui/www/private/images/flags/et.svg index a3378fd9582f..3f99be486098 100644 --- a/src/webui/www/private/images/flags/et.svg +++ b/src/webui/www/private/images/flags/et.svg @@ -4,11 +4,11 @@ - + - + diff --git a/src/webui/www/private/images/flags/eu.svg b/src/webui/www/private/images/flags/eu.svg index bbfefd6b47a8..b0874c1ed497 100644 --- a/src/webui/www/private/images/flags/eu.svg +++ b/src/webui/www/private/images/flags/eu.svg @@ -13,7 +13,7 @@ - + diff --git a/src/webui/www/private/images/flags/fj.svg b/src/webui/www/private/images/flags/fj.svg index 2d7cd980c454..23fbe57a8db2 100644 --- a/src/webui/www/private/images/flags/fj.svg +++ b/src/webui/www/private/images/flags/fj.svg @@ -1,11 +1,11 @@ - + - + @@ -13,41 +13,41 @@ - - + + - - - - - - - - + + + + + + + + - + - - - - - - + + + + + + - + - + - + @@ -56,17 +56,17 @@ - + - + - + - + @@ -75,25 +75,25 @@ - - - - + + + + - - + + - - - - - + + + + + - + @@ -101,15 +101,15 @@ - + - - - - - + + + + + diff --git a/src/webui/www/private/images/flags/fk.svg b/src/webui/www/private/images/flags/fk.svg index b4935a55e3df..c65bf96de941 100644 --- a/src/webui/www/private/images/flags/fk.svg +++ b/src/webui/www/private/images/flags/fk.svg @@ -21,27 +21,27 @@ - + - + - - - + + + - - + + - + @@ -56,13 +56,13 @@ - + - + diff --git a/src/webui/www/private/images/flags/fm.svg b/src/webui/www/private/images/flags/fm.svg index 85f4f47ece77..c1b7c9778436 100644 --- a/src/webui/www/private/images/flags/fm.svg +++ b/src/webui/www/private/images/flags/fm.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/fo.svg b/src/webui/www/private/images/flags/fo.svg index 717ee20b8142..f802d285ac7b 100644 --- a/src/webui/www/private/images/flags/fo.svg +++ b/src/webui/www/private/images/flags/fo.svg @@ -6,7 +6,7 @@ - - + + diff --git a/src/webui/www/private/images/flags/fr.svg b/src/webui/www/private/images/flags/fr.svg index 79689fe94a73..4110e59e4ca5 100644 --- a/src/webui/www/private/images/flags/fr.svg +++ b/src/webui/www/private/images/flags/fr.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/gb-nir.svg b/src/webui/www/private/images/flags/gb-nir.svg index c9510f30cad3..e6be8dbc2d79 100644 --- a/src/webui/www/private/images/flags/gb-nir.svg +++ b/src/webui/www/private/images/flags/gb-nir.svg @@ -5,10 +5,10 @@ - + - + @@ -19,20 +19,20 @@ - + - + - + - + - + @@ -40,30 +40,30 @@ - + - + - + - + - + - + @@ -72,56 +72,56 @@ - + - + - + - + - + - + - - + + - - - + + + - + - + - + - - + + - + - + diff --git a/src/webui/www/private/images/flags/gb.svg b/src/webui/www/private/images/flags/gb.svg index dbac25eae4cf..799138319d84 100644 --- a/src/webui/www/private/images/flags/gb.svg +++ b/src/webui/www/private/images/flags/gb.svg @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/src/webui/www/private/images/flags/gd.svg b/src/webui/www/private/images/flags/gd.svg index f44e839139fd..cb51e9618e46 100644 --- a/src/webui/www/private/images/flags/gd.svg +++ b/src/webui/www/private/images/flags/gd.svg @@ -15,13 +15,13 @@ - + - + - - + + - + diff --git a/src/webui/www/private/images/flags/gf.svg b/src/webui/www/private/images/flags/gf.svg index 734934266d47..f8fe94c6597c 100644 --- a/src/webui/www/private/images/flags/gf.svg +++ b/src/webui/www/private/images/flags/gf.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/gh.svg b/src/webui/www/private/images/flags/gh.svg index a6497de880a0..5c3e3e69abef 100644 --- a/src/webui/www/private/images/flags/gh.svg +++ b/src/webui/www/private/images/flags/gh.svg @@ -2,5 +2,5 @@ - + diff --git a/src/webui/www/private/images/flags/gi.svg b/src/webui/www/private/images/flags/gi.svg index 92496be6bae6..e2b590afefb5 100644 --- a/src/webui/www/private/images/flags/gi.svg +++ b/src/webui/www/private/images/flags/gi.svg @@ -1,18 +1,18 @@ - + - + - + - + @@ -20,10 +20,10 @@ - + - + diff --git a/src/webui/www/private/images/flags/gp.svg b/src/webui/www/private/images/flags/gp.svg index 528e554f055c..ee55c4bcd372 100644 --- a/src/webui/www/private/images/flags/gp.svg +++ b/src/webui/www/private/images/flags/gp.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/gq.svg b/src/webui/www/private/images/flags/gq.svg index ba2acf28d964..134e44217310 100644 --- a/src/webui/www/private/images/flags/gq.svg +++ b/src/webui/www/private/images/flags/gq.svg @@ -4,7 +4,7 @@ - + @@ -16,8 +16,8 @@ - + - + diff --git a/src/webui/www/private/images/flags/gs.svg b/src/webui/www/private/images/flags/gs.svg index 2e045dfdd682..1536e073ec0d 100644 --- a/src/webui/www/private/images/flags/gs.svg +++ b/src/webui/www/private/images/flags/gs.svg @@ -27,27 +27,27 @@ - + - - + + - + - - + + - + - + @@ -65,7 +65,7 @@ - + @@ -96,14 +96,14 @@ - + - + @@ -113,7 +113,7 @@ - + @@ -124,7 +124,7 @@ - + diff --git a/src/webui/www/private/images/flags/gt.svg b/src/webui/www/private/images/flags/gt.svg index 9b3471244ebb..f7cffbdc7abc 100644 --- a/src/webui/www/private/images/flags/gt.svg +++ b/src/webui/www/private/images/flags/gt.svg @@ -118,27 +118,27 @@ - - - - - + + + + + - + - + - + - + - + @@ -148,53 +148,53 @@ - + - + - - + + - + - + - - + + - + - - + + - + - + - + - + - + - + - + diff --git a/src/webui/www/private/images/flags/gu.svg b/src/webui/www/private/images/flags/gu.svg index a5584ffd4aad..0d66e1bfa809 100644 --- a/src/webui/www/private/images/flags/gu.svg +++ b/src/webui/www/private/images/flags/gu.svg @@ -2,22 +2,22 @@ - - + + - - - G - U - A - M - + + + G + U + A + M + - - - - - + + + + + diff --git a/src/webui/www/private/images/flags/gw.svg b/src/webui/www/private/images/flags/gw.svg index b8d566a2ab00..d470bac9f71b 100644 --- a/src/webui/www/private/images/flags/gw.svg +++ b/src/webui/www/private/images/flags/gw.svg @@ -3,7 +3,7 @@ - + diff --git a/src/webui/www/private/images/flags/gy.svg b/src/webui/www/private/images/flags/gy.svg index f4d9b8ab2b93..569fb562759e 100644 --- a/src/webui/www/private/images/flags/gy.svg +++ b/src/webui/www/private/images/flags/gy.svg @@ -1,9 +1,9 @@ - + - + diff --git a/src/webui/www/private/images/flags/hk.svg b/src/webui/www/private/images/flags/hk.svg index ec40b5feda58..4fd55bc14b06 100644 --- a/src/webui/www/private/images/flags/hk.svg +++ b/src/webui/www/private/images/flags/hk.svg @@ -1,6 +1,6 @@ - + diff --git a/src/webui/www/private/images/flags/hm.svg b/src/webui/www/private/images/flags/hm.svg index c0748d3be4ad..815c48208507 100644 --- a/src/webui/www/private/images/flags/hm.svg +++ b/src/webui/www/private/images/flags/hm.svg @@ -2,7 +2,7 @@ - + - + diff --git a/src/webui/www/private/images/flags/hn.svg b/src/webui/www/private/images/flags/hn.svg index 1c166dc46492..11fde67db930 100644 --- a/src/webui/www/private/images/flags/hn.svg +++ b/src/webui/www/private/images/flags/hn.svg @@ -1,7 +1,7 @@ - + diff --git a/src/webui/www/private/images/flags/hr.svg b/src/webui/www/private/images/flags/hr.svg index febbc2400c01..44fed27d54e1 100644 --- a/src/webui/www/private/images/flags/hr.svg +++ b/src/webui/www/private/images/flags/hr.svg @@ -4,55 +4,55 @@ - - + + - - + + - - - + + + - + - + - - + + - - + + - - + + - - - + + + - + - + - + - - - - + + + + diff --git a/src/webui/www/private/images/flags/ht.svg b/src/webui/www/private/images/flags/ht.svg index 4cd4470f43d7..5d48eb93b2e5 100644 --- a/src/webui/www/private/images/flags/ht.svg +++ b/src/webui/www/private/images/flags/ht.svg @@ -4,37 +4,37 @@ - + - + - - - + + + - - - + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - + + @@ -44,36 +44,36 @@ - - - - - + + + + + - + - + - - - - - + + + + + - - - - - + + + + + - + @@ -88,29 +88,29 @@ - + - + - + - + - - - + + + - + diff --git a/src/webui/www/private/images/flags/il.svg b/src/webui/www/private/images/flags/il.svg index 724cf8bf392a..f43be7e8ed7a 100644 --- a/src/webui/www/private/images/flags/il.svg +++ b/src/webui/www/private/images/flags/il.svg @@ -4,11 +4,11 @@ - + - - - - + + + + diff --git a/src/webui/www/private/images/flags/im.svg b/src/webui/www/private/images/flags/im.svg index 3d597a14be77..f06f3d6fe1a5 100644 --- a/src/webui/www/private/images/flags/im.svg +++ b/src/webui/www/private/images/flags/im.svg @@ -4,11 +4,11 @@ - + - + @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + diff --git a/src/webui/www/private/images/flags/in.svg b/src/webui/www/private/images/flags/in.svg index c634f68acf90..bc47d74911bb 100644 --- a/src/webui/www/private/images/flags/in.svg +++ b/src/webui/www/private/images/flags/in.svg @@ -11,7 +11,7 @@ - + diff --git a/src/webui/www/private/images/flags/io.svg b/src/webui/www/private/images/flags/io.svg index b04c46f5e0af..77016679ef7d 100644 --- a/src/webui/www/private/images/flags/io.svg +++ b/src/webui/www/private/images/flags/io.svg @@ -30,7 +30,7 @@ - + @@ -104,8 +104,8 @@ - - + + @@ -120,7 +120,7 @@ - + diff --git a/src/webui/www/private/images/flags/iq.svg b/src/webui/www/private/images/flags/iq.svg index 6891785379f9..259da9adc58d 100644 --- a/src/webui/www/private/images/flags/iq.svg +++ b/src/webui/www/private/images/flags/iq.svg @@ -1,10 +1,10 @@ - - - + + + - + diff --git a/src/webui/www/private/images/flags/ir.svg b/src/webui/www/private/images/flags/ir.svg index 5c9609eff73f..8c6d51621699 100644 --- a/src/webui/www/private/images/flags/ir.svg +++ b/src/webui/www/private/images/flags/ir.svg @@ -4,7 +4,7 @@ - + @@ -209,11 +209,11 @@ - - - - - + + + + + diff --git a/src/webui/www/private/images/flags/is.svg b/src/webui/www/private/images/flags/is.svg index 56cc977874c1..a6588afaefd0 100644 --- a/src/webui/www/private/images/flags/is.svg +++ b/src/webui/www/private/images/flags/is.svg @@ -6,7 +6,7 @@ - - + + diff --git a/src/webui/www/private/images/flags/je.svg b/src/webui/www/private/images/flags/je.svg index e69e4f465ba1..611180d42a87 100644 --- a/src/webui/www/private/images/flags/je.svg +++ b/src/webui/www/private/images/flags/je.svg @@ -1,45 +1,62 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webui/www/private/images/flags/jm.svg b/src/webui/www/private/images/flags/jm.svg index e03a3422a6ba..269df0383684 100644 --- a/src/webui/www/private/images/flags/jm.svg +++ b/src/webui/www/private/images/flags/jm.svg @@ -1,6 +1,6 @@ - + diff --git a/src/webui/www/private/images/flags/jo.svg b/src/webui/www/private/images/flags/jo.svg index 50802915e425..d6f927d44f21 100644 --- a/src/webui/www/private/images/flags/jo.svg +++ b/src/webui/www/private/images/flags/jo.svg @@ -4,12 +4,12 @@ - + - + - + diff --git a/src/webui/www/private/images/flags/jp.svg b/src/webui/www/private/images/flags/jp.svg index cd03a339df18..cc1c181ce9b2 100644 --- a/src/webui/www/private/images/flags/jp.svg +++ b/src/webui/www/private/images/flags/jp.svg @@ -6,6 +6,6 @@ - + diff --git a/src/webui/www/private/images/flags/ke.svg b/src/webui/www/private/images/flags/ke.svg index 5b3779370f7c..3a67ca3ccd48 100644 --- a/src/webui/www/private/images/flags/ke.svg +++ b/src/webui/www/private/images/flags/ke.svg @@ -3,14 +3,14 @@ - + - + diff --git a/src/webui/www/private/images/flags/kg.svg b/src/webui/www/private/images/flags/kg.svg index 626af14da93d..68c210b1cfdf 100644 --- a/src/webui/www/private/images/flags/kg.svg +++ b/src/webui/www/private/images/flags/kg.svg @@ -4,12 +4,12 @@ - + - - + + diff --git a/src/webui/www/private/images/flags/ki.svg b/src/webui/www/private/images/flags/ki.svg index 1697ffe8b775..0c8032807138 100644 --- a/src/webui/www/private/images/flags/ki.svg +++ b/src/webui/www/private/images/flags/ki.svg @@ -4,28 +4,28 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + diff --git a/src/webui/www/private/images/flags/km.svg b/src/webui/www/private/images/flags/km.svg index 56d62c32e8ca..414d65e47fd1 100644 --- a/src/webui/www/private/images/flags/km.svg +++ b/src/webui/www/private/images/flags/km.svg @@ -9,7 +9,7 @@ - + diff --git a/src/webui/www/private/images/flags/kn.svg b/src/webui/www/private/images/flags/kn.svg index 01a3a0a2ab36..47fe64d617ab 100644 --- a/src/webui/www/private/images/flags/kn.svg +++ b/src/webui/www/private/images/flags/kn.svg @@ -4,11 +4,11 @@ - + - - - + + + diff --git a/src/webui/www/private/images/flags/kp.svg b/src/webui/www/private/images/flags/kp.svg index 94bc8e1ede4a..4d1dbab24676 100644 --- a/src/webui/www/private/images/flags/kp.svg +++ b/src/webui/www/private/images/flags/kp.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/kr.svg b/src/webui/www/private/images/flags/kr.svg index 44b51e2513c5..6947eab2b390 100644 --- a/src/webui/www/private/images/flags/kr.svg +++ b/src/webui/www/private/images/flags/kr.svg @@ -4,11 +4,11 @@ - + - + - + @@ -16,7 +16,7 @@ - + diff --git a/src/webui/www/private/images/flags/kw.svg b/src/webui/www/private/images/flags/kw.svg index 7ff91a845945..3dd89e9962e6 100644 --- a/src/webui/www/private/images/flags/kw.svg +++ b/src/webui/www/private/images/flags/kw.svg @@ -8,6 +8,6 @@ - + diff --git a/src/webui/www/private/images/flags/ky.svg b/src/webui/www/private/images/flags/ky.svg index d6e567b59d1d..74a2fea2a1d9 100644 --- a/src/webui/www/private/images/flags/ky.svg +++ b/src/webui/www/private/images/flags/ky.svg @@ -5,7 +5,7 @@ - + @@ -14,20 +14,20 @@ - + - - - - + + + + - + @@ -60,22 +60,22 @@ - + - + - + - + @@ -89,8 +89,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/kz.svg b/src/webui/www/private/images/flags/kz.svg index a69ba7a3b0a3..04a47f53e82d 100644 --- a/src/webui/www/private/images/flags/kz.svg +++ b/src/webui/www/private/images/flags/kz.svg @@ -5,7 +5,7 @@ - + @@ -16,8 +16,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/la.svg b/src/webui/www/private/images/flags/la.svg index 9723a781ad63..6aea6b72b405 100644 --- a/src/webui/www/private/images/flags/la.svg +++ b/src/webui/www/private/images/flags/la.svg @@ -7,6 +7,6 @@ - + diff --git a/src/webui/www/private/images/flags/lb.svg b/src/webui/www/private/images/flags/lb.svg index 49650ad85c89..8619f2410e14 100644 --- a/src/webui/www/private/images/flags/lb.svg +++ b/src/webui/www/private/images/flags/lb.svg @@ -4,12 +4,12 @@ - + - + diff --git a/src/webui/www/private/images/flags/lc.svg b/src/webui/www/private/images/flags/lc.svg index 46bbc6cc7035..bb256541c6ed 100644 --- a/src/webui/www/private/images/flags/lc.svg +++ b/src/webui/www/private/images/flags/lc.svg @@ -1,8 +1,8 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/li.svg b/src/webui/www/private/images/flags/li.svg index a08a05acd7a2..68ea26fa30e8 100644 --- a/src/webui/www/private/images/flags/li.svg +++ b/src/webui/www/private/images/flags/li.svg @@ -3,10 +3,10 @@ - + - + @@ -20,23 +20,23 @@ - + - + - + - + - + diff --git a/src/webui/www/private/images/flags/lk.svg b/src/webui/www/private/images/flags/lk.svg index 24c6559b70c4..2c5cdbe09dc1 100644 --- a/src/webui/www/private/images/flags/lk.svg +++ b/src/webui/www/private/images/flags/lk.svg @@ -11,12 +11,12 @@ - - - - - - + + + + + + diff --git a/src/webui/www/private/images/flags/lr.svg b/src/webui/www/private/images/flags/lr.svg index a31377f97590..e482ab9d749d 100644 --- a/src/webui/www/private/images/flags/lr.svg +++ b/src/webui/www/private/images/flags/lr.svg @@ -9,6 +9,6 @@ - + diff --git a/src/webui/www/private/images/flags/ls.svg b/src/webui/www/private/images/flags/ls.svg index e70165028357..a7c01a98ffc7 100644 --- a/src/webui/www/private/images/flags/ls.svg +++ b/src/webui/www/private/images/flags/ls.svg @@ -4,5 +4,5 @@ - + diff --git a/src/webui/www/private/images/flags/lu.svg b/src/webui/www/private/images/flags/lu.svg index c31d2bfa24a7..cc122068125c 100644 --- a/src/webui/www/private/images/flags/lu.svg +++ b/src/webui/www/private/images/flags/lu.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/ly.svg b/src/webui/www/private/images/flags/ly.svg index 14abcb24306e..1eaa51e468b7 100644 --- a/src/webui/www/private/images/flags/ly.svg +++ b/src/webui/www/private/images/flags/ly.svg @@ -6,7 +6,7 @@ - + diff --git a/src/webui/www/private/images/flags/md.svg b/src/webui/www/private/images/flags/md.svg index a806572c2f10..6dc441e17765 100644 --- a/src/webui/www/private/images/flags/md.svg +++ b/src/webui/www/private/images/flags/md.svg @@ -7,7 +7,7 @@ - + @@ -32,17 +32,17 @@ - + - + - - + + @@ -51,19 +51,19 @@ - + - - + + - - + + - + diff --git a/src/webui/www/private/images/flags/me.svg b/src/webui/www/private/images/flags/me.svg index b56cce0946f3..d8918907460b 100644 --- a/src/webui/www/private/images/flags/me.svg +++ b/src/webui/www/private/images/flags/me.svg @@ -1,28 +1,28 @@ - - + + - - - + + + - + - + - - - - - - + + + + + + @@ -32,43 +32,43 @@ - - - - - + + + + + - - - - + + + + - + - + - + - - + + - - + + - + - - - - - - + + + + + + @@ -81,36 +81,36 @@ - - + + - - + + - - - + + + - + - + - + - + - + - - - + + + - + diff --git a/src/webui/www/private/images/flags/mf.svg b/src/webui/www/private/images/flags/mf.svg index a53ce5012972..6305edc1c239 100644 --- a/src/webui/www/private/images/flags/mf.svg +++ b/src/webui/www/private/images/flags/mf.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/mh.svg b/src/webui/www/private/images/flags/mh.svg index 46351e541e66..7b9f49075518 100644 --- a/src/webui/www/private/images/flags/mh.svg +++ b/src/webui/www/private/images/flags/mh.svg @@ -1,7 +1,7 @@ - - + + diff --git a/src/webui/www/private/images/flags/mm.svg b/src/webui/www/private/images/flags/mm.svg index 8ed5e6ac2cba..42b4dee2b8cc 100644 --- a/src/webui/www/private/images/flags/mm.svg +++ b/src/webui/www/private/images/flags/mm.svg @@ -2,7 +2,7 @@ - + diff --git a/src/webui/www/private/images/flags/mn.svg b/src/webui/www/private/images/flags/mn.svg index 56cb0729b4b4..152c2fcb0f93 100644 --- a/src/webui/www/private/images/flags/mn.svg +++ b/src/webui/www/private/images/flags/mn.svg @@ -4,9 +4,9 @@ - + - + diff --git a/src/webui/www/private/images/flags/mo.svg b/src/webui/www/private/images/flags/mo.svg index 257faed69f94..d39985d05fbf 100644 --- a/src/webui/www/private/images/flags/mo.svg +++ b/src/webui/www/private/images/flags/mo.svg @@ -2,7 +2,7 @@ - + diff --git a/src/webui/www/private/images/flags/mp.svg b/src/webui/www/private/images/flags/mp.svg index 6696fdb83980..ff59ebf87b12 100644 --- a/src/webui/www/private/images/flags/mp.svg +++ b/src/webui/www/private/images/flags/mp.svg @@ -7,7 +7,7 @@ - + @@ -52,27 +52,27 @@ - + - - - + + + - + - + - - + + - + diff --git a/src/webui/www/private/images/flags/mr.svg b/src/webui/www/private/images/flags/mr.svg index 3f0a62645d34..7558234cbff8 100644 --- a/src/webui/www/private/images/flags/mr.svg +++ b/src/webui/www/private/images/flags/mr.svg @@ -1,6 +1,6 @@ - + diff --git a/src/webui/www/private/images/flags/ms.svg b/src/webui/www/private/images/flags/ms.svg index 58641240cc0d..faf07b07fd2e 100644 --- a/src/webui/www/private/images/flags/ms.svg +++ b/src/webui/www/private/images/flags/ms.svg @@ -1,16 +1,16 @@ - - - + + + - + - + diff --git a/src/webui/www/private/images/flags/mt.svg b/src/webui/www/private/images/flags/mt.svg index 676e801c5c93..c597266c3692 100644 --- a/src/webui/www/private/images/flags/mt.svg +++ b/src/webui/www/private/images/flags/mt.svg @@ -1,49 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + diff --git a/src/webui/www/private/images/flags/mw.svg b/src/webui/www/private/images/flags/mw.svg index 113aae543a66..d83ddb217876 100644 --- a/src/webui/www/private/images/flags/mw.svg +++ b/src/webui/www/private/images/flags/mw.svg @@ -2,9 +2,9 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/mx.svg b/src/webui/www/private/images/flags/mx.svg index bb305b8d1125..f98a89e17335 100644 --- a/src/webui/www/private/images/flags/mx.svg +++ b/src/webui/www/private/images/flags/mx.svg @@ -39,87 +39,87 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - + + + + - - - - - + + + + + - - - - - - - + + + + + + + @@ -127,88 +127,88 @@ - - - - + + + + - - + + - - - - - + + + + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - - + + + - - + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + @@ -216,167 +216,167 @@ - - - - + + + + - + - - + + - - + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - + + - - - + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - + + + - - + + - + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - + + + + + + - - - + + + - - - - - - - + + + + + + + - - - + + + - + - - - - - + + + + + - - + + - - + + - - + + - - - + + + diff --git a/src/webui/www/private/images/flags/my.svg b/src/webui/www/private/images/flags/my.svg index 264f48aef6c5..89576f69eae8 100644 --- a/src/webui/www/private/images/flags/my.svg +++ b/src/webui/www/private/images/flags/my.svg @@ -1,6 +1,6 @@ - + @@ -15,8 +15,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/mz.svg b/src/webui/www/private/images/flags/mz.svg index eb020058bc76..2ee6ec14b477 100644 --- a/src/webui/www/private/images/flags/mz.svg +++ b/src/webui/www/private/images/flags/mz.svg @@ -7,15 +7,15 @@ - + - + - + - + diff --git a/src/webui/www/private/images/flags/na.svg b/src/webui/www/private/images/flags/na.svg index 799702e8cf74..35b9f783e155 100644 --- a/src/webui/www/private/images/flags/na.svg +++ b/src/webui/www/private/images/flags/na.svg @@ -6,11 +6,11 @@ - + - - + + diff --git a/src/webui/www/private/images/flags/nc.svg b/src/webui/www/private/images/flags/nc.svg index 96795408cb50..068f0c69aac4 100644 --- a/src/webui/www/private/images/flags/nc.svg +++ b/src/webui/www/private/images/flags/nc.svg @@ -4,10 +4,10 @@ - - - - - - + + + + + + diff --git a/src/webui/www/private/images/flags/nf.svg b/src/webui/www/private/images/flags/nf.svg index ecdb4a3bd1c5..c8b30938d778 100644 --- a/src/webui/www/private/images/flags/nf.svg +++ b/src/webui/www/private/images/flags/nf.svg @@ -2,8 +2,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/ni.svg b/src/webui/www/private/images/flags/ni.svg index e16e77ae4fee..6dcdc9a806e0 100644 --- a/src/webui/www/private/images/flags/ni.svg +++ b/src/webui/www/private/images/flags/ni.svg @@ -38,13 +38,13 @@ - - - + + + - + @@ -59,62 +59,62 @@ - - - + + + - + - - + + - - - + + + - + - + - - - + + + - + - - - - + + + + - + - + - + - + @@ -125,5 +125,5 @@ - + diff --git a/src/webui/www/private/images/flags/nl.svg b/src/webui/www/private/images/flags/nl.svg index 4faaf498e1b7..e90f5b03511f 100644 --- a/src/webui/www/private/images/flags/nl.svg +++ b/src/webui/www/private/images/flags/nl.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/np.svg b/src/webui/www/private/images/flags/np.svg index fead9402c86d..8d71d106bbbb 100644 --- a/src/webui/www/private/images/flags/np.svg +++ b/src/webui/www/private/images/flags/np.svg @@ -4,10 +4,10 @@ - + - + diff --git a/src/webui/www/private/images/flags/nr.svg b/src/webui/www/private/images/flags/nr.svg index e71ddcd8db34..ff394c411211 100644 --- a/src/webui/www/private/images/flags/nr.svg +++ b/src/webui/www/private/images/flags/nr.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/nz.svg b/src/webui/www/private/images/flags/nz.svg index a0028fb2f67f..935d8a749d94 100644 --- a/src/webui/www/private/images/flags/nz.svg +++ b/src/webui/www/private/images/flags/nz.svg @@ -8,24 +8,24 @@ - + - - + + - - - + + + - - - + + + - - + + diff --git a/src/webui/www/private/images/flags/om.svg b/src/webui/www/private/images/flags/om.svg index 1c7621799659..c003f86e467a 100644 --- a/src/webui/www/private/images/flags/om.svg +++ b/src/webui/www/private/images/flags/om.svg @@ -12,14 +12,14 @@ - + - + @@ -34,10 +34,10 @@ - + - - + + @@ -52,10 +52,10 @@ - + - - + + @@ -84,7 +84,7 @@ - + @@ -95,7 +95,7 @@ - + diff --git a/src/webui/www/private/images/flags/pc.svg b/src/webui/www/private/images/flags/pc.svg new file mode 100644 index 000000000000..882197da676d --- /dev/null +++ b/src/webui/www/private/images/flags/pc.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webui/www/private/images/flags/pf.svg b/src/webui/www/private/images/flags/pf.svg index 16374f3629e7..e06b236e82bc 100644 --- a/src/webui/www/private/images/flags/pf.svg +++ b/src/webui/www/private/images/flags/pf.svg @@ -8,12 +8,12 @@ - + - + - + diff --git a/src/webui/www/private/images/flags/pg.svg b/src/webui/www/private/images/flags/pg.svg index 1080add5bf87..237cb6eeedd7 100644 --- a/src/webui/www/private/images/flags/pg.svg +++ b/src/webui/www/private/images/flags/pg.svg @@ -1,7 +1,7 @@ - - + + diff --git a/src/webui/www/private/images/flags/pk.svg b/src/webui/www/private/images/flags/pk.svg index fa02f6a8fca7..491e58ab1624 100644 --- a/src/webui/www/private/images/flags/pk.svg +++ b/src/webui/www/private/images/flags/pk.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/pm.svg b/src/webui/www/private/images/flags/pm.svg index 401139f7aaf8..19a9330a31b6 100644 --- a/src/webui/www/private/images/flags/pm.svg +++ b/src/webui/www/private/images/flags/pm.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/pn.svg b/src/webui/www/private/images/flags/pn.svg index 9788c9cc150b..07958aca12fa 100644 --- a/src/webui/www/private/images/flags/pn.svg +++ b/src/webui/www/private/images/flags/pn.svg @@ -46,8 +46,8 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/pr.svg b/src/webui/www/private/images/flags/pr.svg index 3cb403b5caa8..ec51831dcd80 100644 --- a/src/webui/www/private/images/flags/pr.svg +++ b/src/webui/www/private/images/flags/pr.svg @@ -4,10 +4,10 @@ - + - - + + diff --git a/src/webui/www/private/images/flags/ps.svg b/src/webui/www/private/images/flags/ps.svg index 82031486a850..b33824a5dd74 100644 --- a/src/webui/www/private/images/flags/ps.svg +++ b/src/webui/www/private/images/flags/ps.svg @@ -4,12 +4,12 @@ - + - + - + diff --git a/src/webui/www/private/images/flags/pt.svg b/src/webui/www/private/images/flags/pt.svg index 2f36b7ee7026..445cf7f53695 100644 --- a/src/webui/www/private/images/flags/pt.svg +++ b/src/webui/www/private/images/flags/pt.svg @@ -2,38 +2,38 @@ - - + + - - + + - - - + + + - + - - - + + + - + - - - + + + - - - - + + + + - + - - + + @@ -42,7 +42,7 @@ - + diff --git a/src/webui/www/private/images/flags/pw.svg b/src/webui/www/private/images/flags/pw.svg index 089cbceea294..9f89c5f1483c 100644 --- a/src/webui/www/private/images/flags/pw.svg +++ b/src/webui/www/private/images/flags/pw.svg @@ -6,6 +6,6 @@ - + diff --git a/src/webui/www/private/images/flags/py.svg b/src/webui/www/private/images/flags/py.svg index bfbf01f1f946..38e2051eb284 100644 --- a/src/webui/www/private/images/flags/py.svg +++ b/src/webui/www/private/images/flags/py.svg @@ -2,24 +2,24 @@ - + - + - + - + @@ -146,12 +146,12 @@ - - + + - + - + diff --git a/src/webui/www/private/images/flags/qa.svg b/src/webui/www/private/images/flags/qa.svg index bd493c381c83..901f3fa761a3 100644 --- a/src/webui/www/private/images/flags/qa.svg +++ b/src/webui/www/private/images/flags/qa.svg @@ -1,4 +1,4 @@ - + diff --git a/src/webui/www/private/images/flags/re.svg b/src/webui/www/private/images/flags/re.svg index 3225dddf25f5..64e788e011b6 100644 --- a/src/webui/www/private/images/flags/re.svg +++ b/src/webui/www/private/images/flags/re.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/rs.svg b/src/webui/www/private/images/flags/rs.svg index 120293ab04c2..2f971025b874 100644 --- a/src/webui/www/private/images/flags/rs.svg +++ b/src/webui/www/private/images/flags/rs.svg @@ -4,146 +4,146 @@ - + - + - + - - + + - + - + - + - + - - - - + + + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - - + + + - + - + - - + + - + - - + + - + - + - + - - + + - + - - - + + + @@ -154,23 +154,23 @@ - + - + - + - + - + - + @@ -180,21 +180,21 @@ - + - + - + - - + + - - + + - - + + @@ -205,88 +205,88 @@ - - + + - + - + - - - + + + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + - + - - - + + + - - + + - + - + - + diff --git a/src/webui/www/private/images/flags/ru.svg b/src/webui/www/private/images/flags/ru.svg index f4d27efc9830..cf243011ae99 100644 --- a/src/webui/www/private/images/flags/ru.svg +++ b/src/webui/www/private/images/flags/ru.svg @@ -1,7 +1,5 @@ - - - - - + + + diff --git a/src/webui/www/private/images/flags/rw.svg b/src/webui/www/private/images/flags/rw.svg index 6cc669ed2d98..06e26ae44e4e 100644 --- a/src/webui/www/private/images/flags/rw.svg +++ b/src/webui/www/private/images/flags/rw.svg @@ -2,7 +2,7 @@ - + diff --git a/src/webui/www/private/images/flags/sa.svg b/src/webui/www/private/images/flags/sa.svg index 660396a7044a..c0a148663b6c 100644 --- a/src/webui/www/private/images/flags/sa.svg +++ b/src/webui/www/private/images/flags/sa.svg @@ -4,22 +4,22 @@ - + - - - - + + + + - - - - - - - - + + + + + + + + diff --git a/src/webui/www/private/images/flags/sb.svg b/src/webui/www/private/images/flags/sb.svg index a011360d5f74..6066f94cd117 100644 --- a/src/webui/www/private/images/flags/sb.svg +++ b/src/webui/www/private/images/flags/sb.svg @@ -5,9 +5,9 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/sd.svg b/src/webui/www/private/images/flags/sd.svg index b8e4b973575d..12818b4110db 100644 --- a/src/webui/www/private/images/flags/sd.svg +++ b/src/webui/www/private/images/flags/sd.svg @@ -5,9 +5,9 @@ - + - + diff --git a/src/webui/www/private/images/flags/se.svg b/src/webui/www/private/images/flags/se.svg index 0e41780ef1c8..8ba745acaf22 100644 --- a/src/webui/www/private/images/flags/se.svg +++ b/src/webui/www/private/images/flags/se.svg @@ -1,4 +1,4 @@ - + diff --git a/src/webui/www/private/images/flags/ac.svg b/src/webui/www/private/images/flags/sh-ac.svg similarity index 61% rename from src/webui/www/private/images/flags/ac.svg rename to src/webui/www/private/images/flags/sh-ac.svg index b1ae9ac523ee..22b365832eed 100644 --- a/src/webui/www/private/images/flags/ac.svg +++ b/src/webui/www/private/images/flags/sh-ac.svg @@ -1,90 +1,90 @@ - + - + - + - + - + - + - - - - + + + + - - - + + + - + - + - - + + - + - - - + + + - + - + - - + + - - - + + + - + - + - - + + - + - - - - - - - + + + + + + + - + - + @@ -100,68 +100,68 @@ - + - + - + - + - + - - + + - - + + - + - - + + - - + + - + - - - - - + + + + + - + - - + + - + - + - - + + - - + + - + @@ -171,51 +171,51 @@ - + - + - + - - + + - + - + - + - + - - + + - - - + + + - - + + - + - - - - + + + + - - - + + + @@ -223,10 +223,10 @@ - + - - + + @@ -251,10 +251,10 @@ - + - + @@ -271,7 +271,7 @@ - + @@ -337,198 +337,198 @@ - + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - + - + - - + + - + - - - + + + - + - - - + + + - + - + - + - + - - - - + + + + - - + + - - + + - - + + - + - - + + - - - + + + - + - + - - + + @@ -538,134 +538,134 @@ - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - + + - + - + - + - + - + - + - - + + - + - - - + + + - + - - + + - + - + - + - + - - - - + + + + - - + + - - - + + + - - + + - + - - + + - - - + + + - + - + - - + + @@ -675,8 +675,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/sh-hl.svg b/src/webui/www/private/images/flags/sh-hl.svg new file mode 100644 index 000000000000..b92e703f2768 --- /dev/null +++ b/src/webui/www/private/images/flags/sh-hl.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webui/www/private/images/flags/ta.svg b/src/webui/www/private/images/flags/sh-ta.svg similarity index 81% rename from src/webui/www/private/images/flags/ta.svg rename to src/webui/www/private/images/flags/sh-ta.svg index b68ad23c6f2c..a103aac05fc6 100644 --- a/src/webui/www/private/images/flags/ta.svg +++ b/src/webui/www/private/images/flags/sh-ta.svg @@ -1,38 +1,38 @@ - - + + - - + + - + - + - + - - + + - - - - + + + + - + - - + + @@ -40,10 +40,10 @@ - - + + - + @@ -51,22 +51,22 @@ - - + + - + - - - + + + - - + + - + - + diff --git a/src/webui/www/private/images/flags/sh.svg b/src/webui/www/private/images/flags/sh.svg index 353915d3e90c..7aba0aec8a07 100644 --- a/src/webui/www/private/images/flags/sh.svg +++ b/src/webui/www/private/images/flags/sh.svg @@ -1,7 +1,7 @@ - - - - + + + + diff --git a/src/webui/www/private/images/flags/si.svg b/src/webui/www/private/images/flags/si.svg index f2aea01689e8..66a390dcd216 100644 --- a/src/webui/www/private/images/flags/si.svg +++ b/src/webui/www/private/images/flags/si.svg @@ -4,15 +4,15 @@ - + - + - - - - + + + + diff --git a/src/webui/www/private/images/flags/sk.svg b/src/webui/www/private/images/flags/sk.svg index a1953fa67fc2..81476940eb2a 100644 --- a/src/webui/www/private/images/flags/sk.svg +++ b/src/webui/www/private/images/flags/sk.svg @@ -2,8 +2,8 @@ - - + + - + diff --git a/src/webui/www/private/images/flags/sm.svg b/src/webui/www/private/images/flags/sm.svg index 0892990b25ec..00e9286c4454 100644 --- a/src/webui/www/private/images/flags/sm.svg +++ b/src/webui/www/private/images/flags/sm.svg @@ -5,10 +5,10 @@ - - - - + + + + @@ -23,19 +23,19 @@ - - + + - - + + - - - - + + + + @@ -50,21 +50,21 @@ - - + + - + - + - + diff --git a/src/webui/www/private/images/flags/so.svg b/src/webui/www/private/images/flags/so.svg index ae582f198d2a..a581ac63cfaf 100644 --- a/src/webui/www/private/images/flags/so.svg +++ b/src/webui/www/private/images/flags/so.svg @@ -4,8 +4,8 @@ - + - + diff --git a/src/webui/www/private/images/flags/ss.svg b/src/webui/www/private/images/flags/ss.svg index 73804d80d56b..b257aa0b3e50 100644 --- a/src/webui/www/private/images/flags/ss.svg +++ b/src/webui/www/private/images/flags/ss.svg @@ -1,7 +1,7 @@ - + diff --git a/src/webui/www/private/images/flags/st.svg b/src/webui/www/private/images/flags/st.svg index f2e75c141814..1294bcb70e87 100644 --- a/src/webui/www/private/images/flags/st.svg +++ b/src/webui/www/private/images/flags/st.svg @@ -2,9 +2,9 @@ - + - + diff --git a/src/webui/www/private/images/flags/sv.svg b/src/webui/www/private/images/flags/sv.svg index 3a63913d0010..c811e912f041 100644 --- a/src/webui/www/private/images/flags/sv.svg +++ b/src/webui/www/private/images/flags/sv.svg @@ -1,30 +1,30 @@ - + - + - - - - - + + + + + - + - + - + - + @@ -33,14 +33,14 @@ - + - + - + @@ -48,23 +48,23 @@ - - - + + + - - - - + + + + - + - - - - + + + + @@ -74,11 +74,11 @@ - + - - + + @@ -96,10 +96,10 @@ - - - - + + + + @@ -477,7 +477,7 @@ - + @@ -533,21 +533,21 @@ - + - - - - + + + + - - + + - + @@ -562,33 +562,33 @@ - + - - + + - + - - - - - - + + + + + + - + - + - - - - - + + + + + diff --git a/src/webui/www/private/images/flags/sx.svg b/src/webui/www/private/images/flags/sx.svg index 84844e0f2ea7..18f7a1397b0e 100644 --- a/src/webui/www/private/images/flags/sx.svg +++ b/src/webui/www/private/images/flags/sx.svg @@ -5,36 +5,36 @@ - - - - - - + + + + + + - - + + - + - - + + - + - + @@ -44,7 +44,7 @@ - + diff --git a/src/webui/www/private/images/flags/sy.svg b/src/webui/www/private/images/flags/sy.svg index 29636ae06f4e..522555052504 100644 --- a/src/webui/www/private/images/flags/sy.svg +++ b/src/webui/www/private/images/flags/sy.svg @@ -1,5 +1,5 @@ - + diff --git a/src/webui/www/private/images/flags/sz.svg b/src/webui/www/private/images/flags/sz.svg index 5eef691409f0..294a2cc1a884 100644 --- a/src/webui/www/private/images/flags/sz.svg +++ b/src/webui/www/private/images/flags/sz.svg @@ -2,7 +2,7 @@ - + @@ -13,7 +13,7 @@ - + @@ -22,13 +22,13 @@ - + - + - + - + diff --git a/src/webui/www/private/images/flags/tc.svg b/src/webui/www/private/images/flags/tc.svg index 89d29bbf85a5..63f13c359bfe 100644 --- a/src/webui/www/private/images/flags/tc.svg +++ b/src/webui/www/private/images/flags/tc.svg @@ -1,14 +1,14 @@ - + - - + + - + @@ -27,7 +27,7 @@ - + @@ -35,10 +35,10 @@ - + - - + + diff --git a/src/webui/www/private/images/flags/tf.svg b/src/webui/www/private/images/flags/tf.svg index 88323d2cd925..fba233563fea 100644 --- a/src/webui/www/private/images/flags/tf.svg +++ b/src/webui/www/private/images/flags/tf.svg @@ -6,7 +6,7 @@ - + diff --git a/src/webui/www/private/images/flags/tg.svg b/src/webui/www/private/images/flags/tg.svg index e20f40d8dbdd..c63a6d1a9483 100644 --- a/src/webui/www/private/images/flags/tg.svg +++ b/src/webui/www/private/images/flags/tg.svg @@ -8,7 +8,7 @@ - + diff --git a/src/webui/www/private/images/flags/tj.svg b/src/webui/www/private/images/flags/tj.svg index d2ba73338b90..9fba246cde0c 100644 --- a/src/webui/www/private/images/flags/tj.svg +++ b/src/webui/www/private/images/flags/tj.svg @@ -10,10 +10,10 @@ - + - + diff --git a/src/webui/www/private/images/flags/tk.svg b/src/webui/www/private/images/flags/tk.svg index 65bab1372f93..05d3e86ce637 100644 --- a/src/webui/www/private/images/flags/tk.svg +++ b/src/webui/www/private/images/flags/tk.svg @@ -1,5 +1,5 @@ - + diff --git a/src/webui/www/private/images/flags/tl.svg b/src/webui/www/private/images/flags/tl.svg index bcfc1612d7f1..3d0701a2c8c8 100644 --- a/src/webui/www/private/images/flags/tl.svg +++ b/src/webui/www/private/images/flags/tl.svg @@ -6,8 +6,8 @@ - - + + diff --git a/src/webui/www/private/images/flags/tm.svg b/src/webui/www/private/images/flags/tm.svg index 07c1a2f6cbbb..8b656cc2b8b2 100644 --- a/src/webui/www/private/images/flags/tm.svg +++ b/src/webui/www/private/images/flags/tm.svg @@ -34,7 +34,7 @@ - + @@ -76,7 +76,7 @@ - + @@ -98,7 +98,7 @@ - + @@ -200,5 +200,5 @@ - + diff --git a/src/webui/www/private/images/flags/tn.svg b/src/webui/www/private/images/flags/tn.svg index 6a1989b4f411..5735c1984de3 100644 --- a/src/webui/www/private/images/flags/tn.svg +++ b/src/webui/www/private/images/flags/tn.svg @@ -1,4 +1,4 @@ - + diff --git a/src/webui/www/private/images/flags/tr.svg b/src/webui/www/private/images/flags/tr.svg index a92804f88290..b96da21f0e98 100644 --- a/src/webui/www/private/images/flags/tr.svg +++ b/src/webui/www/private/images/flags/tr.svg @@ -1,7 +1,7 @@ - + diff --git a/src/webui/www/private/images/flags/tt.svg b/src/webui/www/private/images/flags/tt.svg index 14adbe041ec6..bc24938cf8ea 100644 --- a/src/webui/www/private/images/flags/tt.svg +++ b/src/webui/www/private/images/flags/tt.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/tz.svg b/src/webui/www/private/images/flags/tz.svg index 751c167206d8..a2cfbca42aa2 100644 --- a/src/webui/www/private/images/flags/tz.svg +++ b/src/webui/www/private/images/flags/tz.svg @@ -6,8 +6,8 @@ - - - + + + diff --git a/src/webui/www/private/images/flags/ug.svg b/src/webui/www/private/images/flags/ug.svg index 78252a42d182..737eb2ce1a70 100644 --- a/src/webui/www/private/images/flags/ug.svg +++ b/src/webui/www/private/images/flags/ug.svg @@ -4,26 +4,26 @@ - + - + - + - - - - + + + + - + - - + + - - + + diff --git a/src/webui/www/private/images/flags/um.svg b/src/webui/www/private/images/flags/um.svg index e04159498b53..9e9eddaa4a71 100644 --- a/src/webui/www/private/images/flags/um.svg +++ b/src/webui/www/private/images/flags/um.svg @@ -5,5 +5,5 @@ - + diff --git a/src/webui/www/private/images/flags/un.svg b/src/webui/www/private/images/flags/un.svg index e4753370314b..e57793bc79a3 100644 --- a/src/webui/www/private/images/flags/un.svg +++ b/src/webui/www/private/images/flags/un.svg @@ -1,16 +1,16 @@ - - + + - - - - + + + + - - + + diff --git a/src/webui/www/private/images/flags/us.svg b/src/webui/www/private/images/flags/us.svg index 615946d4b597..9cfd0c927f97 100644 --- a/src/webui/www/private/images/flags/us.svg +++ b/src/webui/www/private/images/flags/us.svg @@ -5,5 +5,5 @@ - + diff --git a/src/webui/www/private/images/flags/uy.svg b/src/webui/www/private/images/flags/uy.svg index 4a54b857ac7c..62c36f8e5e68 100644 --- a/src/webui/www/private/images/flags/uy.svg +++ b/src/webui/www/private/images/flags/uy.svg @@ -1,7 +1,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/src/webui/www/private/images/flags/uz.svg b/src/webui/www/private/images/flags/uz.svg index aaf9382a4b80..0ccca1b1b4aa 100644 --- a/src/webui/www/private/images/flags/uz.svg +++ b/src/webui/www/private/images/flags/uz.svg @@ -5,7 +5,7 @@ - + diff --git a/src/webui/www/private/images/flags/va.svg b/src/webui/www/private/images/flags/va.svg index 25e6a9756cf1..87e0fbbdcce5 100644 --- a/src/webui/www/private/images/flags/va.svg +++ b/src/webui/www/private/images/flags/va.svg @@ -2,23 +2,23 @@ - + - - + + - - - - + + + + - + @@ -52,7 +52,7 @@ - + @@ -174,13 +174,13 @@ - + - + diff --git a/src/webui/www/private/images/flags/vc.svg b/src/webui/www/private/images/flags/vc.svg index 450f6f0a2612..f26c2d8da992 100644 --- a/src/webui/www/private/images/flags/vc.svg +++ b/src/webui/www/private/images/flags/vc.svg @@ -3,6 +3,6 @@ - + diff --git a/src/webui/www/private/images/flags/vg.svg b/src/webui/www/private/images/flags/vg.svg index 4d2c3976e97a..0ee90fb28c3c 100644 --- a/src/webui/www/private/images/flags/vg.svg +++ b/src/webui/www/private/images/flags/vg.svg @@ -11,15 +11,15 @@ - - - + + + - + @@ -34,10 +34,10 @@ - - + + - + @@ -54,6 +54,6 @@ - + diff --git a/src/webui/www/private/images/flags/vi.svg b/src/webui/www/private/images/flags/vi.svg index 3a64338e8fe0..4270257799af 100644 --- a/src/webui/www/private/images/flags/vi.svg +++ b/src/webui/www/private/images/flags/vi.svg @@ -8,11 +8,11 @@ - - + + - - + + @@ -21,8 +21,8 @@ - + - - + + diff --git a/src/webui/www/private/images/flags/vn.svg b/src/webui/www/private/images/flags/vn.svg index 24bedc503f8c..7e4bac8f4acf 100644 --- a/src/webui/www/private/images/flags/vn.svg +++ b/src/webui/www/private/images/flags/vn.svg @@ -4,7 +4,7 @@ - + diff --git a/src/webui/www/private/images/flags/vu.svg b/src/webui/www/private/images/flags/vu.svg index efcff89543b1..91e1236a0a9a 100644 --- a/src/webui/www/private/images/flags/vu.svg +++ b/src/webui/www/private/images/flags/vu.svg @@ -10,11 +10,11 @@ - + - + diff --git a/src/webui/www/private/images/flags/wf.svg b/src/webui/www/private/images/flags/wf.svg index 57feb3a59dbe..054c57df9972 100644 --- a/src/webui/www/private/images/flags/wf.svg +++ b/src/webui/www/private/images/flags/wf.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/xk.svg b/src/webui/www/private/images/flags/xk.svg index de6ef4da2855..551e7a414549 100644 --- a/src/webui/www/private/images/flags/xk.svg +++ b/src/webui/www/private/images/flags/xk.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/ye.svg b/src/webui/www/private/images/flags/ye.svg index 61f0ed610004..1c9e6d6392f8 100644 --- a/src/webui/www/private/images/flags/ye.svg +++ b/src/webui/www/private/images/flags/ye.svg @@ -2,6 +2,6 @@ - + diff --git a/src/webui/www/private/images/flags/yt.svg b/src/webui/www/private/images/flags/yt.svg index 5ea2f648cb92..e7776b307879 100644 --- a/src/webui/www/private/images/flags/yt.svg +++ b/src/webui/www/private/images/flags/yt.svg @@ -1,5 +1,5 @@ - - + + diff --git a/src/webui/www/private/images/flags/za.svg b/src/webui/www/private/images/flags/za.svg index aa54beb87dab..d563adb90c0c 100644 --- a/src/webui/www/private/images/flags/za.svg +++ b/src/webui/www/private/images/flags/za.svg @@ -4,14 +4,14 @@ - + - + - - + + - + diff --git a/src/webui/www/private/images/flags/zm.svg b/src/webui/www/private/images/flags/zm.svg index b8fdd63cb7de..13239f5e23f7 100644 --- a/src/webui/www/private/images/flags/zm.svg +++ b/src/webui/www/private/images/flags/zm.svg @@ -4,17 +4,17 @@ - + - + - - + + diff --git a/src/webui/www/private/images/flags/zw.svg b/src/webui/www/private/images/flags/zw.svg index 5c1974693f94..6399ab4ab3ee 100644 --- a/src/webui/www/private/images/flags/zw.svg +++ b/src/webui/www/private/images/flags/zw.svg @@ -8,14 +8,14 @@ - + - - + + - + diff --git a/src/webui/www/private/images/ip-blocked.svg b/src/webui/www/private/images/ip-blocked.svg new file mode 100644 index 000000000000..a79057787df4 --- /dev/null +++ b/src/webui/www/private/images/ip-blocked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/network-connect.svg b/src/webui/www/private/images/network-connect.svg new file mode 100644 index 000000000000..392ee8ab4a8c --- /dev/null +++ b/src/webui/www/private/images/network-connect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/network-server.svg b/src/webui/www/private/images/network-server.svg new file mode 100644 index 000000000000..f302762d4818 --- /dev/null +++ b/src/webui/www/private/images/network-server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/object-locked.svg b/src/webui/www/private/images/object-locked.svg new file mode 100644 index 000000000000..e1244412229d --- /dev/null +++ b/src/webui/www/private/images/object-locked.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/pause-session.svg b/src/webui/www/private/images/pause-session.svg new file mode 100644 index 000000000000..6a6f574f0779 --- /dev/null +++ b/src/webui/www/private/images/pause-session.svg @@ -0,0 +1 @@ + diff --git a/src/webui/www/private/images/paused.svg b/src/webui/www/private/images/paused.svg new file mode 100644 index 000000000000..06140f8835d7 --- /dev/null +++ b/src/webui/www/private/images/paused.svg @@ -0,0 +1 @@ + diff --git a/src/webui/www/private/images/peers.svg b/src/webui/www/private/images/peers.svg new file mode 100644 index 000000000000..bb498906674b --- /dev/null +++ b/src/webui/www/private/images/peers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/plugins.svg b/src/webui/www/private/images/plugins.svg new file mode 100644 index 000000000000..09a0a560e91f --- /dev/null +++ b/src/webui/www/private/images/plugins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/preferences-advanced.svg b/src/webui/www/private/images/preferences-advanced.svg new file mode 100644 index 000000000000..8fedd2e52040 --- /dev/null +++ b/src/webui/www/private/images/preferences-advanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/preferences-bittorrent.svg b/src/webui/www/private/images/preferences-bittorrent.svg new file mode 100644 index 000000000000..18d28e841253 --- /dev/null +++ b/src/webui/www/private/images/preferences-bittorrent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/preferences-desktop.svg b/src/webui/www/private/images/preferences-desktop.svg new file mode 100644 index 000000000000..c905c01f8ffc --- /dev/null +++ b/src/webui/www/private/images/preferences-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/preferences-webui.svg b/src/webui/www/private/images/preferences-webui.svg new file mode 100644 index 000000000000..d9619d7db661 --- /dev/null +++ b/src/webui/www/private/images/preferences-webui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/webui/www/private/images/regex.svg b/src/webui/www/private/images/regex.svg new file mode 100644 index 000000000000..323c23c50c84 --- /dev/null +++ b/src/webui/www/private/images/regex.svg @@ -0,0 +1 @@ + diff --git a/src/webui/www/private/images/slow.svg b/src/webui/www/private/images/slow.svg index f721bd639949..68aa27b325ab 100644 --- a/src/webui/www/private/images/slow.svg +++ b/src/webui/www/private/images/slow.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/webui/www/private/images/slow_off.svg b/src/webui/www/private/images/slow_off.svg index ce913cd61fdd..fe6ca9b1ff0a 100644 --- a/src/webui/www/private/images/slow_off.svg +++ b/src/webui/www/private/images/slow_off.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/src/webui/www/private/images/stopped.svg b/src/webui/www/private/images/stopped.svg index 06140f8835d7..c113984d117c 100644 --- a/src/webui/www/private/images/stopped.svg +++ b/src/webui/www/private/images/stopped.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/webui/www/private/images/tabs.gif b/src/webui/www/private/images/tabs.gif deleted file mode 100644 index c8b5b0c6439d..000000000000 Binary files a/src/webui/www/private/images/tabs.gif and /dev/null differ diff --git a/src/webui/www/private/images/torrent-stop.svg b/src/webui/www/private/images/torrent-stop.svg index 6a6f574f0779..a5ebe582bb3e 100644 --- a/src/webui/www/private/images/torrent-stop.svg +++ b/src/webui/www/private/images/torrent-stop.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/webui/www/private/index.html b/src/webui/www/private/index.html index 768ffac2f406..da0b74d7e876 100644 --- a/src/webui/www/private/index.html +++ b/src/webui/www/private/index.html @@ -1,43 +1,51 @@ - + + - - - - qBittorrent Web UI - - - - - - - - - + + + + + + + qBittorrent WebUI + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + +
    @@ -49,81 +57,97 @@

    qBittorrent Web User Interface QBT_TR(File)QBT_TR[CONTEXT=MainWindow]
  • QBT_TR(Edit)QBT_TR[CONTEXT=MainWindow]
  • QBT_TR(View)QBT_TR[CONTEXT=MainWindow]
  • QBT_TR(Tools)QBT_TR[CONTEXT=MainWindow]
  • QBT_TR(Help)QBT_TR[CONTEXT=MainWindow]
   - QBT_TR(Add Torrent Link...)QBT_TR[CONTEXT=MainWindow] - QBT_TR(Add Torrent File...)QBT_TR[CONTEXT=MainWindow] - QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget] - QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget] - QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Add Torrent Link...)QBT_TR[CONTEXT=MainWindow] + QBT_TR(Add Torrent File...)QBT_TR[CONTEXT=MainWindow] + QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Start)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Stop)QBT_TR[CONTEXT=TransferListWidget] - QBT_TR(Top of Queue)QBT_TR[CONTEXT=MainWindow] - QBT_TR(Move Up Queue)QBT_TR[CONTEXT=MainWindow] - QBT_TR(Move Down Queue)QBT_TR[CONTEXT=MainWindow] - QBT_TR(Bottom of Queue)QBT_TR[CONTEXT=MainWindow] + QBT_TR(Top of Queue)QBT_TR[CONTEXT=MainWindow] + QBT_TR(Move Up Queue)QBT_TR[CONTEXT=MainWindow] + QBT_TR(Move Down Queue)QBT_TR[CONTEXT=MainWindow] + QBT_TR(Bottom of Queue)QBT_TR[CONTEXT=MainWindow] - QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog] + QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]
- + + + + +
@@ -131,98 +155,110 @@

qBittorrent Web User Interface -
  • QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]
  • -
  • QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]
  • -
  • QBT_TR(Force Resume)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Force Resume)QBT_TR[CONTEXT=TransferListWidget]
  • -
  • QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget]
  • +
  • QBT_TR(Start)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Start)QBT_TR[CONTEXT=TransferListWidget]
  • +
  • QBT_TR(Stop)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Stop)QBT_TR[CONTEXT=TransferListWidget]
  • +
  • QBT_TR(Force Start)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Force Start)QBT_TR[CONTEXT=TransferListWidget]
  • +
  • QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget]
  • - QBT_TR(Set location...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Set location...)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Set location...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Set location...)QBT_TR[CONTEXT=TransferListWidget]
  • - QBT_TR(Rename...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Rename...)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Rename...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Rename...)QBT_TR[CONTEXT=TransferListWidget]
  • - QBT_TR(Rename Files...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Rename Files...)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Rename Files...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Rename Files...)QBT_TR[CONTEXT=TransferListWidget]
  • - QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]
    • - QBT_TR(Tags)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Tags)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Tags)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Tags)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • - QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget] +
      • + QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Limit download rate...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Limit download rate...)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Super seeding mode)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Super seeding mode)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]
      • -
      • QBT_TR(Force reannounce)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Force reannounce)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Limit download rate...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Limit download rate...)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Super seeding mode)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Super seeding mode)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]
      • +
      • QBT_TR(Force reannounce)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Force reannounce)QBT_TR[CONTEXT=TransferListWidget]
      • - QBT_TR(Queue)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Queue)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Queue)QBT_TR[CONTEXT=TransferListWidget]
      • - QBT_TR(Copy)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Copy)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Copy)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Copy)QBT_TR[CONTEXT=TransferListWidget]
      • - QBT_TR(Export .torrent)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Export .torrent)QBT_TR[CONTEXT=TransferListWidget] + QBT_TR(Export .torrent)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Export .torrent)QBT_TR[CONTEXT=TransferListWidget]
      • + +
          -
        • QBT_TR(Rename...)QBT_TR[CONTEXT=PropertiesWidget] QBT_TR(Rename...)QBT_TR[CONTEXT=PropertiesWidget]
        • +
        • QBT_TR(Rename...)QBT_TR[CONTEXT=PropertiesWidget] QBT_TR(Rename...)QBT_TR[CONTEXT=PropertiesWidget]
        • QBT_TR(Priority)QBT_TR[CONTEXT=PropertiesWidget]
          - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
          QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]QBT_TR(Download speed icon)QBT_TR[CONTEXT=MainWindow]QBT_TR(Upload speed icon)QBT_TR[CONTEXT=MainWindow]
          QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]QBT_TR(Download speed icon)QBT_TR[CONTEXT=MainWindow]QBT_TR(Upload speed icon)QBT_TR[CONTEXT=MainWindow]
          diff --git a/src/webui/www/private/newcategory.html b/src/webui/www/private/newcategory.html index 63186e013ddb..b2ec949fa66f 100644 --- a/src/webui/www/private/newcategory.html +++ b/src/webui/www/private/newcategory.html @@ -1,64 +1,64 @@ - + - + QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget] - + + + +
          -

          QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]:

          - -

          QBT_TR(Save path)QBT_TR[CONTEXT=TransferListWidget]:

          - + + + +
          - +
          diff --git a/src/webui/www/private/newfeed.html b/src/webui/www/private/newfeed.html index 4f6204a9dc57..b3815a63ee39 100644 --- a/src/webui/www/private/newfeed.html +++ b/src/webui/www/private/newfeed.html @@ -1,65 +1,65 @@ - + - + QBT_TR(Please type a RSS feed URL)QBT_TR[CONTEXT=RSSWidget] - + + + @@ -67,10 +67,10 @@
          -

          QBT_TR(Feed URL:)QBT_TR[CONTEXT=RSSWidget]

          - + +
          - +
          diff --git a/src/webui/www/private/newfolder.html b/src/webui/www/private/newfolder.html index cc1259b8db0b..30db4c450f3d 100644 --- a/src/webui/www/private/newfolder.html +++ b/src/webui/www/private/newfolder.html @@ -1,75 +1,78 @@ - + - + QBT_TR(Please choose a folder name)QBT_TR[CONTEXT=RSSWidget] - + + + +
          -

          QBT_TR(Folder name:)QBT_TR[CONTEXT=RSSWidget]

          - + +
          - +
          diff --git a/src/webui/www/private/newrule.html b/src/webui/www/private/newrule.html index 99cb8ba787e8..18f03a154259 100644 --- a/src/webui/www/private/newrule.html +++ b/src/webui/www/private/newrule.html @@ -1,57 +1,59 @@ - + - + QBT_TR(New rule name)QBT_TR[CONTEXT=AutomatedRssDownloader] - + + + @@ -59,10 +61,10 @@
          -

          QBT_TR(Please type the name of the new download rule.)QBT_TR[CONTEXT=AutomatedRssDownloader]

          - + +
          - +
          diff --git a/src/webui/www/private/newtag.html b/src/webui/www/private/newtag.html index 16b779ce3184..a8067fecceb4 100644 --- a/src/webui/www/private/newtag.html +++ b/src/webui/www/private/newtag.html @@ -1,52 +1,50 @@ - + - - QBT_TR(Add Tags)QBT_TR[CONTEXT=TransferListWidget] - + + QBT_TR(Add tags)QBT_TR[CONTEXT=TransferListWidget] + + + + + + + @@ -77,10 +76,10 @@
          -

          QBT_TR(New feed name:)QBT_TR[CONTEXT=RSSWidget]

          - + +
          - +
          diff --git a/src/webui/www/private/rename_file.html b/src/webui/www/private/rename_file.html index 49cdbada82c1..8cddc935b085 100644 --- a/src/webui/www/private/rename_file.html +++ b/src/webui/www/private/rename_file.html @@ -1,82 +1,83 @@ - + - + QBT_TR(Renaming)QBT_TR[CONTEXT=TorrentContentTreeView] - + + + @@ -84,10 +85,10 @@
          -

          QBT_TR(New name:)QBT_TR[CONTEXT=TorrentContentTreeView]

          - + +
          - +
          diff --git a/src/webui/www/private/rename_files.html b/src/webui/www/private/rename_files.html index 01ede024cc66..f8eefa009bfb 100644 --- a/src/webui/www/private/rename_files.html +++ b/src/webui/www/private/rename_files.html @@ -2,7 +2,7 @@ - + QBT_TR(Renaming)QBT_TR[CONTEXT=TorrentContentTreeView] @@ -12,404 +12,394 @@ @@ -417,58 +407,58 @@
          - +

          - +
          - +
          - +
          - +

          - - +
          - +
          - +
          - +
          -
          +

          -
          -
          +
          diff --git a/src/webui/www/private/rename_rule.html b/src/webui/www/private/rename_rule.html index cbc252c3c8d4..dc0c39b75a42 100644 --- a/src/webui/www/private/rename_rule.html +++ b/src/webui/www/private/rename_rule.html @@ -1,68 +1,70 @@ - + - + QBT_TR(Rule renaming)QBT_TR[CONTEXT=AutomatedRssDownloader] - + + + @@ -70,10 +72,10 @@
          -

          QBT_TR(Please type the new rule name)QBT_TR[CONTEXT=AutomatedRssDownloader]

          - + +
          - +
          diff --git a/src/webui/www/private/scripts/cache.js b/src/webui/www/private/scripts/cache.js new file mode 100644 index 000000000000..3b93c8757276 --- /dev/null +++ b/src/webui/www/private/scripts/cache.js @@ -0,0 +1,177 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Mike Tzou (Chocobo1) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +"use strict"; + +window.qBittorrent ??= {}; +window.qBittorrent.Cache ??= (() => { + const exports = () => { + return { + buildInfo: new BuildInfoCache(), + preferences: new PreferencesCache(), + qbtVersion: new QbtVersionCache() + }; + }; + + const deepFreeze = (obj) => { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#examples + + const keys = Reflect.ownKeys(obj); + for (const key of keys) { + const value = obj[key]; + if ((value && (typeof value === "object")) || (typeof value === "function")) + deepFreeze(value); + } + Object.freeze(obj); + }; + + class BuildInfoCache { + #m_store = {}; + + async init() { + return fetch("api/v2/app/buildInfo", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const responseJSON = await response.json(); + deepFreeze(responseJSON); + this.#m_store = responseJSON; + }); + } + + get() { + return this.#m_store; + } + } + + class PreferencesCache { + #m_store = {}; + + // obj: { + // onFailure: () => {}, + // onSuccess: () => {} + // } + async init(obj = {}) { + return fetch("api/v2/app/preferences", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const responseText = await response.text(); + const responseJSON = JSON.parse(responseText); + deepFreeze(responseJSON); + this.#m_store = responseJSON; + + if (typeof obj.onSuccess === "function") + obj.onSuccess(responseJSON, responseText); + }, + (error) => { + if (typeof obj.onFailure === "function") + obj.onFailure(error); + }); + } + + get() { + return this.#m_store; + } + + // obj: { + // data: {}, + // onFailure: () => {}, + // onSuccess: () => {} + // } + set(obj) { + if (typeof obj !== "object") + throw new Error("`obj` is not an object."); + if (typeof obj.data !== "object") + throw new Error("`data` is not an object."); + + fetch("api/v2/app/setPreferences", { + method: "POST", + body: new URLSearchParams({ + json: JSON.stringify(obj.data) + }) + }) + .then(async (response) => { + if (!response.ok) + return; + + this.#m_store = structuredClone(this.#m_store); + for (const key in obj.data) { + if (!Object.hasOwn(obj.data, key)) + continue; + + const value = obj.data[key]; + this.#m_store[key] = value; + } + deepFreeze(this.#m_store); + + if (typeof obj.onSuccess === "function") { + const responseText = await response.text(); + obj.onSuccess(responseText); + } + }, + (error) => { + if (typeof obj.onFailure === "function") + obj.onFailure(error); + }); + } + } + + class QbtVersionCache { + #m_store = ""; + + async init() { + return fetch("api/v2/app/version", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const responseText = await response.text(); + this.#m_store = responseText; + }); + } + + get() { + return this.#m_store; + } + } + + return exports(); +})(); +Object.freeze(window.qBittorrent.Cache); diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index c4b8bebe82e4..8fd9de9edf4e 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -1,5 +1,6 @@ /* * MIT License + * Copyright (C) 2024 Mike Tzou (Chocobo1) * Copyright (c) 2008 Ishan Arora , * Christophe Dumez * @@ -22,280 +23,305 @@ * THE SOFTWARE. */ -'use strict'; +"use strict"; + +window.qBittorrent ??= {}; +window.qBittorrent.Client ??= (() => { + const exports = () => { + return { + setup: setup, + initializeCaches: initializeCaches, + closeWindow: closeWindow, + closeFrameWindow: closeFrameWindow, + getSyncMainDataInterval: getSyncMainDataInterval, + isStopped: isStopped, + stop: stop, + mainTitle: mainTitle, + showSearchEngine: showSearchEngine, + showRssReader: showRssReader, + showLogViewer: showLogViewer, + isShowSearchEngine: isShowSearchEngine, + isShowRssReader: isShowRssReader, + isShowLogViewer: isShowLogViewer + }; + }; + + let cacheAllSettled; + const setup = () => { + // fetch various data and store it in memory + cacheAllSettled = Promise.allSettled([ + window.qBittorrent.Cache.buildInfo.init(), + window.qBittorrent.Cache.preferences.init(), + window.qBittorrent.Cache.qbtVersion.init() + ]); + }; + + const initializeCaches = async () => { + const results = await cacheAllSettled; + for (const [idx, result] of results.entries()) { + if (result.status === "rejected") + console.error(`Failed to initialize cache. Index: ${idx}. Reason: "${result.reason}".`); + } + }; + + const closeWindow = (window) => { + MochaUI.closeWindow(window); + }; + + const closeFrameWindow = (window) => { + MochaUI.closeWindow(window.frameElement.closest("div.mocha")); + }; + + const getSyncMainDataInterval = () => { + return customSyncMainDataInterval ? customSyncMainDataInterval : serverSyncMainDataInterval; + }; + + let stopped = false; + const isStopped = () => { + return stopped; + }; + + const stop = () => { + stopped = true; + }; + + const mainTitle = () => { + const emDash = "\u2014"; + const qbtVersion = window.qBittorrent.Cache.qbtVersion.get(); + let suffix = window.qBittorrent.Cache.preferences.get()["app_instance_name"] || ""; + if (suffix.length > 0) + suffix = ` ${emDash} ${suffix}`; + const title = `qBittorrent ${qbtVersion} QBT_TR(WebUI)QBT_TR[CONTEXT=OptionsDialog]${suffix}`; + return title; + }; + + let showingSearchEngine = false; + let showingRssReader = false; + let showingLogViewer = false; + + const showSearchEngine = (bool) => { + showingSearchEngine = bool; + }; + const showRssReader = (bool) => { + showingRssReader = bool; + }; + const showLogViewer = (bool) => { + showingLogViewer = bool; + }; + const isShowSearchEngine = () => { + return showingSearchEngine; + }; + const isShowRssReader = () => { + return showingRssReader; + }; + const isShowLogViewer = () => { + return showingLogViewer; + }; + + return exports(); +})(); +Object.freeze(window.qBittorrent.Client); + +window.qBittorrent.Client.setup(); + +// TODO: move global functions/variables into some namespace/scope this.torrentsTable = new window.qBittorrent.DynamicTable.TorrentsTable(); -let updatePropertiesPanel = function() {}; +let updatePropertiesPanel = () => {}; -this.updateMainData = function() {}; +this.updateMainData = () => {}; let alternativeSpeedLimits = false; let queueing_enabled = true; let serverSyncMainDataInterval = 1500; let customSyncMainDataInterval = null; let useSubcategories = true; -let searchTabInitialized = false; -let rssTabInitialized = false; -let logTabInitialized = false; - -let syncRequestInProgress = false; - -let clipboardEvent; +const useAutoHideZeroStatusFilters = LocalPreferences.get("hide_zero_status_filters", "false") === "true"; +const displayFullURLTrackerColumn = LocalPreferences.get("full_url_tracker_column", "false") === "true"; /* Categories filter */ -const CATEGORIES_ALL = 1; -const CATEGORIES_UNCATEGORIZED = 2; +const CATEGORIES_ALL = "b4af0e4c-e76d-4bac-a392-46cbc18d9655"; +const CATEGORIES_UNCATEGORIZED = "e24bd469-ea22-404c-8e2e-a17c82f37ea0"; -let category_list = {}; +// Map +const categoryMap = new Map(); -let selected_category = CATEGORIES_ALL; -let setCategoryFilter = function() {}; +let selectedCategory = LocalPreferences.get("selected_category", CATEGORIES_ALL); +let setCategoryFilter = () => {}; /* Tags filter */ -const TAGS_ALL = 1; -const TAGS_UNTAGGED = 2; +const TAGS_ALL = "b4af0e4c-e76d-4bac-a392-46cbc18d9655"; +const TAGS_UNTAGGED = "e24bd469-ea22-404c-8e2e-a17c82f37ea0"; -let tagList = {}; +// Map +const tagMap = new Map(); -let selectedTag = TAGS_ALL; -let setTagFilter = function() {}; +let selectedTag = LocalPreferences.get("selected_tag", TAGS_ALL); +let setTagFilter = () => {}; /* Trackers filter */ -const TRACKERS_ALL = 1; -const TRACKERS_TRACKERLESS = 2; +const TRACKERS_ALL = "b4af0e4c-e76d-4bac-a392-46cbc18d9655"; +const TRACKERS_TRACKERLESS = "e24bd469-ea22-404c-8e2e-a17c82f37ea0"; -const trackerList = new Map(); +// Map> +const trackerMap = new Map(); -let selectedTracker = TRACKERS_ALL; -let setTrackerFilter = function() {}; +let selectedTracker = LocalPreferences.get("selected_tracker", TRACKERS_ALL); +let setTrackerFilter = () => {}; /* All filters */ -let selected_filter = LocalPreferences.get('selected_filter', 'all'); -let setFilter = function() {}; -let toggleFilterDisplay = function() {}; - -const loadSelectedCategory = function() { - selected_category = LocalPreferences.get('selected_category', CATEGORIES_ALL); -}; -loadSelectedCategory(); - -const loadSelectedTag = function() { - selectedTag = LocalPreferences.get('selected_tag', TAGS_ALL); -}; -loadSelectedTag(); - -const loadSelectedTracker = function() { - selectedTracker = LocalPreferences.get('selected_tracker', TRACKERS_ALL); -}; -loadSelectedTracker(); - -const getShowFiltersSidebar = function() { - // Show Filters Sidebar is enabled by default - const show = LocalPreferences.get('show_filters_sidebar'); - return (show === null) || (show === 'true'); -}; - -// getHost emulate the GUI version `QString getHost(const QString &url)` -function getHost(url) { - // We want the hostname. - // If failed to parse the domain, original input should be returned - - if (!/^(?:https?|udp):/i.test(url)) { - return url; - } - - try { - // hack: URL can not get hostname from udp protocol - const parsedUrl = new URL(url.replace(/^udp:/i, 'https:')); - // host: "example.com:8443" - // hostname: "example.com" - const host = parsedUrl.hostname; - if (!host) { - return url; - } - - return host; - } - catch (error) { - return url; - } -} - -function genHash(string) { - // origins: - // https://stackoverflow.com/a/8831937 - // https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0 - let hash = 0; - for (let i = 0; i < string.length; ++i) - hash = ((Math.imul(hash, 31) + string.charCodeAt(i)) | 0); - return hash; -} - -function getSyncMainDataInterval() { - return customSyncMainDataInterval ? customSyncMainDataInterval : serverSyncMainDataInterval; -} - -const fetchQbtVersion = function() { - new Request({ - url: 'api/v2/app/version', - method: 'get', - onSuccess: function(info) { - if (!info) - return; - sessionStorage.setItem('qbtVersion', info); - } - }).send(); -}; -fetchQbtVersion(); - -const qbtVersion = function() { - const version = sessionStorage.getItem('qbtVersion'); - if (!version) - return ''; - return version; -}; - -window.addEvent('load', function() { - const saveColumnSizes = function() { - const filters_width = $('Filters').getSize().x; - const properties_height_rel = $('propertiesPanel').getSize().y / Window.getSize().y; - LocalPreferences.set('filters_width', filters_width); - LocalPreferences.set('properties_height_rel', properties_height_rel); +let selectedStatus = LocalPreferences.get("selected_filter", "all"); +let setStatusFilter = () => {}; +let toggleFilterDisplay = () => {}; + +window.addEventListener("DOMContentLoaded", () => { + let isSearchPanelLoaded = false; + let isLogPanelLoaded = false; + let isRssPanelLoaded = false; + + const saveColumnSizes = () => { + const filters_width = $("Filters").getSize().x; + LocalPreferences.set("filters_width", filters_width); + const properties_height_rel = $("propertiesPanel").getSize().y / Window.getSize().y; + LocalPreferences.set("properties_height_rel", properties_height_rel); }; - window.addEvent('resize', function() { + window.addEventListener("resize", window.qBittorrent.Misc.createDebounceHandler(500, (e) => { // only save sizes if the columns are visible - if (!$("mainColumn").hasClass("invisible")) - saveColumnSizes.delay(200); // Resizing might takes some time. - }); + if (!$("mainColumn").classList.contains("invisible")) + saveColumnSizes(); + })); - /*MochaUI.Desktop = new MochaUI.Desktop(); - MochaUI.Desktop.desktop.setStyles({ - 'background': '#fff', - 'visibility': 'visible' - });*/ + /* MochaUI.Desktop = new MochaUI.Desktop(); + MochaUI.Desktop.desktop.style.background = "#fff"; + MochaUI.Desktop.desktop.style.visibility = "visible"; */ MochaUI.Desktop.initialize(); - const buildTransfersTab = function() { - let filt_w = LocalPreferences.get('filters_width'); - if ($defined(filt_w)) - filt_w = filt_w.toInt(); - else - filt_w = 120; + const buildTransfersTab = () => { new MochaUI.Column({ - id: 'filtersColumn', - placement: 'left', - onResize: saveColumnSizes, - width: filt_w, - resizeLimit: [1, 300] + id: "filtersColumn", + placement: "left", + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { + saveColumnSizes(); + }), + width: Number(LocalPreferences.get("filters_width", 210)), + resizeLimit: [1, 1000] }); - new MochaUI.Column({ - id: 'mainColumn', - placement: 'main' + id: "mainColumn", + placement: "main" }); }; - const buildSearchTab = function() { + const buildSearchTab = () => { new MochaUI.Column({ - id: 'searchTabColumn', - placement: 'main', + id: "searchTabColumn", + placement: "main", width: null }); // start off hidden - $("searchTabColumn").addClass("invisible"); + $("searchTabColumn").classList.add("invisible"); }; - const buildRssTab = function() { + const buildRssTab = () => { new MochaUI.Column({ - id: 'rssTabColumn', - placement: 'main', + id: "rssTabColumn", + placement: "main", width: null }); // start off hidden - $("rssTabColumn").addClass("invisible"); + $("rssTabColumn").classList.add("invisible"); }; - const buildLogTab = function() { + const buildLogTab = () => { new MochaUI.Column({ - id: 'logTabColumn', - placement: 'main', + id: "logTabColumn", + placement: "main", width: null }); // start off hidden - $('logTabColumn').addClass('invisible'); + $("logTabColumn").classList.add("invisible"); }; buildTransfersTab(); buildSearchTab(); buildRssTab(); buildLogTab(); - MochaUI.initializeTabs('mainWindowTabsList'); + MochaUI.initializeTabs("mainWindowTabsList"); + + const handleFilterSelectionChange = (prevSelectedTorrent, currSelectedTorrent) => { + // clear properties panels when filter changes (e.g. selected torrent is no longer visible) + if (prevSelectedTorrent !== currSelectedTorrent) { + window.qBittorrent.PropGeneral.clear(); + window.qBittorrent.PropTrackers.clear(); + window.qBittorrent.PropPeers.clear(); + window.qBittorrent.PropWebseeds.clear(); + window.qBittorrent.PropFiles.clear(); + } + }; - setCategoryFilter = function(hash) { - selected_category = hash; - LocalPreferences.set('selected_category', selected_category); + setStatusFilter = (name) => { + const currentHash = torrentsTable.getCurrentTorrentID(); + + LocalPreferences.set("selected_filter", name); + selectedStatus = name; + highlightSelectedStatus(); + updateMainData(); + + const newHash = torrentsTable.getCurrentTorrentID(); + handleFilterSelectionChange(currentHash, newHash); + }; + + setCategoryFilter = (category) => { + const currentHash = torrentsTable.getCurrentTorrentID(); + + LocalPreferences.set("selected_category", category); + selectedCategory = category; highlightSelectedCategory(); - if (typeof torrentsTable.tableBody != 'undefined') - updateMainData(); + updateMainData(); + + const newHash = torrentsTable.getCurrentTorrentID(); + handleFilterSelectionChange(currentHash, newHash); }; - setTagFilter = function(hash) { - selectedTag = hash.toString(); - LocalPreferences.set('selected_tag', selectedTag); + setTagFilter = (tag) => { + const currentHash = torrentsTable.getCurrentTorrentID(); + + LocalPreferences.set("selected_tag", tag); + selectedTag = tag; highlightSelectedTag(); - if (torrentsTable.tableBody !== undefined) - updateMainData(); + updateMainData(); + + const newHash = torrentsTable.getCurrentTorrentID(); + handleFilterSelectionChange(currentHash, newHash); }; - setTrackerFilter = function(hash) { - selectedTracker = hash.toString(); - LocalPreferences.set('selected_tracker', selectedTracker); + setTrackerFilter = (tracker) => { + const currentHash = torrentsTable.getCurrentTorrentID(); + + LocalPreferences.set("selected_tracker", tracker); + selectedTracker = tracker; highlightSelectedTracker(); - if (torrentsTable.tableBody !== undefined) - updateMainData(); - }; + updateMainData(); - setFilter = function(f) { - // Visually Select the right filter - $("all_filter").removeClass("selectedFilter"); - $("downloading_filter").removeClass("selectedFilter"); - $("seeding_filter").removeClass("selectedFilter"); - $("completed_filter").removeClass("selectedFilter"); - $("paused_filter").removeClass("selectedFilter"); - $("resumed_filter").removeClass("selectedFilter"); - $("active_filter").removeClass("selectedFilter"); - $("inactive_filter").removeClass("selectedFilter"); - $("stalled_filter").removeClass("selectedFilter"); - $("stalled_uploading_filter").removeClass("selectedFilter"); - $("stalled_downloading_filter").removeClass("selectedFilter"); - $("checking_filter").removeClass("selectedFilter"); - $("moving_filter").removeClass("selectedFilter"); - $("errored_filter").removeClass("selectedFilter"); - $(f + "_filter").addClass("selectedFilter"); - selected_filter = f; - LocalPreferences.set('selected_filter', f); - // Reload torrents - if (typeof torrentsTable.tableBody != 'undefined') - updateMainData(); + const newHash = torrentsTable.getCurrentTorrentID(); + handleFilterSelectionChange(currentHash, newHash); }; - toggleFilterDisplay = function(filter) { - const element = filter + "FilterList"; - LocalPreferences.set('filter_' + filter + "_collapsed", !$(element).hasClass("invisible")); - $(element).toggleClass("invisible"); - const parent = $(element).getParent(".filterWrapper"); - const toggleIcon = $(parent).getChildren(".filterTitle img"); - if (toggleIcon) - toggleIcon[0].toggleClass("rotate"); + toggleFilterDisplay = (filterListID) => { + const filterList = document.getElementById(filterListID); + const filterTitle = filterList.previousElementSibling; + const toggleIcon = filterTitle.firstElementChild; + toggleIcon.classList.toggle("rotate"); + LocalPreferences.set(`filter_${filterListID.replace("FilterList", "")}_collapsed`, filterList.classList.toggle("invisible").toString()); }; new MochaUI.Panel({ - id: 'Filters', - title: 'Panel', + id: "Filters", + title: "Panel", header: false, padding: { top: 0, @@ -303,49 +329,46 @@ window.addEvent('load', function() { bottom: 0, left: 0 }, - loadMethod: 'xhr', - contentURL: 'views/filters.html', - onContentLoaded: function() { - setFilter(selected_filter); + loadMethod: "xhr", + contentURL: "views/filters.html", + onContentLoaded: () => { + highlightSelectedStatus(); }, - column: 'filtersColumn', + column: "filtersColumn", height: 300 }); initializeWindows(); // Show Top Toolbar is enabled by default - let showTopToolbar = true; - if (LocalPreferences.get('show_top_toolbar') !== null) - showTopToolbar = LocalPreferences.get('show_top_toolbar') == "true"; + let showTopToolbar = LocalPreferences.get("show_top_toolbar", "true") === "true"; if (!showTopToolbar) { - $('showTopToolbarLink').firstChild.style.opacity = '0'; - $('mochaToolbar').addClass('invisible'); + $("showTopToolbarLink").firstElementChild.style.opacity = "0"; + $("mochaToolbar").classList.add("invisible"); } // Show Status Bar is enabled by default - let showStatusBar = true; - if (LocalPreferences.get('show_status_bar') !== null) - showStatusBar = LocalPreferences.get('show_status_bar') === "true"; + let showStatusBar = LocalPreferences.get("show_status_bar", "true") === "true"; if (!showStatusBar) { - $('showStatusBarLink').firstChild.style.opacity = '0'; - $('desktopFooterWrapper').addClass('invisible'); + $("showStatusBarLink").firstElementChild.style.opacity = "0"; + $("desktopFooterWrapper").classList.add("invisible"); } - const showFiltersSidebar = getShowFiltersSidebar(); + // Show Filters Sidebar is enabled by default + let showFiltersSidebar = LocalPreferences.get("show_filters_sidebar", "true") === "true"; if (!showFiltersSidebar) { - $('showFiltersSidebarLink').firstChild.style.opacity = '0'; - $('filtersColumn').addClass('invisible'); - $('filtersColumn_handle').addClass('invisible'); + $("showFiltersSidebarLink").firstElementChild.style.opacity = "0"; + $("filtersColumn").classList.add("invisible"); + $("filtersColumn_handle").classList.add("invisible"); } - let speedInTitle = LocalPreferences.get('speed_in_browser_title_bar') == "true"; + let speedInTitle = LocalPreferences.get("speed_in_browser_title_bar") === "true"; if (!speedInTitle) - $('speedInBrowserTitleBarLink').firstChild.style.opacity = '0'; + $("speedInBrowserTitleBarLink").firstElementChild.style.opacity = "0"; // After showing/hiding the toolbar + status bar - let showSearchEngine = LocalPreferences.get('show_search_engine') !== "false"; - let showRssReader = LocalPreferences.get('show_rss_reader') !== "false"; - let showLogViewer = LocalPreferences.get('show_log_viewer') === 'true'; + window.qBittorrent.Client.showSearchEngine(LocalPreferences.get("show_search_engine") !== "false"); + window.qBittorrent.Client.showRssReader(LocalPreferences.get("show_rss_reader") !== "false"); + window.qBittorrent.Client.showLogViewer(LocalPreferences.get("show_log_viewer") === "true"); // After Show Top Toolbar MochaUI.Desktop.setDesktopSize(); @@ -353,564 +376,697 @@ window.addEvent('load', function() { let syncMainDataLastResponseId = 0; const serverState = {}; - const removeTorrentFromCategoryList = function(hash) { - if (hash === null || hash === "") + const removeTorrentFromCategoryList = (hash) => { + if (hash === undefined) return false; + let removed = false; - Object.each(category_list, function(category) { - if (Object.contains(category.torrents, hash)) { - removed = true; - category.torrents.splice(category.torrents.indexOf(hash), 1); - } - }); + for (const data of categoryMap.values()) + removed ||= data.torrents.delete(hash); return removed; }; - const addTorrentToCategoryList = function(torrent) { - const category = torrent['category']; - if (typeof category === 'undefined') + const addTorrentToCategoryList = (torrent) => { + const category = torrent["category"]; + if (category === undefined) return false; + + const hash = torrent["hash"]; if (category.length === 0) { // Empty category - removeTorrentFromCategoryList(torrent['hash']); + removeTorrentFromCategoryList(hash); return true; } - const categoryHash = genHash(category); - if (!category_list[categoryHash]) // This should not happen - category_list[categoryHash] = { - name: category, - torrents: [] + + let categoryData = categoryMap.get(category); + if (categoryData === undefined) { // This should not happen + categoryData = { + torrents: new Set() }; - if (!Object.contains(category_list[categoryHash].torrents, torrent['hash'])) { - removeTorrentFromCategoryList(torrent['hash']); - category_list[categoryHash].torrents = category_list[categoryHash].torrents.combine([torrent['hash']]); - return true; + categoryMap.set(category, categoryData); } - return false; + + if (categoryData.torrents.has(hash)) + return false; + + removeTorrentFromCategoryList(hash); + categoryData.torrents.add(hash); + return true; }; - const removeTorrentFromTagList = function(hash) { - if ((hash === null) || (hash === "")) + const removeTorrentFromTagList = (hash) => { + if (hash === undefined) return false; let removed = false; - for (const key in tagList) { - const tag = tagList[key]; - if (Object.contains(tag.torrents, hash)) { - removed = true; - tag.torrents.splice(tag.torrents.indexOf(hash), 1); - } - } + for (const torrents of tagMap.values()) + removed ||= torrents.delete(hash); return removed; }; - const addTorrentToTagList = function(torrent) { - if (torrent['tags'] === undefined) // Tags haven't changed + const addTorrentToTagList = (torrent) => { + if (torrent["tags"] === undefined) // Tags haven't changed return false; - removeTorrentFromTagList(torrent['hash']); + const hash = torrent["hash"]; + removeTorrentFromTagList(hash); - if (torrent['tags'].length === 0) // No tags + if (torrent["tags"].length === 0) // No tags return true; - const tags = torrent['tags'].split(','); + const tags = torrent["tags"].split(", "); let added = false; - for (let i = 0; i < tags.length; ++i) { - const tagHash = genHash(tags[i].trim()); - if (!tagList[tagHash]) { // This should not happen - tagList[tagHash] = { - name: tags, - torrents: [] - }; + for (const tag of tags) { + let torrents = tagMap.get(tag); + if (torrents === undefined) { // This should not happen + torrents = new Set(); + tagMap.set(tag, torrents); } - if (!Object.contains(tagList[tagHash].torrents, torrent['hash'])) { + + if (!torrents.has(hash)) { + torrents.add(hash); added = true; - tagList[tagHash].torrents.push(torrent['hash']); } } + return added; }; - const updateFilter = function(filter, filterTitle) { - $(filter + '_filter').firstChild.childNodes[1].nodeValue = filterTitle.replace('%1', torrentsTable.getFilteredTorrentsNumber(filter, CATEGORIES_ALL, TAGS_ALL, TRACKERS_ALL)); + const updateFilter = (filter, filterTitle) => { + const filterEl = document.getElementById(`${filter}_filter`); + const filterTorrentCount = torrentsTable.getFilteredTorrentsNumber(filter, CATEGORIES_ALL, TAGS_ALL, TRACKERS_ALL); + if (useAutoHideZeroStatusFilters) { + const hideFilter = (filterTorrentCount === 0) && (filter !== "all"); + if (filterEl.classList.toggle("invisible", hideFilter)) + return; + } + filterEl.firstElementChild.lastChild.textContent = filterTitle.replace("%1", filterTorrentCount); + }; + + const updateFiltersList = () => { + updateFilter("all", "QBT_TR(All (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("downloading", "QBT_TR(Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("seeding", "QBT_TR(Seeding (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("completed", "QBT_TR(Completed (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("running", "QBT_TR(Running (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("stopped", "QBT_TR(Stopped (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("active", "QBT_TR(Active (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("inactive", "QBT_TR(Inactive (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("stalled", "QBT_TR(Stalled (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("stalled_uploading", "QBT_TR(Stalled Uploading (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("stalled_downloading", "QBT_TR(Stalled Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("checking", "QBT_TR(Checking (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("moving", "QBT_TR(Moving (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); + updateFilter("errored", "QBT_TR(Errored (%1))QBT_TR[CONTEXT=StatusFilterWidget]"); }; - const updateFiltersList = function() { - updateFilter('all', 'QBT_TR(All (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('downloading', 'QBT_TR(Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('seeding', 'QBT_TR(Seeding (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('completed', 'QBT_TR(Completed (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('resumed', 'QBT_TR(Resumed (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('paused', 'QBT_TR(Paused (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('active', 'QBT_TR(Active (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('inactive', 'QBT_TR(Inactive (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('stalled', 'QBT_TR(Stalled (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('stalled_uploading', 'QBT_TR(Stalled Uploading (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('stalled_downloading', 'QBT_TR(Stalled Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('checking', 'QBT_TR(Checking (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('moving', 'QBT_TR(Moving (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); - updateFilter('errored', 'QBT_TR(Errored (%1))QBT_TR[CONTEXT=StatusFilterWidget]'); + const highlightSelectedStatus = () => { + const statusFilter = document.getElementById("statusFilterList"); + const filterID = `${selectedStatus}_filter`; + for (const status of statusFilter.children) + status.classList.toggle("selectedFilter", (status.id === filterID)); }; - const updateCategoryList = function() { - const categoryList = $('categoryFilterList'); + const updateCategoryList = () => { + const categoryList = document.getElementById("categoryFilterList"); if (!categoryList) return; - categoryList.empty(); - - const create_link = function(hash, text, count) { - let display_name = text; - let margin_left = 0; - if (useSubcategories) { - const category_path = text.split("/"); - display_name = category_path[category_path.length - 1]; - margin_left = (category_path.length - 1) * 20; - } - const html = '' - + '' - + window.qBittorrent.Misc.escapeHtml(display_name) + ' (' + count + ')' + ''; - const el = new Element('li', { - id: hash, - html: html - }); - window.qBittorrent.Filters.categoriesFilterContextMenu.addTarget(el); - return el; + [...categoryList.children].forEach((el) => { el.destroy(); }); + + const categoryItemTemplate = document.getElementById("categoryFilterItem"); + + const createLink = (category, text, count) => { + const categoryFilterItem = categoryItemTemplate.content.cloneNode(true).firstElementChild; + categoryFilterItem.id = category; + categoryFilterItem.classList.toggle("selectedFilter", (category === selectedCategory)); + + const span = categoryFilterItem.firstElementChild; + span.lastElementChild.textContent = `${text} (${count})`; + + return categoryFilterItem; + }; + + const createCategoryTree = (category) => { + const stack = [{ parent: categoriesFragment, category: category }]; + while (stack.length > 0) { + const { parent, category } = stack.pop(); + const displayName = category.nameSegments.at(-1); + const listItem = createLink(category.categoryName, displayName, category.categoryCount); + listItem.firstElementChild.style.paddingLeft = `${(category.nameSegments.length - 1) * 20 + 6}px`; + + parent.appendChild(listItem); + + if (category.children.length > 0) { + listItem.querySelector(".categoryToggle").style.visibility = "visible"; + const unorderedList = document.createElement("ul"); + listItem.appendChild(unorderedList); + for (const subcategory of category.children.reverse()) + stack.push({ parent: unorderedList, category: subcategory }); + } + const categoryLocalPref = `category_${category.categoryName}_collapsed`; + const isCollapsed = !category.forceExpand && (LocalPreferences.get(categoryLocalPref, "false") === "true"); + LocalPreferences.set(categoryLocalPref, listItem.classList.toggle("collapsedCategory", isCollapsed).toString()); + } }; - const all = torrentsTable.getRowIds().length; let uncategorized = 0; - Object.each(torrentsTable.rows, function(row) { - if (row['full_data'].category.length === 0) + for (const { full_data: { category } } of torrentsTable.getRowValues()) { + if (category.length === 0) uncategorized += 1; - }); - categoryList.appendChild(create_link(CATEGORIES_ALL, 'QBT_TR(All)QBT_TR[CONTEXT=CategoryFilterModel]', all)); - categoryList.appendChild(create_link(CATEGORIES_UNCATEGORIZED, 'QBT_TR(Uncategorized)QBT_TR[CONTEXT=CategoryFilterModel]', uncategorized)); + } const sortedCategories = []; - Object.each(category_list, function(category) { - sortedCategories.push(category.name); - }); - sortedCategories.sort(function(category1, category2) { - for (let i = 0; i < Math.min(category1.length, category2.length); ++i) { - if (category1[i] === "/" && category2[i] !== "/") { - return -1; - } - else if (category1[i] !== "/" && category2[i] === "/") { - return 1; - } - else if (category1[i] !== category2[i]) { - return category1[i].localeCompare(category2[i]); - } + for (const [category, categoryData] of categoryMap) { + sortedCategories.push({ + categoryName: category, + categoryCount: categoryData.torrents.size, + nameSegments: category.split("/"), + ...(useSubcategories && { + children: [], + isRoot: true, + forceExpand: LocalPreferences.get(`category_${category}_collapsed`) === null + }) + }); + } + sortedCategories.sort((left, right) => { + const leftSegments = left.nameSegments; + const rightSegments = right.nameSegments; + + for (let i = 0, iMax = Math.min(leftSegments.length, rightSegments.length); i < iMax; ++i) { + const compareResult = window.qBittorrent.Misc.naturalSortCollator.compare( + leftSegments[i], rightSegments[i]); + if (compareResult !== 0) + return compareResult; } - return category1.length - category2.length; + return leftSegments.length - rightSegments.length; }); - for (let i = 0; i < sortedCategories.length; ++i) { - const categoryName = sortedCategories[i]; - const categoryHash = genHash(categoryName); - let categoryCount = category_list[categoryHash].torrents.length; - - if (useSubcategories) { - for (let j = i + 1; j < sortedCategories.length && sortedCategories[j].startsWith(categoryName + "/"); ++j) { - const hash = genHash(sortedCategories[j]); - categoryCount += category_list[hash].torrents.length; + const categoriesFragment = new DocumentFragment(); + categoriesFragment.appendChild(createLink(CATEGORIES_ALL, "QBT_TR(All)QBT_TR[CONTEXT=CategoryFilterModel]", torrentsTable.getRowSize())); + categoriesFragment.appendChild(createLink(CATEGORIES_UNCATEGORIZED, "QBT_TR(Uncategorized)QBT_TR[CONTEXT=CategoryFilterModel]", uncategorized)); + + if (useSubcategories) { + categoryList.classList.add("subcategories"); + for (let i = 0; i < sortedCategories.length; ++i) { + const category = sortedCategories[i]; + for (let j = (i + 1); + ((j < sortedCategories.length) && sortedCategories[j].categoryName.startsWith(`${category.categoryName}/`)); ++j) { + const subcategory = sortedCategories[j]; + category.categoryCount += subcategory.categoryCount; + category.forceExpand ||= subcategory.forceExpand; + + const isDirectSubcategory = (subcategory.nameSegments.length - category.nameSegments.length) === 1; + if (isDirectSubcategory) { + subcategory.isRoot = false; + category.children.push(subcategory); + } } } - - categoryList.appendChild(create_link(categoryHash, categoryName, categoryCount)); + for (const category of sortedCategories) { + if (category.isRoot) + createCategoryTree(category); + } + } + else { + categoryList.classList.remove("subcategories"); + for (const { categoryName, categoryCount } of sortedCategories) + categoriesFragment.appendChild(createLink(categoryName, categoryName, categoryCount)); } - highlightSelectedCategory(); + categoryList.appendChild(categoriesFragment); + window.qBittorrent.Filters.categoriesFilterContextMenu.searchAndAddTargets(); }; - const highlightSelectedCategory = function() { - const categoryList = $('categoryFilterList'); + const highlightSelectedCategory = () => { + const categoryList = document.getElementById("categoryFilterList"); if (!categoryList) return; - const children = categoryList.childNodes; - for (let i = 0; i < children.length; ++i) { - if (children[i].id == selected_category) - children[i].className = "selectedFilter"; - else - children[i].className = ""; - } + + for (const category of categoryList.getElementsByTagName("li")) + category.classList.toggle("selectedFilter", (category.id === selectedCategory)); }; - const updateTagList = function() { - const tagFilterList = $('tagFilterList'); + const updateTagList = () => { + const tagFilterList = $("tagFilterList"); if (tagFilterList === null) return; - while (tagFilterList.firstChild !== null) - tagFilterList.removeChild(tagFilterList.firstChild); + [...tagFilterList.children].forEach((el) => { el.destroy(); }); - const createLink = function(hash, text, count) { - const html = '' - + '' - + window.qBittorrent.Misc.escapeHtml(text) + ' (' + count + ')' + ''; - const el = new Element('li', { - id: hash, - html: html - }); - window.qBittorrent.Filters.tagsFilterContextMenu.addTarget(el); - return el; + const tagItemTemplate = document.getElementById("tagFilterItem"); + + const createLink = (tag, text, count) => { + const tagFilterItem = tagItemTemplate.content.cloneNode(true).firstElementChild; + tagFilterItem.id = tag; + tagFilterItem.classList.toggle("selectedFilter", (tag === selectedTag)); + + const span = tagFilterItem.firstElementChild; + span.lastChild.textContent = `${text} (${count})`; + + return tagFilterItem; }; - const torrentsCount = torrentsTable.getRowIds().length; let untagged = 0; - for (const key in torrentsTable.rows) { - if (Object.prototype.hasOwnProperty.call(torrentsTable.rows, key) && (torrentsTable.rows[key]['full_data'].tags.length === 0)) + for (const { full_data: { tags } } of torrentsTable.getRowValues()) { + if (tags.length === 0) untagged += 1; } - tagFilterList.appendChild(createLink(TAGS_ALL, 'QBT_TR(All)QBT_TR[CONTEXT=TagFilterModel]', torrentsCount)); - tagFilterList.appendChild(createLink(TAGS_UNTAGGED, 'QBT_TR(Untagged)QBT_TR[CONTEXT=TagFilterModel]', untagged)); + + tagFilterList.appendChild(createLink(TAGS_ALL, "QBT_TR(All)QBT_TR[CONTEXT=TagFilterModel]", torrentsTable.getRowSize())); + tagFilterList.appendChild(createLink(TAGS_UNTAGGED, "QBT_TR(Untagged)QBT_TR[CONTEXT=TagFilterModel]", untagged)); const sortedTags = []; - for (const key in tagList) - sortedTags.push(tagList[key].name); - sortedTags.sort(); - - for (let i = 0; i < sortedTags.length; ++i) { - const tagName = sortedTags[i]; - const tagHash = genHash(tagName); - const tagCount = tagList[tagHash].torrents.length; - tagFilterList.appendChild(createLink(tagHash, tagName, tagCount)); + for (const [tag, torrents] of tagMap) { + sortedTags.push({ + tagName: tag, + tagSize: torrents.size + }); } + sortedTags.sort((left, right) => window.qBittorrent.Misc.naturalSortCollator.compare(left.tagName, right.tagName)); - highlightSelectedTag(); + for (const { tagName, tagSize } of sortedTags) + tagFilterList.appendChild(createLink(tagName, tagName, tagSize)); + + window.qBittorrent.Filters.tagsFilterContextMenu.searchAndAddTargets(); }; - const highlightSelectedTag = function() { - const tagFilterList = $('tagFilterList'); + const highlightSelectedTag = () => { + const tagFilterList = document.getElementById("tagFilterList"); if (!tagFilterList) return; - const children = tagFilterList.childNodes; - for (let i = 0; i < children.length; ++i) - children[i].className = (children[i].id === selectedTag) ? "selectedFilter" : ""; + for (const tag of tagFilterList.children) + tag.classList.toggle("selectedFilter", (tag.id === selectedTag)); }; - const updateTrackerList = function() { - const trackerFilterList = $('trackerFilterList'); + const updateTrackerList = () => { + const trackerFilterList = $("trackerFilterList"); if (trackerFilterList === null) return; - while (trackerFilterList.firstChild !== null) - trackerFilterList.removeChild(trackerFilterList.firstChild); + [...trackerFilterList.children].forEach((el) => { el.destroy(); }); - const createLink = function(hash, text, count) { - const html = '' - + '' - + window.qBittorrent.Misc.escapeHtml(text.replace("%1", count)) + ''; - const el = new Element('li', { - id: hash, - html: html - }); - window.qBittorrent.Filters.trackersFilterContextMenu.addTarget(el); - return el; + const trackerItemTemplate = document.getElementById("trackerFilterItem"); + + const createLink = (host, text, count) => { + const trackerFilterItem = trackerItemTemplate.content.cloneNode(true).firstElementChild; + trackerFilterItem.id = host; + trackerFilterItem.classList.toggle("selectedFilter", (host === selectedTracker)); + + const span = trackerFilterItem.firstElementChild; + span.lastChild.textContent = `${text} (${count})`; + + return trackerFilterItem; }; - const torrentsCount = torrentsTable.getRowIds().length; - trackerFilterList.appendChild(createLink(TRACKERS_ALL, 'QBT_TR(All (%1))QBT_TR[CONTEXT=TrackerFiltersList]', torrentsCount)); let trackerlessTorrentsCount = 0; - for (const key in torrentsTable.rows) { - if (Object.prototype.hasOwnProperty.call(torrentsTable.rows, key) && (torrentsTable.rows[key]['full_data'].trackers_count === 0)) + for (const { full_data: { trackers_count: trackersCount } } of torrentsTable.getRowValues()) { + if (trackersCount === 0) trackerlessTorrentsCount += 1; } - trackerFilterList.appendChild(createLink(TRACKERS_TRACKERLESS, 'QBT_TR(Trackerless (%1))QBT_TR[CONTEXT=TrackerFiltersList]', trackerlessTorrentsCount)); + + trackerFilterList.appendChild(createLink(TRACKERS_ALL, "QBT_TR(All)QBT_TR[CONTEXT=TrackerFiltersList]", torrentsTable.getRowSize())); + trackerFilterList.appendChild(createLink(TRACKERS_TRACKERLESS, "QBT_TR(Trackerless)QBT_TR[CONTEXT=TrackerFiltersList]", trackerlessTorrentsCount)); // Sort trackers by hostname - const sortedList = [...trackerList.entries()].sort((left, right) => { - const leftHost = getHost(left[1].url); - const rightHost = getHost(right[1].url); - return window.qBittorrent.Misc.naturalSortCollator.compare(leftHost, rightHost); - }); - for (const [hash, tracker] of sortedList) { - trackerFilterList.appendChild(createLink(hash, (getHost(tracker.url) + ' (%1)'), tracker.torrents.length)); + const sortedList = []; + for (const [host, trackerTorrentMap] of trackerMap) { + const uniqueTorrents = new Set(); + for (const torrents of trackerTorrentMap.values()) { + for (const torrent of torrents) + uniqueTorrents.add(torrent); + } + + sortedList.push({ + trackerHost: host, + trackerCount: uniqueTorrents.size, + }); } + sortedList.sort((left, right) => window.qBittorrent.Misc.naturalSortCollator.compare(left.trackerHost, right.trackerHost)); + for (const { trackerHost, trackerCount } of sortedList) + trackerFilterList.appendChild(createLink(trackerHost, trackerHost, trackerCount)); - highlightSelectedTracker(); + window.qBittorrent.Filters.trackersFilterContextMenu.searchAndAddTargets(); }; - const highlightSelectedTracker = function() { - const trackerFilterList = $('trackerFilterList'); + const highlightSelectedTracker = () => { + const trackerFilterList = document.getElementById("trackerFilterList"); if (!trackerFilterList) return; - const children = trackerFilterList.childNodes; - for (const child of children) - child.className = (child.id === selectedTracker) ? "selectedFilter" : ""; + for (const tracker of trackerFilterList.children) + tracker.classList.toggle("selectedFilter", (tracker.id === selectedTracker)); }; - let syncMainDataTimer; - const syncMainData = function() { - const url = new URI('api/v2/sync/maindata'); - url.setData('rid', syncMainDataLastResponseId); - const request = new Request.JSON({ - url: url, - noCache: true, - method: 'get', - onFailure: function() { - const errorDiv = $('error_div'); - if (errorDiv) - errorDiv.set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]'); - syncRequestInProgress = false; - syncData(2000); - }, - onSuccess: function(response) { - $('error_div').set('html', ''); - if (response) { - clearTimeout(torrentsFilterInputTimer); - let torrentsTableSelectedRows; - let update_categories = false; - let updateTags = false; - let updateTrackers = false; - const full_update = (response['full_update'] === true); - if (full_update) { - torrentsTableSelectedRows = torrentsTable.selectedRowsIds(); - torrentsTable.clear(); - category_list = {}; - tagList = {}; - } - if (response['rid']) { - syncMainDataLastResponseId = response['rid']; - } - if (response['categories']) { - for (const key in response['categories']) { - const category = response['categories'][key]; - const categoryHash = genHash(key); - if (category_list[categoryHash] !== undefined) { - // only the save path can change for existing categories - category_list[categoryHash].savePath = category.savePath; + const statusSortOrder = Object.freeze({ + unknown: -1, + forcedDL: 0, + downloading: 1, + forcedMetaDL: 2, + metaDL: 3, + stalledDL: 4, + forcedUP: 5, + uploading: 6, + stalledUP: 7, + checkingResumeData: 8, + queuedDL: 9, + queuedUP: 10, + checkingUP: 11, + checkingDL: 12, + stoppedDL: 13, + stoppedUP: 14, + moving: 15, + missingFiles: 16, + error: 17 + }); + + let syncMainDataTimeoutID = -1; + let syncRequestInProgress = false; + const syncMainData = () => { + syncRequestInProgress = true; + const url = new URL("api/v2/sync/maindata", window.location); + url.search = new URLSearchParams({ + rid: syncMainDataLastResponseId + }); + fetch(url, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (response.ok) { + $("error_div").textContent = ""; + + const responseJSON = await response.json(); + + clearTimeout(torrentsFilterInputTimer); + torrentsFilterInputTimer = -1; + + let torrentsTableSelectedRows; + let updateStatuses = false; + let updateCategories = false; + let updateTags = false; + let updateTrackers = false; + let updateTorrents = false; + const fullUpdate = (responseJSON["fullUpdate"] === true); + if (fullUpdate) { + torrentsTableSelectedRows = torrentsTable.selectedRowsIds(); + updateStatuses = true; + updateCategories = true; + updateTags = true; + updateTrackers = true; + updateTorrents = true; + torrentsTable.clear(); + categoryMap.clear(); + tagMap.clear(); + trackerMap.clear(); + } + if (responseJSON["rid"]) + syncMainDataLastResponseId = responseJSON["rid"]; + if (responseJSON["categories"]) { + for (const responseName in responseJSON["categories"]) { + if (!Object.hasOwn(responseJSON["categories"], responseName)) + continue; + + const responseData = responseJSON["categories"][responseName]; + const categoryData = categoryMap.get(responseName); + if (categoryData === undefined) { + categoryMap.set(responseName, { + savePath: responseData.savePath, + torrents: new Set() + }); + } + else { + // only the save path can change for existing categories + categoryData.savePath = responseData.savePath; + } } - else { - category_list[categoryHash] = { - name: category.name, - savePath: category.savePath, - torrents: [] - }; + updateCategories = true; + } + if (responseJSON["categories_removed"]) { + for (const category of responseJSON["categories_removed"]) + categoryMap.delete(category); + updateCategories = true; + } + if (responseJSON["tags"]) { + for (const tag of responseJSON["tags"]) { + if (!tagMap.has(tag)) + tagMap.set(tag, new Set()); } + updateTags = true; } - update_categories = true; - } - if (response['categories_removed']) { - response['categories_removed'].each(function(category) { - const categoryHash = genHash(category); - delete category_list[categoryHash]; - }); - update_categories = true; - } - if (response['tags']) { - for (const tag of response['tags']) { - const tagHash = genHash(tag); - if (!tagList[tagHash]) { - tagList[tagHash] = { - name: tag, - torrents: [] - }; + if (responseJSON["tags_removed"]) { + for (const tag of responseJSON["tags_removed"]) + tagMap.delete(tag); + updateTags = true; + } + if (responseJSON["trackers"]) { + for (const [tracker, torrents] of Object.entries(responseJSON["trackers"])) { + const host = window.qBittorrent.Misc.getHost(tracker); + + let trackerListItem = trackerMap.get(host); + if (trackerListItem === undefined) { + trackerListItem = new Map(); + trackerMap.set(host, trackerListItem); + } + trackerListItem.set(tracker, new Set(torrents)); } + updateTrackers = true; } - updateTags = true; - } - if (response['tags_removed']) { - for (let i = 0; i < response['tags_removed'].length; ++i) { - const tagHash = genHash(response['tags_removed'][i]); - delete tagList[tagHash]; + if (responseJSON["trackers_removed"]) { + for (let i = 0; i < responseJSON["trackers_removed"].length; ++i) { + const tracker = responseJSON["trackers_removed"][i]; + const host = window.qBittorrent.Misc.getHost(tracker); + + const trackerTorrentMap = trackerMap.get(host); + if (trackerTorrentMap !== undefined) { + trackerTorrentMap.delete(tracker); + // Remove unused trackers + if (trackerTorrentMap.size === 0) { + trackerMap.delete(host); + if (selectedTracker === host) { + selectedTracker = TRACKERS_ALL; + LocalPreferences.set("selected_tracker", selectedTracker); + } + } + } + } + updateTrackers = true; } - updateTags = true; - } - if (response['trackers']) { - for (const tracker in response['trackers']) { - const torrents = response['trackers'][tracker]; - const hash = genHash(getHost(tracker)); - - // the reason why we need the merge here is because the web ui api returned trackers may have different url for the same tracker host. - // for example, some private trackers use diff urls for each torrent from the same tracker host. - // then we got the response of `trackers` from qBittorrent api will like: - // { - // "trackers": { - // "https://example.com/announce?passkey=identify_info1": ["hash1"], - // "https://example.com/announce?passkey=identify_info2": ["hash2"], - // "https://example.com/announce?passkey=identify_info3": ["hash3"] - // } - // } - // after getHost(), those torrents all belongs to `example.com` - let merged_torrents = torrents; - if (trackerList.has(hash)) { - merged_torrents = trackerList.get(hash).torrents.concat(torrents); - // deduplicate is needed when the webui opens in multi tabs - merged_torrents = merged_torrents.filter((item, pos) => merged_torrents.indexOf(item) === pos); + if (responseJSON["torrents"]) { + for (const key in responseJSON["torrents"]) { + if (!Object.hasOwn(responseJSON["torrents"], key)) + continue; + + responseJSON["torrents"][key]["hash"] = key; + responseJSON["torrents"][key]["rowId"] = key; + if (responseJSON["torrents"][key]["state"]) { + const state = responseJSON["torrents"][key]["state"]; + responseJSON["torrents"][key]["status"] = state; + responseJSON["torrents"][key]["_statusOrder"] = statusSortOrder[state]; + updateStatuses = true; + } + torrentsTable.updateRowData(responseJSON["torrents"][key]); + if (addTorrentToCategoryList(responseJSON["torrents"][key])) + updateCategories = true; + if (addTorrentToTagList(responseJSON["torrents"][key])) + updateTags = true; + updateTrackers = true; + updateTorrents = true; } - - trackerList.set(hash, { - url: tracker, - torrents: merged_torrents + } + if (responseJSON["torrents_removed"]) { + responseJSON["torrents_removed"].each((hash) => { + torrentsTable.removeRow(hash); + removeTorrentFromCategoryList(hash); + updateCategories = true; // Always to update All category + removeTorrentFromTagList(hash); + updateTags = true; // Always to update All tag + updateTrackers = true; }); + updateTorrents = true; + updateStatuses = true; } - updateTrackers = true; - } - if (response['trackers_removed']) { - for (let i = 0; i < response['trackers_removed'].length; ++i) { - const tracker = response['trackers_removed'][i]; - const hash = genHash(getHost(tracker)); - trackerList.delete(hash); + + // don't update the table unnecessarily + if (updateTorrents) + torrentsTable.updateTable(fullUpdate); + + if (responseJSON["server_state"]) { + const tmp = responseJSON["server_state"]; + for (const k in tmp) { + if (!Object.hasOwn(tmp, k)) + continue; + serverState[k] = tmp[k]; + } + processServerState(); } - updateTrackers = true; - } - if (response['torrents']) { - let updateTorrentList = false; - for (const key in response['torrents']) { - response['torrents'][key]['hash'] = key; - response['torrents'][key]['rowId'] = key; - if (response['torrents'][key]['state']) - response['torrents'][key]['status'] = response['torrents'][key]['state']; - torrentsTable.updateRowData(response['torrents'][key]); - if (addTorrentToCategoryList(response['torrents'][key])) - update_categories = true; - if (addTorrentToTagList(response['torrents'][key])) - updateTags = true; - if (response['torrents'][key]['name']) - updateTorrentList = true; + + if (updateStatuses) + updateFiltersList(); + + if (updateCategories) { + updateCategoryList(); + window.qBittorrent.TransferList.contextMenu.updateCategoriesSubMenu(categoryMap); + } + if (updateTags) { + updateTagList(); + window.qBittorrent.TransferList.contextMenu.updateTagsSubMenu(tagMap); } + if (updateTrackers) + updateTrackerList(); - if (updateTorrentList) - setupCopyEventHandler(); - } - if (response['torrents_removed']) - response['torrents_removed'].each(function(hash) { - torrentsTable.removeRow(hash); - removeTorrentFromCategoryList(hash); - update_categories = true; // Always to update All category - removeTorrentFromTagList(hash); - updateTags = true; // Always to update All tag - }); - torrentsTable.updateTable(full_update); - torrentsTable.altRow(); - if (response['server_state']) { - const tmp = response['server_state']; - for (const k in tmp) - serverState[k] = tmp[k]; - processServerState(); - } - updateFiltersList(); - if (update_categories) { - updateCategoryList(); - window.qBittorrent.TransferList.contextMenu.updateCategoriesSubMenu(category_list); + if (fullUpdate) + // re-select previously selected rows + torrentsTable.reselectRows(torrentsTableSelectedRows); } - if (updateTags) { - updateTagList(); - window.qBittorrent.TransferList.contextMenu.updateTagsSubMenu(tagList); - } - if (updateTrackers) - updateTrackerList(); - if (full_update) - // re-select previously selected rows - torrentsTable.reselectRows(torrentsTableSelectedRows); - } - syncRequestInProgress = false; - syncData(getSyncMainDataInterval()); - } - }); - syncRequestInProgress = true; - request.send(); + syncRequestInProgress = false; + syncData(window.qBittorrent.Client.getSyncMainDataInterval()); + }, + (error) => { + const errorDiv = $("error_div"); + if (errorDiv) + errorDiv.textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]"; + syncRequestInProgress = false; + syncData(2000); + }); }; - updateMainData = function() { + updateMainData = () => { torrentsTable.updateTable(); syncData(100); }; - const syncData = function(delay) { - if (!syncRequestInProgress) { - clearTimeout(syncMainDataTimer); - syncMainDataTimer = syncMainData.delay(delay); - } + const syncData = (delay) => { + if (syncRequestInProgress) + return; + + clearTimeout(syncMainDataTimeoutID); + syncMainDataTimeoutID = -1; + + if (window.qBittorrent.Client.isStopped()) + return; + + syncMainDataTimeoutID = syncMainData.delay(delay); }; - const processServerState = function() { + const processServerState = () => { let transfer_info = window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_speed, true); if (serverState.dl_rate_limit > 0) - transfer_info += " [" + window.qBittorrent.Misc.friendlyUnit(serverState.dl_rate_limit, true) + "]"; - transfer_info += " (" + window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_data, false) + ")"; - $("DlInfos").set('html', transfer_info); + transfer_info += ` [${window.qBittorrent.Misc.friendlyUnit(serverState.dl_rate_limit, true)}]`; + transfer_info += ` (${window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_data, false)})`; + $("DlInfos").textContent = transfer_info; transfer_info = window.qBittorrent.Misc.friendlyUnit(serverState.up_info_speed, true); if (serverState.up_rate_limit > 0) - transfer_info += " [" + window.qBittorrent.Misc.friendlyUnit(serverState.up_rate_limit, true) + "]"; - transfer_info += " (" + window.qBittorrent.Misc.friendlyUnit(serverState.up_info_data, false) + ")"; - $("UpInfos").set('html', transfer_info); - if (speedInTitle) { - document.title = "QBT_TR([D: %1, U: %2] qBittorrent %3)QBT_TR[CONTEXT=MainWindow]".replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_speed, true)).replace("%2", window.qBittorrent.Misc.friendlyUnit(serverState.up_info_speed, true)).replace("%3", qbtVersion()); - document.title += " QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]"; + transfer_info += ` [${window.qBittorrent.Misc.friendlyUnit(serverState.up_rate_limit, true)}]`; + transfer_info += ` (${window.qBittorrent.Misc.friendlyUnit(serverState.up_info_data, false)})`; + $("UpInfos").textContent = transfer_info; + + document.title = (speedInTitle + ? (`QBT_TR([D: %1, U: %2])QBT_TR[CONTEXT=MainWindow] ` + .replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_speed, true)) + .replace("%2", window.qBittorrent.Misc.friendlyUnit(serverState.up_info_speed, true))) + : "") + + window.qBittorrent.Client.mainTitle(); + + $("freeSpaceOnDisk").textContent = "QBT_TR(Free space: %1)QBT_TR[CONTEXT=HttpServer]".replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.free_space_on_disk)); + + const externalIPsElement = document.getElementById("externalIPs"); + if (window.qBittorrent.Cache.preferences.get().status_bar_external_ip) { + const lastExternalAddressV4 = serverState.last_external_address_v4; + const lastExternalAddressV6 = serverState.last_external_address_v6; + const hasIPv4Address = lastExternalAddressV4 !== ""; + const hasIPv6Address = lastExternalAddressV6 !== ""; + let lastExternalAddressLabel = "QBT_TR(External IP: N/A)QBT_TR[CONTEXT=HttpServer]"; + if (hasIPv4Address && hasIPv6Address) + lastExternalAddressLabel = "QBT_TR(External IPs: %1, %2)QBT_TR[CONTEXT=HttpServer]"; + else if (hasIPv4Address || hasIPv6Address) + lastExternalAddressLabel = "QBT_TR(External IP: %1%2)QBT_TR[CONTEXT=HttpServer]"; + // replace in reverse order ('%2' before '%1') in case address contains a % character. + // for example, see https://en.wikipedia.org/wiki/IPv6_address#Scoped_literal_IPv6_addresses_(with_zone_index) + externalIPsElement.textContent = lastExternalAddressLabel.replace("%2", lastExternalAddressV6).replace("%1", lastExternalAddressV4); + externalIPsElement.classList.remove("invisible"); + externalIPsElement.previousElementSibling.classList.remove("invisible"); + } + else { + externalIPsElement.classList.add("invisible"); + externalIPsElement.previousElementSibling.classList.add("invisible"); + } + + const dhtElement = document.getElementById("DHTNodes"); + if (window.qBittorrent.Cache.preferences.get().dht) { + dhtElement.textContent = "QBT_TR(DHT: %1 nodes)QBT_TR[CONTEXT=StatusBar]".replace("%1", serverState.dht_nodes); + dhtElement.classList.remove("invisible"); + dhtElement.previousElementSibling.classList.remove("invisible"); + } + else { + dhtElement.classList.add("invisible"); + dhtElement.previousElementSibling.classList.add("invisible"); } - else - document.title = ("qBittorrent " + qbtVersion() + " QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]"); - $('freeSpaceOnDisk').set('html', 'QBT_TR(Free space: %1)QBT_TR[CONTEXT=HttpServer]'.replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.free_space_on_disk))); - $('DHTNodes').set('html', 'QBT_TR(DHT: %1 nodes)QBT_TR[CONTEXT=StatusBar]'.replace("%1", serverState.dht_nodes)); // Statistics dialog if (document.getElementById("statisticsContent")) { - $('AlltimeDL').set('html', window.qBittorrent.Misc.friendlyUnit(serverState.alltime_dl, false)); - $('AlltimeUL').set('html', window.qBittorrent.Misc.friendlyUnit(serverState.alltime_ul, false)); - $('TotalWastedSession').set('html', window.qBittorrent.Misc.friendlyUnit(serverState.total_wasted_session, false)); - $('GlobalRatio').set('html', serverState.global_ratio); - $('TotalPeerConnections').set('html', serverState.total_peer_connections); - $('ReadCacheHits').set('html', serverState.read_cache_hits + "%"); - $('TotalBuffersSize').set('html', window.qBittorrent.Misc.friendlyUnit(serverState.total_buffers_size, false)); - $('WriteCacheOverload').set('html', serverState.write_cache_overload + "%"); - $('ReadCacheOverload').set('html', serverState.read_cache_overload + "%"); - $('QueuedIOJobs').set('html', serverState.queued_io_jobs); - $('AverageTimeInQueue').set('html', serverState.average_time_queue + " ms"); - $('TotalQueuedSize').set('html', window.qBittorrent.Misc.friendlyUnit(serverState.total_queued_size, false)); + $("AlltimeDL").textContent = window.qBittorrent.Misc.friendlyUnit(serverState.alltime_dl, false); + $("AlltimeUL").textContent = window.qBittorrent.Misc.friendlyUnit(serverState.alltime_ul, false); + $("TotalWastedSession").textContent = window.qBittorrent.Misc.friendlyUnit(serverState.total_wasted_session, false); + $("GlobalRatio").textContent = serverState.global_ratio; + $("TotalPeerConnections").textContent = serverState.total_peer_connections; + $("ReadCacheHits").textContent = `${serverState.read_cache_hits}%`; + $("TotalBuffersSize").textContent = window.qBittorrent.Misc.friendlyUnit(serverState.total_buffers_size, false); + $("WriteCacheOverload").textContent = `${serverState.write_cache_overload}%`; + $("ReadCacheOverload").textContent = `${serverState.read_cache_overload}%`; + $("QueuedIOJobs").textContent = serverState.queued_io_jobs; + $("AverageTimeInQueue").textContent = `${serverState.average_time_queue} ms`; + $("TotalQueuedSize").textContent = window.qBittorrent.Misc.friendlyUnit(serverState.total_queued_size, false); } switch (serverState.connection_status) { - case 'connected': - $('connectionStatus').src = 'images/connected.svg'; - $('connectionStatus').alt = 'QBT_TR(Connection status: Connected)QBT_TR[CONTEXT=MainWindow]'; - $('connectionStatus').title = 'QBT_TR(Connection status: Connected)QBT_TR[CONTEXT=MainWindow]'; + case "connected": + $("connectionStatus").src = "images/connected.svg"; + $("connectionStatus").alt = "QBT_TR(Connection status: Connected)QBT_TR[CONTEXT=MainWindow]"; + $("connectionStatus").title = "QBT_TR(Connection status: Connected)QBT_TR[CONTEXT=MainWindow]"; break; - case 'firewalled': - $('connectionStatus').src = 'images/firewalled.svg'; - $('connectionStatus').alt = 'QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]'; - $('connectionStatus').title = 'QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]'; + case "firewalled": + $("connectionStatus").src = "images/firewalled.svg"; + $("connectionStatus").alt = "QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]"; + $("connectionStatus").title = "QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]"; break; default: - $('connectionStatus').src = 'images/disconnected.svg'; - $('connectionStatus').alt = 'QBT_TR(Connection status: Disconnected)QBT_TR[CONTEXT=MainWindow]'; - $('connectionStatus').title = 'QBT_TR(Connection status: Disconnected)QBT_TR[CONTEXT=MainWindow]'; + $("connectionStatus").src = "images/disconnected.svg"; + $("connectionStatus").alt = "QBT_TR(Connection status: Disconnected)QBT_TR[CONTEXT=MainWindow]"; + $("connectionStatus").title = "QBT_TR(Connection status: Disconnected)QBT_TR[CONTEXT=MainWindow]"; break; } - if (queueing_enabled != serverState.queueing) { + if (queueing_enabled !== serverState.queueing) { queueing_enabled = serverState.queueing; - torrentsTable.columns['priority'].force_hide = !queueing_enabled; - torrentsTable.updateColumn('priority'); + torrentsTable.columns["priority"].force_hide = !queueing_enabled; + torrentsTable.updateColumn("priority"); if (queueing_enabled) { - $('topQueuePosItem').removeClass('invisible'); - $('increaseQueuePosItem').removeClass('invisible'); - $('decreaseQueuePosItem').removeClass('invisible'); - $('bottomQueuePosItem').removeClass('invisible'); - $('queueingButtons').removeClass('invisible'); - $('queueingMenuItems').removeClass('invisible'); + $("topQueuePosItem").classList.remove("invisible"); + $("increaseQueuePosItem").classList.remove("invisible"); + $("decreaseQueuePosItem").classList.remove("invisible"); + $("bottomQueuePosItem").classList.remove("invisible"); + $("queueingButtons").classList.remove("invisible"); + $("queueingMenuItems").classList.remove("invisible"); } else { - $('topQueuePosItem').addClass('invisible'); - $('increaseQueuePosItem').addClass('invisible'); - $('decreaseQueuePosItem').addClass('invisible'); - $('bottomQueuePosItem').addClass('invisible'); - $('queueingButtons').addClass('invisible'); - $('queueingMenuItems').addClass('invisible'); + $("topQueuePosItem").classList.add("invisible"); + $("increaseQueuePosItem").classList.add("invisible"); + $("decreaseQueuePosItem").classList.add("invisible"); + $("bottomQueuePosItem").classList.add("invisible"); + $("queueingButtons").classList.add("invisible"); + $("queueingMenuItems").classList.add("invisible"); } } - if (alternativeSpeedLimits != serverState.use_alt_speed_limits) { + if (alternativeSpeedLimits !== serverState.use_alt_speed_limits) { alternativeSpeedLimits = serverState.use_alt_speed_limits; updateAltSpeedIcon(alternativeSpeedLimits); } - if (useSubcategories != serverState.use_subcategories) { + if (useSubcategories !== serverState.use_subcategories) { useSubcategories = serverState.use_subcategories; updateCategoryList(); } @@ -918,173 +1074,196 @@ window.addEvent('load', function() { serverSyncMainDataInterval = Math.max(serverState.refresh_interval, 500); }; - const updateAltSpeedIcon = function(enabled) { + const updateAltSpeedIcon = (enabled) => { if (enabled) { - $('alternativeSpeedLimits').src = 'images/slow.svg'; - $('alternativeSpeedLimits').alt = 'QBT_TR(Alternative speed limits: On)QBT_TR[CONTEXT=MainWindow]'; - $('alternativeSpeedLimits').title = 'QBT_TR(Alternative speed limits: On)QBT_TR[CONTEXT=MainWindow]'; + $("alternativeSpeedLimits").src = "images/slow.svg"; + $("alternativeSpeedLimits").alt = "QBT_TR(Alternative speed limits: On)QBT_TR[CONTEXT=MainWindow]"; + $("alternativeSpeedLimits").title = "QBT_TR(Alternative speed limits: On)QBT_TR[CONTEXT=MainWindow]"; } else { - $('alternativeSpeedLimits').src = 'images/slow_off.svg'; - $('alternativeSpeedLimits').alt = 'QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]'; - $('alternativeSpeedLimits').title = 'QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]'; + $("alternativeSpeedLimits").src = "images/slow_off.svg"; + $("alternativeSpeedLimits").alt = "QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]"; + $("alternativeSpeedLimits").title = "QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]"; } }; - $('alternativeSpeedLimits').addEvent('click', function() { + $("alternativeSpeedLimits").addEventListener("click", () => { // Change icon immediately to give some feedback updateAltSpeedIcon(!alternativeSpeedLimits); - new Request({ - url: 'api/v2/transfer/toggleSpeedLimitsMode', - method: 'post', - onComplete: function() { + fetch("api/v2/transfer/toggleSpeedLimitsMode", { + method: "POST" + }) + .then((response) => { + if (!response.ok) { + // Restore icon in case of failure + updateAltSpeedIcon(alternativeSpeedLimits); + return; + } + alternativeSpeedLimits = !alternativeSpeedLimits; updateMainData(); - }, - onFailure: function() { - // Restore icon in case of failure - updateAltSpeedIcon(alternativeSpeedLimits); - } - }).send(); + }); }); - $('DlInfos').addEvent('click', globalDownloadLimitFN); - $('UpInfos').addEvent('click', globalUploadLimitFN); + $("DlInfos").addEventListener("click", () => { globalDownloadLimitFN(); }); + $("UpInfos").addEventListener("click", () => { globalUploadLimitFN(); }); - $('showTopToolbarLink').addEvent('click', function(e) { + $("showTopToolbarLink").addEventListener("click", (e) => { showTopToolbar = !showTopToolbar; - LocalPreferences.set('show_top_toolbar', showTopToolbar.toString()); + LocalPreferences.set("show_top_toolbar", showTopToolbar.toString()); if (showTopToolbar) { - $('showTopToolbarLink').firstChild.style.opacity = '1'; - $('mochaToolbar').removeClass('invisible'); + $("showTopToolbarLink").firstElementChild.style.opacity = "1"; + $("mochaToolbar").classList.remove("invisible"); } else { - $('showTopToolbarLink').firstChild.style.opacity = '0'; - $('mochaToolbar').addClass('invisible'); + $("showTopToolbarLink").firstElementChild.style.opacity = "0"; + $("mochaToolbar").classList.add("invisible"); } MochaUI.Desktop.setDesktopSize(); }); - $('showStatusBarLink').addEvent('click', function(e) { + $("showStatusBarLink").addEventListener("click", (e) => { showStatusBar = !showStatusBar; - LocalPreferences.set('show_status_bar', showStatusBar.toString()); + LocalPreferences.set("show_status_bar", showStatusBar.toString()); if (showStatusBar) { - $('showStatusBarLink').firstChild.style.opacity = '1'; - $('desktopFooterWrapper').removeClass('invisible'); + $("showStatusBarLink").firstElementChild.style.opacity = "1"; + $("desktopFooterWrapper").classList.remove("invisible"); } else { - $('showStatusBarLink').firstChild.style.opacity = '0'; - $('desktopFooterWrapper').addClass('invisible'); + $("showStatusBarLink").firstElementChild.style.opacity = "0"; + $("desktopFooterWrapper").classList.add("invisible"); } MochaUI.Desktop.setDesktopSize(); }); - $('registerMagnetHandlerLink').addEvent('click', function(e) { + const registerMagnetHandler = () => { + if (typeof navigator.registerProtocolHandler !== "function") { + if (window.location.protocol !== "https:") + alert("QBT_TR(To use this feature, the WebUI needs to be accessed over HTTPS)QBT_TR[CONTEXT=MainWindow]"); + else + alert("QBT_TR(Your browser does not support this feature)QBT_TR[CONTEXT=MainWindow]"); + return; + } + + const hashString = location.hash ? location.hash.replace(/^#/, "") : ""; + const hashParams = new URLSearchParams(hashString); + hashParams.set("download", ""); + + const templateHashString = hashParams.toString().replace("download=", "download=%s"); + const templateUrl = `${location.origin}${location.pathname}${location.search}#${templateHashString}`; + + navigator.registerProtocolHandler("magnet", templateUrl, + "qBittorrent WebUI magnet handler"); + }; + $("registerMagnetHandlerLink").addEventListener("click", (e) => { registerMagnetHandler(); }); - $('showFiltersSidebarLink').addEvent('click', function(e) { - const showFiltersSidebar = !getShowFiltersSidebar(); - LocalPreferences.set('show_filters_sidebar', showFiltersSidebar.toString()); + $("showFiltersSidebarLink").addEventListener("click", (e) => { + showFiltersSidebar = !showFiltersSidebar; + LocalPreferences.set("show_filters_sidebar", showFiltersSidebar.toString()); if (showFiltersSidebar) { - $('showFiltersSidebarLink').firstChild.style.opacity = '1'; - $('filtersColumn').removeClass('invisible'); - $('filtersColumn_handle').removeClass('invisible'); + $("showFiltersSidebarLink").firstElementChild.style.opacity = "1"; + $("filtersColumn").classList.remove("invisible"); + $("filtersColumn_handle").classList.remove("invisible"); } else { - $('showFiltersSidebarLink').firstChild.style.opacity = '0'; - $('filtersColumn').addClass('invisible'); - $('filtersColumn_handle').addClass('invisible'); + $("showFiltersSidebarLink").firstElementChild.style.opacity = "0"; + $("filtersColumn").classList.add("invisible"); + $("filtersColumn_handle").classList.add("invisible"); } MochaUI.Desktop.setDesktopSize(); }); - $('speedInBrowserTitleBarLink').addEvent('click', function(e) { + $("speedInBrowserTitleBarLink").addEventListener("click", (e) => { speedInTitle = !speedInTitle; - LocalPreferences.set('speed_in_browser_title_bar', speedInTitle.toString()); + LocalPreferences.set("speed_in_browser_title_bar", speedInTitle.toString()); if (speedInTitle) - $('speedInBrowserTitleBarLink').firstChild.style.opacity = '1'; + $("speedInBrowserTitleBarLink").firstElementChild.style.opacity = "1"; else - $('speedInBrowserTitleBarLink').firstChild.style.opacity = '0'; + $("speedInBrowserTitleBarLink").firstElementChild.style.opacity = "0"; processServerState(); }); - $('showSearchEngineLink').addEvent('click', function(e) { - showSearchEngine = !showSearchEngine; - LocalPreferences.set('show_search_engine', showSearchEngine.toString()); + $("showSearchEngineLink").addEventListener("click", (e) => { + window.qBittorrent.Client.showSearchEngine(!window.qBittorrent.Client.isShowSearchEngine()); + LocalPreferences.set("show_search_engine", window.qBittorrent.Client.isShowSearchEngine().toString()); updateTabDisplay(); }); - $('showRssReaderLink').addEvent('click', function(e) { - showRssReader = !showRssReader; - LocalPreferences.set('show_rss_reader', showRssReader.toString()); + $("showRssReaderLink").addEventListener("click", (e) => { + window.qBittorrent.Client.showRssReader(!window.qBittorrent.Client.isShowRssReader()); + LocalPreferences.set("show_rss_reader", window.qBittorrent.Client.isShowRssReader().toString()); updateTabDisplay(); }); - $('showLogViewerLink').addEvent('click', function(e) { - showLogViewer = !showLogViewer; - LocalPreferences.set('show_log_viewer', showLogViewer.toString()); + $("showLogViewerLink").addEventListener("click", (e) => { + window.qBittorrent.Client.showLogViewer(!window.qBittorrent.Client.isShowLogViewer()); + LocalPreferences.set("show_log_viewer", window.qBittorrent.Client.isShowLogViewer().toString()); updateTabDisplay(); }); - const updateTabDisplay = function() { - if (showRssReader) { - $('showRssReaderLink').firstChild.style.opacity = '1'; - $('mainWindowTabs').removeClass('invisible'); - $('rssTabLink').removeClass('invisible'); + const updateTabDisplay = () => { + if (window.qBittorrent.Client.isShowRssReader()) { + $("showRssReaderLink").firstElementChild.style.opacity = "1"; + $("mainWindowTabs").classList.remove("invisible"); + $("rssTabLink").classList.remove("invisible"); if (!MochaUI.Panels.instances.RssPanel) addRssPanel(); } else { - $('showRssReaderLink').firstChild.style.opacity = '0'; - $('rssTabLink').addClass('invisible'); - if ($('rssTabLink').hasClass('selected')) + $("showRssReaderLink").firstElementChild.style.opacity = "0"; + $("rssTabLink").classList.add("invisible"); + if ($("rssTabLink").classList.contains("selected")) $("transfersTabLink").click(); } - if (showSearchEngine) { - $('showSearchEngineLink').firstChild.style.opacity = '1'; - $('mainWindowTabs').removeClass('invisible'); - $('searchTabLink').removeClass('invisible'); + if (window.qBittorrent.Client.isShowSearchEngine()) { + $("showSearchEngineLink").firstElementChild.style.opacity = "1"; + $("mainWindowTabs").classList.remove("invisible"); + $("searchTabLink").classList.remove("invisible"); if (!MochaUI.Panels.instances.SearchPanel) addSearchPanel(); } else { - $('showSearchEngineLink').firstChild.style.opacity = '0'; - $('searchTabLink').addClass('invisible'); - if ($('searchTabLink').hasClass('selected')) + $("showSearchEngineLink").firstElementChild.style.opacity = "0"; + $("searchTabLink").classList.add("invisible"); + if ($("searchTabLink").classList.contains("selected")) $("transfersTabLink").click(); } - if (showLogViewer) { - $('showLogViewerLink').firstChild.style.opacity = '1'; - $('mainWindowTabs').removeClass('invisible'); - $('logTabLink').removeClass('invisible'); + if (window.qBittorrent.Client.isShowLogViewer()) { + $("showLogViewerLink").firstElementChild.style.opacity = "1"; + $("mainWindowTabs").classList.remove("invisible"); + $("logTabLink").classList.remove("invisible"); if (!MochaUI.Panels.instances.LogPanel) addLogPanel(); } else { - $('showLogViewerLink').firstChild.style.opacity = '0'; - $('logTabLink').addClass('invisible'); - if ($('logTabLink').hasClass('selected')) + $("showLogViewerLink").firstElementChild.style.opacity = "0"; + $("logTabLink").classList.add("invisible"); + if ($("logTabLink").classList.contains("selected")) $("transfersTabLink").click(); } // display no tabs - if (!showRssReader && !showSearchEngine && !showLogViewer) - $('mainWindowTabs').addClass('invisible'); + if (!window.qBittorrent.Client.isShowRssReader() && !window.qBittorrent.Client.isShowSearchEngine() && !window.qBittorrent.Client.isShowLogViewer()) + $("mainWindowTabs").classList.add("invisible"); }; - $('StatisticsLink').addEvent('click', StatisticsLinkFN); + $("StatisticsLink").addEventListener("click", () => { StatisticsLinkFN(); }); // main window tabs - const showTransfersTab = function() { - $("filtersColumn").removeClass("invisible"); - $("filtersColumn_handle").removeClass("invisible"); - $("mainColumn").removeClass("invisible"); - $('torrentsFilterToolbar').removeClass("invisible"); + const showTransfersTab = () => { + const showFiltersSidebar = LocalPreferences.get("show_filters_sidebar", "true") === "true"; + if (showFiltersSidebar) { + $("filtersColumn").classList.remove("invisible"); + $("filtersColumn_handle").classList.remove("invisible"); + } + $("mainColumn").classList.remove("invisible"); + $("torrentsFilterToolbar").classList.remove("invisible"); customSyncMainDataInterval = null; syncData(100); @@ -1092,82 +1271,132 @@ window.addEvent('load', function() { hideSearchTab(); hideRssTab(); hideLogTab(); + + LocalPreferences.set("selected_window_tab", "transfers"); }; - const hideTransfersTab = function() { - $("filtersColumn").addClass("invisible"); - $("filtersColumn_handle").addClass("invisible"); - $("mainColumn").addClass("invisible"); - $('torrentsFilterToolbar').addClass("invisible"); + const hideTransfersTab = () => { + $("filtersColumn").classList.add("invisible"); + $("filtersColumn_handle").classList.add("invisible"); + $("mainColumn").classList.add("invisible"); + $("torrentsFilterToolbar").classList.add("invisible"); MochaUI.Desktop.resizePanels(); }; - const showSearchTab = function() { - if (!searchTabInitialized) { - window.qBittorrent.Search.init(); - searchTabInitialized = true; - } + const showSearchTab = (() => { + let searchTabInitialized = false; + + return () => { + // we must wait until the panel is fully loaded before proceeding. + // this include's the panel's custom js, which is loaded via MochaUI.Panel's 'require' field. + // MochaUI loads these files asynchronously and thus all required libs may not be available immediately + if (!isSearchPanelLoaded) { + setTimeout(() => { + showSearchTab(); + }, 100); + return; + } - $("searchTabColumn").removeClass("invisible"); - customSyncMainDataInterval = 30000; - hideTransfersTab(); - hideRssTab(); - hideLogTab(); - }; + if (!searchTabInitialized) { + window.qBittorrent.Search.init(); + searchTabInitialized = true; + } + + $("searchTabColumn").classList.remove("invisible"); + customSyncMainDataInterval = 30000; + hideTransfersTab(); + hideRssTab(); + hideLogTab(); - const hideSearchTab = function() { - $("searchTabColumn").addClass("invisible"); + LocalPreferences.set("selected_window_tab", "search"); + }; + })(); + + const hideSearchTab = () => { + $("searchTabColumn").classList.add("invisible"); MochaUI.Desktop.resizePanels(); }; - const showRssTab = function() { - if (!rssTabInitialized) { - window.qBittorrent.Rss.init(); - rssTabInitialized = true; - } - else { - window.qBittorrent.Rss.load(); - } + const showRssTab = (() => { + let rssTabInitialized = false; + + return () => { + // we must wait until the panel is fully loaded before proceeding. + // this include's the panel's custom js, which is loaded via MochaUI.Panel's 'require' field. + // MochaUI loads these files asynchronously and thus all required libs may not be available immediately + if (!isRssPanelLoaded) { + setTimeout(() => { + showRssTab(); + }, 100); + return; + } - $("rssTabColumn").removeClass("invisible"); - customSyncMainDataInterval = 30000; - hideTransfersTab(); - hideSearchTab(); - hideLogTab(); - }; + if (!rssTabInitialized) { + window.qBittorrent.Rss.init(); + rssTabInitialized = true; + } + else { + window.qBittorrent.Rss.load(); + } + + $("rssTabColumn").classList.remove("invisible"); + customSyncMainDataInterval = 30000; + hideTransfersTab(); + hideSearchTab(); + hideLogTab(); - const hideRssTab = function() { - $("rssTabColumn").addClass("invisible"); + LocalPreferences.set("selected_window_tab", "rss"); + }; + })(); + + const hideRssTab = () => { + $("rssTabColumn").classList.add("invisible"); window.qBittorrent.Rss && window.qBittorrent.Rss.unload(); MochaUI.Desktop.resizePanels(); }; - const showLogTab = function() { - if (!logTabInitialized) { - window.qBittorrent.Log.init(); - logTabInitialized = true; - } - else { - window.qBittorrent.Log.load(); - } + const showLogTab = (() => { + let logTabInitialized = false; + + return () => { + // we must wait until the panel is fully loaded before proceeding. + // this include's the panel's custom js, which is loaded via MochaUI.Panel's 'require' field. + // MochaUI loads these files asynchronously and thus all required libs may not be available immediately + if (!isLogPanelLoaded) { + setTimeout(() => { + showLogTab(); + }, 100); + return; + } - $('logTabColumn').removeClass('invisible'); - customSyncMainDataInterval = 30000; - hideTransfersTab(); - hideSearchTab(); - hideRssTab(); - }; + if (!logTabInitialized) { + window.qBittorrent.Log.init(); + logTabInitialized = true; + } + else { + window.qBittorrent.Log.load(); + } - const hideLogTab = function() { - $('logTabColumn').addClass('invisible'); + $("logTabColumn").classList.remove("invisible"); + customSyncMainDataInterval = 30000; + hideTransfersTab(); + hideSearchTab(); + hideRssTab(); + + LocalPreferences.set("selected_window_tab", "log"); + }; + })(); + + const hideLogTab = () => { + $("logTabColumn").classList.add("invisible"); MochaUI.Desktop.resizePanels(); window.qBittorrent.Log && window.qBittorrent.Log.unload(); }; - const addSearchPanel = function() { + const addSearchPanel = () => { new MochaUI.Panel({ - id: 'SearchPanel', - title: 'Search', + id: "SearchPanel", + title: "Search", header: false, padding: { top: 0, @@ -1175,18 +1404,24 @@ window.addEvent('load', function() { bottom: 0, left: 0 }, - loadMethod: 'xhr', - contentURL: 'views/search.html', - content: '', - column: 'searchTabColumn', + loadMethod: "xhr", + contentURL: "views/search.html", + require: { + js: ["scripts/search.js"], + onload: () => { + isSearchPanelLoaded = true; + }, + }, + content: "", + column: "searchTabColumn", height: null }); }; - const addRssPanel = function() { + const addRssPanel = () => { new MochaUI.Panel({ - id: 'RssPanel', - title: 'Rss', + id: "RssPanel", + title: "Rss", header: false, padding: { top: 0, @@ -1194,18 +1429,21 @@ window.addEvent('load', function() { bottom: 0, left: 0 }, - loadMethod: 'xhr', - contentURL: 'views/rss.html', - content: '', - column: 'rssTabColumn', + loadMethod: "xhr", + contentURL: "views/rss.html", + onContentLoaded: () => { + isRssPanelLoaded = true; + }, + content: "", + column: "rssTabColumn", height: null }); }; - var addLogPanel = function() { + const addLogPanel = () => { new MochaUI.Panel({ - id: 'LogPanel', - title: 'Log', + id: "LogPanel", + title: "Log", header: true, padding: { top: 0, @@ -1213,34 +1451,49 @@ window.addEvent('load', function() { bottom: 0, left: 0 }, - loadMethod: 'xhr', - contentURL: 'views/log.html', + loadMethod: "xhr", + contentURL: "views/log.html", require: { - css: ['css/lib/vanillaSelectBox.css'], - js: ['scripts/lib/vanillaSelectBox.js'], + css: ["css/vanillaSelectBox.css"], + js: ["scripts/lib/vanillaSelectBox.js"], + onload: () => { + isLogPanelLoaded = true; + }, }, - tabsURL: 'views/logTabs.html', - tabsOnload: function() { - MochaUI.initializeTabs('panelTabs'); + tabsURL: "views/logTabs.html", + tabsOnload: () => { + MochaUI.initializeTabs("panelTabs"); - $('logMessageLink').addEvent('click', function(e) { - window.qBittorrent.Log.setCurrentTab('main'); + $("logMessageLink").addEventListener("click", (e) => { + window.qBittorrent.Log.setCurrentTab("main"); }); - $('logPeerLink').addEvent('click', function(e) { - window.qBittorrent.Log.setCurrentTab('peer'); + $("logPeerLink").addEventListener("click", (e) => { + window.qBittorrent.Log.setCurrentTab("peer"); }); }, collapsible: false, - content: '', - column: 'logTabColumn', + content: "", + column: "logTabColumn", height: null }); }; + const handleDownloadParam = () => { + // Extract torrent URL from download param in WebUI URL hash + const downloadHash = "#download="; + if (!location.hash.startsWith(downloadHash)) + return; + + const url = decodeURIComponent(location.hash.substring(downloadHash.length)); + // Remove the processed hash from the URL + history.replaceState("", document.title, (location.pathname + location.search)); + showDownloadPage([url]); + }; + new MochaUI.Panel({ - id: 'transferList', - title: 'Panel', + id: "transferList", + title: "Panel", header: false, padding: { top: 0, @@ -1248,151 +1501,141 @@ window.addEvent('load', function() { bottom: 0, left: 0 }, - loadMethod: 'xhr', - contentURL: 'views/transferlist.html', - onContentLoaded: function() { + loadMethod: "xhr", + contentURL: "views/transferlist.html", + onContentLoaded: () => { handleDownloadParam(); updateMainData(); }, - column: 'mainColumn', - onResize: saveColumnSizes, + column: "mainColumn", + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { + saveColumnSizes(); + }), height: null }); - let prop_h = LocalPreferences.get('properties_height_rel'); - if ($defined(prop_h)) - prop_h = prop_h.toFloat() * Window.getSize().y; + let prop_h = LocalPreferences.get("properties_height_rel"); + if (prop_h !== null) + prop_h = Number(prop_h) * Window.getSize().y; else prop_h = Window.getSize().y / 2.0; new MochaUI.Panel({ - id: 'propertiesPanel', - title: 'Panel', - header: true, + id: "propertiesPanel", + title: "Panel", padding: { top: 0, right: 0, bottom: 0, left: 0 }, - contentURL: 'views/properties.html', + contentURL: "views/properties.html", require: { - css: ['css/Tabs.css', 'css/dynamicTable.css'], - js: ['scripts/prop-general.js', 'scripts/prop-trackers.js', 'scripts/prop-peers.js', 'scripts/prop-webseeds.js', 'scripts/prop-files.js'], + js: ["scripts/prop-general.js", "scripts/prop-trackers.js", "scripts/prop-peers.js", "scripts/prop-webseeds.js", "scripts/prop-files.js"], + onload: () => { + updatePropertiesPanel = () => { + switch (LocalPreferences.get("selected_properties_tab")) { + case "propGeneralLink": + window.qBittorrent.PropGeneral.updateData(); + break; + case "propTrackersLink": + window.qBittorrent.PropTrackers.updateData(); + break; + case "propPeersLink": + window.qBittorrent.PropPeers.updateData(); + break; + case "propWebSeedsLink": + window.qBittorrent.PropWebseeds.updateData(); + break; + case "propFilesLink": + window.qBittorrent.PropFiles.updateData(); + break; + } + }; + } }, - tabsURL: 'views/propertiesToolbar.html', - tabsOnload: function() { - MochaUI.initializeTabs('propertiesTabs'); - - updatePropertiesPanel = function() { - if (!$('prop_general').hasClass('invisible')) { - if (window.qBittorrent.PropGeneral !== undefined) - window.qBittorrent.PropGeneral.updateData(); - } - else if (!$('prop_trackers').hasClass('invisible')) { - if (window.qBittorrent.PropTrackers !== undefined) - window.qBittorrent.PropTrackers.updateData(); - } - else if (!$('prop_peers').hasClass('invisible')) { - if (window.qBittorrent.PropPeers !== undefined) - window.qBittorrent.PropPeers.updateData(); - } - else if (!$('prop_webseeds').hasClass('invisible')) { - if (window.qBittorrent.PropWebseeds !== undefined) - window.qBittorrent.PropWebseeds.updateData(); - } - else if (!$('prop_files').hasClass('invisible')) { - if (window.qBittorrent.PropFiles !== undefined) - window.qBittorrent.PropFiles.updateData(); + tabsURL: "views/propertiesToolbar.html", + tabsOnload: () => {}, // must be included, otherwise panel won't load properly + onContentLoaded: function() { + this.panelHeaderCollapseBoxEl.classList.add("invisible"); + + const togglePropertiesPanel = () => { + this.collapseToggleEl.click(); + LocalPreferences.set("properties_panel_collapsed", this.isCollapsed.toString()); + }; + + const selectTab = (tabID) => { + const isAlreadySelected = this.panelHeaderEl.getElementById(tabID).classList.contains("selected"); + if (!isAlreadySelected) { + for (const tab of this.panelHeaderEl.getElementById("propertiesTabs").children) + tab.classList.toggle("selected", tab.id === tabID); + + const tabContentID = tabID.replace("Link", ""); + for (const tabContent of this.contentEl.children) + tabContent.classList.toggle("invisible", tabContent.id !== tabContentID); + + LocalPreferences.set("selected_properties_tab", tabID); } + + if (isAlreadySelected || this.isCollapsed) + togglePropertiesPanel(); }; - $('PropGeneralLink').addEvent('click', function(e) { - $$('.propertiesTabContent').addClass('invisible'); - $('prop_general').removeClass("invisible"); - hideFilesFilter(); - updatePropertiesPanel(); - LocalPreferences.set('selected_tab', this.id); - }); + const lastUsedTab = LocalPreferences.get("selected_properties_tab", "propGeneralLink"); + selectTab(lastUsedTab); - $('PropTrackersLink').addEvent('click', function(e) { - $$('.propertiesTabContent').addClass('invisible'); - $('prop_trackers').removeClass("invisible"); - hideFilesFilter(); - updatePropertiesPanel(); - LocalPreferences.set('selected_tab', this.id); - }); + const startCollapsed = LocalPreferences.get("properties_panel_collapsed", "false") === "true"; + if (startCollapsed) + togglePropertiesPanel(); - $('PropPeersLink').addEvent('click', function(e) { - $$('.propertiesTabContent').addClass('invisible'); - $('prop_peers').removeClass("invisible"); - hideFilesFilter(); - updatePropertiesPanel(); - LocalPreferences.set('selected_tab', this.id); - }); + this.panelHeaderContentEl.addEventListener("click", (e) => { + const selectedTab = e.target.closest("li"); + if (!selectedTab) + return; - $('PropWebSeedsLink').addEvent('click', function(e) { - $$('.propertiesTabContent').addClass('invisible'); - $('prop_webseeds').removeClass("invisible"); - hideFilesFilter(); + selectTab(selectedTab.id); updatePropertiesPanel(); - LocalPreferences.set('selected_tab', this.id); - }); - $('PropFilesLink').addEvent('click', function(e) { - $$('.propertiesTabContent').addClass('invisible'); - $('prop_files').removeClass("invisible"); - showFilesFilter(); - updatePropertiesPanel(); - LocalPreferences.set('selected_tab', this.id); + const showFilesFilter = (selectedTab.id === "propFilesLink") && !this.isCollapsed; + document.getElementById("torrentFilesFilterToolbar").classList.toggle("invisible", !showFilesFilter); }); - $('propertiesPanel_collapseToggle').addEvent('click', function(e) { - updatePropertiesPanel(); - }); + const showFilesFilter = (lastUsedTab === "propFilesLink") && !this.isCollapsed; + if (showFilesFilter) + document.getElementById("torrentFilesFilterToolbar").classList.remove("invisible"); }, - column: 'mainColumn', + column: "mainColumn", height: prop_h }); - const showFilesFilter = function() { - $('torrentFilesFilterToolbar').removeClass("invisible"); - }; - - const hideFilesFilter = function() { - $('torrentFilesFilterToolbar').addClass("invisible"); - }; - - let prevTorrentsFilterValue; - let torrentsFilterInputTimer = null; // listen for changes to torrentsFilterInput - $('torrentsFilterInput').addEvent('input', function() { - const value = $('torrentsFilterInput').get("value"); - if (value !== prevTorrentsFilterValue) { - prevTorrentsFilterValue = value; - clearTimeout(torrentsFilterInputTimer); - torrentsFilterInputTimer = setTimeout(function() { - torrentsTable.updateTable(false); - }, 400); - } + let torrentsFilterInputTimer = -1; + $("torrentsFilterInput").addEventListener("input", () => { + clearTimeout(torrentsFilterInputTimer); + torrentsFilterInputTimer = setTimeout(() => { + torrentsFilterInputTimer = -1; + torrentsTable.updateTable(); + }, window.qBittorrent.Misc.FILTER_INPUT_DELAY); }); - $('transfersTabLink').addEvent('click', showTransfersTab); - $('searchTabLink').addEvent('click', showSearchTab); - $('rssTabLink').addEvent('click', showRssTab); - $('logTabLink').addEvent('click', showLogTab); + document.getElementById("torrentsFilterToolbar").addEventListener("change", (e) => { torrentsTable.updateTable(); }); + + $("transfersTabLink").addEventListener("click", () => { showTransfersTab(); }); + $("searchTabLink").addEventListener("click", () => { showSearchTab(); }); + $("rssTabLink").addEventListener("click", () => { showRssTab(); }); + $("logTabLink").addEventListener("click", () => { showLogTab(); }); updateTabDisplay(); const registerDragAndDrop = () => { - $('desktop').addEventListener('dragover', (ev) => { + $("desktop").addEventListener("dragover", (ev) => { if (ev.preventDefault) ev.preventDefault(); }); - $('desktop').addEventListener('dragenter', (ev) => { + $("desktop").addEventListener("dragenter", (ev) => { if (ev.preventDefault) ev.preventDefault(); }); - $('desktop').addEventListener("drop", (ev) => { + $("desktop").addEventListener("drop", (ev) => { if (ev.preventDefault) ev.preventDefault(); @@ -1408,24 +1651,25 @@ window.addEvent('load', function() { return; } - const id = 'uploadPage'; + const id = "uploadPage"; new MochaUI.Window({ id: id, + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]", - loadMethod: 'iframe', - contentURL: new URI("upload.html").toString(), - addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari + loadMethod: "iframe", + contentURL: "upload.html", + addClass: "windowFrame", // fixes iframe scrolling on iOS Safari scrollbars: true, maximizable: false, paddingVertical: 0, paddingHorizontal: 0, width: loadWindowWidth(id, 500), height: loadWindowHeight(id, 460), - onResize: () => { + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { saveWindowSize(id); - }, + }), onContentLoaded: () => { - const fileInput = $(`${id}_iframe`).contentDocument.getElementById('fileselect'); + const fileInput = $(`${id}_iframe`).contentDocument.getElementById("fileselect"); fileInput.files = droppedFiles; } }); @@ -1435,28 +1679,32 @@ window.addEvent('load', function() { if (droppedText.length > 0) { // dropped text - const urls = droppedText.split('\n') + const urls = droppedText.split("\n") .map((str) => str.trim()) .filter((str) => { const lowercaseStr = str.toLowerCase(); return lowercaseStr.startsWith("http:") || lowercaseStr.startsWith("https:") || lowercaseStr.startsWith("magnet:") - || ((str.length === 40) && !(/[^0-9A-Fa-f]/.test(str))) // v1 hex-encoded SHA-1 info-hash - || ((str.length === 32) && !(/[^2-7A-Za-z]/.test(str))); // v1 Base32 encoded SHA-1 info-hash + || ((str.length === 40) && !(/[^0-9A-F]/i.test(str))) // v1 hex-encoded SHA-1 info-hash + || ((str.length === 32) && !(/[^2-7A-Z]/i.test(str))); // v1 Base32 encoded SHA-1 info-hash }); if (urls.length <= 0) return; - const id = 'downloadPage'; - const contentURI = new URI('download.html').setData("urls", urls.map(encodeURIComponent).join("|")); + const id = "downloadPage"; + const contentURL = new URL("download.html", window.location); + contentURL.search = new URLSearchParams({ + urls: urls.map(encodeURIComponent).join("|") + }); new MochaUI.Window({ id: id, + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Download from URLs)QBT_TR[CONTEXT=downloadFromURL]", - loadMethod: 'iframe', - contentURL: contentURI.toString(), - addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari + loadMethod: "iframe", + contentURL: contentURL.toString(), + addClass: "windowFrame", // fixes iframe scrolling on iOS Safari scrollbars: true, maximizable: false, closable: true, @@ -1464,59 +1712,42 @@ window.addEvent('load', function() { paddingHorizontal: 0, width: loadWindowWidth(id, 500), height: loadWindowHeight(id, 600), - onResize: () => { + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { saveWindowSize(id); - } + }) }); } }); }; registerDragAndDrop(); -}); - -function registerMagnetHandler() { - if (typeof navigator.registerProtocolHandler !== 'function') { - if (window.location.protocol !== 'https:') - alert("QBT_TR(To use this feature, the WebUI needs to be accessed over HTTPS)QBT_TR[CONTEXT=MainWindow]"); - else - alert("QBT_TR(Your browser does not support this feature)QBT_TR[CONTEXT=MainWindow]"); - return; - } - const hashString = location.hash ? location.hash.replace(/^#/, '') : ''; - const hashParams = new URLSearchParams(hashString); - hashParams.set('download', ''); - - const templateHashString = hashParams.toString().replace('download=', 'download=%s'); - const templateUrl = location.origin + location.pathname - + location.search + '#' + templateHashString; - - navigator.registerProtocolHandler('magnet', templateUrl, - 'qBittorrent WebUI magnet handler'); -} - -function handleDownloadParam() { - // Extract torrent URL from download param in WebUI URL hash - const downloadHash = "#download="; - if (location.hash.indexOf(downloadHash) !== 0) - return; - - const url = decodeURIComponent(location.hash.substring(downloadHash.length)); - // Remove the processed hash from the URL - history.replaceState('', document.title, (location.pathname + location.search)); - showDownloadPage([url]); -} - -function closeWindows() { - MochaUI.closeAll(); -} + window.addEventListener("keydown", (event) => { + switch (event.key) { + case "a": + case "A": + if (event.ctrlKey) { + if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA")) + return; + if (event.target.isContentEditable) + return; + event.preventDefault(); + torrentsTable.selectAll(); + } + break; -function setupCopyEventHandler() { - if (clipboardEvent) - clipboardEvent.destroy(); + case "Delete": + if ((event.target.nodeName === "INPUT") || (event.target.nodeName === "TEXTAREA")) + return; + if (event.target.isContentEditable) + return; + event.preventDefault(); + deleteSelectedTorrentsFN(event.shiftKey); + break; + } + }); - clipboardEvent = new ClipboardJS('.copyToClipboard', { - text: function(trigger) { + new ClipboardJS(".copyToClipboard", { + text: (trigger) => { switch (trigger.id) { case "copyName": return copyNameFN(); @@ -1535,34 +1766,32 @@ function setupCopyEventHandler() { } } }); -} +}); -new Keyboard({ - defaultEventType: 'keydown', - events: { - 'ctrl+a': function(event) { - if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") - return; - if (event.target.isContentEditable) - return; - torrentsTable.selectAll(); - event.preventDefault(); - }, - 'delete': function(event) { - if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") - return; - if (event.target.isContentEditable) - return; - deleteFN(); - event.preventDefault(); - }, - 'shift+delete': (event) => { - if (event.target.nodeName == "INPUT" || event.target.nodeName == "TEXTAREA") - return; - if (event.target.isContentEditable) - return; - deleteFN(true); - event.preventDefault(); - } - } -}).activate(); +window.addEventListener("load", async () => { + await window.qBittorrent.Client.initializeCaches(); + + // switch to previously used tab + const previouslyUsedTab = LocalPreferences.get("selected_window_tab", "transfers"); + switch (previouslyUsedTab) { + case "search": + if (window.qBittorrent.Client.isShowSearchEngine()) + $("searchTabLink").click(); + break; + case "rss": + if (window.qBittorrent.Client.isShowRssReader()) + $("rssTabLink").click(); + break; + case "log": + if (window.qBittorrent.Client.isShowLogViewer()) + $("logTabLink").click(); + break; + case "transfers": + $("transfersTabLink").click(); + break; + default: + console.error(`Unexpected 'selected_window_tab' value: ${previouslyUsedTab}`); + $("transfersTabLink").click(); + break; + }; +}); diff --git a/src/webui/www/private/scripts/color-scheme.js b/src/webui/www/private/scripts/color-scheme.js new file mode 100644 index 000000000000..d02fce24347b --- /dev/null +++ b/src/webui/www/private/scripts/color-scheme.js @@ -0,0 +1,56 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 sledgehammer999 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project's "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +"use strict"; + +window.qBittorrent ??= {}; +window.qBittorrent.ColorScheme ??= (() => { + const exports = () => { + return { + update, + }; + }; + + const LocalPreferences = new window.qBittorrent.LocalPreferences.LocalPreferences(); + const colorSchemeQuery = window.matchMedia("(prefers-color-scheme: dark)"); + + const update = () => { + const root = document.documentElement; + const colorScheme = LocalPreferences.get("color_scheme"); + const validScheme = (colorScheme === "light") || (colorScheme === "dark"); + const isDark = colorSchemeQuery.matches; + root.classList.toggle("dark", ((!validScheme && isDark) || (colorScheme === "dark"))); + }; + + colorSchemeQuery.addEventListener("change", update); + + return exports(); +})(); +Object.freeze(window.qBittorrent.ColorScheme); + +window.qBittorrent.ColorScheme.update(); diff --git a/src/webui/www/private/scripts/contextmenu.js b/src/webui/www/private/scripts/contextmenu.js index 167570bc379a..7831461bf5fe 100644 --- a/src/webui/www/private/scripts/contextmenu.js +++ b/src/webui/www/private/scripts/contextmenu.js @@ -26,19 +26,18 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.ContextMenu = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.ContextMenu ??= (() => { + const exports = () => { return { ContextMenu: ContextMenu, TorrentsTableContextMenu: TorrentsTableContextMenu, + StatusesFilterContextMenu: StatusesFilterContextMenu, CategoriesFilterContextMenu: CategoriesFilterContextMenu, TagsFilterContextMenu: TagsFilterContextMenu, + TrackersFilterContextMenu: TrackersFilterContextMenu, SearchPluginsTableContextMenu: SearchPluginsTableContextMenu, RssFeedContextMenu: RssFeedContextMenu, RssArticleContextMenu: RssArticleContextMenu, @@ -47,606 +46,689 @@ window.qBittorrent.ContextMenu = (function() { }; let lastShownContextMenu = null; - const ContextMenu = new Class({ - //implements - Implements: [Options, Events], - - //options - options: { - actions: {}, - menu: 'menu_id', - stopEvent: true, - targets: 'body', - offsets: { - x: 0, - y: 0 - }, - onShow: $empty, - onHide: $empty, - onClick: $empty, - fadeSpeed: 200, - touchTimer: 600 - }, - - //initialization - initialize: function(options) { - //set options - this.setOptions(options); - - //option diffs menu + class ContextMenu { + constructor(options) { + this.options = { + actions: {}, + menu: "menu_id", + stopEvent: true, + targets: "body", + offsets: { + x: 0, + y: 0 + }, + onShow: () => {}, + onHide: () => {}, + onClick: () => {}, + fadeSpeed: 200, + touchTimer: 600, + ...options + }; + + // option diffs menu this.menu = $(this.options.menu); - this.targets = $$(this.options.targets); - //fx + // fx this.fx = new Fx.Tween(this.menu, { - property: 'opacity', + property: "opacity", duration: this.options.fadeSpeed, - onComplete: function() { - if (this.getStyle('opacity')) { - this.setStyle('visibility', 'visible'); - } - else { - this.setStyle('visibility', 'hidden'); - } - }.bind(this.menu) + onComplete: () => { + this.menu.style.visibility = (getComputedStyle(this.menu).opacity > 0) ? "visible" : "hidden"; + } }); - //hide and begin the listener + // hide and begin the listener this.hide().startListener(); - //hide the menu - this.menu.setStyles({ - 'position': 'absolute', - 'top': '-900000px', - 'display': 'block' - }); - }, + // hide the menu + this.menu.style.position = "absolute"; + this.menu.style.top = "-900000px"; + this.menu.style.display = "block"; + } - adjustMenuPosition: function(e) { + adjustMenuPosition(e) { this.updateMenuItems(); const scrollableMenuMaxHeight = document.documentElement.clientHeight * 0.75; - if (this.menu.hasClass('scrollableMenu')) - this.menu.setStyle('max-height', scrollableMenuMaxHeight); + if (this.menu.classList.contains("scrollableMenu")) + this.menu.style.maxHeight = `${scrollableMenuMaxHeight}px`; // draw the menu off-screen to know the menu dimensions - this.menu.setStyles({ - left: '-999em', - top: '-999em' - }); + this.menu.style.left = "-999em"; + this.menu.style.top = "-999em"; // position the menu - let xPosMenu = e.page.x + this.options.offsets.x; - let yPosMenu = e.page.y + this.options.offsets.y; - if (xPosMenu + this.menu.offsetWidth > document.documentElement.clientWidth) + let xPosMenu = e.pageX + this.options.offsets.x; + let yPosMenu = e.pageY + this.options.offsets.y; + if ((xPosMenu + this.menu.offsetWidth) > document.documentElement.clientWidth) xPosMenu -= this.menu.offsetWidth; - if (yPosMenu + this.menu.offsetHeight > document.documentElement.clientHeight) + if ((yPosMenu + this.menu.offsetHeight) > document.documentElement.clientHeight) yPosMenu = document.documentElement.clientHeight - this.menu.offsetHeight; if (xPosMenu < 0) xPosMenu = 0; if (yPosMenu < 0) yPosMenu = 0; - this.menu.setStyles({ - left: xPosMenu, - top: yPosMenu, - position: 'absolute', - 'z-index': '2000' - }); + this.menu.style.left = `${xPosMenu}px`; + this.menu.style.top = `${yPosMenu}px`; + this.menu.style.position = "absolute"; + this.menu.style.zIndex = "2000"; // position the sub-menu - const uls = this.menu.getElementsByTagName('ul'); + const uls = this.menu.getElementsByTagName("ul"); for (let i = 0; i < uls.length; ++i) { const ul = uls[i]; - if (ul.hasClass('scrollableMenu')) - ul.setStyle('max-height', scrollableMenuMaxHeight); + if (ul.classList.contains("scrollableMenu")) + ul.style.maxHeight = `${scrollableMenuMaxHeight}px`; const rectParent = ul.parentNode.getBoundingClientRect(); const xPosOrigin = rectParent.left; const yPosOrigin = rectParent.bottom; let xPos = xPosOrigin + rectParent.width - 1; let yPos = yPosOrigin - rectParent.height - 1; - if (xPos + ul.offsetWidth > document.documentElement.clientWidth) + if ((xPos + ul.offsetWidth) > document.documentElement.clientWidth) xPos -= (ul.offsetWidth + rectParent.width - 2); - if (yPos + ul.offsetHeight > document.documentElement.clientHeight) + if ((yPos + ul.offsetHeight) > document.documentElement.clientHeight) yPos = document.documentElement.clientHeight - ul.offsetHeight; if (xPos < 0) xPos = 0; if (yPos < 0) yPos = 0; - ul.setStyles({ - 'margin-left': xPos - xPosOrigin, - 'margin-top': yPos - yPosOrigin - }); + ul.style.marginLeft = `${xPos - xPosOrigin}px`; + ul.style.marginTop = `${yPos - yPosOrigin}px`; } - }, + } - setupEventListeners: function(elem) { - elem.addEvent('contextmenu', function(e) { + setupEventListeners(elem) { + elem.addEventListener("contextmenu", (e) => { this.triggerMenu(e, elem); - }.bind(this)); - elem.addEvent('click', function(e) { + }); + elem.addEventListener("click", (e) => { this.hide(); - }.bind(this)); + }); - elem.addEvent('touchstart', function(e) { - e.preventDefault(); - clearTimeout(this.touchstartTimer); + elem.addEventListener("touchstart", (e) => { this.hide(); + this.touchStartAt = performance.now(); + this.touchStartEvent = e; + }, { passive: true }); + elem.addEventListener("touchend", (e) => { + const now = performance.now(); + const touchStartAt = this.touchStartAt; + const touchStartEvent = this.touchStartEvent; + + this.touchStartAt = null; + this.touchStartEvent = null; + + const isTargetUnchanged = (Math.abs(e.changedTouches[0].pageX - touchStartEvent.changedTouches[0].pageX) <= 10) && (Math.abs(e.changedTouches[0].pageY - touchStartEvent.changedTouches[0].pageY) <= 10); + if (((now - touchStartAt) >= this.options.touchTimer) && isTargetUnchanged) + this.triggerMenu(touchStartEvent, elem); + }, { passive: true }); + } - const touchstartEvent = e; - this.touchstartTimer = setTimeout(function() { - this.triggerMenu(touchstartEvent, elem); - }.bind(this), this.options.touchTimer); - }.bind(this)); - elem.addEvent('touchend', function(e) { - e.preventDefault(); - clearTimeout(this.touchstartTimer); - }.bind(this)); - }, + addTarget(t) { + if (t.hasEventListeners) + return; - addTarget: function(t) { - this.targets[this.targets.length] = t; + // prevent long press from selecting this text + t.style.userSelect = "none"; + t.hasEventListeners = true; this.setupEventListeners(t); - }, + } + + searchAndAddTargets() { + if (this.options.targets.length > 0) + document.querySelectorAll(this.options.targets).forEach((target) => { this.addTarget(target); }); + } - triggerMenu: function(e, el) { + triggerMenu(e, el) { if (this.options.disabled) return; - //prevent default, if told to + // prevent default, if told to if (this.options.stopEvent) { - e.stop(); + e.preventDefault(); + e.stopPropagation(); } - //record this as the trigger + // record this as the trigger this.options.element = $(el); this.adjustMenuPosition(e); - //show the menu + // show the menu this.show(); - }, + } - //get things started - startListener: function() { + // get things started + startListener() { /* all elements */ - this.targets.each(function(el) { - this.setupEventListeners(el); - }.bind(this), this); + this.searchAndAddTargets(); /* menu items */ - this.menu.getElements('a').each(function(item) { - item.addEvent('click', function(e) { - e.preventDefault(); - if (!item.hasClass('disabled')) { - this.execute(item.get('href').split('#')[1], $(this.options.element)); - this.fireEvent('click', [item, e]); - } - }.bind(this)); - }, this); + this.menu.addEventListener("click", (e) => { + const menuItem = e.target.closest("li"); + if (!menuItem) + return; - //hide on body click - $(document.body).addEvent('click', function() { + e.preventDefault(); + if (!menuItem.classList.contains("disabled")) { + const anchor = menuItem.firstElementChild; + this.execute(anchor.href.split("#")[1], this.options.element); + this.options.onClick.call(this, anchor, e); + } + else { + e.stopPropagation(); + } + }); + + // hide on body click + $(document.body).addEventListener("click", () => { this.hide(); - }.bind(this)); - }, + this.options.element = null; + }); + } - updateMenuItems: function() {}, + updateMenuItems() {} - //show menu - show: function(trigger) { - if (lastShownContextMenu && lastShownContextMenu != this) + // show menu + show(trigger) { + if (lastShownContextMenu && (lastShownContextMenu !== this)) lastShownContextMenu.hide(); this.fx.start(1); - this.fireEvent('show'); - this.shown = true; + this.options.onShow.call(this); lastShownContextMenu = this; return this; - }, + } - //hide the menu - hide: function(trigger) { - if (this.shown) { + // hide the menu + hide(trigger) { + if (lastShownContextMenu && (lastShownContextMenu.menu.style.visibility !== "hidden")) { this.fx.start(0); - //this.menu.fade('out'); - this.fireEvent('hide'); - this.shown = false; + this.options.onHide.call(this); } return this; - }, + } - setItemChecked: function(item, checked) { - this.menu.getElement('a[href$=' + item + ']').firstChild.style.opacity = - checked ? '1' : '0'; + setItemChecked(item, checked) { + this.menu.querySelector(`a[href$="${item}"]`).firstElementChild.style.opacity = + checked ? "1" : "0"; return this; - }, + } - getItemChecked: function(item) { - return '0' != this.menu.getElement('a[href$=' + item + ']').firstChild.style.opacity; - }, + getItemChecked(item) { + return this.menu.querySelector(`a[href$="${item}"]`).firstElementChild.style.opacity !== "0"; + } - //hide an item - hideItem: function(item) { - this.menu.getElement('a[href$=' + item + ']').parentNode.addClass('invisible'); + // hide an item + hideItem(item) { + this.menu.querySelector(`a[href$="${item}"]`).parentNode.classList.add("invisible"); return this; - }, + } - //show an item - showItem: function(item) { - this.menu.getElement('a[href$=' + item + ']').parentNode.removeClass('invisible'); + // show an item + showItem(item) { + this.menu.querySelector(`a[href$="${item}"]`).parentNode.classList.remove("invisible"); return this; - }, + } - //disable the entire menu - disable: function() { + // enable/disable an item + setEnabled(item, enabled) { + this.menu.querySelector(`:scope a[href$="${item}"]`).parentElement.classList.toggle("disabled", !enabled); + return this; + } + + // disable the entire menu + disable() { this.options.disabled = true; return this; - }, + } - //enable the entire menu - enable: function() { + // enable the entire menu + enable() { this.options.disabled = false; return this; - }, + } - //execute an action - execute: function(action, element) { - if (this.options.actions[action]) { + // execute an action + execute(action, element) { + if (this.options.actions[action]) this.options.actions[action](element, this, action); - } return this; } - }); + }; + + class FilterListContextMenu extends ContextMenu { + constructor(options) { + super(options); + this.torrentObserver = new MutationObserver((records, observer) => { + this.updateTorrentActions(); + }); + } + + startTorrentObserver() { + this.torrentObserver.observe(torrentsTable.tableBody, { childList: true }); + } - const TorrentsTableContextMenu = new Class({ - Extends: ContextMenu, + stopTorrentObserver() { + this.torrentObserver.disconnect(); + } - updateMenuItems: function() { + updateTorrentActions() { + const torrentsVisible = torrentsTable.tableBody.children.length > 0; + this.setEnabled("startTorrents", torrentsVisible) + .setEnabled("stopTorrents", torrentsVisible) + .setEnabled("deleteTorrents", torrentsVisible); + } + }; + + class TorrentsTableContextMenu extends ContextMenu { + updateMenuItems() { let all_are_seq_dl = true; let there_are_seq_dl = false; let all_are_f_l_piece_prio = true; let there_are_f_l_piece_prio = false; let all_are_downloaded = true; - let all_are_paused = true; - let there_are_paused = false; + let all_are_stopped = true; + let there_are_stopped = false; let all_are_force_start = true; let there_are_force_start = false; let all_are_super_seeding = true; let all_are_auto_tmm = true; let there_are_auto_tmm = false; - const tagsSelectionState = Object.clone(tagList); + let thereAreV1Hashes = false; + let thereAreV2Hashes = false; + const tagCount = new Map(); + const categoryCount = new Map(); - const h = torrentsTable.selectedRowsIds(); - h.each(function(item, index) { - const data = torrentsTable.rows.get(item).full_data; + const selectedRows = torrentsTable.selectedRowsIds(); + selectedRows.forEach((item, index) => { + const data = torrentsTable.getRow(item).full_data; - if (data['seq_dl'] !== true) + if (data["seq_dl"] !== true) all_are_seq_dl = false; else there_are_seq_dl = true; - if (data['f_l_piece_prio'] !== true) + if (data["f_l_piece_prio"] !== true) all_are_f_l_piece_prio = false; else there_are_f_l_piece_prio = true; - if (data['progress'] != 1.0) // not downloaded + if (data["progress"] !== 1.0) // not downloaded all_are_downloaded = false; - else if (data['super_seeding'] !== true) + else if (data["super_seeding"] !== true) all_are_super_seeding = false; - if (data['state'] != 'pausedUP' && data['state'] != 'pausedDL') - all_are_paused = false; + if ((data["state"] !== "stoppedUP") && (data["state"] !== "stoppedDL")) + all_are_stopped = false; else - there_are_paused = true; + there_are_stopped = true; - if (data['force_start'] !== true) + if (data["force_start"] !== true) all_are_force_start = false; else there_are_force_start = true; - if (data['auto_tmm'] === true) + if (data["auto_tmm"] === true) there_are_auto_tmm = true; else all_are_auto_tmm = false; - const torrentTags = data['tags'].split(', '); - for (const key in tagsSelectionState) { - const tag = tagsSelectionState[key]; - const tagExists = torrentTags.contains(tag.name); - if ((tag.checked !== undefined) && (tag.checked != tagExists)) - tag.indeterminate = true; - if (tag.checked === undefined) - tag.checked = tagExists; - else - tag.checked = tag.checked && tagExists; + if (data["infohash_v1"] !== "") + thereAreV1Hashes = true; + + if (data["infohash_v2"] !== "") + thereAreV2Hashes = true; + + const torrentTags = data["tags"].split(", "); + for (const tag of torrentTags) { + const count = tagCount.get(tag); + tagCount.set(tag, ((count !== undefined) ? (count + 1) : 1)); } - }); - let show_seq_dl = true; + const torrentCategory = data["category"]; + const count = categoryCount.get(torrentCategory); + categoryCount.set(torrentCategory, ((count !== undefined) ? (count + 1) : 1)); + }); // hide renameFiles when more than 1 torrent is selected - if (h.length == 1) { - const data = torrentsTable.rows.get(h[0]).full_data; - let metadata_downloaded = !(data['state'] == 'metaDL' || data['state'] == 'forcedMetaDL' || data['total_size'] == -1); + if (selectedRows.length === 1) { + const data = torrentsTable.getRow(selectedRows[0]).full_data; + const metadata_downloaded = !((data["state"] === "metaDL") || (data["state"] === "forcedMetaDL") || (data["total_size"] === -1)); + this.showItem("rename"); // hide renameFiles when metadata hasn't been downloaded yet metadata_downloaded - ? this.showItem('renameFiles') - : this.hideItem('renameFiles'); + ? this.showItem("renameFiles") + : this.hideItem("renameFiles"); + } + else { + this.hideItem("renameFiles"); + this.hideItem("rename"); } - else - this.hideItem('renameFiles'); - - if (!all_are_seq_dl && there_are_seq_dl) - show_seq_dl = false; - - let show_f_l_piece_prio = true; - - if (!all_are_f_l_piece_prio && there_are_f_l_piece_prio) - show_f_l_piece_prio = false; if (all_are_downloaded) { - this.hideItem('downloadLimit'); - this.menu.getElement('a[href$=uploadLimit]').parentNode.addClass('separator'); - this.hideItem('sequentialDownload'); - this.hideItem('firstLastPiecePrio'); - this.showItem('superSeeding'); - this.setItemChecked('superSeeding', all_are_super_seeding); + this.hideItem("downloadLimit"); + this.menu.querySelector("a[href$=uploadLimit]").parentNode.classList.add("separator"); + this.hideItem("sequentialDownload"); + this.hideItem("firstLastPiecePrio"); + this.showItem("superSeeding"); + this.setItemChecked("superSeeding", all_are_super_seeding); } else { - if (!show_seq_dl && show_f_l_piece_prio) - this.menu.getElement('a[href$=firstLastPiecePrio]').parentNode.addClass('separator'); - else - this.menu.getElement('a[href$=firstLastPiecePrio]').parentNode.removeClass('separator'); + const show_seq_dl = (all_are_seq_dl || !there_are_seq_dl); + const show_f_l_piece_prio = (all_are_f_l_piece_prio || !there_are_f_l_piece_prio); + + this.menu.querySelector("a[href$=firstLastPiecePrio]").parentNode.classList.toggle("separator", (!show_seq_dl && show_f_l_piece_prio)); if (show_seq_dl) - this.showItem('sequentialDownload'); + this.showItem("sequentialDownload"); else - this.hideItem('sequentialDownload'); + this.hideItem("sequentialDownload"); if (show_f_l_piece_prio) - this.showItem('firstLastPiecePrio'); + this.showItem("firstLastPiecePrio"); else - this.hideItem('firstLastPiecePrio'); + this.hideItem("firstLastPiecePrio"); - this.setItemChecked('sequentialDownload', all_are_seq_dl); - this.setItemChecked('firstLastPiecePrio', all_are_f_l_piece_prio); + this.setItemChecked("sequentialDownload", all_are_seq_dl); + this.setItemChecked("firstLastPiecePrio", all_are_f_l_piece_prio); - this.showItem('downloadLimit'); - this.menu.getElement('a[href$=uploadLimit]').parentNode.removeClass('separator'); - this.hideItem('superSeeding'); + this.showItem("downloadLimit"); + this.menu.querySelector("a[href$=uploadLimit]").parentNode.classList.remove("separator"); + this.hideItem("superSeeding"); } - this.showItem('start'); - this.showItem('pause'); - this.showItem('forceStart'); - if (all_are_paused) - this.hideItem('pause'); + this.showItem("start"); + this.showItem("stop"); + this.showItem("forceStart"); + if (all_are_stopped) + this.hideItem("stop"); else if (all_are_force_start) - this.hideItem('forceStart'); - else if (!there_are_paused && !there_are_force_start) - this.hideItem('start'); + this.hideItem("forceStart"); + else if (!there_are_stopped && !there_are_force_start) + this.hideItem("start"); if (!all_are_auto_tmm && there_are_auto_tmm) { - this.hideItem('autoTorrentManagement'); + this.hideItem("autoTorrentManagement"); } else { - this.showItem('autoTorrentManagement'); - this.setItemChecked('autoTorrentManagement', all_are_auto_tmm); + this.showItem("autoTorrentManagement"); + this.setItemChecked("autoTorrentManagement", all_are_auto_tmm); } - const contextTagList = $('contextTagList'); - for (const tagHash in tagList) { - const checkbox = contextTagList.getElement('a[href=#Tag/' + tagHash + '] input[type=checkbox]'); - const checkboxState = tagsSelectionState[tagHash]; - checkbox.indeterminate = checkboxState.indeterminate; - checkbox.checked = checkboxState.checked; + this.setEnabled("copyInfohash1", thereAreV1Hashes); + this.setEnabled("copyInfohash2", thereAreV2Hashes); + + const contextTagList = $("contextTagList"); + for (const tag of tagMap.keys()) { + const checkbox = contextTagList.querySelector(`a[href="#Tag/${tag}"] input[type="checkbox"]`); + const count = tagCount.get(tag); + const hasCount = (count !== undefined); + const isLesser = (count < selectedRows.length); + checkbox.indeterminate = (hasCount ? isLesser : false); + checkbox.checked = (hasCount ? !isLesser : false); } - }, - - updateCategoriesSubMenu: function(category_list) { - const categoryList = $('contextCategoryList'); - categoryList.empty(); - categoryList.appendChild(new Element('li', { - html: 'QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget]' - })); - categoryList.appendChild(new Element('li', { - html: 'QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget] QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget]' - })); - - const sortedCategories = []; - Object.each(category_list, function(category) { - sortedCategories.push(category.name); - }); - sortedCategories.sort(); + + const contextCategoryList = document.getElementById("contextCategoryList"); + for (const category of categoryMap.keys()) { + const categoryIcon = contextCategoryList.querySelector(`a[href$="#Category/${category}"] img`); + const count = categoryCount.get(category); + const isEqual = ((count !== undefined) && (count === selectedRows.length)); + categoryIcon.classList.toggle("highlightedCategoryIcon", isEqual); + } + } + + updateCategoriesSubMenu(categories) { + const contextCategoryList = $("contextCategoryList"); + [...contextCategoryList.children].forEach((el) => { el.destroy(); }); + + const createMenuItem = (text, imgURL, clickFn) => { + const anchor = document.createElement("a"); + anchor.textContent = text; + anchor.addEventListener("click", () => { clickFn(); }); + + const img = document.createElement("img"); + img.src = imgURL; + img.alt = text; + anchor.prepend(img); + + const item = document.createElement("li"); + item.appendChild(anchor); + + return item; + }; + contextCategoryList.appendChild(createMenuItem("QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget]", "images/list-add.svg", torrentNewCategoryFN)); + contextCategoryList.appendChild(createMenuItem("QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget]", "images/edit-clear.svg", () => { torrentSetCategoryFN(""); })); + + const sortedCategories = [...categories.keys()]; + sortedCategories.sort(window.qBittorrent.Misc.naturalSortCollator.compare); let first = true; - Object.each(sortedCategories, function(categoryName) { - const categoryHash = genHash(categoryName); - const el = new Element('li', { - html: ' ' + window.qBittorrent.Misc.escapeHtml(categoryName) + '' + for (const categoryName of sortedCategories) { + const anchor = document.createElement("a"); + anchor.href = `#Category/${categoryName}`; + anchor.textContent = categoryName; + anchor.addEventListener("click", (event) => { + event.preventDefault(); + torrentSetCategoryFN(categoryName); }); + + const img = document.createElement("img"); + img.src = "images/view-categories.svg"; + anchor.prepend(img); + + const setCategoryItem = document.createElement("li"); + setCategoryItem.appendChild(anchor); if (first) { - el.addClass('separator'); + setCategoryItem.classList.add("separator"); first = false; } - categoryList.appendChild(el); - }); - }, - - updateTagsSubMenu: function(tagList) { - const contextTagList = $('contextTagList'); - while (contextTagList.firstChild !== null) - contextTagList.removeChild(contextTagList.firstChild); - - contextTagList.appendChild(new Element('li', { - html: '' - + 'QBT_TR(Add...)QBT_TR[CONTEXT=TransferListWidget]' - + ' QBT_TR(Add...)QBT_TR[CONTEXT=TransferListWidget]' - + '' - })); - contextTagList.appendChild(new Element('li', { - html: '' - + 'QBT_TR(Remove All)QBT_TR[CONTEXT=TransferListWidget]' - + ' QBT_TR(Remove All)QBT_TR[CONTEXT=TransferListWidget]' - + '' - })); - - const sortedTags = []; - for (const key in tagList) - sortedTags.push(tagList[key].name); - sortedTags.sort(); + + contextCategoryList.appendChild(setCategoryItem); + } + } + + updateTagsSubMenu(tags) { + const contextTagList = $("contextTagList"); + contextTagList.replaceChildren(); + + const createMenuItem = (text, imgURL, clickFn) => { + const anchor = document.createElement("a"); + anchor.textContent = text; + anchor.addEventListener("click", () => { clickFn(); }); + + const img = document.createElement("img"); + img.src = imgURL; + img.alt = text; + anchor.prepend(img); + + const item = document.createElement("li"); + item.appendChild(anchor); + + return item; + }; + contextTagList.appendChild(createMenuItem("QBT_TR(Add...)QBT_TR[CONTEXT=TransferListWidget]", "images/list-add.svg", torrentAddTagsFN)); + contextTagList.appendChild(createMenuItem("QBT_TR(Remove All)QBT_TR[CONTEXT=TransferListWidget]", "images/edit-clear.svg", torrentRemoveAllTagsFN)); + + const sortedTags = [...tags.keys()]; + sortedTags.sort(window.qBittorrent.Misc.naturalSortCollator.compare); for (let i = 0; i < sortedTags.length; ++i) { const tagName = sortedTags[i]; - const tagHash = genHash(tagName); - const el = new Element('li', { - html: '' - + ' ' + window.qBittorrent.Misc.escapeHtml(tagName) - + '' + + const input = document.createElement("input"); + input.type = "checkbox"; + input.addEventListener("click", (event) => { + input.checked = !input.checked; + }); + + const anchor = document.createElement("a"); + anchor.href = `#Tag/${tagName}`; + anchor.textContent = tagName; + anchor.addEventListener("click", (event) => { + event.preventDefault(); + torrentSetTagsFN(tagName, !input.checked); }); + anchor.prepend(input); + + const setTagItem = document.createElement("li"); + setTagItem.appendChild(anchor); if (i === 0) - el.addClass('separator'); - contextTagList.appendChild(el); + setTagItem.classList.add("separator"); + + contextTagList.appendChild(setTagItem); } } - }); + }; - const CategoriesFilterContextMenu = new Class({ - Extends: ContextMenu, - updateMenuItems: function() { + class StatusesFilterContextMenu extends FilterListContextMenu { + updateMenuItems() { + this.updateTorrentActions(); + } + }; + + class CategoriesFilterContextMenu extends FilterListContextMenu { + updateMenuItems() { const id = this.options.element.id; - if ((id != CATEGORIES_ALL) && (id != CATEGORIES_UNCATEGORIZED)) { - this.showItem('editCategory'); - this.showItem('deleteCategory'); - if (useSubcategories) { - this.showItem('createSubcategory'); - } - else { - this.hideItem('createSubcategory'); - } + if ((id !== CATEGORIES_ALL) && (id !== CATEGORIES_UNCATEGORIZED)) { + this.showItem("editCategory"); + this.showItem("deleteCategory"); + if (useSubcategories) + this.showItem("createSubcategory"); + else + this.hideItem("createSubcategory"); } else { - this.hideItem('editCategory'); - this.hideItem('deleteCategory'); - this.hideItem('createSubcategory'); + this.hideItem("editCategory"); + this.hideItem("deleteCategory"); + this.hideItem("createSubcategory"); } + + this.updateTorrentActions(); } - }); + }; - const TagsFilterContextMenu = new Class({ - Extends: ContextMenu, - updateMenuItems: function() { + class TagsFilterContextMenu extends FilterListContextMenu { + updateMenuItems() { const id = this.options.element.id; - if ((id !== TAGS_ALL.toString()) && (id !== TAGS_UNTAGGED.toString())) - this.showItem('deleteTag'); + if ((id !== TAGS_ALL) && (id !== TAGS_UNTAGGED)) + this.showItem("deleteTag"); else - this.hideItem('deleteTag'); + this.hideItem("deleteTag"); + + this.updateTorrentActions(); } - }); + }; + + class TrackersFilterContextMenu extends FilterListContextMenu { + updateMenuItems() { + const id = this.options.element.id; + if ((id !== TRACKERS_ALL) && (id !== TRACKERS_TRACKERLESS)) + this.showItem("deleteTracker"); + else + this.hideItem("deleteTracker"); - const SearchPluginsTableContextMenu = new Class({ - Extends: ContextMenu, + this.updateTorrentActions(); + } + }; - updateMenuItems: function() { - const enabledColumnIndex = function(text) { - const columns = $("searchPluginsTableFixedHeaderRow").getChildren("th"); - for (let i = 0; i < columns.length; ++i) - if (columns[i].get("html") === "Enabled") - return i; + class SearchPluginsTableContextMenu extends ContextMenu { + updateMenuItems() { + const enabledColumnIndex = (text) => { + const columns = document.querySelectorAll("#searchPluginsTableFixedHeaderRow th"); + return Array.prototype.findIndex.call(columns, (column => column.textContent === "Enabled")); }; - this.showItem('Enabled'); - this.setItemChecked('Enabled', this.options.element.getChildren("td")[enabledColumnIndex()].get("html") === "Yes"); + this.showItem("Enabled"); + this.setItemChecked("Enabled", (this.options.element.children[enabledColumnIndex()].textContent === "Yes")); - this.showItem('Uninstall'); + this.showItem("Uninstall"); } - }); + }; - const RssFeedContextMenu = new Class({ - Extends: ContextMenu, - updateMenuItems: function() { - let selectedRows = window.qBittorrent.Rss.rssFeedTable.selectedRowsIds(); - this.menu.getElement('a[href$=newSubscription]').parentNode.addClass('separator'); + class RssFeedContextMenu extends ContextMenu { + updateMenuItems() { + const selectedRows = window.qBittorrent.Rss.rssFeedTable.selectedRowsIds(); + this.menu.querySelector("a[href$=newSubscription]").parentNode.classList.add("separator"); switch (selectedRows.length) { case 0: // remove separator on top of newSubscription entry to avoid double line - this.menu.getElement('a[href$=newSubscription]').parentNode.removeClass('separator'); + this.menu.querySelector("a[href$=newSubscription]").parentNode.classList.remove("separator"); // menu when nothing selected - this.hideItem('update'); - this.hideItem('markRead'); - this.hideItem('rename'); - this.hideItem('delete'); - this.showItem('newSubscription'); - this.showItem('newFolder'); - this.showItem('updateAll'); - this.hideItem('copyFeedURL'); + this.hideItem("update"); + this.hideItem("markRead"); + this.hideItem("rename"); + this.hideItem("edit"); + this.hideItem("delete"); + this.showItem("newSubscription"); + this.showItem("newFolder"); + this.showItem("updateAll"); + this.hideItem("copyFeedURL"); break; case 1: - if (selectedRows[0] === 0) { + if (selectedRows[0] === "0") { // menu when "unread" feed selected - this.showItem('update'); - this.showItem('markRead'); - this.hideItem('rename'); - this.hideItem('delete'); - this.showItem('newSubscription'); - this.hideItem('newFolder'); - this.hideItem('updateAll'); - this.hideItem('copyFeedURL'); + this.showItem("update"); + this.showItem("markRead"); + this.hideItem("rename"); + this.hideItem("edit"); + this.hideItem("delete"); + this.showItem("newSubscription"); + this.hideItem("newFolder"); + this.hideItem("updateAll"); + this.hideItem("copyFeedURL"); } - else if (window.qBittorrent.Rss.rssFeedTable.rows[selectedRows[0]].full_data.dataUid === '') { + else if (window.qBittorrent.Rss.rssFeedTable.getRow(selectedRows[0]).full_data.dataUid === "") { // menu when single folder selected - this.showItem('update'); - this.showItem('markRead'); - this.showItem('rename'); - this.showItem('delete'); - this.showItem('newSubscription'); - this.showItem('newFolder'); - this.hideItem('updateAll'); - this.hideItem('copyFeedURL'); + this.showItem("update"); + this.showItem("markRead"); + this.showItem("rename"); + this.hideItem("edit"); + this.showItem("delete"); + this.showItem("newSubscription"); + this.showItem("newFolder"); + this.hideItem("updateAll"); + this.hideItem("copyFeedURL"); } else { // menu when single feed selected - this.showItem('update'); - this.showItem('markRead'); - this.showItem('rename'); - this.showItem('delete'); - this.showItem('newSubscription'); - this.hideItem('newFolder'); - this.hideItem('updateAll'); - this.showItem('copyFeedURL'); + this.showItem("update"); + this.showItem("markRead"); + this.showItem("rename"); + this.showItem("edit"); + this.showItem("delete"); + this.showItem("newSubscription"); + this.hideItem("newFolder"); + this.hideItem("updateAll"); + this.showItem("copyFeedURL"); } break; default: // menu when multiple items selected - this.showItem('update'); - this.showItem('markRead'); - this.hideItem('rename'); - this.showItem('delete'); - this.hideItem('newSubscription'); - this.hideItem('newFolder'); - this.hideItem('updateAll'); - this.showItem('copyFeedURL'); + this.showItem("update"); + this.showItem("markRead"); + this.hideItem("rename"); + this.hideItem("edit"); + this.showItem("delete"); + this.hideItem("newSubscription"); + this.hideItem("newFolder"); + this.hideItem("updateAll"); + this.showItem("copyFeedURL"); break; } } - }); + }; - const RssArticleContextMenu = new Class({ - Extends: ContextMenu - }); + class RssArticleContextMenu extends ContextMenu {}; - const RssDownloaderRuleContextMenu = new Class({ - Extends: ContextMenu, - adjustMenuPosition: function(e) { + class RssDownloaderRuleContextMenu extends ContextMenu { + adjustMenuPosition(e) { this.updateMenuItems(); // draw the menu off-screen to know the menu dimensions - this.menu.setStyles({ - left: '-999em', - top: '-999em' - }); + this.menu.style.left = "-999em"; + this.menu.style.top = "-999em"; // position the menu - let xPosMenu = e.page.x + this.options.offsets.x - $('rssdownloaderpage').offsetLeft; - let yPosMenu = e.page.y + this.options.offsets.y - $('rssdownloaderpage').offsetTop; + let xPosMenu = e.pageX + this.options.offsets.x - $("rssdownloaderpage").offsetLeft; + let yPosMenu = e.pageY + this.options.offsets.y - $("rssdownloaderpage").offsetTop; if ((xPosMenu + this.menu.offsetWidth) > document.documentElement.clientWidth) xPosMenu -= this.menu.offsetWidth; if ((yPosMenu + this.menu.offsetHeight) > document.documentElement.clientHeight) @@ -654,40 +736,37 @@ window.qBittorrent.ContextMenu = (function() { xPosMenu = Math.max(xPosMenu, 0); yPosMenu = Math.max(yPosMenu, 0); - this.menu.setStyles({ - left: xPosMenu, - top: yPosMenu, - position: 'absolute', - 'z-index': '2000' - }); - }, - updateMenuItems: function() { - let selectedRows = window.qBittorrent.RssDownloader.rssDownloaderRulesTable.selectedRowsIds(); - this.showItem('addRule'); + this.menu.style.left = `${xPosMenu}px`; + this.menu.style.top = `${yPosMenu}px`; + this.menu.style.position = "absolute"; + this.menu.style.zIndex = "2000"; + } + updateMenuItems() { + const selectedRows = window.qBittorrent.RssDownloader.rssDownloaderRulesTable.selectedRowsIds(); + this.showItem("addRule"); switch (selectedRows.length) { case 0: // menu when nothing selected - this.hideItem('deleteRule'); - this.hideItem('renameRule'); - this.hideItem('clearDownloadedEpisodes'); + this.hideItem("deleteRule"); + this.hideItem("renameRule"); + this.hideItem("clearDownloadedEpisodes"); break; case 1: // menu when single item selected - this.showItem('deleteRule'); - this.showItem('renameRule'); - this.showItem('clearDownloadedEpisodes'); + this.showItem("deleteRule"); + this.showItem("renameRule"); + this.showItem("clearDownloadedEpisodes"); break; default: // menu when multiple items selected - this.showItem('deleteRule'); - this.hideItem('renameRule'); - this.showItem('clearDownloadedEpisodes'); + this.showItem("deleteRule"); + this.hideItem("renameRule"); + this.showItem("clearDownloadedEpisodes"); break; } } - }); + }; return exports(); })(); - Object.freeze(window.qBittorrent.ContextMenu); diff --git a/src/webui/www/private/scripts/download.js b/src/webui/www/private/scripts/download.js index 9918e6c18a91..e175d02ea0ef 100644 --- a/src/webui/www/private/scripts/download.js +++ b/src/webui/www/private/scripts/download.js @@ -21,14 +21,11 @@ * THE SOFTWARE. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.Download = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.Download ??= (() => { + const exports = () => { return { changeCategorySelect: changeCategorySelect, changeTMM: changeTMM @@ -38,120 +35,107 @@ window.qBittorrent.Download = (function() { let categories = {}; let defaultSavePath = ""; - const getCategories = function() { - new Request.JSON({ - url: 'api/v2/torrents/categories', - noCache: true, - method: 'get', - onSuccess: function(data) { - if (data) { - categories = data; - for (const i in data) { - const category = data[i]; - const option = new Element("option"); - option.set('value', category.name); - option.set('html', category.name); - $('categorySelect').appendChild(option); - } - } - } - }).send(); - }; - - const getPreferences = function() { - new Request.JSON({ - url: 'api/v2/app/preferences', - method: 'get', - noCache: true, - onFailure: function() { - alert("Could not contact qBittorrent"); - }, - onSuccess: function(pref) { - if (!pref) + const getCategories = () => { + fetch("api/v2/torrents/categories", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) return; - defaultSavePath = pref.save_path; - $('savepath').setProperty('value', defaultSavePath); - $('startTorrent').checked = !pref.start_paused_enabled; - $('addToTopOfQueue').checked = pref.add_to_top_of_queue; + const data = await response.json(); - if (pref.auto_tmm_enabled == 1) { - $('autoTMM').selectedIndex = 1; - $('savepath').disabled = true; - } - else { - $('autoTMM').selectedIndex = 0; - } + categories = data; + for (const i in data) { + if (!Object.hasOwn(data, i)) + continue; - if (pref.torrent_stop_condition === "MetadataReceived") { - $('stopCondition').selectedIndex = 1; - } - else if (pref.torrent_stop_condition === "FilesChecked") { - $('stopCondition').selectedIndex = 2; - } - else { - $('stopCondition').selectedIndex = 0; + const category = data[i]; + const option = document.createElement("option"); + option.value = category.name; + option.textContent = category.name; + $("categorySelect").appendChild(option); } + }); + }; - if (pref.torrent_content_layout === "Subfolder") { - $('contentLayout').selectedIndex = 1; - } - else if (pref.torrent_content_layout === "NoSubfolder") { - $('contentLayout').selectedIndex = 2; - } - else { - $('contentLayout').selectedIndex = 0; - } - } - }).send(); + const getPreferences = () => { + const pref = window.parent.qBittorrent.Cache.preferences.get(); + + defaultSavePath = pref.save_path; + $("savepath").value = defaultSavePath; + $("startTorrent").checked = !pref.add_stopped_enabled; + $("addToTopOfQueue").checked = pref.add_to_top_of_queue; + + if (pref.auto_tmm_enabled) { + $("autoTMM").selectedIndex = 1; + $("savepath").disabled = true; + } + else { + $("autoTMM").selectedIndex = 0; + } + + if (pref.torrent_stop_condition === "MetadataReceived") + $("stopCondition").selectedIndex = 1; + else if (pref.torrent_stop_condition === "FilesChecked") + $("stopCondition").selectedIndex = 2; + else + $("stopCondition").selectedIndex = 0; + + if (pref.torrent_content_layout === "Subfolder") + $("contentLayout").selectedIndex = 1; + else if (pref.torrent_content_layout === "NoSubfolder") + $("contentLayout").selectedIndex = 2; + else + $("contentLayout").selectedIndex = 0; }; - const changeCategorySelect = function(item) { - if (item.value == "\\other") { + const changeCategorySelect = (item) => { + if (item.value === "\\other") { item.nextElementSibling.hidden = false; item.nextElementSibling.value = ""; item.nextElementSibling.select(); - if ($('autoTMM').selectedIndex == 1) - $('savepath').value = defaultSavePath; + if ($("autoTMM").selectedIndex === 1) + $("savepath").value = defaultSavePath; } else { item.nextElementSibling.hidden = true; const text = item.options[item.selectedIndex].textContent; item.nextElementSibling.value = text; - if ($('autoTMM').selectedIndex == 1) { + if ($("autoTMM").selectedIndex === 1) { const categoryName = item.value; const category = categories[categoryName]; let savePath = defaultSavePath; if (category !== undefined) - savePath = (category['savePath'] !== "") ? category['savePath'] : `${defaultSavePath}/${categoryName}`; - $('savepath').value = savePath; + savePath = (category["savePath"] !== "") ? category["savePath"] : `${defaultSavePath}/${categoryName}`; + $("savepath").value = savePath; } } }; - const changeTMM = function(item) { - if (item.selectedIndex == 1) { - $('savepath').disabled = true; + const changeTMM = (item) => { + if (item.selectedIndex === 1) { + $("savepath").disabled = true; - const categorySelect = $('categorySelect'); + const categorySelect = $("categorySelect"); const categoryName = categorySelect.options[categorySelect.selectedIndex].value; const category = categories[categoryName]; - $('savepath').value = (category === undefined) ? "" : category['savePath']; + $("savepath").value = (category === undefined) ? "" : category["savePath"]; } else { - $('savepath').disabled = false; - $('savepath').value = defaultSavePath; + $("savepath").disabled = false; + $("savepath").value = defaultSavePath; } }; - $(window).addEventListener("load", function() { + $(window).addEventListener("load", () => { getPreferences(); getCategories(); }); return exports(); })(); - Object.freeze(window.qBittorrent.Download); diff --git a/src/webui/www/private/scripts/dynamicTable.js b/src/webui/www/private/scripts/dynamicTable.js index be66507bcf9a..ab9772a9d85a 100644 --- a/src/webui/www/private/scripts/dynamicTable.js +++ b/src/webui/www/private/scripts/dynamicTable.js @@ -31,14 +31,11 @@ **************************************************************/ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.DynamicTable = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.DynamicTable ??= (() => { + const exports = () => { return { TorrentsTable: TorrentsTable, TorrentPeersTable: TorrentPeersTable, @@ -53,7 +50,8 @@ window.qBittorrent.DynamicTable = (function() { RssArticleTable: RssArticleTable, RssDownloaderRulesTable: RssDownloaderRulesTable, RssDownloaderFeedSelectionTable: RssDownloaderFeedSelectionTable, - RssDownloaderArticlesTable: RssDownloaderArticlesTable + RssDownloaderArticlesTable: RssDownloaderArticlesTable, + TorrentWebseedsTable: TorrentWebseedsTable }; }; @@ -66,241 +64,280 @@ window.qBittorrent.DynamicTable = (function() { }; let DynamicTableHeaderContextMenuClass = null; - let ProgressColumnWidth = -1; + let progressColumnWidth = -1; const DynamicTable = new Class({ - initialize: function() {}, + initialize: () => {}, setup: function(dynamicTableDivId, dynamicTableFixedHeaderDivId, contextMenu) { this.dynamicTableDivId = dynamicTableDivId; this.dynamicTableFixedHeaderDivId = dynamicTableFixedHeaderDivId; - this.fixedTableHeader = $(dynamicTableFixedHeaderDivId).getElements('tr')[0]; - this.hiddenTableHeader = $(dynamicTableDivId).getElements('tr')[0]; - this.tableBody = $(dynamicTableDivId).getElements('tbody')[0]; - this.rows = new Hash(); + this.dynamicTableDiv = document.getElementById(dynamicTableDivId); + this.fixedTableHeader = document.querySelector(`#${dynamicTableFixedHeaderDivId} thead tr`); + this.hiddenTableHeader = this.dynamicTableDiv.querySelector(`thead tr`); + this.tableBody = this.dynamicTableDiv.querySelector(`tbody`); + this.rows = new Map(); this.selectedRows = []; this.columns = []; this.contextMenu = contextMenu; - this.sortedColumn = LocalPreferences.get('sorted_column_' + this.dynamicTableDivId, 0); - this.reverseSort = LocalPreferences.get('reverse_sort_' + this.dynamicTableDivId, '0'); + this.sortedColumn = LocalPreferences.get(`sorted_column_${this.dynamicTableDivId}`, 0); + this.reverseSort = LocalPreferences.get(`reverse_sort_${this.dynamicTableDivId}`, "0"); this.initColumns(); this.loadColumnsOrder(); this.updateTableHeaders(); this.setupCommonEvents(); this.setupHeaderEvents(); this.setupHeaderMenu(); - this.setSortedColumnIcon(this.sortedColumn, null, (this.reverseSort === '1')); + this.setupAltRow(); }, setupCommonEvents: function() { - const scrollFn = function() { - $(this.dynamicTableFixedHeaderDivId).getElements('table')[0].style.left = -$(this.dynamicTableDivId).scrollLeft + 'px'; - }.bind(this); - - $(this.dynamicTableDivId).addEvent('scroll', scrollFn); - - // if the table exists within a panel - if ($(this.dynamicTableDivId).getParent('.panel')) { - const resizeFn = function() { - const panel = $(this.dynamicTableDivId).getParent('.panel'); - let h = panel.getBoundingClientRect().height - $(this.dynamicTableFixedHeaderDivId).getBoundingClientRect().height; - $(this.dynamicTableDivId).style.height = h + 'px'; + const tableFixedHeaderDiv = $(this.dynamicTableFixedHeaderDivId); - // Workaround due to inaccurate calculation of elements heights by browser + const tableElement = tableFixedHeaderDiv.querySelector("table"); + this.dynamicTableDiv.addEventListener("scroll", function() { + tableElement.style.left = `${-this.scrollLeft}px`; + }); - let n = 2; + this.dynamicTableDiv.addEventListener("click", (e) => { + const tr = e.target.closest("tr"); + if (!tr) { + // clicking on the table body deselects all rows + this.deselectAll(); + this.setRowClass(); + return; + } - // is panel vertical scrollbar visible or does panel content not fit? - while (((panel.clientWidth != panel.offsetWidth) || (panel.clientHeight != panel.scrollHeight)) && (n > 0)) { - --n; - h -= 0.5; - $(this.dynamicTableDivId).style.height = h + 'px'; - } + if (e.ctrlKey || e.metaKey) { + // CTRL/CMD ⌘ key was pressed + if (this.isRowSelected(tr.rowId)) + this.deselectRow(tr.rowId); + else + this.selectRow(tr.rowId); + } + else if (e.shiftKey && (this.selectedRows.length === 1)) { + // Shift key was pressed + this.selectRows(this.getSelectedRowId(), tr.rowId); + } + else { + // Simple selection + this.deselectAll(); + this.selectRow(tr.rowId); + } + }); - this.lastPanelHeight = panel.getBoundingClientRect().height; - }.bind(this); + this.dynamicTableDiv.addEventListener("contextmenu", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; - $(this.dynamicTableDivId).getParent('.panel').addEvent('resize', resizeFn); + if (!this.isRowSelected(tr.rowId)) { + this.deselectAll(); + this.selectRow(tr.rowId); + } + }, true); - this.lastPanelHeight = 0; + this.dynamicTableDiv.addEventListener("touchstart", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; - // Workaround. Resize event is called not always (for example it isn't called when browser window changes it's size) + if (!this.isRowSelected(tr.rowId)) { + this.deselectAll(); + this.selectRow(tr.rowId); + } + }, { passive: true }); - const checkResizeFn = function() { - const tableDiv = $(this.dynamicTableDivId); + this.dynamicTableDiv.addEventListener("keydown", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; - // dynamicTableDivId is not visible on the UI - if (!tableDiv) { - return; + switch (e.key) { + case "ArrowUp": { + e.preventDefault(); + this.selectPreviousRow(); + this.dynamicTableDiv.querySelector(".selected").scrollIntoView({ block: "nearest" }); + break; } - - const panel = tableDiv.getParent('.panel'); - if (this.lastPanelHeight != panel.getBoundingClientRect().height) { - this.lastPanelHeight = panel.getBoundingClientRect().height; - panel.fireEvent('resize'); + case "ArrowDown": { + e.preventDefault(); + this.selectNextRow(); + this.dynamicTableDiv.querySelector(".selected").scrollIntoView({ block: "nearest" }); + break; } - }.bind(this); - - setInterval(checkResizeFn, 500); - } + } + }); }, setupHeaderEvents: function() { - this.currentHeaderAction = ''; + this.currentHeaderAction = ""; this.canResize = false; - const resetElementBorderStyle = function(el, side) { - if (side === 'left' || side !== 'right') { - el.setStyle('border-left-style', ''); - el.setStyle('border-left-color', ''); - el.setStyle('border-left-width', ''); - } - if (side === 'right' || side !== 'left') { - el.setStyle('border-right-style', ''); - el.setStyle('border-right-color', ''); - el.setStyle('border-right-width', ''); - } + const resetElementBorderStyle = (el, side) => { + if ((side === "left") || (side !== "right")) + el.style.borderLeft = ""; + if ((side === "right") || (side !== "left")) + el.style.borderRight = ""; }; const mouseMoveFn = function(e) { const brect = e.target.getBoundingClientRect(); - const mouseXRelative = e.event.clientX - brect.left; - if (this.currentHeaderAction === '') { - if (brect.width - mouseXRelative < 5) { + const mouseXRelative = e.clientX - brect.left; + if (this.currentHeaderAction === "") { + if ((brect.width - mouseXRelative) < 5) { this.resizeTh = e.target; this.canResize = true; - e.target.getParent("tr").style.cursor = 'col-resize'; + e.target.closest("tr").style.cursor = "col-resize"; } else if ((mouseXRelative < 5) && e.target.getPrevious('[class=""]')) { this.resizeTh = e.target.getPrevious('[class=""]'); this.canResize = true; - e.target.getParent("tr").style.cursor = 'col-resize'; + e.target.closest("tr").style.cursor = "col-resize"; } else { this.canResize = false; - e.target.getParent("tr").style.cursor = ''; + e.target.closest("tr").style.cursor = ""; } } - if (this.currentHeaderAction === 'drag') { + if (this.currentHeaderAction === "drag") { const previousVisibleSibling = e.target.getPrevious('[class=""]'); let borderChangeElement = previousVisibleSibling; - let changeBorderSide = 'right'; + let changeBorderSide = "right"; - if (mouseXRelative > brect.width / 2) { + if (mouseXRelative > (brect.width / 2)) { borderChangeElement = e.target; - this.dropSide = 'right'; + this.dropSide = "right"; } else { - this.dropSide = 'left'; + this.dropSide = "left"; } - e.target.getParent("tr").style.cursor = 'move'; + e.target.closest("tr").style.cursor = "move"; if (!previousVisibleSibling) { // right most column borderChangeElement = e.target; - if (mouseXRelative <= brect.width / 2) - changeBorderSide = 'left'; + if (mouseXRelative <= (brect.width / 2)) + changeBorderSide = "left"; } - borderChangeElement.setStyle('border-' + changeBorderSide + '-style', 'solid'); - borderChangeElement.setStyle('border-' + changeBorderSide + '-color', '#e60'); - borderChangeElement.setStyle('border-' + changeBorderSide + '-width', 'initial'); + const borderStyle = "solid #e60"; + if (changeBorderSide === "left") { + borderChangeElement.style.borderLeft = borderStyle; + borderChangeElement.style.borderLeftWidth = "initial"; + } + else { + borderChangeElement.style.borderRight = borderStyle; + borderChangeElement.style.borderRightWidth = "initial"; + } - resetElementBorderStyle(borderChangeElement, changeBorderSide === 'right' ? 'left' : 'right'); + resetElementBorderStyle(borderChangeElement, ((changeBorderSide === "right") ? "left" : "right")); - borderChangeElement.getSiblings('[class=""]').each(function(el) { + borderChangeElement.getSiblings('[class=""]').each((el) => { resetElementBorderStyle(el); }); } this.lastHoverTh = e.target; - this.lastClientX = e.event.clientX; + this.lastClientX = e.clientX; }.bind(this); - const mouseOutFn = function(e) { + const mouseOutFn = (e) => { resetElementBorderStyle(e.target); - }.bind(this); + }; const onBeforeStart = function(el) { this.clickedTh = el; - this.currentHeaderAction = 'start'; + this.currentHeaderAction = "start"; this.dragMovement = false; this.dragStartX = this.lastClientX; }.bind(this); const onStart = function(el, event) { if (this.canResize) { - this.currentHeaderAction = 'resize'; - this.startWidth = this.resizeTh.getStyle('width').toFloat(); + this.currentHeaderAction = "resize"; + this.startWidth = parseInt(this.resizeTh.style.width, 10); } else { - this.currentHeaderAction = 'drag'; - el.setStyle('background-color', '#C1D5E7'); + this.currentHeaderAction = "drag"; + el.style.backgroundColor = "#C1D5E7"; } }.bind(this); const onDrag = function(el, event) { - if (this.currentHeaderAction === 'resize') { - let width = this.startWidth + (event.page.x - this.dragStartX); + if (this.currentHeaderAction === "resize") { + let width = this.startWidth + (event.event.pageX - this.dragStartX); if (width < 16) width = 16; - this.columns[this.resizeTh.columnName].width = width; - this.updateColumn(this.resizeTh.columnName); + + this._setColumnWidth(this.resizeTh.columnName, width); } }.bind(this); const onComplete = function(el, event) { resetElementBorderStyle(this.lastHoverTh); - el.setStyle('background-color', ''); - if (this.currentHeaderAction === 'resize') - LocalPreferences.set('column_' + this.resizeTh.columnName + '_width_' + this.dynamicTableDivId, this.columns[this.resizeTh.columnName].width); - if ((this.currentHeaderAction === 'drag') && (el !== this.lastHoverTh)) { + el.style.backgroundColor = ""; + if (this.currentHeaderAction === "resize") + this.saveColumnWidth(this.resizeTh.columnName); + if ((this.currentHeaderAction === "drag") && (el !== this.lastHoverTh)) { this.saveColumnsOrder(); - const val = LocalPreferences.get('columns_order_' + this.dynamicTableDivId).split(','); + const val = LocalPreferences.get(`columns_order_${this.dynamicTableDivId}`).split(","); val.erase(el.columnName); let pos = val.indexOf(this.lastHoverTh.columnName); - if (this.dropSide === 'right') + if (this.dropSide === "right") ++pos; val.splice(pos, 0, el.columnName); - LocalPreferences.set('columns_order_' + this.dynamicTableDivId, val.join(',')); + LocalPreferences.set(`columns_order_${this.dynamicTableDivId}`, val.join(",")); this.loadColumnsOrder(); this.updateTableHeaders(); - while (this.tableBody.firstChild) - this.tableBody.removeChild(this.tableBody.firstChild); + this.tableBody.replaceChildren(); this.updateTable(true); } - if (this.currentHeaderAction === 'drag') { + if (this.currentHeaderAction === "drag") { resetElementBorderStyle(el); - el.getSiblings('[class=""]').each(function(el) { + el.getSiblings('[class=""]').each((el) => { resetElementBorderStyle(el); }); } - this.currentHeaderAction = ''; + this.currentHeaderAction = ""; }.bind(this); const onCancel = function(el) { - this.currentHeaderAction = ''; - this.setSortedColumn(el.columnName); + this.currentHeaderAction = ""; + + // ignore click/touch events performed when on the column's resize area + if (!this.canResize) + this.setSortedColumn(el.columnName); }.bind(this); const onTouch = function(e) { const column = e.target.columnName; - this.currentHeaderAction = ''; + this.currentHeaderAction = ""; this.setSortedColumn(column); }.bind(this); - const ths = this.fixedTableHeader.getElements('th'); + const onDoubleClick = function(e) { + e.preventDefault(); + this.currentHeaderAction = ""; - for (let i = 0; i < ths.length; ++i) { - const th = ths[i]; - th.addEvent('mousemove', mouseMoveFn); - th.addEvent('mouseout', mouseOutFn); - th.addEvent('touchend', onTouch); + // only resize when hovering on the column's resize area + if (this.canResize) { + this.currentHeaderAction = "resize"; + this.autoResizeColumn(e.target.columnName); + onComplete(e.target); + } + }.bind(this); + + for (const th of this.getRowCells(this.fixedTableHeader)) { + th.addEventListener("mousemove", mouseMoveFn); + th.addEventListener("mouseout", mouseOutFn); + th.addEventListener("touchend", onTouch, { passive: true }); + th.addEventListener("dblclick", onDoubleClick); th.makeResizable({ modifiers: { - x: '', - y: '' + x: "", + y: "" }, onBeforeStart: onBeforeStart, onStart: onStart, @@ -312,76 +349,174 @@ window.qBittorrent.DynamicTable = (function() { }, setupDynamicTableHeaderContextMenuClass: function() { - if (!DynamicTableHeaderContextMenuClass) { - DynamicTableHeaderContextMenuClass = new Class({ - Extends: window.qBittorrent.ContextMenu.ContextMenu, - updateMenuItems: function() { - for (let i = 0; i < this.dynamicTable.columns.length; ++i) { - if (this.dynamicTable.columns[i].caption === '') - continue; - if (this.dynamicTable.columns[i].visible !== '0') - this.setItemChecked(this.dynamicTable.columns[i].name, true); - else - this.setItemChecked(this.dynamicTable.columns[i].name, false); - } + DynamicTableHeaderContextMenuClass ??= class extends window.qBittorrent.ContextMenu.ContextMenu { + updateMenuItems() { + for (let i = 0; i < this.dynamicTable.columns.length; ++i) { + if (this.dynamicTable.columns[i].caption === "") + continue; + if (this.dynamicTable.columns[i].visible !== "0") + this.setItemChecked(this.dynamicTable.columns[i].name, true); + else + this.setItemChecked(this.dynamicTable.columns[i].name, false); } - }); - } + } + }; }, showColumn: function(columnName, show) { - this.columns[columnName].visible = show ? '1' : '0'; - LocalPreferences.set('column_' + columnName + '_visible_' + this.dynamicTableDivId, show ? '1' : '0'); + this.columns[columnName].visible = show ? "1" : "0"; + LocalPreferences.set(`column_${columnName}_visible_${this.dynamicTableDivId}`, show ? "1" : "0"); this.updateColumn(columnName); + this.columns[columnName].onVisibilityChange?.(columnName); + }, + + _calculateColumnBodyWidth: function(column) { + const columnIndex = this.getColumnPos(column.name); + const bodyColumn = document.getElementById(this.dynamicTableDivId).querySelectorAll("tr>th")[columnIndex]; + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + context.font = window.getComputedStyle(bodyColumn, null).getPropertyValue("font"); + + const longestTd = { value: "", width: 0 }; + for (const tr of this.getTrs()) { + const tds = this.getRowCells(tr); + const td = tds[columnIndex]; + + const buffer = column.calculateBuffer(tr.rowId); + const valueWidth = context.measureText(td.textContent).width; + if ((valueWidth + buffer) > (longestTd.width)) { + longestTd.value = td.textContent; + longestTd.width = valueWidth + buffer; + } + } + + // slight buffer to prevent clipping + return longestTd.width + 10; + }, + + _setColumnWidth: function(columnName, width) { + const column = this.columns[columnName]; + column.width = width; + + const pos = this.getColumnPos(column.name); + const style = `width: ${column.width}px; ${column.style}`; + this.getRowCells(this.hiddenTableHeader)[pos].style.cssText = style; + this.getRowCells(this.fixedTableHeader)[pos].style.cssText = style; + + column.onResize?.(column.name); + }, + + autoResizeColumn: function(columnName) { + const column = this.columns[columnName]; + + let width = column.staticWidth ?? 0; + if (column.staticWidth === null) { + // check required min body width + const bodyTextWidth = this._calculateColumnBodyWidth(column); + + // check required min header width + const columnIndex = this.getColumnPos(column.name); + const headColumn = document.getElementById(this.dynamicTableFixedHeaderDivId).querySelectorAll("tr>th")[columnIndex]; + const canvas = document.createElement("canvas"); + const context = canvas.getContext("2d"); + context.font = window.getComputedStyle(headColumn, null).getPropertyValue("font"); + const columnTitle = column.caption; + const sortedIconWidth = 20; + const headTextWidth = context.measureText(columnTitle).width + sortedIconWidth; + + width = Math.max(headTextWidth, bodyTextWidth); + } + + this._setColumnWidth(column.name, width); + this.saveColumnWidth(column.name); + }, + + saveColumnWidth: function(columnName) { + LocalPreferences.set(`column_${columnName}_width_${this.dynamicTableDivId}`, this.columns[columnName].width); }, setupHeaderMenu: function() { this.setupDynamicTableHeaderContextMenuClass(); - const menuId = this.dynamicTableDivId + '_headerMenu'; + const menuId = `${this.dynamicTableDivId}_headerMenu`; // reuse menu if already exists - const ul = $(menuId) ?? new Element('ul', { - id: menuId, - class: 'contextMenu scrollableMenu' - }); + let ul = document.getElementById(menuId); + if (ul === null) { + ul = document.createElement("ul"); + ul.id = menuId; + ul.className = "contextMenu scrollableMenu"; + } - const createLi = function(columnName, text) { - const html = '' + window.qBittorrent.Misc.escapeHtml(text) + ''; - return new Element('li', { - html: html - }); + const createLi = (columnName, text) => { + const anchor = document.createElement("a"); + anchor.href = `#${columnName}`; + anchor.textContent = text; + + const img = document.createElement("img"); + img.src = "images/checked-completed.svg"; + anchor.prepend(img); + + const listItem = document.createElement("li"); + listItem.appendChild(anchor); + + return listItem; }; - const actions = {}; + const actions = { + autoResizeAction: function(element, ref, action) { + this.autoResizeColumn(element.columnName); + }.bind(this), + + autoResizeAllAction: function(element, ref, action) { + for (const { name } of this.columns) + this.autoResizeColumn(name); + }.bind(this), + }; const onMenuItemClicked = function(element, ref, action) { - this.showColumn(action, this.columns[action].visible === '0'); + this.showColumn(action, this.columns[action].visible === "0"); }.bind(this); - // recreate child nodes when reusing (enables the context menu to work correctly) - if (ul.hasChildNodes()) { - while (ul.firstChild) { - ul.removeChild(ul.lastChild); - } - } + // recreate child elements when reusing (enables the context menu to work correctly) + ul.replaceChildren(); for (let i = 0; i < this.columns.length; ++i) { const text = this.columns[i].caption; - if (text === '') + if (text === "") continue; ul.appendChild(createLi(this.columns[i].name, text)); actions[this.columns[i].name] = onMenuItemClicked; } - ul.inject(document.body); + const createResizeElement = (text, href) => { + const anchor = document.createElement("a"); + anchor.href = href; + anchor.textContent = text; + + const spacer = document.createElement("span"); + spacer.style = "display: inline-block; width: calc(.5em + 16px);"; + anchor.prepend(spacer); + + const li = document.createElement("li"); + li.appendChild(anchor); + return li; + }; + + const autoResizeAllElement = createResizeElement("Resize All", "#autoResizeAllAction"); + const autoResizeElement = createResizeElement("Resize", "#autoResizeAction"); + + ul.firstElementChild.classList.add("separator"); + ul.insertBefore(autoResizeAllElement, ul.firstElementChild); + ul.insertBefore(autoResizeElement, ul.firstElementChild); + document.body.append(ul); this.headerContextMenu = new DynamicTableHeaderContextMenuClass({ - targets: '#' + this.dynamicTableFixedHeaderDivId + ' tr', + targets: `#${this.dynamicTableFixedHeaderDivId} tr th`, actions: actions, menu: menuId, offsets: { - x: -15, + x: 0, y: 2 } }); @@ -389,207 +524,190 @@ window.qBittorrent.DynamicTable = (function() { this.headerContextMenu.dynamicTable = this; }, - initColumns: function() {}, + initColumns: () => {}, newColumn: function(name, style, caption, defaultWidth, defaultVisible) { const column = {}; - column['name'] = name; - column['title'] = name; - column['visible'] = LocalPreferences.get('column_' + name + '_visible_' + this.dynamicTableDivId, defaultVisible ? '1' : '0'); - column['force_hide'] = false; - column['caption'] = caption; - column['style'] = style; - column['width'] = LocalPreferences.get('column_' + name + '_width_' + this.dynamicTableDivId, defaultWidth); - column['dataProperties'] = [name]; - column['getRowValue'] = function(row, pos) { + column["name"] = name; + column["title"] = name; + column["visible"] = LocalPreferences.get(`column_${name}_visible_${this.dynamicTableDivId}`, (defaultVisible ? "1" : "0")); + column["force_hide"] = false; + column["caption"] = caption; + column["style"] = style; + column["width"] = LocalPreferences.get(`column_${name}_width_${this.dynamicTableDivId}`, defaultWidth); + column["dataProperties"] = [name]; + column["getRowValue"] = function(row, pos) { if (pos === undefined) pos = 0; - return row['full_data'][this.dataProperties[pos]]; + return row["full_data"][this.dataProperties[pos]]; }; - column['compareRows'] = function(row1, row2) { + column["compareRows"] = function(row1, row2) { const value1 = this.getRowValue(row1); const value2 = this.getRowValue(row2); - if ((typeof(value1) === 'number') && (typeof(value2) === 'number')) + if ((typeof(value1) === "number") && (typeof(value2) === "number")) return compareNumbers(value1, value2); return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); }; - column['updateTd'] = function(td, row) { + column["updateTd"] = function(td, row) { const value = this.getRowValue(row); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; - column['onResize'] = null; + column["isVisible"] = function() { + return (this.visible === "1") && !this.force_hide; + }; + column["onResize"] = null; + column["onVisibilityChange"] = null; + column["staticWidth"] = null; + column["calculateBuffer"] = () => 0; this.columns.push(column); this.columns[name] = column; - this.hiddenTableHeader.appendChild(new Element('th')); - this.fixedTableHeader.appendChild(new Element('th')); + this.hiddenTableHeader.append(document.createElement("th")); + this.fixedTableHeader.append(document.createElement("th")); }, loadColumnsOrder: function() { const columnsOrder = []; - const val = LocalPreferences.get('columns_order_' + this.dynamicTableDivId); - if (val === null || val === undefined) + const val = LocalPreferences.get(`columns_order_${this.dynamicTableDivId}`); + if ((val === null) || (val === undefined)) return; - val.split(',').forEach(function(v) { + val.split(",").forEach((v) => { if ((v in this.columns) && (!columnsOrder.contains(v))) columnsOrder.push(v); - }.bind(this)); + }); - for (let i = 0; i < this.columns.length; ++i) + for (let i = 0; i < this.columns.length; ++i) { if (!columnsOrder.contains(this.columns[i].name)) columnsOrder.push(this.columns[i].name); + } for (let i = 0; i < this.columns.length; ++i) this.columns[i] = this.columns[columnsOrder[i]]; }, saveColumnsOrder: function() { - let val = ''; + let val = ""; for (let i = 0; i < this.columns.length; ++i) { if (i > 0) - val += ','; + val += ","; val += this.columns[i].name; } - LocalPreferences.set('columns_order_' + this.dynamicTableDivId, val); + LocalPreferences.set(`columns_order_${this.dynamicTableDivId}`, val); }, updateTableHeaders: function() { this.updateHeader(this.hiddenTableHeader); this.updateHeader(this.fixedTableHeader); + this.setSortedColumnIcon(this.sortedColumn, null, (this.reverseSort === "1")); }, updateHeader: function(header) { - const ths = header.getElements('th'); - + const ths = this.getRowCells(header); for (let i = 0; i < ths.length; ++i) { const th = ths[i]; - th._this = this; - th.setAttribute('title', this.columns[i].caption); - th.set('text', this.columns[i].caption); - th.setAttribute('style', 'width: ' + this.columns[i].width + 'px;' + this.columns[i].style); - th.columnName = this.columns[i].name; - th.addClass('column_' + th.columnName); - if ((this.columns[i].visible == '0') || this.columns[i].force_hide) - th.addClass('invisible'); - else - th.removeClass('invisible'); + if (th.columnName !== this.columns[i].name) { + th.title = this.columns[i].caption; + th.textContent = this.columns[i].caption; + th.style.cssText = `width: ${this.columns[i].width}px; ${this.columns[i].style}`; + th.columnName = this.columns[i].name; + th.className = `column_${th.columnName}`; + th.classList.toggle("invisible", ((this.columns[i].visible === "0") || this.columns[i].force_hide)); + } } }, getColumnPos: function(columnName) { - for (let i = 0; i < this.columns.length; ++i) - if (this.columns[i].name == columnName) + for (let i = 0; i < this.columns.length; ++i) { + if (this.columns[i].name === columnName) return i; + } return -1; }, - updateColumn: function(columnName) { + updateColumn: function(columnName, updateCellData = false) { + const column = this.columns[columnName]; const pos = this.getColumnPos(columnName); - const visible = ((this.columns[pos].visible != '0') && !this.columns[pos].force_hide); - const ths = this.hiddenTableHeader.getElements('th'); - const fths = this.fixedTableHeader.getElements('th'); - const trs = this.tableBody.getElements('tr'); - const style = 'width: ' + this.columns[pos].width + 'px;' + this.columns[pos].style; - - ths[pos].setAttribute('style', style); - fths[pos].setAttribute('style', style); + const ths = this.getRowCells(this.hiddenTableHeader); + const fths = this.getRowCells(this.fixedTableHeader); + const action = column.isVisible() ? "remove" : "add"; + ths[pos].classList[action]("invisible"); + fths[pos].classList[action]("invisible"); - if (visible) { - ths[pos].removeClass('invisible'); - fths[pos].removeClass('invisible'); - for (let i = 0; i < trs.length; ++i) - trs[i].getElements('td')[pos].removeClass('invisible'); - } - else { - ths[pos].addClass('invisible'); - fths[pos].addClass('invisible'); - for (let j = 0; j < trs.length; ++j) - trs[j].getElements('td')[pos].addClass('invisible'); - } - if (this.columns[pos].onResize !== null) { - this.columns[pos].onResize(columnName); + for (const tr of this.getTrs()) { + const td = this.getRowCells(tr)[pos]; + td.classList[action]("invisible"); + if (updateCellData) + column.updateTd(td, this.rows.get(tr.rowId)); } }, getSortedColumn: function() { - return LocalPreferences.get('sorted_column_' + this.dynamicTableDivId); + return LocalPreferences.get(`sorted_column_${this.dynamicTableDivId}`); }, - setSortedColumn: function(column) { - if (column != this.sortedColumn) { + /** + * @param {string} column name to sort by + * @param {string|null} reverse defaults to implementation-specific behavior when not specified. Should only be passed when restoring previous state. + */ + setSortedColumn: function(column, reverse = null) { + if (column !== this.sortedColumn) { const oldColumn = this.sortedColumn; this.sortedColumn = column; - this.reverseSort = '0'; + this.reverseSort = reverse ?? "0"; this.setSortedColumnIcon(column, oldColumn, false); } else { // Toggle sort order - this.reverseSort = this.reverseSort === '0' ? '1' : '0'; - this.setSortedColumnIcon(column, null, (this.reverseSort === '1')); + this.reverseSort = reverse ?? (this.reverseSort === "0" ? "1" : "0"); + this.setSortedColumnIcon(column, null, (this.reverseSort === "1")); } - LocalPreferences.set('sorted_column_' + this.dynamicTableDivId, column); - LocalPreferences.set('reverse_sort_' + this.dynamicTableDivId, this.reverseSort); + LocalPreferences.set(`sorted_column_${this.dynamicTableDivId}`, column); + LocalPreferences.set(`reverse_sort_${this.dynamicTableDivId}`, this.reverseSort); this.updateTable(false); }, setSortedColumnIcon: function(newColumn, oldColumn, isReverse) { - const getCol = function(headerDivId, colName) { - const colElem = $$("#" + headerDivId + " .column_" + colName); - if (colElem.length == 1) + const getCol = (headerDivId, colName) => { + const colElem = document.querySelectorAll(`#${headerDivId} .column_${colName}`); + if (colElem.length === 1) return colElem[0]; return null; }; const colElem = getCol(this.dynamicTableFixedHeaderDivId, newColumn); if (colElem !== null) { - colElem.addClass('sorted'); - if (isReverse) - colElem.addClass('reverse'); - else - colElem.removeClass('reverse'); + colElem.classList.add("sorted"); + colElem.classList.toggle("reverse", isReverse); } const oldColElem = getCol(this.dynamicTableFixedHeaderDivId, oldColumn); if (oldColElem !== null) { - oldColElem.removeClass('sorted'); - oldColElem.removeClass('reverse'); + oldColElem.classList.remove("sorted"); + oldColElem.classList.remove("reverse"); } }, getSelectedRowId: function() { if (this.selectedRows.length > 0) return this.selectedRows[0]; - return ''; + return ""; }, isRowSelected: function(rowId) { return this.selectedRows.contains(rowId); }, - altRow: function() { - if (!MUI.ieLegacySupport) - return; - - const trs = this.tableBody.getElements('tr'); - trs.each(function(el, i) { - if (i % 2) { - el.addClass('alt'); - } - else { - el.removeClass('alt'); - } - }.bind(this)); + setupAltRow: function() { + const useAltRowColors = (LocalPreferences.get("use_alt_row_colors", "true") === "true"); + if (useAltRowColors) + document.getElementById(this.dynamicTableDivId).classList.add("altRowColors"); }, selectAll: function() { this.deselectAll(); - - const trs = this.tableBody.getElements('tr'); - for (let i = 0; i < trs.length; ++i) { - const tr = trs[i]; + for (const tr of this.getTrs()) { this.selectedRows.push(tr.rowId); - if (!tr.hasClass('selected')) - tr.addClass('selected'); + tr.classList.add("selected"); } }, @@ -617,16 +735,15 @@ window.qBittorrent.DynamicTable = (function() { } let select = false; - const that = this; - this.tableBody.getElements('tr').each(function(tr) { - if ((tr.rowId == rowId1) || (tr.rowId == rowId2)) { + for (const tr of this.getTrs()) { + if ((tr.rowId === rowId1) || (tr.rowId === rowId2)) { select = !select; - that.selectedRows.push(tr.rowId); + this.selectedRows.push(tr.rowId); } else if (select) { - that.selectedRows.push(tr.rowId); + this.selectedRows.push(tr.rowId); } - }); + } this.setRowClass(); this.onSelectedRowChanged(); }, @@ -634,166 +751,123 @@ window.qBittorrent.DynamicTable = (function() { reselectRows: function(rowIds) { this.deselectAll(); this.selectedRows = rowIds.slice(); - this.tableBody.getElements('tr').each(function(tr) { - if (rowIds.indexOf(tr.rowId) > -1) - tr.addClass('selected'); - }); + for (const tr of this.getTrs()) { + if (rowIds.includes(tr.rowId)) + tr.classList.add("selected"); + } }, setRowClass: function() { - const that = this; - this.tableBody.getElements('tr').each(function(tr) { - if (that.isRowSelected(tr.rowId)) - tr.addClass('selected'); - else - tr.removeClass('selected'); - }); + for (const tr of this.getTrs()) + tr.classList.toggle("selected", this.isRowSelected(tr.rowId)); }, - onSelectedRowChanged: function() {}, + onSelectedRowChanged: () => {}, updateRowData: function(data) { // ensure rowId is a string - const rowId = `${data['rowId']}`; + const rowId = `${data["rowId"]}`; let row; if (!this.rows.has(rowId)) { row = { - 'full_data': {}, - 'rowId': rowId + full_data: {}, + rowId: rowId }; this.rows.set(rowId, row); } - else + else { row = this.rows.get(rowId); + } + + row["data"] = data; + for (const x in data) { + if (!Object.hasOwn(data, x)) + continue; + row["full_data"][x] = data[x]; + } + }, + + getTrs: function() { + return this.tableBody.querySelectorAll("tr"); + }, - row['data'] = data; - for (const x in data) - row['full_data'][x] = data[x]; + getRowCells: (tr) => { + return tr.querySelectorAll("td, th"); + }, + + getRow: function(rowId) { + return this.rows.get(rowId); }, getFilteredAndSortedRows: function() { const filteredRows = []; - const rows = this.rows.getValues(); - - for (let i = 0; i < rows.length; ++i) { - filteredRows.push(rows[i]); - filteredRows[rows[i].rowId] = rows[i]; + for (const row of this.getRowValues()) { + filteredRows.push(row); + filteredRows[row.rowId] = row; } - filteredRows.sort(function(row1, row2) { + filteredRows.sort((row1, row2) => { const column = this.columns[this.sortedColumn]; const res = column.compareRows(row1, row2); - if (this.reverseSort === '0') + if (this.reverseSort === "0") return res; else return -res; - }.bind(this)); + }); return filteredRows; }, getTrByRowId: function(rowId) { - const trs = this.tableBody.getElements('tr'); - for (let i = 0; i < trs.length; ++i) - if (trs[i].rowId == rowId) - return trs[i]; - return null; + return Array.prototype.find.call(this.getTrs(), (tr => tr.rowId === rowId)); }, - updateTable: function(fullUpdate) { - if (fullUpdate === undefined) - fullUpdate = false; - + updateTable: function(fullUpdate = false) { const rows = this.getFilteredAndSortedRows(); - for (let i = 0; i < this.selectedRows.length; ++i) + for (let i = 0; i < this.selectedRows.length; ++i) { if (!(this.selectedRows[i] in rows)) { this.selectedRows.splice(i, 1); --i; } + } - const trs = this.tableBody.getElements('tr'); + const trs = [...this.getTrs()]; for (let rowPos = 0; rowPos < rows.length; ++rowPos) { - const rowId = rows[rowPos]['rowId']; + const rowId = rows[rowPos]["rowId"]; let tr_found = false; - for (let j = rowPos; j < trs.length; ++j) - if (trs[j]['rowId'] == rowId) { + for (let j = rowPos; j < trs.length; ++j) { + if (trs[j]["rowId"] === rowId) { tr_found = true; - if (rowPos == j) + if (rowPos === j) break; - trs[j].inject(trs[rowPos], 'before'); + trs[j].inject(trs[rowPos], "before"); const tmpTr = trs[j]; trs.splice(j, 1); trs.splice(rowPos, 0, tmpTr); break; } - if (tr_found) // row already exists in the table + } + if (tr_found) { // row already exists in the table this.updateRow(trs[rowPos], fullUpdate); + } else { // else create a new row in the table - const tr = new Element('tr'); + const tr = document.createElement("tr"); // set tabindex so element receives keydown events // more info: https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event - tr.setProperty("tabindex", "-1"); + tr.tabIndex = -1; - const rowId = rows[rowPos]['rowId']; - tr.setProperty("data-row-id", rowId); - tr['rowId'] = rowId; - - tr._this = this; - tr.addEvent('contextmenu', function(e) { - if (!this._this.isRowSelected(this.rowId)) { - this._this.deselectAll(); - this._this.selectRow(this.rowId); - } - return true; - }); - tr.addEvent('click', function(e) { - e.stop(); - if (e.control || e.meta) { - // CTRL/CMD ⌘ key was pressed - if (this._this.isRowSelected(this.rowId)) - this._this.deselectRow(this.rowId); - else - this._this.selectRow(this.rowId); - } - else if (e.shift && (this._this.selectedRows.length == 1)) { - // Shift key was pressed - this._this.selectRows(this._this.getSelectedRowId(), this.rowId); - } - else { - // Simple selection - this._this.deselectAll(); - this._this.selectRow(this.rowId); - } - return false; - }); - tr.addEvent('touchstart', function(e) { - if (!this._this.isRowSelected(this.rowId)) { - this._this.deselectAll(); - this._this.selectRow(this.rowId); - } - return false; - }); - tr.addEvent('keydown', function(event) { - switch (event.key) { - case "up": - this._this.selectPreviousRow(); - return false; - case "down": - this._this.selectNextRow(); - return false; - } - }); - - this.setupTr(tr); + const rowId = rows[rowPos]["rowId"]; + tr.setAttribute("data-row-id", rowId); + tr["rowId"] = rowId; for (let k = 0; k < this.columns.length; ++k) { - const td = new Element('td'); - if ((this.columns[k].visible == '0') || this.columns[k].force_hide) - td.addClass('invisible'); - td.injectInside(tr); + const td = document.createElement("td"); + if ((this.columns[k].visible === "0") || this.columns[k].force_hide) + td.classList.add("invisible"); + tr.append(td); } // Insert @@ -802,59 +876,47 @@ window.qBittorrent.DynamicTable = (function() { trs.push(tr); } else { - tr.inject(trs[rowPos], 'before'); + tr.inject(trs[rowPos], "before"); trs.splice(rowPos, 0, tr); } // Update context menu - if (this.contextMenu) - this.contextMenu.addTarget(tr); + this.contextMenu?.addTarget(tr); this.updateRow(tr, true); } } - let rowPos = rows.length; + const rowPos = rows.length; - while ((rowPos < trs.length) && (trs.length > 0)) { - trs[trs.length - 1].dispose(); - trs.pop(); - } + while ((rowPos < trs.length) && (trs.length > 0)) + trs.pop().destroy(); }, - setupTr: function(tr) {}, - updateRow: function(tr, fullUpdate) { const row = this.rows.get(tr.rowId); - const data = row[fullUpdate ? 'full_data' : 'data']; + const data = row[fullUpdate ? "full_data" : "data"]; - const tds = tr.getElements('td'); + const tds = this.getRowCells(tr); for (let i = 0; i < this.columns.length; ++i) { - if (Object.prototype.hasOwnProperty.call(data, this.columns[i].dataProperties[0])) + if (this.columns[i].dataProperties.some(prop => Object.hasOwn(data, prop))) this.columns[i].updateTd(tds[i], row); } - row['data'] = {}; + row["data"] = {}; }, removeRow: function(rowId) { this.selectedRows.erase(rowId); + this.rows.delete(rowId); const tr = this.getTrByRowId(rowId); - if (tr !== null) { - tr.dispose(); - this.rows.erase(rowId); - return true; - } - return false; + tr?.destroy(); }, clear: function() { this.deselectAll(); - this.rows.empty(); - const trs = this.tableBody.getElements('tr'); - while (trs.length > 0) { - trs[trs.length - 1].dispose(); - trs.pop(); - } + this.rows.clear(); + for (const tr of this.getTrs()) + tr.destroy(); }, selectedRowsIds: function() { @@ -862,17 +924,29 @@ window.qBittorrent.DynamicTable = (function() { }, getRowIds: function() { - return this.rows.getKeys(); + return this.rows.keys(); + }, + + getRowValues: function() { + return this.rows.values(); + }, + + getRowItems: function() { + return this.rows.entries(); + }, + + getRowSize: function() { + return this.rows.size; }, selectNextRow: function() { - const visibleRows = $(this.dynamicTableDivId).getElements("tbody tr").filter(e => e.getStyle("display") !== "none"); + const visibleRows = Array.prototype.filter.call(this.getTrs(), (tr => !tr.classList.contains("invisible") && (tr.style.display !== "none"))); const selectedRowId = this.getSelectedRowId(); let selectedIndex = -1; for (let i = 0; i < visibleRows.length; ++i) { const row = visibleRows[i]; - if (row.getProperty("data-row-id") === selectedRowId) { + if (row.getAttribute("data-row-id") === selectedRowId) { selectedIndex = i; break; } @@ -883,18 +957,18 @@ window.qBittorrent.DynamicTable = (function() { this.deselectAll(); const newRow = visibleRows[selectedIndex + 1]; - this.selectRow(newRow.getProperty("data-row-id")); + this.selectRow(newRow.getAttribute("data-row-id")); } }, selectPreviousRow: function() { - const visibleRows = $(this.dynamicTableDivId).getElements("tbody tr").filter(e => e.getStyle("display") !== "none"); + const visibleRows = Array.prototype.filter.call(this.getTrs(), (tr => !tr.classList.contains("invisible") && (tr.style.display !== "none"))); const selectedRowId = this.getSelectedRowId(); let selectedIndex = -1; for (let i = 0; i < visibleRows.length; ++i) { const row = visibleRows[i]; - if (row.getProperty("data-row-id") === selectedRowId) { + if (row.getAttribute("data-row-id") === selectedRowId) { selectedIndex = i; break; } @@ -905,7 +979,7 @@ window.qBittorrent.DynamicTable = (function() { this.deselectAll(); const newRow = visibleRows[selectedIndex - 1]; - this.selectRow(newRow.getProperty("data-row-id")); + this.selectRow(newRow.getAttribute("data-row-id")); } }, }); @@ -914,130 +988,143 @@ window.qBittorrent.DynamicTable = (function() { Extends: DynamicTable, initColumns: function() { - this.newColumn('priority', '', '#', 30, true); - this.newColumn('state_icon', 'cursor: default', '', 22, true); - this.newColumn('name', '', 'QBT_TR(Name)QBT_TR[CONTEXT=TransferListModel]', 200, true); - this.newColumn('size', '', 'QBT_TR(Size)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('total_size', '', 'QBT_TR(Total Size)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('progress', '', 'QBT_TR(Done)QBT_TR[CONTEXT=TransferListModel]', 85, true); - this.newColumn('status', '', 'QBT_TR(Status)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('num_seeds', '', 'QBT_TR(Seeds)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('num_leechs', '', 'QBT_TR(Peers)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('dlspeed', '', 'QBT_TR(Down Speed)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('upspeed', '', 'QBT_TR(Up Speed)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('eta', '', 'QBT_TR(ETA)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('ratio', '', 'QBT_TR(Ratio)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('category', '', 'QBT_TR(Category)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('tags', '', 'QBT_TR(Tags)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('added_on', '', 'QBT_TR(Added On)QBT_TR[CONTEXT=TransferListModel]', 100, true); - this.newColumn('completion_on', '', 'QBT_TR(Completed On)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('tracker', '', 'QBT_TR(Tracker)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('dl_limit', '', 'QBT_TR(Down Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('up_limit', '', 'QBT_TR(Up Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('downloaded', '', 'QBT_TR(Downloaded)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('uploaded', '', 'QBT_TR(Uploaded)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('downloaded_session', '', 'QBT_TR(Session Download)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('uploaded_session', '', 'QBT_TR(Session Upload)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('amount_left', '', 'QBT_TR(Remaining)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('time_active', '', 'QBT_TR(Time Active)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('save_path', '', 'QBT_TR(Save path)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('completed', '', 'QBT_TR(Completed)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('max_ratio', '', 'QBT_TR(Ratio Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('seen_complete', '', 'QBT_TR(Last Seen Complete)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('last_activity', '', 'QBT_TR(Last Activity)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('availability', '', 'QBT_TR(Availability)QBT_TR[CONTEXT=TransferListModel]', 100, false); - this.newColumn('reannounce', '', 'QBT_TR(Reannounce In)QBT_TR[CONTEXT=TransferListModel]', 100, false); - - this.columns['state_icon'].onclick = ''; - this.columns['state_icon'].dataProperties[0] = 'state'; - - this.columns['num_seeds'].dataProperties.push('num_complete'); - this.columns['num_leechs'].dataProperties.push('num_incomplete'); - this.columns['time_active'].dataProperties.push('seeding_time'); + this.newColumn("priority", "", "#", 30, true); + this.newColumn("state_icon", "", "QBT_TR(Status Icon)QBT_TR[CONTEXT=TransferListModel]", 30, false); + this.newColumn("name", "", "QBT_TR(Name)QBT_TR[CONTEXT=TransferListModel]", 200, true); + this.newColumn("size", "", "QBT_TR(Size)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("total_size", "", "QBT_TR(Total Size)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("progress", "", "QBT_TR(Progress)QBT_TR[CONTEXT=TransferListModel]", 85, true); + this.newColumn("status", "", "QBT_TR(Status)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("num_seeds", "", "QBT_TR(Seeds)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("num_leechs", "", "QBT_TR(Peers)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("dlspeed", "", "QBT_TR(Down Speed)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("upspeed", "", "QBT_TR(Up Speed)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("eta", "", "QBT_TR(ETA)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("ratio", "", "QBT_TR(Ratio)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("popularity", "", "QBT_TR(Popularity)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("category", "", "QBT_TR(Category)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("tags", "", "QBT_TR(Tags)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("added_on", "", "QBT_TR(Added On)QBT_TR[CONTEXT=TransferListModel]", 100, true); + this.newColumn("completion_on", "", "QBT_TR(Completed On)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("tracker", "", "QBT_TR(Tracker)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("dl_limit", "", "QBT_TR(Down Limit)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("up_limit", "", "QBT_TR(Up Limit)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("downloaded", "", "QBT_TR(Downloaded)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("uploaded", "", "QBT_TR(Uploaded)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("downloaded_session", "", "QBT_TR(Session Download)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("uploaded_session", "", "QBT_TR(Session Upload)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("amount_left", "", "QBT_TR(Remaining)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("time_active", "", "QBT_TR(Time Active)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("save_path", "", "QBT_TR(Save path)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("completed", "", "QBT_TR(Completed)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("max_ratio", "", "QBT_TR(Ratio Limit)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("seen_complete", "", "QBT_TR(Last Seen Complete)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("last_activity", "", "QBT_TR(Last Activity)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("availability", "", "QBT_TR(Availability)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("download_path", "", "QBT_TR(Incomplete Save Path)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("infohash_v1", "", "QBT_TR(Info Hash v1)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("infohash_v2", "", "QBT_TR(Info Hash v2)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("reannounce", "", "QBT_TR(Reannounce In)QBT_TR[CONTEXT=TransferListModel]", 100, false); + this.newColumn("private", "", "QBT_TR(Private)QBT_TR[CONTEXT=TransferListModel]", 100, false); + + this.columns["state_icon"].dataProperties[0] = "state"; + this.columns["name"].dataProperties.push("state"); + this.columns["num_seeds"].dataProperties.push("num_complete"); + this.columns["num_leechs"].dataProperties.push("num_incomplete"); + this.columns["time_active"].dataProperties.push("seeding_time"); this.initColumnsFunctions(); }, initColumnsFunctions: function() { - - // state_icon - this.columns['state_icon'].updateTd = function(td, row) { - let state = this.getRowValue(row); - let img_path; + const getStateIconClasses = (state) => { + let stateClass = "stateUnknown"; // normalize states switch (state) { case "forcedDL": case "metaDL": case "forcedMetaDL": case "downloading": - state = "downloading"; - img_path = "images/downloading.svg"; + stateClass = "stateDownloading"; break; case "forcedUP": case "uploading": - state = "uploading"; - img_path = "images/upload.svg"; + stateClass = "stateUploading"; break; case "stalledUP": - state = "stalledUP"; - img_path = "images/stalledUP.svg"; + stateClass = "stateStalledUP"; break; case "stalledDL": - state = "stalledDL"; - img_path = "images/stalledDL.svg"; + stateClass = "stateStalledDL"; break; - case "pausedDL": - state = "torrent-stop"; - img_path = "images/stopped.svg"; + case "stoppedDL": + stateClass = "stateStoppedDL"; break; - case "pausedUP": - state = "checked-completed"; - img_path = "images/checked-completed.svg"; + case "stoppedUP": + stateClass = "stateStoppedUP"; break; case "queuedDL": case "queuedUP": - state = "queued"; - img_path = "images/queued.svg"; + stateClass = "stateQueued"; break; case "checkingDL": case "checkingUP": case "queuedForChecking": case "checkingResumeData": - state = "force-recheck"; - img_path = "images/force-recheck.svg"; + stateClass = "stateChecking"; break; case "moving": - state = "moving"; - img_path = "images/set-location.svg"; + stateClass = "stateMoving"; break; case "error": case "unknown": case "missingFiles": - state = "error"; - img_path = "images/error.svg"; + stateClass = "stateError"; break; default: break; // do nothing } - if (td.getChildren('img').length > 0) { - const img = td.getChildren('img')[0]; - if (img.src.indexOf(img_path) < 0) { - img.set('src', img_path); - img.set('title', state); - } + return `stateIcon ${stateClass}`; + }; + + // state_icon + this.columns["state_icon"].updateTd = function(td, row) { + const state = this.getRowValue(row); + let div = td.firstElementChild; + if (div === null) { + div = document.createElement("div"); + td.append(div); } - else { - td.adopt(new Element('img', { - 'src': img_path, - 'class': 'stateIcon', - 'title': state - })); + + div.className = `${getStateIconClasses(state)} stateIconColumn`; + }; + + this.columns["state_icon"].onVisibilityChange = (columnName) => { + // show state icon in name column only when standalone + // state icon column is hidden + this.updateColumn("name", true); + }; + + // name + this.columns["name"].updateTd = function(td, row) { + const name = this.getRowValue(row, 0); + const state = this.getRowValue(row, 1); + let span = td.firstElementChild; + if (span === null) { + span = document.createElement("span"); + td.append(span); } + + span.className = this.isStateIconShown() ? `${getStateIconClasses(state)}` : ""; + span.textContent = name; + td.title = name; }; + this.columns["name"].isStateIconShown = () => !this.columns["state_icon"].isVisible(); + // status - this.columns['status'].updateTd = function(td, row) { + this.columns["status"].updateTd = function(td, row) { const state = this.getRowValue(row); if (!state) return; @@ -1080,10 +1167,10 @@ window.qBittorrent.DynamicTable = (function() { case "checkingResumeData": status = "QBT_TR(Checking resume data)QBT_TR[CONTEXT=TransferListDelegate]"; break; - case "pausedDL": - status = "QBT_TR(Paused)QBT_TR[CONTEXT=TransferListDelegate]"; + case "stoppedDL": + status = "QBT_TR(Stopped)QBT_TR[CONTEXT=TransferListDelegate]"; break; - case "pausedUP": + case "stoppedUP": status = "QBT_TR(Completed)QBT_TR[CONTEXT=TransferListDelegate]"; break; case "moving": @@ -1099,19 +1186,23 @@ window.qBittorrent.DynamicTable = (function() { status = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]"; } - td.set('text', status); - td.set('title', status); + td.textContent = status; + td.title = status; + }; + + this.columns["status"].compareRows = (row1, row2) => { + return compareNumbers(row1.full_data._statusOrder, row2.full_data._statusOrder); }; // priority - this.columns['priority'].updateTd = function(td, row) { + this.columns["priority"].updateTd = function(td, row) { const queuePos = this.getRowValue(row); - const formattedQueuePos = (queuePos < 1) ? '*' : queuePos; - td.set('text', formattedQueuePos); - td.set('title', formattedQueuePos); + const formattedQueuePos = (queuePos < 1) ? "*" : queuePos; + td.textContent = formattedQueuePos; + td.title = formattedQueuePos; }; - this.columns['priority'].compareRows = function(row1, row2) { + this.columns["priority"].compareRows = function(row1, row2) { let row1_val = this.getRowValue(row1); let row2_val = this.getRowValue(row2); if (row1_val < 1) @@ -1122,72 +1213,69 @@ window.qBittorrent.DynamicTable = (function() { }; // name, category, tags - this.columns['name'].compareRows = function(row1, row2) { + this.columns["name"].compareRows = function(row1, row2) { const row1Val = this.getRowValue(row1); const row2Val = this.getRowValue(row2); - return row1Val.localeCompare(row2Val, undefined, { numeric: true, sensitivity: 'base' }); + return row1Val.localeCompare(row2Val, undefined, { numeric: true, sensitivity: "base" }); }; - this.columns['category'].compareRows = this.columns['name'].compareRows; - this.columns['tags'].compareRows = this.columns['name'].compareRows; + this.columns["category"].compareRows = this.columns["name"].compareRows; + this.columns["tags"].compareRows = this.columns["name"].compareRows; // size, total_size - this.columns['size'].updateTd = function(td, row) { + this.columns["size"].updateTd = function(td, row) { const size = window.qBittorrent.Misc.friendlyUnit(this.getRowValue(row), false); - td.set('text', size); - td.set('title', size); + td.textContent = size; + td.title = size; }; - this.columns['total_size'].updateTd = this.columns['size'].updateTd; + this.columns["total_size"].updateTd = this.columns["size"].updateTd; // progress - this.columns['progress'].updateTd = function(td, row) { + this.columns["progress"].updateTd = function(td, row) { const progress = this.getRowValue(row); - let progressFormatted = (progress * 100).round(1); - if (progressFormatted == 100.0 && progress != 1.0) - progressFormatted = 99.9; + const progressFormatted = window.qBittorrent.Misc.toFixedPointString((progress * 100), 1); - if (td.getChildren('div').length > 0) { - const div = td.getChildren('div')[0]; + const div = td.firstElementChild; + if (div !== null) { if (td.resized) { td.resized = false; - div.setWidth(ProgressColumnWidth - 5); + div.setWidth(progressColumnWidth - 5); } - if (div.getValue() != progressFormatted) + if (div.getValue() !== progressFormatted) div.setValue(progressFormatted); } else { - if (ProgressColumnWidth < 0) - ProgressColumnWidth = td.offsetWidth; - td.adopt(new window.qBittorrent.ProgressBar.ProgressBar(progressFormatted.toFloat(), { - 'width': ProgressColumnWidth - 5 + if (progressColumnWidth < 0) + progressColumnWidth = td.offsetWidth; + td.append(new window.qBittorrent.ProgressBar.ProgressBar(progressFormatted, { + width: progressColumnWidth - 5 })); td.resized = false; } }; - - this.columns['progress'].onResize = function(columnName) { + this.columns["progress"].staticWidth = 100; + this.columns["progress"].onResize = function(columnName) { const pos = this.getColumnPos(columnName); - const trs = this.tableBody.getElements('tr'); - ProgressColumnWidth = -1; - for (let i = 0; i < trs.length; ++i) { - const td = trs[i].getElements('td')[pos]; - if (ProgressColumnWidth < 0) - ProgressColumnWidth = td.offsetWidth; + progressColumnWidth = -1; + for (const tr of this.getTrs()) { + const td = this.getRowCells(tr)[pos]; + if (progressColumnWidth < 0) + progressColumnWidth = td.offsetWidth; td.resized = true; - this.columns[columnName].updateTd(td, this.rows.get(trs[i].rowId)); + this.columns[columnName].updateTd(td, this.getRow(tr.rowId)); } }.bind(this); // num_seeds - this.columns['num_seeds'].updateTd = function(td, row) { + this.columns["num_seeds"].updateTd = function(td, row) { const num_seeds = this.getRowValue(row, 0); const num_complete = this.getRowValue(row, 1); let value = num_seeds; - if (num_complete != -1) - value += ' (' + num_complete + ')'; - td.set('text', value); - td.set('title', value); + if (num_complete !== -1) + value += ` (${num_complete})`; + td.textContent = value; + td.title = value; }; - this.columns['num_seeds'].compareRows = function(row1, row2) { + this.columns["num_seeds"].compareRows = function(row1, row2) { const num_seeds1 = this.getRowValue(row1, 0); const num_complete1 = this.getRowValue(row1, 1); @@ -1201,280 +1289,352 @@ window.qBittorrent.DynamicTable = (function() { }; // num_leechs - this.columns['num_leechs'].updateTd = this.columns['num_seeds'].updateTd; - this.columns['num_leechs'].compareRows = this.columns['num_seeds'].compareRows; + this.columns["num_leechs"].updateTd = this.columns["num_seeds"].updateTd; + this.columns["num_leechs"].compareRows = this.columns["num_seeds"].compareRows; // dlspeed - this.columns['dlspeed'].updateTd = function(td, row) { + this.columns["dlspeed"].updateTd = function(td, row) { const speed = window.qBittorrent.Misc.friendlyUnit(this.getRowValue(row), true); - td.set('text', speed); - td.set('title', speed); + td.textContent = speed; + td.title = speed; }; // upspeed - this.columns['upspeed'].updateTd = this.columns['dlspeed'].updateTd; + this.columns["upspeed"].updateTd = this.columns["dlspeed"].updateTd; // eta - this.columns['eta'].updateTd = function(td, row) { + this.columns["eta"].updateTd = function(td, row) { const eta = window.qBittorrent.Misc.friendlyDuration(this.getRowValue(row), window.qBittorrent.Misc.MAX_ETA); - td.set('text', eta); - td.set('title', eta); + td.textContent = eta; + td.title = eta; }; // ratio - this.columns['ratio'].updateTd = function(td, row) { + this.columns["ratio"].updateTd = function(td, row) { const ratio = this.getRowValue(row); - const string = (ratio === -1) ? '∞' : window.qBittorrent.Misc.toFixedPointString(ratio, 2); - td.set('text', string); - td.set('title', string); + const string = (ratio === -1) ? "∞" : window.qBittorrent.Misc.toFixedPointString(ratio, 2); + td.textContent = string; + td.title = string; + }; + + // popularity + this.columns["popularity"].updateTd = function(td, row) { + const value = this.getRowValue(row); + const popularity = (value === -1) ? "∞" : window.qBittorrent.Misc.toFixedPointString(value, 2); + td.textContent = popularity; + td.title = popularity; }; // added on - this.columns['added_on'].updateTd = function(td, row) { + this.columns["added_on"].updateTd = function(td, row) { const date = new Date(this.getRowValue(row) * 1000).toLocaleString(); - td.set('text', date); - td.set('title', date); + td.textContent = date; + td.title = date; }; // completion_on - this.columns['completion_on'].updateTd = function(td, row) { + this.columns["completion_on"].updateTd = function(td, row) { const val = this.getRowValue(row); if ((val === 0xffffffff) || (val < 0)) { - td.set('text', ''); - td.set('title', ''); + td.textContent = ""; + td.title = ""; } else { const date = new Date(this.getRowValue(row) * 1000).toLocaleString(); - td.set('text', date); - td.set('title', date); + td.textContent = date; + td.title = date; } }; + // tracker + this.columns["tracker"].updateTd = function(td, row) { + const value = this.getRowValue(row); + const tracker = displayFullURLTrackerColumn ? value : window.qBittorrent.Misc.getHost(value); + td.textContent = tracker; + td.title = value; + }; + // dl_limit, up_limit - this.columns['dl_limit'].updateTd = function(td, row) { + this.columns["dl_limit"].updateTd = function(td, row) { const speed = this.getRowValue(row); if (speed === 0) { - td.set('text', '∞'); - td.set('title', '∞'); + td.textContent = "∞"; + td.title = "∞"; } else { const formattedSpeed = window.qBittorrent.Misc.friendlyUnit(speed, true); - td.set('text', formattedSpeed); - td.set('title', formattedSpeed); + td.textContent = formattedSpeed; + td.title = formattedSpeed; } }; - this.columns['up_limit'].updateTd = this.columns['dl_limit'].updateTd; + this.columns["up_limit"].updateTd = this.columns["dl_limit"].updateTd; // downloaded, uploaded, downloaded_session, uploaded_session, amount_left - this.columns['downloaded'].updateTd = this.columns['size'].updateTd; - this.columns['uploaded'].updateTd = this.columns['size'].updateTd; - this.columns['downloaded_session'].updateTd = this.columns['size'].updateTd; - this.columns['uploaded_session'].updateTd = this.columns['size'].updateTd; - this.columns['amount_left'].updateTd = this.columns['size'].updateTd; + this.columns["downloaded"].updateTd = this.columns["size"].updateTd; + this.columns["uploaded"].updateTd = this.columns["size"].updateTd; + this.columns["downloaded_session"].updateTd = this.columns["size"].updateTd; + this.columns["uploaded_session"].updateTd = this.columns["size"].updateTd; + this.columns["amount_left"].updateTd = this.columns["size"].updateTd; // time active - this.columns['time_active'].updateTd = function(td, row) { + this.columns["time_active"].updateTd = function(td, row) { const activeTime = this.getRowValue(row, 0); const seedingTime = this.getRowValue(row, 1); const time = (seedingTime > 0) - ? ('QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=TransferListDelegate]' - .replace('%1', window.qBittorrent.Misc.friendlyDuration(activeTime)) - .replace('%2', window.qBittorrent.Misc.friendlyDuration(seedingTime))) + ? ("QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=TransferListDelegate]" + .replace("%1", window.qBittorrent.Misc.friendlyDuration(activeTime)) + .replace("%2", window.qBittorrent.Misc.friendlyDuration(seedingTime))) : window.qBittorrent.Misc.friendlyDuration(activeTime); - td.set('text', time); - td.set('title', time); + td.textContent = time; + td.title = time; }; // completed - this.columns['completed'].updateTd = this.columns['size'].updateTd; + this.columns["completed"].updateTd = this.columns["size"].updateTd; // max_ratio - this.columns['max_ratio'].updateTd = this.columns['ratio'].updateTd; + this.columns["max_ratio"].updateTd = this.columns["ratio"].updateTd; // seen_complete - this.columns['seen_complete'].updateTd = this.columns['completion_on'].updateTd; + this.columns["seen_complete"].updateTd = this.columns["completion_on"].updateTd; // last_activity - this.columns['last_activity'].updateTd = function(td, row) { + this.columns["last_activity"].updateTd = function(td, row) { const val = this.getRowValue(row); if (val < 1) { - td.set('text', '∞'); - td.set('title', '∞'); + td.textContent = "∞"; + td.title = "∞"; } else { - const formattedVal = 'QBT_TR(%1 ago)QBT_TR[CONTEXT=TransferListDelegate]'.replace('%1', window.qBittorrent.Misc.friendlyDuration((new Date()) / 1000 - val)); - td.set('text', formattedVal); - td.set('title', formattedVal); + const formattedVal = "QBT_TR(%1 ago)QBT_TR[CONTEXT=TransferListDelegate]".replace("%1", window.qBittorrent.Misc.friendlyDuration((new Date() / 1000) - val)); + td.textContent = formattedVal; + td.title = formattedVal; } }; // availability - this.columns['availability'].updateTd = function(td, row) { + this.columns["availability"].updateTd = function(td, row) { const value = window.qBittorrent.Misc.toFixedPointString(this.getRowValue(row), 3); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; + }; + + // infohash_v1 + this.columns["infohash_v1"].updateTd = function(td, row) { + const sourceInfohashV1 = this.getRowValue(row); + const infohashV1 = (sourceInfohashV1 !== "") ? sourceInfohashV1 : "QBT_TR(N/A)QBT_TR[CONTEXT=TransferListDelegate]"; + td.textContent = infohashV1; + td.title = infohashV1; + }; + + // infohash_v2 + this.columns["infohash_v2"].updateTd = function(td, row) { + const sourceInfohashV2 = this.getRowValue(row); + const infohashV2 = (sourceInfohashV2 !== "") ? sourceInfohashV2 : "QBT_TR(N/A)QBT_TR[CONTEXT=TransferListDelegate]"; + td.textContent = infohashV2; + td.title = infohashV2; }; // reannounce - this.columns['reannounce'].updateTd = function(td, row) { + this.columns["reannounce"].updateTd = function(td, row) { const time = window.qBittorrent.Misc.friendlyDuration(this.getRowValue(row)); - td.set('text', time); - td.set('title', time); + td.textContent = time; + td.title = time; + }; + + // private + this.columns["private"].updateTd = function(td, row) { + const hasMetadata = row["full_data"].has_metadata; + const isPrivate = this.getRowValue(row); + const string = hasMetadata + ? (isPrivate + ? "QBT_TR(Yes)QBT_TR[CONTEXT=PropertiesWidget]" + : "QBT_TR(No)QBT_TR[CONTEXT=PropertiesWidget]") + : "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]"; + td.textContent = string; + td.title = string; }; }, - applyFilter: function(row, filterName, categoryHash, tagHash, trackerHash, filterTerms) { - const state = row['full_data'].state; - const name = row['full_data'].name.toLowerCase(); + applyFilter: (row, filterName, category, tag, tracker, filterTerms) => { + const state = row["full_data"].state; let inactive = false; - let r; switch (filterName) { - case 'downloading': - if ((state != 'downloading') && (state.indexOf('DL') === -1)) + case "downloading": + if ((state !== "downloading") && !state.includes("DL")) return false; break; - case 'seeding': - if (state != 'uploading' && state != 'forcedUP' && state != 'stalledUP' && state != 'queuedUP' && state != 'checkingUP') + case "seeding": + if ((state !== "uploading") && (state !== "forcedUP") && (state !== "stalledUP") && (state !== "queuedUP") && (state !== "checkingUP")) return false; break; - case 'completed': - if ((state != 'uploading') && (state.indexOf('UP') === -1)) + case "completed": + if ((state !== "uploading") && !state.includes("UP")) return false; break; - case 'paused': - if (state.indexOf('paused') === -1) + case "stopped": + if (!state.includes("stopped")) return false; break; - case 'resumed': - if (state.indexOf('paused') > -1) + case "running": + if (state.includes("stopped")) return false; break; - case 'stalled': - if ((state != 'stalledUP') && (state != 'stalledDL')) + case "stalled": + if ((state !== "stalledUP") && (state !== "stalledDL")) return false; break; - case 'stalled_uploading': - if (state != 'stalledUP') + case "stalled_uploading": + if (state !== "stalledUP") return false; break; - case 'stalled_downloading': - if (state != 'stalledDL') + case "stalled_downloading": + if (state !== "stalledDL") return false; break; - case 'inactive': + case "inactive": inactive = true; // fallthrough - case 'active': - if (state == 'stalledDL') - r = (row['full_data'].upspeed > 0); + case "active": { + let r; + if (state === "stalledDL") + r = (row["full_data"].upspeed > 0); else - r = state == 'metaDL' || state == 'forcedMetaDL' || state == 'downloading' || state == 'forcedDL' || state == 'uploading' || state == 'forcedUP'; - if (r == inactive) + r = (state === "metaDL") || (state === "forcedMetaDL") || (state === "downloading") || (state === "forcedDL") || (state === "uploading") || (state === "forcedUP"); + if (r === inactive) return false; break; - case 'checking': - if (state !== 'checkingUP' && state !== 'checkingDL' && state !== 'checkingResumeData') + } + case "checking": + if ((state !== "checkingUP") && (state !== "checkingDL") && (state !== "checkingResumeData")) return false; break; - case 'moving': - if (state !== 'moving') + case "moving": + if (state !== "moving") return false; break; - case 'errored': - if (state != 'error' && state != "unknown" && state != "missingFiles") + case "errored": + if ((state !== "error") && (state !== "unknown") && (state !== "missingFiles")) return false; break; } - const categoryHashInt = parseInt(categoryHash); - if (!isNaN(categoryHashInt)) { - switch (categoryHashInt) { - case CATEGORIES_ALL: - break; // do nothing - case CATEGORIES_UNCATEGORIZED: - if (row['full_data'].category.length !== 0) + switch (category) { + case CATEGORIES_ALL: + break; // do nothing + + case CATEGORIES_UNCATEGORIZED: + if (row["full_data"].category.length > 0) + return false; + break; // do nothing + + default: { + if (!useSubcategories) { + if (category !== row["full_data"].category) return false; - break; // do nothing - default: - if (!useSubcategories) { - if (categoryHashInt !== genHash(row['full_data'].category)) - return false; - } - else { - const selectedCategoryName = category_list[categoryHash].name + "/"; - const torrentCategoryName = row['full_data'].category + "/"; + } + else { + const selectedCategory = categoryMap.get(category); + if (selectedCategory !== undefined) { + const selectedCategoryName = `${category}/`; + const torrentCategoryName = `${row["full_data"].category}/`; if (!torrentCategoryName.startsWith(selectedCategoryName)) return false; } + } + break; } } - const tagHashInt = parseInt(tagHash); - const isNumber = !isNaN(tagHashInt); - if (isNumber) { - switch (tagHashInt) { - case TAGS_ALL: - break; // do nothing + switch (tag) { + case TAGS_ALL: + break; // do nothing - case TAGS_UNTAGGED: - if (row['full_data'].tags.length !== 0) - return false; - break; // do nothing + case TAGS_UNTAGGED: + if (row["full_data"].tags.length > 0) + return false; + break; // do nothing - default: { - let rowTags = row['full_data'].tags.split(', '); - rowTags = rowTags.map(function(tag) { - return genHash(tag); - }); - if (!rowTags.contains(tagHashInt)) - return false; - break; - } + default: { + const tags = row["full_data"].tags.split(", "); + if (!tags.contains(tag)) + return false; + break; } } - const trackerHashInt = Number.parseInt(trackerHash, 10); - switch (trackerHashInt) { + switch (tracker) { case TRACKERS_ALL: break; // do nothing + case TRACKERS_TRACKERLESS: - if (row['full_data'].trackers_count !== 0) + if (row["full_data"].trackers_count > 0) return false; break; + default: { - const tracker = trackerList.get(trackerHashInt); - if (tracker && !tracker.torrents.includes(row['full_data'].rowId)) - return false; + const trackerTorrentMap = trackerMap.get(tracker); + if (trackerTorrentMap !== undefined) { + let found = false; + for (const torrents of trackerTorrentMap.values()) { + if (torrents.has(row["full_data"].rowId)) { + found = true; + break; + } + } + if (!found) + return false; + } break; } } - if ((filterTerms !== undefined) && (filterTerms !== null) - && (filterTerms.length > 0) && !window.qBittorrent.Misc.containsAllTerms(name, filterTerms)) - return false; + if ((filterTerms !== undefined) && (filterTerms !== null)) { + const filterBy = document.getElementById("torrentsFilterSelect").value; + const textToSearch = row["full_data"][filterBy].toLowerCase(); + if (filterTerms instanceof RegExp) { + if (!filterTerms.test(textToSearch)) + return false; + } + else { + if ((filterTerms.length > 0) && !window.qBittorrent.Misc.containsAllTerms(textToSearch, filterTerms)) + return false; + } + } return true; }, - getFilteredTorrentsNumber: function(filterName, categoryHash, tagHash, trackerHash) { + getFilteredTorrentsNumber: function(filterName, category, tag, tracker) { let cnt = 0; - const rows = this.rows.getValues(); - for (let i = 0; i < rows.length; ++i) - if (this.applyFilter(rows[i], filterName, categoryHash, tagHash, trackerHash, null)) + for (const row of this.rows.values()) { + if (this.applyFilter(row, filterName, category, tag, tracker, null)) ++cnt; + } return cnt; }, - getFilteredTorrentsHashes: function(filterName, categoryHash, tagHash, trackerHash) { + getFilteredTorrentsHashes: function(filterName, category, tag, tracker) { const rowsHashes = []; - const rows = this.rows.getValues(); + const useRegex = document.getElementById("torrentsFilterRegexBox").checked; + const filterText = document.getElementById("torrentsFilterInput").value.trim().toLowerCase(); + let filterTerms; + try { + filterTerms = (filterText.length > 0) + ? (useRegex ? new RegExp(filterText) : filterText.split(" ")) + : null; + } + catch (e) { // SyntaxError: Invalid regex pattern + return filteredRows; + } - for (let i = 0; i < rows.length; ++i) - if (this.applyFilter(rows[i], filterName, categoryHash, tagHash, trackerHash, null)) - rowsHashes.push(rows[i]['rowId']); + for (const row of this.rows.values()) { + if (this.applyFilter(row, filterName, category, tag, tracker, filterTerms)) + rowsHashes.push(row["rowId"]); + } return rowsHashes; }, @@ -1482,49 +1642,73 @@ window.qBittorrent.DynamicTable = (function() { getFilteredAndSortedRows: function() { const filteredRows = []; - const rows = this.rows.getValues(); - const filterText = $('torrentsFilterInput').value.trim().toLowerCase(); - const filterTerms = (filterText.length > 0) ? filterText.split(" ") : null; + const useRegex = $("torrentsFilterRegexBox").checked; + const filterText = $("torrentsFilterInput").value.trim().toLowerCase(); + let filterTerms; + try { + filterTerms = (filterText.length > 0) + ? (useRegex ? new RegExp(filterText) : filterText.split(" ")) + : null; + } + catch (e) { // SyntaxError: Invalid regex pattern + return filteredRows; + } - for (let i = 0; i < rows.length; ++i) { - if (this.applyFilter(rows[i], selected_filter, selected_category, selectedTag, selectedTracker, filterTerms)) { - filteredRows.push(rows[i]); - filteredRows[rows[i].rowId] = rows[i]; + for (const row of this.rows.values()) { + if (this.applyFilter(row, selectedStatus, selectedCategory, selectedTag, selectedTracker, filterTerms)) { + filteredRows.push(row); + filteredRows[row.rowId] = row; } } - filteredRows.sort(function(row1, row2) { + filteredRows.sort((row1, row2) => { const column = this.columns[this.sortedColumn]; const res = column.compareRows(row1, row2); - if (this.reverseSort === '0') + if (this.reverseSort === "0") return res; else return -res; - }.bind(this)); + }); return filteredRows; }, - setupTr: function(tr) { - tr.addEvent('dblclick', function(e) { - e.stop(); - this._this.deselectAll(); - this._this.selectRow(this.rowId); - const row = this._this.rows.get(this.rowId); - const state = row['full_data'].state; - if (state.indexOf('paused') > -1) + setupCommonEvents: function() { + this.parent(); + this.dynamicTableDiv.addEventListener("dblclick", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; + + this.deselectAll(); + this.selectRow(tr.rowId); + const row = this.getRow(tr.rowId); + const state = row["full_data"].state; + + const prefKey = + (state !== "uploading") + && (state !== "stoppedUP") + && (state !== "forcedUP") + && (state !== "stalledUP") + && (state !== "queuedUP") + && (state !== "checkingUP") + ? "dblclick_download" + : "dblclick_complete"; + + if (LocalPreferences.get(prefKey, "1") !== "1") + return true; + + if (state.includes("stopped")) startFN(); else - pauseFN(); - return true; + stopFN(); }); - tr.addClass("torrentsTableContextMenuTarget"); }, getCurrentTorrentID: function() { return this.getSelectedRowId(); }, - onSelectedRowChanged: function() { + onSelectedRowChanged: () => { updatePropertiesPanel(); } }); @@ -1533,59 +1717,47 @@ window.qBittorrent.DynamicTable = (function() { Extends: DynamicTable, initColumns: function() { - this.newColumn('country', '', 'QBT_TR(Country/Region)QBT_TR[CONTEXT=PeerListWidget]', 22, true); - this.newColumn('ip', '', 'QBT_TR(IP)QBT_TR[CONTEXT=PeerListWidget]', 80, true); - this.newColumn('port', '', 'QBT_TR(Port)QBT_TR[CONTEXT=PeerListWidget]', 35, true); - this.newColumn('connection', '', 'QBT_TR(Connection)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('flags', '', 'QBT_TR(Flags)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('client', '', 'QBT_TR(Client)QBT_TR[CONTEXT=PeerListWidget]', 140, true); - this.newColumn('peer_id_client', '', 'QBT_TR(Peer ID Client)QBT_TR[CONTEXT=PeerListWidget]', 60, false); - this.newColumn('progress', '', 'QBT_TR(Progress)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('dl_speed', '', 'QBT_TR(Down Speed)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('up_speed', '', 'QBT_TR(Up Speed)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('downloaded', '', 'QBT_TR(Downloaded)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('uploaded', '', 'QBT_TR(Uploaded)QBT_TR[CONTEXT=PeerListWidget]', 50, true); - this.newColumn('relevance', '', 'QBT_TR(Relevance)QBT_TR[CONTEXT=PeerListWidget]', 30, true); - this.newColumn('files', '', 'QBT_TR(Files)QBT_TR[CONTEXT=PeerListWidget]', 100, true); - - this.columns['country'].dataProperties.push('country_code'); - this.columns['flags'].dataProperties.push('flags_desc'); + this.newColumn("country", "", "QBT_TR(Country/Region)QBT_TR[CONTEXT=PeerListWidget]", 22, true); + this.newColumn("ip", "", "QBT_TR(IP)QBT_TR[CONTEXT=PeerListWidget]", 80, true); + this.newColumn("port", "", "QBT_TR(Port)QBT_TR[CONTEXT=PeerListWidget]", 35, true); + this.newColumn("connection", "", "QBT_TR(Connection)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("flags", "", "QBT_TR(Flags)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("client", "", "QBT_TR(Client)QBT_TR[CONTEXT=PeerListWidget]", 140, true); + this.newColumn("peer_id_client", "", "QBT_TR(Peer ID Client)QBT_TR[CONTEXT=PeerListWidget]", 60, false); + this.newColumn("progress", "", "QBT_TR(Progress)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("dl_speed", "", "QBT_TR(Down Speed)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("up_speed", "", "QBT_TR(Up Speed)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("downloaded", "", "QBT_TR(Downloaded)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("uploaded", "", "QBT_TR(Uploaded)QBT_TR[CONTEXT=PeerListWidget]", 50, true); + this.newColumn("relevance", "", "QBT_TR(Relevance)QBT_TR[CONTEXT=PeerListWidget]", 30, true); + this.newColumn("files", "", "QBT_TR(Files)QBT_TR[CONTEXT=PeerListWidget]", 100, true); + + this.columns["country"].dataProperties.push("country_code"); + this.columns["flags"].dataProperties.push("flags_desc"); this.initColumnsFunctions(); }, initColumnsFunctions: function() { // country - this.columns['country'].updateTd = function(td, row) { + this.columns["country"].updateTd = function(td, row) { const country = this.getRowValue(row, 0); const country_code = this.getRowValue(row, 1); - if (!country_code) { - if (td.getChildren('img').length > 0) - td.getChildren('img')[0].dispose(); - return; + let span = td.firstElementChild; + if (span === null) { + span = document.createElement("span"); + span.classList.add("flags"); + td.append(span); } - const img_path = 'images/flags/' + country_code + '.svg'; - - if (td.getChildren('img').length > 0) { - const img = td.getChildren('img')[0]; - img.set('src', img_path); - img.set('class', 'flags'); - img.set('alt', country); - img.set('title', country); - } - else - td.adopt(new Element('img', { - 'src': img_path, - 'class': 'flags', - 'alt': country, - 'title': country - })); + span.style.backgroundImage = `url('images/flags/${country_code || "xx"}.svg')`; + span.textContent = country; + td.title = country; }; // ip - this.columns['ip'].compareRows = function(row1, row2) { + this.columns["ip"].compareRows = function(row1, row2) { const ip1 = this.getRowValue(row1); const ip2 = this.getRowValue(row2); @@ -1593,7 +1765,7 @@ window.qBittorrent.DynamicTable = (function() { const b = ip2.split("."); for (let i = 0; i < 4; ++i) { - if (a[i] != b[i]) + if (a[i] !== b[i]) return a[i] - b[i]; } @@ -1601,53 +1773,51 @@ window.qBittorrent.DynamicTable = (function() { }; // flags - this.columns['flags'].updateTd = function(td, row) { - td.set('text', this.getRowValue(row, 0)); - td.set('title', this.getRowValue(row, 1)); + this.columns["flags"].updateTd = function(td, row) { + td.textContent = this.getRowValue(row, 0); + td.title = this.getRowValue(row, 1); }; // progress - this.columns['progress'].updateTd = function(td, row) { + this.columns["progress"].updateTd = function(td, row) { const progress = this.getRowValue(row); - let progressFormatted = (progress * 100).round(1); - if (progressFormatted == 100.0 && progress != 1.0) - progressFormatted = 99.9; - progressFormatted += "%"; - td.set('text', progressFormatted); - td.set('title', progressFormatted); + const progressFormatted = `${window.qBittorrent.Misc.toFixedPointString((progress * 100), 1)}%`; + td.textContent = progressFormatted; + td.title = progressFormatted; }; // dl_speed, up_speed - this.columns['dl_speed'].updateTd = function(td, row) { + this.columns["dl_speed"].updateTd = function(td, row) { const speed = this.getRowValue(row); if (speed === 0) { - td.set('text', ''); - td.set('title', ''); + td.textContent = ""; + td.title = ""; } else { const formattedSpeed = window.qBittorrent.Misc.friendlyUnit(speed, true); - td.set('text', formattedSpeed); - td.set('title', formattedSpeed); + td.textContent = formattedSpeed; + td.title = formattedSpeed; } }; - this.columns['up_speed'].updateTd = this.columns['dl_speed'].updateTd; + this.columns["up_speed"].updateTd = this.columns["dl_speed"].updateTd; // downloaded, uploaded - this.columns['downloaded'].updateTd = function(td, row) { + this.columns["downloaded"].updateTd = function(td, row) { const downloaded = window.qBittorrent.Misc.friendlyUnit(this.getRowValue(row), false); - td.set('text', downloaded); - td.set('title', downloaded); + td.textContent = downloaded; + td.title = downloaded; }; - this.columns['uploaded'].updateTd = this.columns['downloaded'].updateTd; + this.columns["uploaded"].updateTd = this.columns["downloaded"].updateTd; // relevance - this.columns['relevance'].updateTd = this.columns['progress'].updateTd; + this.columns["relevance"].updateTd = this.columns["progress"].updateTd; + this.columns["relevance"].staticWidth = 100; // files - this.columns['files'].updateTd = function(td, row) { + this.columns["files"].updateTd = function(td, row) { const value = this.getRowValue(row, 0); - td.set('text', value.replace(/\n/g, ';')); - td.set('title', value); + td.textContent = value.replace(/\n/g, ";"); + td.title = value; }; } @@ -1657,11 +1827,13 @@ window.qBittorrent.DynamicTable = (function() { Extends: DynamicTable, initColumns: function() { - this.newColumn('fileName', '', 'QBT_TR(Name)QBT_TR[CONTEXT=SearchResultsTable]', 500, true); - this.newColumn('fileSize', '', 'QBT_TR(Size)QBT_TR[CONTEXT=SearchResultsTable]', 100, true); - this.newColumn('nbSeeders', '', 'QBT_TR(Seeders)QBT_TR[CONTEXT=SearchResultsTable]', 100, true); - this.newColumn('nbLeechers', '', 'QBT_TR(Leechers)QBT_TR[CONTEXT=SearchResultsTable]', 100, true); - this.newColumn('siteUrl', '', 'QBT_TR(Search engine)QBT_TR[CONTEXT=SearchResultsTable]', 250, true); + this.newColumn("fileName", "", "QBT_TR(Name)QBT_TR[CONTEXT=SearchResultsTable]", 500, true); + this.newColumn("fileSize", "", "QBT_TR(Size)QBT_TR[CONTEXT=SearchResultsTable]", 100, true); + this.newColumn("nbSeeders", "", "QBT_TR(Seeders)QBT_TR[CONTEXT=SearchResultsTable]", 100, true); + this.newColumn("nbLeechers", "", "QBT_TR(Leechers)QBT_TR[CONTEXT=SearchResultsTable]", 100, true); + this.newColumn("engineName", "", "QBT_TR(Engine)QBT_TR[CONTEXT=SearchResultsTable]", 100, true); + this.newColumn("siteUrl", "", "QBT_TR(Engine URL)QBT_TR[CONTEXT=SearchResultsTable]", 250, true); + this.newColumn("pubDate", "", "QBT_TR(Published On)QBT_TR[CONTEXT=SearchResultsTable]", 200, true); this.initColumnsFunctions(); }, @@ -1669,23 +1841,30 @@ window.qBittorrent.DynamicTable = (function() { initColumnsFunctions: function() { const displaySize = function(td, row) { const size = window.qBittorrent.Misc.friendlyUnit(this.getRowValue(row), false); - td.set('text', size); - td.set('title', size); + td.textContent = size; + td.title = size; }; const displayNum = function(td, row) { const value = this.getRowValue(row); const formattedValue = (value === "-1") ? "Unknown" : value; - td.set('text', formattedValue); - td.set('title', formattedValue); + td.textContent = formattedValue; + td.title = formattedValue; + }; + const displayDate = function(td, row) { + const value = this.getRowValue(row) * 1000; + const formattedValue = (Number.isNaN(value) || (value <= 0)) ? "" : (new Date(value).toLocaleString()); + td.textContent = formattedValue; + td.title = formattedValue; }; - this.columns['fileSize'].updateTd = displaySize; - this.columns['nbSeeders'].updateTd = displayNum; - this.columns['nbLeechers'].updateTd = displayNum; + this.columns["fileSize"].updateTd = displaySize; + this.columns["nbSeeders"].updateTd = displayNum; + this.columns["nbLeechers"].updateTd = displayNum; + this.columns["pubDate"].updateTd = displayDate; }, getFilteredAndSortedRows: function() { - const getSizeFilters = function() { + const getSizeFilters = () => { let minSize = (window.qBittorrent.Search.searchSizeFilter.min > 0.00) ? (window.qBittorrent.Search.searchSizeFilter.min * Math.pow(1024, window.qBittorrent.Search.searchSizeFilter.minUnit)) : 0.00; let maxSize = (window.qBittorrent.Search.searchSizeFilter.max > 0.00) ? (window.qBittorrent.Search.searchSizeFilter.max * Math.pow(1024, window.qBittorrent.Search.searchSizeFilter.maxUnit)) : 0.00; @@ -1701,7 +1880,7 @@ window.qBittorrent.DynamicTable = (function() { }; }; - const getSeedsFilters = function() { + const getSeedsFilters = () => { let minSeeds = (window.qBittorrent.Search.searchSeedsFilter.min > 0) ? window.qBittorrent.Search.searchSeedsFilter.min : 0; let maxSeeds = (window.qBittorrent.Search.searchSeedsFilter.max > 0) ? window.qBittorrent.Search.searchSeedsFilter.max : 0; @@ -1718,16 +1897,14 @@ window.qBittorrent.DynamicTable = (function() { }; let filteredRows = []; - const rows = this.rows.getValues(); const searchTerms = window.qBittorrent.Search.searchText.pattern.toLowerCase().split(" "); const filterTerms = window.qBittorrent.Search.searchText.filterPattern.toLowerCase().split(" "); const sizeFilters = getSizeFilters(); const seedsFilters = getSeedsFilters(); - const searchInTorrentName = $('searchInTorrentName').get('value') === "names"; + const searchInTorrentName = $("searchInTorrentName").value === "names"; if (searchInTorrentName || (filterTerms.length > 0) || (window.qBittorrent.Search.searchSizeFilter.min > 0.00) || (window.qBittorrent.Search.searchSizeFilter.max > 0.00)) { - for (let i = 0; i < rows.length; ++i) { - const row = rows[i]; + for (const row of this.getRowValues()) { if (searchInTorrentName && !window.qBittorrent.Misc.containsAllTerms(row.full_data.fileName, searchTerms)) continue; @@ -1746,74 +1923,146 @@ window.qBittorrent.DynamicTable = (function() { } } else { - filteredRows = rows; + filteredRows = [...this.getRowValues()]; } - filteredRows.sort(function(row1, row2) { + filteredRows.sort((row1, row2) => { const column = this.columns[this.sortedColumn]; const res = column.compareRows(row1, row2); - if (this.reverseSort === '0') + if (this.reverseSort === "0") return res; else return -res; - }.bind(this)); + }); return filteredRows; }, - - setupTr: function(tr) { - tr.addClass("searchTableRow"); - } }); const SearchPluginsTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('fullName', '', 'QBT_TR(Name)QBT_TR[CONTEXT=SearchPluginsTable]', 175, true); - this.newColumn('version', '', 'QBT_TR(Version)QBT_TR[CONTEXT=SearchPluginsTable]', 100, true); - this.newColumn('url', '', 'QBT_TR(Url)QBT_TR[CONTEXT=SearchPluginsTable]', 175, true); - this.newColumn('enabled', '', 'QBT_TR(Enabled)QBT_TR[CONTEXT=SearchPluginsTable]', 100, true); + this.newColumn("fullName", "", "QBT_TR(Name)QBT_TR[CONTEXT=SearchPluginsTable]", 175, true); + this.newColumn("version", "", "QBT_TR(Version)QBT_TR[CONTEXT=SearchPluginsTable]", 100, true); + this.newColumn("url", "", "QBT_TR(Url)QBT_TR[CONTEXT=SearchPluginsTable]", 175, true); + this.newColumn("enabled", "", "QBT_TR(Enabled)QBT_TR[CONTEXT=SearchPluginsTable]", 100, true); this.initColumnsFunctions(); }, initColumnsFunctions: function() { - this.columns['enabled'].updateTd = function(td, row) { + this.columns["enabled"].updateTd = function(td, row) { const value = this.getRowValue(row); if (value) { - td.set('text', 'QBT_TR(Yes)QBT_TR[CONTEXT=SearchPluginsTable]'); - td.set('title', 'QBT_TR(Yes)QBT_TR[CONTEXT=SearchPluginsTable]'); - td.getParent("tr").addClass("green"); - td.getParent("tr").removeClass("red"); + td.textContent = "QBT_TR(Yes)QBT_TR[CONTEXT=SearchPluginsTable]"; + td.title = "QBT_TR(Yes)QBT_TR[CONTEXT=SearchPluginsTable]"; + td.closest("tr").classList.add("green"); + td.closest("tr").classList.remove("red"); } else { - td.set('text', 'QBT_TR(No)QBT_TR[CONTEXT=SearchPluginsTable]'); - td.set('title', 'QBT_TR(No)QBT_TR[CONTEXT=SearchPluginsTable]'); - td.getParent("tr").addClass("red"); - td.getParent("tr").removeClass("green"); + td.textContent = "QBT_TR(No)QBT_TR[CONTEXT=SearchPluginsTable]"; + td.title = "QBT_TR(No)QBT_TR[CONTEXT=SearchPluginsTable]"; + td.closest("tr").classList.add("red"); + td.closest("tr").classList.remove("green"); } }; }, - - setupTr: function(tr) { - tr.addClass("searchPluginsTableRow"); - } }); const TorrentTrackersTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('tier', '', 'QBT_TR(Tier)QBT_TR[CONTEXT=TrackerListWidget]', 35, true); - this.newColumn('url', '', 'QBT_TR(URL)QBT_TR[CONTEXT=TrackerListWidget]', 250, true); - this.newColumn('status', '', 'QBT_TR(Status)QBT_TR[CONTEXT=TrackerListWidget]', 125, true); - this.newColumn('peers', '', 'QBT_TR(Peers)QBT_TR[CONTEXT=TrackerListWidget]', 75, true); - this.newColumn('seeds', '', 'QBT_TR(Seeds)QBT_TR[CONTEXT=TrackerListWidget]', 75, true); - this.newColumn('leeches', '', 'QBT_TR(Leeches)QBT_TR[CONTEXT=TrackerListWidget]', 75, true); - this.newColumn('downloaded', '', 'QBT_TR(Times Downloaded)QBT_TR[CONTEXT=TrackerListWidget]', 100, true); - this.newColumn('message', '', 'QBT_TR(Message)QBT_TR[CONTEXT=TrackerListWidget]', 250, true); + this.newColumn("tier", "", "QBT_TR(Tier)QBT_TR[CONTEXT=TrackerListWidget]", 35, true); + this.newColumn("url", "", "QBT_TR(URL)QBT_TR[CONTEXT=TrackerListWidget]", 250, true); + this.newColumn("status", "", "QBT_TR(Status)QBT_TR[CONTEXT=TrackerListWidget]", 125, true); + this.newColumn("peers", "", "QBT_TR(Peers)QBT_TR[CONTEXT=TrackerListWidget]", 75, true); + this.newColumn("seeds", "", "QBT_TR(Seeds)QBT_TR[CONTEXT=TrackerListWidget]", 75, true); + this.newColumn("leeches", "", "QBT_TR(Leeches)QBT_TR[CONTEXT=TrackerListWidget]", 75, true); + this.newColumn("downloaded", "", "QBT_TR(Times Downloaded)QBT_TR[CONTEXT=TrackerListWidget]", 100, true); + this.newColumn("message", "", "QBT_TR(Message)QBT_TR[CONTEXT=TrackerListWidget]", 250, true); + + this.initColumnsFunctions(); }, + + initColumnsFunctions: function() { + const naturalSort = function(row1, row2) { + if (!row1.full_data._sortable || !row2.full_data._sortable) + return 0; + + const value1 = this.getRowValue(row1); + const value2 = this.getRowValue(row2); + return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); + }; + + this.columns["url"].compareRows = naturalSort; + this.columns["status"].compareRows = naturalSort; + this.columns["message"].compareRows = naturalSort; + + const sortNumbers = function(row1, row2) { + if (!row1.full_data._sortable || !row2.full_data._sortable) + return 0; + + const value1 = this.getRowValue(row1); + const value2 = this.getRowValue(row2); + if (value1 === "") + return -1; + if (value2 === "") + return 1; + return compareNumbers(value1, value2); + }; + + this.columns["tier"].compareRows = sortNumbers; + + const sortMixed = function(row1, row2) { + if (!row1.full_data._sortable || !row2.full_data._sortable) + return 0; + + const value1 = this.getRowValue(row1); + const value2 = this.getRowValue(row2); + if (value1 === "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]") + return -1; + if (value2 === "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]") + return 1; + return compareNumbers(value1, value2); + }; + + this.columns["peers"].compareRows = sortMixed; + this.columns["seeds"].compareRows = sortMixed; + this.columns["leeches"].compareRows = sortMixed; + this.columns["downloaded"].compareRows = sortMixed; + + this.columns["status"].updateTd = function(td, row) { + let statusClass = "trackerUnknown"; + const status = this.getRowValue(row); + switch (status) { + case "QBT_TR(Disabled)QBT_TR[CONTEXT=TrackerListWidget]": + statusClass = "trackerDisabled"; + break; + case "QBT_TR(Not contacted yet)QBT_TR[CONTEXT=TrackerListWidget]": + statusClass = "trackerNotContacted"; + break; + case "QBT_TR(Working)QBT_TR[CONTEXT=TrackerListWidget]": + statusClass = "trackerWorking"; + break; + case "QBT_TR(Updating...)QBT_TR[CONTEXT=TrackerListWidget]": + statusClass = "trackerUpdating"; + break; + case "QBT_TR(Not working)QBT_TR[CONTEXT=TrackerListWidget]": + statusClass = "trackerNotWorking"; + break; + } + + for (const c of [...td.classList]) { + if (c.startsWith("tracker")) + td.classList.remove(c); + } + td.classList.add(statusClass); + td.textContent = status; + td.title = status; + }; + } }); const BulkRenameTorrentFilesTable = new Class({ @@ -1829,9 +2078,9 @@ window.qBittorrent.DynamicTable = (function() { populateTable: function(root) { this.fileTree.setRoot(root); - root.children.each(function(node) { + root.children.each((node) => { this._addNodeToTable(node, 0); - }.bind(this)); + }); }, _addNodeToTable: function(node, depth) { @@ -1857,9 +2106,9 @@ window.qBittorrent.DynamicTable = (function() { this.updateRowData(node.data); } - node.children.each(function(child) { + node.children.each((child) => { this._addNodeToTable(child, depth + 1); - }.bind(this)); + }); }, getRoot: function() { @@ -1871,24 +2120,24 @@ window.qBittorrent.DynamicTable = (function() { }, getRow: function(node) { - const rowId = this.fileTree.getRowId(node); + const rowId = this.fileTree.getRowId(node).toString(); return this.rows.get(rowId); }, getSelectedRows: function() { const nodes = this.fileTree.toArray(); - return nodes.filter(x => x.checked == 0); + return nodes.filter(x => x.checked === 0); }, initColumns: function() { // Blocks saving header width (because window width isn't saved) - LocalPreferences.remove('column_' + "checked" + '_width_' + this.dynamicTableDivId); - LocalPreferences.remove('column_' + "original" + '_width_' + this.dynamicTableDivId); - LocalPreferences.remove('column_' + "renamed" + '_width_' + this.dynamicTableDivId); - this.newColumn('checked', '', '', 50, true); - this.newColumn('original', '', 'QBT_TR(Original)QBT_TR[CONTEXT=TrackerListWidget]', 270, true); - this.newColumn('renamed', '', 'QBT_TR(Renamed)QBT_TR[CONTEXT=TrackerListWidget]', 220, true); + LocalPreferences.remove(`column_checked_width_${this.dynamicTableDivId}`); + LocalPreferences.remove(`column_original_width_${this.dynamicTableDivId}`); + LocalPreferences.remove(`column_renamed_width_${this.dynamicTableDivId}`); + this.newColumn("checked", "", "", 50, true); + this.newColumn("original", "", "QBT_TR(Original)QBT_TR[CONTEXT=TrackerListWidget]", 270, true); + this.newColumn("renamed", "", "QBT_TR(Renamed)QBT_TR[CONTEXT=TrackerListWidget]", 220, true); this.initColumnsFunctions(); }, @@ -1897,14 +2146,14 @@ window.qBittorrent.DynamicTable = (function() { * Toggles the global checkbox and all checkboxes underneath */ toggleGlobalCheckbox: function() { - const checkbox = $('rootMultiRename_cb'); - const checkboxes = $$('input.RenamingCB'); + const checkbox = $("rootMultiRename_cb"); + const checkboxes = document.querySelectorAll("input.RenamingCB"); for (let i = 0; i < checkboxes.length; ++i) { const node = this.getNode(i); if (checkbox.checked || checkbox.indeterminate) { - let cb = checkboxes[i]; + const cb = checkboxes[i]; cb.checked = true; cb.indeterminate = false; cb.state = "checked"; @@ -1912,7 +2161,7 @@ window.qBittorrent.DynamicTable = (function() { node.full_data.checked = node.checked; } else { - let cb = checkboxes[i]; + const cb = checkboxes[i]; cb.checked = false; cb.indeterminate = false; cb.state = "unchecked"; @@ -1929,32 +2178,19 @@ window.qBittorrent.DynamicTable = (function() { node.checked = checkState; node.full_data.checked = checkState; const checkbox = $(`cbRename${rowId}`); - checkbox.checked = node.checked == 0; + checkbox.checked = node.checked === 0; checkbox.state = checkbox.checked ? "checked" : "unchecked"; - for (let i = 0; i < node.children.length; ++i) { + for (let i = 0; i < node.children.length; ++i) this.toggleNodeTreeCheckbox(node.children[i].rowId, checkState); - } }, - updateGlobalCheckbox: function() { - const checkbox = $('rootMultiRename_cb'); - const checkboxes = $$('input.RenamingCB'); - const isAllChecked = function() { - for (let i = 0; i < checkboxes.length; ++i) { - if (!checkboxes[i].checked) - return false; - } - return true; - }; - const isAllUnchecked = function() { - for (let i = 0; i < checkboxes.length; ++i) { - if (checkboxes[i].checked) - return false; - } - return true; - }; - if (isAllChecked()) { + updateGlobalCheckbox: () => { + const checkbox = $("rootMultiRename_cb"); + const checkboxes = document.querySelectorAll("input.RenamingCB"); + const isAllChecked = Array.prototype.every.call(checkboxes, (checkbox => checkbox.checked)); + const isAllUnchecked = (() => Array.prototype.every.call(checkboxes, (checkbox => !checkbox.checked))); + if (isAllChecked) { checkbox.state = "checked"; checkbox.indeterminate = false; checkbox.checked = true; @@ -1975,22 +2211,20 @@ window.qBittorrent.DynamicTable = (function() { const that = this; // checked - this.columns['checked'].updateTd = function(td, row) { + this.columns["checked"].updateTd = function(td, row) { const id = row.rowId; const value = this.getRowValue(row); - const treeImg = new Element('img', { - src: 'images/L.gif', - styles: { - 'margin-bottom': -2 - } - }); - const checkbox = new Element('input'); - checkbox.set('type', 'checkbox'); - checkbox.set('id', 'cbRename' + id); - checkbox.set('data-id', id); - checkbox.set('class', 'RenamingCB'); - checkbox.addEvent('click', function(e) { + const treeImg = document.createElement("img"); + treeImg.src = "images/L.gif"; + treeImg.style.marginBottom = "-2px"; + + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.id = `cbRename${id}`; + checkbox.setAttribute("data-id", id); + checkbox.className = "RenamingCB"; + checkbox.addEventListener("click", (e) => { const node = that.getNode(id); node.checked = e.target.checked ? 0 : 1; node.full_data.checked = node.checked; @@ -1998,117 +2232,89 @@ window.qBittorrent.DynamicTable = (function() { that.onRowSelectionChange(node); e.stopPropagation(); }); - checkbox.checked = value == 0; + checkbox.checked = (value === 0); checkbox.state = checkbox.checked ? "checked" : "unchecked"; checkbox.indeterminate = false; - td.adopt(treeImg, checkbox); + td.replaceChildren(treeImg, checkbox); }; + this.columns["checked"].staticWidth = 50; // original - this.columns['original'].updateTd = function(td, row) { + this.columns["original"].updateTd = function(td, row) { const id = row.rowId; - const fileNameId = 'filesTablefileName' + id; + const fileNameId = `filesTablefileName${id}`; const node = that.getNode(id); if (node.isFolder) { const value = this.getRowValue(row); - const dirImgId = 'renameTableDirImg' + id; + const dirImgId = `renameTableDirImg${id}`; if ($(dirImgId)) { // just update file name - $(fileNameId).set('text', value); + $(fileNameId).textContent = value; } else { - const span = new Element('span', { - text: value, - id: fileNameId - }); - const dirImg = new Element('img', { - src: 'images/directory.svg', - styles: { - 'width': 15, - 'padding-right': 5, - 'margin-bottom': -3, - 'margin-left': (node.depth * 20) - }, - id: dirImgId - }); - const html = dirImg.outerHTML + span.outerHTML; - td.set('html', html); + const span = document.createElement("span"); + span.textContent = value; + span.id = fileNameId; + + const dirImg = document.createElement("img"); + dirImg.src = "images/directory.svg"; + dirImg.style.width = "20px"; + dirImg.style.paddingRight = "5px"; + dirImg.style.marginBottom = "-3px"; + dirImg.style.marginLeft = `${node.depth * 20}px`; + dirImg.id = dirImgId; + td.replaceChildren(dirImg, span); } } else { // is file const value = this.getRowValue(row); - const span = new Element('span', { - text: value, - id: fileNameId, - styles: { - 'margin-left': ((node.depth + 1) * 20) - } - }); - td.set('html', span.outerHTML); + const span = document.createElement("span"); + span.textContent = value; + span.id = fileNameId; + span.style.marginLeft = `${(node.depth + 1) * 20}px`; + td.replaceChildren(span); } }; // renamed - this.columns['renamed'].updateTd = function(td, row) { + this.columns["renamed"].updateTd = function(td, row) { const id = row.rowId; - const fileNameRenamedId = 'filesTablefileRenamed' + id; + const fileNameRenamedId = `filesTablefileRenamed${id}`; const value = this.getRowValue(row); - const span = new Element('span', { - text: value, - id: fileNameRenamedId, - }); - td.set('html', span.outerHTML); + const span = document.createElement("span"); + span.textContent = value; + span.id = fileNameRenamedId; + td.replaceChildren(span); }; }, - onRowSelectionChange: function(row) {}, + onRowSelectionChange: (row) => {}, - selectRow: function() { + selectRow: () => { return; }, reselectRows: function(rowIds) { - const that = this; this.deselectAll(); - this.tableBody.getElements('tr').each(function(tr) { - if (rowIds.indexOf(tr.rowId) > -1) { - const node = that.getNode(tr.rowId); + for (const tr of this.getTrs()) { + if (rowIds.includes(tr.rowId)) { + const node = this.getNode(tr.rowId); node.checked = 0; node.full_data.checked = 0; - const checkbox = tr.children[0].getElement('input'); + const checkbox = tr.querySelector(".RenamingCB"); checkbox.state = "checked"; checkbox.indeterminate = false; checkbox.checked = true; } - }); - + } this.updateGlobalCheckbox(); }, - altRow: function() { - let addClass = false; - const trs = this.tableBody.getElements('tr'); - trs.each(function(tr) { - if (tr.hasClass("invisible")) - return; - - if (addClass) { - tr.addClass("alt"); - tr.removeClass("nonAlt"); - } - else { - tr.removeClass("alt"); - tr.addClass("nonAlt"); - } - addClass = !addClass; - }.bind(this)); - }, - _sortNodesByColumn: function(nodes, column) { - nodes.sort(function(row1, row2) { + nodes.sort((row1, row2) => { // list folders before files when sorting by name if (column.name === "original") { const node1 = this.getNode(row1.data.rowId); @@ -2120,21 +2326,21 @@ window.qBittorrent.DynamicTable = (function() { } const res = column.compareRows(row1, row2); - return (this.reverseSort === '0') ? res : -res; - }.bind(this)); + return (this.reverseSort === "0") ? res : -res; + }); - nodes.each(function(node) { + nodes.each((node) => { if (node.children.length > 0) this._sortNodesByColumn(node.children, column); - }.bind(this)); + }); }, _filterNodes: function(node, filterTerms, filteredRows) { if (node.isFolder) { - const childAdded = node.children.reduce(function(acc, child) { + const childAdded = node.children.reduce((acc, child) => { // we must execute the function before ORing w/ acc or we'll stop checking child nodes after the first successful match return (this._filterNodes(child, filterTerms, filteredRows) || acc); - }.bind(this), false); + }, false); if (childAdded) { const row = this.getRow(node); @@ -2153,8 +2359,8 @@ window.qBittorrent.DynamicTable = (function() { }, setFilter: function(text) { - const filterTerms = text.trim().toLowerCase().split(' '); - if ((filterTerms.length === 1) && (filterTerms[0] === '')) + const filterTerms = text.trim().toLowerCase().split(" "); + if ((filterTerms.length === 1) && (filterTerms[0] === "")) this.filterTerms = []; else this.filterTerms = filterTerms; @@ -2164,35 +2370,35 @@ window.qBittorrent.DynamicTable = (function() { if (this.getRoot() === null) return []; - const generateRowsSignature = function(rows) { - const rowsData = rows.map(function(row) { - return row.full_data; - }); + const generateRowsSignature = () => { + const rowsData = []; + for (const { full_data } of this.getRowValues()) + rowsData.push(full_data); return JSON.stringify(rowsData); }; const getFilteredRows = function() { if (this.filterTerms.length === 0) { const nodeArray = this.fileTree.toArray(); - const filteredRows = nodeArray.map(function(node) { + const filteredRows = nodeArray.map((node) => { return this.getRow(node); - }.bind(this)); + }); return filteredRows; } const filteredRows = []; - this.getRoot().children.each(function(child) { + this.getRoot().children.each((child) => { this._filterNodes(child, this.filterTerms, filteredRows); - }.bind(this)); + }); filteredRows.reverse(); return filteredRows; }.bind(this); const hasRowsChanged = function(rowsString, prevRowsStringString) { const rowsChanged = (rowsString !== prevRowsStringString); - const isFilterTermsChanged = this.filterTerms.reduce(function(acc, term, index) { + const isFilterTermsChanged = this.filterTerms.reduce((acc, term, index) => { return (acc || (term !== this.prevFilterTerms[index])); - }.bind(this), false); + }, false); const isFilterChanged = ((this.filterTerms.length !== this.prevFilterTerms.length) || ((this.filterTerms.length > 0) && isFilterTermsChanged)); const isSortedColumnChanged = (this.prevSortedColumn !== this.sortedColumn); @@ -2201,10 +2407,9 @@ window.qBittorrent.DynamicTable = (function() { return (rowsChanged || isFilterChanged || isSortedColumnChanged || isReverseSortChanged); }.bind(this); - const rowsString = generateRowsSignature(this.rows); - if (!hasRowsChanged(rowsString, this.prevRowsString)) { + const rowsString = generateRowsSignature(); + if (!hasRowsChanged(rowsString, this.prevRowsString)) return this.prevFilteredRows; - } // sort, then filter const column = this.columns[this.sortedColumn]; @@ -2227,18 +2432,7 @@ window.qBittorrent.DynamicTable = (function() { row.full_data.remaining = (row.full_data.size * (1.0 - (row.full_data.progress / 100))); }, - setupTr: function(tr) { - tr.addEvent('keydown', function(event) { - switch (event.key) { - case "left": - qBittorrent.PropFiles.collapseFolder(this._this.getSelectedRowId()); - return false; - case "right": - qBittorrent.PropFiles.expandFolder(this._this.getSelectedRowId()); - return false; - } - }); - } + setupCommonEvents: () => {} }); const TorrentFilesTable = new Class({ @@ -2254,9 +2448,9 @@ window.qBittorrent.DynamicTable = (function() { populateTable: function(root) { this.fileTree.setRoot(root); - root.children.each(function(node) { + root.children.each((node) => { this._addNodeToTable(node, 0); - }.bind(this)); + }); }, _addNodeToTable: function(node, depth) { @@ -2285,9 +2479,9 @@ window.qBittorrent.DynamicTable = (function() { this.updateRowData(node.data); } - node.children.each(function(child) { + node.children.each((child) => { this._addNodeToTable(child, depth + 1); - }.bind(this)); + }); }, getRoot: function() { @@ -2299,18 +2493,18 @@ window.qBittorrent.DynamicTable = (function() { }, getRow: function(node) { - const rowId = this.fileTree.getRowId(node); + const rowId = this.fileTree.getRowId(node).toString(); return this.rows.get(rowId); }, initColumns: function() { - this.newColumn('checked', '', '', 50, true); - this.newColumn('name', '', 'QBT_TR(Name)QBT_TR[CONTEXT=TrackerListWidget]', 300, true); - this.newColumn('size', '', 'QBT_TR(Total Size)QBT_TR[CONTEXT=TrackerListWidget]', 75, true); - this.newColumn('progress', '', 'QBT_TR(Progress)QBT_TR[CONTEXT=TrackerListWidget]', 100, true); - this.newColumn('priority', '', 'QBT_TR(Download Priority)QBT_TR[CONTEXT=TrackerListWidget]', 150, true); - this.newColumn('remaining', '', 'QBT_TR(Remaining)QBT_TR[CONTEXT=TrackerListWidget]', 75, true); - this.newColumn('availability', '', 'QBT_TR(Availability)QBT_TR[CONTEXT=TrackerListWidget]', 75, true); + this.newColumn("checked", "", "", 50, true); + this.newColumn("name", "", "QBT_TR(Name)QBT_TR[CONTEXT=TrackerListWidget]", 300, true); + this.newColumn("size", "", "QBT_TR(Total Size)QBT_TR[CONTEXT=TrackerListWidget]", 75, true); + this.newColumn("progress", "", "QBT_TR(Progress)QBT_TR[CONTEXT=TrackerListWidget]", 100, true); + this.newColumn("priority", "", "QBT_TR(Download Priority)QBT_TR[CONTEXT=TrackerListWidget]", 150, true); + this.newColumn("remaining", "", "QBT_TR(Remaining)QBT_TR[CONTEXT=TrackerListWidget]", 75, true); + this.newColumn("availability", "", "QBT_TR(Availability)QBT_TR[CONTEXT=TrackerListWidget]", 75, true); this.initColumnsFunctions(); }, @@ -2319,17 +2513,17 @@ window.qBittorrent.DynamicTable = (function() { const that = this; const displaySize = function(td, row) { const size = window.qBittorrent.Misc.friendlyUnit(this.getRowValue(row), false); - td.set('text', size); - td.set('title', size); + td.textContent = size; + td.title = size; }; const displayPercentage = function(td, row) { const value = window.qBittorrent.Misc.friendlyPercentage(this.getRowValue(row)); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; // checked - this.columns['checked'].updateTd = function(td, row) { + this.columns["checked"].updateTd = function(td, row) { const id = row.rowId; const value = this.getRowValue(row); @@ -2337,128 +2531,107 @@ window.qBittorrent.DynamicTable = (function() { window.qBittorrent.PropFiles.updateDownloadCheckbox(id, value); } else { - const treeImg = new Element('img', { - src: 'images/L.gif', - styles: { - 'margin-bottom': -2 - } - }); - td.adopt(treeImg, window.qBittorrent.PropFiles.createDownloadCheckbox(id, row.full_data.fileId, value)); + const treeImg = document.createElement("img"); + treeImg.src = "images/L.gif"; + treeImg.style.marginBottom = "-2px"; + td.append(treeImg, window.qBittorrent.PropFiles.createDownloadCheckbox(id, row.full_data.fileId, value)); } }; + this.columns["checked"].staticWidth = 50; // name - this.columns['name'].updateTd = function(td, row) { + this.columns["name"].updateTd = function(td, row) { const id = row.rowId; - const fileNameId = 'filesTablefileName' + id; + const fileNameId = `filesTablefileName${id}`; const node = that.getNode(id); if (node.isFolder) { const value = this.getRowValue(row); - const collapseIconId = 'filesTableCollapseIcon' + id; - const dirImgId = 'filesTableDirImg' + id; + const collapseIconId = `filesTableCollapseIcon${id}`; + const dirImgId = `filesTableDirImg${id}`; if ($(dirImgId)) { // just update file name - $(fileNameId).set('text', value); + $(fileNameId).textContent = value; } else { - const collapseIcon = new Element('img', { - src: 'images/go-down.svg', - styles: { - 'margin-left': (node.depth * 20) - }, - class: "filesTableCollapseIcon", - id: collapseIconId, - "data-id": id, - onclick: "qBittorrent.PropFiles.collapseIconClicked(this)" - }); - const span = new Element('span', { - text: value, - id: fileNameId - }); - const dirImg = new Element('img', { - src: 'images/directory.svg', - styles: { - 'width': 15, - 'padding-right': 5, - 'margin-bottom': -3 - }, - id: dirImgId - }); - const html = collapseIcon.outerHTML + dirImg.outerHTML + span.outerHTML; - td.set('html', html); + const collapseIcon = document.createElement("img"); + collapseIcon.src = "images/go-down.svg"; + collapseIcon.style.marginLeft = `${node.depth * 20}px`; + collapseIcon.className = "filesTableCollapseIcon"; + collapseIcon.id = collapseIconId; + collapseIcon.setAttribute("data-id", id); + collapseIcon.addEventListener("click", function(e) { qBittorrent.PropFiles.collapseIconClicked(this); }); + + const span = document.createElement("span"); + span.textContent = value; + span.id = fileNameId; + + const dirImg = document.createElement("img"); + dirImg.src = "images/directory.svg"; + dirImg.style.width = "20px"; + dirImg.style.paddingRight = "5px"; + dirImg.style.marginBottom = "-3px"; + dirImg.id = dirImgId; + + td.replaceChildren(collapseIcon, dirImg, span); } } else { const value = this.getRowValue(row); - const span = new Element('span', { - text: value, - id: fileNameId, - styles: { - 'margin-left': ((node.depth + 1) * 20) - } - }); - td.set('html', span.outerHTML); + const span = document.createElement("span"); + span.textContent = value; + span.id = fileNameId; + span.style.marginLeft = `${(node.depth + 1) * 20}px`; + td.replaceChildren(span); } }; + this.columns["name"].calculateBuffer = (rowId) => { + const node = that.getNode(rowId); + // folders add 20px for folder icon and 15px for collapse icon + const folderBuffer = node.isFolder ? 35 : 0; + return (node.depth * 20) + folderBuffer; + }; // size - this.columns['size'].updateTd = displaySize; + this.columns["size"].updateTd = displaySize; // progress - this.columns['progress'].updateTd = function(td, row) { + this.columns["progress"].updateTd = function(td, row) { const id = row.rowId; - const value = this.getRowValue(row); + const value = Number(this.getRowValue(row)); - const progressBar = $('pbf_' + id); + const progressBar = $(`pbf_${id}`); if (progressBar === null) { - td.adopt(new window.qBittorrent.ProgressBar.ProgressBar(value.toFloat(), { - id: 'pbf_' + id, + td.append(new window.qBittorrent.ProgressBar.ProgressBar(value, { + id: `pbf_${id}`, width: 80 })); } else { - progressBar.setValue(value.toFloat()); + progressBar.setValue(value); } }; + this.columns["progress"].staticWidth = 100; // priority - this.columns['priority'].updateTd = function(td, row) { + this.columns["priority"].updateTd = function(td, row) { const id = row.rowId; const value = this.getRowValue(row); if (window.qBittorrent.PropFiles.isPriorityComboExists(id)) window.qBittorrent.PropFiles.updatePriorityCombo(id, value); else - td.adopt(window.qBittorrent.PropFiles.createPriorityCombo(id, row.full_data.fileId, value)); + td.append(window.qBittorrent.PropFiles.createPriorityCombo(id, row.full_data.fileId, value)); }; + this.columns["priority"].staticWidth = 140; // remaining, availability - this.columns['remaining'].updateTd = displaySize; - this.columns['availability'].updateTd = displayPercentage; - }, - - altRow: function() { - let addClass = false; - const trs = this.tableBody.getElements('tr'); - trs.each(function(tr) { - if (tr.hasClass("invisible")) - return; - - if (addClass) { - tr.addClass("alt"); - tr.removeClass("nonAlt"); - } - else { - tr.removeClass("alt"); - tr.addClass("nonAlt"); - } - addClass = !addClass; - }.bind(this)); + this.columns["remaining"].updateTd = displaySize; + this.columns["availability"].updateTd = displayPercentage; }, _sortNodesByColumn: function(nodes, column) { - nodes.sort(function(row1, row2) { + nodes.sort((row1, row2) => { // list folders before files when sorting by name if (column.name === "name") { const node1 = this.getNode(row1.data.rowId); @@ -2470,21 +2643,21 @@ window.qBittorrent.DynamicTable = (function() { } const res = column.compareRows(row1, row2); - return (this.reverseSort === '0') ? res : -res; - }.bind(this)); + return (this.reverseSort === "0") ? res : -res; + }); - nodes.each(function(node) { + nodes.each((node) => { if (node.children.length > 0) this._sortNodesByColumn(node.children, column); - }.bind(this)); + }); }, _filterNodes: function(node, filterTerms, filteredRows) { if (node.isFolder) { - const childAdded = node.children.reduce(function(acc, child) { + const childAdded = node.children.reduce((acc, child) => { // we must execute the function before ORing w/ acc or we'll stop checking child nodes after the first successful match return (this._filterNodes(child, filterTerms, filteredRows) || acc); - }.bind(this), false); + }, false); if (childAdded) { const row = this.getRow(node); @@ -2503,8 +2676,8 @@ window.qBittorrent.DynamicTable = (function() { }, setFilter: function(text) { - const filterTerms = text.trim().toLowerCase().split(' '); - if ((filterTerms.length === 1) && (filterTerms[0] === '')) + const filterTerms = text.trim().toLowerCase().split(" "); + if ((filterTerms.length === 1) && (filterTerms[0] === "")) this.filterTerms = []; else this.filterTerms = filterTerms; @@ -2514,35 +2687,35 @@ window.qBittorrent.DynamicTable = (function() { if (this.getRoot() === null) return []; - const generateRowsSignature = function(rows) { - const rowsData = rows.map(function(row) { - return row.full_data; - }); + const generateRowsSignature = () => { + const rowsData = []; + for (const { full_data } of this.getRowValues()) + rowsData.push(full_data); return JSON.stringify(rowsData); }; const getFilteredRows = function() { if (this.filterTerms.length === 0) { const nodeArray = this.fileTree.toArray(); - const filteredRows = nodeArray.map(function(node) { + const filteredRows = nodeArray.map((node) => { return this.getRow(node); - }.bind(this)); + }); return filteredRows; } const filteredRows = []; - this.getRoot().children.each(function(child) { + this.getRoot().children.each((child) => { this._filterNodes(child, this.filterTerms, filteredRows); - }.bind(this)); + }); filteredRows.reverse(); return filteredRows; }.bind(this); const hasRowsChanged = function(rowsString, prevRowsStringString) { const rowsChanged = (rowsString !== prevRowsStringString); - const isFilterTermsChanged = this.filterTerms.reduce(function(acc, term, index) { + const isFilterTermsChanged = this.filterTerms.reduce((acc, term, index) => { return (acc || (term !== this.prevFilterTerms[index])); - }.bind(this), false); + }, false); const isFilterChanged = ((this.filterTerms.length !== this.prevFilterTerms.length) || ((this.filterTerms.length > 0) && isFilterTermsChanged)); const isSortedColumnChanged = (this.prevSortedColumn !== this.sortedColumn); @@ -2551,10 +2724,9 @@ window.qBittorrent.DynamicTable = (function() { return (rowsChanged || isFilterChanged || isSortedColumnChanged || isReverseSortChanged); }.bind(this); - const rowsString = generateRowsSignature(this.rows); - if (!hasRowsChanged(rowsString, this.prevRowsString)) { + const rowsString = generateRowsSignature(); + if (!hasRowsChanged(rowsString, this.prevRowsString)) return this.prevFilteredRows; - } // sort, then filter const column = this.columns[this.sortedColumn]; @@ -2570,22 +2742,29 @@ window.qBittorrent.DynamicTable = (function() { }, setIgnored: function(rowId, ignore) { - const row = this.rows.get(rowId); + const row = this.rows.get(rowId.toString()); if (ignore) row.full_data.remaining = 0; else row.full_data.remaining = (row.full_data.size * (1.0 - (row.full_data.progress / 100))); }, - setupTr: function(tr) { - tr.addEvent('keydown', function(event) { - switch (event.key) { - case "left": - qBittorrent.PropFiles.collapseFolder(this._this.getSelectedRowId()); - return false; - case "right": - qBittorrent.PropFiles.expandFolder(this._this.getSelectedRowId()); - return false; + setupCommonEvents: function() { + this.parent(); + this.dynamicTableDiv.addEventListener("keydown", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; + + switch (e.key) { + case "ArrowLeft": + e.preventDefault(); + window.qBittorrent.PropFiles.collapseFolder(this.getSelectedRowId()); + break; + case "ArrowRight": + e.preventDefault(); + window.qBittorrent.PropFiles.expandFolder(this.getSelectedRowId()); + break; } }); } @@ -2594,83 +2773,84 @@ window.qBittorrent.DynamicTable = (function() { const RssFeedTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('state_icon', '', '', 30, true); - this.newColumn('name', '', 'QBT_TR(RSS feeds)QBT_TR[CONTEXT=FeedListWidget]', -1, true); + this.newColumn("state_icon", "", "", 30, true); + this.newColumn("name", "", "QBT_TR(RSS feeds)QBT_TR[CONTEXT=FeedListWidget]", -1, true); - this.columns['state_icon'].dataProperties[0] = ''; + this.columns["state_icon"].dataProperties[0] = ""; // map name row to "[name] ([unread])" - this.columns['name'].dataProperties.push('unread'); - this.columns['name'].updateTd = function(td, row) { + this.columns["name"].dataProperties.push("unread"); + this.columns["name"].updateTd = function(td, row) { const name = this.getRowValue(row, 0); const unreadCount = this.getRowValue(row, 1); - let value = name + ' (' + unreadCount + ')'; - td.set('text', value); - td.set('title', value); + const value = `${name} (${unreadCount})`; + td.textContent = value; + td.title = value; }; }, - setupHeaderMenu: function() {}, - setupHeaderEvents: function() {}, + setupHeaderMenu: () => {}, + setupHeaderEvents: () => {}, getFilteredAndSortedRows: function() { - return this.rows.getValues(); + return [...this.getRowValues()]; }, selectRow: function(rowId) { this.selectedRows.push(rowId); this.setRowClass(); this.onSelectedRowChanged(); - const rows = this.rows.getValues(); - let path = ''; - for (let i = 0; i < rows.length; ++i) { - if (rows[i].rowId === rowId) { - path = rows[i].full_data.dataPath; + let path = ""; + for (const row of this.getRowValues()) { + if (row.rowId === rowId) { + path = row.full_data.dataPath; break; } } window.qBittorrent.Rss.showRssFeed(path); }, - setupTr: function(tr) { - tr.addEvent('dblclick', function(e) { - if (this.rowId !== 0) { - window.qBittorrent.Rss.moveItem(this._this.rows.get(this.rowId).full_data.dataPath); - return true; - } + setupCommonEvents: function() { + this.parent(); + this.dynamicTableDiv.addEventListener("dblclick", (e) => { + const tr = e.target.closest("tr"); + if (!tr || (tr.rowId === "0")) + return; + + window.qBittorrent.Rss.moveItem(this.getRow(tr.rowId).full_data.dataPath); }); }, updateRow: function(tr, fullUpdate) { const row = this.rows.get(tr.rowId); - const data = row[fullUpdate ? 'full_data' : 'data']; + const data = row[fullUpdate ? "full_data" : "data"]; - const tds = tr.getElements('td'); + const tds = this.getRowCells(tr); for (let i = 0; i < this.columns.length; ++i) { - if (Object.prototype.hasOwnProperty.call(data, this.columns[i].dataProperties[0])) + if (Object.hasOwn(data, this.columns[i].dataProperties[0])) this.columns[i].updateTd(tds[i], row); } - row['data'] = {}; - tds[0].style.overflow = 'visible'; - let indentation = row.full_data.indentation; - tds[0].style.paddingLeft = (indentation * 32 + 4) + 'px'; - tds[1].style.paddingLeft = (indentation * 32 + 4) + 'px'; + row["data"] = {}; + tds[0].style.overflow = "visible"; + const indentation = row.full_data.indentation; + tds[0].style.paddingLeft = `${indentation * 32 + 4}px`; + tds[1].style.paddingLeft = `${indentation * 32 + 4}px`; }, updateIcons: function() { // state_icon - this.rows.each(row => { + for (const row of this.getRowValues()) { let img_path; switch (row.full_data.status) { - case 'default': - img_path = 'images/application-rss.svg'; + case "default": + img_path = "images/application-rss.svg"; break; - case 'hasError': - img_path = 'images/task-reject.svg'; + case "hasError": + img_path = "images/task-reject.svg"; break; - case 'isLoading': - img_path = 'images/spinner.gif'; + case "isLoading": + img_path = "images/spinner.gif"; break; - case 'unread': - img_path = 'images/mail-inbox.svg'; + case "unread": + img_path = "images/mail-inbox.svg"; break; - case 'isFolder': - img_path = 'images/folder-documents.svg'; + case "isFolder": + img_path = "images/folder-documents.svg"; break; } let td; @@ -2680,252 +2860,240 @@ window.qBittorrent.DynamicTable = (function() { break; } } - if (td.getChildren('img').length > 0) { - const img = td.getChildren('img')[0]; - if (img.src.indexOf(img_path) < 0) { - img.set('src', img_path); - img.set('title', status); + if (td.getChildren("img").length > 0) { + const img = td.getChildren("img")[0]; + if (!img.src.includes(img_path)) { + img.src = img_path; + img.title = status; } } else { - td.adopt(new Element('img', { - 'src': img_path, - 'class': 'stateIcon', - 'height': '22px', - 'width': '22px' - })); + const img = document.createElement("img"); + img.src = img_path; + img.className = "stateIcon"; + img.width = "22"; + img.height = "22"; + td.append(img); } - }); + }; }, newColumn: function(name, style, caption, defaultWidth, defaultVisible) { const column = {}; - column['name'] = name; - column['title'] = name; - column['visible'] = defaultVisible; - column['force_hide'] = false; - column['caption'] = caption; - column['style'] = style; - if (defaultWidth !== -1) { - column['width'] = defaultWidth; - } - - column['dataProperties'] = [name]; - column['getRowValue'] = function(row, pos) { + column["name"] = name; + column["title"] = name; + column["visible"] = defaultVisible; + column["force_hide"] = false; + column["caption"] = caption; + column["style"] = style; + if (defaultWidth !== -1) + column["width"] = defaultWidth; + + column["dataProperties"] = [name]; + column["getRowValue"] = function(row, pos) { if (pos === undefined) pos = 0; - return row['full_data'][this.dataProperties[pos]]; + return row["full_data"][this.dataProperties[pos]]; }; - column['compareRows'] = function(row1, row2) { + column["compareRows"] = function(row1, row2) { const value1 = this.getRowValue(row1); const value2 = this.getRowValue(row2); - if ((typeof(value1) === 'number') && (typeof(value2) === 'number')) + if ((typeof(value1) === "number") && (typeof(value2) === "number")) return compareNumbers(value1, value2); return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); }; - column['updateTd'] = function(td, row) { + column["updateTd"] = function(td, row) { const value = this.getRowValue(row); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; - column['onResize'] = null; + column["onResize"] = null; this.columns.push(column); this.columns[name] = column; - this.hiddenTableHeader.appendChild(new Element('th')); - this.fixedTableHeader.appendChild(new Element('th')); - }, - setupCommonEvents: function() { - const scrollFn = function() { - $(this.dynamicTableFixedHeaderDivId).getElements('table')[0].style.left = -$(this.dynamicTableDivId).scrollLeft + 'px'; - }.bind(this); - - $(this.dynamicTableDivId).addEvent('scroll', scrollFn); + this.hiddenTableHeader.append(document.createElement("th")); + this.fixedTableHeader.append(document.createElement("th")); } }); const RssArticleTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('name', '', 'QBT_TR(Torrents: (double-click to download))QBT_TR[CONTEXT=RSSWidget]', -1, true); + this.newColumn("name", "", "QBT_TR(Torrents: (double-click to download))QBT_TR[CONTEXT=RSSWidget]", -1, true); }, - setupHeaderMenu: function() {}, - setupHeaderEvents: function() {}, + setupHeaderMenu: () => {}, + setupHeaderEvents: () => {}, getFilteredAndSortedRows: function() { - return this.rows.getValues(); + return [...this.getRowValues()]; }, selectRow: function(rowId) { this.selectedRows.push(rowId); this.setRowClass(); this.onSelectedRowChanged(); - const rows = this.rows.getValues(); - let articleId = ''; - let feedUid = ''; - for (let i = 0; i < rows.length; ++i) { - if (rows[i].rowId === rowId) { - articleId = rows[i].full_data.dataId; - feedUid = rows[i].full_data.feedUid; - this.tableBody.rows[rows[i].rowId].removeClass('unreadArticle'); + let articleId = ""; + let feedUid = ""; + for (const row of this.getRowValues()) { + if (row.rowId === rowId) { + articleId = row.full_data.dataId; + feedUid = row.full_data.feedUid; + this.tableBody.rows[row.rowId].classList.remove("unreadArticle"); break; } } window.qBittorrent.Rss.showDetails(feedUid, articleId); }, - setupTr: function(tr) { - tr.addEvent('dblclick', function(e) { - showDownloadPage([this._this.rows.get(this.rowId).full_data.torrentURL]); - return true; + + setupCommonEvents: function() { + this.parent(); + this.dynamicTableDiv.addEventListener("dblclick", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; + + showDownloadPage([this.getRow(tr.rowId).full_data.torrentURL]); }); - tr.addClass('torrentsTableContextMenuTarget'); }, updateRow: function(tr, fullUpdate) { const row = this.rows.get(tr.rowId); - const data = row[fullUpdate ? 'full_data' : 'data']; - if (!row.full_data.isRead) - tr.addClass('unreadArticle'); - else - tr.removeClass('unreadArticle'); + const data = row[fullUpdate ? "full_data" : "data"]; + tr.classList.toggle("unreadArticle", !row.full_data.isRead); - const tds = tr.getElements('td'); + const tds = this.getRowCells(tr); for (let i = 0; i < this.columns.length; ++i) { - if (Object.prototype.hasOwnProperty.call(data, this.columns[i].dataProperties[0])) + if (Object.hasOwn(data, this.columns[i].dataProperties[0])) this.columns[i].updateTd(tds[i], row); } - row['data'] = {}; + row["data"] = {}; }, newColumn: function(name, style, caption, defaultWidth, defaultVisible) { const column = {}; - column['name'] = name; - column['title'] = name; - column['visible'] = defaultVisible; - column['force_hide'] = false; - column['caption'] = caption; - column['style'] = style; - if (defaultWidth !== -1) { - column['width'] = defaultWidth; - } - - column['dataProperties'] = [name]; - column['getRowValue'] = function(row, pos) { + column["name"] = name; + column["title"] = name; + column["visible"] = defaultVisible; + column["force_hide"] = false; + column["caption"] = caption; + column["style"] = style; + if (defaultWidth !== -1) + column["width"] = defaultWidth; + + column["dataProperties"] = [name]; + column["getRowValue"] = function(row, pos) { if (pos === undefined) pos = 0; - return row['full_data'][this.dataProperties[pos]]; + return row["full_data"][this.dataProperties[pos]]; }; - column['compareRows'] = function(row1, row2) { + column["compareRows"] = function(row1, row2) { const value1 = this.getRowValue(row1); const value2 = this.getRowValue(row2); - if ((typeof(value1) === 'number') && (typeof(value2) === 'number')) + if ((typeof(value1) === "number") && (typeof(value2) === "number")) return compareNumbers(value1, value2); return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); }; - column['updateTd'] = function(td, row) { + column["updateTd"] = function(td, row) { const value = this.getRowValue(row); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; - column['onResize'] = null; + column["onResize"] = null; this.columns.push(column); this.columns[name] = column; - this.hiddenTableHeader.appendChild(new Element('th')); - this.fixedTableHeader.appendChild(new Element('th')); - }, - setupCommonEvents: function() { - const scrollFn = function() { - $(this.dynamicTableFixedHeaderDivId).getElements('table')[0].style.left = -$(this.dynamicTableDivId).scrollLeft + 'px'; - }.bind(this); - - $(this.dynamicTableDivId).addEvent('scroll', scrollFn); + this.hiddenTableHeader.append(document.createElement("th")); + this.fixedTableHeader.append(document.createElement("th")); } }); const RssDownloaderRulesTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('checked', '', '', 30, true); - this.newColumn('name', '', '', -1, true); - - this.columns['checked'].updateTd = function(td, row) { - if ($('cbRssDlRule' + row.rowId) === null) { - const checkbox = new Element('input'); - checkbox.set('type', 'checkbox'); - checkbox.set('id', 'cbRssDlRule' + row.rowId); + this.newColumn("checked", "", "", 30, true); + this.newColumn("name", "", "", -1, true); + + this.columns["checked"].updateTd = function(td, row) { + if ($(`cbRssDlRule${row.rowId}`) === null) { + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.id = `cbRssDlRule${row.rowId}`; checkbox.checked = row.full_data.checked; - checkbox.addEvent('click', function(e) { + checkbox.addEventListener("click", function(e) { window.qBittorrent.RssDownloader.rssDownloaderRulesTable.updateRowData({ rowId: row.rowId, checked: this.checked }); - window.qBittorrent.RssDownloader.modifyRuleState(row.full_data.name, 'enabled', this.checked); + window.qBittorrent.RssDownloader.modifyRuleState(row.full_data.name, "enabled", this.checked); e.stopPropagation(); }); td.append(checkbox); } else { - $('cbRssDlRule' + row.rowId).checked = row.full_data.checked; + $(`cbRssDlRule${row.rowId}`).checked = row.full_data.checked; } }; + this.columns["checked"].staticWidth = 50; }, - setupHeaderMenu: function() {}, - setupHeaderEvents: function() {}, + setupHeaderMenu: () => {}, + setupHeaderEvents: () => {}, getFilteredAndSortedRows: function() { - return this.rows.getValues(); + return [...this.getRowValues()]; }, - setupTr: function(tr) { - tr.addEvent('dblclick', function(e) { - window.qBittorrent.RssDownloader.renameRule(this._this.rows.get(this.rowId).full_data.name); - return true; + + setupCommonEvents: function() { + this.parent(); + this.dynamicTableDiv.addEventListener("dblclick", (e) => { + const tr = e.target.closest("tr"); + if (!tr) + return; + + window.qBittorrent.RssDownloader.renameRule(this.getRow(tr.rowId).full_data.name); }); }, newColumn: function(name, style, caption, defaultWidth, defaultVisible) { const column = {}; - column['name'] = name; - column['title'] = name; - column['visible'] = defaultVisible; - column['force_hide'] = false; - column['caption'] = caption; - column['style'] = style; - if (defaultWidth !== -1) { - column['width'] = defaultWidth; - } - - column['dataProperties'] = [name]; - column['getRowValue'] = function(row, pos) { + column["name"] = name; + column["title"] = name; + column["visible"] = defaultVisible; + column["force_hide"] = false; + column["caption"] = caption; + column["style"] = style; + if (defaultWidth !== -1) + column["width"] = defaultWidth; + + column["dataProperties"] = [name]; + column["getRowValue"] = function(row, pos) { if (pos === undefined) pos = 0; - return row['full_data'][this.dataProperties[pos]]; + return row["full_data"][this.dataProperties[pos]]; }; - column['compareRows'] = function(row1, row2) { + column["compareRows"] = function(row1, row2) { const value1 = this.getRowValue(row1); const value2 = this.getRowValue(row2); - if ((typeof(value1) === 'number') && (typeof(value2) === 'number')) + if ((typeof(value1) === "number") && (typeof(value2) === "number")) return compareNumbers(value1, value2); return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); }; - column['updateTd'] = function(td, row) { + column["updateTd"] = function(td, row) { const value = this.getRowValue(row); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; - column['onResize'] = null; + column["onResize"] = null; this.columns.push(column); this.columns[name] = column; - this.hiddenTableHeader.appendChild(new Element('th')); - this.fixedTableHeader.appendChild(new Element('th')); + this.hiddenTableHeader.append(document.createElement("th")); + this.fixedTableHeader.append(document.createElement("th")); }, selectRow: function(rowId) { this.selectedRows.push(rowId); this.setRowClass(); this.onSelectedRowChanged(); - const rows = this.rows.getValues(); - let name = ''; - for (let i = 0; i < rows.length; ++i) { - if (rows[i].rowId === rowId) { - name = rows[i].full_data.name; + let name = ""; + for (const row of this.getRowValues()) { + if (row.rowId === rowId) { + name = row.full_data.name; break; } } @@ -2936,17 +3104,17 @@ window.qBittorrent.DynamicTable = (function() { const RssDownloaderFeedSelectionTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('checked', '', '', 30, true); - this.newColumn('name', '', '', -1, true); - - this.columns['checked'].updateTd = function(td, row) { - if ($('cbRssDlFeed' + row.rowId) === null) { - const checkbox = new Element('input'); - checkbox.set('type', 'checkbox'); - checkbox.set('id', 'cbRssDlFeed' + row.rowId); + this.newColumn("checked", "", "", 30, true); + this.newColumn("name", "", "", -1, true); + + this.columns["checked"].updateTd = function(td, row) { + if ($(`cbRssDlFeed${row.rowId}`) === null) { + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.id = `cbRssDlFeed${row.rowId}`; checkbox.checked = row.full_data.checked; - checkbox.addEvent('click', function(e) { + checkbox.addEventListener("click", function(e) { window.qBittorrent.RssDownloader.rssDownloaderFeedSelectionTable.updateRowData({ rowId: row.rowId, checked: this.checked @@ -2957,275 +3125,277 @@ window.qBittorrent.DynamicTable = (function() { td.append(checkbox); } else { - $('cbRssDlFeed' + row.rowId).checked = row.full_data.checked; + $(`cbRssDlFeed${row.rowId}`).checked = row.full_data.checked; } }; + this.columns["checked"].staticWidth = 50; }, - setupHeaderMenu: function() {}, - setupHeaderEvents: function() {}, + setupHeaderMenu: () => {}, + setupHeaderEvents: () => {}, getFilteredAndSortedRows: function() { - return this.rows.getValues(); + return [...this.getRowValues()]; }, newColumn: function(name, style, caption, defaultWidth, defaultVisible) { const column = {}; - column['name'] = name; - column['title'] = name; - column['visible'] = defaultVisible; - column['force_hide'] = false; - column['caption'] = caption; - column['style'] = style; - if (defaultWidth !== -1) { - column['width'] = defaultWidth; - } - - column['dataProperties'] = [name]; - column['getRowValue'] = function(row, pos) { + column["name"] = name; + column["title"] = name; + column["visible"] = defaultVisible; + column["force_hide"] = false; + column["caption"] = caption; + column["style"] = style; + if (defaultWidth !== -1) + column["width"] = defaultWidth; + + column["dataProperties"] = [name]; + column["getRowValue"] = function(row, pos) { if (pos === undefined) pos = 0; - return row['full_data'][this.dataProperties[pos]]; + return row["full_data"][this.dataProperties[pos]]; }; - column['compareRows'] = function(row1, row2) { + column["compareRows"] = function(row1, row2) { const value1 = this.getRowValue(row1); const value2 = this.getRowValue(row2); - if ((typeof(value1) === 'number') && (typeof(value2) === 'number')) + if ((typeof(value1) === "number") && (typeof(value2) === "number")) return compareNumbers(value1, value2); return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); }; - column['updateTd'] = function(td, row) { + column["updateTd"] = function(td, row) { const value = this.getRowValue(row); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; - column['onResize'] = null; + column["onResize"] = null; this.columns.push(column); this.columns[name] = column; - this.hiddenTableHeader.appendChild(new Element('th')); - this.fixedTableHeader.appendChild(new Element('th')); + this.hiddenTableHeader.append(document.createElement("th")); + this.fixedTableHeader.append(document.createElement("th")); }, - selectRow: function() {} + selectRow: () => {} }); const RssDownloaderArticlesTable = new Class({ Extends: DynamicTable, initColumns: function() { - this.newColumn('name', '', '', -1, true); + this.newColumn("name", "", "", -1, true); }, - setupHeaderMenu: function() {}, - setupHeaderEvents: function() {}, + setupHeaderMenu: () => {}, + setupHeaderEvents: () => {}, getFilteredAndSortedRows: function() { - return this.rows.getValues(); + return [...this.getRowValues()]; }, newColumn: function(name, style, caption, defaultWidth, defaultVisible) { const column = {}; - column['name'] = name; - column['title'] = name; - column['visible'] = defaultVisible; - column['force_hide'] = false; - column['caption'] = caption; - column['style'] = style; - if (defaultWidth !== -1) { - column['width'] = defaultWidth; - } - - column['dataProperties'] = [name]; - column['getRowValue'] = function(row, pos) { + column["name"] = name; + column["title"] = name; + column["visible"] = defaultVisible; + column["force_hide"] = false; + column["caption"] = caption; + column["style"] = style; + if (defaultWidth !== -1) + column["width"] = defaultWidth; + + column["dataProperties"] = [name]; + column["getRowValue"] = function(row, pos) { if (pos === undefined) pos = 0; - return row['full_data'][this.dataProperties[pos]]; + return row["full_data"][this.dataProperties[pos]]; }; - column['compareRows'] = function(row1, row2) { + column["compareRows"] = function(row1, row2) { const value1 = this.getRowValue(row1); const value2 = this.getRowValue(row2); - if ((typeof(value1) === 'number') && (typeof(value2) === 'number')) + if ((typeof(value1) === "number") && (typeof(value2) === "number")) return compareNumbers(value1, value2); return window.qBittorrent.Misc.naturalSortCollator.compare(value1, value2); }; - column['updateTd'] = function(td, row) { + column["updateTd"] = function(td, row) { const value = this.getRowValue(row); - td.set('text', value); - td.set('title', value); + td.textContent = value; + td.title = value; }; - column['onResize'] = null; + column["onResize"] = null; this.columns.push(column); this.columns[name] = column; - this.hiddenTableHeader.appendChild(new Element('th')); - this.fixedTableHeader.appendChild(new Element('th')); + this.hiddenTableHeader.append(document.createElement("th")); + this.fixedTableHeader.append(document.createElement("th")); }, - selectRow: function() {}, + selectRow: () => {}, updateRow: function(tr, fullUpdate) { const row = this.rows.get(tr.rowId); - const data = row[fullUpdate ? 'full_data' : 'data']; + const data = row[fullUpdate ? "full_data" : "data"]; if (row.full_data.isFeed) { - tr.addClass('articleTableFeed'); - tr.removeClass('articleTableArticle'); + tr.classList.add("articleTableFeed"); + tr.classList.remove("articleTableArticle"); } else { - tr.removeClass('articleTableFeed'); - tr.addClass('articleTableArticle'); + tr.classList.remove("articleTableFeed"); + tr.classList.add("articleTableArticle"); } - const tds = tr.getElements('td'); + const tds = this.getRowCells(tr); for (let i = 0; i < this.columns.length; ++i) { - if (Object.prototype.hasOwnProperty.call(data, this.columns[i].dataProperties[0])) + if (Object.hasOwn(data, this.columns[i].dataProperties[0])) this.columns[i].updateTd(tds[i], row); } - row['data'] = {}; + row["data"] = {}; } }); const LogMessageTable = new Class({ Extends: DynamicTable, - filterText: '', + filterText: "", filteredLength: function() { - return this.tableBody.getElements('tr').length; + return this.tableBody.rows.length; }, initColumns: function() { - this.newColumn('rowId', '', 'QBT_TR(ID)QBT_TR[CONTEXT=ExecutionLogWidget]', 50, true); - this.newColumn('message', '', 'QBT_TR(Message)QBT_TR[CONTEXT=ExecutionLogWidget]', 350, true); - this.newColumn('timestamp', '', 'QBT_TR(Timestamp)QBT_TR[CONTEXT=ExecutionLogWidget]', 150, true); - this.newColumn('type', '', 'QBT_TR(Log Type)QBT_TR[CONTEXT=ExecutionLogWidget]', 100, true); + this.newColumn("rowId", "", "QBT_TR(ID)QBT_TR[CONTEXT=ExecutionLogWidget]", 50, true); + this.newColumn("message", "", "QBT_TR(Message)QBT_TR[CONTEXT=ExecutionLogWidget]", 350, true); + this.newColumn("timestamp", "", "QBT_TR(Timestamp)QBT_TR[CONTEXT=ExecutionLogWidget]", 150, true); + this.newColumn("type", "", "QBT_TR(Log Type)QBT_TR[CONTEXT=ExecutionLogWidget]", 100, true); this.initColumnsFunctions(); }, initColumnsFunctions: function() { - this.columns['timestamp'].updateTd = function(td, row) { + this.columns["timestamp"].updateTd = function(td, row) { const date = new Date(this.getRowValue(row) * 1000).toLocaleString(); - td.set({ 'text': date, 'title': date }); + td.textContent = date; + td.title = date; }; - this.columns['type'].updateTd = function(td, row) { - //Type of the message: Log::NORMAL: 1, Log::INFO: 2, Log::WARNING: 4, Log::CRITICAL: 8 + this.columns["type"].updateTd = function(td, row) { + // Type of the message: Log::NORMAL: 1, Log::INFO: 2, Log::WARNING: 4, Log::CRITICAL: 8 let logLevel, addClass; - switch (this.getRowValue(row).toInt()) { + switch (Number(this.getRowValue(row))) { case 1: - logLevel = 'QBT_TR(Normal)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'logNormal'; + logLevel = "QBT_TR(Normal)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "logNormal"; break; case 2: - logLevel = 'QBT_TR(Info)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'logInfo'; + logLevel = "QBT_TR(Info)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "logInfo"; break; case 4: - logLevel = 'QBT_TR(Warning)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'logWarning'; + logLevel = "QBT_TR(Warning)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "logWarning"; break; case 8: - logLevel = 'QBT_TR(Critical)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'logCritical'; + logLevel = "QBT_TR(Critical)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "logCritical"; break; default: - logLevel = 'QBT_TR(Unknown)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'logUnknown'; + logLevel = "QBT_TR(Unknown)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "logUnknown"; break; } - td.set({ 'text': logLevel, 'title': logLevel }); - td.getParent('tr').set('class', 'logTableRow ' + addClass); + td.textContent = logLevel; + td.title = logLevel; + td.closest("tr").className = `logTableRow${addClass}`; }; }, getFilteredAndSortedRows: function() { let filteredRows = []; - const rows = this.rows.getValues(); this.filterText = window.qBittorrent.Log.getFilterText(); - const filterTerms = (this.filterText.length > 0) ? this.filterText.toLowerCase().split(' ') : []; + const filterTerms = (this.filterText.length > 0) ? this.filterText.toLowerCase().split(" ") : []; const logLevels = window.qBittorrent.Log.getSelectedLevels(); - if (filterTerms.length > 0 || logLevels.length < 4) { - for (let i = 0; i < rows.length; ++i) { - if (logLevels.indexOf(rows[i].full_data.type.toString()) == -1) + if ((filterTerms.length > 0) || (logLevels.length < 4)) { + for (const row of this.getRowValues()) { + if (!logLevels.includes(row.full_data.type.toString())) continue; - if (filterTerms.length > 0 && !window.qBittorrent.Misc.containsAllTerms(rows[i].full_data.message, filterTerms)) + if ((filterTerms.length > 0) && !window.qBittorrent.Misc.containsAllTerms(row.full_data.message, filterTerms)) continue; - filteredRows.push(rows[i]); + filteredRows.push(row); } } else { - filteredRows = rows; + filteredRows = [...this.getRowValues()]; } - filteredRows.sort(function(row1, row2) { + filteredRows.sort((row1, row2) => { const column = this.columns[this.sortedColumn]; const res = column.compareRows(row1, row2); - return (this.reverseSort == '0') ? res : -res; - }.bind(this)); + return (this.reverseSort === "0") ? res : -res; + }); return filteredRows; }, - - setupCommonEvents: function() {}, - - setupTr: function(tr) { - tr.addClass('logTableRow'); - } }); const LogPeerTable = new Class({ Extends: LogMessageTable, initColumns: function() { - this.newColumn('rowId', '', 'QBT_TR(ID)QBT_TR[CONTEXT=ExecutionLogWidget]', 50, true); - this.newColumn('ip', '', 'QBT_TR(IP)QBT_TR[CONTEXT=ExecutionLogWidget]', 150, true); - this.newColumn('timestamp', '', 'QBT_TR(Timestamp)QBT_TR[CONTEXT=ExecutionLogWidget]', 150, true); - this.newColumn('blocked', '', 'QBT_TR(Status)QBT_TR[CONTEXT=ExecutionLogWidget]', 150, true); - this.newColumn('reason', '', 'QBT_TR(Reason)QBT_TR[CONTEXT=ExecutionLogWidget]', 150, true); + this.newColumn("rowId", "", "QBT_TR(ID)QBT_TR[CONTEXT=ExecutionLogWidget]", 50, true); + this.newColumn("ip", "", "QBT_TR(IP)QBT_TR[CONTEXT=ExecutionLogWidget]", 150, true); + this.newColumn("timestamp", "", "QBT_TR(Timestamp)QBT_TR[CONTEXT=ExecutionLogWidget]", 150, true); + this.newColumn("blocked", "", "QBT_TR(Status)QBT_TR[CONTEXT=ExecutionLogWidget]", 150, true); + this.newColumn("reason", "", "QBT_TR(Reason)QBT_TR[CONTEXT=ExecutionLogWidget]", 150, true); - this.columns['timestamp'].updateTd = function(td, row) { + this.columns["timestamp"].updateTd = function(td, row) { const date = new Date(this.getRowValue(row) * 1000).toLocaleString(); - td.set({ 'text': date, 'title': date }); + td.textContent = date; + td.title = date; }; - this.columns['blocked'].updateTd = function(td, row) { + this.columns["blocked"].updateTd = function(td, row) { let status, addClass; if (this.getRowValue(row)) { - status = 'QBT_TR(Blocked)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'peerBlocked'; + status = "QBT_TR(Blocked)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "peerBlocked"; } else { - status = 'QBT_TR(Banned)QBT_TR[CONTEXT=ExecutionLogWidget]'; - addClass = 'peerBanned'; + status = "QBT_TR(Banned)QBT_TR[CONTEXT=ExecutionLogWidget]"; + addClass = "peerBanned"; } - td.set({ 'text': status, 'title': status }); - td.getParent('tr').set('class', 'logTableRow ' + addClass); + td.textContent = status; + td.title = status; + td.closest("tr").className = `logTableRow${addClass}`; }; }, getFilteredAndSortedRows: function() { let filteredRows = []; - const rows = this.rows.getValues(); this.filterText = window.qBittorrent.Log.getFilterText(); - const filterTerms = (this.filterText.length > 0) ? this.filterText.toLowerCase().split(' ') : []; + const filterTerms = (this.filterText.length > 0) ? this.filterText.toLowerCase().split(" ") : []; if (filterTerms.length > 0) { - for (let i = 0; i < rows.length; ++i) { - if (filterTerms.length > 0 && !window.qBittorrent.Misc.containsAllTerms(rows[i].full_data.ip, filterTerms)) + for (const row of this.getRowValues()) { + if ((filterTerms.length > 0) && !window.qBittorrent.Misc.containsAllTerms(row.full_data.ip, filterTerms)) continue; - filteredRows.push(rows[i]); + filteredRows.push(row); } } else { - filteredRows = rows; + filteredRows = [...this.getRowValues()]; } - filteredRows.sort(function(row1, row2) { + filteredRows.sort((row1, row2) => { const column = this.columns[this.sortedColumn]; const res = column.compareRows(row1, row2); - return (this.reverseSort == '0') ? res : -res; - }.bind(this)); + return (this.reverseSort === "0") ? res : -res; + }); return filteredRows; } }); + const TorrentWebseedsTable = new Class({ + Extends: DynamicTable, + + initColumns: function() { + this.newColumn("url", "", "QBT_TR(URL)QBT_TR[CONTEXT=HttpServer]", 500, true); + }, + }); + return exports(); })(); - Object.freeze(window.qBittorrent.DynamicTable); /*************************************************************/ diff --git a/src/webui/www/private/scripts/file-tree.js b/src/webui/www/private/scripts/file-tree.js index 3457dd0f966e..3622b58422bb 100644 --- a/src/webui/www/private/scripts/file-tree.js +++ b/src/webui/www/private/scripts/file-tree.js @@ -26,14 +26,11 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.FileTree = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.FileTree ??= (() => { + const exports = () => { return { FilePriority: FilePriority, TriState: TriState, @@ -44,18 +41,18 @@ window.qBittorrent.FileTree = (function() { }; const FilePriority = { - "Ignored": 0, - "Normal": 1, - "High": 6, - "Maximum": 7, - "Mixed": -1 + Ignored: 0, + Normal: 1, + High: 6, + Maximum: 7, + Mixed: -1 }; Object.freeze(FilePriority); const TriState = { - "Unchecked": 0, - "Checked": 1, - "Partial": 2 + Unchecked: 0, + Checked: 1, + Partial: 2 }; Object.freeze(TriState); @@ -77,13 +74,12 @@ window.qBittorrent.FileTree = (function() { generateNodeMap: function(node) { // don't store root node in map - if (node.root !== null) { + if (node.root !== null) this.nodeMap[node.rowId] = node; - } - node.children.each(function(child) { + node.children.each((child) => { this.generateNodeMap(child); - }.bind(this)); + }); }, getNode: function(rowId) { @@ -92,7 +88,7 @@ window.qBittorrent.FileTree = (function() { : this.nodeMap[rowId]; }, - getRowId: function(node) { + getRowId: (node) => { return node.rowId; }, @@ -101,17 +97,17 @@ window.qBittorrent.FileTree = (function() { */ toArray: function() { const nodes = []; - this.root.children.each(function(node) { + this.root.children.each((node) => { this._getArrayOfNodes(node, nodes); - }.bind(this)); + }); return nodes; }, _getArrayOfNodes: function(node, array) { array.push(node); - node.children.each(function(child) { + node.children.each((child) => { this._getArrayOfNodes(child, array); - }.bind(this)); + }); } }); @@ -161,7 +157,7 @@ window.qBittorrent.FileTree = (function() { let isFirstFile = true; - this.children.each(function(node) { + this.children.each((node) => { if (node.isFolder) node.calculateSize(); @@ -185,7 +181,7 @@ window.qBittorrent.FileTree = (function() { progress += (node.progress * node.size); availability += (node.availability * node.size); } - }.bind(this)); + }); this.size = size; this.remaining = remaining; @@ -198,5 +194,4 @@ window.qBittorrent.FileTree = (function() { return exports(); })(); - Object.freeze(window.qBittorrent.FileTree); diff --git a/src/webui/www/private/scripts/filesystem.js b/src/webui/www/private/scripts/filesystem.js index 8c151416cd78..311ad906db61 100644 --- a/src/webui/www/private/scripts/filesystem.js +++ b/src/webui/www/private/scripts/filesystem.js @@ -26,16 +26,13 @@ * exception statement from your version. */ -'use strict'; +"use strict"; // This file is the JavaScript implementation of base/utils/fs.cpp -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.Filesystem = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.Filesystem ??= (() => { + const exports = () => { return { PathSeparator: PathSeparator, fileExtension: fileExtension, @@ -44,33 +41,32 @@ window.qBittorrent.Filesystem = (function() { }; }; - const PathSeparator = '/'; + const PathSeparator = "/"; /** * Returns the file extension part of a file name. */ - const fileExtension = function(filename) { - const pointIndex = filename.lastIndexOf('.'); + const fileExtension = (filename) => { + const pointIndex = filename.lastIndexOf("."); if (pointIndex === -1) - return ''; + return ""; return filename.substring(pointIndex + 1); }; - const fileName = function(filepath) { + const fileName = (filepath) => { const slashIndex = filepath.lastIndexOf(PathSeparator); if (slashIndex === -1) return filepath; return filepath.substring(slashIndex + 1); }; - const folderName = function(filepath) { + const folderName = (filepath) => { const slashIndex = filepath.lastIndexOf(PathSeparator); if (slashIndex === -1) - return ''; + return ""; return filepath.substring(0, slashIndex); }; return exports(); })(); - Object.freeze(window.qBittorrent.Filesystem); diff --git a/src/webui/www/private/scripts/lib/mocha-0.9.6.js b/src/webui/www/private/scripts/lib/mocha-0.9.6.js index 8d4c433fab85..6c8ec465c4c1 100644 --- a/src/webui/www/private/scripts/lib/mocha-0.9.6.js +++ b/src/webui/www/private/scripts/lib/mocha-0.9.6.js @@ -550,7 +550,7 @@ Element.implement({ morph.cancel(); var oldOptions = morph.options; } - var morph = this.get('morph',{ + var morph = this.retrieve('morph',{ duration:50, link:'chain' }); diff --git a/src/webui/www/private/scripts/lib/mocha.min.js b/src/webui/www/private/scripts/lib/mocha.min.js index f9cc30192e90..5654f5260636 100644 --- a/src/webui/www/private/scripts/lib/mocha.min.js +++ b/src/webui/www/private/scripts/lib/mocha.min.js @@ -23,4 +23,4 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -var MUI=MochaUI=new Hash({version:"0.9.7",options:new Hash({theme:"default",advancedEffects:false,standardEffects:true}),path:{source:"scripts/source/",themes:"themes/",plugins:"plugins/"},themePath:function(){return MUI.path.themes+MUI.options.theme+"/"},files:new Hash()});MUI.files[MUI.path.source+"Core/Core.js"]="loaded";MUI.extend({Windows:{instances:new Hash()},ieSupport:"excanvas",updateContent:function(options){var options=$extend({element:null,childElement:null,method:null,data:null,title:null,content:null,loadMethod:null,url:null,scrollbars:null,padding:null,require:{},onContentLoaded:$empty},options);options.require=$extend({css:[],images:[],js:[],onload:null},options.require);var args={};if(!options.element){return}var element=options.element;if(MUI.Windows.instances.get(element.id)){args.recipient="window"}else{args.recipient="panel"}var instance=element.retrieve("instance");if(options.title){instance.titleEl.set("html",options.title)}var contentEl=instance.contentEl;args.contentContainer=options.childElement!=null?options.childElement:instance.contentEl;var contentWrapperEl=instance.contentWrapperEl;if(!options.loadMethod){if(!instance.options.loadMethod){if(!options.url){options.loadMethod="html"}else{options.loadMethod="xhr"}}else{options.loadMethod=instance.options.loadMethod}}var scrollbars=options.scrollbars||instance.options.scrollbars;if(args.contentContainer==instance.contentEl){contentWrapperEl.setStyles({overflow:scrollbars!=false&&options.loadMethod!="iframe"?"auto":"hidden"})}if(options.padding!=null){contentEl.setStyles({"padding-top":options.padding.top,"padding-bottom":options.padding.bottom,"padding-left":options.padding.left,"padding-right":options.padding.right})}if(args.contentContainer==contentEl){contentEl.empty().show();contentEl.getAllNext(".column").destroy();contentEl.getAllNext(".columnHandle").destroy()}args.onContentLoaded=function(){if(options.require.js.length||typeof options.require.onload=="function"){new MUI.Require({js:options.require.js,onload:function(){if(Browser.Engine.presto){options.require.onload.delay(100)}else{if (!$defined(options.require.onload)) return; options.require.onload()}(options.onContentLoaded&&options.onContentLoaded!=$empty)?options.onContentLoaded():instance.fireEvent("contentLoaded",element)}.bind(this)})}else{(options.onContentLoaded&&options.onContentLoaded!=$empty)?options.onContentLoaded():instance.fireEvent("contentLoaded",element)}};if(options.require.css.length||options.require.images.length){new MUI.Require({css:options.require.css,images:options.require.images,onload:function(){this.loadSelect(instance,options,args)}.bind(this)})}else{this.loadSelect(instance,options,args)}},loadSelect:function(instance,options,args){switch(options.loadMethod){case"xhr":this.updateContentXHR(instance,options,args);break;case"iframe":this.updateContentIframe(instance,options,args);break;case"json":this.updateContentJSON(instance,options,args);break;case"html":default:this.updateContentHTML(instance,options,args);break}},updateContentJSON:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;new Request({url:options.url,update:contentContainer,method:options.method!=null?options.method:"get",data:options.data!=null?new Hash(options.data).toQueryString():"",evalScripts:false,evalResponse:false,headers:{"Content-Type":"application/json"},onRequest:function(){if(args.recipient=="window"&&contentContainer==contentEl){instance.showSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").show()}}}.bind(this),onFailure:function(){if(contentContainer==contentEl){contentContainer.set("html","

          Error Loading XMLHttpRequest

          ");if(recipient=="window"){instance.hideSpinner()}else{if(recipient=="panel"&&$("spinner")){$("spinner").hide()}}}if(contentContainer==contentEl){contentContainer.set("html","

          Error Loading XMLHttpRequest

          ");if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}}.bind(this),onException:function(){}.bind(this),onSuccess:function(json){if(contentContainer==contentEl){if(contentContainer==contentEl){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}var json=JSON.decode(json);instance.fireEvent("loaded",$A([options.element,json,instance]))}}.bind(this),onComplete:function(){}.bind(this)}).get()},updateContentXHR:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;var onContentLoaded=args.onContentLoaded;new Request.HTML({url:options.url,update:contentContainer,method:options.method!=null?options.method:"get",data:options.data!=null?new Hash(options.data).toQueryString():"",evalScripts:instance.options.evalScripts,evalResponse:instance.options.evalResponse,onRequest:function(){if(args.recipient=="window"&&contentContainer==contentEl){instance.showSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").show()}}}.bind(this),onFailure:function(response){if(contentContainer==contentEl){var getTitle=new RegExp("[\n\rs]*(.*)[\n\rs]*","gmi");var error=getTitle.exec(response.responseText);if(!error){error="Unknown"}contentContainer.set("html","

          Error: "+error[1]+"

          ");if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}}.bind(this),onSuccess:function(){contentEl.addClass("pad");if(contentContainer==contentEl){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}Browser.Engine.trident4?onContentLoaded.delay(750):onContentLoaded()}.bind(this),onComplete:function(){}.bind(this)}).send()},updateContentIframe:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;var contentWrapperEl=instance.contentWrapperEl;var onContentLoaded=args.onContentLoaded;if(instance.options.contentURL==""||contentContainer!=contentEl){return}contentEl.removeClass("pad");contentEl.setStyle("padding","0px");instance.iframeEl=new Element("iframe",{id:instance.options.id+"_iframe",name:instance.options.id+"_iframe","class":"mochaIframe",src:options.url,marginwidth:0,marginheight:0,frameBorder:0,scrolling:"auto",styles:{height:contentWrapperEl.offsetHeight-contentWrapperEl.getStyle("border-top").toInt()-contentWrapperEl.getStyle("border-bottom").toInt(),width:instance.panelEl?contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt():"100%"}}).injectInside(contentEl);instance.iframeEl.addEvent("load",function(e){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").hide()}}Browser.Engine.trident4?onContentLoaded.delay(50):onContentLoaded()}.bind(this));if(args.recipient=="window"){instance.showSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").show()}}},updateContentHTML:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;var onContentLoaded=args.onContentLoaded;var elementTypes=new Array("element","textnode","whitespace","collection");contentEl.addClass("pad");if(elementTypes.contains($type(options.content))){options.content.inject(contentContainer)}else{contentContainer.set("html",options.content)}if(contentContainer==contentEl){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}Browser.Engine.trident4?onContentLoaded.delay(50):onContentLoaded()},reloadIframe:function(iframe){Browser.Engine.gecko?$(iframe).src=$(iframe).src:top.frames[iframe].location.reload(true)},roundedRect:function(ctx,x,y,width,height,radius,rgb,a){ctx.fillStyle="rgba("+rgb.join(",")+","+a+")";ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},triangle:function(ctx,x,y,width,height,rgb,a){ctx.beginPath();ctx.moveTo(x+width,y);ctx.lineTo(x,y+height);ctx.lineTo(x+width,y+height);ctx.closePath();ctx.fillStyle="rgba("+rgb.join(",")+","+a+")";ctx.fill()},circle:function(ctx,x,y,diameter,rgb,a){ctx.beginPath();ctx.arc(x,y,diameter,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgb.join(",")+","+a+")";ctx.fill()},notification:function(message){new MUI.Window({loadMethod:"html",closeAfter:1500,type:"notification",addClass:"notification",content:message,width:220,height:40,y:53,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5})},toggleAdvancedEffects:function(link){if(MUI.options.advancedEffects==false){MUI.options.advancedEffects=true;if(link){this.toggleAdvancedEffectsLink=new Element("div",{"class":"check",id:"toggleAdvancedEffects_check"}).inject(link)}}else{MUI.options.advancedEffects=false;if(this.toggleAdvancedEffectsLink){this.toggleAdvancedEffectsLink.destroy()}}},toggleStandardEffects:function(link){if(MUI.options.standardEffects==false){MUI.options.standardEffects=true;if(link){this.toggleStandardEffectsLink=new Element("div",{"class":"check",id:"toggleStandardEffects_check"}).inject(link)}}else{MUI.options.standardEffects=false;if(this.toggleStandardEffectsLink){this.toggleStandardEffectsLink.destroy()}}},underlayInitialize:function(){var windowUnderlay=new Element("div",{id:"windowUnderlay",styles:{height:parent.getCoordinates().height,opacity:0.01,display:"none"}}).inject(document.body)},setUnderlaySize:function(){$("windowUnderlay").setStyle("height",parent.getCoordinates().height)}});function fixPNG(myImage){if(Browser.Engine.trident4&&document.body.filters){var imgID=(myImage.id)?"id='"+myImage.id+"' ":"";var imgClass=(myImage.className)?"class='"+myImage.className+"' ":"";var imgTitle=(myImage.title)?"title='"+myImage.title+"' ":"title='"+myImage.alt+"' ";var imgStyle="display:inline-block;"+myImage.style.cssText;var strNewHTML="";myImage.outerHTML=strNewHTML}}document.addEvent("mousedown",function(event){MUI.blurAll.delay(50)});window.addEvent("domready",function(){MUI.underlayInitialize()});window.addEvent("resize",function(){if($("windowUnderlay")){MUI.setUnderlaySize()}else{MUI.underlayInitialize()}});Element.implement({hide:function(){this.setStyle("display","none");return this},show:function(){this.setStyle("display","block");return this}});Element.implement({shake:function(radius,duration){radius=radius||3;duration=duration||500;duration=(duration/50).toInt()-1;var parent=this.getParent();if(parent!=$(document.body)&&parent.getStyle("position")=="static"){parent.setStyle("position","relative")}var position=this.getStyle("position");if(position=="static"){this.setStyle("position","relative");position="relative"}if(Browser.Engine.trident){parent.setStyle("height",parent.getStyle("height"))}var coords=this.getPosition(parent);if(position=="relative"&&!Browser.Engine.presto){coords.x-=parent.getStyle("paddingLeft").toInt();coords.y-=parent.getStyle("paddingTop").toInt()}var morph=this.retrieve("morph");if(morph){morph.cancel();var oldOptions=morph.options}var morph=this.get("morph",{duration:50,link:"chain"});for(var i=0;i]*>([\s\S]*?)<\/body>/i);text=(match)?match[1]:text;var container=new Element("div");return container.set("html",text)}});MUI.getCSSRule=function(selector){for(var ii=0;ii=200)&&(status<300))}});Browser.Request=function(){return $try(function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new XMLHttpRequest()})}}MUI.Require=new Class({Implements:[Options],options:{css:[],images:[],js:[],onload:$empty},initialize:function(options){this.setOptions(options);var options=this.options;this.assetsToLoad=options.css.length+options.images.length+options.js.length;this.assetsLoaded=0;var cssLoaded=0;if(options.css.length){options.css.each(function(sheet){this.getAsset(sheet,function(){if(cssLoaded==options.css.length-1){if(this.assetsLoaded==this.assetsToLoad-1){this.requireOnload()}else{this.assetsLoaded++;this.requireContinue.delay(50,this)}}else{cssLoaded++;this.assetsLoaded++}}.bind(this))}.bind(this))}else{if(!options.js.length&&!options.images.length){this.options.onload();return true}else{this.requireContinue.delay(50,this)}}},requireOnload:function(){this.assetsLoaded++;if(this.assetsLoaded==this.assetsToLoad){this.options.onload();return true}},requireContinue:function(){var options=this.options;if(options.images.length){options.images.each(function(image){this.getAsset(image,this.requireOnload.bind(this))}.bind(this))}if(options.js.length){options.js.each(function(script){this.getAsset(script,this.requireOnload.bind(this))}.bind(this))}},getAsset:function(source,onload){if(MUI.files[source]=="loaded"){if(typeof onload=="function"){onload()}return true}else{if(MUI.files[source]=="loading"){var tries=0;var checker=(function(){tries++;if(MUI.files[source]=="loading"&&tries<"100"){return}$clear(checker);if(typeof onload=="function"){onload()}}).periodical(50)}else{MUI.files[source]="loading";properties={onload:onload!="undefined"?onload:$empty};var oldonload=properties.onload;properties.onload=function(){MUI.files[source]="loaded";if(oldonload){oldonload()}}.bind(this);switch(source.match(/\.\w+$/)[0]){case".js":return Asset.javascript(source,properties);case".css":return Asset.css(source,properties);case".jpg":case".png":case".gif":return Asset.image(source,properties)}alert('The required file "'+source+'" could not be loaded')}}}});$extend(Asset,{javascript:function(source,properties){properties=$extend({onload:$empty,document:document,check:$lambda(true)},properties);if($(properties.id)){properties.onload();return $(properties.id)}var script=new Element("script",{src:source,type:"text/javascript"});var load=properties.onload.bind(script),check=properties.check,doc=properties.document;delete properties.onload;delete properties.check;delete properties.document;if(!Browser.Engine.webkit419&&!Browser.Engine.presto){script.addEvents({load:load,readystatechange:function(){if(Browser.Engine.trident&&["loaded","complete"].contains(this.readyState)){load()}}}).setProperties(properties)}else{var checker=(function(){if(!$try(check)){return}$clear(checker);Browser.Engine.presto?load.delay(500):load()}).periodical(50)}return script.inject(doc.head)},css:function(source,properties){properties=$extend({id:null,media:"screen",onload:$empty},properties);new Request({method:"get",url:source,onComplete:function(response){var newSheet=new Element("link",{id:properties.id,rel:"stylesheet",media:properties.media,type:"text/css",href:source}).inject(document.head);properties.onload()}.bind(this),onFailure:function(response){},onSuccess:function(){}.bind(this)}).send()}});MUI.extend({newWindowsFromHTML:function(arg){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Windows-from-html.js"],onload:function(){new MUI.newWindowsFromHTML(arg)}})},newWindowsFromJSON:function(arg){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Windows-from-json.js"],onload:function(){new MUI.newWindowsFromJSON(arg)}})},arrangeCascade:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Arrange-cascade.js"],onload:function(){new MUI.arrangeCascade()}})},arrangeTile:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Arrange-tile.js"],onload:function(){new MUI.arrangeTile()}})},saveWorkspace:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Layout/Workspaces.js"],onload:function(){new MUI.saveWorkspace()}})},loadWorkspace:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Layout/Workspaces.js"],onload:function(){new MUI.loadWorkspace()}})},Themes:{init:function(arg){new MUI.Require({js:[MUI.path.plugins+"mochaui/Utilities/Themes.js"],onload:function(){MUI.Themes.init(arg)}})}}});MUI.files[MUI.path.source+"Window/Window.js"]="loading";MUI.extend({Windows:{instances:new Hash(),indexLevel:100,windowIDCount:0,windowsVisible:true,focusingWindow:false}});MUI.Windows.windowOptions={id:null,title:"New Window",icon:false,type:"window",require:{css:[],images:[],js:[],onload:null},loadMethod:null,method:"get",contentURL:null,data:null,closeAfter:false,evalScripts:true,evalResponse:false,content:"Window content",toolbar:false,toolbarPosition:"top",toolbarHeight:29,toolbarURL:"pages/lipsum.html",toolbarData:null,toolbarContent:"",toolbarOnload:$empty,toolbar2:false,toolbar2Position:"bottom",toolbar2Height:29,toolbar2URL:"pages/lipsum.html",toolbar2Data:null,toolbar2Content:"",toolbar2Onload:$empty,container:null,restrict:true,shape:"box",collapsible:true,minimizable:true,maximizable:true,closable:true,storeOnClose:false,modalOverlayClose:true,draggable:null,draggableGrid:false,draggableLimit:false,draggableSnap:false,resizable:null,resizeLimit:{x:[250,2500],y:[125,2000]},addClass:"",width:300,height:125,headerHeight:25,footerHeight:25,cornerRadius:8,x:null,y:null,scrollbars:true,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5,shadowOffset:{x:0,y:1},controlsOffset:{right:6,top:6},useCanvas:true,useCanvasControls:true,useSpinner:true,headerStartColor:[250,250,250],headerStopColor:[229,229,229],bodyBgColor:[229,229,229],minimizeBgColor:[255,255,255],minimizeColor:[0,0,0],maximizeBgColor:[255,255,255],maximizeColor:[0,0,0],closeBgColor:[255,255,255],closeColor:[0,0,0],resizableColor:[254,254,254],onBeforeBuild:$empty,onContentLoaded:$empty,onFocus:$empty,onBlur:$empty,onResize:$empty,onMinimize:$empty,onMaximize:$empty,onRestore:$empty,onClose:$empty,onCloseComplete:$empty};MUI.Windows.windowOptionsOriginal=$merge(MUI.Windows.windowOptions);MUI.Window=new Class({Implements:[Events,Options],options:MUI.Windows.windowOptions,initialize:function(options){this.setOptions(options);var options=this.options;$extend(this,{mochaControlsWidth:0,minimizebuttonX:0,maximizebuttonX:0,closebuttonX:0,headerFooterShadow:options.headerHeight+options.footerHeight+(options.shadowBlur*2),oldTop:0,oldLeft:0,isMaximized:false,isMinimized:false,isCollapsed:false,timestamp:$time()});if(options.type!="window"){options.container=document.body;options.minimizable=false}if(!options.container){options.container=MUI.Desktop&&MUI.Desktop.desktop?MUI.Desktop.desktop:document.body}if(options.resizable==null){if(options.type!="window"||options.shape=="gauge"){options.resizable=false}else{options.resizable=true}}if(options.draggable==null){options.draggable=options.type!="window"?false:true}if(options.shape=="gauge"||options.type=="notification"){options.collapsible=false;options.maximizable=false;options.contentBgColor="transparent";options.scrollbars=false;options.footerHeight=0}if(options.type=="notification"){options.closable=false;options.headerHeight=0}if(MUI.Dock&&$(MUI.options.dock)){if(MUI.Dock.dock&&options.type!="modal"&&options.type!="modal2"){options.minimizable=options.minimizable}}else{options.minimizable=false}options.maximizable=MUI.Desktop&&MUI.Desktop.desktop&&options.maximizable&&options.type!="modal"&&options.type!="modal2";if(this.options.type=="modal2"){this.options.shadowBlur=0;this.options.shadowOffset={x:0,y:0};this.options.useSpinner=false;this.options.useCanvas=false;this.options.footerHeight=0;this.options.headerHeight=0}options.id=options.id||"win"+(++MUI.Windows.windowIDCount);this.windowEl=$(options.id);if(options.require.css.length||options.require.images.length){new MUI.Require({css:options.require.css,images:options.require.images,onload:function(){this.newWindow()}.bind(this)})}else{this.newWindow()}return this},saveValues:function(){var coordinates=this.windowEl.getCoordinates();this.options.x=coordinates.left.toInt();this.options.y=coordinates.top.toInt()},newWindow:function(properties){var instances=MUI.Windows.instances;var instanceID=MUI.Windows.instances.get(this.options.id);var options=this.options;if(instanceID){var instance=instanceID}if(this.windowEl&&!this.isClosing){if(instance.isMinimized){MUI.Dock.restoreMinimized(this.windowEl)}else{if(instance.isCollapsed){MUI.collapseToggle(this.windowEl);setTimeout(MUI.focusWindow.pass(this.windowEl,this),10)}else{if(this.windowEl.hasClass("windowClosed")){if(instance.check){instance.check.show()}this.windowEl.removeClass("windowClosed");this.windowEl.setStyle("opacity",0);this.windowEl.addClass("mocha");if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){currentButton.show()}MUI.Desktop.setDesktopSize()}instance.displayNewWindow()}else{var coordinates=document.getCoordinates();if(this.windowEl.getStyle("left").toInt()>coordinates.width||this.windowEl.getStyle("top").toInt()>coordinates.height){MUI.centerWindow(this.windowEl)}setTimeout(MUI.focusWindow.pass(this.windowEl,this),10);if(MUI.options.standardEffects==true){this.windowEl.shake()}}}}return}else{instances.set(options.id,this)}this.isClosing=false;this.fireEvent("onBeforeBuild");MUI.Windows.indexLevel++;this.windowEl=new Element("div",{"class":"mocha",id:options.id,styles:{position:"absolute",width:options.width,height:options.height,display:"block",opacity:0,zIndex:MUI.Windows.indexLevel+=2}});this.windowEl.store("instance",this);this.windowEl.addClass(options.addClass);if(options.type=="modal2"){this.windowEl.addClass("modal2")}if(Browser.Engine.trident&&options.shape=="gauge"){this.windowEl.setStyle("backgroundImage","url(../images/spacer.gif)")}if((this.options.type=="modal"||options.type=="modal2")&&Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){this.windowEl.setStyle("position","fixed")}}}if(options.loadMethod=="iframe"){options.padding={top:0,right:0,bottom:0,left:0}}this.insertWindowElements();this.titleEl.set("html",options.title);this.contentWrapperEl.setStyle("overflow","hidden");this.contentEl.setStyles({"padding-top":options.padding.top,"padding-bottom":options.padding.bottom,"padding-left":options.padding.left,"padding-right":options.padding.right});if(options.shape=="gauge"){if(options.useCanvasControls){this.canvasControlsEl.setStyle("visibility","hidden")}else{this.controlsEl.setStyle("visibility","hidden")}this.windowEl.addEvent("mouseover",function(){this.mouseover=true;var showControls=function(){if(this.mouseover!=false){if(options.useCanvasControls){this.canvasControlsEl.setStyle("visibility","visible")}else{this.controlsEl.setStyle("visibility","visible")}this.canvasHeaderEl.setStyle("visibility","visible");this.titleEl.show()}};showControls.delay(0,this)}.bind(this));this.windowEl.addEvent("mouseleave",function(){this.mouseover=false;if(this.options.useCanvasControls){this.canvasControlsEl.setStyle("visibility","hidden")}else{this.controlsEl.setStyle("visibility","hidden")}this.canvasHeaderEl.setStyle("visibility","hidden");this.titleEl.hide()}.bind(this))}this.windowEl.inject(options.container);this.setColors();if(options.type!="notification"){this.setMochaControlsWidth()}MUI.updateContent({element:this.windowEl,content:options.content,method:options.method,url:options.contentURL,data:options.data,onContentLoaded:null,require:{js:options.require.js,onload:options.require.onload}});if(this.options.toolbar==true){MUI.updateContent({element:this.windowEl,childElement:this.toolbarEl,content:options.toolbarContent,loadMethod:"xhr",method:options.method,url:options.toolbarURL,data:options.toolbarData,onContentLoaded:options.toolbarOnload})}if(this.options.toolbar2==true){MUI.updateContent({element:this.windowEl,childElement:this.toolbar2El,content:options.toolbar2Content,loadMethod:"xhr",method:options.method,url:options.toolbar2URL,data:options.toolbar2Data,onContentLoaded:options.toolbar2Onload})}this.drawWindow();this.attachDraggable();this.attachResizable();this.setupEvents();if(options.resizable){this.adjustHandles()}if(options.container==document.body||options.container==MUI.Desktop.desktop){var dimensions=window.getSize()}else{var dimensions=$(this.options.container).getSize()}var x,y;if(!options.y){if(MUI.Desktop&&MUI.Desktop.desktop){y=(dimensions.y*0.5)-(this.windowEl.offsetHeight*0.5);if(y<-options.shadowBlur){y=-options.shadowBlur}}else{y=window.getScroll().y+(window.getSize().y*0.5)-(this.windowEl.offsetHeight*0.5);if(y<-options.shadowBlur){y=-options.shadowBlur}}}else{y=options.y-options.shadowBlur}if(this.options.x==null){x=(dimensions.x*0.5)-(this.windowEl.offsetWidth*0.5);if(x<-options.shadowBlur){x=-options.shadowBlur}}else{x=options.x-options.shadowBlur}this.windowEl.setStyles({top:y,left:x});this.opacityMorph=new Fx.Morph(this.windowEl,{duration:350,transition:Fx.Transitions.Sine.easeInOut,onComplete:function(){if(Browser.Engine.trident){this.drawWindow()}}.bind(this)});this.displayNewWindow();this.morph=new Fx.Morph(this.windowEl,{duration:200});this.windowEl.store("morph",this.morph);this.resizeMorph=new Fx.Elements([this.contentWrapperEl,this.windowEl],{duration:400,transition:Fx.Transitions.Sine.easeInOut,onStart:function(){this.resizeAnimation=this.drawWindow.periodical(20,this)}.bind(this),onComplete:function(){$clear(this.resizeAnimation);this.drawWindow();if(this.iframeEl){this.iframeEl.setStyle("visibility","visible")}}.bind(this)});this.windowEl.store("resizeMorph",this.resizeMorph);if($(this.windowEl.id+"LinkCheck")){this.check=new Element("div",{"class":"check",id:this.options.id+"_check"}).inject(this.windowEl.id+"LinkCheck")}if(this.options.closeAfter!=false){MUI.closeWindow.delay(this.options.closeAfter,this,this.windowEl)}if(MUI.Dock&&$(MUI.options.dock)&&this.options.type=="window"){MUI.Dock.createDockTab(this.windowEl)}},displayNewWindow:function(){options=this.options;if(options.type=="modal"||options.type=="modal2"){MUI.currentModal=this.windowEl;if(Browser.Engine.trident4){$("modalFix").show()}$("modalOverlay").show();if(MUI.options.advancedEffects==false){$("modalOverlay").setStyle("opacity",0.6);this.windowEl.setStyles({zIndex:11000,opacity:1})}else{MUI.Modal.modalOverlayCloseMorph.cancel();MUI.Modal.modalOverlayOpenMorph.start({opacity:0.6});this.windowEl.setStyles({zIndex:11000});this.opacityMorph.start({opacity:1})}$$(".dockTab").removeClass("activeDockTab");$$(".mocha").removeClass("isFocused");this.windowEl.addClass("isFocused")}else{if(MUI.options.advancedEffects==false){this.windowEl.setStyle("opacity",1);setTimeout(MUI.focusWindow.pass(this.windowEl,this),10)}else{if(Browser.Engine.trident){this.drawWindow(false)}this.opacityMorph.start({opacity:1});setTimeout(MUI.focusWindow.pass(this.windowEl,this),10)}}},setupEvents:function(){var windowEl=this.windowEl;if(this.closeButtonEl){this.closeButtonEl.addEvent("click",function(e){new Event(e).stop();MUI.closeWindow(windowEl)}.bind(this))}if(this.options.type=="window"){windowEl.addEvent("mousedown",function(e){if(Browser.Engine.trident){new Event(e).stop()}MUI.focusWindow(windowEl);if(windowEl.getStyle("top").toInt()<-this.options.shadowBlur){windowEl.setStyle("top",-this.options.shadowBlur)}}.bind(this))}if(this.minimizeButtonEl){this.minimizeButtonEl.addEvent("click",function(e){new Event(e).stop();MUI.Dock.minimizeWindow(windowEl)}.bind(this))}if(this.maximizeButtonEl){this.maximizeButtonEl.addEvent("click",function(e){new Event(e).stop();if(this.isMaximized){MUI.Desktop.restoreWindow(windowEl)}else{MUI.Desktop.maximizeWindow(windowEl)}}.bind(this))}if(this.options.collapsible==true){this.titleEl.addEvent("selectstart",function(e){e=new Event(e).stop()}.bind(this));if(Browser.Engine.trident){this.titleBarEl.addEvent("mousedown",function(e){this.titleEl.setCapture()}.bind(this));this.titleBarEl.addEvent("mouseup",function(e){this.titleEl.releaseCapture()}.bind(this))}this.titleBarEl.addEvent("dblclick",function(e){e=new Event(e).stop();MUI.collapseToggle(this.windowEl)}.bind(this))}},attachDraggable:function(){var windowEl=this.windowEl;if(!this.options.draggable){return}this.windowDrag=new Drag.Move(windowEl,{handle:this.titleBarEl,container:this.options.restrict==true?$(this.options.container):false,grid:this.options.draggableGrid,limit:this.options.draggableLimit,snap:this.options.draggableSnap,onStart:function(){if(this.options.type!="modal"&&this.options.type!="modal2"){MUI.focusWindow(windowEl);$("windowUnderlay").show()}if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","hidden")}else{this.iframeEl.hide()}}}.bind(this),onComplete:function(){if(this.options.type!="modal"&&this.options.type!="modal2"){$("windowUnderlay").hide()}if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","visible")}else{this.iframeEl.show()}}this.saveValues()}.bind(this)})},attachResizable:function(){var windowEl=this.windowEl;if(!this.options.resizable){return}this.resizable1=this.windowEl.makeResizable({handle:[this.n,this.ne,this.nw],limit:{y:[function(){return this.windowEl.getStyle("top").toInt()+this.windowEl.getStyle("height").toInt()-this.options.resizeLimit.y[1]}.bind(this),function(){return this.windowEl.getStyle("top").toInt()+this.windowEl.getStyle("height").toInt()-this.options.resizeLimit.y[0]}.bind(this)]},modifiers:{x:false,y:"top"},onStart:function(){this.resizeOnStart();this.coords=this.contentWrapperEl.getCoordinates();this.y2=this.coords.top.toInt()+this.contentWrapperEl.offsetHeight}.bind(this),onDrag:function(){this.coords=this.contentWrapperEl.getCoordinates();this.contentWrapperEl.setStyle("height",this.y2-this.coords.top.toInt());this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable2=this.contentWrapperEl.makeResizable({handle:[this.e,this.ne],limit:{x:[this.options.resizeLimit.x[0]-(this.options.shadowBlur*2),this.options.resizeLimit.x[1]-(this.options.shadowBlur*2)]},modifiers:{x:"width",y:false},onStart:function(){this.resizeOnStart()}.bind(this),onDrag:function(){this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable3=this.contentWrapperEl.makeResizable({container:this.options.restrict==true?$(this.options.container):false,handle:this.se,limit:{x:[this.options.resizeLimit.x[0]-(this.options.shadowBlur*2),this.options.resizeLimit.x[1]-(this.options.shadowBlur*2)],y:[this.options.resizeLimit.y[0]-this.headerFooterShadow,this.options.resizeLimit.y[1]-this.headerFooterShadow]},modifiers:{x:"width",y:"height"},onStart:function(){this.resizeOnStart()}.bind(this),onDrag:function(){this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable4=this.contentWrapperEl.makeResizable({handle:[this.s,this.sw],limit:{y:[this.options.resizeLimit.y[0]-this.headerFooterShadow,this.options.resizeLimit.y[1]-this.headerFooterShadow]},modifiers:{x:false,y:"height"},onStart:function(){this.resizeOnStart()}.bind(this),onDrag:function(){this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable5=this.windowEl.makeResizable({handle:[this.w,this.sw,this.nw],limit:{x:[function(){return this.windowEl.getStyle("left").toInt()+this.windowEl.getStyle("width").toInt()-this.options.resizeLimit.x[1]}.bind(this),function(){return this.windowEl.getStyle("left").toInt()+this.windowEl.getStyle("width").toInt()-this.options.resizeLimit.x[0]}.bind(this)]},modifiers:{x:"left",y:false},onStart:function(){this.resizeOnStart();this.coords=this.contentWrapperEl.getCoordinates();this.x2=this.coords.left.toInt()+this.contentWrapperEl.offsetWidth}.bind(this),onDrag:function(){this.coords=this.contentWrapperEl.getCoordinates();this.contentWrapperEl.setStyle("width",this.x2-this.coords.left.toInt());this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)})},resizeOnStart:function(){$("windowUnderlay").show();if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","hidden")}else{this.iframeEl.hide()}}},resizeOnDrag:function(){if(Browser.Engine.gecko){this.windowEl.getElements(".panel").each(function(panel){panel.store("oldOverflow",panel.getStyle("overflow"));panel.setStyle("overflow","visible")})}this.drawWindow();this.adjustHandles();if(Browser.Engine.gecko){this.windowEl.getElements(".panel").each(function(panel){panel.setStyle("overflow",panel.retrieve("oldOverflow"))})}},resizeOnComplete:function(){$("windowUnderlay").hide();if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","visible")}else{this.iframeEl.show();this.iframeEl.setStyle("width","99%");this.iframeEl.setStyle("height",this.contentWrapperEl.offsetHeight);this.iframeEl.setStyle("width","100%");this.iframeEl.setStyle("height",this.contentWrapperEl.offsetHeight)}}if(this.contentWrapperEl.getChildren(".column")!=null){MUI.rWidth(this.contentWrapperEl);this.contentWrapperEl.getChildren(".column").each(function(column){MUI.panelHeight(column)})}this.fireEvent("onResize",this.windowEl)},adjustHandles:function(){var shadowBlur=this.options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=this.options.shadowOffset;var top=shadowBlur-shadowOffset.y-1;var right=shadowBlur+shadowOffset.x-1;var bottom=shadowBlur+shadowOffset.y-1;var left=shadowBlur-shadowOffset.x-1;var coordinates=this.windowEl.getCoordinates();var width=coordinates.width-shadowBlur2x+2;var height=coordinates.height-shadowBlur2x+2;this.n.setStyles({top:top,left:left+10,width:width-20});this.e.setStyles({top:top+10,right:right,height:height-30});this.s.setStyles({bottom:bottom,left:left+10,width:width-30});this.w.setStyles({top:top+10,left:left,height:height-20});this.ne.setStyles({top:top,right:right});this.se.setStyles({bottom:bottom,right:right});this.sw.setStyles({bottom:bottom,left:left});this.nw.setStyles({top:top,left:left})},detachResizable:function(){this.resizable1.detach();this.resizable2.detach();this.resizable3.detach();this.resizable4.detach();this.resizable5.detach();this.windowEl.getElements(".handle").hide()},reattachResizable:function(){this.resizable1.attach();this.resizable2.attach();this.resizable3.attach();this.resizable4.attach();this.resizable5.attach();this.windowEl.getElements(".handle").show()},insertWindowElements:function(){var options=this.options;var height=options.height;var width=options.width;var id=options.id;var cache={};if(Browser.Engine.trident4){cache.zIndexFixEl=new Element("iframe",{id:id+"_zIndexFix","class":"zIndexFix",scrolling:"no",marginWidth:0,marginHeight:0,src:"",styles:{position:"absolute"}}).inject(this.windowEl)}cache.overlayEl=new Element("div",{id:id+"_overlay","class":"mochaOverlay",styles:{position:"absolute",top:0,left:0}}).inject(this.windowEl);cache.titleBarEl=new Element("div",{id:id+"_titleBar","class":"mochaTitlebar",styles:{cursor:options.draggable?"move":"default"}}).inject(cache.overlayEl,"top");cache.titleEl=new Element("h3",{id:id+"_title","class":"mochaTitle"}).inject(cache.titleBarEl);if(options.icon!=false){cache.titleEl.setStyles({"padding-left":28,background:"url("+options.icon+") 5px 4px no-repeat"})}cache.contentBorderEl=new Element("div",{id:id+"_contentBorder","class":"mochaContentBorder"}).inject(cache.overlayEl);if(options.toolbar){cache.toolbarWrapperEl=new Element("div",{id:id+"_toolbarWrapper","class":"mochaToolbarWrapper",styles:{height:options.toolbarHeight}}).inject(cache.contentBorderEl,options.toolbarPosition=="bottom"?"after":"before");if(options.toolbarPosition=="bottom"){cache.toolbarWrapperEl.addClass("bottom")}cache.toolbarEl=new Element("div",{id:id+"_toolbar","class":"mochaToolbar",styles:{height:options.toolbarHeight}}).inject(cache.toolbarWrapperEl)}if(options.toolbar2){cache.toolbar2WrapperEl=new Element("div",{id:id+"_toolbar2Wrapper","class":"mochaToolbarWrapper",styles:{height:options.toolbar2Height}}).inject(cache.contentBorderEl,options.toolbar2Position=="bottom"?"after":"before");if(options.toolbar2Position=="bottom"){cache.toolbar2WrapperEl.addClass("bottom")}cache.toolbar2El=new Element("div",{id:id+"_toolbar2","class":"mochaToolbar",styles:{height:options.toolbar2Height}}).inject(cache.toolbar2WrapperEl)}cache.contentWrapperEl=new Element("div",{id:id+"_contentWrapper","class":"mochaContentWrapper",styles:{width:width+"px",height:height+"px"}}).inject(cache.contentBorderEl);if(this.options.shape=="gauge"){cache.contentBorderEl.setStyle("borderWidth",0)}cache.contentEl=new Element("div",{id:id+"_content","class":"mochaContent"}).inject(cache.contentWrapperEl);if(this.options.useCanvas==true&&Browser.Engine.trident!=true){cache.canvasEl=new Element("canvas",{id:id+"_canvas","class":"mochaCanvas",width:10,height:10}).inject(this.windowEl)}if(this.options.useCanvas==true&&Browser.Engine.trident){cache.canvasEl=new Element("canvas",{id:id+"_canvas","class":"mochaCanvas",width:50000,height:20000,styles:{position:"absolute",top:0,left:0}}).inject(this.windowEl);if(MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(cache.canvasEl);cache.canvasEl=this.windowEl.getElement(".mochaCanvas")}}cache.controlsEl=new Element("div",{id:id+"_controls","class":"mochaControls"}).inject(cache.overlayEl,"after");if(options.useCanvasControls==true){cache.canvasControlsEl=new Element("canvas",{id:id+"_canvasControls","class":"mochaCanvasControls",width:14,height:14}).inject(this.windowEl);if(Browser.Engine.trident&&MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(cache.canvasControlsEl);cache.canvasControlsEl=this.windowEl.getElement(".mochaCanvasControls")}}if(options.closable){cache.closeButtonEl=new Element("div",{id:id+"_closeButton","class":"mochaCloseButton mochaWindowButton",title:"Close"}).inject(cache.controlsEl)}if(options.maximizable){cache.maximizeButtonEl=new Element("div",{id:id+"_maximizeButton","class":"mochaMaximizeButton mochaWindowButton",title:"Maximize"}).inject(cache.controlsEl)}if(options.minimizable){cache.minimizeButtonEl=new Element("div",{id:id+"_minimizeButton","class":"mochaMinimizeButton mochaWindowButton",title:"Minimize"}).inject(cache.controlsEl)}if(options.useSpinner==true&&options.shape!="gauge"&&options.type!="notification"){cache.spinnerEl=new Element("div",{id:id+"_spinner","class":"mochaSpinner",width:16,height:16}).inject(this.windowEl,"bottom")}if(this.options.shape=="gauge"){cache.canvasHeaderEl=new Element("canvas",{id:id+"_canvasHeader","class":"mochaCanvasHeader",width:this.options.width,height:26}).inject(this.windowEl,"bottom");if(Browser.Engine.trident&&MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(cache.canvasHeaderEl);cache.canvasHeaderEl=this.windowEl.getElement(".mochaCanvasHeader")}}if(Browser.Engine.trident){cache.overlayEl.setStyle("zIndex",2)}if(Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){cache.overlayEl.setStyle("overflow","auto")}}}if(options.resizable){cache.n=new Element("div",{id:id+"_resizeHandle_n","class":"handle",styles:{top:0,left:10,cursor:"n-resize"}}).inject(cache.overlayEl,"after");cache.ne=new Element("div",{id:id+"_resizeHandle_ne","class":"handle corner",styles:{top:0,right:0,cursor:"ne-resize"}}).inject(cache.overlayEl,"after");cache.e=new Element("div",{id:id+"_resizeHandle_e","class":"handle",styles:{top:10,right:0,cursor:"e-resize"}}).inject(cache.overlayEl,"after");cache.se=new Element("div",{id:id+"_resizeHandle_se","class":"handle cornerSE",styles:{bottom:0,right:0,cursor:"se-resize"}}).inject(cache.overlayEl,"after");cache.s=new Element("div",{id:id+"_resizeHandle_s","class":"handle",styles:{bottom:0,left:10,cursor:"s-resize"}}).inject(cache.overlayEl,"after");cache.sw=new Element("div",{id:id+"_resizeHandle_sw","class":"handle corner",styles:{bottom:0,left:0,cursor:"sw-resize"}}).inject(cache.overlayEl,"after");cache.w=new Element("div",{id:id+"_resizeHandle_w","class":"handle",styles:{top:10,left:0,cursor:"w-resize"}}).inject(cache.overlayEl,"after");cache.nw=new Element("div",{id:id+"_resizeHandle_nw","class":"handle corner",styles:{top:0,left:0,cursor:"nw-resize"}}).inject(cache.overlayEl,"after")}$extend(this,cache)},setColors:function(){if(this.options.useCanvas==true){var pattern=/\?(.*?)\)/;if(this.titleBarEl.getStyle("backgroundImage")!="none"){var gradient=this.titleBarEl.getStyle("backgroundImage");gradient=gradient.match(pattern)[1];gradient=gradient.parseQueryString();var gradientFrom=gradient.from;var gradientTo=gradient.to.replace(/\"/,"");this.options.headerStartColor=new Color(gradientFrom);this.options.headerStopColor=new Color(gradientTo);this.titleBarEl.addClass("replaced")}else{if(this.titleBarEl.getStyle("background-color")!==""&&this.titleBarEl.getStyle("background-color")!=="transparent"){this.options.headerStartColor=new Color(this.titleBarEl.getStyle("background-color")).mix("#fff",20);this.options.headerStopColor=new Color(this.titleBarEl.getStyle("background-color")).mix("#000",20);this.titleBarEl.addClass("replaced")}}if(this.windowEl.getStyle("background-color")!==""&&this.windowEl.getStyle("background-color")!=="transparent"){this.options.bodyBgColor=new Color(this.windowEl.getStyle("background-color"));this.windowEl.addClass("replaced")}if(this.options.resizable&&this.se.getStyle("background-color")!==""&&this.se.getStyle("background-color")!=="transparent"){this.options.resizableColor=new Color(this.se.getStyle("background-color"));this.se.addClass("replaced")}}if(this.options.useCanvasControls==true){if(this.minimizeButtonEl){if(this.minimizeButtonEl.getStyle("color")!==""&&this.minimizeButtonEl.getStyle("color")!=="transparent"){this.options.minimizeColor=new Color(this.minimizeButtonEl.getStyle("color"))}if(this.minimizeButtonEl.getStyle("background-color")!==""&&this.minimizeButtonEl.getStyle("background-color")!=="transparent"){this.options.minimizeBgColor=new Color(this.minimizeButtonEl.getStyle("background-color"));this.minimizeButtonEl.addClass("replaced")}}if(this.maximizeButtonEl){if(this.maximizeButtonEl.getStyle("color")!==""&&this.maximizeButtonEl.getStyle("color")!=="transparent"){this.options.maximizeColor=new Color(this.maximizeButtonEl.getStyle("color"))}if(this.maximizeButtonEl.getStyle("background-color")!==""&&this.maximizeButtonEl.getStyle("background-color")!=="transparent"){this.options.maximizeBgColor=new Color(this.maximizeButtonEl.getStyle("background-color"));this.maximizeButtonEl.addClass("replaced")}}if(this.closeButtonEl){if(this.closeButtonEl.getStyle("color")!==""&&this.closeButtonEl.getStyle("color")!=="transparent"){this.options.closeColor=new Color(this.closeButtonEl.getStyle("color"))}if(this.closeButtonEl.getStyle("background-color")!==""&&this.closeButtonEl.getStyle("background-color")!=="transparent"){this.options.closeBgColor=new Color(this.closeButtonEl.getStyle("background-color"));this.closeButtonEl.addClass("replaced")}}}},drawWindow:function(shadows){if(this.drawingWindow==true){return}this.drawingWindow=true;if(this.isCollapsed){this.drawWindowCollapsed(shadows);return}var windowEl=this.windowEl;var options=this.options;var shadowBlur=options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=this.options.shadowOffset;this.overlayEl.setStyles({width:this.contentWrapperEl.offsetWidth});if(this.iframeEl){this.iframeEl.setStyle("height",this.contentWrapperEl.offsetHeight)}var borderHeight=this.contentBorderEl.getStyle("border-top").toInt()+this.contentBorderEl.getStyle("border-bottom").toInt();var toolbarHeight=this.toolbarWrapperEl?this.toolbarWrapperEl.getStyle("height").toInt()+this.toolbarWrapperEl.getStyle("border-top").toInt():0;var toolbar2Height=this.toolbar2WrapperEl?this.toolbar2WrapperEl.getStyle("height").toInt()+this.toolbar2WrapperEl.getStyle("border-top").toInt():0;this.headerFooterShadow=options.headerHeight+options.footerHeight+shadowBlur2x;var height=this.contentWrapperEl.getStyle("height").toInt()+this.headerFooterShadow+toolbarHeight+toolbar2Height+borderHeight;var width=this.contentWrapperEl.getStyle("width").toInt()+shadowBlur2x;this.windowEl.setStyles({height:height,width:width});this.overlayEl.setStyles({height:height,top:shadowBlur-shadowOffset.y,left:shadowBlur-shadowOffset.x});if(this.options.useCanvas==true){if(Browser.Engine.trident){this.canvasEl.height=20000;this.canvasEl.width=50000}this.canvasEl.height=height;this.canvasEl.width=width}if(Browser.Engine.trident4){this.zIndexFixEl.setStyles({width:width,height:height})}this.titleBarEl.setStyles({width:width-shadowBlur2x,height:options.headerHeight});if(options.useSpinner==true&&options.shape!="gauge"&&options.type!="notification"){this.spinnerEl.setStyles({left:shadowBlur-shadowOffset.x+3,bottom:shadowBlur+shadowOffset.y+4})}if(this.options.useCanvas!=false){var ctx=this.canvasEl.getContext("2d");ctx.clearRect(0,0,width,height);switch(options.shape){case"box":this.drawBox(ctx,width,height,shadowBlur,shadowOffset,shadows);break;case"gauge":this.drawGauge(ctx,width,height,shadowBlur,shadowOffset,shadows);break}if(options.resizable){MUI.triangle(ctx,width-(shadowBlur+shadowOffset.x+17),height-(shadowBlur+shadowOffset.y+18),11,11,options.resizableColor,1)}if(Browser.Engine.trident){MUI.triangle(ctx,0,0,10,10,options.resizableColor,0)}}if(options.type!="notification"&&options.useCanvasControls==true){this.drawControls(width,height,shadows)}if(MUI.Desktop&&this.contentWrapperEl.getChildren(".column").length!=0){MUI.rWidth(this.contentWrapperEl);this.contentWrapperEl.getChildren(".column").each(function(column){MUI.panelHeight(column)})}this.drawingWindow=false;return this},drawWindowCollapsed:function(shadows){var windowEl=this.windowEl;var options=this.options;var shadowBlur=options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=options.shadowOffset;var headerShadow=options.headerHeight+shadowBlur2x+2;var height=headerShadow;var width=this.contentWrapperEl.getStyle("width").toInt()+shadowBlur2x;this.windowEl.setStyle("height",height);this.overlayEl.setStyles({height:height,top:shadowBlur-shadowOffset.y,left:shadowBlur-shadowOffset.x});if(Browser.Engine.trident4){this.zIndexFixEl.setStyles({width:width,height:height})}this.windowEl.setStyle("width",width);this.overlayEl.setStyle("width",width);this.titleBarEl.setStyles({width:width-shadowBlur2x,height:options.headerHeight});if(this.options.useCanvas!=false){this.canvasEl.height=height;this.canvasEl.width=width;var ctx=this.canvasEl.getContext("2d");ctx.clearRect(0,0,width,height);this.drawBoxCollapsed(ctx,width,height,shadowBlur,shadowOffset,shadows);if(options.useCanvasControls==true){this.drawControls(width,height,shadows)}if(Browser.Engine.trident){MUI.triangle(ctx,0,0,10,10,options.resizableColor,0)}}this.drawingWindow=false;return this},drawControls:function(width,height,shadows){var options=this.options;var shadowBlur=options.shadowBlur;var shadowOffset=options.shadowOffset;var controlsOffset=options.controlsOffset;this.controlsEl.setStyles({right:shadowBlur+shadowOffset.x+controlsOffset.right,top:shadowBlur-shadowOffset.y+controlsOffset.top});this.canvasControlsEl.setStyles({right:shadowBlur+shadowOffset.x+controlsOffset.right,top:shadowBlur-shadowOffset.y+controlsOffset.top});this.closebuttonX=options.closable?this.mochaControlsWidth-7:this.mochaControlsWidth+12;this.maximizebuttonX=this.closebuttonX-(options.maximizable?19:0);this.minimizebuttonX=this.maximizebuttonX-(options.minimizable?19:0);var ctx2=this.canvasControlsEl.getContext("2d");ctx2.clearRect(0,0,100,100);if(this.options.closable){this.closebutton(ctx2,this.closebuttonX,7,options.closeBgColor,1,options.closeColor,1)}if(this.options.maximizable){this.maximizebutton(ctx2,this.maximizebuttonX,7,options.maximizeBgColor,1,options.maximizeColor,1)}if(this.options.minimizable){this.minimizebutton(ctx2,this.minimizebuttonX,7,options.minimizeBgColor,1,options.minimizeColor,1)}if(Browser.Engine.trident){MUI.circle(ctx2,0,0,3,this.options.resizableColor,0)}},drawBox:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var shadowBlur2x=shadowBlur*2;var cornerRadius=this.options.cornerRadius;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MUI.roundedRect(ctx,shadowOffset.x+x,shadowOffset.y+x,width-(x*2)-shadowOffset.x,height-(x*2)-shadowOffset.y,cornerRadius+(shadowBlur-x),[0,0,0],x==shadowBlur?0.29:0.065+(x*0.01))}}this.bodyRoundedRect(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,height-shadowBlur2x,cornerRadius,options.bodyBgColor);if(this.options.type!="notification"){this.topRoundedRect(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,options.headerHeight,cornerRadius,options.headerStartColor,options.headerStopColor)}},drawBoxCollapsed:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var shadowBlur2x=shadowBlur*2;var cornerRadius=options.cornerRadius;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MUI.roundedRect(ctx,shadowOffset.x+x,shadowOffset.y+x,width-(x*2)-shadowOffset.x,height-(x*2)-shadowOffset.y,cornerRadius+(shadowBlur-x),[0,0,0],x==shadowBlur?0.3:0.06+(x*0.01))}}this.topRoundedRect2(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,options.headerHeight+2,cornerRadius,options.headerStartColor,options.headerStopColor)},drawGauge:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var radius=(width*0.5)-(shadowBlur)+16;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MUI.circle(ctx,width*0.5+shadowOffset.x,(height+options.headerHeight)*0.5+shadowOffset.x,(width*0.5)-(x*2)-shadowOffset.x,[0,0,0],x==shadowBlur?0.75:0.075+(x*0.04))}}MUI.circle(ctx,width*0.5-shadowOffset.x,(height+options.headerHeight)*0.5-shadowOffset.y,(width*0.5)-shadowBlur,options.bodyBgColor,1);this.canvasHeaderEl.setStyles({top:shadowBlur-shadowOffset.y,left:shadowBlur-shadowOffset.x});var ctx=this.canvasHeaderEl.getContext("2d");ctx.clearRect(0,0,width,100);ctx.beginPath();ctx.lineWidth=24;ctx.lineCap="round";ctx.moveTo(13,13);ctx.lineTo(width-(shadowBlur*2)-13,13);ctx.strokeStyle="rgba(0, 0, 0, .65)";ctx.stroke()},bodyRoundedRect:function(ctx,x,y,width,height,radius,rgb){ctx.fillStyle="rgba("+rgb.join(",")+", 1)";ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},topRoundedRect:function(ctx,x,y,width,height,radius,headerStartColor,headerStopColor){var lingrad=ctx.createLinearGradient(0,0,0,height);lingrad.addColorStop(0,"rgb("+headerStartColor.join(",")+")");lingrad.addColorStop(1,"rgb("+headerStopColor.join(",")+")");ctx.fillStyle=lingrad;ctx.beginPath();ctx.moveTo(x,y);ctx.lineTo(x,y+height);ctx.lineTo(x+width,y+height);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},topRoundedRect2:function(ctx,x,y,width,height,radius,headerStartColor,headerStopColor){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){ctx.fillStyle="rgba("+headerStopColor.join(",")+", 1)"}else{var lingrad=ctx.createLinearGradient(0,this.options.shadowBlur-1,0,height+this.options.shadowBlur+3);lingrad.addColorStop(0,"rgb("+headerStartColor.join(",")+")");lingrad.addColorStop(1,"rgb("+headerStopColor.join(",")+")");ctx.fillStyle=lingrad}ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},maximizebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgbBg.join(",")+","+aBg+")";ctx.fill();ctx.strokeStyle="rgba("+rgb.join(",")+","+a+")";ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(x,y-3.5);ctx.lineTo(x,y+3.5);ctx.moveTo(x-3.5,y);ctx.lineTo(x+3.5,y);ctx.stroke()},closebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgbBg.join(",")+","+aBg+")";ctx.fill();ctx.strokeStyle="rgba("+rgb.join(",")+","+a+")";ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(x-3,y-3);ctx.lineTo(x+3,y+3);ctx.moveTo(x+3,y-3);ctx.lineTo(x-3,y+3);ctx.stroke()},minimizebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgbBg.join(",")+","+aBg+")";ctx.fill();ctx.strokeStyle="rgba("+rgb.join(",")+","+a+")";ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(x-3.5,y);ctx.lineTo(x+3.5,y);ctx.stroke()},setMochaControlsWidth:function(){this.mochaControlsWidth=0;var options=this.options;if(options.minimizable){this.mochaControlsWidth+=(this.minimizeButtonEl.getStyle("margin-left").toInt()+this.minimizeButtonEl.getStyle("width").toInt())}if(options.maximizable){this.mochaControlsWidth+=(this.maximizeButtonEl.getStyle("margin-left").toInt()+this.maximizeButtonEl.getStyle("width").toInt())}if(options.closable){this.mochaControlsWidth+=(this.closeButtonEl.getStyle("margin-left").toInt()+this.closeButtonEl.getStyle("width").toInt())}this.controlsEl.setStyle("width",this.mochaControlsWidth);if(options.useCanvasControls==true){this.canvasControlsEl.setProperty("width",this.mochaControlsWidth)}},hideSpinner:function(){if(this.spinnerEl){this.spinnerEl.hide()}return this},showSpinner:function(){if(this.spinnerEl){this.spinnerEl.show()}return this},close:function(){if(!this.isClosing){MUI.closeWindow(this.windowEl)}return this},minimize:function(){MUI.Dock.minimizeWindow(this.windowEl);return this},maximize:function(){if(this.isMinimized){MUI.Dock.restoreMinimized(this.windowEl)}MUI.Desktop.maximizeWindow(this.windowEl);return this},restore:function(){if(this.isMinimized){MUI.Dock.restoreMinimized(this.windowEl)}else{if(this.isMaximized){MUI.Desktop.restoreWindow(this.windowEl)}}return this},resize:function(options){MUI.resizeWindow(this.windowEl,options);return this},center:function(){MUI.centerWindow(this.windowEl);return this},hide:function(){this.windowEl.setStyle("display","none");return this},show:function(){this.windowEl.setStyle("display","block");return this}});MUI.extend({closeWindow:function(windowEl){var instance=windowEl.retrieve("instance");if(windowEl!=$(windowEl)||instance.isClosing){return}instance.isClosing=true;instance.fireEvent("onClose",windowEl);if(instance.options.storeOnClose){this.storeOnClose(instance,windowEl);return}if(instance.check){instance.check.destroy()}if((instance.options.type=="modal"||instance.options.type=="modal2")&&Browser.Engine.trident4){$("modalFix").hide()}if(MUI.options.advancedEffects==false){if(instance.options.type=="modal"||instance.options.type=="modal2"){$("modalOverlay").setStyle("opacity",0)}MUI.closingJobs(windowEl);return true}else{if(Browser.Engine.trident){instance.drawWindow(false)}if(instance.options.type=="modal"||instance.options.type=="modal2"){MUI.Modal.modalOverlayCloseMorph.start({opacity:0})}var closeMorph=new Fx.Morph(windowEl,{duration:120,onComplete:function(){MUI.closingJobs(windowEl);return true}.bind(this)});closeMorph.start({opacity:0.4})}},closingJobs:function(windowEl){var instances=MUI.Windows.instances;var instance=instances.get(windowEl.id);windowEl.setStyle("visibility","hidden");if(Browser.Engine.trident){windowEl.dispose()}else{windowEl.destroy()}instance.fireEvent("onCloseComplete");if(instance.options.type!="notification"){var newFocus=this.getWindowWithHighestZindex();this.focusWindow(newFocus)}instances.erase(instance.options.id);if(this.loadingWorkspace==true){this.windowUnload()}if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){MUI.Dock.dockSortables.removeItems(currentButton).destroy()}MUI.Desktop.setDesktopSize()}},storeOnClose:function(instance,windowEl){if(instance.check){instance.check.hide()}windowEl.setStyles({zIndex:-1});windowEl.addClass("windowClosed");windowEl.removeClass("mocha");if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){currentButton.hide()}MUI.Desktop.setDesktopSize()}instance.fireEvent("onCloseComplete");if(instance.options.type!="notification"){var newFocus=this.getWindowWithHighestZindex();this.focusWindow(newFocus)}instance.isClosing=false},closeAll:function(){$$(".mocha").each(function(windowEl){this.closeWindow(windowEl)}.bind(this))},collapseToggle:function(windowEl){var instance=windowEl.retrieve("instance");var handles=windowEl.getElements(".handle");if(instance.isMaximized==true){return}if(instance.isCollapsed==false){instance.isCollapsed=true;handles.hide();if(instance.iframeEl){instance.iframeEl.setStyle("visibility","hidden")}instance.contentBorderEl.setStyles({visibility:"hidden",position:"absolute",top:-10000,left:-10000});if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.setStyles({visibility:"hidden",position:"absolute",top:-10000,left:-10000})}instance.drawWindowCollapsed()}else{instance.isCollapsed=false;instance.drawWindow();instance.contentBorderEl.setStyles({visibility:"visible",position:null,top:null,left:null});if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.setStyles({visibility:"visible",position:null,top:null,left:null})}if(instance.iframeEl){instance.iframeEl.setStyle("visibility","visible")}handles.show()}},toggleWindowVisibility:function(){MUI.Windows.instances.each(function(instance){if(instance.options.type=="modal"||instance.options.type=="modal2"||instance.isMinimized==true){return}var id=$(instance.options.id);if(id.getStyle("visibility")=="visible"){if(instance.iframe){instance.iframeEl.setStyle("visibility","hidden")}if(instance.toolbarEl){instance.toolbarWrapperEl.setStyle("visibility","hidden")}instance.contentBorderEl.setStyle("visibility","hidden");id.setStyle("visibility","hidden");MUI.Windows.windowsVisible=false}else{id.setStyle("visibility","visible");instance.contentBorderEl.setStyle("visibility","visible");if(instance.iframe){instance.iframeEl.setStyle("visibility","visible")}if(instance.toolbarEl){instance.toolbarWrapperEl.setStyle("visibility","visible")}MUI.Windows.windowsVisible=true}}.bind(this))},focusWindow:function(windowEl,fireEvent){MUI.Windows.focusingWindow=true;var windowClicked=function(){MUI.Windows.focusingWindow=false};windowClicked.delay(170,this);if($$(".mocha").length==0){return}if(windowEl!=$(windowEl)||windowEl.hasClass("isFocused")){return}var instances=MUI.Windows.instances;var instance=instances.get(windowEl.id);if(instance.options.type=="notification"){windowEl.setStyle("zIndex",11001);return}MUI.Windows.indexLevel+=2;windowEl.setStyle("zIndex",MUI.Windows.indexLevel);$("windowUnderlay").setStyle("zIndex",MUI.Windows.indexLevel-1).inject($(windowEl),"after");instances.each(function(instance){if(instance.windowEl.hasClass("isFocused")){instance.fireEvent("onBlur",instance.windowEl)}instance.windowEl.removeClass("isFocused")});if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){MUI.Dock.makeActiveTab()}windowEl.addClass("isFocused");if(fireEvent!=false){instance.fireEvent("onFocus",windowEl)}},getWindowWithHighestZindex:function(){this.highestZindex=0;$$(".mocha").each(function(element){this.zIndex=element.getStyle("zIndex");if(this.zIndex>=this.highestZindex){this.highestZindex=this.zIndex}}.bind(this));$$(".mocha").each(function(element){if(element.getStyle("zIndex")==this.highestZindex){this.windowWithHighestZindex=element}}.bind(this));return this.windowWithHighestZindex},blurAll:function(){if(MUI.Windows.focusingWindow==false){$$(".mocha").each(function(windowEl){var instance=windowEl.retrieve("instance");if(instance.options.type!="modal"&&instance.options.type!="modal2"){windowEl.removeClass("isFocused")}});$$(".dockTab").removeClass("activeDockTab")}},centerWindow:function(windowEl){if(!windowEl){MUI.Windows.instances.each(function(instance){if(instance.windowEl.hasClass("isFocused")){windowEl=instance.windowEl}})}var instance=windowEl.retrieve("instance");var options=instance.options;var dimensions=options.container.getCoordinates();var windowPosTop=window.getScroll().y+(window.getSize().y*0.5)-(windowEl.offsetHeight*0.5);if(windowPosTop<-instance.options.shadowBlur){windowPosTop=-instance.options.shadowBlur}var windowPosLeft=(dimensions.width*0.5)-(windowEl.offsetWidth*0.5);if(windowPosLeft<-instance.options.shadowBlur){windowPosLeft=-instance.options.shadowBlur}if(MUI.options.advancedEffects==true){instance.morph.start({top:windowPosTop,left:windowPosLeft})}else{windowEl.setStyles({top:windowPosTop,left:windowPosLeft})}},resizeWindow:function(windowEl,options){var instance=windowEl.retrieve("instance");$extend({width:null,height:null,top:null,left:null,centered:true},options);var oldWidth=windowEl.getStyle("width").toInt();var oldHeight=windowEl.getStyle("height").toInt();var oldTop=windowEl.getStyle("top").toInt();var oldLeft=windowEl.getStyle("left").toInt();if(options.centered){var top=typeof(options.top)!="undefined"?options.top:oldTop-((options.height-oldHeight)*0.5);var left=typeof(options.left)!="undefined"?options.left:oldLeft-((options.width-oldWidth)*0.5)}else{var top=typeof(options.top)!="undefined"?options.top:oldTop;var left=typeof(options.left)!="undefined"?options.left:oldLeft}if(MUI.options.advancedEffects==false){windowEl.setStyles({top:top,left:left});instance.contentWrapperEl.setStyles({height:options.height,width:options.width});instance.drawWindow();if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","visible")}else{instance.iframeEl.show()}}}else{windowEl.retrieve("resizeMorph").start({"0":{height:options.height,width:options.width},"1":{top:top,left:left}})}return instance},dynamicResize:function(windowEl){var instance=windowEl.retrieve("instance");var contentWrapperEl=instance.contentWrapperEl;var contentEl=instance.contentEl;contentWrapperEl.setStyles({height:contentEl.offsetHeight,width:contentEl.offsetWidth});instance.drawWindow()}});document.addEvent("keydown",function(event){if(event.key=="q"&&event.control&&event.alt){MUI.toggleWindowVisibility()}});MUI.files[MUI.path.source+"Window/Modal.js"]="loaded";MUI.Modal=new Class({Extends:MUI.Window,options:{type:"modal"},initialize:function(options){if(!$("modalOverlay")){this.modalInitialize();window.addEvent("resize",function(){this.setModalSize()}.bind(this))}this.parent(options)},modalInitialize:function(){var modalOverlay=new Element("div",{id:"modalOverlay",styles:{height:document.getCoordinates().height,opacity:0.6}}).inject(document.body);modalOverlay.setStyles({position:Browser.Engine.trident4?"absolute":"fixed"});modalOverlay.addEvent("click",function(e){var instance=MUI.Windows.instances.get(MUI.currentModal.id);if(instance.options.modalOverlayClose==true){MUI.closeWindow(MUI.currentModal)}});if(Browser.Engine.trident4){var modalFix=new Element("iframe",{id:"modalFix",scrolling:"no",marginWidth:0,marginHeight:0,src:"",styles:{height:document.getCoordinates().height}}).inject(document.body)}MUI.Modal.modalOverlayOpenMorph=new Fx.Morph($("modalOverlay"),{duration:150});MUI.Modal.modalOverlayCloseMorph=new Fx.Morph($("modalOverlay"),{duration:150,onComplete:function(){$("modalOverlay").hide();if(Browser.Engine.trident4){$("modalFix").hide()}}.bind(this)})},setModalSize:function(){$("modalOverlay").setStyle("height",document.getCoordinates().height);if(Browser.Engine.trident4){$("modalFix").setStyle("height",document.getCoordinates().height)}}});MUI.extend({initializeTabs:function(el,target){$(el).setStyle("list-style","none");$(el).getElements("li").each(function(listitem){var link=listitem.getFirst("a").addEvent("click",function(e){e.preventDefault()});listitem.addEvent("click",function(e){MUI.updateContent({element:$(target),url:link.get("href")});MUI.selected(this,el)})})},selected:function(el,parent){$(parent).getChildren().each(function(listitem){listitem.removeClass("selected")});el.addClass("selected")}});MUI.files[MUI.path.source+"Layout/Layout.js"]="loaded";MUI.extend({Columns:{instances:new Hash(),columnIDCount:0},Panels:{instances:new Hash(),panelIDCount:0}});MUI.Desktop={options:{desktop:"desktop",desktopHeader:"desktopHeader",desktopFooter:"desktopFooter",desktopNavBar:"desktopNavbar",pageWrapper:"pageWrapper",page:"page",desktopFooter:"desktopFooterWrapper"},initialize:function(){this.desktop=$(this.options.desktop);this.desktopHeader=$(this.options.desktopHeader);this.desktopNavBar=$(this.options.desktopNavBar);this.pageWrapper=$(this.options.pageWrapper);this.page=$(this.options.page);this.desktopFooter=$(this.options.desktopFooter);if(this.desktop){($$("body")).setStyles({overflow:"hidden",height:"100%",margin:0});($$("html")).setStyles({overflow:"hidden",height:"100%"})}if(!MUI.Dock){this.setDesktopSize()}this.menuInitialize();window.addEvent("resize",function(e){this.onBrowserResize()}.bind(this));if(MUI.myChain){MUI.myChain.callChain()}},menuInitialize:function(){if(Browser.Engine.trident4&&this.desktopNavBar){this.desktopNavBar.getElements("li").each(function(element){element.addEvent("mouseenter",function(){this.addClass("ieHover")});element.addEvent("mouseleave",function(){this.removeClass("ieHover")})})}},onBrowserResize:function(){this.setDesktopSize();setTimeout(function(){MUI.Windows.instances.each(function(instance){if(instance.isMaximized){if(instance.iframeEl){instance.iframeEl.setStyle("visibility","hidden")}var coordinates=document.getCoordinates();var borderHeight=instance.contentBorderEl.getStyle("border-top").toInt()+instance.contentBorderEl.getStyle("border-bottom").toInt();var toolbarHeight=instance.toolbarWrapperEl?instance.toolbarWrapperEl.getStyle("height").toInt()+instance.toolbarWrapperEl.getStyle("border-top").toInt():0;instance.contentWrapperEl.setStyles({height:coordinates.height-instance.options.headerHeight-instance.options.footerHeight-borderHeight-toolbarHeight,width:coordinates.width});instance.drawWindow();if(instance.iframeEl){instance.iframeEl.setStyles({height:instance.contentWrapperEl.getStyle("height")});instance.iframeEl.setStyle("visibility","visible")}}}.bind(this))}.bind(this),100)},setDesktopSize:function(){var windowDimensions=window.getCoordinates();var dockWrapper=$(MUI.options.dockWrapper);if(this.desktop){this.desktop.setStyle("height",windowDimensions.height)}if(this.pageWrapper){var dockOffset=MUI.dockVisible?dockWrapper.offsetHeight:0;var pageWrapperHeight=windowDimensions.height;pageWrapperHeight-=this.pageWrapper.getStyle("border-top").toInt();pageWrapperHeight-=this.pageWrapper.getStyle("border-bottom").toInt();if(this.desktopHeader){pageWrapperHeight-=this.desktopHeader.offsetHeight}if(this.desktopFooter){pageWrapperHeight-=this.desktopFooter.offsetHeight}pageWrapperHeight-=dockOffset;if(pageWrapperHeight<0){pageWrapperHeight=0}this.pageWrapper.setStyle("height",pageWrapperHeight)}if(MUI.Columns.instances.getKeys().length>0){MUI.Desktop.resizePanels()}},resizePanels:function(){MUI.panelHeight();MUI.rWidth()},maximizeWindow:function(windowEl){var instance=MUI.Windows.instances.get(windowEl.id);var options=instance.options;var windowDrag=instance.windowDrag;if(windowEl!=$(windowEl)||instance.isMaximized){return}if(instance.isCollapsed){MUI.collapseToggle(windowEl)}instance.isMaximized=true;if(instance.options.restrict){windowDrag.detach();if(options.resizable){instance.detachResizable()}instance.titleBarEl.setStyle("cursor","default")}if(options.container!=this.desktop){this.desktop.grab(windowEl);if(this.options.restrict){windowDrag.container=this.desktop}}instance.oldTop=windowEl.getStyle("top");instance.oldLeft=windowEl.getStyle("left");var contentWrapperEl=instance.contentWrapperEl;contentWrapperEl.oldWidth=contentWrapperEl.getStyle("width");contentWrapperEl.oldHeight=contentWrapperEl.getStyle("height");if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden")}else{instance.iframeEl.hide()}}var windowDimensions=document.getCoordinates();var options=instance.options;var shadowBlur=options.shadowBlur;var shadowOffset=options.shadowOffset;var newHeight=windowDimensions.height-options.headerHeight-options.footerHeight;newHeight-=instance.contentBorderEl.getStyle("border-top").toInt();newHeight-=instance.contentBorderEl.getStyle("border-bottom").toInt();newHeight-=(instance.toolbarWrapperEl?instance.toolbarWrapperEl.getStyle("height").toInt()+instance.toolbarWrapperEl.getStyle("border-top").toInt():0);MUI.resizeWindow(windowEl,{width:windowDimensions.width,height:newHeight,top:shadowOffset.y-shadowBlur,left:shadowOffset.x-shadowBlur});instance.fireEvent("onMaximize",windowEl);if(instance.maximizeButtonEl){instance.maximizeButtonEl.setProperty("title","Restore")}MUI.focusWindow(windowEl)},restoreWindow:function(windowEl){var instance=windowEl.retrieve("instance");if(windowEl!=$(windowEl)||!instance.isMaximized){return}var options=instance.options;instance.isMaximized=false;if(options.restrict){instance.windowDrag.attach();if(options.resizable){instance.reattachResizable()}instance.titleBarEl.setStyle("cursor","move")}if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden")}else{instance.iframeEl.hide()}}var contentWrapperEl=instance.contentWrapperEl;MUI.resizeWindow(windowEl,{width:contentWrapperEl.oldWidth,height:contentWrapperEl.oldHeight,top:instance.oldTop,left:instance.oldLeft});instance.fireEvent("onRestore",windowEl);if(instance.maximizeButtonEl){instance.maximizeButtonEl.setProperty("title","Maximize")}}};MUI.Column=new Class({Implements:[Events,Options],options:{id:null,container:null,placement:null,width:null,resizeLimit:[],sortable:true,isCollapsed:false,onResize:$empty,onCollapse:$empty,onExpand:$empty},initialize:function(options){this.setOptions(options);$extend(this,{timestamp:$time(),isCollapsed:false,oldWidth:0});if(this.options.id==null){this.options.id="column"+(++MUI.Columns.columnIDCount)}var options=this.options;var instances=MUI.Columns.instances;var instanceID=instances.get(options.id);if(options.container==null){options.container=MUI.Desktop.pageWrapper}else{$(options.container).setStyle("overflow","hidden")}if(typeof this.options.container=="string"){this.options.container=$(this.options.container)}if(instanceID){var instance=instanceID}if(this.columnEl){return}else{instances.set(options.id,this)}if($(options.container).getElement(".pad")!=null){$(options.container).getElement(".pad").hide()}if($(options.container).getElement(".mochaContent")!=null){$(options.container).getElement(".mochaContent").hide()}this.columnEl=new Element("div",{id:this.options.id,"class":"column expanded",styles:{width:options.placement=="main"?null:options.width}}).inject($(options.container));this.columnEl.store("instance",this);var parent=this.columnEl.getParent();var columnHeight=parent.getStyle("height").toInt();this.columnEl.setStyle("height",columnHeight);if(this.options.sortable){if(!this.options.container.retrieve("sortables")){var sortables=new Sortables(this.columnEl,{opacity:1,handle:".panel-header",constrain:false,revert:false,onSort:function(){$$(".column").each(function(column){column.getChildren(".panelWrapper").each(function(panelWrapper){panelWrapper.getElement(".panel").removeClass("bottomPanel")});if(column.getChildren(".panelWrapper").getLast()){column.getChildren(".panelWrapper").getLast().getElement(".panel").addClass("bottomPanel")}column.getChildren(".panelWrapper").each(function(panelWrapper){var panel=panelWrapper.getElement(".panel");var column=panelWrapper.getParent().id;instance=MUI.Panels.instances.get(panel.id);instance.options.column=column;if(instance){var nextpanel=panel.getParent().getNext(".expanded");if(nextpanel){nextpanel=nextpanel.getElement(".panel")}instance.partner=nextpanel}});MUI.panelHeight()}.bind(this))}.bind(this)});this.options.container.store("sortables",sortables)}else{this.options.container.retrieve("sortables").addLists(this.columnEl)}}if(options.placement=="main"){this.columnEl.addClass("rWidth")}switch(this.options.placement){case"left":this.handleEl=new Element("div",{id:this.options.id+"_handle","class":"columnHandle"}).inject(this.columnEl,"after");this.handleIconEl=new Element("div",{id:options.id+"_handle_icon","class":"handleIcon"}).inject(this.handleEl);addResizeRight(this.columnEl,options.resizeLimit[0],options.resizeLimit[1]);break;case"right":this.handleEl=new Element("div",{id:this.options.id+"_handle","class":"columnHandle"}).inject(this.columnEl,"before");this.handleIconEl=new Element("div",{id:options.id+"_handle_icon","class":"handleIcon"}).inject(this.handleEl);addResizeLeft(this.columnEl,options.resizeLimit[0],options.resizeLimit[1]);break}if(this.options.isCollapsed&&this.options.placement!="main"){this.columnToggle()}if(this.handleEl!=null){this.handleEl.addEvent("dblclick",function(){this.columnToggle()}.bind(this))}MUI.rWidth()},columnCollapse:function(){var column=this.columnEl;this.oldWidth=column.getStyle("width").toInt();this.resize.detach();this.handleEl.removeEvents("dblclick");this.handleEl.addEvent("click",function(){this.columnExpand()}.bind(this));this.handleEl.setStyle("cursor","pointer").addClass("detached");column.setStyle("width",0);this.isCollapsed=true;column.addClass("collapsed");column.removeClass("expanded");MUI.rWidth();this.fireEvent("onCollapse");return true},columnExpand:function(){var column=this.columnEl;column.setStyle("width",this.oldWidth);this.isCollapsed=false;column.addClass("expanded");column.removeClass("collapsed");this.handleEl.removeEvents("click");this.handleEl.addEvent("dblclick",function(){this.columnCollapse()}.bind(this));this.resize.attach();this.handleEl.setStyle("cursor",Browser.Engine.webkit?"col-resize":"e-resize").addClass("attached");MUI.rWidth();this.fireEvent("onExpand");return true},columnToggle:function(){if(this.isCollapsed==false){this.columnCollapse()}else{this.columnExpand()}}});MUI.Column.implement(new Options,new Events);MUI.Panel=new Class({Implements:[Events,Options],options:{id:null,title:"New Panel",column:null,require:{css:[],images:[],js:[],onload:null},loadMethod:null,contentURL:null,method:"get",data:null,evalScripts:true,evalResponse:false,content:"Panel content",tabsURL:null,tabsData:null,tabsOnload:$empty,header:true,headerToolbox:false,headerToolboxURL:"pages/lipsum.html",headerToolboxOnload:$empty,height:125,addClass:"",scrollbars:true,padding:{top:8,right:8,bottom:8,left:8},collapsible:true,onBeforeBuild:$empty,onContentLoaded:$empty,onResize:$empty,onCollapse:$empty,onExpand:$empty},initialize:function(options){this.setOptions(options);$extend(this,{timestamp:$time(),isCollapsed:false,oldHeight:0,partner:null});if(this.options.id==null){this.options.id="panel"+(++MUI.Panels.panelIDCount)}var instances=MUI.Panels.instances;var instanceID=instances.get(this.options.id);var options=this.options;if(instanceID){var instance=instanceID}if(this.panelEl){return}else{instances.set(this.options.id,this)}this.fireEvent("onBeforeBuild");if(options.loadMethod=="iframe"){options.padding={top:0,right:0,bottom:0,left:0}}this.showHandle=true;if($(options.column).getChildren().length==0){this.showHandle=false}this.panelWrapperEl=new Element("div",{id:this.options.id+"_wrapper","class":"panelWrapper expanded"}).inject($(options.column));this.panelEl=new Element("div",{id:this.options.id,"class":"panel expanded",styles:{height:options.height}}).inject(this.panelWrapperEl);this.panelEl.store("instance",this);this.panelEl.addClass(options.addClass);this.contentEl=new Element("div",{id:options.id+"_pad","class":"pad"}).inject(this.panelEl);this.contentWrapperEl=this.panelEl;this.contentEl.setStyles({"padding-top":options.padding.top,"padding-bottom":options.padding.bottom,"padding-left":options.padding.left,"padding-right":options.padding.right});this.panelHeaderEl=new Element("div",{id:this.options.id+"_header","class":"panel-header",styles:{display:options.header?"block":"none"}}).inject(this.panelEl,"before");var columnInstances=MUI.Columns.instances;var columnInstance=columnInstances.get(this.options.column);if(this.options.collapsible){this.collapseToggleInit()}if(this.options.headerToolbox){this.panelHeaderToolboxEl=new Element("div",{id:options.id+"_headerToolbox","class":"panel-header-toolbox"}).inject(this.panelHeaderEl)}this.panelHeaderContentEl=new Element("div",{id:options.id+"_headerContent","class":"panel-headerContent"}).inject(this.panelHeaderEl);if(columnInstance.options.sortable){this.panelHeaderEl.setStyle("cursor","move");columnInstance.options.container.retrieve("sortables").addItems(this.panelWrapperEl);if(this.panelHeaderToolboxEl){this.panelHeaderToolboxEl.addEvent("mousedown",function(e){e=new Event(e).stop();e.target.focus()});this.panelHeaderToolboxEl.setStyle("cursor","default")}}this.titleEl=new Element("h2",{id:options.id+"_title"}).inject(this.panelHeaderContentEl);this.handleEl=new Element("div",{id:options.id+"_handle","class":"horizontalHandle",styles:{display:this.showHandle==true?"block":"none"}}).inject(this.panelEl,"after");this.handleIconEl=new Element("div",{id:options.id+"_handle_icon","class":"handleIcon"}).inject(this.handleEl);addResizeBottom(options.id);if(options.require.css.length||options.require.images.length){new MUI.Require({css:options.require.css,images:options.require.images,onload:function(){this.newPanel()}.bind(this)})}else{this.newPanel()}},newPanel:function(){options=this.options;if(this.options.headerToolbox){MUI.updateContent({element:this.panelEl,childElement:this.panelHeaderToolboxEl,loadMethod:"xhr",url:options.headerToolboxURL,onContentLoaded:options.headerToolboxOnload})}if(options.tabsURL==null){this.titleEl.set("html",options.title)}else{this.panelHeaderContentEl.addClass("tabs");MUI.updateContent({element:this.panelEl,childElement:this.panelHeaderContentEl,loadMethod:"xhr",url:options.tabsURL,data:options.tabsData,onContentLoaded:options.tabsOnload})}MUI.updateContent({element:this.panelEl,content:options.content,method:options.method,data:options.data,url:options.contentURL,onContentLoaded:null,require:{js:options.require.js,onload:options.require.onload}});$(options.column).getChildren(".panelWrapper").each(function(panelWrapper){panelWrapper.getElement(".panel").removeClass("bottomPanel")});$(options.column).getChildren(".panelWrapper").getLast().getElement(".panel").addClass("bottomPanel");MUI.panelHeight(options.column,this.panelEl,"new")},collapseToggleInit:function(options){var options=this.options;this.panelHeaderCollapseBoxEl=new Element("div",{id:options.id+"_headerCollapseBox","class":"toolbox"}).inject(this.panelHeaderEl);if(options.headerToolbox){this.panelHeaderCollapseBoxEl.addClass("divider")}this.collapseToggleEl=new Element("div",{id:options.id+"_collapseToggle","class":"panel-collapse icon16",styles:{width:16,height:16},title:"Collapse Panel"}).inject(this.panelHeaderCollapseBoxEl);this.collapseToggleEl.addEvent("click",function(event){var panel=this.panelEl;var panelWrapper=this.panelWrapperEl;var instances=MUI.Panels.instances;var expandedSiblings=[];panelWrapper.getAllPrevious(".panelWrapper").each(function(sibling){var instance=instances.get(sibling.getElement(".panel").id);if(instance.isCollapsed==false){expandedSiblings.push(sibling.getElement(".panel").id)}});panelWrapper.getAllNext(".panelWrapper").each(function(sibling){var instance=instances.get(sibling.getElement(".panel").id);if(instance.isCollapsed==false){expandedSiblings.push(sibling.getElement(".panel").id)}});if(this.isCollapsed==false){var currentColumn=MUI.Columns.instances.get($(options.column).id);if(expandedSiblings.length==0&¤tColumn.options.placement!="main"){var currentColumn=MUI.Columns.instances.get($(options.column).id);currentColumn.columnToggle();return}else{if(expandedSiblings.length==0&¤tColumn.options.placement=="main"){return}}this.oldHeight=panel.getStyle("height").toInt();if(this.oldHeight<10){this.oldHeight=20}this.contentEl.setStyle("position","absolute");panel.setStyle("height",0);this.isCollapsed=true;panelWrapper.addClass("collapsed");panelWrapper.removeClass("expanded");MUI.panelHeight(options.column,panel,"collapsing");MUI.panelHeight();this.collapseToggleEl.removeClass("panel-collapsed");this.collapseToggleEl.addClass("panel-expand");this.collapseToggleEl.setProperty("title","Expand Panel");this.fireEvent("onCollapse")}else{this.contentEl.setStyle("position",null);panel.setStyle("height",this.oldHeight);this.isCollapsed=false;panelWrapper.addClass("expanded");panelWrapper.removeClass("collapsed");MUI.panelHeight(this.options.column,panel,"expanding");MUI.panelHeight();this.collapseToggleEl.removeClass("panel-expand");this.collapseToggleEl.addClass("panel-collapsed");this.collapseToggleEl.setProperty("title","Collapse Panel");this.fireEvent("onExpand")}}.bind(this))}});MUI.Panel.implement(new Options,new Events);MUI.extend({panelHeight:function(column,changing,action){if(column!=null){MUI.panelHeight2($(column),changing,action)}else{$$(".column").each(function(column){MUI.panelHeight2(column)}.bind(this))}},panelHeight2:function(column,changing,action){var instances=MUI.Panels.instances;var parent=column.getParent();var columnHeight=parent.getStyle("height").toInt();if(Browser.Engine.trident4&&parent==MUI.Desktop.pageWrapper){columnHeight-=1}column.setStyle("height",columnHeight);var panels=[];column.getChildren(".panelWrapper").each(function(panelWrapper){panels.push(panelWrapper.getElement(".panel"))}.bind(this));var panelsExpanded=[];column.getChildren(".expanded").each(function(panelWrapper){panelsExpanded.push(panelWrapper.getElement(".panel"))}.bind(this));var panelsToResize=[];var tallestPanel;var tallestPanelHeight=0;this.panelsTotalHeight=0;this.height=0;panels.each(function(panel){instance=instances.get(panel.id);if(panel.getParent().hasClass("expanded")&&panel.getParent().getNext(".expanded")){instance.partner=panel.getParent().getNext(".expanded").getElement(".panel");instance.resize.attach();instance.handleEl.setStyles({display:"block",cursor:Browser.Engine.webkit?"row-resize":"n-resize"}).removeClass("detached")}else{instance.resize.detach();instance.handleEl.setStyles({display:"none",cursor:null}).addClass("detached")}if(panel.getParent().getNext(".panelWrapper")==null){instance.handleEl.hide()}}.bind(this));column.getChildren().each(function(panelWrapper){panelWrapper.getChildren().each(function(el){if(el.hasClass("panel")){var instance=instances.get(el.id);anyNextSiblingsExpanded=function(el){var test;el.getParent().getAllNext(".panelWrapper").each(function(sibling){var siblingInstance=instances.get(sibling.getElement(".panel").id);if(siblingInstance.isCollapsed==false){test=true}}.bind(this));return test}.bind(this);anyExpandingNextSiblingsExpanded=function(el){var test;changing.getParent().getAllNext(".panelWrapper").each(function(sibling){var siblingInstance=instances.get(sibling.getElement(".panel").id);if(siblingInstance.isCollapsed==false){test=true}}.bind(this));return test}.bind(this);anyNextContainsChanging=function(el){var allNext=[];el.getParent().getAllNext(".panelWrapper").each(function(panelWrapper){allNext.push(panelWrapper.getElement(".panel"))}.bind(this));var test=allNext.contains(changing);return test}.bind(this);nextExpandedChanging=function(el){var test;if(el.getParent().getNext(".expanded")){if(el.getParent().getNext(".expanded").getElement(".panel")==changing){test=true}}return test};if(action=="new"){if(!instance.isCollapsed&&el!=changing){panelsToResize.push(el);this.panelsTotalHeight+=el.offsetHeight.toInt()}}else{if(action==null||action=="collapsing"){if(!instance.isCollapsed&&(!anyNextContainsChanging(el)||!anyNextSiblingsExpanded(el))){panelsToResize.push(el);this.panelsTotalHeight+=el.offsetHeight.toInt()}}else{if(action=="expanding"&&!instance.isCollapsed&&el!=changing){if(!anyNextContainsChanging(el)||(!anyExpandingNextSiblingsExpanded(el)&&nextExpandedChanging(el))){panelsToResize.push(el);this.panelsTotalHeight+=el.offsetHeight.toInt()}}}}if(el.style.height){this.height+=el.getStyle("height").toInt()}}else{this.height+=el.offsetHeight.toInt()}}.bind(this))}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;this.height=0;column.getChildren().each(function(el){this.height+=el.offsetHeight.toInt()}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;panelsToResize.each(function(panel){var ratio=this.panelsTotalHeight/panel.offsetHeight.toInt();var newPanelHeight=panel.getStyle("height").toInt()+(remainingHeight/ratio);if(newPanelHeight<1){newPanelHeight=0}panel.setStyle("height",newPanelHeight)}.bind(this));this.height=0;column.getChildren().each(function(panelWrapper){panelWrapper.getChildren().each(function(el){this.height+=el.offsetHeight.toInt();if(el.hasClass("panel")&&el.getStyle("height").toInt()>tallestPanelHeight){tallestPanel=el;tallestPanelHeight=el.getStyle("height").toInt()}}.bind(this))}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;if(remainingHeight!=0&&tallestPanelHeight>0){tallestPanel.setStyle("height",tallestPanel.getStyle("height").toInt()+remainingHeight);if(tallestPanel.getStyle("height")<1){tallestPanel.setStyle("height",0)}}parent.getChildren(".columnHandle").each(function(handle){var parent=handle.getParent();if(parent.getStyle("height").toInt()<1){return}var handleHeight=parent.getStyle("height").toInt()-handle.getStyle("border-top").toInt()-handle.getStyle("border-bottom").toInt();if(Browser.Engine.trident4&&parent==MUI.Desktop.pageWrapper){handleHeight-=1}handle.setStyle("height",handleHeight)});panelsExpanded.each(function(panel){MUI.resizeChildren(panel)}.bind(this))},resizeChildren:function(panel){var instances=MUI.Panels.instances;var instance=instances.get(panel.id);var contentWrapperEl=instance.contentWrapperEl;if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyles({height:contentWrapperEl.getStyle("height"),width:contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt()})}else{instance.iframeEl.setStyles({height:contentWrapperEl.getStyle("height"),width:contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt()-1});instance.iframeEl.setStyles({width:contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt()})}}},rWidth:function(container){if(container==null){var container=MUI.Desktop.desktop}container.getElements(".rWidth").each(function(column){var currentWidth=column.offsetWidth.toInt();currentWidth-=column.getStyle("border-left").toInt();currentWidth-=column.getStyle("border-right").toInt();var parent=column.getParent();this.width=0;parent.getChildren().each(function(el){if(el.hasClass("mocha")!=true){this.width+=el.offsetWidth.toInt()}}.bind(this));var remainingWidth=parent.offsetWidth.toInt()-this.width;var newWidth=currentWidth+remainingWidth;if(newWidth<1){newWidth=0}column.setStyle("width",newWidth);column.getChildren(".panel").each(function(panel){panel.setStyle("width",newWidth-panel.getStyle("border-left").toInt()-panel.getStyle("border-right").toInt());MUI.resizeChildren(panel)}.bind(this))})}});function addResizeRight(element,min,max){if(!$(element)){return}element=$(element);var instances=MUI.Columns.instances;var instance=instances.get(element.id);var handle=element.getNext(".columnHandle");handle.setStyle("cursor",Browser.Engine.webkit?"col-resize":"e-resize");if(!min){min=50}if(!max){max=250}if(Browser.Engine.trident){handle.addEvents({mousedown:function(){handle.setCapture()},mouseup:function(){handle.releaseCapture()}})}instance.resize=element.makeResizable({handle:handle,modifiers:{x:"width",y:false},limit:{x:[min,max]},onStart:function(){element.getElements("iframe").setStyle("visibility","hidden");element.getNext(".column").getElements("iframe").setStyle("visibility","hidden")}.bind(this),onDrag:function(){if(Browser.Engine.gecko){$$(".panel").each(function(panel){if(panel.getElements(".mochaIframe").length==0){panel.hide()}})}MUI.rWidth(element.getParent());if(Browser.Engine.gecko){$$(".panel").show()}if(Browser.Engine.trident4){element.getChildren().each(function(el){var width=$(element).getStyle("width").toInt();width-=el.getStyle("border-right").toInt();width-=el.getStyle("border-left").toInt();width-=el.getStyle("padding-right").toInt();width-=el.getStyle("padding-left").toInt();el.setStyle("width",width)}.bind(this))}}.bind(this),onComplete:function(){MUI.rWidth(element.getParent());element.getElements("iframe").setStyle("visibility","visible");element.getNext(".column").getElements("iframe").setStyle("visibility","visible");instance.fireEvent("onResize")}.bind(this)})}function addResizeLeft(element,min,max){if(!$(element)){return}element=$(element);var instances=MUI.Columns.instances;var instance=instances.get(element.id);var handle=element.getPrevious(".columnHandle");handle.setStyle("cursor",Browser.Engine.webkit?"col-resize":"e-resize");var partner=element.getPrevious(".column");if(!min){min=50}if(!max){max=250}if(Browser.Engine.trident){handle.addEvents({mousedown:function(){handle.setCapture()},mouseup:function(){handle.releaseCapture()}})}instance.resize=element.makeResizable({handle:handle,modifiers:{x:"width",y:false},invert:true,limit:{x:[min,max]},onStart:function(){$(element).getElements("iframe").setStyle("visibility","hidden");partner.getElements("iframe").setStyle("visibility","hidden")}.bind(this),onDrag:function(){MUI.rWidth(element.getParent())}.bind(this),onComplete:function(){MUI.rWidth(element.getParent());$(element).getElements("iframe").setStyle("visibility","visible");partner.getElements("iframe").setStyle("visibility","visible");instance.fireEvent("onResize")}.bind(this)})}function addResizeBottom(element){if(!$(element)){return}var element=$(element);var instances=MUI.Panels.instances;var instance=instances.get(element.id);var handle=instance.handleEl;handle.setStyle("cursor",Browser.Engine.webkit?"row-resize":"n-resize");partner=instance.partner;min=0;max=function(){return element.getStyle("height").toInt()+partner.getStyle("height").toInt()}.bind(this);if(Browser.Engine.trident){handle.addEvents({mousedown:function(){handle.setCapture()},mouseup:function(){handle.releaseCapture()}})}instance.resize=element.makeResizable({handle:handle,modifiers:{x:false,y:"height"},limit:{y:[min,max]},invert:false,onBeforeStart:function(){partner=instance.partner;this.originalHeight=element.getStyle("height").toInt();this.partnerOriginalHeight=partner.getStyle("height").toInt()}.bind(this),onStart:function(){if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden");partner.getElements("iframe").setStyle("visibility","hidden")}else{instance.iframeEl.hide();partner.getElements("iframe").hide()}}}.bind(this),onDrag:function(){partnerHeight=partnerOriginalHeight;partnerHeight+=(this.originalHeight-element.getStyle("height").toInt());partner.setStyle("height",partnerHeight);MUI.resizeChildren(element,element.getStyle("height").toInt());MUI.resizeChildren(partner,partnerHeight);element.getChildren(".column").each(function(column){MUI.panelHeight(column)});partner.getChildren(".column").each(function(column){MUI.panelHeight(column)})}.bind(this),onComplete:function(){partnerHeight=partnerOriginalHeight;partnerHeight+=(this.originalHeight-element.getStyle("height").toInt());partner.setStyle("height",partnerHeight);MUI.resizeChildren(element,element.getStyle("height").toInt());MUI.resizeChildren(partner,partnerHeight);element.getChildren(".column").each(function(column){MUI.panelHeight(column)});partner.getChildren(".column").each(function(column){MUI.panelHeight(column)});if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","visible");partner.getElements("iframe").setStyle("visibility","visible")}else{instance.iframeEl.show();partner.getElements("iframe").show();var width=instance.iframeEl.getStyle("width").toInt();instance.iframeEl.setStyle("width",width-1);MUI.rWidth();instance.iframeEl.setStyle("width",width)}}instance.fireEvent("onResize")}.bind(this)})}MUI.extend({closeColumn:function(columnEl){columnEl=$(columnEl);if(columnEl==null){return}var instances=MUI.Columns.instances;var instance=instances.get(columnEl.id);if(instance==null||instance.isClosing){return}instance.isClosing=true;var panels=$(columnEl).getElements(".panel");panels.each(function(panel){MUI.closePanel(panel.id)}.bind(this));if(Browser.Engine.trident){columnEl.dispose();if(instance.handleEl!=null){instance.handleEl.dispose()}}else{columnEl.destroy();if(instance.handleEl!=null){instance.handleEl.destroy()}}if(MUI.Desktop){MUI.Desktop.resizePanels()}var sortables=instance.options.container.retrieve("sortables");if(sortables){sortables.removeLists(columnEl)}instances.erase(instance.options.id);return true},closePanel:function(panelEl){panelEl=$(panelEl);if(panelEl==null){return}var instances=MUI.Panels.instances;var instance=instances.get(panelEl.id);if(panelEl!=$(panelEl)||instance.isClosing){return}var column=instance.options.column;instance.isClosing=true;var columnInstances=MUI.Columns.instances;var columnInstance=columnInstances.get(column);if(columnInstance.options.sortable){columnInstance.options.container.retrieve("sortables").removeItems(instance.panelWrapperEl)}instance.panelWrapperEl.destroy();if(MUI.Desktop){MUI.Desktop.resizePanels()}var panels=$(column).getElements(".panelWrapper");panels.each(function(panelWrapper){panelWrapper.getElement(".panel").removeClass("bottomPanel")});if(panels.length>0){panels.getLast().getElement(".panel").addClass("bottomPanel")}instances.erase(instance.options.id);return true}});MUI.files[MUI.path.source+"Layout/Dock.js"]="loaded";MUI.options.extend({dockWrapper:"dockWrapper",dockVisible:"true",dock:"dock"});MUI.extend({minimizeAll:function(){$$(".mocha").each(function(windowEl){var instance=windowEl.retrieve("instance");if(!instance.isMinimized&&instance.options.minimizable==true){MUI.Dock.minimizeWindow(windowEl)}}.bind(this))}});MUI.Dock={options:{useControls:true,dockPosition:"bottom",dockVisible:true,trueButtonColor:[70,245,70],enabledButtonColor:[115,153,191],disabledButtonColor:[170,170,170]},initialize:function(options){if(!MUI.Desktop){return}MUI.dockVisible=this.options.dockVisible;this.dockWrapper=$(MUI.options.dockWrapper);this.dock=$(MUI.options.dock);this.autoHideEvent=null;this.dockAutoHide=false;if(!this.dockWrapper){return}if(!this.options.useControls){if($("dockPlacement")){$("dockPlacement").setStyle("cursor","default")}if($("dockAutoHide")){$("dockAutoHide").setStyle("cursor","default")}}this.dockWrapper.setStyles({display:"block",position:"absolute",top:null,bottom:MUI.Desktop.desktopFooter?MUI.Desktop.desktopFooter.offsetHeight:0,left:0});if(this.options.useControls){this.initializeDockControls()}if($("dockLinkCheck")){this.sidebarCheck=new Element("div",{"class":"check",id:"dock_check"}).inject($("dockLinkCheck"))}this.dockSortables=new Sortables("#dockSort",{opacity:1,constrain:true,clone:false,revert:false});if(!(MUI.dockVisible)){this.dockWrapper.hide()}MUI.Desktop.setDesktopSize();if(MUI.myChain){MUI.myChain.callChain()}},initializeDockControls:function(){this.setDockColors();if(this.options.useControls){var canvas=new Element("canvas",{id:"dockCanvas",width:"15",height:"18"}).inject(this.dock);if(Browser.Engine.trident&&MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(canvas)}}var dockPlacement=$("dockPlacement");var dockAutoHide=$("dockAutoHide");dockPlacement.setProperty("title","Position Dock Top");dockPlacement.addEvent("click",function(){this.moveDock()}.bind(this));dockAutoHide.setProperty("title","Turn Auto Hide On");dockAutoHide.addEvent("click",function(event){if(this.dockWrapper.getProperty("dockPosition")=="top"){return false}var ctx=$("dockCanvas").getContext("2d");this.dockAutoHide=!this.dockAutoHide;if(this.dockAutoHide){$("dockAutoHide").setProperty("title","Turn Auto Hide Off");MUI.circle(ctx,5,14,3,this.options.trueButtonColor,1);this.autoHideEvent=function(event){if(!this.dockAutoHide){return}if(!MUI.Desktop.desktopFooter){var dockHotspotHeight=this.dockWrapper.offsetHeight;if(dockHotspotHeight<25){dockHotspotHeight=25}}else{if(MUI.Desktop.desktopFooter){var dockHotspotHeight=this.dockWrapper.offsetHeight+MUI.Desktop.desktopFooter.offsetHeight;if(dockHotspotHeight<25){dockHotspotHeight=25}}}if(!MUI.Desktop.desktopFooter&&event.client.y>(document.getCoordinates().height-dockHotspotHeight)){if(!MUI.dockVisible){this.dockWrapper.show();MUI.dockVisible=true;MUI.Desktop.setDesktopSize()}}else{if(MUI.Desktop.desktopFooter&&event.client.y>(document.getCoordinates().height-dockHotspotHeight)){if(!MUI.dockVisible){this.dockWrapper.show();MUI.dockVisible=true;MUI.Desktop.setDesktopSize()}}else{if(MUI.dockVisible){this.dockWrapper.hide();MUI.dockVisible=false;MUI.Desktop.setDesktopSize()}}}}.bind(this);document.addEvent("mousemove",this.autoHideEvent)}else{$("dockAutoHide").setProperty("title","Turn Auto Hide On");MUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1);document.removeEvent("mousemove",this.autoHideEvent)}}.bind(this));this.renderDockControls();if(this.options.dockPosition=="top"){this.moveDock()}},setDockColors:function(){var dockButtonEnabled=MUI.getCSSRule(".dockButtonEnabled");if(dockButtonEnabled&&dockButtonEnabled.style.backgroundColor){this.options.enabledButtonColor=new Color(dockButtonEnabled.style.backgroundColor)}var dockButtonDisabled=MUI.getCSSRule(".dockButtonDisabled");if(dockButtonDisabled&&dockButtonDisabled.style.backgroundColor){this.options.disabledButtonColor=new Color(dockButtonDisabled.style.backgroundColor)}var trueButtonColor=MUI.getCSSRule(".dockButtonTrue");if(trueButtonColor&&trueButtonColor.style.backgroundColor){this.options.trueButtonColor=new Color(trueButtonColor.style.backgroundColor)}},renderDockControls:function(){var ctx=$("dockCanvas").getContext("2d");ctx.clearRect(0,0,100,100);MUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1);if(this.dockWrapper.getProperty("dockPosition")=="top"){MUI.circle(ctx,5,14,3,this.options.disabledButtonColor,1)}else{if(this.dockAutoHide){MUI.circle(ctx,5,14,3,this.options.trueButtonColor,1)}else{MUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1)}}},moveDock:function(){var ctx=$("dockCanvas").getContext("2d");if(this.dockWrapper.getStyle("position")!="relative"){this.dockWrapper.setStyles({position:"relative",bottom:null});this.dockWrapper.addClass("top");MUI.Desktop.setDesktopSize();this.dockWrapper.setProperty("dockPosition","top");ctx.clearRect(0,0,100,100);MUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1);MUI.circle(ctx,5,14,3,this.options.disabledButtonColor,1);$("dockPlacement").setProperty("title","Position Dock Bottom");$("dockAutoHide").setProperty("title","Auto Hide Disabled in Top Dock Position");this.dockAutoHide=false}else{this.dockWrapper.setStyles({position:"absolute",bottom:MUI.Desktop.desktopFooter?MUI.Desktop.desktopFooter.offsetHeight:0});this.dockWrapper.removeClass("top");MUI.Desktop.setDesktopSize();this.dockWrapper.setProperty("dockPosition","bottom");ctx.clearRect(0,0,100,100);MUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1);MUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1);$("dockPlacement").setProperty("title","Position Dock Top");$("dockAutoHide").setProperty("title","Turn Auto Hide On")}},createDockTab:function(windowEl){var instance=windowEl.retrieve("instance");var dockTab=new Element("div",{id:instance.options.id+"_dockTab","class":"dockTab",title:titleText}).inject($("dockClear"),"before");dockTab.addEvent("mousedown",function(e){new Event(e).stop();this.timeDown=$time()});dockTab.addEvent("mouseup",function(e){this.timeUp=$time();if((this.timeUp-this.timeDown)<275){if(MUI.Windows.windowsVisible==false){MUI.toggleWindowVisibility();if(instance.isMinimized==true){MUI.Dock.restoreMinimized.delay(25,MUI.Dock,windowEl)}else{MUI.focusWindow(windowEl)}return}if(instance.isMinimized==true){MUI.Dock.restoreMinimized.delay(25,MUI.Dock,windowEl)}else{if(instance.windowEl.hasClass("isFocused")&&instance.options.minimizable==true){MUI.Dock.minimizeWindow(windowEl)}else{MUI.focusWindow(windowEl)}var coordinates=document.getCoordinates();if(windowEl.getStyle("left").toInt()>coordinates.width||windowEl.getStyle("top").toInt()>coordinates.height){MUI.centerWindow(windowEl)}}}});this.dockSortables.addItems(dockTab);var titleText=instance.titleEl.innerHTML;var dockTabText=new Element("div",{id:instance.options.id+"_dockTabText","class":"dockText"}).set("html",titleText.substring(0,19)+(titleText.length>19?"...":"")).inject($(dockTab));if(instance.options.icon!=false){}MUI.Desktop.setDesktopSize()},makeActiveTab:function(){var windowEl=MUI.getWindowWithHighestZindex();var instance=windowEl.retrieve("instance");$$(".dockTab").removeClass("activeDockTab");if(instance.isMinimized!=true){instance.windowEl.addClass("isFocused");var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){currentButton.addClass("activeDockTab")}}else{instance.windowEl.removeClass("isFocused")}},minimizeWindow:function(windowEl){if(windowEl!=$(windowEl)){return}var instance=windowEl.retrieve("instance");instance.isMinimized=true;if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden")}else{instance.iframeEl.hide()}}instance.contentBorderEl.setStyle("visibility","hidden");if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.hide()}windowEl.setStyle("visibility","hidden");if(Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){instance.contentWrapperEl.setStyle("overflow","hidden")}}}MUI.Desktop.setDesktopSize();setTimeout(function(){windowEl.setStyle("zIndex",1);windowEl.removeClass("isFocused");this.makeActiveTab()}.bind(this),100);instance.fireEvent("onMinimize",windowEl)},restoreMinimized:function(windowEl){var instance=windowEl.retrieve("instance");if(instance.isMinimized==false){return}if(MUI.Windows.windowsVisible==false){MUI.toggleWindowVisibility()}MUI.Desktop.setDesktopSize();if(instance.options.scrollbars==true&&!instance.iframeEl){instance.contentWrapperEl.setStyle("overflow","auto")}if(instance.isCollapsed){MUI.collapseToggle(windowEl)}windowEl.setStyle("visibility","visible");instance.contentBorderEl.setStyle("visibility","visible");if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.show()}if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","visible")}else{instance.iframeEl.show()}}instance.isMinimized=false;MUI.focusWindow(windowEl);instance.fireEvent("onRestore",windowEl)},toggle:function(){if(!MochaUI.dockVisible){this.dockWrapper.show();MUI.dockVisible=true;MUI.Desktop.setDesktopSize()}else{this.dockWrapper.hide();MUI.dockVisible=false;MUI.Desktop.setDesktopSize()}}}; +var MUI=MochaUI=new Hash({version:"0.9.7",options:new Hash({theme:"default",advancedEffects:false,standardEffects:true}),path:{source:"scripts/source/",themes:"themes/",plugins:"plugins/"},themePath:function(){return MUI.path.themes+MUI.options.theme+"/"},files:new Hash()});MUI.files[MUI.path.source+"Core/Core.js"]="loaded";MUI.extend({Windows:{instances:new Hash()},ieSupport:"excanvas",updateContent:function(options){var options=$extend({element:null,childElement:null,method:null,data:null,title:null,content:null,loadMethod:null,url:null,scrollbars:null,padding:null,require:{},onContentLoaded:$empty},options);options.require=$extend({css:[],images:[],js:[],onload:null},options.require);var args={};if(!options.element){return}var element=options.element;if(MUI.Windows.instances.get(element.id)){args.recipient="window"}else{args.recipient="panel"}var instance=element.retrieve("instance");if(options.title){instance.titleEl.set("html",options.title)}var contentEl=instance.contentEl;args.contentContainer=options.childElement!=null?options.childElement:instance.contentEl;var contentWrapperEl=instance.contentWrapperEl;if(!options.loadMethod){if(!instance.options.loadMethod){if(!options.url){options.loadMethod="html"}else{options.loadMethod="xhr"}}else{options.loadMethod=instance.options.loadMethod}}var scrollbars=options.scrollbars||instance.options.scrollbars;if(args.contentContainer==instance.contentEl){contentWrapperEl.setStyles({overflow:scrollbars!=false&&options.loadMethod!="iframe"?"auto":"hidden"})}if(options.padding!=null){contentEl.setStyles({"padding-top":options.padding.top,"padding-bottom":options.padding.bottom,"padding-left":options.padding.left,"padding-right":options.padding.right})}if(args.contentContainer==contentEl){contentEl.empty().show();contentEl.getAllNext(".column").destroy();contentEl.getAllNext(".columnHandle").destroy()}args.onContentLoaded=function(){if(options.require.js.length||typeof options.require.onload=="function"){new MUI.Require({js:options.require.js,onload:function(){if(Browser.Engine.presto){options.require.onload.delay(100)}else{if (!$defined(options.require.onload)) return; options.require.onload()}(options.onContentLoaded&&options.onContentLoaded!=$empty)?options.onContentLoaded():instance.fireEvent("contentLoaded",element)}.bind(this)})}else{(options.onContentLoaded&&options.onContentLoaded!=$empty)?options.onContentLoaded():instance.fireEvent("contentLoaded",element)}};if(options.require.css.length||options.require.images.length){new MUI.Require({css:options.require.css,images:options.require.images,onload:function(){this.loadSelect(instance,options,args)}.bind(this)})}else{this.loadSelect(instance,options,args)}},loadSelect:function(instance,options,args){switch(options.loadMethod){case"xhr":this.updateContentXHR(instance,options,args);break;case"iframe":this.updateContentIframe(instance,options,args);break;case"json":this.updateContentJSON(instance,options,args);break;case"html":default:this.updateContentHTML(instance,options,args);break}},updateContentJSON:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;new Request({url:options.url,update:contentContainer,method:options.method!=null?options.method:"get",data:options.data!=null?new Hash(options.data).toQueryString():"",evalScripts:false,evalResponse:false,headers:{"Content-Type":"application/json"},onRequest:function(){if(args.recipient=="window"&&contentContainer==contentEl){instance.showSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").show()}}}.bind(this),onFailure:function(){if(contentContainer==contentEl){contentContainer.set("html","

          Error Loading XMLHttpRequest

          ");if(recipient=="window"){instance.hideSpinner()}else{if(recipient=="panel"&&$("spinner")){$("spinner").hide()}}}if(contentContainer==contentEl){contentContainer.set("html","

          Error Loading XMLHttpRequest

          ");if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}}.bind(this),onException:function(){}.bind(this),onSuccess:function(json){if(contentContainer==contentEl){if(contentContainer==contentEl){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}var json=JSON.decode(json);instance.fireEvent("loaded",$A([options.element,json,instance]))}}.bind(this),onComplete:function(){}.bind(this)}).get()},updateContentXHR:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;var onContentLoaded=args.onContentLoaded;new Request.HTML({url:options.url,update:contentContainer,method:options.method!=null?options.method:"get",data:options.data!=null?new Hash(options.data).toQueryString():"",evalScripts:instance.options.evalScripts,evalResponse:instance.options.evalResponse,onRequest:function(){if(args.recipient=="window"&&contentContainer==contentEl){instance.showSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").show()}}}.bind(this),onFailure:function(response){if(contentContainer==contentEl){var getTitle=new RegExp("[\n\rs]*(.*)[\n\rs]*","gmi");var error=getTitle.exec(response.responseText);if(!error){error="Unknown"}contentContainer.set("html","

          Error: "+error[1]+"

          ");if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}}.bind(this),onSuccess:function(){contentEl.addClass("pad");if(contentContainer==contentEl){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}Browser.Engine.trident4?onContentLoaded.delay(750):onContentLoaded()}.bind(this),onComplete:function(){}.bind(this)}).send()},updateContentIframe:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;var contentWrapperEl=instance.contentWrapperEl;var onContentLoaded=args.onContentLoaded;if(instance.options.contentURL==""||contentContainer!=contentEl){return}contentEl.removeClass("pad");contentEl.setStyle("padding","0px");instance.iframeEl=new Element("iframe",{id:instance.options.id+"_iframe",name:instance.options.id+"_iframe","class":"mochaIframe",src:options.url,marginwidth:0,marginheight:0,frameBorder:0,scrolling:"auto",styles:{height:contentWrapperEl.offsetHeight-contentWrapperEl.getStyle("border-top").toInt()-contentWrapperEl.getStyle("border-bottom").toInt(),width:instance.panelEl?contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt():"100%"}}).injectInside(contentEl);instance.iframeEl.addEvent("load",function(e){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").hide()}}Browser.Engine.trident4?onContentLoaded.delay(50):onContentLoaded()}.bind(this));if(args.recipient=="window"){instance.showSpinner()}else{if(args.recipient=="panel"&&contentContainer==contentEl&&$("spinner")){$("spinner").show()}}},updateContentHTML:function(instance,options,args){var contentEl=instance.contentEl;var contentContainer=args.contentContainer;var onContentLoaded=args.onContentLoaded;var elementTypes=new Array("element","textnode","whitespace","collection");contentEl.addClass("pad");if(elementTypes.contains($type(options.content))){options.content.inject(contentContainer)}else{contentContainer.set("html",options.content)}if(contentContainer==contentEl){if(args.recipient=="window"){instance.hideSpinner()}else{if(args.recipient=="panel"&&$("spinner")){$("spinner").hide()}}}Browser.Engine.trident4?onContentLoaded.delay(50):onContentLoaded()},reloadIframe:function(iframe){Browser.Engine.gecko?$(iframe).src=$(iframe).src:top.frames[iframe].location.reload(true)},roundedRect:function(ctx,x,y,width,height,radius,rgb,a){ctx.fillStyle="rgba("+rgb.join(",")+","+a+")";ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},triangle:function(ctx,x,y,width,height,rgb,a){ctx.beginPath();ctx.moveTo(x+width,y);ctx.lineTo(x,y+height);ctx.lineTo(x+width,y+height);ctx.closePath();ctx.fillStyle="rgba("+rgb.join(",")+","+a+")";ctx.fill()},circle:function(ctx,x,y,diameter,rgb,a){ctx.beginPath();ctx.arc(x,y,diameter,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgb.join(",")+","+a+")";ctx.fill()},notification:function(message){new MUI.Window({loadMethod:"html",closeAfter:1500,type:"notification",addClass:"notification",content:message,width:220,height:40,y:53,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5})},toggleAdvancedEffects:function(link){if(MUI.options.advancedEffects==false){MUI.options.advancedEffects=true;if(link){this.toggleAdvancedEffectsLink=new Element("div",{"class":"check",id:"toggleAdvancedEffects_check"}).inject(link)}}else{MUI.options.advancedEffects=false;if(this.toggleAdvancedEffectsLink){this.toggleAdvancedEffectsLink.destroy()}}},toggleStandardEffects:function(link){if(MUI.options.standardEffects==false){MUI.options.standardEffects=true;if(link){this.toggleStandardEffectsLink=new Element("div",{"class":"check",id:"toggleStandardEffects_check"}).inject(link)}}else{MUI.options.standardEffects=false;if(this.toggleStandardEffectsLink){this.toggleStandardEffectsLink.destroy()}}},underlayInitialize:function(){var windowUnderlay=new Element("div",{id:"windowUnderlay",styles:{height:parent.getCoordinates().height,opacity:0.01,display:"none"}}).inject(document.body)},setUnderlaySize:function(){$("windowUnderlay").setStyle("height",parent.getCoordinates().height)}});function fixPNG(myImage){if(Browser.Engine.trident4&&document.body.filters){var imgID=(myImage.id)?"id='"+myImage.id+"' ":"";var imgClass=(myImage.className)?"class='"+myImage.className+"' ":"";var imgTitle=(myImage.title)?"title='"+myImage.title+"' ":"title='"+myImage.alt+"' ";var imgStyle="display:inline-block;"+myImage.style.cssText;var strNewHTML="";myImage.outerHTML=strNewHTML}}document.addEvent("mousedown",function(event){MUI.blurAll.delay(50)});window.addEvent("domready",function(){MUI.underlayInitialize()});window.addEvent("resize",function(){if($("windowUnderlay")){MUI.setUnderlaySize()}else{MUI.underlayInitialize()}});Element.implement({hide:function(){this.setStyle("display","none");return this},show:function(){this.setStyle("display","block");return this}});Element.implement({shake:function(radius,duration){radius=radius||3;duration=duration||500;duration=(duration/50).toInt()-1;var parent=this.getParent();if(parent!=$(document.body)&&parent.getStyle("position")=="static"){parent.setStyle("position","relative")}var position=this.getStyle("position");if(position=="static"){this.setStyle("position","relative");position="relative"}if(Browser.Engine.trident){parent.setStyle("height",parent.getStyle("height"))}var coords=this.getPosition(parent);if(position=="relative"&&!Browser.Engine.presto){coords.x-=parent.getStyle("paddingLeft").toInt();coords.y-=parent.getStyle("paddingTop").toInt()}var morph=this.retrieve("morph");if(morph){morph.cancel();var oldOptions=morph.options}var morph=this.retrieve("morph",{duration:50,link:"chain"});for(var i=0;i]*>([\s\S]*?)<\/body>/i);text=(match)?match[1]:text;var container=new Element("div");return container.set("html",text)}});MUI.getCSSRule=function(selector){for(var ii=0;ii=200)&&(status<300))}});Browser.Request=function(){return $try(function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new XMLHttpRequest()})}}MUI.Require=new Class({Implements:[Options],options:{css:[],images:[],js:[],onload:$empty},initialize:function(options){this.setOptions(options);var options=this.options;this.assetsToLoad=options.css.length+options.images.length+options.js.length;this.assetsLoaded=0;var cssLoaded=0;if(options.css.length){options.css.each(function(sheet){this.getAsset(sheet,function(){if(cssLoaded==options.css.length-1){if(this.assetsLoaded==this.assetsToLoad-1){this.requireOnload()}else{this.assetsLoaded++;this.requireContinue.delay(50,this)}}else{cssLoaded++;this.assetsLoaded++}}.bind(this))}.bind(this))}else{if(!options.js.length&&!options.images.length){this.options.onload();return true}else{this.requireContinue.delay(50,this)}}},requireOnload:function(){this.assetsLoaded++;if(this.assetsLoaded==this.assetsToLoad){this.options.onload();return true}},requireContinue:function(){var options=this.options;if(options.images.length){options.images.each(function(image){this.getAsset(image,this.requireOnload.bind(this))}.bind(this))}if(options.js.length){options.js.each(function(script){this.getAsset(script,this.requireOnload.bind(this))}.bind(this))}},getAsset:function(source,onload){if(MUI.files[source]=="loaded"){if(typeof onload=="function"){onload()}return true}else{if(MUI.files[source]=="loading"){var tries=0;var checker=(function(){tries++;if(MUI.files[source]=="loading"&&tries<"100"){return}$clear(checker);if(typeof onload=="function"){onload()}}).periodical(50)}else{MUI.files[source]="loading";properties={onload:onload!="undefined"?onload:$empty};var oldonload=properties.onload;properties.onload=function(){MUI.files[source]="loaded";if(oldonload){oldonload()}}.bind(this);switch(source.match(/\.\w+$/)[0]){case".js":return Asset.javascript(source,properties);case".css":return Asset.css(source,properties);case".jpg":case".png":case".gif":return Asset.image(source,properties)}alert('The required file "'+source+'" could not be loaded')}}}});$extend(Asset,{javascript:function(source,properties){properties=$extend({onload:$empty,document:document,check:$lambda(true)},properties);if($(properties.id)){properties.onload();return $(properties.id)}var script=new Element("script",{src:source,type:"text/javascript"});var load=properties.onload.bind(script),check=properties.check,doc=properties.document;delete properties.onload;delete properties.check;delete properties.document;if(!Browser.Engine.webkit419&&!Browser.Engine.presto){script.addEvents({load:load,readystatechange:function(){if(Browser.Engine.trident&&["loaded","complete"].contains(this.readyState)){load()}}}).setProperties(properties)}else{var checker=(function(){if(!$try(check)){return}$clear(checker);Browser.Engine.presto?load.delay(500):load()}).periodical(50)}return script.inject(doc.head)},css:function(source,properties){properties=$extend({id:null,media:"screen",onload:$empty},properties);new Request({method:"get",url:source,onComplete:function(response){var newSheet=new Element("link",{id:properties.id,rel:"stylesheet",media:properties.media,type:"text/css",href:source}).inject(document.head);properties.onload()}.bind(this),onFailure:function(response){},onSuccess:function(){}.bind(this)}).send()}});MUI.extend({newWindowsFromHTML:function(arg){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Windows-from-html.js"],onload:function(){new MUI.newWindowsFromHTML(arg)}})},newWindowsFromJSON:function(arg){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Windows-from-json.js"],onload:function(){new MUI.newWindowsFromJSON(arg)}})},arrangeCascade:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Arrange-cascade.js"],onload:function(){new MUI.arrangeCascade()}})},arrangeTile:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Window/Arrange-tile.js"],onload:function(){new MUI.arrangeTile()}})},saveWorkspace:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Layout/Workspaces.js"],onload:function(){new MUI.saveWorkspace()}})},loadWorkspace:function(){new MUI.Require({js:[MUI.path.plugins+"mochaui/Layout/Workspaces.js"],onload:function(){new MUI.loadWorkspace()}})},Themes:{init:function(arg){new MUI.Require({js:[MUI.path.plugins+"mochaui/Utilities/Themes.js"],onload:function(){MUI.Themes.init(arg)}})}}});MUI.files[MUI.path.source+"Window/Window.js"]="loading";MUI.extend({Windows:{instances:new Hash(),indexLevel:100,windowIDCount:0,windowsVisible:true,focusingWindow:false}});MUI.Windows.windowOptions={id:null,title:"New Window",icon:false,type:"window",require:{css:[],images:[],js:[],onload:null},loadMethod:null,method:"get",contentURL:null,data:null,closeAfter:false,evalScripts:true,evalResponse:false,content:"Window content",toolbar:false,toolbarPosition:"top",toolbarHeight:29,toolbarURL:"pages/lipsum.html",toolbarData:null,toolbarContent:"",toolbarOnload:$empty,toolbar2:false,toolbar2Position:"bottom",toolbar2Height:29,toolbar2URL:"pages/lipsum.html",toolbar2Data:null,toolbar2Content:"",toolbar2Onload:$empty,container:null,restrict:true,shape:"box",collapsible:true,minimizable:true,maximizable:true,closable:true,storeOnClose:false,modalOverlayClose:true,draggable:null,draggableGrid:false,draggableLimit:false,draggableSnap:false,resizable:null,resizeLimit:{x:[250,2500],y:[125,2000]},addClass:"",width:300,height:125,headerHeight:25,footerHeight:25,cornerRadius:8,x:null,y:null,scrollbars:true,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5,shadowOffset:{x:0,y:1},controlsOffset:{right:6,top:6},useCanvas:true,useCanvasControls:true,useSpinner:true,headerStartColor:[250,250,250],headerStopColor:[229,229,229],bodyBgColor:[229,229,229],minimizeBgColor:[255,255,255],minimizeColor:[0,0,0],maximizeBgColor:[255,255,255],maximizeColor:[0,0,0],closeBgColor:[255,255,255],closeColor:[0,0,0],resizableColor:[254,254,254],onBeforeBuild:$empty,onContentLoaded:$empty,onFocus:$empty,onBlur:$empty,onResize:$empty,onMinimize:$empty,onMaximize:$empty,onRestore:$empty,onClose:$empty,onCloseComplete:$empty};MUI.Windows.windowOptionsOriginal=$merge(MUI.Windows.windowOptions);MUI.Window=new Class({Implements:[Events,Options],options:MUI.Windows.windowOptions,initialize:function(options){this.setOptions(options);var options=this.options;$extend(this,{mochaControlsWidth:0,minimizebuttonX:0,maximizebuttonX:0,closebuttonX:0,headerFooterShadow:options.headerHeight+options.footerHeight+(options.shadowBlur*2),oldTop:0,oldLeft:0,isMaximized:false,isMinimized:false,isCollapsed:false,timestamp:$time()});if(options.type!="window"){options.container=document.body;options.minimizable=false}if(!options.container){options.container=MUI.Desktop&&MUI.Desktop.desktop?MUI.Desktop.desktop:document.body}if(options.resizable==null){if(options.type!="window"||options.shape=="gauge"){options.resizable=false}else{options.resizable=true}}if(options.draggable==null){options.draggable=options.type!="window"?false:true}if(options.shape=="gauge"||options.type=="notification"){options.collapsible=false;options.maximizable=false;options.contentBgColor="transparent";options.scrollbars=false;options.footerHeight=0}if(options.type=="notification"){options.closable=false;options.headerHeight=0}if(MUI.Dock&&$(MUI.options.dock)){if(MUI.Dock.dock&&options.type!="modal"&&options.type!="modal2"){options.minimizable=options.minimizable}}else{options.minimizable=false}options.maximizable=MUI.Desktop&&MUI.Desktop.desktop&&options.maximizable&&options.type!="modal"&&options.type!="modal2";if(this.options.type=="modal2"){this.options.shadowBlur=0;this.options.shadowOffset={x:0,y:0};this.options.useSpinner=false;this.options.useCanvas=false;this.options.footerHeight=0;this.options.headerHeight=0}options.id=options.id||"win"+(++MUI.Windows.windowIDCount);this.windowEl=$(options.id);if(options.require.css.length||options.require.images.length){new MUI.Require({css:options.require.css,images:options.require.images,onload:function(){this.newWindow()}.bind(this)})}else{this.newWindow()}return this},saveValues:function(){var coordinates=this.windowEl.getCoordinates();this.options.x=coordinates.left.toInt();this.options.y=coordinates.top.toInt()},newWindow:function(properties){var instances=MUI.Windows.instances;var instanceID=MUI.Windows.instances.get(this.options.id);var options=this.options;if(instanceID){var instance=instanceID}if(this.windowEl&&!this.isClosing){if(instance.isMinimized){MUI.Dock.restoreMinimized(this.windowEl)}else{if(instance.isCollapsed){MUI.collapseToggle(this.windowEl);setTimeout(MUI.focusWindow.pass(this.windowEl,this),10)}else{if(this.windowEl.hasClass("windowClosed")){if(instance.check){instance.check.show()}this.windowEl.removeClass("windowClosed");this.windowEl.setStyle("opacity",0);this.windowEl.addClass("mocha");if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){currentButton.show()}MUI.Desktop.setDesktopSize()}instance.displayNewWindow()}else{var coordinates=document.getCoordinates();if(this.windowEl.getStyle("left").toInt()>coordinates.width||this.windowEl.getStyle("top").toInt()>coordinates.height){MUI.centerWindow(this.windowEl)}setTimeout(MUI.focusWindow.pass(this.windowEl,this),10);if(MUI.options.standardEffects==true){this.windowEl.shake()}}}}return}else{instances.set(options.id,this)}this.isClosing=false;this.fireEvent("onBeforeBuild");MUI.Windows.indexLevel++;this.windowEl=new Element("div",{"class":"mocha",id:options.id,styles:{position:"absolute",width:options.width,height:options.height,display:"block",opacity:0,zIndex:MUI.Windows.indexLevel+=2}});this.windowEl.store("instance",this);this.windowEl.addClass(options.addClass);if(options.type=="modal2"){this.windowEl.addClass("modal2")}if(Browser.Engine.trident&&options.shape=="gauge"){this.windowEl.setStyle("backgroundImage","url(../images/spacer.gif)")}if((this.options.type=="modal"||options.type=="modal2")&&Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){this.windowEl.setStyle("position","fixed")}}}if(options.loadMethod=="iframe"){options.padding={top:0,right:0,bottom:0,left:0}}this.insertWindowElements();this.titleEl.set("html",options.title);this.contentWrapperEl.setStyle("overflow","hidden");this.contentEl.setStyles({"padding-top":options.padding.top,"padding-bottom":options.padding.bottom,"padding-left":options.padding.left,"padding-right":options.padding.right});if(options.shape=="gauge"){if(options.useCanvasControls){this.canvasControlsEl.setStyle("visibility","hidden")}else{this.controlsEl.setStyle("visibility","hidden")}this.windowEl.addEvent("mouseover",function(){this.mouseover=true;var showControls=function(){if(this.mouseover!=false){if(options.useCanvasControls){this.canvasControlsEl.setStyle("visibility","visible")}else{this.controlsEl.setStyle("visibility","visible")}this.canvasHeaderEl.setStyle("visibility","visible");this.titleEl.show()}};showControls.delay(0,this)}.bind(this));this.windowEl.addEvent("mouseleave",function(){this.mouseover=false;if(this.options.useCanvasControls){this.canvasControlsEl.setStyle("visibility","hidden")}else{this.controlsEl.setStyle("visibility","hidden")}this.canvasHeaderEl.setStyle("visibility","hidden");this.titleEl.hide()}.bind(this))}this.windowEl.inject(options.container);this.setColors();if(options.type!="notification"){this.setMochaControlsWidth()}MUI.updateContent({element:this.windowEl,content:options.content,method:options.method,url:options.contentURL,data:options.data,onContentLoaded:null,require:{js:options.require.js,onload:options.require.onload}});if(this.options.toolbar==true){MUI.updateContent({element:this.windowEl,childElement:this.toolbarEl,content:options.toolbarContent,loadMethod:"xhr",method:options.method,url:options.toolbarURL,data:options.toolbarData,onContentLoaded:options.toolbarOnload})}if(this.options.toolbar2==true){MUI.updateContent({element:this.windowEl,childElement:this.toolbar2El,content:options.toolbar2Content,loadMethod:"xhr",method:options.method,url:options.toolbar2URL,data:options.toolbar2Data,onContentLoaded:options.toolbar2Onload})}this.drawWindow();this.attachDraggable();this.attachResizable();this.setupEvents();if(options.resizable){this.adjustHandles()}if(options.container==document.body||options.container==MUI.Desktop.desktop){var dimensions=window.getSize()}else{var dimensions=$(this.options.container).getSize()}var x,y;if(!options.y){if(MUI.Desktop&&MUI.Desktop.desktop){y=(dimensions.y*0.5)-(this.windowEl.offsetHeight*0.5);if(y<-options.shadowBlur){y=-options.shadowBlur}}else{y=window.getScroll().y+(window.getSize().y*0.5)-(this.windowEl.offsetHeight*0.5);if(y<-options.shadowBlur){y=-options.shadowBlur}}}else{y=options.y-options.shadowBlur}if(this.options.x==null){x=(dimensions.x*0.5)-(this.windowEl.offsetWidth*0.5);if(x<-options.shadowBlur){x=-options.shadowBlur}}else{x=options.x-options.shadowBlur}this.windowEl.setStyles({top:y,left:x});this.opacityMorph=new Fx.Morph(this.windowEl,{duration:350,transition:Fx.Transitions.Sine.easeInOut,onComplete:function(){if(Browser.Engine.trident){this.drawWindow()}}.bind(this)});this.displayNewWindow();this.morph=new Fx.Morph(this.windowEl,{duration:200});this.windowEl.store("morph",this.morph);this.resizeMorph=new Fx.Elements([this.contentWrapperEl,this.windowEl],{duration:400,transition:Fx.Transitions.Sine.easeInOut,onStart:function(){this.resizeAnimation=this.drawWindow.periodical(20,this)}.bind(this),onComplete:function(){$clear(this.resizeAnimation);this.drawWindow();if(this.iframeEl){this.iframeEl.setStyle("visibility","visible")}}.bind(this)});this.windowEl.store("resizeMorph",this.resizeMorph);if($(this.windowEl.id+"LinkCheck")){this.check=new Element("div",{"class":"check",id:this.options.id+"_check"}).inject(this.windowEl.id+"LinkCheck")}if(this.options.closeAfter!=false){MUI.closeWindow.delay(this.options.closeAfter,this,this.windowEl)}if(MUI.Dock&&$(MUI.options.dock)&&this.options.type=="window"){MUI.Dock.createDockTab(this.windowEl)}},displayNewWindow:function(){options=this.options;if(options.type=="modal"||options.type=="modal2"){MUI.currentModal=this.windowEl;if(Browser.Engine.trident4){$("modalFix").show()}$("modalOverlay").show();if(MUI.options.advancedEffects==false){$("modalOverlay").setStyle("opacity",0.6);this.windowEl.setStyles({zIndex:11000,opacity:1})}else{MUI.Modal.modalOverlayCloseMorph.cancel();MUI.Modal.modalOverlayOpenMorph.start({opacity:0.6});this.windowEl.setStyles({zIndex:11000});this.opacityMorph.start({opacity:1})}$$(".dockTab").removeClass("activeDockTab");$$(".mocha").removeClass("isFocused");this.windowEl.addClass("isFocused")}else{if(MUI.options.advancedEffects==false){this.windowEl.setStyle("opacity",1);setTimeout(MUI.focusWindow.pass(this.windowEl,this),10)}else{if(Browser.Engine.trident){this.drawWindow(false)}this.opacityMorph.start({opacity:1});setTimeout(MUI.focusWindow.pass(this.windowEl,this),10)}}},setupEvents:function(){var windowEl=this.windowEl;if(this.closeButtonEl){this.closeButtonEl.addEvent("click",function(e){new Event(e).stop();MUI.closeWindow(windowEl)}.bind(this))}if(this.options.type=="window"){windowEl.addEvent("mousedown",function(e){if(Browser.Engine.trident){new Event(e).stop()}MUI.focusWindow(windowEl);if(windowEl.getStyle("top").toInt()<-this.options.shadowBlur){windowEl.setStyle("top",-this.options.shadowBlur)}}.bind(this))}if(this.minimizeButtonEl){this.minimizeButtonEl.addEvent("click",function(e){new Event(e).stop();MUI.Dock.minimizeWindow(windowEl)}.bind(this))}if(this.maximizeButtonEl){this.maximizeButtonEl.addEvent("click",function(e){new Event(e).stop();if(this.isMaximized){MUI.Desktop.restoreWindow(windowEl)}else{MUI.Desktop.maximizeWindow(windowEl)}}.bind(this))}if(this.options.collapsible==true){this.titleEl.addEvent("selectstart",function(e){e=new Event(e).stop()}.bind(this));if(Browser.Engine.trident){this.titleBarEl.addEvent("mousedown",function(e){this.titleEl.setCapture()}.bind(this));this.titleBarEl.addEvent("mouseup",function(e){this.titleEl.releaseCapture()}.bind(this))}this.titleBarEl.addEvent("dblclick",function(e){e=new Event(e).stop();MUI.collapseToggle(this.windowEl)}.bind(this))}},attachDraggable:function(){var windowEl=this.windowEl;if(!this.options.draggable){return}this.windowDrag=new Drag.Move(windowEl,{handle:this.titleBarEl,container:this.options.restrict==true?$(this.options.container):false,grid:this.options.draggableGrid,limit:this.options.draggableLimit,snap:this.options.draggableSnap,onStart:function(){if(this.options.type!="modal"&&this.options.type!="modal2"){MUI.focusWindow(windowEl);$("windowUnderlay").show()}if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","hidden")}else{this.iframeEl.hide()}}}.bind(this),onComplete:function(){if(this.options.type!="modal"&&this.options.type!="modal2"){$("windowUnderlay").hide()}if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","visible")}else{this.iframeEl.show()}}this.saveValues()}.bind(this)})},attachResizable:function(){var windowEl=this.windowEl;if(!this.options.resizable){return}this.resizable1=this.windowEl.makeResizable({handle:[this.n,this.ne,this.nw],limit:{y:[function(){return this.windowEl.getStyle("top").toInt()+this.windowEl.getStyle("height").toInt()-this.options.resizeLimit.y[1]}.bind(this),function(){return this.windowEl.getStyle("top").toInt()+this.windowEl.getStyle("height").toInt()-this.options.resizeLimit.y[0]}.bind(this)]},modifiers:{x:false,y:"top"},onStart:function(){this.resizeOnStart();this.coords=this.contentWrapperEl.getCoordinates();this.y2=this.coords.top.toInt()+this.contentWrapperEl.offsetHeight}.bind(this),onDrag:function(){this.coords=this.contentWrapperEl.getCoordinates();this.contentWrapperEl.setStyle("height",this.y2-this.coords.top.toInt());this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable2=this.contentWrapperEl.makeResizable({handle:[this.e,this.ne],limit:{x:[this.options.resizeLimit.x[0]-(this.options.shadowBlur*2),this.options.resizeLimit.x[1]-(this.options.shadowBlur*2)]},modifiers:{x:"width",y:false},onStart:function(){this.resizeOnStart()}.bind(this),onDrag:function(){this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable3=this.contentWrapperEl.makeResizable({container:this.options.restrict==true?$(this.options.container):false,handle:this.se,limit:{x:[this.options.resizeLimit.x[0]-(this.options.shadowBlur*2),this.options.resizeLimit.x[1]-(this.options.shadowBlur*2)],y:[this.options.resizeLimit.y[0]-this.headerFooterShadow,this.options.resizeLimit.y[1]-this.headerFooterShadow]},modifiers:{x:"width",y:"height"},onStart:function(){this.resizeOnStart()}.bind(this),onDrag:function(){this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable4=this.contentWrapperEl.makeResizable({handle:[this.s,this.sw],limit:{y:[this.options.resizeLimit.y[0]-this.headerFooterShadow,this.options.resizeLimit.y[1]-this.headerFooterShadow]},modifiers:{x:false,y:"height"},onStart:function(){this.resizeOnStart()}.bind(this),onDrag:function(){this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)});this.resizable5=this.windowEl.makeResizable({handle:[this.w,this.sw,this.nw],limit:{x:[function(){return this.windowEl.getStyle("left").toInt()+this.windowEl.getStyle("width").toInt()-this.options.resizeLimit.x[1]}.bind(this),function(){return this.windowEl.getStyle("left").toInt()+this.windowEl.getStyle("width").toInt()-this.options.resizeLimit.x[0]}.bind(this)]},modifiers:{x:"left",y:false},onStart:function(){this.resizeOnStart();this.coords=this.contentWrapperEl.getCoordinates();this.x2=this.coords.left.toInt()+this.contentWrapperEl.offsetWidth}.bind(this),onDrag:function(){this.coords=this.contentWrapperEl.getCoordinates();this.contentWrapperEl.setStyle("width",this.x2-this.coords.left.toInt());this.resizeOnDrag()}.bind(this),onComplete:function(){this.resizeOnComplete()}.bind(this)})},resizeOnStart:function(){$("windowUnderlay").show();if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","hidden")}else{this.iframeEl.hide()}}},resizeOnDrag:function(){if(Browser.Engine.gecko){this.windowEl.getElements(".panel").each(function(panel){panel.store("oldOverflow",panel.getStyle("overflow"));panel.setStyle("overflow","visible")})}this.drawWindow();this.adjustHandles();if(Browser.Engine.gecko){this.windowEl.getElements(".panel").each(function(panel){panel.setStyle("overflow",panel.retrieve("oldOverflow"))})}},resizeOnComplete:function(){$("windowUnderlay").hide();if(this.iframeEl){if(!Browser.Engine.trident){this.iframeEl.setStyle("visibility","visible")}else{this.iframeEl.show();this.iframeEl.setStyle("width","99%");this.iframeEl.setStyle("height",this.contentWrapperEl.offsetHeight);this.iframeEl.setStyle("width","100%");this.iframeEl.setStyle("height",this.contentWrapperEl.offsetHeight)}}if(this.contentWrapperEl.getChildren(".column")!=null){MUI.rWidth(this.contentWrapperEl);this.contentWrapperEl.getChildren(".column").each(function(column){MUI.panelHeight(column)})}this.fireEvent("onResize",this.windowEl)},adjustHandles:function(){var shadowBlur=this.options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=this.options.shadowOffset;var top=shadowBlur-shadowOffset.y-1;var right=shadowBlur+shadowOffset.x-1;var bottom=shadowBlur+shadowOffset.y-1;var left=shadowBlur-shadowOffset.x-1;var coordinates=this.windowEl.getCoordinates();var width=coordinates.width-shadowBlur2x+2;var height=coordinates.height-shadowBlur2x+2;this.n.setStyles({top:top,left:left+10,width:width-20});this.e.setStyles({top:top+10,right:right,height:height-30});this.s.setStyles({bottom:bottom,left:left+10,width:width-30});this.w.setStyles({top:top+10,left:left,height:height-20});this.ne.setStyles({top:top,right:right});this.se.setStyles({bottom:bottom,right:right});this.sw.setStyles({bottom:bottom,left:left});this.nw.setStyles({top:top,left:left})},detachResizable:function(){this.resizable1.detach();this.resizable2.detach();this.resizable3.detach();this.resizable4.detach();this.resizable5.detach();this.windowEl.getElements(".handle").hide()},reattachResizable:function(){this.resizable1.attach();this.resizable2.attach();this.resizable3.attach();this.resizable4.attach();this.resizable5.attach();this.windowEl.getElements(".handle").show()},insertWindowElements:function(){var options=this.options;var height=options.height;var width=options.width;var id=options.id;var cache={};if(Browser.Engine.trident4){cache.zIndexFixEl=new Element("iframe",{id:id+"_zIndexFix","class":"zIndexFix",scrolling:"no",marginWidth:0,marginHeight:0,src:"",styles:{position:"absolute"}}).inject(this.windowEl)}cache.overlayEl=new Element("div",{id:id+"_overlay","class":"mochaOverlay",styles:{position:"absolute",top:0,left:0}}).inject(this.windowEl);cache.titleBarEl=new Element("div",{id:id+"_titleBar","class":"mochaTitlebar",styles:{cursor:options.draggable?"move":"default"}}).inject(cache.overlayEl,"top");cache.titleEl=new Element("h3",{id:id+"_title","class":"mochaTitle"}).inject(cache.titleBarEl);if(options.icon!=false){cache.titleEl.setStyles({"padding-left":28,background:"url("+options.icon+") 5px 4px no-repeat"})}cache.contentBorderEl=new Element("div",{id:id+"_contentBorder","class":"mochaContentBorder"}).inject(cache.overlayEl);if(options.toolbar){cache.toolbarWrapperEl=new Element("div",{id:id+"_toolbarWrapper","class":"mochaToolbarWrapper",styles:{height:options.toolbarHeight}}).inject(cache.contentBorderEl,options.toolbarPosition=="bottom"?"after":"before");if(options.toolbarPosition=="bottom"){cache.toolbarWrapperEl.addClass("bottom")}cache.toolbarEl=new Element("div",{id:id+"_toolbar","class":"mochaToolbar",styles:{height:options.toolbarHeight}}).inject(cache.toolbarWrapperEl)}if(options.toolbar2){cache.toolbar2WrapperEl=new Element("div",{id:id+"_toolbar2Wrapper","class":"mochaToolbarWrapper",styles:{height:options.toolbar2Height}}).inject(cache.contentBorderEl,options.toolbar2Position=="bottom"?"after":"before");if(options.toolbar2Position=="bottom"){cache.toolbar2WrapperEl.addClass("bottom")}cache.toolbar2El=new Element("div",{id:id+"_toolbar2","class":"mochaToolbar",styles:{height:options.toolbar2Height}}).inject(cache.toolbar2WrapperEl)}cache.contentWrapperEl=new Element("div",{id:id+"_contentWrapper","class":"mochaContentWrapper",styles:{width:width+"px",height:height+"px"}}).inject(cache.contentBorderEl);if(this.options.shape=="gauge"){cache.contentBorderEl.setStyle("borderWidth",0)}cache.contentEl=new Element("div",{id:id+"_content","class":"mochaContent"}).inject(cache.contentWrapperEl);if(this.options.useCanvas==true&&Browser.Engine.trident!=true){cache.canvasEl=new Element("canvas",{id:id+"_canvas","class":"mochaCanvas",width:10,height:10}).inject(this.windowEl)}if(this.options.useCanvas==true&&Browser.Engine.trident){cache.canvasEl=new Element("canvas",{id:id+"_canvas","class":"mochaCanvas",width:50000,height:20000,styles:{position:"absolute",top:0,left:0}}).inject(this.windowEl);if(MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(cache.canvasEl);cache.canvasEl=this.windowEl.getElement(".mochaCanvas")}}cache.controlsEl=new Element("div",{id:id+"_controls","class":"mochaControls"}).inject(cache.overlayEl,"after");if(options.useCanvasControls==true){cache.canvasControlsEl=new Element("canvas",{id:id+"_canvasControls","class":"mochaCanvasControls",width:14,height:14}).inject(this.windowEl);if(Browser.Engine.trident&&MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(cache.canvasControlsEl);cache.canvasControlsEl=this.windowEl.getElement(".mochaCanvasControls")}}if(options.closable){cache.closeButtonEl=new Element("div",{id:id+"_closeButton","class":"mochaCloseButton mochaWindowButton",title:"Close"}).inject(cache.controlsEl)}if(options.maximizable){cache.maximizeButtonEl=new Element("div",{id:id+"_maximizeButton","class":"mochaMaximizeButton mochaWindowButton",title:"Maximize"}).inject(cache.controlsEl)}if(options.minimizable){cache.minimizeButtonEl=new Element("div",{id:id+"_minimizeButton","class":"mochaMinimizeButton mochaWindowButton",title:"Minimize"}).inject(cache.controlsEl)}if(options.useSpinner==true&&options.shape!="gauge"&&options.type!="notification"){cache.spinnerEl=new Element("div",{id:id+"_spinner","class":"mochaSpinner",width:16,height:16}).inject(this.windowEl,"bottom")}if(this.options.shape=="gauge"){cache.canvasHeaderEl=new Element("canvas",{id:id+"_canvasHeader","class":"mochaCanvasHeader",width:this.options.width,height:26}).inject(this.windowEl,"bottom");if(Browser.Engine.trident&&MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(cache.canvasHeaderEl);cache.canvasHeaderEl=this.windowEl.getElement(".mochaCanvasHeader")}}if(Browser.Engine.trident){cache.overlayEl.setStyle("zIndex",2)}if(Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){cache.overlayEl.setStyle("overflow","auto")}}}if(options.resizable){cache.n=new Element("div",{id:id+"_resizeHandle_n","class":"handle",styles:{top:0,left:10,cursor:"n-resize"}}).inject(cache.overlayEl,"after");cache.ne=new Element("div",{id:id+"_resizeHandle_ne","class":"handle corner",styles:{top:0,right:0,cursor:"ne-resize"}}).inject(cache.overlayEl,"after");cache.e=new Element("div",{id:id+"_resizeHandle_e","class":"handle",styles:{top:10,right:0,cursor:"e-resize"}}).inject(cache.overlayEl,"after");cache.se=new Element("div",{id:id+"_resizeHandle_se","class":"handle cornerSE",styles:{bottom:0,right:0,cursor:"se-resize"}}).inject(cache.overlayEl,"after");cache.s=new Element("div",{id:id+"_resizeHandle_s","class":"handle",styles:{bottom:0,left:10,cursor:"s-resize"}}).inject(cache.overlayEl,"after");cache.sw=new Element("div",{id:id+"_resizeHandle_sw","class":"handle corner",styles:{bottom:0,left:0,cursor:"sw-resize"}}).inject(cache.overlayEl,"after");cache.w=new Element("div",{id:id+"_resizeHandle_w","class":"handle",styles:{top:10,left:0,cursor:"w-resize"}}).inject(cache.overlayEl,"after");cache.nw=new Element("div",{id:id+"_resizeHandle_nw","class":"handle corner",styles:{top:0,left:0,cursor:"nw-resize"}}).inject(cache.overlayEl,"after")}$extend(this,cache)},setColors:function(){if(this.options.useCanvas==true){var pattern=/\?(.*?)\)/;if(this.titleBarEl.getStyle("backgroundImage")!="none"){var gradient=this.titleBarEl.getStyle("backgroundImage");gradient=gradient.match(pattern)[1];gradient=gradient.parseQueryString();var gradientFrom=gradient.from;var gradientTo=gradient.to.replace(/\"/,"");this.options.headerStartColor=new Color(gradientFrom);this.options.headerStopColor=new Color(gradientTo);this.titleBarEl.addClass("replaced")}else{if(this.titleBarEl.getStyle("background-color")!==""&&this.titleBarEl.getStyle("background-color")!=="transparent"){this.options.headerStartColor=new Color(this.titleBarEl.getStyle("background-color")).mix("#fff",20);this.options.headerStopColor=new Color(this.titleBarEl.getStyle("background-color")).mix("#000",20);this.titleBarEl.addClass("replaced")}}if(this.windowEl.getStyle("background-color")!==""&&this.windowEl.getStyle("background-color")!=="transparent"){this.options.bodyBgColor=new Color(this.windowEl.getStyle("background-color"));this.windowEl.addClass("replaced")}if(this.options.resizable&&this.se.getStyle("background-color")!==""&&this.se.getStyle("background-color")!=="transparent"){this.options.resizableColor=new Color(this.se.getStyle("background-color"));this.se.addClass("replaced")}}if(this.options.useCanvasControls==true){if(this.minimizeButtonEl){if(this.minimizeButtonEl.getStyle("color")!==""&&this.minimizeButtonEl.getStyle("color")!=="transparent"){this.options.minimizeColor=new Color(this.minimizeButtonEl.getStyle("color"))}if(this.minimizeButtonEl.getStyle("background-color")!==""&&this.minimizeButtonEl.getStyle("background-color")!=="transparent"){this.options.minimizeBgColor=new Color(this.minimizeButtonEl.getStyle("background-color"));this.minimizeButtonEl.addClass("replaced")}}if(this.maximizeButtonEl){if(this.maximizeButtonEl.getStyle("color")!==""&&this.maximizeButtonEl.getStyle("color")!=="transparent"){this.options.maximizeColor=new Color(this.maximizeButtonEl.getStyle("color"))}if(this.maximizeButtonEl.getStyle("background-color")!==""&&this.maximizeButtonEl.getStyle("background-color")!=="transparent"){this.options.maximizeBgColor=new Color(this.maximizeButtonEl.getStyle("background-color"));this.maximizeButtonEl.addClass("replaced")}}if(this.closeButtonEl){if(this.closeButtonEl.getStyle("color")!==""&&this.closeButtonEl.getStyle("color")!=="transparent"){this.options.closeColor=new Color(this.closeButtonEl.getStyle("color"))}if(this.closeButtonEl.getStyle("background-color")!==""&&this.closeButtonEl.getStyle("background-color")!=="transparent"){this.options.closeBgColor=new Color(this.closeButtonEl.getStyle("background-color"));this.closeButtonEl.addClass("replaced")}}}},drawWindow:function(shadows){if(this.drawingWindow==true){return}this.drawingWindow=true;if(this.isCollapsed){this.drawWindowCollapsed(shadows);return}var windowEl=this.windowEl;var options=this.options;var shadowBlur=options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=this.options.shadowOffset;this.overlayEl.setStyles({width:this.contentWrapperEl.offsetWidth});if(this.iframeEl){this.iframeEl.setStyle("height",this.contentWrapperEl.offsetHeight)}var borderHeight=this.contentBorderEl.getStyle("border-top").toInt()+this.contentBorderEl.getStyle("border-bottom").toInt();var toolbarHeight=this.toolbarWrapperEl?this.toolbarWrapperEl.getStyle("height").toInt()+this.toolbarWrapperEl.getStyle("border-top").toInt():0;var toolbar2Height=this.toolbar2WrapperEl?this.toolbar2WrapperEl.getStyle("height").toInt()+this.toolbar2WrapperEl.getStyle("border-top").toInt():0;this.headerFooterShadow=options.headerHeight+options.footerHeight+shadowBlur2x;var height=this.contentWrapperEl.getStyle("height").toInt()+this.headerFooterShadow+toolbarHeight+toolbar2Height+borderHeight;var width=this.contentWrapperEl.getStyle("width").toInt()+shadowBlur2x;this.windowEl.setStyles({height:height,width:width});this.overlayEl.setStyles({height:height,top:shadowBlur-shadowOffset.y,left:shadowBlur-shadowOffset.x});if(this.options.useCanvas==true){if(Browser.Engine.trident){this.canvasEl.height=20000;this.canvasEl.width=50000}this.canvasEl.height=height;this.canvasEl.width=width}if(Browser.Engine.trident4){this.zIndexFixEl.setStyles({width:width,height:height})}this.titleBarEl.setStyles({width:width-shadowBlur2x,height:options.headerHeight});if(options.useSpinner==true&&options.shape!="gauge"&&options.type!="notification"){this.spinnerEl.setStyles({left:shadowBlur-shadowOffset.x+3,bottom:shadowBlur+shadowOffset.y+4})}if(this.options.useCanvas!=false){var ctx=this.canvasEl.getContext("2d");ctx.clearRect(0,0,width,height);switch(options.shape){case"box":this.drawBox(ctx,width,height,shadowBlur,shadowOffset,shadows);break;case"gauge":this.drawGauge(ctx,width,height,shadowBlur,shadowOffset,shadows);break}if(options.resizable){MUI.triangle(ctx,width-(shadowBlur+shadowOffset.x+17),height-(shadowBlur+shadowOffset.y+18),11,11,options.resizableColor,1)}if(Browser.Engine.trident){MUI.triangle(ctx,0,0,10,10,options.resizableColor,0)}}if(options.type!="notification"&&options.useCanvasControls==true){this.drawControls(width,height,shadows)}if(MUI.Desktop&&this.contentWrapperEl.getChildren(".column").length!=0){MUI.rWidth(this.contentWrapperEl);this.contentWrapperEl.getChildren(".column").each(function(column){MUI.panelHeight(column)})}this.drawingWindow=false;return this},drawWindowCollapsed:function(shadows){var windowEl=this.windowEl;var options=this.options;var shadowBlur=options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=options.shadowOffset;var headerShadow=options.headerHeight+shadowBlur2x+2;var height=headerShadow;var width=this.contentWrapperEl.getStyle("width").toInt()+shadowBlur2x;this.windowEl.setStyle("height",height);this.overlayEl.setStyles({height:height,top:shadowBlur-shadowOffset.y,left:shadowBlur-shadowOffset.x});if(Browser.Engine.trident4){this.zIndexFixEl.setStyles({width:width,height:height})}this.windowEl.setStyle("width",width);this.overlayEl.setStyle("width",width);this.titleBarEl.setStyles({width:width-shadowBlur2x,height:options.headerHeight});if(this.options.useCanvas!=false){this.canvasEl.height=height;this.canvasEl.width=width;var ctx=this.canvasEl.getContext("2d");ctx.clearRect(0,0,width,height);this.drawBoxCollapsed(ctx,width,height,shadowBlur,shadowOffset,shadows);if(options.useCanvasControls==true){this.drawControls(width,height,shadows)}if(Browser.Engine.trident){MUI.triangle(ctx,0,0,10,10,options.resizableColor,0)}}this.drawingWindow=false;return this},drawControls:function(width,height,shadows){var options=this.options;var shadowBlur=options.shadowBlur;var shadowOffset=options.shadowOffset;var controlsOffset=options.controlsOffset;this.controlsEl.setStyles({right:shadowBlur+shadowOffset.x+controlsOffset.right,top:shadowBlur-shadowOffset.y+controlsOffset.top});this.canvasControlsEl.setStyles({right:shadowBlur+shadowOffset.x+controlsOffset.right,top:shadowBlur-shadowOffset.y+controlsOffset.top});this.closebuttonX=options.closable?this.mochaControlsWidth-7:this.mochaControlsWidth+12;this.maximizebuttonX=this.closebuttonX-(options.maximizable?19:0);this.minimizebuttonX=this.maximizebuttonX-(options.minimizable?19:0);var ctx2=this.canvasControlsEl.getContext("2d");ctx2.clearRect(0,0,100,100);if(this.options.closable){this.closebutton(ctx2,this.closebuttonX,7,options.closeBgColor,1,options.closeColor,1)}if(this.options.maximizable){this.maximizebutton(ctx2,this.maximizebuttonX,7,options.maximizeBgColor,1,options.maximizeColor,1)}if(this.options.minimizable){this.minimizebutton(ctx2,this.minimizebuttonX,7,options.minimizeBgColor,1,options.minimizeColor,1)}if(Browser.Engine.trident){MUI.circle(ctx2,0,0,3,this.options.resizableColor,0)}},drawBox:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var shadowBlur2x=shadowBlur*2;var cornerRadius=this.options.cornerRadius;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MUI.roundedRect(ctx,shadowOffset.x+x,shadowOffset.y+x,width-(x*2)-shadowOffset.x,height-(x*2)-shadowOffset.y,cornerRadius+(shadowBlur-x),[0,0,0],x==shadowBlur?0.29:0.065+(x*0.01))}}this.bodyRoundedRect(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,height-shadowBlur2x,cornerRadius,options.bodyBgColor);if(this.options.type!="notification"){this.topRoundedRect(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,options.headerHeight,cornerRadius,options.headerStartColor,options.headerStopColor)}},drawBoxCollapsed:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var shadowBlur2x=shadowBlur*2;var cornerRadius=options.cornerRadius;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MUI.roundedRect(ctx,shadowOffset.x+x,shadowOffset.y+x,width-(x*2)-shadowOffset.x,height-(x*2)-shadowOffset.y,cornerRadius+(shadowBlur-x),[0,0,0],x==shadowBlur?0.3:0.06+(x*0.01))}}this.topRoundedRect2(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,options.headerHeight+2,cornerRadius,options.headerStartColor,options.headerStopColor)},drawGauge:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var radius=(width*0.5)-(shadowBlur)+16;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MUI.circle(ctx,width*0.5+shadowOffset.x,(height+options.headerHeight)*0.5+shadowOffset.x,(width*0.5)-(x*2)-shadowOffset.x,[0,0,0],x==shadowBlur?0.75:0.075+(x*0.04))}}MUI.circle(ctx,width*0.5-shadowOffset.x,(height+options.headerHeight)*0.5-shadowOffset.y,(width*0.5)-shadowBlur,options.bodyBgColor,1);this.canvasHeaderEl.setStyles({top:shadowBlur-shadowOffset.y,left:shadowBlur-shadowOffset.x});var ctx=this.canvasHeaderEl.getContext("2d");ctx.clearRect(0,0,width,100);ctx.beginPath();ctx.lineWidth=24;ctx.lineCap="round";ctx.moveTo(13,13);ctx.lineTo(width-(shadowBlur*2)-13,13);ctx.strokeStyle="rgba(0, 0, 0, .65)";ctx.stroke()},bodyRoundedRect:function(ctx,x,y,width,height,radius,rgb){ctx.fillStyle="rgba("+rgb.join(",")+", 1)";ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},topRoundedRect:function(ctx,x,y,width,height,radius,headerStartColor,headerStopColor){var lingrad=ctx.createLinearGradient(0,0,0,height);lingrad.addColorStop(0,"rgb("+headerStartColor.join(",")+")");lingrad.addColorStop(1,"rgb("+headerStopColor.join(",")+")");ctx.fillStyle=lingrad;ctx.beginPath();ctx.moveTo(x,y);ctx.lineTo(x,y+height);ctx.lineTo(x+width,y+height);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},topRoundedRect2:function(ctx,x,y,width,height,radius,headerStartColor,headerStopColor){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){ctx.fillStyle="rgba("+headerStopColor.join(",")+", 1)"}else{var lingrad=ctx.createLinearGradient(0,this.options.shadowBlur-1,0,height+this.options.shadowBlur+3);lingrad.addColorStop(0,"rgb("+headerStartColor.join(",")+")");lingrad.addColorStop(1,"rgb("+headerStopColor.join(",")+")");ctx.fillStyle=lingrad}ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill()},maximizebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgbBg.join(",")+","+aBg+")";ctx.fill();ctx.strokeStyle="rgba("+rgb.join(",")+","+a+")";ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(x,y-3.5);ctx.lineTo(x,y+3.5);ctx.moveTo(x-3.5,y);ctx.lineTo(x+3.5,y);ctx.stroke()},closebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgbBg.join(",")+","+aBg+")";ctx.fill();ctx.strokeStyle="rgba("+rgb.join(",")+","+a+")";ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(x-3,y-3);ctx.lineTo(x+3,y+3);ctx.moveTo(x+3,y-3);ctx.lineTo(x-3,y+3);ctx.stroke()},minimizebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle="rgba("+rgbBg.join(",")+","+aBg+")";ctx.fill();ctx.strokeStyle="rgba("+rgb.join(",")+","+a+")";ctx.lineWidth=2;ctx.beginPath();ctx.moveTo(x-3.5,y);ctx.lineTo(x+3.5,y);ctx.stroke()},setMochaControlsWidth:function(){this.mochaControlsWidth=0;var options=this.options;if(options.minimizable){this.mochaControlsWidth+=(this.minimizeButtonEl.getStyle("margin-left").toInt()+this.minimizeButtonEl.getStyle("width").toInt())}if(options.maximizable){this.mochaControlsWidth+=(this.maximizeButtonEl.getStyle("margin-left").toInt()+this.maximizeButtonEl.getStyle("width").toInt())}if(options.closable){this.mochaControlsWidth+=(this.closeButtonEl.getStyle("margin-left").toInt()+this.closeButtonEl.getStyle("width").toInt())}this.controlsEl.setStyle("width",this.mochaControlsWidth);if(options.useCanvasControls==true){this.canvasControlsEl.setProperty("width",this.mochaControlsWidth)}},hideSpinner:function(){if(this.spinnerEl){this.spinnerEl.hide()}return this},showSpinner:function(){if(this.spinnerEl){this.spinnerEl.show()}return this},close:function(){if(!this.isClosing){MUI.closeWindow(this.windowEl)}return this},minimize:function(){MUI.Dock.minimizeWindow(this.windowEl);return this},maximize:function(){if(this.isMinimized){MUI.Dock.restoreMinimized(this.windowEl)}MUI.Desktop.maximizeWindow(this.windowEl);return this},restore:function(){if(this.isMinimized){MUI.Dock.restoreMinimized(this.windowEl)}else{if(this.isMaximized){MUI.Desktop.restoreWindow(this.windowEl)}}return this},resize:function(options){MUI.resizeWindow(this.windowEl,options);return this},center:function(){MUI.centerWindow(this.windowEl);return this},hide:function(){this.windowEl.setStyle("display","none");return this},show:function(){this.windowEl.setStyle("display","block");return this}});MUI.extend({closeWindow:function(windowEl){var instance=windowEl.retrieve("instance");if(windowEl!=$(windowEl)||instance.isClosing){return}instance.isClosing=true;instance.fireEvent("onClose",windowEl);if(instance.options.storeOnClose){this.storeOnClose(instance,windowEl);return}if(instance.check){instance.check.destroy()}if((instance.options.type=="modal"||instance.options.type=="modal2")&&Browser.Engine.trident4){$("modalFix").hide()}if(MUI.options.advancedEffects==false){if(instance.options.type=="modal"||instance.options.type=="modal2"){$("modalOverlay").setStyle("opacity",0)}MUI.closingJobs(windowEl);return true}else{if(Browser.Engine.trident){instance.drawWindow(false)}if(instance.options.type=="modal"||instance.options.type=="modal2"){MUI.Modal.modalOverlayCloseMorph.start({opacity:0})}var closeMorph=new Fx.Morph(windowEl,{duration:120,onComplete:function(){MUI.closingJobs(windowEl);return true}.bind(this)});closeMorph.start({opacity:0.4})}},closingJobs:function(windowEl){var instances=MUI.Windows.instances;var instance=instances.get(windowEl.id);windowEl.setStyle("visibility","hidden");if(Browser.Engine.trident){windowEl.dispose()}else{windowEl.destroy()}instance.fireEvent("onCloseComplete");if(instance.options.type!="notification"){var newFocus=this.getWindowWithHighestZindex();this.focusWindow(newFocus)}instances.erase(instance.options.id);if(this.loadingWorkspace==true){this.windowUnload()}if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){MUI.Dock.dockSortables.removeItems(currentButton).destroy()}MUI.Desktop.setDesktopSize()}},storeOnClose:function(instance,windowEl){if(instance.check){instance.check.hide()}windowEl.setStyles({zIndex:-1});windowEl.addClass("windowClosed");windowEl.removeClass("mocha");if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){currentButton.hide()}MUI.Desktop.setDesktopSize()}instance.fireEvent("onCloseComplete");if(instance.options.type!="notification"){var newFocus=this.getWindowWithHighestZindex();this.focusWindow(newFocus)}instance.isClosing=false},closeAll:function(){$$(".mocha").each(function(windowEl){this.closeWindow(windowEl)}.bind(this))},collapseToggle:function(windowEl){var instance=windowEl.retrieve("instance");var handles=windowEl.getElements(".handle");if(instance.isMaximized==true){return}if(instance.isCollapsed==false){instance.isCollapsed=true;handles.hide();if(instance.iframeEl){instance.iframeEl.setStyle("visibility","hidden")}instance.contentBorderEl.setStyles({visibility:"hidden",position:"absolute",top:-10000,left:-10000});if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.setStyles({visibility:"hidden",position:"absolute",top:-10000,left:-10000})}instance.drawWindowCollapsed()}else{instance.isCollapsed=false;instance.drawWindow();instance.contentBorderEl.setStyles({visibility:"visible",position:null,top:null,left:null});if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.setStyles({visibility:"visible",position:null,top:null,left:null})}if(instance.iframeEl){instance.iframeEl.setStyle("visibility","visible")}handles.show()}},toggleWindowVisibility:function(){MUI.Windows.instances.each(function(instance){if(instance.options.type=="modal"||instance.options.type=="modal2"||instance.isMinimized==true){return}var id=$(instance.options.id);if(id.getStyle("visibility")=="visible"){if(instance.iframe){instance.iframeEl.setStyle("visibility","hidden")}if(instance.toolbarEl){instance.toolbarWrapperEl.setStyle("visibility","hidden")}instance.contentBorderEl.setStyle("visibility","hidden");id.setStyle("visibility","hidden");MUI.Windows.windowsVisible=false}else{id.setStyle("visibility","visible");instance.contentBorderEl.setStyle("visibility","visible");if(instance.iframe){instance.iframeEl.setStyle("visibility","visible")}if(instance.toolbarEl){instance.toolbarWrapperEl.setStyle("visibility","visible")}MUI.Windows.windowsVisible=true}}.bind(this))},focusWindow:function(windowEl,fireEvent){MUI.Windows.focusingWindow=true;var windowClicked=function(){MUI.Windows.focusingWindow=false};windowClicked.delay(170,this);if($$(".mocha").length==0){return}if(windowEl!=$(windowEl)||windowEl.hasClass("isFocused")){return}var instances=MUI.Windows.instances;var instance=instances.get(windowEl.id);if(instance.options.type=="notification"){windowEl.setStyle("zIndex",11001);return}MUI.Windows.indexLevel+=2;windowEl.setStyle("zIndex",MUI.Windows.indexLevel);$("windowUnderlay").setStyle("zIndex",MUI.Windows.indexLevel-1).inject($(windowEl),"after");instances.each(function(instance){if(instance.windowEl.hasClass("isFocused")){instance.fireEvent("onBlur",instance.windowEl)}instance.windowEl.removeClass("isFocused")});if(MUI.Dock&&$(MUI.options.dock)&&instance.options.type=="window"){MUI.Dock.makeActiveTab()}windowEl.addClass("isFocused");if(fireEvent!=false){instance.fireEvent("onFocus",windowEl)}},getWindowWithHighestZindex:function(){this.highestZindex=0;$$(".mocha").each(function(element){this.zIndex=element.getStyle("zIndex");if(this.zIndex>=this.highestZindex){this.highestZindex=this.zIndex}}.bind(this));$$(".mocha").each(function(element){if(element.getStyle("zIndex")==this.highestZindex){this.windowWithHighestZindex=element}}.bind(this));return this.windowWithHighestZindex},blurAll:function(){if(MUI.Windows.focusingWindow==false){$$(".mocha").each(function(windowEl){var instance=windowEl.retrieve("instance");if(instance.options.type!="modal"&&instance.options.type!="modal2"){windowEl.removeClass("isFocused")}});$$(".dockTab").removeClass("activeDockTab")}},centerWindow:function(windowEl){if(!windowEl){MUI.Windows.instances.each(function(instance){if(instance.windowEl.hasClass("isFocused")){windowEl=instance.windowEl}})}var instance=windowEl.retrieve("instance");var options=instance.options;var dimensions=options.container.getCoordinates();var windowPosTop=window.getScroll().y+(window.getSize().y*0.5)-(windowEl.offsetHeight*0.5);if(windowPosTop<-instance.options.shadowBlur){windowPosTop=-instance.options.shadowBlur}var windowPosLeft=(dimensions.width*0.5)-(windowEl.offsetWidth*0.5);if(windowPosLeft<-instance.options.shadowBlur){windowPosLeft=-instance.options.shadowBlur}if(MUI.options.advancedEffects==true){instance.morph.start({top:windowPosTop,left:windowPosLeft})}else{windowEl.setStyles({top:windowPosTop,left:windowPosLeft})}},resizeWindow:function(windowEl,options){var instance=windowEl.retrieve("instance");$extend({width:null,height:null,top:null,left:null,centered:true},options);var oldWidth=windowEl.getStyle("width").toInt();var oldHeight=windowEl.getStyle("height").toInt();var oldTop=windowEl.getStyle("top").toInt();var oldLeft=windowEl.getStyle("left").toInt();if(options.centered){var top=typeof(options.top)!="undefined"?options.top:oldTop-((options.height-oldHeight)*0.5);var left=typeof(options.left)!="undefined"?options.left:oldLeft-((options.width-oldWidth)*0.5)}else{var top=typeof(options.top)!="undefined"?options.top:oldTop;var left=typeof(options.left)!="undefined"?options.left:oldLeft}if(MUI.options.advancedEffects==false){windowEl.setStyles({top:top,left:left});instance.contentWrapperEl.setStyles({height:options.height,width:options.width});instance.drawWindow();if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","visible")}else{instance.iframeEl.show()}}}else{windowEl.retrieve("resizeMorph").start({"0":{height:options.height,width:options.width},"1":{top:top,left:left}})}return instance},dynamicResize:function(windowEl){var instance=windowEl.retrieve("instance");var contentWrapperEl=instance.contentWrapperEl;var contentEl=instance.contentEl;contentWrapperEl.setStyles({height:contentEl.offsetHeight,width:contentEl.offsetWidth});instance.drawWindow()}});document.addEvent("keydown",function(event){if(event.key=="q"&&event.control&&event.alt){MUI.toggleWindowVisibility()}});MUI.files[MUI.path.source+"Window/Modal.js"]="loaded";MUI.Modal=new Class({Extends:MUI.Window,options:{type:"modal"},initialize:function(options){if(!$("modalOverlay")){this.modalInitialize();window.addEvent("resize",function(){this.setModalSize()}.bind(this))}this.parent(options)},modalInitialize:function(){var modalOverlay=new Element("div",{id:"modalOverlay",styles:{height:document.getCoordinates().height,opacity:0.6}}).inject(document.body);modalOverlay.setStyles({position:Browser.Engine.trident4?"absolute":"fixed"});modalOverlay.addEvent("click",function(e){var instance=MUI.Windows.instances.get(MUI.currentModal.id);if(instance.options.modalOverlayClose==true){MUI.closeWindow(MUI.currentModal)}});if(Browser.Engine.trident4){var modalFix=new Element("iframe",{id:"modalFix",scrolling:"no",marginWidth:0,marginHeight:0,src:"",styles:{height:document.getCoordinates().height}}).inject(document.body)}MUI.Modal.modalOverlayOpenMorph=new Fx.Morph($("modalOverlay"),{duration:150});MUI.Modal.modalOverlayCloseMorph=new Fx.Morph($("modalOverlay"),{duration:150,onComplete:function(){$("modalOverlay").hide();if(Browser.Engine.trident4){$("modalFix").hide()}}.bind(this)})},setModalSize:function(){$("modalOverlay").setStyle("height",document.getCoordinates().height);if(Browser.Engine.trident4){$("modalFix").setStyle("height",document.getCoordinates().height)}}});MUI.extend({initializeTabs:function(el,target){$(el).setStyle("list-style","none");$(el).getElements("li").each(function(listitem){var link=listitem.getFirst("a").addEvent("click",function(e){e.preventDefault()});listitem.addEvent("click",function(e){MUI.updateContent({element:$(target),url:link.get("href")});MUI.selected(this,el)})})},selected:function(el,parent){$(parent).getChildren().each(function(listitem){listitem.removeClass("selected")});el.addClass("selected")}});MUI.files[MUI.path.source+"Layout/Layout.js"]="loaded";MUI.extend({Columns:{instances:new Hash(),columnIDCount:0},Panels:{instances:new Hash(),panelIDCount:0}});MUI.Desktop={options:{desktop:"desktop",desktopHeader:"desktopHeader",desktopFooter:"desktopFooter",desktopNavBar:"desktopNavbar",pageWrapper:"pageWrapper",page:"page",desktopFooter:"desktopFooterWrapper"},initialize:function(){this.desktop=$(this.options.desktop);this.desktopHeader=$(this.options.desktopHeader);this.desktopNavBar=$(this.options.desktopNavBar);this.pageWrapper=$(this.options.pageWrapper);this.page=$(this.options.page);this.desktopFooter=$(this.options.desktopFooter);if(this.desktop){($$("body")).setStyles({overflow:"hidden",height:"100%",margin:0});($$("html")).setStyles({overflow:"hidden",height:"100%"})}if(!MUI.Dock){this.setDesktopSize()}this.menuInitialize();window.addEvent("resize",function(e){this.onBrowserResize()}.bind(this));if(MUI.myChain){MUI.myChain.callChain()}},menuInitialize:function(){if(Browser.Engine.trident4&&this.desktopNavBar){this.desktopNavBar.getElements("li").each(function(element){element.addEvent("mouseenter",function(){this.addClass("ieHover")});element.addEvent("mouseleave",function(){this.removeClass("ieHover")})})}},onBrowserResize:function(){this.setDesktopSize();setTimeout(function(){MUI.Windows.instances.each(function(instance){if(instance.isMaximized){if(instance.iframeEl){instance.iframeEl.setStyle("visibility","hidden")}var coordinates=document.getCoordinates();var borderHeight=instance.contentBorderEl.getStyle("border-top").toInt()+instance.contentBorderEl.getStyle("border-bottom").toInt();var toolbarHeight=instance.toolbarWrapperEl?instance.toolbarWrapperEl.getStyle("height").toInt()+instance.toolbarWrapperEl.getStyle("border-top").toInt():0;instance.contentWrapperEl.setStyles({height:coordinates.height-instance.options.headerHeight-instance.options.footerHeight-borderHeight-toolbarHeight,width:coordinates.width});instance.drawWindow();if(instance.iframeEl){instance.iframeEl.setStyles({height:instance.contentWrapperEl.getStyle("height")});instance.iframeEl.setStyle("visibility","visible")}}}.bind(this))}.bind(this),100)},setDesktopSize:function(){var windowDimensions=window.getCoordinates();var dockWrapper=$(MUI.options.dockWrapper);if(this.desktop){this.desktop.setStyle("height",windowDimensions.height)}if(this.pageWrapper){var dockOffset=MUI.dockVisible?dockWrapper.offsetHeight:0;var pageWrapperHeight=windowDimensions.height;pageWrapperHeight-=this.pageWrapper.getStyle("border-top").toInt();pageWrapperHeight-=this.pageWrapper.getStyle("border-bottom").toInt();if(this.desktopHeader){pageWrapperHeight-=this.desktopHeader.offsetHeight}if(this.desktopFooter){pageWrapperHeight-=this.desktopFooter.offsetHeight}pageWrapperHeight-=dockOffset;if(pageWrapperHeight<0){pageWrapperHeight=0}this.pageWrapper.setStyle("height",pageWrapperHeight)}if(MUI.Columns.instances.getKeys().length>0){MUI.Desktop.resizePanels()}},resizePanels:function(){MUI.panelHeight();MUI.rWidth()},maximizeWindow:function(windowEl){var instance=MUI.Windows.instances.get(windowEl.id);var options=instance.options;var windowDrag=instance.windowDrag;if(windowEl!=$(windowEl)||instance.isMaximized){return}if(instance.isCollapsed){MUI.collapseToggle(windowEl)}instance.isMaximized=true;if(instance.options.restrict){windowDrag.detach();if(options.resizable){instance.detachResizable()}instance.titleBarEl.setStyle("cursor","default")}if(options.container!=this.desktop){this.desktop.grab(windowEl);if(this.options.restrict){windowDrag.container=this.desktop}}instance.oldTop=windowEl.getStyle("top");instance.oldLeft=windowEl.getStyle("left");var contentWrapperEl=instance.contentWrapperEl;contentWrapperEl.oldWidth=contentWrapperEl.getStyle("width");contentWrapperEl.oldHeight=contentWrapperEl.getStyle("height");if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden")}else{instance.iframeEl.hide()}}var windowDimensions=document.getCoordinates();var options=instance.options;var shadowBlur=options.shadowBlur;var shadowOffset=options.shadowOffset;var newHeight=windowDimensions.height-options.headerHeight-options.footerHeight;newHeight-=instance.contentBorderEl.getStyle("border-top").toInt();newHeight-=instance.contentBorderEl.getStyle("border-bottom").toInt();newHeight-=(instance.toolbarWrapperEl?instance.toolbarWrapperEl.getStyle("height").toInt()+instance.toolbarWrapperEl.getStyle("border-top").toInt():0);MUI.resizeWindow(windowEl,{width:windowDimensions.width,height:newHeight,top:shadowOffset.y-shadowBlur,left:shadowOffset.x-shadowBlur});instance.fireEvent("onMaximize",windowEl);if(instance.maximizeButtonEl){instance.maximizeButtonEl.setProperty("title","Restore")}MUI.focusWindow(windowEl)},restoreWindow:function(windowEl){var instance=windowEl.retrieve("instance");if(windowEl!=$(windowEl)||!instance.isMaximized){return}var options=instance.options;instance.isMaximized=false;if(options.restrict){instance.windowDrag.attach();if(options.resizable){instance.reattachResizable()}instance.titleBarEl.setStyle("cursor","move")}if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden")}else{instance.iframeEl.hide()}}var contentWrapperEl=instance.contentWrapperEl;MUI.resizeWindow(windowEl,{width:contentWrapperEl.oldWidth,height:contentWrapperEl.oldHeight,top:instance.oldTop,left:instance.oldLeft});instance.fireEvent("onRestore",windowEl);if(instance.maximizeButtonEl){instance.maximizeButtonEl.setProperty("title","Maximize")}}};MUI.Column=new Class({Implements:[Events,Options],options:{id:null,container:null,placement:null,width:null,resizeLimit:[],sortable:true,isCollapsed:false,onResize:$empty,onCollapse:$empty,onExpand:$empty},initialize:function(options){this.setOptions(options);$extend(this,{timestamp:$time(),isCollapsed:false,oldWidth:0});if(this.options.id==null){this.options.id="column"+(++MUI.Columns.columnIDCount)}var options=this.options;var instances=MUI.Columns.instances;var instanceID=instances.get(options.id);if(options.container==null){options.container=MUI.Desktop.pageWrapper}else{$(options.container).setStyle("overflow","hidden")}if(typeof this.options.container=="string"){this.options.container=$(this.options.container)}if(instanceID){var instance=instanceID}if(this.columnEl){return}else{instances.set(options.id,this)}if($(options.container).getElement(".pad")!=null){$(options.container).getElement(".pad").hide()}if($(options.container).getElement(".mochaContent")!=null){$(options.container).getElement(".mochaContent").hide()}this.columnEl=new Element("div",{id:this.options.id,"class":"column expanded",styles:{width:options.placement=="main"?null:options.width}}).inject($(options.container));this.columnEl.store("instance",this);var parent=this.columnEl.getParent();var columnHeight=parent.getStyle("height").toInt();this.columnEl.setStyle("height",columnHeight);if(this.options.sortable){if(!this.options.container.retrieve("sortables")){var sortables=new Sortables(this.columnEl,{opacity:1,handle:".panel-header",constrain:false,revert:false,onSort:function(){$$(".column").each(function(column){column.getChildren(".panelWrapper").each(function(panelWrapper){panelWrapper.getElement(".panel").removeClass("bottomPanel")});if(column.getChildren(".panelWrapper").getLast()){column.getChildren(".panelWrapper").getLast().getElement(".panel").addClass("bottomPanel")}column.getChildren(".panelWrapper").each(function(panelWrapper){var panel=panelWrapper.getElement(".panel");var column=panelWrapper.getParent().id;instance=MUI.Panels.instances.get(panel.id);instance.options.column=column;if(instance){var nextpanel=panel.getParent().getNext(".expanded");if(nextpanel){nextpanel=nextpanel.getElement(".panel")}instance.partner=nextpanel}});MUI.panelHeight()}.bind(this))}.bind(this)});this.options.container.store("sortables",sortables)}else{this.options.container.retrieve("sortables").addLists(this.columnEl)}}if(options.placement=="main"){this.columnEl.addClass("rWidth")}switch(this.options.placement){case"left":this.handleEl=new Element("div",{id:this.options.id+"_handle","class":"columnHandle"}).inject(this.columnEl,"after");this.handleIconEl=new Element("div",{id:options.id+"_handle_icon","class":"handleIcon"}).inject(this.handleEl);addResizeRight(this.columnEl,options.resizeLimit[0],options.resizeLimit[1]);break;case"right":this.handleEl=new Element("div",{id:this.options.id+"_handle","class":"columnHandle"}).inject(this.columnEl,"before");this.handleIconEl=new Element("div",{id:options.id+"_handle_icon","class":"handleIcon"}).inject(this.handleEl);addResizeLeft(this.columnEl,options.resizeLimit[0],options.resizeLimit[1]);break}if(this.options.isCollapsed&&this.options.placement!="main"){this.columnToggle()}if(this.handleEl!=null){this.handleEl.addEvent("dblclick",function(){this.columnToggle()}.bind(this))}MUI.rWidth()},columnCollapse:function(){var column=this.columnEl;this.oldWidth=column.getStyle("width").toInt();this.resize.detach();this.handleEl.removeEvents("dblclick");this.handleEl.addEvent("click",function(){this.columnExpand()}.bind(this));this.handleEl.setStyle("cursor","pointer").addClass("detached");column.setStyle("width",0);this.isCollapsed=true;column.addClass("collapsed");column.removeClass("expanded");MUI.rWidth();this.fireEvent("onCollapse");return true},columnExpand:function(){var column=this.columnEl;column.setStyle("width",this.oldWidth);this.isCollapsed=false;column.addClass("expanded");column.removeClass("collapsed");this.handleEl.removeEvents("click");this.handleEl.addEvent("dblclick",function(){this.columnCollapse()}.bind(this));this.resize.attach();this.handleEl.setStyle("cursor",Browser.Engine.webkit?"col-resize":"e-resize").addClass("attached");MUI.rWidth();this.fireEvent("onExpand");return true},columnToggle:function(){if(this.isCollapsed==false){this.columnCollapse()}else{this.columnExpand()}}});MUI.Column.implement(new Options,new Events);MUI.Panel=new Class({Implements:[Events,Options],options:{id:null,title:"New Panel",column:null,require:{css:[],images:[],js:[],onload:null},loadMethod:null,contentURL:null,method:"get",data:null,evalScripts:true,evalResponse:false,content:"Panel content",tabsURL:null,tabsData:null,tabsOnload:$empty,header:true,headerToolbox:false,headerToolboxURL:"pages/lipsum.html",headerToolboxOnload:$empty,height:125,addClass:"",scrollbars:true,padding:{top:8,right:8,bottom:8,left:8},collapsible:true,onBeforeBuild:$empty,onContentLoaded:$empty,onResize:$empty,onCollapse:$empty,onExpand:$empty},initialize:function(options){this.setOptions(options);$extend(this,{timestamp:$time(),isCollapsed:false,oldHeight:0,partner:null});if(this.options.id==null){this.options.id="panel"+(++MUI.Panels.panelIDCount)}var instances=MUI.Panels.instances;var instanceID=instances.get(this.options.id);var options=this.options;if(instanceID){var instance=instanceID}if(this.panelEl){return}else{instances.set(this.options.id,this)}this.fireEvent("onBeforeBuild");if(options.loadMethod=="iframe"){options.padding={top:0,right:0,bottom:0,left:0}}this.showHandle=true;if($(options.column).getChildren().length==0){this.showHandle=false}this.panelWrapperEl=new Element("div",{id:this.options.id+"_wrapper","class":"panelWrapper expanded"}).inject($(options.column));this.panelEl=new Element("div",{id:this.options.id,"class":"panel expanded",styles:{height:options.height}}).inject(this.panelWrapperEl);this.panelEl.store("instance",this);this.panelEl.addClass(options.addClass);this.contentEl=new Element("div",{id:options.id+"_pad","class":"pad"}).inject(this.panelEl);this.contentWrapperEl=this.panelEl;this.contentEl.setStyles({"padding-top":options.padding.top,"padding-bottom":options.padding.bottom,"padding-left":options.padding.left,"padding-right":options.padding.right});this.panelHeaderEl=new Element("div",{id:this.options.id+"_header","class":"panel-header",styles:{display:options.header?"block":"none"}}).inject(this.panelEl,"before");var columnInstances=MUI.Columns.instances;var columnInstance=columnInstances.get(this.options.column);if(this.options.collapsible){this.collapseToggleInit()}if(this.options.headerToolbox){this.panelHeaderToolboxEl=new Element("div",{id:options.id+"_headerToolbox","class":"panel-header-toolbox"}).inject(this.panelHeaderEl)}this.panelHeaderContentEl=new Element("div",{id:options.id+"_headerContent","class":"panel-headerContent"}).inject(this.panelHeaderEl);if(columnInstance.options.sortable){this.panelHeaderEl.setStyle("cursor","move");columnInstance.options.container.retrieve("sortables").addItems(this.panelWrapperEl);if(this.panelHeaderToolboxEl){this.panelHeaderToolboxEl.addEvent("mousedown",function(e){e=new Event(e).stop();e.target.focus()});this.panelHeaderToolboxEl.setStyle("cursor","default")}}this.titleEl=new Element("h2",{id:options.id+"_title"}).inject(this.panelHeaderContentEl);this.handleEl=new Element("div",{id:options.id+"_handle","class":"horizontalHandle",styles:{display:this.showHandle==true?"block":"none"}}).inject(this.panelEl,"after");this.handleIconEl=new Element("div",{id:options.id+"_handle_icon","class":"handleIcon"}).inject(this.handleEl);addResizeBottom(options.id);if(options.require.css.length||options.require.images.length){new MUI.Require({css:options.require.css,images:options.require.images,onload:function(){this.newPanel()}.bind(this)})}else{this.newPanel()}},newPanel:function(){options=this.options;if(this.options.headerToolbox){MUI.updateContent({element:this.panelEl,childElement:this.panelHeaderToolboxEl,loadMethod:"xhr",url:options.headerToolboxURL,onContentLoaded:options.headerToolboxOnload})}if(options.tabsURL==null){this.titleEl.set("html",options.title)}else{this.panelHeaderContentEl.addClass("tabs");MUI.updateContent({element:this.panelEl,childElement:this.panelHeaderContentEl,loadMethod:"xhr",url:options.tabsURL,data:options.tabsData,onContentLoaded:options.tabsOnload})}MUI.updateContent({element:this.panelEl,content:options.content,method:options.method,data:options.data,url:options.contentURL,onContentLoaded:null,require:{js:options.require.js,onload:options.require.onload}});$(options.column).getChildren(".panelWrapper").each(function(panelWrapper){panelWrapper.getElement(".panel").removeClass("bottomPanel")});$(options.column).getChildren(".panelWrapper").getLast().getElement(".panel").addClass("bottomPanel");MUI.panelHeight(options.column,this.panelEl,"new")},collapseToggleInit:function(options){var options=this.options;this.panelHeaderCollapseBoxEl=new Element("div",{id:options.id+"_headerCollapseBox","class":"toolbox"}).inject(this.panelHeaderEl);if(options.headerToolbox){this.panelHeaderCollapseBoxEl.addClass("divider")}this.collapseToggleEl=new Element("div",{id:options.id+"_collapseToggle","class":"panel-collapse icon16",styles:{width:16,height:16},title:"Collapse Panel"}).inject(this.panelHeaderCollapseBoxEl);this.collapseToggleEl.addEvent("click",function(event){var panel=this.panelEl;var panelWrapper=this.panelWrapperEl;var instances=MUI.Panels.instances;var expandedSiblings=[];panelWrapper.getAllPrevious(".panelWrapper").each(function(sibling){var instance=instances.get(sibling.getElement(".panel").id);if(instance.isCollapsed==false){expandedSiblings.push(sibling.getElement(".panel").id)}});panelWrapper.getAllNext(".panelWrapper").each(function(sibling){var instance=instances.get(sibling.getElement(".panel").id);if(instance.isCollapsed==false){expandedSiblings.push(sibling.getElement(".panel").id)}});if(this.isCollapsed==false){var currentColumn=MUI.Columns.instances.get($(options.column).id);if(expandedSiblings.length==0&¤tColumn.options.placement!="main"){var currentColumn=MUI.Columns.instances.get($(options.column).id);currentColumn.columnToggle();return}else{if(expandedSiblings.length==0&¤tColumn.options.placement=="main"){return}}this.oldHeight=panel.getStyle("height").toInt();if(this.oldHeight<10){this.oldHeight=20}this.contentEl.setStyle("position","absolute");panel.setStyle("height",0);this.isCollapsed=true;panelWrapper.addClass("collapsed");panelWrapper.removeClass("expanded");MUI.panelHeight(options.column,panel,"collapsing");MUI.panelHeight();this.collapseToggleEl.removeClass("panel-collapsed");this.collapseToggleEl.addClass("panel-expand");this.collapseToggleEl.setProperty("title","Expand Panel");this.fireEvent("onCollapse")}else{this.contentEl.setStyle("position",null);panel.setStyle("height",this.oldHeight);this.isCollapsed=false;panelWrapper.addClass("expanded");panelWrapper.removeClass("collapsed");MUI.panelHeight(this.options.column,panel,"expanding");MUI.panelHeight();this.collapseToggleEl.removeClass("panel-expand");this.collapseToggleEl.addClass("panel-collapsed");this.collapseToggleEl.setProperty("title","Collapse Panel");this.fireEvent("onExpand")}}.bind(this))}});MUI.Panel.implement(new Options,new Events);MUI.extend({panelHeight:function(column,changing,action){if(column!=null){MUI.panelHeight2($(column),changing,action)}else{$$(".column").each(function(column){MUI.panelHeight2(column)}.bind(this))}},panelHeight2:function(column,changing,action){var instances=MUI.Panels.instances;var parent=column.getParent();var columnHeight=parent.getStyle("height").toInt();if(Browser.Engine.trident4&&parent==MUI.Desktop.pageWrapper){columnHeight-=1}column.setStyle("height",columnHeight);var panels=[];column.getChildren(".panelWrapper").each(function(panelWrapper){panels.push(panelWrapper.getElement(".panel"))}.bind(this));var panelsExpanded=[];column.getChildren(".expanded").each(function(panelWrapper){panelsExpanded.push(panelWrapper.getElement(".panel"))}.bind(this));var panelsToResize=[];var tallestPanel;var tallestPanelHeight=0;this.panelsTotalHeight=0;this.height=0;panels.each(function(panel){instance=instances.get(panel.id);if(panel.getParent().hasClass("expanded")&&panel.getParent().getNext(".expanded")){instance.partner=panel.getParent().getNext(".expanded").getElement(".panel");instance.resize.attach();instance.handleEl.setStyles({display:"block",cursor:Browser.Engine.webkit?"row-resize":"n-resize"}).removeClass("detached")}else{instance.resize.detach();instance.handleEl.setStyles({display:"none",cursor:null}).addClass("detached")}if(panel.getParent().getNext(".panelWrapper")==null){instance.handleEl.hide()}}.bind(this));column.getChildren().each(function(panelWrapper){panelWrapper.getChildren().each(function(el){if(el.hasClass("panel")){var instance=instances.get(el.id);anyNextSiblingsExpanded=function(el){var test;el.getParent().getAllNext(".panelWrapper").each(function(sibling){var siblingInstance=instances.get(sibling.getElement(".panel").id);if(siblingInstance.isCollapsed==false){test=true}}.bind(this));return test}.bind(this);anyExpandingNextSiblingsExpanded=function(el){var test;changing.getParent().getAllNext(".panelWrapper").each(function(sibling){var siblingInstance=instances.get(sibling.getElement(".panel").id);if(siblingInstance.isCollapsed==false){test=true}}.bind(this));return test}.bind(this);anyNextContainsChanging=function(el){var allNext=[];el.getParent().getAllNext(".panelWrapper").each(function(panelWrapper){allNext.push(panelWrapper.getElement(".panel"))}.bind(this));var test=allNext.contains(changing);return test}.bind(this);nextExpandedChanging=function(el){var test;if(el.getParent().getNext(".expanded")){if(el.getParent().getNext(".expanded").getElement(".panel")==changing){test=true}}return test};if(action=="new"){if(!instance.isCollapsed&&el!=changing){panelsToResize.push(el);this.panelsTotalHeight+=el.offsetHeight.toInt()}}else{if(action==null||action=="collapsing"){if(!instance.isCollapsed&&(!anyNextContainsChanging(el)||!anyNextSiblingsExpanded(el))){panelsToResize.push(el);this.panelsTotalHeight+=el.offsetHeight.toInt()}}else{if(action=="expanding"&&!instance.isCollapsed&&el!=changing){if(!anyNextContainsChanging(el)||(!anyExpandingNextSiblingsExpanded(el)&&nextExpandedChanging(el))){panelsToResize.push(el);this.panelsTotalHeight+=el.offsetHeight.toInt()}}}}if(el.style.height){this.height+=el.getStyle("height").toInt()}}else{this.height+=el.offsetHeight.toInt()}}.bind(this))}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;this.height=0;column.getChildren().each(function(el){this.height+=el.offsetHeight.toInt()}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;panelsToResize.each(function(panel){var ratio=this.panelsTotalHeight/panel.offsetHeight.toInt();var newPanelHeight=panel.getStyle("height").toInt()+(remainingHeight/ratio);if(newPanelHeight<1){newPanelHeight=0}panel.setStyle("height",newPanelHeight)}.bind(this));this.height=0;column.getChildren().each(function(panelWrapper){panelWrapper.getChildren().each(function(el){this.height+=el.offsetHeight.toInt();if(el.hasClass("panel")&&el.getStyle("height").toInt()>tallestPanelHeight){tallestPanel=el;tallestPanelHeight=el.getStyle("height").toInt()}}.bind(this))}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;if(remainingHeight!=0&&tallestPanelHeight>0){tallestPanel.setStyle("height",tallestPanel.getStyle("height").toInt()+remainingHeight);if(tallestPanel.getStyle("height")<1){tallestPanel.setStyle("height",0)}}parent.getChildren(".columnHandle").each(function(handle){var parent=handle.getParent();if(parent.getStyle("height").toInt()<1){return}var handleHeight=parent.getStyle("height").toInt()-handle.getStyle("border-top").toInt()-handle.getStyle("border-bottom").toInt();if(Browser.Engine.trident4&&parent==MUI.Desktop.pageWrapper){handleHeight-=1}handle.setStyle("height",handleHeight)});panelsExpanded.each(function(panel){MUI.resizeChildren(panel)}.bind(this))},resizeChildren:function(panel){var instances=MUI.Panels.instances;var instance=instances.get(panel.id);var contentWrapperEl=instance.contentWrapperEl;if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyles({height:contentWrapperEl.getStyle("height"),width:contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt()})}else{instance.iframeEl.setStyles({height:contentWrapperEl.getStyle("height"),width:contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt()-1});instance.iframeEl.setStyles({width:contentWrapperEl.offsetWidth-contentWrapperEl.getStyle("border-left").toInt()-contentWrapperEl.getStyle("border-right").toInt()})}}},rWidth:function(container){if(container==null){var container=MUI.Desktop.desktop}container.getElements(".rWidth").each(function(column){var currentWidth=column.offsetWidth.toInt();currentWidth-=column.getStyle("border-left").toInt();currentWidth-=column.getStyle("border-right").toInt();var parent=column.getParent();this.width=0;parent.getChildren().each(function(el){if(el.hasClass("mocha")!=true){this.width+=el.offsetWidth.toInt()}}.bind(this));var remainingWidth=parent.offsetWidth.toInt()-this.width;var newWidth=currentWidth+remainingWidth;if(newWidth<1){newWidth=0}column.setStyle("width",newWidth);column.getChildren(".panel").each(function(panel){panel.setStyle("width",newWidth-panel.getStyle("border-left").toInt()-panel.getStyle("border-right").toInt());MUI.resizeChildren(panel)}.bind(this))})}});function addResizeRight(element,min,max){if(!$(element)){return}element=$(element);var instances=MUI.Columns.instances;var instance=instances.get(element.id);var handle=element.getNext(".columnHandle");handle.setStyle("cursor",Browser.Engine.webkit?"col-resize":"e-resize");if(!min){min=50}if(!max){max=250}if(Browser.Engine.trident){handle.addEvents({mousedown:function(){handle.setCapture()},mouseup:function(){handle.releaseCapture()}})}instance.resize=element.makeResizable({handle:handle,modifiers:{x:"width",y:false},limit:{x:[min,max]},onStart:function(){element.getElements("iframe").setStyle("visibility","hidden");element.getNext(".column").getElements("iframe").setStyle("visibility","hidden")}.bind(this),onDrag:function(){if(Browser.Engine.gecko){$$(".panel").each(function(panel){if(panel.getElements(".mochaIframe").length==0){panel.hide()}})}MUI.rWidth(element.getParent());if(Browser.Engine.gecko){$$(".panel").show()}if(Browser.Engine.trident4){element.getChildren().each(function(el){var width=$(element).getStyle("width").toInt();width-=el.getStyle("border-right").toInt();width-=el.getStyle("border-left").toInt();width-=el.getStyle("padding-right").toInt();width-=el.getStyle("padding-left").toInt();el.setStyle("width",width)}.bind(this))}}.bind(this),onComplete:function(){MUI.rWidth(element.getParent());element.getElements("iframe").setStyle("visibility","visible");element.getNext(".column").getElements("iframe").setStyle("visibility","visible");instance.fireEvent("onResize")}.bind(this)})}function addResizeLeft(element,min,max){if(!$(element)){return}element=$(element);var instances=MUI.Columns.instances;var instance=instances.get(element.id);var handle=element.getPrevious(".columnHandle");handle.setStyle("cursor",Browser.Engine.webkit?"col-resize":"e-resize");var partner=element.getPrevious(".column");if(!min){min=50}if(!max){max=250}if(Browser.Engine.trident){handle.addEvents({mousedown:function(){handle.setCapture()},mouseup:function(){handle.releaseCapture()}})}instance.resize=element.makeResizable({handle:handle,modifiers:{x:"width",y:false},invert:true,limit:{x:[min,max]},onStart:function(){$(element).getElements("iframe").setStyle("visibility","hidden");partner.getElements("iframe").setStyle("visibility","hidden")}.bind(this),onDrag:function(){MUI.rWidth(element.getParent())}.bind(this),onComplete:function(){MUI.rWidth(element.getParent());$(element).getElements("iframe").setStyle("visibility","visible");partner.getElements("iframe").setStyle("visibility","visible");instance.fireEvent("onResize")}.bind(this)})}function addResizeBottom(element){if(!$(element)){return}var element=$(element);var instances=MUI.Panels.instances;var instance=instances.get(element.id);var handle=instance.handleEl;handle.setStyle("cursor",Browser.Engine.webkit?"row-resize":"n-resize");partner=instance.partner;min=0;max=function(){return element.getStyle("height").toInt()+partner.getStyle("height").toInt()}.bind(this);if(Browser.Engine.trident){handle.addEvents({mousedown:function(){handle.setCapture()},mouseup:function(){handle.releaseCapture()}})}instance.resize=element.makeResizable({handle:handle,modifiers:{x:false,y:"height"},limit:{y:[min,max]},invert:false,onBeforeStart:function(){partner=instance.partner;this.originalHeight=element.getStyle("height").toInt();this.partnerOriginalHeight=partner.getStyle("height").toInt()}.bind(this),onStart:function(){if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden");partner.getElements("iframe").setStyle("visibility","hidden")}else{instance.iframeEl.hide();partner.getElements("iframe").hide()}}}.bind(this),onDrag:function(){partnerHeight=partnerOriginalHeight;partnerHeight+=(this.originalHeight-element.getStyle("height").toInt());partner.setStyle("height",partnerHeight);MUI.resizeChildren(element,element.getStyle("height").toInt());MUI.resizeChildren(partner,partnerHeight);element.getChildren(".column").each(function(column){MUI.panelHeight(column)});partner.getChildren(".column").each(function(column){MUI.panelHeight(column)})}.bind(this),onComplete:function(){partnerHeight=partnerOriginalHeight;partnerHeight+=(this.originalHeight-element.getStyle("height").toInt());partner.setStyle("height",partnerHeight);MUI.resizeChildren(element,element.getStyle("height").toInt());MUI.resizeChildren(partner,partnerHeight);element.getChildren(".column").each(function(column){MUI.panelHeight(column)});partner.getChildren(".column").each(function(column){MUI.panelHeight(column)});if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","visible");partner.getElements("iframe").setStyle("visibility","visible")}else{instance.iframeEl.show();partner.getElements("iframe").show();var width=instance.iframeEl.getStyle("width").toInt();instance.iframeEl.setStyle("width",width-1);MUI.rWidth();instance.iframeEl.setStyle("width",width)}}instance.fireEvent("onResize")}.bind(this)})}MUI.extend({closeColumn:function(columnEl){columnEl=$(columnEl);if(columnEl==null){return}var instances=MUI.Columns.instances;var instance=instances.get(columnEl.id);if(instance==null||instance.isClosing){return}instance.isClosing=true;var panels=$(columnEl).getElements(".panel");panels.each(function(panel){MUI.closePanel(panel.id)}.bind(this));if(Browser.Engine.trident){columnEl.dispose();if(instance.handleEl!=null){instance.handleEl.dispose()}}else{columnEl.destroy();if(instance.handleEl!=null){instance.handleEl.destroy()}}if(MUI.Desktop){MUI.Desktop.resizePanels()}var sortables=instance.options.container.retrieve("sortables");if(sortables){sortables.removeLists(columnEl)}instances.erase(instance.options.id);return true},closePanel:function(panelEl){panelEl=$(panelEl);if(panelEl==null){return}var instances=MUI.Panels.instances;var instance=instances.get(panelEl.id);if(panelEl!=$(panelEl)||instance.isClosing){return}var column=instance.options.column;instance.isClosing=true;var columnInstances=MUI.Columns.instances;var columnInstance=columnInstances.get(column);if(columnInstance.options.sortable){columnInstance.options.container.retrieve("sortables").removeItems(instance.panelWrapperEl)}instance.panelWrapperEl.destroy();if(MUI.Desktop){MUI.Desktop.resizePanels()}var panels=$(column).getElements(".panelWrapper");panels.each(function(panelWrapper){panelWrapper.getElement(".panel").removeClass("bottomPanel")});if(panels.length>0){panels.getLast().getElement(".panel").addClass("bottomPanel")}instances.erase(instance.options.id);return true}});MUI.files[MUI.path.source+"Layout/Dock.js"]="loaded";MUI.options.extend({dockWrapper:"dockWrapper",dockVisible:"true",dock:"dock"});MUI.extend({minimizeAll:function(){$$(".mocha").each(function(windowEl){var instance=windowEl.retrieve("instance");if(!instance.isMinimized&&instance.options.minimizable==true){MUI.Dock.minimizeWindow(windowEl)}}.bind(this))}});MUI.Dock={options:{useControls:true,dockPosition:"bottom",dockVisible:true,trueButtonColor:[70,245,70],enabledButtonColor:[115,153,191],disabledButtonColor:[170,170,170]},initialize:function(options){if(!MUI.Desktop){return}MUI.dockVisible=this.options.dockVisible;this.dockWrapper=$(MUI.options.dockWrapper);this.dock=$(MUI.options.dock);this.autoHideEvent=null;this.dockAutoHide=false;if(!this.dockWrapper){return}if(!this.options.useControls){if($("dockPlacement")){$("dockPlacement").setStyle("cursor","default")}if($("dockAutoHide")){$("dockAutoHide").setStyle("cursor","default")}}this.dockWrapper.setStyles({display:"block",position:"absolute",top:null,bottom:MUI.Desktop.desktopFooter?MUI.Desktop.desktopFooter.offsetHeight:0,left:0});if(this.options.useControls){this.initializeDockControls()}if($("dockLinkCheck")){this.sidebarCheck=new Element("div",{"class":"check",id:"dock_check"}).inject($("dockLinkCheck"))}this.dockSortables=new Sortables("#dockSort",{opacity:1,constrain:true,clone:false,revert:false});if(!(MUI.dockVisible)){this.dockWrapper.hide()}MUI.Desktop.setDesktopSize();if(MUI.myChain){MUI.myChain.callChain()}},initializeDockControls:function(){this.setDockColors();if(this.options.useControls){var canvas=new Element("canvas",{id:"dockCanvas",width:"15",height:"18"}).inject(this.dock);if(Browser.Engine.trident&&MUI.ieSupport=="excanvas"){G_vmlCanvasManager.initElement(canvas)}}var dockPlacement=$("dockPlacement");var dockAutoHide=$("dockAutoHide");dockPlacement.setProperty("title","Position Dock Top");dockPlacement.addEvent("click",function(){this.moveDock()}.bind(this));dockAutoHide.setProperty("title","Turn Auto Hide On");dockAutoHide.addEvent("click",function(event){if(this.dockWrapper.getProperty("dockPosition")=="top"){return false}var ctx=$("dockCanvas").getContext("2d");this.dockAutoHide=!this.dockAutoHide;if(this.dockAutoHide){$("dockAutoHide").setProperty("title","Turn Auto Hide Off");MUI.circle(ctx,5,14,3,this.options.trueButtonColor,1);this.autoHideEvent=function(event){if(!this.dockAutoHide){return}if(!MUI.Desktop.desktopFooter){var dockHotspotHeight=this.dockWrapper.offsetHeight;if(dockHotspotHeight<25){dockHotspotHeight=25}}else{if(MUI.Desktop.desktopFooter){var dockHotspotHeight=this.dockWrapper.offsetHeight+MUI.Desktop.desktopFooter.offsetHeight;if(dockHotspotHeight<25){dockHotspotHeight=25}}}if(!MUI.Desktop.desktopFooter&&event.client.y>(document.getCoordinates().height-dockHotspotHeight)){if(!MUI.dockVisible){this.dockWrapper.show();MUI.dockVisible=true;MUI.Desktop.setDesktopSize()}}else{if(MUI.Desktop.desktopFooter&&event.client.y>(document.getCoordinates().height-dockHotspotHeight)){if(!MUI.dockVisible){this.dockWrapper.show();MUI.dockVisible=true;MUI.Desktop.setDesktopSize()}}else{if(MUI.dockVisible){this.dockWrapper.hide();MUI.dockVisible=false;MUI.Desktop.setDesktopSize()}}}}.bind(this);document.addEvent("mousemove",this.autoHideEvent)}else{$("dockAutoHide").setProperty("title","Turn Auto Hide On");MUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1);document.removeEvent("mousemove",this.autoHideEvent)}}.bind(this));this.renderDockControls();if(this.options.dockPosition=="top"){this.moveDock()}},setDockColors:function(){var dockButtonEnabled=MUI.getCSSRule(".dockButtonEnabled");if(dockButtonEnabled&&dockButtonEnabled.style.backgroundColor){this.options.enabledButtonColor=new Color(dockButtonEnabled.style.backgroundColor)}var dockButtonDisabled=MUI.getCSSRule(".dockButtonDisabled");if(dockButtonDisabled&&dockButtonDisabled.style.backgroundColor){this.options.disabledButtonColor=new Color(dockButtonDisabled.style.backgroundColor)}var trueButtonColor=MUI.getCSSRule(".dockButtonTrue");if(trueButtonColor&&trueButtonColor.style.backgroundColor){this.options.trueButtonColor=new Color(trueButtonColor.style.backgroundColor)}},renderDockControls:function(){var ctx=$("dockCanvas").getContext("2d");ctx.clearRect(0,0,100,100);MUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1);if(this.dockWrapper.getProperty("dockPosition")=="top"){MUI.circle(ctx,5,14,3,this.options.disabledButtonColor,1)}else{if(this.dockAutoHide){MUI.circle(ctx,5,14,3,this.options.trueButtonColor,1)}else{MUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1)}}},moveDock:function(){var ctx=$("dockCanvas").getContext("2d");if(this.dockWrapper.getStyle("position")!="relative"){this.dockWrapper.setStyles({position:"relative",bottom:null});this.dockWrapper.addClass("top");MUI.Desktop.setDesktopSize();this.dockWrapper.setProperty("dockPosition","top");ctx.clearRect(0,0,100,100);MUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1);MUI.circle(ctx,5,14,3,this.options.disabledButtonColor,1);$("dockPlacement").setProperty("title","Position Dock Bottom");$("dockAutoHide").setProperty("title","Auto Hide Disabled in Top Dock Position");this.dockAutoHide=false}else{this.dockWrapper.setStyles({position:"absolute",bottom:MUI.Desktop.desktopFooter?MUI.Desktop.desktopFooter.offsetHeight:0});this.dockWrapper.removeClass("top");MUI.Desktop.setDesktopSize();this.dockWrapper.setProperty("dockPosition","bottom");ctx.clearRect(0,0,100,100);MUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1);MUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1);$("dockPlacement").setProperty("title","Position Dock Top");$("dockAutoHide").setProperty("title","Turn Auto Hide On")}},createDockTab:function(windowEl){var instance=windowEl.retrieve("instance");var dockTab=new Element("div",{id:instance.options.id+"_dockTab","class":"dockTab",title:titleText}).inject($("dockClear"),"before");dockTab.addEvent("mousedown",function(e){new Event(e).stop();this.timeDown=$time()});dockTab.addEvent("mouseup",function(e){this.timeUp=$time();if((this.timeUp-this.timeDown)<275){if(MUI.Windows.windowsVisible==false){MUI.toggleWindowVisibility();if(instance.isMinimized==true){MUI.Dock.restoreMinimized.delay(25,MUI.Dock,windowEl)}else{MUI.focusWindow(windowEl)}return}if(instance.isMinimized==true){MUI.Dock.restoreMinimized.delay(25,MUI.Dock,windowEl)}else{if(instance.windowEl.hasClass("isFocused")&&instance.options.minimizable==true){MUI.Dock.minimizeWindow(windowEl)}else{MUI.focusWindow(windowEl)}var coordinates=document.getCoordinates();if(windowEl.getStyle("left").toInt()>coordinates.width||windowEl.getStyle("top").toInt()>coordinates.height){MUI.centerWindow(windowEl)}}}});this.dockSortables.addItems(dockTab);var titleText=instance.titleEl.innerHTML;var dockTabText=new Element("div",{id:instance.options.id+"_dockTabText","class":"dockText"}).set("html",titleText.substring(0,19)+(titleText.length>19?"...":"")).inject($(dockTab));if(instance.options.icon!=false){}MUI.Desktop.setDesktopSize()},makeActiveTab:function(){var windowEl=MUI.getWindowWithHighestZindex();var instance=windowEl.retrieve("instance");$$(".dockTab").removeClass("activeDockTab");if(instance.isMinimized!=true){instance.windowEl.addClass("isFocused");var currentButton=$(instance.options.id+"_dockTab");if(currentButton!=null){currentButton.addClass("activeDockTab")}}else{instance.windowEl.removeClass("isFocused")}},minimizeWindow:function(windowEl){if(windowEl!=$(windowEl)){return}var instance=windowEl.retrieve("instance");instance.isMinimized=true;if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","hidden")}else{instance.iframeEl.hide()}}instance.contentBorderEl.setStyle("visibility","hidden");if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.hide()}windowEl.setStyle("visibility","hidden");if(Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){instance.contentWrapperEl.setStyle("overflow","hidden")}}}MUI.Desktop.setDesktopSize();setTimeout(function(){windowEl.setStyle("zIndex",1);windowEl.removeClass("isFocused");this.makeActiveTab()}.bind(this),100);instance.fireEvent("onMinimize",windowEl)},restoreMinimized:function(windowEl){var instance=windowEl.retrieve("instance");if(instance.isMinimized==false){return}if(MUI.Windows.windowsVisible==false){MUI.toggleWindowVisibility()}MUI.Desktop.setDesktopSize();if(instance.options.scrollbars==true&&!instance.iframeEl){instance.contentWrapperEl.setStyle("overflow","auto")}if(instance.isCollapsed){MUI.collapseToggle(windowEl)}windowEl.setStyle("visibility","visible");instance.contentBorderEl.setStyle("visibility","visible");if(instance.toolbarWrapperEl){instance.toolbarWrapperEl.show()}if(instance.iframeEl){if(!Browser.Engine.trident){instance.iframeEl.setStyle("visibility","visible")}else{instance.iframeEl.show()}}instance.isMinimized=false;MUI.focusWindow(windowEl);instance.fireEvent("onRestore",windowEl)},toggle:function(){if(!MochaUI.dockVisible){this.dockWrapper.show();MUI.dockVisible=true;MUI.Desktop.setDesktopSize()}else{this.dockWrapper.hide();MUI.dockVisible=false;MUI.Desktop.setDesktopSize()}}}; diff --git a/src/webui/www/private/scripts/preferences.js b/src/webui/www/private/scripts/localpreferences.js similarity index 83% rename from src/webui/www/private/scripts/preferences.js rename to src/webui/www/private/scripts/localpreferences.js index c704b9f89900..deb0c159f3dd 100644 --- a/src/webui/www/private/scripts/preferences.js +++ b/src/webui/www/private/scripts/localpreferences.js @@ -26,37 +26,34 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.LocalPreferences = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.LocalPreferences ??= (() => { + const exports = () => { return { - LocalPreferencesClass: LocalPreferencesClass + LocalPreferences: LocalPreferences }; }; - const LocalPreferencesClass = new Class({ - get: function(key, defaultValue) { + class LocalPreferences { + get(key, defaultValue) { const value = localStorage.getItem(key); return ((value === null) && (defaultValue !== undefined)) ? defaultValue : value; - }, + } - set: function(key, value) { + set(key, value) { try { localStorage.setItem(key, value); } catch (err) { console.error(err); } - }, + } - remove: function(key) { + remove(key) { try { localStorage.removeItem(key); } @@ -64,9 +61,8 @@ window.qBittorrent.LocalPreferences = (function() { console.error(err); } } - }); + }; return exports(); })(); - Object.freeze(window.qBittorrent.LocalPreferences); diff --git a/src/webui/www/private/scripts/misc.js b/src/webui/www/private/scripts/misc.js index 23e8bb520aa1..c1bad9e3e54a 100644 --- a/src/webui/www/private/scripts/misc.js +++ b/src/webui/www/private/scripts/misc.js @@ -26,34 +26,75 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.Misc = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.Misc ??= (() => { + const exports = () => { return { + getHost: getHost, + createDebounceHandler: createDebounceHandler, friendlyUnit: friendlyUnit, friendlyDuration: friendlyDuration, friendlyPercentage: friendlyPercentage, - friendlyFloat: friendlyFloat, parseHtmlLinks: parseHtmlLinks, + parseVersion: parseVersion, escapeHtml: escapeHtml, naturalSortCollator: naturalSortCollator, safeTrim: safeTrim, toFixedPointString: toFixedPointString, containsAllTerms: containsAllTerms, sleep: sleep, + downloadFile: downloadFile, + // variables + FILTER_INPUT_DELAY: 400, MAX_ETA: 8640000 }; }; + // getHost emulate the GUI version `QString getHost(const QString &url)` + const getHost = (url) => { + // We want the hostname. + // If failed to parse the domain, original input should be returned + + if (!/^(?:https?|udp):/i.test(url)) + return url; + + try { + // hack: URL can not get hostname from udp protocol + const parsedUrl = new URL(url.replace(/^udp:/i, "https:")); + // host: "example.com:8443" + // hostname: "example.com" + const host = parsedUrl.hostname; + if (!host) + return url; + + return host; + } + catch (error) { + return url; + } + }; + + const createDebounceHandler = (delay, func) => { + let timer = -1; + return (...params) => { + clearTimeout(timer); + timer = setTimeout(() => { + func(...params); + + timer = -1; + }, delay); + }; + }; + /* * JS counterpart of the function in src/misc.cpp */ - const friendlyUnit = function(value, isSpeed) { + const friendlyUnit = (value, isSpeed) => { + if ((value === undefined) || (value === null) || Number.isNaN(value) || (value < 0)) + return "QBT_TR(Unknown)QBT_TR[CONTEXT=misc]"; + const units = [ "QBT_TR(B)QBT_TR[CONTEXT=misc]", "QBT_TR(KiB)QBT_TR[CONTEXT=misc]", @@ -64,32 +105,29 @@ window.qBittorrent.Misc = (function() { "QBT_TR(EiB)QBT_TR[CONTEXT=misc]" ]; - if ((value === undefined) || (value === null) || (value < 0)) - return "QBT_TR(Unknown)QBT_TR[CONTEXT=misc]"; - - let i = 0; - while (value >= 1024.0 && i < 6) { - value /= 1024.0; - ++i; - } - - function friendlyUnitPrecision(sizeUnit) { + const friendlyUnitPrecision = (sizeUnit) => { if (sizeUnit <= 2) // KiB, MiB return 1; else if (sizeUnit === 3) // GiB return 2; else // TiB, PiB, EiB return 3; + }; + + let i = 0; + while ((value >= 1024) && (i < 6)) { + value /= 1024; + ++i; } let ret; - if (i === 0) - ret = value + " " + units[i]; + if (i === 0) { + ret = `${value} ${units[i]}`; + } else { const precision = friendlyUnitPrecision(i); - const offset = Math.pow(10, precision); // Don't round up - ret = (Math.floor(offset * value) / offset).toFixed(precision) + " " + units[i]; + ret = `${toFixedPointString(value, precision)} ${units[i]}`; } if (isSpeed) @@ -100,8 +138,8 @@ window.qBittorrent.Misc = (function() { /* * JS counterpart of the function in src/misc.cpp */ - const friendlyDuration = function(seconds, maxCap = -1) { - if (seconds < 0 || ((seconds >= maxCap) && (maxCap >= 0))) + const friendlyDuration = (seconds, maxCap = -1) => { + if ((seconds < 0) || ((seconds >= maxCap) && (maxCap >= 0))) return "∞"; if (seconds === 0) return "0"; @@ -109,79 +147,72 @@ window.qBittorrent.Misc = (function() { return "QBT_TR(< 1m)QBT_TR[CONTEXT=misc]"; let minutes = seconds / 60; if (minutes < 60) - return "QBT_TR(%1m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(minutes)); + return "QBT_TR(%1m)QBT_TR[CONTEXT=misc]".replace("%1", Math.floor(minutes)); let hours = minutes / 60; - minutes = minutes % 60; + minutes %= 60; if (hours < 24) - return "QBT_TR(%1h %2m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(hours)).replace("%2", parseInt(minutes)); + return "QBT_TR(%1h %2m)QBT_TR[CONTEXT=misc]".replace("%1", Math.floor(hours)).replace("%2", Math.floor(minutes)); let days = hours / 24; - hours = hours % 24; + hours %= 24; if (days < 365) - return "QBT_TR(%1d %2h)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(days)).replace("%2", parseInt(hours)); + return "QBT_TR(%1d %2h)QBT_TR[CONTEXT=misc]".replace("%1", Math.floor(days)).replace("%2", Math.floor(hours)); const years = days / 365; - days = days % 365; - return "QBT_TR(%1y %2d)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(years)).replace("%2", parseInt(days)); + days %= 365; + return "QBT_TR(%1y %2d)QBT_TR[CONTEXT=misc]".replace("%1", Math.floor(years)).replace("%2", Math.floor(days)); }; - const friendlyPercentage = function(value) { - let percentage = (value * 100).round(1); - if (isNaN(percentage) || (percentage < 0)) + const friendlyPercentage = (value) => { + let percentage = value * 100; + if (Number.isNaN(percentage) || (percentage < 0)) percentage = 0; if (percentage > 100) percentage = 100; - return percentage.toFixed(1) + "%"; + return `${toFixedPointString(percentage, 1)}%`; }; - const friendlyFloat = function(value, precision) { - return parseFloat(value).toFixed(precision); - }; - - /* - * From: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString - */ - if (!Date.prototype.toISOString) { - (function() { - - function pad(number) { - if (number < 10) { - return '0' + number; - } - return number; - } - - Date.prototype.toISOString = function() { - return this.getUTCFullYear() - + '-' + pad(this.getUTCMonth() + 1) - + '-' + pad(this.getUTCDate()) - + 'T' + pad(this.getUTCHours()) - + ':' + pad(this.getUTCMinutes()) - + ':' + pad(this.getUTCSeconds()) - + '.' + (this.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) - + 'Z'; - }; - - }()); - } - /* * JS counterpart of the function in src/misc.cpp */ - const parseHtmlLinks = function(text) { - const exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/ig; + const parseHtmlLinks = (text) => { + const exp = /(\b(https?|ftp|file):\/\/[-\w+&@#/%?=~|!:,.;]*[-\w+&@#/%=~|])/gi; return text.replace(exp, "$1"); }; - const escapeHtml = function(str) { - const div = document.createElement('div'); - div.appendChild(document.createTextNode(str)); - const escapedString = div.innerHTML; - div.remove(); - return escapedString; + const parseVersion = (versionString) => { + const failure = { + valid: false + }; + + if (typeof versionString !== "string") + return failure; + + const tryToNumber = (str) => { + const num = Number(str); + return (Number.isNaN(num) ? str : num); + }; + + const ver = versionString.split(".", 4).map(val => tryToNumber(val)); + return { + valid: true, + major: ver[0], + minor: ver[1], + fix: ver[2], + patch: ver[3] + }; }; - const naturalSortCollator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' }); + const escapeHtml = (() => { + const div = document.createElement("div"); + return (str) => { + div.textContent = str; + return div.innerHTML; + }; + })(); + + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator#parameters + const naturalSortCollator = new Intl.Collator(undefined, { numeric: true, usage: "sort" }); - const safeTrim = function(value) { + const safeTrim = (value) => { try { return value.trim(); } @@ -192,23 +223,37 @@ window.qBittorrent.Misc = (function() { } }; - const toFixedPointString = function(number, digits) { - // Do not round up number - const power = Math.pow(10, digits); - return (Math.floor(power * number) / power).toFixed(digits); + const toFixedPointString = (number, digits) => { + if (Number.isNaN(number)) + return number.toString(); + + const sign = (number < 0) ? "-" : ""; + // Do not round up `number` + // Small floating point numbers are imprecise, thus process as a String + const tmp = Math.trunc(`${Math.abs(number)}e${digits}`).toString(); + if (digits <= 0) { + return (tmp === "0") ? tmp : `${sign}${tmp}`; + } + else if (digits < tmp.length) { + const idx = tmp.length - digits; + return `${sign}${tmp.slice(0, idx)}.${tmp.slice(idx)}`; + } + else { + const zeros = "0".repeat(digits - tmp.length); + return `${sign}0.${zeros}${tmp}`; + } }; /** - * * @param {String} text the text to search * @param {Array} terms terms to search for within the text * @returns {Boolean} true if all terms match the text, false otherwise */ - const containsAllTerms = function(text, terms) { + const containsAllTerms = (text, terms) => { const textToSearch = text.toLowerCase(); - return terms.every(function(term) { - const isTermRequired = (term[0] === '+'); - const isTermExcluded = (term[0] === '-'); + return terms.every((term) => { + const isTermRequired = term.startsWith("+"); + const isTermExcluded = term.startsWith("-"); if (isTermRequired || isTermExcluded) { // ignore lonely +/- if (term.length === 1) @@ -217,7 +262,7 @@ window.qBittorrent.Misc = (function() { term = term.substring(1); } - const textContainsTerm = (textToSearch.indexOf(term) !== -1); + const textContainsTerm = textToSearch.includes(term); return isTermExcluded ? !textContainsTerm : textContainsTerm; }); }; @@ -228,7 +273,35 @@ window.qBittorrent.Misc = (function() { }); }; + const downloadFile = async (url, defaultFileName, errorMessage = "QBT_TR(Unable to download file)QBT_TR[CONTEXT=HttpServer]") => { + try { + const response = await fetch(url, { method: "GET" }); + if (!response.ok) { + alert(errorMessage); + return; + } + + const blob = await response.blob(); + const fileNamePrefix = "attachment; filename="; + const fileNameHeader = response.headers.get("content-disposition"); + let fileName = defaultFileName; + if (fileNameHeader.startsWith(fileNamePrefix)) { + fileName = fileNameHeader.substring(fileNamePrefix.length); + if (fileName.startsWith("\"") && fileName.endsWith("\"")) + fileName = fileName.slice(1, -1); + } + + const link = document.createElement("a"); + link.href = window.URL.createObjectURL(blob); + link.download = fileName; + link.click(); + link.remove(); + } + catch (error) { + alert(errorMessage); + } + }; + return exports(); })(); - Object.freeze(window.qBittorrent.Misc); diff --git a/src/webui/www/private/scripts/mocha-init.js b/src/webui/www/private/scripts/mocha-init.js index cfda9444b061..f13f9be88716 100644 --- a/src/webui/www/private/scripts/mocha-init.js +++ b/src/webui/www/private/scripts/mocha-init.js @@ -36,105 +36,164 @@ it in the onContentLoaded function of the new window. ----------------------------------------------------------------- */ -'use strict'; - -const LocalPreferences = new window.qBittorrent.LocalPreferences.LocalPreferencesClass(); - -let saveWindowSize = function() {}; -let loadWindowWidth = function() {}; -let loadWindowHeight = function() {}; -let showDownloadPage = function() {}; -let globalUploadLimitFN = function() {}; -let uploadLimitFN = function() {}; -let shareRatioFN = function() {}; -let toggleSequentialDownloadFN = function() {}; -let toggleFirstLastPiecePrioFN = function() {}; -let setSuperSeedingFN = function() {}; -let setForceStartFN = function() {}; -let globalDownloadLimitFN = function() {}; -let StatisticsLinkFN = function() {}; -let downloadLimitFN = function() {}; -let deleteFN = function() {}; -let pauseFN = function() {}; -let startFN = function() {}; -let autoTorrentManagementFN = function() {}; -let recheckFN = function() {}; -let reannounceFN = function() {}; -let setLocationFN = function() {}; -let renameFN = function() {}; -let renameFilesFN = function() {}; -let torrentNewCategoryFN = function() {}; -let torrentSetCategoryFN = function() {}; -let createCategoryFN = function() {}; -let createSubcategoryFN = function() {}; -let editCategoryFN = function() {}; -let removeCategoryFN = function() {}; -let deleteUnusedCategoriesFN = function() {}; -let startTorrentsByCategoryFN = function() {}; -let pauseTorrentsByCategoryFN = function() {}; -let deleteTorrentsByCategoryFN = function() {}; -let torrentAddTagsFN = function() {}; -let torrentSetTagsFN = function() {}; -let torrentRemoveAllTagsFN = function() {}; -let createTagFN = function() {}; -let removeTagFN = function() {}; -let deleteUnusedTagsFN = function() {}; -let startTorrentsByTagFN = function() {}; -let pauseTorrentsByTagFN = function() {}; -let deleteTorrentsByTagFN = function() {}; -let resumeTorrentsByTrackerFN = function() {}; -let pauseTorrentsByTrackerFN = function() {}; -let deleteTorrentsByTrackerFN = function() {}; -let copyNameFN = function() {}; -let copyInfohashFN = function(policy) {}; -let copyMagnetLinkFN = function() {}; -let copyIdFN = function() {}; -let copyCommentFN = function() {}; -let setQueuePositionFN = function() {}; -let exportTorrentFN = function() {}; - -const initializeWindows = function() { - saveWindowSize = function(windowId) { +"use strict"; + +window.qBittorrent ??= {}; +window.qBittorrent.Dialog ??= (() => { + const exports = () => { + return { + baseModalOptions: baseModalOptions + }; + }; + + const deepFreeze = (obj) => { + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#examples + // accounts for circular refs + const frozen = new WeakSet(); + const deepFreezeSafe = (obj) => { + if (frozen.has(obj)) + return; + + frozen.add(obj); + + const keys = Reflect.ownKeys(obj); + for (const key of keys) { + const value = obj[key]; + if ((value && (typeof value === "object")) || (typeof value === "function")) + deepFreezeSafe(value); + } + Object.freeze(obj); + }; + + deepFreezeSafe(obj); + }; + + const baseModalOptions = Object.assign(Object.create(null), { + addClass: "modalDialog", + collapsible: false, + cornerRadius: 5, + draggable: true, + footerHeight: 20, + icon: "images/qbittorrent-tray.svg", + loadMethod: "xhr", + maximizable: false, + method: "post", + minimizable: false, + padding: { + top: 15, + right: 10, + bottom: 15, + left: 5 + }, + resizable: true, + width: 480, + onCloseComplete: () => { + // make sure overlay is properly hidden upon modal closing + document.getElementById("modalOverlay").style.display = "none"; + } + }); + + deepFreeze(baseModalOptions); + + return exports(); +})(); +Object.freeze(window.qBittorrent.Dialog); + +const LocalPreferences = new window.qBittorrent.LocalPreferences.LocalPreferences(); + +let saveWindowSize = () => {}; +let loadWindowWidth = () => {}; +let loadWindowHeight = () => {}; +let showDownloadPage = () => {}; +let globalUploadLimitFN = () => {}; +let uploadLimitFN = () => {}; +let shareRatioFN = () => {}; +let toggleSequentialDownloadFN = () => {}; +let toggleFirstLastPiecePrioFN = () => {}; +let setSuperSeedingFN = () => {}; +let setForceStartFN = () => {}; +let globalDownloadLimitFN = () => {}; +let StatisticsLinkFN = () => {}; +let downloadLimitFN = () => {}; +let deleteSelectedTorrentsFN = () => {}; +let stopFN = () => {}; +let startFN = () => {}; +let autoTorrentManagementFN = () => {}; +let recheckFN = () => {}; +let reannounceFN = () => {}; +let setLocationFN = () => {}; +let renameFN = () => {}; +let renameFilesFN = () => {}; +let startVisibleTorrentsFN = () => {}; +let stopVisibleTorrentsFN = () => {}; +let deleteVisibleTorrentsFN = () => {}; +let torrentNewCategoryFN = () => {}; +let torrentSetCategoryFN = () => {}; +let createCategoryFN = () => {}; +let createSubcategoryFN = () => {}; +let editCategoryFN = () => {}; +let removeCategoryFN = () => {}; +let deleteUnusedCategoriesFN = () => {}; +let torrentAddTagsFN = () => {}; +let torrentSetTagsFN = () => {}; +let torrentRemoveAllTagsFN = () => {}; +let createTagFN = () => {}; +let removeTagFN = () => {}; +let deleteUnusedTagsFN = () => {}; +let deleteTrackerFN = () => {}; +let copyNameFN = () => {}; +let copyInfohashFN = (policy) => {}; +let copyMagnetLinkFN = () => {}; +let copyIdFN = () => {}; +let copyCommentFN = () => {}; +let setQueuePositionFN = () => {}; +let exportTorrentFN = () => {}; + +const initializeWindows = () => { + saveWindowSize = (windowId) => { const size = $(windowId).getSize(); - LocalPreferences.set('window_' + windowId + '_width', size.x); - LocalPreferences.set('window_' + windowId + '_height', size.y); + LocalPreferences.set(`window_${windowId}_width`, size.x); + LocalPreferences.set(`window_${windowId}_height`, size.y); }; - loadWindowWidth = function(windowId, defaultValue) { - return LocalPreferences.get('window_' + windowId + '_width', defaultValue); + loadWindowWidth = (windowId, defaultValue) => { + return LocalPreferences.get(`window_${windowId}_width`, defaultValue); }; - loadWindowHeight = function(windowId, defaultValue) { - return LocalPreferences.get('window_' + windowId + '_height', defaultValue); + loadWindowHeight = (windowId, defaultValue) => { + return LocalPreferences.get(`window_${windowId}_height`, defaultValue); }; - function addClickEvent(el, fn) { - ['Link', 'Button'].each(function(item) { - if ($(el + item)) { - $(el + item).addEvent('click', fn); - } + const addClickEvent = (el, fn) => { + ["Link", "Button"].each((item) => { + if ($(el + item)) + $(el + item).addEventListener("click", fn); }); - } + }; - addClickEvent('download', function(e) { - new Event(e).stop(); + addClickEvent("download", (e) => { + e.preventDefault(); + e.stopPropagation(); showDownloadPage(); }); - showDownloadPage = function(urls) { - const id = 'downloadPage'; - let contentUri = new URI('download.html'); + showDownloadPage = (urls) => { + const id = "downloadPage"; + const contentURL = new URL("download.html", window.location); if (urls && (urls.length > 0)) { - contentUri.setData("urls", urls.map(encodeURIComponent).join("|")); + contentURL.search = new URLSearchParams({ + urls: urls.map(encodeURIComponent).join("|") + }); } new MochaUI.Window({ id: id, + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Download from URLs)QBT_TR[CONTEXT=downloadFromURL]", - loadMethod: 'iframe', - contentURL: contentUri.toString(), - addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari + loadMethod: "iframe", + contentURL: contentURL.toString(), + addClass: "windowFrame", // fixes iframe scrolling on iOS Safari scrollbars: true, maximizable: false, closable: true, @@ -142,403 +201,523 @@ const initializeWindows = function() { paddingHorizontal: 0, width: loadWindowWidth(id, 500), height: loadWindowHeight(id, 600), - onResize: function() { + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { saveWindowSize(id); - } + }) }); updateMainData(); }; - addClickEvent('preferences', function(e) { - new Event(e).stop(); - const id = 'preferencesPage'; + addClickEvent("preferences", (e) => { + e.preventDefault(); + e.stopPropagation(); + + const id = "preferencesPage"; new MochaUI.Window({ id: id, + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]", - loadMethod: 'xhr', + loadMethod: "xhr", toolbar: true, - contentURL: new URI("views/preferences.html").toString(), + contentURL: "views/preferences.html", require: { - css: ['css/Tabs.css'] + css: ["css/Tabs.css"] }, - toolbarURL: 'views/preferencesToolbar.html', + toolbarURL: "views/preferencesToolbar.html", maximizable: false, closable: true, paddingVertical: 0, paddingHorizontal: 0, - width: loadWindowWidth(id, 700), + width: loadWindowWidth(id, 730), height: loadWindowHeight(id, 600), - onResize: function() { + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { + saveWindowSize(id); + }) + }); + }); + + addClickEvent("manageCookies", (e) => { + e.preventDefault(); + e.stopPropagation(); + + const id = "cookiesPage"; + new MochaUI.Window({ + id: id, + title: "QBT_TR(Manage Cookies)QBT_TR[CONTEXT=CookiesDialog]", + loadMethod: "xhr", + contentURL: "views/cookies.html", + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: loadWindowWidth(id, 900), + height: loadWindowHeight(id, 400), + onResize: () => { saveWindowSize(id); } }); }); - addClickEvent('upload', function(e) { - new Event(e).stop(); - const id = 'uploadPage'; + addClickEvent("upload", (e) => { + e.preventDefault(); + e.stopPropagation(); + + const id = "uploadPage"; new MochaUI.Window({ id: id, + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]", - loadMethod: 'iframe', - contentURL: new URI("upload.html").toString(), - addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari + loadMethod: "iframe", + contentURL: "upload.html", + addClass: "windowFrame", // fixes iframe scrolling on iOS Safari scrollbars: true, maximizable: false, paddingVertical: 0, paddingHorizontal: 0, width: loadWindowWidth(id, 500), height: loadWindowHeight(id, 460), - onResize: function() { + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { saveWindowSize(id); - } + }) }); updateMainData(); }); - globalUploadLimitFN = function() { + globalUploadLimitFN = () => { + const contentURL = new URL("uploadlimit.html", window.location); + contentURL.search = new URLSearchParams({ + hashes: "global" + }); new MochaUI.Window({ - id: 'uploadLimitPage', + id: "uploadLimitPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Global Upload Speed Limit)QBT_TR[CONTEXT=MainWindow]", - loadMethod: 'iframe', - contentURL: new URI("uploadlimit.html").setData("hashes", "global").toString(), + loadMethod: "iframe", + contentURL: contentURL.toString(), scrollbars: false, resizable: false, maximizable: false, paddingVertical: 0, paddingHorizontal: 0, width: 424, - height: 80 + height: 100 }); }; - uploadLimitFN = function() { + uploadLimitFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new MochaUI.Window({ - id: 'uploadLimitPage', - title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI("uploadlimit.html").setData("hashes", hashes.join("|")).toString(), - scrollbars: false, - resizable: false, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 424, - height: 80 - }); - } + if (hashes.length <= 0) + return; + + const contentURL = new URL("uploadlimit.html", window.location); + contentURL.search = new URLSearchParams({ + hashes: hashes.join("|") + }); + new MochaUI.Window({ + id: "uploadLimitPage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: false, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 424, + height: 100 + }); }; - shareRatioFN = function() { + shareRatioFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - let shareRatio = null; - let torrentsHaveSameShareRatio = true; - - // check if all selected torrents have same share ratio - for (let i = 0; i < hashes.length; ++i) { - const hash = hashes[i]; - const row = torrentsTable.rows[hash].full_data; - const origValues = row.ratio_limit + "|" + row.seeding_time_limit + "|" + row.inactive_seeding_time_limit + "|" - + row.max_ratio + "|" + row.max_seeding_time + "|" + row.max_inactive_seeding_time; - - // initialize value - if (shareRatio === null) - shareRatio = origValues; - - if (origValues !== shareRatio) { - torrentsHaveSameShareRatio = false; - break; - } + if (hashes.length <= 0) + return; + + let shareRatio = null; + let torrentsHaveSameShareRatio = true; + + // check if all selected torrents have same share ratio + for (let i = 0; i < hashes.length; ++i) { + const hash = hashes[i]; + const row = torrentsTable.getRow(hash).full_data; + const origValues = `${row.ratio_limit}|${row.seeding_time_limit}|${row.inactive_seeding_time_limit}|${row.max_ratio}` + + `|${row.max_seeding_time}|${row.max_inactive_seeding_time}`; + + // initialize value + if (shareRatio === null) + shareRatio = origValues; + + if (origValues !== shareRatio) { + torrentsHaveSameShareRatio = false; + break; } + } + const contentURL = new URL("shareratio.html", window.location); + contentURL.search = new URLSearchParams({ + hashes: hashes.join("|"), // if all torrents have same share ratio, display that share ratio. else use the default - const orig = torrentsHaveSameShareRatio ? shareRatio : ""; - new MochaUI.Window({ - id: 'shareRatioPage', - title: "QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDialog]", - loadMethod: 'iframe', - contentURL: new URI("shareratio.html").setData("hashes", hashes.join("|")).setData("orig", orig).toString(), - scrollbars: false, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 424, - height: 175 - }); - } + orig: torrentsHaveSameShareRatio ? shareRatio : "" + }); + new MochaUI.Window({ + id: "shareRatioPage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDialog]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 424, + height: 220 + }); }; - toggleSequentialDownloadFN = function() { + toggleSequentialDownloadFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/toggleSequentialDownload', - method: 'post', - data: { + fetch("api/v2/torrents/toggleSequentialDownload", { + method: "POST", + body: new URLSearchParams({ hashes: hashes.join("|") - } - }).send(); + }) + }); updateMainData(); } }; - toggleFirstLastPiecePrioFN = function() { + toggleFirstLastPiecePrioFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/toggleFirstLastPiecePrio', - method: 'post', - data: { + fetch("api/v2/torrents/toggleFirstLastPiecePrio", { + method: "POST", + body: new URLSearchParams({ hashes: hashes.join("|") - } - }).send(); + }) + }); updateMainData(); } }; - setSuperSeedingFN = function(val) { + setSuperSeedingFN = (val) => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/setSuperSeeding', - method: 'post', - data: { - value: val, - hashes: hashes.join("|") - } - }).send(); + fetch("api/v2/torrents/setSuperSeeding", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + value: val + }) + }); updateMainData(); } }; - setForceStartFN = function() { + setForceStartFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/setForceStart', - method: 'post', - data: { - value: 'true', - hashes: hashes.join("|") - } - }).send(); + fetch("api/v2/torrents/setForceStart", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + value: "true" + }) + }); updateMainData(); } }; - globalDownloadLimitFN = function() { + globalDownloadLimitFN = () => { + const contentURL = new URL("downloadlimit.html", window.location); + contentURL.search = new URLSearchParams({ + hashes: "global" + }); new MochaUI.Window({ - id: 'downloadLimitPage', + id: "downloadLimitPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Global Download Speed Limit)QBT_TR[CONTEXT=MainWindow]", - loadMethod: 'iframe', - contentURL: new URI("downloadlimit.html").setData("hashes", "global").toString(), + loadMethod: "iframe", + contentURL: contentURL.toString(), scrollbars: false, resizable: false, maximizable: false, paddingVertical: 0, paddingHorizontal: 0, width: 424, - height: 80 + height: 100 }); }; - StatisticsLinkFN = function() { - const id = 'statisticspage'; + StatisticsLinkFN = () => { + const id = "statisticspage"; new MochaUI.Window({ id: id, - title: 'QBT_TR(Statistics)QBT_TR[CONTEXT=StatsDialog]', - loadMethod: 'xhr', - contentURL: new URI("views/statistics.html").toString(), + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Statistics)QBT_TR[CONTEXT=StatsDialog]", + loadMethod: "xhr", + contentURL: "views/statistics.html", maximizable: false, padding: 10, - width: loadWindowWidth(id, 275), - height: loadWindowHeight(id, 370), - onResize: function() { + width: loadWindowWidth(id, 285), + height: loadWindowHeight(id, 415), + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { saveWindowSize(id); - } + }) }); }; - downloadLimitFN = function() { + downloadLimitFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new MochaUI.Window({ - id: 'downloadLimitPage', - title: "QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI("downloadlimit.html").setData("hashes", hashes.join("|")).toString(), - scrollbars: false, - resizable: false, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 424, - height: 80 - }); - } + if (hashes.length <= 0) + return; + + const contentURL = new URL("downloadlimit.html", window.location); + contentURL.search = new URLSearchParams({ + hashes: hashes.join("|") + }); + new MochaUI.Window({ + id: "downloadLimitPage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: false, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 424, + height: 100 + }); }; - deleteFN = function(deleteFiles = false) { + deleteSelectedTorrentsFN = (forceDeleteFiles = false) => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new MochaUI.Window({ - id: 'confirmDeletionPage', - title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]", - loadMethod: 'iframe', - contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).setData("deleteFiles", deleteFiles).toString(), - scrollbars: false, - resizable: false, - maximizable: false, - padding: 10, - width: 424, - height: 140 - }); - updateMainData(); + if (hashes.length > 0) { + if (window.qBittorrent.Cache.preferences.get().confirm_torrent_deletion) { + new MochaUI.Modal({ + ...window.qBittorrent.Dialog.baseModalOptions, + id: "confirmDeletionPage", + title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]", + data: { + hashes: hashes, + forceDeleteFiles: forceDeleteFiles + }, + contentURL: "views/confirmdeletion.html", + onContentLoaded: (w) => { + MochaUI.resizeWindow(w, { centered: true }); + MochaUI.centerWindow(w); + }, + onCloseComplete: () => { + // make sure overlay is properly hidden upon modal closing + document.getElementById("modalOverlay").style.display = "none"; + } + }); + } + else { + fetch("api/v2/torrents/delete", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + deleteFiles: forceDeleteFiles + }) + }) + .then((response) => { + if (!response.ok) { + alert("QBT_TR(Unable to delete torrents.)QBT_TR[CONTEXT=HttpServer]"); + return; + } + + torrentsTable.deselectAll(); + updateMainData(); + updatePropertiesPanel(); + }); + } } }; - addClickEvent('delete', function(e) { - new Event(e).stop(); - deleteFN(); + addClickEvent("delete", (e) => { + e.preventDefault(); + e.stopPropagation(); + deleteSelectedTorrentsFN(); }); - pauseFN = function() { + stopFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/pause', - method: 'post', - data: { + fetch("api/v2/torrents/stop", { + method: "POST", + body: new URLSearchParams({ hashes: hashes.join("|") - } - }).send(); + }) + }); updateMainData(); } }; - startFN = function() { + startFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/resume', - method: 'post', - data: { + fetch("api/v2/torrents/start", { + method: "POST", + body: new URLSearchParams({ hashes: hashes.join("|") - } - }).send(); + }) + }); updateMainData(); } }; - autoTorrentManagementFN = function() { + autoTorrentManagementFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - let enable = false; - hashes.each(function(hash, index) { - const row = torrentsTable.rows[hash]; - if (!row.full_data.auto_tmm) - enable = true; - }); - new Request({ - url: 'api/v2/torrents/setAutoManagement', - method: 'post', - data: { - hashes: hashes.join("|"), - enable: enable - } - }).send(); - updateMainData(); + if (hashes.length > 0) { + const enableAutoTMM = hashes.some((hash) => !(torrentsTable.getRow(hash).full_data.auto_tmm)); + if (enableAutoTMM) { + new MochaUI.Modal({ + ...window.qBittorrent.Dialog.baseModalOptions, + id: "confirmAutoTMMDialog", + title: "QBT_TR(Enable automatic torrent management)QBT_TR[CONTEXT=confirmAutoTMMDialog]", + data: { + hashes: hashes, + enable: enableAutoTMM + }, + contentURL: "views/confirmAutoTMM.html" + }); + } + else { + fetch("api/v2/torrents/setAutoManagement", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + enable: enableAutoTMM + }) + }) + .then((response) => { + if (!response.ok) { + alert("QBT_TR(Unable to set Auto Torrent Management for the selected torrents.)QBT_TR[CONTEXT=HttpServer]"); + return; + } + + updateMainData(); + }); + } } }; - recheckFN = function() { + recheckFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/recheck', - method: 'post', - data: { - hashes: hashes.join("|"), - } - }).send(); - updateMainData(); + if (hashes.length > 0) { + if (window.qBittorrent.Cache.preferences.get().confirm_torrent_recheck) { + new MochaUI.Modal({ + ...window.qBittorrent.Dialog.baseModalOptions, + id: "confirmRecheckDialog", + title: "QBT_TR(Recheck confirmation)QBT_TR[CONTEXT=confirmRecheckDialog]", + data: { hashes: hashes }, + contentURL: "views/confirmRecheck.html" + }); + } + else { + fetch("api/v2/torrents/recheck", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + }) + }) + .then((response) => { + if (!response.ok) { + alert("QBT_TR(Unable to recheck torrents.)QBT_TR[CONTEXT=HttpServer]"); + return; + } + + updateMainData(); + }); + } } }; - reannounceFN = function() { + reannounceFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/reannounce', - method: 'post', - data: { - hashes: hashes.join("|"), - } - }).send(); + fetch("api/v2/torrents/reannounce", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|") + }) + }); updateMainData(); } }; - setLocationFN = function() { + setLocationFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - const hash = hashes[0]; - const row = torrentsTable.rows[hash]; - - new MochaUI.Window({ - id: 'setLocationPage', - title: "QBT_TR(Set location)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI("setlocation.html").setData("hashes", hashes.join('|')).setData("path", encodeURIComponent(row.full_data.save_path)).toString(), - scrollbars: false, - resizable: true, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 400, - height: 130 - }); - } + if (hashes.length <= 0) + return; + + const contentURL = new URL("setlocation.html", window.location); + contentURL.search = new URLSearchParams({ + hashes: hashes.join("|"), + path: encodeURIComponent(torrentsTable.getRow(hashes[0]).full_data.save_path) + }); + new MochaUI.Window({ + id: "setLocationPage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Set location)QBT_TR[CONTEXT=TransferListWidget]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: true, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 400, + height: 130 + }); }; - renameFN = function() { + renameFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length == 1) { - const hash = hashes[0]; - const row = torrentsTable.rows[hash]; - if (row) { - new MochaUI.Window({ - id: 'renamePage', - title: "QBT_TR(Rename)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI("rename.html").setData("hash", hash).setData("name", row.full_data.name).toString(), - scrollbars: false, - resizable: true, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 400, - height: 100 - }); - } - } + if (hashes.length !== 1) + return; + + const row = torrentsTable.getRow(hashes[0]); + if (!row) + return; + + const contentURL = new URL("rename.html", window.location); + contentURL.search = new URLSearchParams({ + hash: hashes[0], + name: row.full_data.name + }); + new MochaUI.Window({ + id: "renamePage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Rename)QBT_TR[CONTEXT=TransferListWidget]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: true, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 400, + height: 100 + }); }; - renameFilesFN = function() { + renameFilesFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length == 1) { + if (hashes.length === 1) { const hash = hashes[0]; - const row = torrentsTable.rows[hash]; + const row = torrentsTable.getRow(hash); if (row) { new MochaUI.Window({ - id: 'multiRenamePage', + id: "multiRenamePage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Renaming)QBT_TR[CONTEXT=TransferListWidget]", data: { hash: hash, selectedRows: [] }, - loadMethod: 'xhr', - contentURL: 'rename_files.html', + loadMethod: "xhr", + contentURL: "rename_files.html", scrollbars: false, resizable: true, maximizable: false, @@ -546,56 +725,152 @@ const initializeWindows = function() { paddingHorizontal: 0, width: 800, height: 420, - resizeLimit: { 'x': [800], 'y': [420] } + resizeLimit: { x: [800], y: [420] } }); } } }; - torrentNewCategoryFN = function() { - const action = "set"; - const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new MochaUI.Window({ - id: 'newCategoryPage', - title: "QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI("newcategory.html").setData("action", action).setData("hashes", hashes.join('|')).toString(), - scrollbars: false, - resizable: true, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 400, - height: 150 - }); + startVisibleTorrentsFN = () => { + const hashes = torrentsTable.getFilteredTorrentsHashes(selectedStatus, selectedCategory, selectedTag, selectedTracker); + if (hashes.length > 0) { + fetch("api/v2/torrents/start", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|") + }) + }) + .then((response) => { + if (!response.ok) { + alert("QBT_TR(Unable to start torrents.)QBT_TR[CONTEXT=HttpServer]"); + return; + } + + updateMainData(); + updatePropertiesPanel(); + }); + } + }; + + stopVisibleTorrentsFN = () => { + const hashes = torrentsTable.getFilteredTorrentsHashes(selectedStatus, selectedCategory, selectedTag, selectedTracker); + if (hashes.length > 0) { + fetch("api/v2/torrents/stop", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|") + }) + }) + .then((response) => { + if (!response.ok) { + alert("QBT_TR(Unable to stop torrents.)QBT_TR[CONTEXT=HttpServer]"); + return; + } + + updateMainData(); + updatePropertiesPanel(); + }); } }; - torrentSetCategoryFN = function(categoryHash) { - let categoryName = ''; - if (categoryHash != 0) - categoryName = category_list[categoryHash].name; + deleteVisibleTorrentsFN = () => { + const hashes = torrentsTable.getFilteredTorrentsHashes(selectedStatus, selectedCategory, selectedTag, selectedTracker); + if (hashes.length > 0) { + if (window.qBittorrent.Cache.preferences.get().confirm_torrent_deletion) { + new MochaUI.Modal({ + ...window.qBittorrent.Dialog.baseModalOptions, + id: "confirmDeletionPage", + title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]", + data: { + hashes: hashes, + isDeletingVisibleTorrents: true + }, + contentURL: "views/confirmdeletion.html", + onContentLoaded: (w) => { + MochaUI.resizeWindow(w, { centered: true }); + MochaUI.centerWindow(w); + } + }); + } + else { + fetch("api/v2/torrents/delete", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + deleteFiles: false, + }) + }) + .then((response) => { + if (!response.ok) { + alert("QBT_TR(Unable to delete torrents.)QBT_TR[CONTEXT=HttpServer]"); + return; + } + + torrentsTable.deselectAll(); + updateMainData(); + updatePropertiesPanel(); + }); + } + } + }; + + torrentNewCategoryFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/setCategory', - method: 'post', - data: { + if (hashes.length <= 0) + return; + + const contentURL = new URL("newcategory.html", window.location); + contentURL.search = new URLSearchParams({ + action: "set", + hashes: hashes.join("|") + }); + new MochaUI.Window({ + id: "newCategoryPage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: true, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 400, + height: 150 + }); + }; + + torrentSetCategoryFN = (category) => { + const hashes = torrentsTable.selectedRowsIds(); + if (hashes.length <= 0) + return; + + fetch("api/v2/torrents/setCategory", { + method: "POST", + body: new URLSearchParams({ hashes: hashes.join("|"), - category: categoryName - } - }).send(); - } + category: category + }) + }) + .then((response) => { + if (!response.ok) + return; + + updateMainData(); + }); }; - createCategoryFN = function() { - const action = "create"; + createCategoryFN = () => { + const contentURL = new URL("newcategory.html", window.location); + contentURL.search = new URLSearchParams({ + action: "create" + }); new MochaUI.Window({ - id: 'newCategoryPage', + id: "newCategoryPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(New Category)QBT_TR[CONTEXT=CategoryFilterWidget]", - loadMethod: 'iframe', - contentURL: new URI("newcategory.html").setData("action", action).toString(), + loadMethod: "iframe", + contentURL: contentURL.toString(), scrollbars: false, resizable: true, maximizable: false, @@ -604,17 +879,20 @@ const initializeWindows = function() { width: 400, height: 150 }); - updateMainData(); }; - createSubcategoryFN = function(categoryHash) { - const action = "createSubcategory"; - const categoryName = category_list[categoryHash].name + "/"; + createSubcategoryFN = (category) => { + const contentURL = new URL("newcategory.html", window.location); + contentURL.search = new URLSearchParams({ + action: "createSubcategory", + categoryName: `${category}/` + }); new MochaUI.Window({ - id: 'newSubcategoryPage', + id: "newSubcategoryPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(New Category)QBT_TR[CONTEXT=CategoryFilterWidget]", - loadMethod: 'iframe', - contentURL: new URI("newcategory.html").setData("action", action).setData("categoryName", categoryName).toString(), + loadMethod: "iframe", + contentURL: contentURL.toString(), scrollbars: false, resizable: true, maximizable: false, @@ -623,18 +901,21 @@ const initializeWindows = function() { width: 400, height: 150 }); - updateMainData(); }; - editCategoryFN = function(categoryHash) { - const action = "edit"; - const categoryName = category_list[categoryHash].name; - const savePath = category_list[categoryHash].savePath; + editCategoryFN = (category) => { + const contentURL = new URL("newcategory.html", window.location); + contentURL.search = new URLSearchParams({ + action: "edit", + categoryName: category, + savePath: categoryMap.get(category).savePath + }); new MochaUI.Window({ - id: 'editCategoryPage', + id: "editCategoryPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Edit Category)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI('newcategory.html').setData("action", action).setData("categoryName", categoryName).setData("savePath", savePath).toString(), + loadMethod: "iframe", + contentURL: contentURL.toString(), scrollbars: false, resizable: true, maximizable: false, @@ -643,139 +924,108 @@ const initializeWindows = function() { width: 400, height: 150 }); - updateMainData(); }; - removeCategoryFN = function(categoryHash) { - const categoryName = category_list[categoryHash].name; - new Request({ - url: 'api/v2/torrents/removeCategories', - method: 'post', - data: { - categories: categoryName - } - }).send(); - setCategoryFilter(CATEGORIES_ALL); + removeCategoryFN = (category) => { + fetch("api/v2/torrents/removeCategories", { + method: "POST", + body: new URLSearchParams({ + categories: category + }) + }) + .then((response) => { + if (!response.ok) + return; + + setCategoryFilter(CATEGORIES_ALL); + updateMainData(); + }); }; - deleteUnusedCategoriesFN = function() { + deleteUnusedCategoriesFN = () => { const categories = []; - for (const hash in category_list) { - if (torrentsTable.getFilteredTorrentsNumber('all', hash, TAGS_ALL, TRACKERS_ALL) === 0) - categories.push(category_list[hash].name); - } - new Request({ - url: 'api/v2/torrents/removeCategories', - method: 'post', - data: { - categories: categories.join('\n') - } - }).send(); - setCategoryFilter(CATEGORIES_ALL); - }; - - startTorrentsByCategoryFN = function(categoryHash) { - const hashes = torrentsTable.getFilteredTorrentsHashes('all', categoryHash, TAGS_ALL, TRACKERS_ALL); - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/resume', - method: 'post', - data: { - hashes: hashes.join("|") - } - }).send(); - updateMainData(); + for (const category of categoryMap.keys()) { + if (torrentsTable.getFilteredTorrentsNumber("all", category, TAGS_ALL, TRACKERS_ALL) === 0) + categories.push(category); } - }; - - pauseTorrentsByCategoryFN = function(categoryHash) { - const hashes = torrentsTable.getFilteredTorrentsHashes('all', categoryHash, TAGS_ALL, TRACKERS_ALL); - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/pause', - method: 'post', - data: { - hashes: hashes.join("|") - } - }).send(); - updateMainData(); - } - }; - - deleteTorrentsByCategoryFN = function(categoryHash) { - const hashes = torrentsTable.getFilteredTorrentsHashes('all', categoryHash, TAGS_ALL, TRACKERS_ALL); - if (hashes.length) { - new MochaUI.Window({ - id: 'confirmDeletionPage', - title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]", - loadMethod: 'iframe', - contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).toString(), - scrollbars: false, - resizable: false, - maximizable: false, - padding: 10, - width: 424, - height: 140 + fetch("api/v2/torrents/removeCategories", { + method: "POST", + body: new URLSearchParams({ + categories: categories.join("\n") + }) + }) + .then((response) => { + if (!response.ok) + return; + + setCategoryFilter(CATEGORIES_ALL); + updateMainData(); }); - updateMainData(); - } }; - torrentAddTagsFN = function() { - const action = "set"; + torrentAddTagsFN = () => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new MochaUI.Window({ - id: 'newTagPage', - title: "QBT_TR(Add Tags)QBT_TR[CONTEXT=TransferListWidget]", - loadMethod: 'iframe', - contentURL: new URI("newtag.html").setData("action", action).setData("hashes", hashes.join("|")).toString(), - scrollbars: false, - resizable: true, - maximizable: false, - paddingVertical: 0, - paddingHorizontal: 0, - width: 250, - height: 100 - }); - } + if (hashes.length <= 0) + return; + + const contentURL = new URL("newtag.html", window.location); + contentURL.search = new URLSearchParams({ + action: "set", + hashes: hashes.join("|") + }); + new MochaUI.Window({ + id: "newTagPage", + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(Add tags)QBT_TR[CONTEXT=TransferListWidget]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: true, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: 250, + height: 100 + }); }; - torrentSetTagsFN = function(tagHash, isSet) { - const tagName = ((tagHash === '0') ? '' : tagList[tagHash].name); + torrentSetTagsFN = (tag, isSet) => { const hashes = torrentsTable.selectedRowsIds(); - if (hashes.length) { - new Request({ - url: (isSet ? 'api/v2/torrents/addTags' : 'api/v2/torrents/removeTags'), - method: 'post', - data: { - hashes: hashes.join("|"), - tags: tagName, - } - }).send(); - } + if (hashes.length <= 0) + return; + + fetch((isSet ? "api/v2/torrents/addTags" : "api/v2/torrents/removeTags"), { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|"), + tags: tag + }) + }); }; - torrentRemoveAllTagsFN = function() { + torrentRemoveAllTagsFN = () => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: ('api/v2/torrents/removeTags'), - method: 'post', - data: { - hashes: hashes.join("|"), - } - }).send(); + fetch("api/v2/torrents/removeTags", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|") + }) + }); } }; - createTagFN = function() { - const action = "create"; + createTagFN = () => { + const contentURL = new URL("newtag.html", window.location); + contentURL.search = new URLSearchParams({ + action: "create" + }); new MochaUI.Window({ - id: 'newTagPage', + id: "newTagPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(New Tag)QBT_TR[CONTEXT=TagFilterWidget]", - loadMethod: 'iframe', - contentURL: new URI("newtag.html").setData("action", action).toString(), + loadMethod: "iframe", + contentURL: contentURL.toString(), scrollbars: false, resizable: true, maximizable: false, @@ -787,171 +1037,59 @@ const initializeWindows = function() { updateMainData(); }; - removeTagFN = function(tagHash) { - const tagName = tagList[tagHash].name; - new Request({ - url: 'api/v2/torrents/deleteTags', - method: 'post', - data: { - tags: tagName - } - }).send(); + removeTagFN = (tag) => { + fetch("api/v2/torrents/deleteTags", { + method: "POST", + body: new URLSearchParams({ + tags: tag + }) + }); setTagFilter(TAGS_ALL); }; - deleteUnusedTagsFN = function() { + deleteUnusedTagsFN = () => { const tags = []; - for (const hash in tagList) { - if (torrentsTable.getFilteredTorrentsNumber('all', CATEGORIES_ALL, hash, TRACKERS_ALL) === 0) - tags.push(tagList[hash].name); + for (const tag of tagMap.keys()) { + if (torrentsTable.getFilteredTorrentsNumber("all", CATEGORIES_ALL, tag, TRACKERS_ALL) === 0) + tags.push(tag); } - new Request({ - url: 'api/v2/torrents/deleteTags', - method: 'post', - data: { - tags: tags.join(',') - } - }).send(); + fetch("api/v2/torrents/deleteTags", { + method: "POST", + body: new URLSearchParams({ + tags: tags.join(",") + }) + }); setTagFilter(TAGS_ALL); }; - startTorrentsByTagFN = function(tagHash) { - const hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, tagHash, TRACKERS_ALL); - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/resume', - method: 'post', - data: { - hashes: hashes.join("|") - } - }).send(); - updateMainData(); - } - }; - - pauseTorrentsByTagFN = function(tagHash) { - const hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, tagHash, TRACKERS_ALL); - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/pause', - method: 'post', - data: { - hashes: hashes.join("|") - } - }).send(); - updateMainData(); - } - }; - - deleteTorrentsByTagFN = function(tagHash) { - const hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, tagHash, TRACKERS_ALL); - if (hashes.length) { - new MochaUI.Window({ - id: 'confirmDeletionPage', - title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]", - loadMethod: 'iframe', - contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).toString(), - scrollbars: false, - resizable: false, - maximizable: false, - padding: 10, - width: 424, - height: 140 - }); - updateMainData(); - } - }; - - resumeTorrentsByTrackerFN = function(trackerHash) { - const trackerHashInt = Number.parseInt(trackerHash, 10); - let hashes = []; - switch (trackerHashInt) { - case TRACKERS_ALL: - hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, TAGS_ALL, TRACKERS_ALL); - break; - case TRACKERS_TRACKERLESS: - hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, TAGS_ALL, TRACKERS_TRACKERLESS); - break; - default: - hashes = trackerList.get(trackerHashInt).torrents; - break; - } + deleteTrackerFN = (trackerHost) => { + if ((trackerHost === TRACKERS_ALL) || (trackerHost === TRACKERS_TRACKERLESS)) + return; - if (hashes.length > 0) { - new Request({ - url: 'api/v2/torrents/resume', - method: 'post', - data: { - hashes: hashes.join("|") - } - }).send(); - updateMainData(); - } - }; - - pauseTorrentsByTrackerFN = function(trackerHash) { - const trackerHashInt = Number.parseInt(trackerHash, 10); - let hashes = []; - switch (trackerHashInt) { - case TRACKERS_ALL: - hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, TAGS_ALL, TRACKERS_ALL); - break; - case TRACKERS_TRACKERLESS: - hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, TAGS_ALL, TRACKERS_TRACKERLESS); - break; - default: - hashes = trackerList.get(trackerHashInt).torrents; - break; - } - - if (hashes.length) { - new Request({ - url: 'api/v2/torrents/pause', - method: 'post', - data: { - hashes: hashes.join("|") - } - }).send(); - updateMainData(); - } - }; - - deleteTorrentsByTrackerFN = function(trackerHash) { - const trackerHashInt = Number.parseInt(trackerHash, 10); - let hashes = []; - switch (trackerHashInt) { - case TRACKERS_ALL: - hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, TAGS_ALL, TRACKERS_ALL); - break; - case TRACKERS_TRACKERLESS: - hashes = torrentsTable.getFilteredTorrentsHashes('all', CATEGORIES_ALL, TAGS_ALL, TRACKERS_TRACKERLESS); - break; - default: - hashes = trackerList.get(trackerHashInt).torrents; - break; - } - - if (hashes.length) { - new MochaUI.Window({ - id: 'confirmDeletionPage', - title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]", - loadMethod: 'iframe', - contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).toString(), - scrollbars: false, - resizable: false, - maximizable: false, - padding: 10, - width: 424, - height: 140, - onCloseComplete: function() { - updateMainData(); - setTrackerFilter(TRACKERS_ALL); - } - }); - } + const contentURL = new URL("confirmtrackerdeletion.html", window.location); + contentURL.search = new URLSearchParams({ + host: trackerHost, + urls: [...trackerMap.get(trackerHost).keys()].map(encodeURIComponent).join("|") + }); + new MochaUI.Window({ + id: "confirmDeletionPage", + title: "QBT_TR(Remove tracker)QBT_TR[CONTEXT=confirmDeletionDlg]", + loadMethod: "iframe", + contentURL: contentURL.toString(), + scrollbars: false, + resizable: true, + maximizable: false, + padding: 10, + width: 424, + height: 100, + onCloseComplete: () => { + updateMainData(); + setTrackerFilter(TRACKERS_ALL); + } + }); }; - copyNameFN = function() { + copyNameFN = () => { const selectedRows = torrentsTable.selectedRowsIds(); const names = []; if (selectedRows.length > 0) { @@ -964,7 +1102,7 @@ const initializeWindows = function() { return names.join("\n"); }; - copyInfohashFN = function(policy) { + copyInfohashFN = (policy) => { const selectedRows = torrentsTable.selectedRowsIds(); const infohashes = []; if (selectedRows.length > 0) { @@ -989,7 +1127,7 @@ const initializeWindows = function() { return infohashes.join("\n"); }; - copyMagnetLinkFN = function() { + copyMagnetLinkFN = () => { const selectedRows = torrentsTable.selectedRowsIds(); const magnets = []; if (selectedRows.length > 0) { @@ -1002,11 +1140,11 @@ const initializeWindows = function() { return magnets.join("\n"); }; - copyIdFN = function() { + copyIdFN = () => { return torrentsTable.selectedRowsIds().join("\n"); }; - copyCommentFN = function() { + copyCommentFN = () => { const selectedRows = torrentsTable.selectedRowsIds(); const comments = []; if (selectedRows.length > 0) { @@ -1021,152 +1159,164 @@ const initializeWindows = function() { return comments.join("\n---------\n"); }; - exportTorrentFN = async function() { + exportTorrentFN = async () => { const hashes = torrentsTable.selectedRowsIds(); for (const hash of hashes) { - const row = torrentsTable.rows.get(hash); + const row = torrentsTable.getRow(hash); if (!row) continue; const name = row.full_data.name; - const url = new URI("api/v2/torrents/export"); - url.setData("hash", hash); + const url = new URL("api/v2/torrents/export", window.location); + url.search = new URLSearchParams({ + hash: hash + }); // download response to file - const element = document.createElement("a"); - element.setAttribute("href", url); - element.setAttribute("download", (name + ".torrent")); - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); + await window.qBittorrent.Misc.downloadFile(url, `${name}.torrent`, "QBT_TR(Unable to export torrent file)QBT_TR[CONTEXT=MainWindow]"); // https://stackoverflow.com/questions/53560991/automatic-file-downloads-limited-to-10-files-on-chrome-browser await window.qBittorrent.Misc.sleep(200); } }; - addClickEvent('pauseAll', (e) => { - new Event(e).stop(); + addClickEvent("stopAll", (e) => { + e.preventDefault(); + e.stopPropagation(); - if (confirm('QBT_TR(Would you like to pause all torrents?)QBT_TR[CONTEXT=MainWindow]')) { - new Request({ - url: 'api/v2/torrents/pause', - method: 'post', - data: { + if (confirm("QBT_TR(Would you like to stop all torrents?)QBT_TR[CONTEXT=MainWindow]")) { + fetch("api/v2/torrents/stop", { + method: "POST", + body: new URLSearchParams({ hashes: "all" - } - }).send(); + }) + }); updateMainData(); } }); - addClickEvent('resumeAll', (e) => { - new Event(e).stop(); + addClickEvent("startAll", (e) => { + e.preventDefault(); + e.stopPropagation(); - if (confirm('QBT_TR(Would you like to resume all torrents?)QBT_TR[CONTEXT=MainWindow]')) { - new Request({ - url: 'api/v2/torrents/resume', - method: 'post', - data: { + if (confirm("QBT_TR(Would you like to start all torrents?)QBT_TR[CONTEXT=MainWindow]")) { + fetch("api/v2/torrents/start", { + method: "POST", + body: new URLSearchParams({ hashes: "all" - } - }).send(); + }) + }); updateMainData(); } }); - ['pause', 'resume', 'recheck'].each(function(item) { - addClickEvent(item, function(e) { - new Event(e).stop(); + ["stop", "start", "recheck"].each((item) => { + addClickEvent(item, (e) => { + e.preventDefault(); + e.stopPropagation(); + const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - hashes.each(function(hash, index) { - new Request({ - url: 'api/v2/torrents/' + item, - method: 'post', - data: { + hashes.each((hash, index) => { + fetch(`api/v2/torrents/${item}`, { + method: "POST", + body: new URLSearchParams({ hashes: hash - } - }).send(); + }) + }); }); updateMainData(); } }); }); - ['decreasePrio', 'increasePrio', 'topPrio', 'bottomPrio'].each(function(item) { - addClickEvent(item, function(e) { - new Event(e).stop(); + ["decreasePrio", "increasePrio", "topPrio", "bottomPrio"].each((item) => { + addClickEvent(item, (e) => { + e.preventDefault(); + e.stopPropagation(); setQueuePositionFN(item); }); }); - setQueuePositionFN = function(cmd) { + setQueuePositionFN = (cmd) => { const hashes = torrentsTable.selectedRowsIds(); if (hashes.length) { - new Request({ - url: 'api/v2/torrents/' + cmd, - method: 'post', - data: { + fetch(`api/v2/torrents/${cmd}`, { + method: "POST", + body: new URLSearchParams({ hashes: hashes.join("|") - } - }).send(); + }) + }); updateMainData(); } }; - addClickEvent('about', function(e) { - new Event(e).stop(); - const id = 'aboutpage'; + addClickEvent("about", (e) => { + e.preventDefault(); + e.stopPropagation(); + + const id = "aboutpage"; new MochaUI.Window({ id: id, - title: 'QBT_TR(About qBittorrent)QBT_TR[CONTEXT=AboutDialog]', - loadMethod: 'xhr', - contentURL: new URI("views/about.html").toString(), + icon: "images/qbittorrent-tray.svg", + title: "QBT_TR(About qBittorrent)QBT_TR[CONTEXT=AboutDialog]", + loadMethod: "xhr", + contentURL: "views/about.html", require: { - css: ['css/Tabs.css'] + css: ["css/Tabs.css"] }, toolbar: true, - toolbarURL: 'views/aboutToolbar.html', + toolbarURL: "views/aboutToolbar.html", padding: 10, - width: loadWindowWidth(id, 550), + width: loadWindowWidth(id, 570), height: loadWindowHeight(id, 360), - onResize: function() { + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { saveWindowSize(id); - } + }) }); }); - addClickEvent('logout', function(e) { - new Event(e).stop(); - new Request({ - url: 'api/v2/auth/logout', - method: 'post', - onSuccess: function() { + addClickEvent("logout", (e) => { + e.preventDefault(); + e.stopPropagation(); + + fetch("api/v2/auth/logout", { + method: "POST" + }) + .then((response) => { + if (!response.ok) + return; + window.location.reload(true); - } - }).send(); + }); }); - addClickEvent('shutdown', function(e) { - new Event(e).stop(); - if (confirm('QBT_TR(Are you sure you want to quit qBittorrent?)QBT_TR[CONTEXT=MainWindow]')) { - new Request({ - url: 'api/v2/app/shutdown', - method: 'post', - onSuccess: function() { - document.write(' QBT_TR(qBittorrent has been shutdown)QBT_TR[CONTEXT=HttpServer]

          QBT_TR(qBittorrent has been shutdown)QBT_TR[CONTEXT=HttpServer]

          '); + addClickEvent("shutdown", (e) => { + e.preventDefault(); + e.stopPropagation(); + + if (confirm("QBT_TR(Are you sure you want to quit qBittorrent?)QBT_TR[CONTEXT=MainWindow]")) { + fetch("api/v2/app/shutdown", { + method: "POST" + }) + .then((response) => { + if (!response.ok) + return; + + const shutdownMessage = "QBT_TR(%1 has been shutdown)QBT_TR[CONTEXT=HttpServer]".replace("%1", window.qBittorrent.Client.mainTitle()); + document.write(` ${shutdownMessage}

          ${shutdownMessage}

          `); document.close(); - stop(); - } - }).send(); + window.stop(); + window.qBittorrent.Client.stop(); + }); } }); // Deactivate menu header links - $$('a.returnFalse').each(function(el) { - el.addEvent('click', function(e) { - new Event(e).stop(); + for (const el of document.querySelectorAll("a.returnFalse")) { + el.addEventListener("click", (e) => { + e.preventDefault(); + e.stopPropagation(); }); - }); + } }; diff --git a/src/webui/www/private/scripts/pathAutofill.js b/src/webui/www/private/scripts/pathAutofill.js new file mode 100644 index 000000000000..2e260f145f8a --- /dev/null +++ b/src/webui/www/private/scripts/pathAutofill.js @@ -0,0 +1,92 @@ +/* + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2024 Paweł Kotiuk + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give permission to + * link this program with the OpenSSL project"s "OpenSSL" library (or with + * modified versions of it that use the same license as the "OpenSSL" library), + * and distribute the linked executables. You must obey the GNU General Public + * License in all respects for all of the code used other than "OpenSSL". If you + * modify file(s), you may extend this exception to your version of the file(s), + * but you are not obligated to do so. If you do not wish to do so, delete this + * exception statement from your version. + */ + +"use strict"; + +/* +File implementing auto-fill for the path input field in the path dialogs. +*/ + +window.qBittorrent ??= {}; +window.qBittorrent.pathAutofill ??= (() => { + const exports = () => { + return { + attachPathAutofill: attachPathAutofill + }; + }; + + const showInputSuggestions = (inputElement, names) => { + const datalist = document.createElement("datalist"); + datalist.id = `${inputElement.id}Suggestions`; + for (const name of names) { + const option = document.createElement("option"); + option.value = name; + datalist.appendChild(option); + } + + const oldDatalist = document.getElementById(`${inputElement.id}Suggestions`); + if (oldDatalist !== null) { + oldDatalist.replaceWith(datalist); + } + else { + inputElement.appendChild(datalist); + inputElement.setAttribute("list", datalist.id); + } + }; + + const showPathSuggestions = (element, mode) => { + const partialPath = element.value; + if (partialPath === "") + return; + + fetch(`api/v2/app/getDirectoryContent?dirPath=${partialPath}&mode=${mode}`, { + method: "GET", + cache: "no-store" + }) + .then(response => response.json()) + .then(filesList => { showInputSuggestions(element, filesList); }) + .catch(error => {}); + }; + + function attachPathAutofill() { + const directoryInputs = document.querySelectorAll(".pathDirectory:not(.pathAutoFillInitialized)"); + for (const input of directoryInputs) { + input.addEventListener("input", function() { showPathSuggestions(this, "dirs"); }); + input.classList.add("pathAutoFillInitialized"); + } + + const fileInputs = document.querySelectorAll(".pathFile:not(.pathAutoFillInitialized)"); + for (const input of fileInputs) { + input.addEventListener("input", function() { showPathSuggestions(this, "all"); }); + input.classList.add("pathAutoFillInitialized"); + } + }; + + return exports(); +})(); +Object.freeze(window.qBittorrent.pathAutofill); diff --git a/src/webui/www/private/scripts/piecesbar.js b/src/webui/www/private/scripts/piecesbar.js index 96d21af866a1..49d159cb143f 100644 --- a/src/webui/www/private/scripts/piecesbar.js +++ b/src/webui/www/private/scripts/piecesbar.js @@ -26,13 +26,10 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.PiecesBar = (() => { +window.qBittorrent ??= {}; +window.qBittorrent.PiecesBar ??= (() => { const exports = () => { return { PiecesBar: PiecesBar @@ -49,38 +46,35 @@ window.qBittorrent.PiecesBar = (() => { let piecesBarUniqueId = 0; const PiecesBar = new Class({ - initialize(pieces, parameters) { + initialize: (pieces, parameters) => { const vals = { - 'id': 'piecesbar_' + (piecesBarUniqueId++), - 'width': 0, - 'height': 0, - 'downloadingColor': 'green', - 'haveColor': 'blue', - 'borderSize': 1, - 'borderColor': '#999' + id: `piecesbar_${piecesBarUniqueId++}`, + width: 0, + height: 0, + downloadingColor: "hsl(110deg 94% 27%)", // @TODO palette vars not supported for this value, apply average + haveColor: "hsl(210deg 55% 55%)", // @TODO palette vars not supported for this value, apply average + borderSize: 1, + borderColor: "var(--color-border-default)" }; - if (parameters && ($type(parameters) === 'object')) - $extend(vals, parameters); + if (parameters && (typeOf(parameters) === "object")) + Object.append(vals, parameters); vals.height = Math.max(vals.height, 12); - const obj = new Element('div', { - 'id': vals.id, - 'class': 'piecesbarWrapper', - 'styles': { - 'border': vals.borderSize.toString() + 'px solid ' + vals.borderColor, - 'height': vals.height.toString() + 'px', - } - }); + const obj = document.createElement("div"); + obj.id = vals.id; + obj.className = "piecesbarWrapper"; + obj.style.border = `${vals.borderSize}px solid ${vals.borderColor}`; + obj.style.height = `${vals.height}px`; obj.vals = vals; - obj.vals.pieces = $pick(pieces, []); - - obj.vals.canvas = new Element('canvas', { - 'id': vals.id + '_canvas', - 'class': 'piecesbarCanvas', - 'width': (vals.width - (2 * vals.borderSize)).toString(), - 'height': '1' // will stretch vertically to take up the height of the parent - }); + obj.vals.pieces = [pieces, []].pick(); + + const canvas = document.createElement("canvas"); + canvas.id = `${vals.id}_canvas`; + canvas.className = "piecesbarCanvas"; + canvas.width = `${vals.width - (2 * vals.borderSize)}`; + canvas.height = "1"; // will stretch vertically to take up the height of the parent + obj.vals.canvas = canvas; obj.appendChild(obj.vals.canvas); obj.setPieces = setPieces; @@ -91,7 +85,7 @@ window.qBittorrent.PiecesBar = (() => { if (vals.width > 0) obj.setPieces(vals.pieces); else - setTimeout(() => { checkForParent(obj.id); }, 1); + setTimeout(() => { checkForParent(obj.id); }); return obj; } @@ -124,7 +118,7 @@ window.qBittorrent.PiecesBar = (() => { this.vals.canvas.width = width - (2 * this.vals.borderSize); const canvas = this.vals.canvas; - const ctx = canvas.getContext('2d'); + const ctx = canvas.getContext("2d"); ctx.clearRect(0, 0, canvas.width, canvas.height); const imageWidth = canvas.width; @@ -136,13 +130,10 @@ window.qBittorrent.PiecesBar = (() => { let maxStatus = 0; for (const status of pieces) { - if (status > maxStatus) { + if (status > maxStatus) maxStatus = status; - } - - if (status < minStatus) { + if (status < minStatus) minStatus = status; - } } // if no progress then don't do anything @@ -220,15 +211,13 @@ window.qBittorrent.PiecesBar = (() => { statusValues[STATUS_DOWNLOADING] = Math.min(statusValues[STATUS_DOWNLOADING], 1); statusValues[STATUS_DOWNLOADED] = Math.min(statusValues[STATUS_DOWNLOADED], 1); - if (!lastValue) { + if (!lastValue) lastValue = statusValues; - } // group contiguous colors together and draw as a single rectangle if ((lastValue[STATUS_DOWNLOADING] === statusValues[STATUS_DOWNLOADING]) - && (lastValue[STATUS_DOWNLOADED] === statusValues[STATUS_DOWNLOADED])) { + && (lastValue[STATUS_DOWNLOADED] === statusValues[STATUS_DOWNLOADED])) continue; - } const rectangleWidth = x - rectangleStart; this._drawStatus(ctx, rectangleStart, rectangleWidth, lastValue); @@ -246,7 +235,7 @@ window.qBittorrent.PiecesBar = (() => { function drawStatus(ctx, start, width, statusValues) { // mix the colors by using transparency and a composite mode - ctx.globalCompositeOperation = 'lighten'; + ctx.globalCompositeOperation = "lighten"; if (statusValues[STATUS_DOWNLOADING]) { ctx.globalAlpha = statusValues[STATUS_DOWNLOADING]; @@ -261,17 +250,16 @@ window.qBittorrent.PiecesBar = (() => { } } - function checkForParent(id) { + const checkForParent = (id) => { const obj = $(id); if (!obj) return; if (!obj.parentNode) - return setTimeout(function() { checkForParent(id); }, 1); + return setTimeout(() => { checkForParent(id); }, 100); obj.refresh(); - } + }; return exports(); })(); - Object.freeze(window.qBittorrent.PiecesBar); diff --git a/src/webui/www/private/scripts/progressbar.js b/src/webui/www/private/scripts/progressbar.js index e83746bd89cd..5489b8877e0d 100644 --- a/src/webui/www/private/scripts/progressbar.js +++ b/src/webui/www/private/scripts/progressbar.js @@ -26,79 +26,78 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.ProgressBar = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.ProgressBar ??= (() => { + const exports = () => { return { ProgressBar: ProgressBar }; }; - let ProgressBars = 0; + let progressBars = 0; const ProgressBar = new Class({ - initialize: function(value, parameters) { + initialize: (value, parameters) => { const vals = { - 'id': 'progressbar_' + (ProgressBars++), - 'value': $pick(value, 0), - 'width': 0, - 'height': 0, - 'darkbg': '#006', - 'darkfg': '#fff', - 'lightbg': '#fff', - 'lightfg': '#000' + id: `progressbar_${progressBars++}`, + value: [value, 0].pick(), + width: 0, + height: 0, + darkbg: "var(--color-background-blue)", + darkfg: "var(--color-text-white)", + lightbg: "var(--color-background-default)", + lightfg: "var(--color-text-default)" }; - if (parameters && $type(parameters) == 'object') - $extend(vals, parameters); + if (parameters && (typeOf(parameters) === "object")) + Object.append(vals, parameters); if (vals.height < 12) vals.height = 12; - const obj = new Element('div', { - 'id': vals.id, - 'class': 'progressbar_wrapper', - 'styles': { - 'border': '1px solid #000', - 'width': vals.width, - 'height': vals.height, - 'position': 'relative', - 'margin': '0 auto' - } - }); + + const obj = document.createElement("div"); + obj.id = vals.id; + obj.className = "progressbar_wrapper"; + obj.style.border = "1px solid var(--color-border-default)"; + obj.style.boxSizing = "content-box"; + obj.style.width = `${vals.width}px`; + obj.style.height = `${vals.height}px`; + obj.style.position = "relative"; + obj.style.margin = "0 auto"; obj.vals = vals; - obj.vals.value = $pick(value, 0); // Fix by Chris - obj.vals.dark = new Element('div', { - 'id': vals.id + '_dark', - 'class': 'progressbar_dark', - 'styles': { - 'width': vals.width, - 'height': vals.height, - 'background': vals.darkbg, - 'color': vals.darkfg, - 'position': 'absolute', - 'text-align': 'center', - 'left': 0, - 'top': 0, - 'line-height': vals.height - } - }); - obj.vals.light = new Element('div', { - 'id': vals.id + '_light', - 'class': 'progressbar_light', - 'styles': { - 'width': vals.width, - 'height': vals.height, - 'background': vals.lightbg, - 'color': vals.lightfg, - 'position': 'absolute', - 'text-align': 'center', - 'left': 0, - 'top': 0, - 'line-height': vals.height - } - }); + obj.vals.value = [value, 0].pick(); + + const dark = document.createElement("div"); + dark.id = `${vals.id}_dark`; + dark.className = "progressbar_dark"; + dark.style.width = `${vals.width}px`; + dark.style.height = `${vals.height}px`; + dark.style.background = vals.darkbg; + dark.style.boxSizing = "content-box"; + dark.style.color = vals.darkfg; + dark.style.position = "absolute"; + dark.style.textAlign = "center"; + dark.style.left = "0"; + dark.style.top = "0"; + dark.style.lineHeight = `${vals.height}px`; + + obj.vals.dark = dark; + + const light = document.createElement("div"); + light.id = `${vals.id}_light`; + light.className = "progressbar_light"; + light.style.width = `${vals.width}px`; + light.style.height = `${vals.height}px`; + light.style.background = vals.lightbg; + light.style.boxSizing = "content-box"; + light.style.color = vals.lightfg; + light.style.position = "absolute"; + light.style.textAlign = "center"; + light.style.left = "0"; + light.style.top = "0"; + light.style.lineHeight = `${vals.height}px`; + + obj.vals.light = light; + obj.appendChild(obj.vals.dark); obj.appendChild(obj.vals.light); obj.getValue = ProgressBar_getValue; @@ -107,7 +106,7 @@ window.qBittorrent.ProgressBar = (function() { if (vals.width) obj.setValue(vals.value); else - setTimeout('ProgressBar_checkForParent("' + obj.id + '")', 1); + setTimeout(ProgressBar_checkForParent, 0, obj.id); return obj; } }); @@ -117,48 +116,45 @@ window.qBittorrent.ProgressBar = (function() { } function ProgressBar_setValue(value) { - value = parseFloat(value); - if (isNaN(value)) - value = 0; - if (value > 100) - value = 100; - if (value < 0) + value = Number(value); + if (Number.isNaN(value)) value = 0; + value = Math.min(Math.max(value, 0), 100); this.vals.value = value; - this.vals.dark.empty(); - this.vals.light.empty(); - this.vals.dark.appendText(value.round(1).toFixed(1) + '%'); - this.vals.light.appendText(value.round(1).toFixed(1) + '%'); - const r = parseInt(this.vals.width * (value / 100)); - this.vals.dark.setStyle('clip', 'rect(0,' + r + 'px,' + this.vals.height + 'px,0)'); - this.vals.light.setStyle('clip', 'rect(0,' + this.vals.width + 'px,' + this.vals.height + 'px,' + r + 'px)'); + + const displayedValue = `${window.qBittorrent.Misc.toFixedPointString(value, 1)}%`; + this.vals.dark.textContent = displayedValue; + this.vals.light.textContent = displayedValue; + + const r = Number(this.vals.width * (value / 100)); + this.vals.dark.style.clipPath = `inset(0 calc(100% - ${r}px) 0 0)`; + this.vals.light.style.clipPath = `inset(0 0 0 ${r}px)`; } function ProgressBar_setWidth(value) { if (this.vals.width !== value) { this.vals.width = value; - this.setStyle('width', value); - this.vals.dark.setStyle('width', value); - this.vals.light.setStyle('width', value); + this.style.width = `${value}px`; + this.vals.dark.style.width = `${value}px`; + this.vals.light.style.width = `${value}px`; this.setValue(this.vals.value); } } - function ProgressBar_checkForParent(id) { + const ProgressBar_checkForParent = (id) => { const obj = $(id); if (!obj) return; if (!obj.parentNode) - return setTimeout('ProgressBar_checkForParent("' + id + '")', 1); - obj.setStyle('width', '100%'); + return setTimeout(ProgressBar_checkForParent, 100, id); + obj.style.width = "100%"; const w = obj.offsetWidth; - obj.vals.dark.setStyle('width', w); - obj.vals.light.setStyle('width', w); + obj.vals.dark.style.width = `${w}px`; + obj.vals.light.style.width = `${w}px`; obj.vals.width = w; obj.setValue(obj.vals.value); - } + }; return exports(); })(); - Object.freeze(window.qBittorrent.ProgressBar); diff --git a/src/webui/www/private/scripts/prop-files.js b/src/webui/www/private/scripts/prop-files.js index 19ae1c6bc9bc..e5eaae54ade2 100644 --- a/src/webui/www/private/scripts/prop-files.js +++ b/src/webui/www/private/scripts/prop-files.js @@ -26,14 +26,11 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.PropFiles = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.PropFiles ??= (() => { + const exports = () => { return { normalizePriority: normalizePriority, isDownloadCheckboxExists: isDownloadCheckboxExists, @@ -45,7 +42,8 @@ window.qBittorrent.PropFiles = (function() { updateData: updateData, collapseIconClicked: collapseIconClicked, expandFolder: expandFolder, - collapseFolder: collapseFolder + collapseFolder: collapseFolder, + clear: clear }; }; @@ -55,7 +53,7 @@ window.qBittorrent.PropFiles = (function() { let is_seed = true; let current_hash = ""; - const normalizePriority = function(priority) { + const normalizePriority = (priority) => { switch (priority) { case FilePriority.Ignored: case FilePriority.Normal: @@ -68,7 +66,7 @@ window.qBittorrent.PropFiles = (function() { } }; - const getAllChildren = function(id, fileId) { + const getAllChildren = (id, fileId) => { const node = torrentFilesTable.getNode(id); if (!node.isFolder) { return { @@ -80,9 +78,9 @@ window.qBittorrent.PropFiles = (function() { const rowIds = []; const fileIds = []; - const getChildFiles = function(node) { + const getChildFiles = (node) => { if (node.isFolder) { - node.children.each(function(child) { + node.children.each((child) => { getChildFiles(child); }); } @@ -92,7 +90,7 @@ window.qBittorrent.PropFiles = (function() { } }; - node.children.each(function(child) { + node.children.each((child) => { getChildFiles(child); }); @@ -102,13 +100,13 @@ window.qBittorrent.PropFiles = (function() { }; }; - const fileCheckboxClicked = function(e) { + const fileCheckboxClicked = (e) => { e.stopPropagation(); const checkbox = e.target; const priority = checkbox.checked ? FilePriority.Normal : FilePriority.Ignored; - const id = checkbox.get('data-id'); - const fileId = checkbox.get('data-file-id'); + const id = checkbox.getAttribute("data-id"); + const fileId = checkbox.getAttribute("data-file-id"); const rows = getAllChildren(id, fileId); @@ -116,11 +114,11 @@ window.qBittorrent.PropFiles = (function() { updateGlobalCheckbox(); }; - const fileComboboxChanged = function(e) { + const fileComboboxChanged = (e) => { const combobox = e.target; const priority = combobox.value; - const id = combobox.get('data-id'); - const fileId = combobox.get('data-file-id'); + const id = combobox.getAttribute("data-id"); + const fileId = combobox.getAttribute("data-file-id"); const rows = getAllChildren(id, fileId); @@ -128,29 +126,29 @@ window.qBittorrent.PropFiles = (function() { updateGlobalCheckbox(); }; - const isDownloadCheckboxExists = function(id) { - return ($('cbPrio' + id) !== null); + const isDownloadCheckboxExists = (id) => { + return $(`cbPrio${id}`) !== null; }; - const createDownloadCheckbox = function(id, fileId, checked) { - const checkbox = new Element('input'); - checkbox.set('type', 'checkbox'); - checkbox.set('id', 'cbPrio' + id); - checkbox.set('data-id', id); - checkbox.set('data-file-id', fileId); - checkbox.set('class', 'DownloadedCB'); - checkbox.addEvent('click', fileCheckboxClicked); + const createDownloadCheckbox = (id, fileId, checked) => { + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.id = `cbPrio${id}`; + checkbox.setAttribute("data-id", id); + checkbox.setAttribute("data-file-id", fileId); + checkbox.className = "DownloadedCB"; + checkbox.addEventListener("click", fileCheckboxClicked); updateCheckbox(checkbox, checked); return checkbox; }; - const updateDownloadCheckbox = function(id, checked) { - const checkbox = $('cbPrio' + id); + const updateDownloadCheckbox = (id, checked) => { + const checkbox = $(`cbPrio${id}`); updateCheckbox(checkbox, checked); }; - const updateCheckbox = function(checkbox, checked) { + const updateCheckbox = (checkbox, checked) => { switch (checked) { case TriState.Checked: setCheckboxChecked(checkbox); @@ -164,52 +162,50 @@ window.qBittorrent.PropFiles = (function() { } }; - const isPriorityComboExists = function(id) { - return ($('comboPrio' + id) !== null); + const isPriorityComboExists = (id) => { + return $(`comboPrio${id}`) !== null; }; - const createPriorityOptionElement = function(priority, selected, html) { - const elem = new Element('option'); - elem.set('value', priority.toString()); - elem.set('html', html); - if (selected) - elem.selected = true; - return elem; - }; + const createPriorityCombo = (id, fileId, selectedPriority) => { + const createOption = (priority, isSelected, text) => { + const option = document.createElement("option"); + option.value = priority.toString(); + option.selected = isSelected; + option.textContent = text; + return option; + }; - const createPriorityCombo = function(id, fileId, selectedPriority) { - const select = new Element('select'); - select.set('id', 'comboPrio' + id); - select.set('data-id', id); - select.set('data-file-id', fileId); - select.addClass('combo_priority'); - select.addEvent('change', fileComboboxChanged); + const select = document.createElement("select"); + select.id = `comboPrio${id}`; + select.setAttribute("data-id", id); + select.setAttribute("data-file-id", fileId); + select.classList.add("combo_priority"); + select.addEventListener("change", fileComboboxChanged); - createPriorityOptionElement(FilePriority.Ignored, (FilePriority.Ignored === selectedPriority), 'QBT_TR(Do not download)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select); - createPriorityOptionElement(FilePriority.Normal, (FilePriority.Normal === selectedPriority), 'QBT_TR(Normal)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select); - createPriorityOptionElement(FilePriority.High, (FilePriority.High === selectedPriority), 'QBT_TR(High)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select); - createPriorityOptionElement(FilePriority.Maximum, (FilePriority.Maximum === selectedPriority), 'QBT_TR(Maximum)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select); + select.appendChild(createOption(FilePriority.Ignored, (FilePriority.Ignored === selectedPriority), "QBT_TR(Do not download)QBT_TR[CONTEXT=PropListDelegate]")); + select.appendChild(createOption(FilePriority.Normal, (FilePriority.Normal === selectedPriority), "QBT_TR(Normal)QBT_TR[CONTEXT=PropListDelegate]")); + select.appendChild(createOption(FilePriority.High, (FilePriority.High === selectedPriority), "QBT_TR(High)QBT_TR[CONTEXT=PropListDelegate]")); + select.appendChild(createOption(FilePriority.Maximum, (FilePriority.Maximum === selectedPriority), "QBT_TR(Maximum)QBT_TR[CONTEXT=PropListDelegate]")); // "Mixed" priority is for display only; it shouldn't be selectable - const mixedPriorityOption = createPriorityOptionElement(FilePriority.Mixed, (FilePriority.Mixed === selectedPriority), 'QBT_TR(Mixed)QBT_TR[CONTEXT=PropListDelegate]'); - mixedPriorityOption.set('disabled', true); - mixedPriorityOption.injectInside(select); + const mixedPriorityOption = createOption(FilePriority.Mixed, (FilePriority.Mixed === selectedPriority), "QBT_TR(Mixed)QBT_TR[CONTEXT=PropListDelegate]"); + mixedPriorityOption.disabled = true; + select.appendChild(mixedPriorityOption); return select; }; - const updatePriorityCombo = function(id, selectedPriority) { - const combobox = $('comboPrio' + id); - - if (parseInt(combobox.value) !== selectedPriority) + const updatePriorityCombo = (id, selectedPriority) => { + const combobox = $(`comboPrio${id}`); + if (Number(combobox.value) !== selectedPriority) selectComboboxPriority(combobox, selectedPriority); }; - const selectComboboxPriority = function(combobox, priority) { + const selectComboboxPriority = (combobox, priority) => { const options = combobox.options; for (let i = 0; i < options.length; ++i) { const option = options[i]; - if (parseInt(option.value) === priority) + if (Number(option.value) === priority) option.selected = true; else option.selected = false; @@ -218,18 +214,18 @@ window.qBittorrent.PropFiles = (function() { combobox.value = priority; }; - const switchCheckboxState = function(e) { + const switchCheckboxState = (e) => { e.stopPropagation(); const rowIds = []; const fileIds = []; let priority = FilePriority.Ignored; - const checkbox = $('tristate_cb'); + const checkbox = $("tristate_cb"); if (checkbox.state === "checked") { setCheckboxUnchecked(checkbox); // set file priority for all checked to Ignored - torrentFilesTable.getFilteredAndSortedRows().forEach(function(row) { + torrentFilesTable.getFilteredAndSortedRows().forEach((row) => { const rowId = row.rowId; const fileId = row.full_data.fileId; const isChecked = (row.full_data.checked === TriState.Checked); @@ -244,7 +240,7 @@ window.qBittorrent.PropFiles = (function() { setCheckboxChecked(checkbox); priority = FilePriority.Normal; // set file priority for all unchecked to Normal - torrentFilesTable.getFilteredAndSortedRows().forEach(function(row) { + torrentFilesTable.getFilteredAndSortedRows().forEach((row) => { const rowId = row.rowId; const fileId = row.full_data.fileId; const isUnchecked = (row.full_data.checked === TriState.Unchecked); @@ -260,8 +256,8 @@ window.qBittorrent.PropFiles = (function() { setFilePriority(rowIds, fileIds, priority); }; - const updateGlobalCheckbox = function() { - const checkbox = $('tristate_cb'); + const updateGlobalCheckbox = () => { + const checkbox = $("tristate_cb"); if (isAllCheckboxesChecked()) setCheckboxChecked(checkbox); else if (isAllCheckboxesUnchecked()) @@ -270,64 +266,54 @@ window.qBittorrent.PropFiles = (function() { setCheckboxPartial(checkbox); }; - const setCheckboxChecked = function(checkbox) { + const setCheckboxChecked = (checkbox) => { checkbox.state = "checked"; checkbox.indeterminate = false; checkbox.checked = true; }; - const setCheckboxUnchecked = function(checkbox) { + const setCheckboxUnchecked = (checkbox) => { checkbox.state = "unchecked"; checkbox.indeterminate = false; checkbox.checked = false; }; - const setCheckboxPartial = function(checkbox) { + const setCheckboxPartial = (checkbox) => { checkbox.state = "partial"; checkbox.indeterminate = true; }; - const isAllCheckboxesChecked = function() { - const checkboxes = $$('input.DownloadedCB'); - for (let i = 0; i < checkboxes.length; ++i) { - if (!checkboxes[i].checked) - return false; - } - return true; - }; + const isAllCheckboxesChecked = () => Array.prototype.every.call(document.querySelectorAll("input.DownloadedCB"), (checkbox => checkbox.checked)); - const isAllCheckboxesUnchecked = function() { - const checkboxes = $$('input.DownloadedCB'); - for (let i = 0; i < checkboxes.length; ++i) { - if (checkboxes[i].checked) - return false; - } - return true; - }; + const isAllCheckboxesUnchecked = () => Array.prototype.every.call(document.querySelectorAll("input.DownloadedCB"), (checkbox => !checkbox.checked)); - const setFilePriority = function(ids, fileIds, priority) { + const setFilePriority = (ids, fileIds, priority) => { if (current_hash === "") return; clearTimeout(loadTorrentFilesDataTimer); - new Request({ - url: 'api/v2/torrents/filePrio', - method: 'post', - data: { - 'hash': current_hash, - 'id': fileIds.join('|'), - 'priority': priority - }, - onComplete: function() { + loadTorrentFilesDataTimer = -1; + + fetch("api/v2/torrents/filePrio", { + method: "POST", + body: new URLSearchParams({ + hash: current_hash, + id: fileIds.join("|"), + priority: priority + }) + }) + .then((response) => { + if (!response.ok) + return; + loadTorrentFilesDataTimer = loadTorrentFilesData.delay(1000); - } - }).send(); + }); const ignore = (priority === FilePriority.Ignored); - ids.forEach(function(_id) { - torrentFilesTable.setIgnored(_id, ignore); + ids.forEach((id) => { + torrentFilesTable.setIgnored(id, ignore); - const combobox = $('comboPrio' + _id); + const combobox = $(`comboPrio${id}`); if (combobox !== null) selectComboboxPriority(combobox, priority); }); @@ -335,10 +321,10 @@ window.qBittorrent.PropFiles = (function() { torrentFilesTable.updateTable(false); }; - let loadTorrentFilesDataTimer; - const loadTorrentFilesData = function() { - if ($('prop_files').hasClass('invisible') - || $('propertiesPanel_collapseToggle').hasClass('panel-expand')) { + let loadTorrentFilesDataTimer = -1; + const loadTorrentFilesData = () => { + if ($("propFiles").classList.contains("invisible") + || $("propertiesPanel_collapseToggle").classList.contains("panel-expand")) { // Tab changed, don't do anything return; } @@ -346,26 +332,31 @@ window.qBittorrent.PropFiles = (function() { if (new_hash === "") { torrentFilesTable.clear(); clearTimeout(loadTorrentFilesDataTimer); - loadTorrentFilesDataTimer = loadTorrentFilesData.delay(5000); return; } let loadedNewTorrent = false; - if (new_hash != current_hash) { + if (new_hash !== current_hash) { torrentFilesTable.clear(); current_hash = new_hash; loadedNewTorrent = true; } - const url = new URI('api/v2/torrents/files?hash=' + current_hash); - new Request.JSON({ - url: url, - noCache: true, - method: 'get', - onComplete: function() { - clearTimeout(loadTorrentFilesDataTimer); - loadTorrentFilesDataTimer = loadTorrentFilesData.delay(5000); - }, - onSuccess: function(files) { + + const url = new URL("api/v2/torrents/files", window.location); + url.search = new URLSearchParams({ + hash: current_hash + }); + fetch(url, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const files = await response.json(); + clearTimeout(torrentFilesFilterInputTimer); + torrentFilesFilterInputTimer = -1; if (files.length === 0) { torrentFilesTable.clear(); @@ -375,38 +366,35 @@ window.qBittorrent.PropFiles = (function() { if (loadedNewTorrent) collapseAllNodes(); } - } - }).send(); + }) + .finally(() => { + clearTimeout(loadTorrentFilesDataTimer); + loadTorrentFilesDataTimer = loadTorrentFilesData.delay(5000); + }); }; - const updateData = function() { + const updateData = () => { clearTimeout(loadTorrentFilesDataTimer); + loadTorrentFilesDataTimer = -1; loadTorrentFilesData(); }; - const handleNewTorrentFiles = function(files) { + const handleNewTorrentFiles = (files) => { is_seed = (files.length > 0) ? files[0].is_seed : true; - const rows = files.map(function(file, index) { - let progress = (file.progress * 100).round(1); - if ((progress === 100) && (file.progress < 1)) - progress = 99.9; - + const rows = files.map((file, index) => { const ignore = (file.priority === FilePriority.Ignored); - const checked = (ignore ? TriState.Unchecked : TriState.Checked); - const remaining = (ignore ? 0 : (file.size * (1.0 - file.progress))); const row = { fileId: index, - checked: checked, + checked: (ignore ? TriState.Unchecked : TriState.Checked), fileName: file.name, name: window.qBittorrent.Filesystem.fileName(file.name), size: file.size, - progress: progress, + progress: window.qBittorrent.Misc.toFixedPointString((file.progress * 100), 1), priority: normalizePriority(file.priority), - remaining: remaining, + remaining: (ignore ? 0 : (file.size * (1 - file.progress))), availability: file.availability }; - return row; }); @@ -414,19 +402,19 @@ window.qBittorrent.PropFiles = (function() { updateGlobalCheckbox(); }; - const addRowsToTable = function(rows) { + const addRowsToTable = (rows) => { const selectedFiles = torrentFilesTable.selectedRowsIds(); let rowId = 0; const rootNode = new window.qBittorrent.FileTree.FolderNode(); - rows.forEach(function(row) { + rows.forEach((row) => { const pathItems = row.fileName.split(window.qBittorrent.Filesystem.PathSeparator); pathItems.pop(); // remove last item (i.e. file name) let parent = rootNode; - pathItems.forEach(function(folderName) { - if (folderName === '.unwanted') + pathItems.forEach((folderName) => { + if (folderName === ".unwanted") return; let folderNode = null; @@ -473,20 +461,19 @@ window.qBittorrent.PropFiles = (function() { parent.addChild(childNode); ++rowId; - }.bind(this)); + }); torrentFilesTable.populateTable(rootNode); torrentFilesTable.updateTable(false); - torrentFilesTable.altRow(); if (selectedFiles.length > 0) torrentFilesTable.reselectRows(selectedFiles); }; - const collapseIconClicked = function(event) { - const id = event.get("data-id"); + const collapseIconClicked = (event) => { + const id = event.getAttribute("data-id"); const node = torrentFilesTable.getNode(id); - const isCollapsed = (event.parentElement.get("data-collapsed") === "true"); + const isCollapsed = (event.parentElement.getAttribute("data-collapsed") === "true"); if (isCollapsed) expandNode(node); @@ -494,41 +481,39 @@ window.qBittorrent.PropFiles = (function() { collapseNode(node); }; - const expandFolder = function(id) { + const expandFolder = (id) => { const node = torrentFilesTable.getNode(id); - if (node.isFolder) { + if (node.isFolder) expandNode(node); - } }; - const collapseFolder = function(id) { + const collapseFolder = (id) => { const node = torrentFilesTable.getNode(id); - if (node.isFolder) { + if (node.isFolder) collapseNode(node); - } }; - const filesPriorityMenuClicked = function(priority) { + const filesPriorityMenuClicked = (priority) => { const selectedRows = torrentFilesTable.selectedRowsIds(); if (selectedRows.length === 0) return; const rowIds = []; const fileIds = []; - selectedRows.forEach(function(rowId) { - const elem = $('comboPrio' + rowId); + selectedRows.forEach((rowId) => { + const elem = $(`comboPrio${rowId}`); rowIds.push(rowId); - fileIds.push(elem.get("data-file-id")); + fileIds.push(elem.getAttribute("data-file-id")); }); const uniqueRowIds = {}; const uniqueFileIds = {}; for (let i = 0; i < rowIds.length; ++i) { const rows = getAllChildren(rowIds[i], fileIds[i]); - rows.rowIds.forEach(function(rowId) { + rows.rowIds.forEach((rowId) => { uniqueRowIds[rowId] = true; }); - rows.fileIds.forEach(function(fileId) { + rows.fileIds.forEach((fileId) => { uniqueFileIds[fileId] = true; }); } @@ -536,11 +521,11 @@ window.qBittorrent.PropFiles = (function() { setFilePriority(Object.keys(uniqueRowIds), Object.keys(uniqueFileIds), priority); }; - const singleFileRename = function(hash) { + const singleFileRename = (hash) => { const rowId = torrentFilesTable.selectedRowsIds()[0]; if (rowId === undefined) return; - const row = torrentFilesTable.rows[rowId]; + const row = torrentFilesTable.rows.get(rowId); if (!row) return; @@ -548,11 +533,11 @@ window.qBittorrent.PropFiles = (function() { const path = node.path; new MochaUI.Window({ - id: 'renamePage', + id: "renamePage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Renaming)QBT_TR[CONTEXT=TorrentContentTreeView]", - loadMethod: 'iframe', - contentURL: 'rename_file.html?hash=' + hash + '&isFolder=' + node.isFolder - + '&path=' + encodeURIComponent(path), + loadMethod: "iframe", + contentURL: `rename_file.html?hash=${hash}&isFolder=${node.isFolder}&path=${encodeURIComponent(path)}`, scrollbars: false, resizable: true, maximizable: false, @@ -563,13 +548,14 @@ window.qBittorrent.PropFiles = (function() { }); }; - const multiFileRename = function(hash) { + const multiFileRename = (hash) => { new MochaUI.Window({ - id: 'multiRenamePage', + id: "multiRenamePage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Renaming)QBT_TR[CONTEXT=TorrentContentTreeView]", data: { hash: hash, selectedRows: torrentFilesTable.selectedRows }, - loadMethod: 'xhr', - contentURL: 'rename_files.html', + loadMethod: "xhr", + contentURL: "rename_files.html", scrollbars: false, resizable: true, maximizable: false, @@ -577,164 +563,153 @@ window.qBittorrent.PropFiles = (function() { paddingHorizontal: 0, width: 800, height: 420, - resizeLimit: { 'x': [800], 'y': [420] } + resizeLimit: { x: [800], y: [420] } }); }; const torrentFilesContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ - targets: '#torrentFilesTableDiv tr', - menu: 'torrentFilesMenu', + targets: "#torrentFilesTableDiv tbody tr", + menu: "torrentFilesMenu", actions: { - Rename: function(element, ref) { + Rename: (element, ref) => { const hash = torrentsTable.getCurrentTorrentID(); if (!hash) return; - if (torrentFilesTable.selectedRowsIds().length > 1) { + if (torrentFilesTable.selectedRowsIds().length > 1) multiFileRename(hash); - } - else { + else singleFileRename(hash); - } }, - FilePrioIgnore: function(element, ref) { + FilePrioIgnore: (element, ref) => { filesPriorityMenuClicked(FilePriority.Ignored); }, - FilePrioNormal: function(element, ref) { + FilePrioNormal: (element, ref) => { filesPriorityMenuClicked(FilePriority.Normal); }, - FilePrioHigh: function(element, ref) { + FilePrioHigh: (element, ref) => { filesPriorityMenuClicked(FilePriority.High); }, - FilePrioMaximum: function(element, ref) { + FilePrioMaximum: (element, ref) => { filesPriorityMenuClicked(FilePriority.Maximum); } }, offsets: { - x: -15, + x: 0, y: 2 }, onShow: function() { if (is_seed) - this.hideItem('FilePrio'); + this.hideItem("FilePrio"); else - this.showItem('FilePrio'); + this.showItem("FilePrio"); } }); - torrentFilesTable.setup('torrentFilesTableDiv', 'torrentFilesTableFixedHeaderDiv', torrentFilesContextMenu); + torrentFilesTable.setup("torrentFilesTableDiv", "torrentFilesTableFixedHeaderDiv", torrentFilesContextMenu); // inject checkbox into table header - const tableHeaders = $$('#torrentFilesTableFixedHeaderDiv .dynamicTableHeader th'); + const tableHeaders = document.querySelectorAll("#torrentFilesTableFixedHeaderDiv .dynamicTableHeader th"); if (tableHeaders.length > 0) { - const checkbox = new Element('input'); - checkbox.set('type', 'checkbox'); - checkbox.set('id', 'tristate_cb'); - checkbox.addEvent('click', switchCheckboxState); + const checkbox = document.createElement("input"); + checkbox.type = "checkbox"; + checkbox.id = "tristate_cb"; + checkbox.addEventListener("click", switchCheckboxState); const checkboxTH = tableHeaders[0]; - checkbox.injectInside(checkboxTH); + checkboxTH.append(checkbox); } // default sort by name column if (torrentFilesTable.getSortedColumn() === null) - torrentFilesTable.setSortedColumn('name'); + torrentFilesTable.setSortedColumn("name"); - let prevTorrentFilesFilterValue; - let torrentFilesFilterInputTimer = null; // listen for changes to torrentFilesFilterInput - $('torrentFilesFilterInput').addEvent('input', function() { - const value = $('torrentFilesFilterInput').get("value"); - if (value !== prevTorrentFilesFilterValue) { - prevTorrentFilesFilterValue = value; - torrentFilesTable.setFilter(value); - clearTimeout(torrentFilesFilterInputTimer); - torrentFilesFilterInputTimer = setTimeout(function() { - if (current_hash === "") - return; - torrentFilesTable.updateTable(false); + let torrentFilesFilterInputTimer = -1; + $("torrentFilesFilterInput").addEventListener("input", () => { + clearTimeout(torrentFilesFilterInputTimer); - if (value.trim() === "") - collapseAllNodes(); - else - expandAllNodes(); - }, 400); - } + const value = $("torrentFilesFilterInput").value; + torrentFilesTable.setFilter(value); + + torrentFilesFilterInputTimer = setTimeout(() => { + torrentFilesFilterInputTimer = -1; + + if (current_hash === "") + return; + + torrentFilesTable.updateTable(); + + if (value.trim() === "") + collapseAllNodes(); + else + expandAllNodes(); + }, window.qBittorrent.Misc.FILTER_INPUT_DELAY); }); /** * Show/hide a node's row */ - const _hideNode = function(node, shouldHide) { - const span = $('filesTablefileName' + node.rowId); + const _hideNode = (node, shouldHide) => { + const span = $(`filesTablefileName${node.rowId}`); // span won't exist if row has been filtered out if (span === null) return; const rowElem = span.parentElement.parentElement; - if (shouldHide) - rowElem.addClass("invisible"); - else - rowElem.removeClass("invisible"); + rowElem.classList.toggle("invisible", shouldHide); }; /** * Update a node's collapsed state and icon */ - const _updateNodeState = function(node, isCollapsed) { - const span = $('filesTablefileName' + node.rowId); + const _updateNodeState = (node, isCollapsed) => { + const span = $(`filesTablefileName${node.rowId}`); // span won't exist if row has been filtered out if (span === null) return; const td = span.parentElement; // store collapsed state - td.set("data-collapsed", isCollapsed); + td.setAttribute("data-collapsed", isCollapsed); // rotate the collapse icon const collapseIcon = td.getElementsByClassName("filesTableCollapseIcon")[0]; - if (isCollapsed) - collapseIcon.addClass("rotate"); - else - collapseIcon.removeClass("rotate"); + collapseIcon.classList.toggle("rotate", isCollapsed); }; - const _isCollapsed = function(node) { - const span = $('filesTablefileName' + node.rowId); + const _isCollapsed = (node) => { + const span = $(`filesTablefileName${node.rowId}`); if (span === null) return true; const td = span.parentElement; - return (td.get("data-collapsed") === "true"); + return td.getAttribute("data-collapsed") === "true"; }; - const expandNode = function(node) { + const expandNode = (node) => { _collapseNode(node, false, false, false); - torrentFilesTable.altRow(); }; - const collapseNode = function(node) { + const collapseNode = (node) => { _collapseNode(node, true, false, false); - torrentFilesTable.altRow(); }; - const expandAllNodes = function() { + const expandAllNodes = () => { const root = torrentFilesTable.getRoot(); - root.children.each(function(node) { - node.children.each(function(child) { + root.children.each((node) => { + node.children.each((child) => { _collapseNode(child, false, true, false); }); }); - torrentFilesTable.altRow(); }; - const collapseAllNodes = function() { + const collapseAllNodes = () => { const root = torrentFilesTable.getRoot(); - root.children.each(function(node) { - node.children.each(function(child) { + root.children.each((node) => { + node.children.each((child) => { _collapseNode(child, true, true, false); }); }); - torrentFilesTable.altRow(); }; /** @@ -744,7 +719,7 @@ window.qBittorrent.PropFiles = (function() { * @param {boolean} applyToChildren true if the node's children should also be collapsed, recursively * @param {boolean} isChildNode true if the current node is a child of the original node we collapsed/expanded */ - const _collapseNode = function(node, shouldCollapse, applyToChildren, isChildNode) { + const _collapseNode = (node, shouldCollapse, applyToChildren, isChildNode) => { if (!node.isFolder) return; @@ -755,7 +730,7 @@ window.qBittorrent.PropFiles = (function() { if (!isChildNode || applyToChildren || !canSkipNode) _updateNodeState(node, shouldCollapse); - node.children.each(function(child) { + node.children.each((child) => { _hideNode(child, shouldCollapse); if (!child.isFolder) @@ -771,7 +746,10 @@ window.qBittorrent.PropFiles = (function() { }); }; + const clear = () => { + torrentFilesTable.clear(); + }; + return exports(); })(); - Object.freeze(window.qBittorrent.PropFiles); diff --git a/src/webui/www/private/scripts/prop-general.js b/src/webui/www/private/scripts/prop-general.js index d98a41165fa0..dbf80e8a91cb 100644 --- a/src/webui/www/private/scripts/prop-general.js +++ b/src/webui/www/private/scripts/prop-general.js @@ -26,57 +26,58 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.PropGeneral = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.PropGeneral ??= (() => { + const exports = () => { return { - updateData: updateData + updateData: updateData, + clear: clear }; }; const piecesBar = new window.qBittorrent.PiecesBar.PiecesBar([], { - height: 16 + height: 18 }); - $('progress').appendChild(piecesBar); - - const clearData = function() { - $('time_elapsed').set('html', ''); - $('eta').set('html', ''); - $('nb_connections').set('html', ''); - $('total_downloaded').set('html', ''); - $('total_uploaded').set('html', ''); - $('dl_speed').set('html', ''); - $('up_speed').set('html', ''); - $('dl_limit').set('html', ''); - $('up_limit').set('html', ''); - $('total_wasted').set('html', ''); - $('seeds').set('html', ''); - $('peers').set('html', ''); - $('share_ratio').set('html', ''); - $('reannounce').set('html', ''); - $('last_seen').set('html', ''); - $('total_size').set('html', ''); - $('pieces').set('html', ''); - $('created_by').set('html', ''); - $('addition_date').set('html', ''); - $('completion_date').set('html', ''); - $('creation_date').set('html', ''); - $('torrent_hash_v1').set('html', ''); - $('torrent_hash_v2').set('html', ''); - $('save_path').set('html', ''); - $('comment').set('html', ''); + $("progress").appendChild(piecesBar); + + const clearData = () => { + document.getElementById("progressPercentage").textContent = ""; + $("time_elapsed").textContent = ""; + $("eta").textContent = ""; + $("nb_connections").textContent = ""; + $("total_downloaded").textContent = ""; + $("total_uploaded").textContent = ""; + $("dl_speed").textContent = ""; + $("up_speed").textContent = ""; + $("dl_limit").textContent = ""; + $("up_limit").textContent = ""; + $("total_wasted").textContent = ""; + $("seeds").textContent = ""; + $("peers").textContent = ""; + $("share_ratio").textContent = ""; + $("popularity").textContent = ""; + $("reannounce").textContent = ""; + $("last_seen").textContent = ""; + $("total_size").textContent = ""; + $("pieces").textContent = ""; + $("created_by").textContent = ""; + $("addition_date").textContent = ""; + $("completion_date").textContent = ""; + $("creation_date").textContent = ""; + $("torrent_hash_v1").textContent = ""; + $("torrent_hash_v2").textContent = ""; + $("save_path").textContent = ""; + $("comment").textContent = ""; + $("private").textContent = ""; piecesBar.clear(); }; - let loadTorrentDataTimer; - const loadTorrentData = function() { - if ($('prop_general').hasClass('invisible') - || $('propertiesPanel_collapseToggle').hasClass('panel-expand')) { + let loadTorrentDataTimer = -1; + const loadTorrentData = () => { + if ($("propGeneral").classList.contains("invisible") + || $("propertiesPanel_collapseToggle").classList.contains("panel-expand")) { // Tab changed, don't do anything return; } @@ -84,173 +85,194 @@ window.qBittorrent.PropGeneral = (function() { if (current_id === "") { clearData(); clearTimeout(loadTorrentDataTimer); - loadTorrentDataTimer = loadTorrentData.delay(5000); return; } - const url = new URI('api/v2/torrents/properties?hash=' + current_id); - new Request.JSON({ - url: url, - noCache: true, - method: 'get', - onFailure: function() { - $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]'); - clearTimeout(loadTorrentDataTimer); - loadTorrentDataTimer = loadTorrentData.delay(10000); - }, - onSuccess: function(data) { - $('error_div').set('html', ''); + + const propertiesURL = new URL("api/v2/torrents/properties", window.location); + propertiesURL.search = new URLSearchParams({ + hash: current_id + }); + fetch(propertiesURL, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) { + $("error_div").textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]"; + clearTimeout(loadTorrentDataTimer); + loadTorrentDataTimer = loadTorrentData.delay(10000); + return; + } + + $("error_div").textContent = ""; + + const data = await response.json(); if (data) { - let temp; // Update Torrent data - if (data.seeding_time > 0) - temp = "QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=PropertiesWidget]" + + document.getElementById("progressPercentage").textContent = window.qBittorrent.Misc.friendlyPercentage(data.progress); + + const timeElapsed = (data.seeding_time > 0) + ? "QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", window.qBittorrent.Misc.friendlyDuration(data.time_elapsed)) - .replace("%2", window.qBittorrent.Misc.friendlyDuration(data.seeding_time)); - else - temp = window.qBittorrent.Misc.friendlyDuration(data.time_elapsed); - $('time_elapsed').set('html', temp); + .replace("%2", window.qBittorrent.Misc.friendlyDuration(data.seeding_time)) + : window.qBittorrent.Misc.friendlyDuration(data.time_elapsed); + $("time_elapsed").textContent = timeElapsed; - $('eta').set('html', window.qBittorrent.Misc.friendlyDuration(data.eta, window.qBittorrent.Misc.MAX_ETA)); + $("eta").textContent = window.qBittorrent.Misc.friendlyDuration(data.eta, window.qBittorrent.Misc.MAX_ETA); - temp = "QBT_TR(%1 (%2 max))QBT_TR[CONTEXT=PropertiesWidget]" + const nbConnections = "QBT_TR(%1 (%2 max))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", data.nb_connections) - .replace("%2", data.nb_connections_limit < 0 ? "∞" : data.nb_connections_limit); - $('nb_connections').set('html', temp); + .replace("%2", ((data.nb_connections_limit < 0) ? "∞" : data.nb_connections_limit)); + $("nb_connections").textContent = nbConnections; - temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]" + const totalDownloaded = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", window.qBittorrent.Misc.friendlyUnit(data.total_downloaded)) .replace("%2", window.qBittorrent.Misc.friendlyUnit(data.total_downloaded_session)); - $('total_downloaded').set('html', temp); + $("total_downloaded").textContent = totalDownloaded; - temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]" + const totalUploaded = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", window.qBittorrent.Misc.friendlyUnit(data.total_uploaded)) .replace("%2", window.qBittorrent.Misc.friendlyUnit(data.total_uploaded_session)); - $('total_uploaded').set('html', temp); + $("total_uploaded").textContent = totalUploaded; - temp = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]" + const dlSpeed = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", window.qBittorrent.Misc.friendlyUnit(data.dl_speed, true)) .replace("%2", window.qBittorrent.Misc.friendlyUnit(data.dl_speed_avg, true)); - $('dl_speed').set('html', temp); + $("dl_speed").textContent = dlSpeed; - temp = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]" + const upSpeed = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", window.qBittorrent.Misc.friendlyUnit(data.up_speed, true)) .replace("%2", window.qBittorrent.Misc.friendlyUnit(data.up_speed_avg, true)); - $('up_speed').set('html', temp); + $("up_speed").textContent = upSpeed; - temp = (data.dl_limit == -1 ? "∞" : window.qBittorrent.Misc.friendlyUnit(data.dl_limit, true)); - $('dl_limit').set('html', temp); + const dlLimit = (data.dl_limit === -1) + ? "∞" + : window.qBittorrent.Misc.friendlyUnit(data.dl_limit, true); + $("dl_limit").textContent = dlLimit; - temp = (data.up_limit == -1 ? "∞" : window.qBittorrent.Misc.friendlyUnit(data.up_limit, true)); - $('up_limit').set('html', temp); + const upLimit = (data.up_limit === -1) + ? "∞" + : window.qBittorrent.Misc.friendlyUnit(data.up_limit, true); + $("up_limit").textContent = upLimit; - $('total_wasted').set('html', window.qBittorrent.Misc.friendlyUnit(data.total_wasted)); + $("total_wasted").textContent = window.qBittorrent.Misc.friendlyUnit(data.total_wasted); - temp = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]" + const seeds = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", data.seeds) .replace("%2", data.seeds_total); - $('seeds').set('html', temp); + $("seeds").textContent = seeds; - temp = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]" + const peers = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", data.peers) .replace("%2", data.peers_total); - $('peers').set('html', temp); + $("peers").textContent = peers; - $('share_ratio').set('html', data.share_ratio.toFixed(2)); + $("share_ratio").textContent = data.share_ratio.toFixed(2); - $('reannounce').set('html', window.qBittorrent.Misc.friendlyDuration(data.reannounce)); + $("popularity").textContent = data.popularity.toFixed(2); - if (data.last_seen != -1) - temp = new Date(data.last_seen * 1000).toLocaleString(); - else - temp = "QBT_TR(Never)QBT_TR[CONTEXT=PropertiesWidget]"; - $('last_seen').set('html', temp); + $("reannounce").textContent = window.qBittorrent.Misc.friendlyDuration(data.reannounce); - $('total_size').set('html', window.qBittorrent.Misc.friendlyUnit(data.total_size)); + const lastSeen = (data.last_seen >= 0) + ? new Date(data.last_seen * 1000).toLocaleString() + : "QBT_TR(Never)QBT_TR[CONTEXT=PropertiesWidget]"; + $("last_seen").textContent = lastSeen; - if (data.pieces_num != -1) - temp = "QBT_TR(%1 x %2 (have %3))QBT_TR[CONTEXT=PropertiesWidget]" + const totalSize = (data.total_size >= 0) ? window.qBittorrent.Misc.friendlyUnit(data.total_size) : ""; + $("total_size").textContent = totalSize; + + const pieces = (data.pieces_num >= 0) + ? "QBT_TR(%1 x %2 (have %3))QBT_TR[CONTEXT=PropertiesWidget]" .replace("%1", data.pieces_num) .replace("%2", window.qBittorrent.Misc.friendlyUnit(data.piece_size)) - .replace("%3", data.pieces_have); - else - temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]"; - $('pieces').set('html', temp); - - $('created_by').set('text', data.created_by); - if (data.addition_date != -1) - temp = new Date(data.addition_date * 1000).toLocaleString(); - else - temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]"; - - $('addition_date').set('html', temp); - if (data.completion_date != -1) - temp = new Date(data.completion_date * 1000).toLocaleString(); - else - temp = ""; - - $('completion_date').set('html', temp); - - if (data.creation_date != -1) - temp = new Date(data.creation_date * 1000).toLocaleString(); - else - temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]"; - $('creation_date').set('html', temp); - - if (data.infohash_v1 === "") - temp = "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]"; - else - temp = data.infohash_v1; - $('torrent_hash_v1').set('html', temp); - - if (data.infohash_v2 === "") - temp = "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]"; - else - temp = data.infohash_v2; - $('torrent_hash_v2').set('html', temp); - - $('save_path').set('html', data.save_path); - - $('comment').set('html', window.qBittorrent.Misc.parseHtmlLinks(window.qBittorrent.Misc.escapeHtml(data.comment))); + .replace("%3", data.pieces_have) + : ""; + $("pieces").textContent = pieces; + + $("created_by").textContent = data.created_by; + + const additionDate = (data.addition_date >= 0) + ? new Date(data.addition_date * 1000).toLocaleString() + : "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]"; + $("addition_date").textContent = additionDate; + + const completionDate = (data.completion_date >= 0) + ? new Date(data.completion_date * 1000).toLocaleString() + : ""; + $("completion_date").textContent = completionDate; + + const creationDate = (data.creation_date >= 0) + ? new Date(data.creation_date * 1000).toLocaleString() + : ""; + $("creation_date").textContent = creationDate; + + const torrentHashV1 = (data.infohash_v1 !== "") + ? data.infohash_v1 + : "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]"; + $("torrent_hash_v1").textContent = torrentHashV1; + + const torrentHashV2 = (data.infohash_v2 !== "") + ? data.infohash_v2 + : "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]"; + $("torrent_hash_v2").textContent = torrentHashV2; + + $("save_path").textContent = data.save_path; + + $("comment").innerHTML = window.qBittorrent.Misc.parseHtmlLinks(window.qBittorrent.Misc.escapeHtml(data.comment)); + + $("private").textContent = (data.has_metadata + ? (data.private + ? "QBT_TR(Yes)QBT_TR[CONTEXT=PropertiesWidget]" + : "QBT_TR(No)QBT_TR[CONTEXT=PropertiesWidget]") + : "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]"); } else { clearData(); } clearTimeout(loadTorrentDataTimer); loadTorrentDataTimer = loadTorrentData.delay(5000); - } - }).send(); - - const piecesUrl = new URI('api/v2/torrents/pieceStates?hash=' + current_id); - new Request.JSON({ - url: piecesUrl, - noCache: true, - method: 'get', - onFailure: function() { - $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]'); - clearTimeout(loadTorrentDataTimer); - loadTorrentDataTimer = loadTorrentData.delay(10000); - }, - onSuccess: function(data) { - $('error_div').set('html', ''); + }); + + const pieceStatesURL = new URL("api/v2/torrents/pieceStates", window.location); + pieceStatesURL.search = new URLSearchParams({ + hash: current_id + }); + fetch(pieceStatesURL, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) { + $("error_div").textContent = "QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]"; + clearTimeout(loadTorrentDataTimer); + loadTorrentDataTimer = loadTorrentData.delay(10000); + return; + } - if (data) { + $("error_div").textContent = ""; + + const data = await response.json(); + if (data) piecesBar.setPieces(data); - } - else { + else clearData(); - } + clearTimeout(loadTorrentDataTimer); loadTorrentDataTimer = loadTorrentData.delay(5000); - } - }).send(); + }); }; - const updateData = function() { + const updateData = () => { clearTimeout(loadTorrentDataTimer); + loadTorrentDataTimer = -1; loadTorrentData(); }; + const clear = () => { + clearData(); + }; + return exports(); })(); - Object.freeze(window.qBittorrent.PropGeneral); diff --git a/src/webui/www/private/scripts/prop-peers.js b/src/webui/www/private/scripts/prop-peers.js index be5af9d91802..e7fa59ac25b9 100644 --- a/src/webui/www/private/scripts/prop-peers.js +++ b/src/webui/www/private/scripts/prop-peers.js @@ -26,27 +26,25 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.PropPeers = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.PropPeers ??= (() => { + const exports = () => { return { - updateData: updateData + updateData: updateData, + clear: clear }; }; const torrentPeersTable = new window.qBittorrent.DynamicTable.TorrentPeersTable(); - let loadTorrentPeersTimer; + let loadTorrentPeersTimer = -1; let syncTorrentPeersLastResponseId = 0; let show_flags = true; - const loadTorrentPeersData = function() { - if ($('prop_peers').hasClass('invisible') - || $('propertiesPanel_collapseToggle').hasClass('panel-expand')) { + const loadTorrentPeersData = () => { + if ($("propPeers").classList.contains("invisible") + || $("propertiesPanel_collapseToggle").classList.contains("panel-expand")) { syncTorrentPeersLastResponseId = 0; torrentPeersTable.clear(); return; @@ -56,131 +54,141 @@ window.qBittorrent.PropPeers = (function() { syncTorrentPeersLastResponseId = 0; torrentPeersTable.clear(); clearTimeout(loadTorrentPeersTimer); - loadTorrentPeersTimer = loadTorrentPeersData.delay(getSyncMainDataInterval()); return; } - const url = new URI('api/v2/sync/torrentPeers'); - url.setData('rid', syncTorrentPeersLastResponseId); - url.setData('hash', current_hash); - new Request.JSON({ - url: url, - noCache: true, - method: 'get', - onComplete: function() { - clearTimeout(loadTorrentPeersTimer); - loadTorrentPeersTimer = loadTorrentPeersData.delay(getSyncMainDataInterval()); - }, - onSuccess: function(response) { - $('error_div').set('html', ''); - if (response) { - const full_update = (response['full_update'] === true); + const url = new URL("api/v2/sync/torrentPeers", window.location); + url.search = new URLSearchParams({ + hash: current_hash, + rid: syncTorrentPeersLastResponseId, + }); + fetch(url, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const responseJSON = await response.json(); + + $("error_div").textContent = ""; + if (responseJSON) { + const full_update = (responseJSON["full_update"] === true); if (full_update) torrentPeersTable.clear(); - if (response['rid']) - syncTorrentPeersLastResponseId = response['rid']; - if (response['peers']) { - for (const key in response['peers']) { - response['peers'][key]['rowId'] = key; - - torrentPeersTable.updateRowData(response['peers'][key]); + if (responseJSON["rid"]) + syncTorrentPeersLastResponseId = responseJSON["rid"]; + if (responseJSON["peers"]) { + for (const key in responseJSON["peers"]) { + if (!Object.hasOwn(responseJSON["peers"], key)) + continue; + + responseJSON["peers"][key]["rowId"] = key; + torrentPeersTable.updateRowData(responseJSON["peers"][key]); } } - if (response['peers_removed']) { - response['peers_removed'].each(function(hash) { + if (responseJSON["peers_removed"]) { + responseJSON["peers_removed"].each((hash) => { torrentPeersTable.removeRow(hash); }); } torrentPeersTable.updateTable(full_update); - torrentPeersTable.altRow(); - if (response['show_flags']) { - if (show_flags != response['show_flags']) { - show_flags = response['show_flags']; - torrentPeersTable.columns['country'].force_hide = !show_flags; - torrentPeersTable.updateColumn('country'); + if (responseJSON["show_flags"]) { + if (show_flags !== responseJSON["show_flags"]) { + show_flags = responseJSON["show_flags"]; + torrentPeersTable.columns["country"].force_hide = !show_flags; + torrentPeersTable.updateColumn("country"); } } } else { torrentPeersTable.clear(); } - } - }).send(); + + }) + .finally(() => { + clearTimeout(loadTorrentPeersTimer); + loadTorrentPeersTimer = loadTorrentPeersData.delay(window.qBittorrent.Client.getSyncMainDataInterval()); + }); }; - const updateData = function() { + const updateData = () => { clearTimeout(loadTorrentPeersTimer); + loadTorrentPeersTimer = -1; loadTorrentPeersData(); }; + const clear = () => { + torrentPeersTable.clear(); + }; + const torrentPeersContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ - targets: '#torrentPeersTableDiv', - menu: 'torrentPeersMenu', + targets: "#torrentPeersTableDiv", + menu: "torrentPeersMenu", actions: { - addPeer: function(element, ref) { + addPeer: (element, ref) => { const hash = torrentsTable.getCurrentTorrentID(); if (!hash) return; new MochaUI.Window({ - id: 'addPeersPage', + id: "addPeersPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Add Peers)QBT_TR[CONTEXT=PeersAdditionDialog]", - loadMethod: 'iframe', - contentURL: 'addpeers.html?hash=' + hash, + loadMethod: "iframe", + contentURL: `addpeers.html?hash=${hash}`, scrollbars: false, resizable: false, maximizable: false, paddingVertical: 0, paddingHorizontal: 0, width: 350, - height: 240 + height: 260 }); }, - banPeer: function(element, ref) { + banPeer: (element, ref) => { const selectedPeers = torrentPeersTable.selectedRowsIds(); if (selectedPeers.length === 0) return; - if (confirm('QBT_TR(Are you sure you want to permanently ban the selected peers?)QBT_TR[CONTEXT=PeerListWidget]')) { - new Request({ - url: 'api/v2/transfer/banPeers', - noCache: true, - method: 'post', - data: { + if (confirm("QBT_TR(Are you sure you want to permanently ban the selected peers?)QBT_TR[CONTEXT=PeerListWidget]")) { + fetch("api/v2/transfer/banPeers", { + method: "POST", + body: new URLSearchParams({ hash: torrentsTable.getCurrentTorrentID(), - peers: selectedPeers.join('|') - } - }).send(); + peers: selectedPeers.join("|") + }) + }); } } }, offsets: { - x: -15, + x: 0, y: 2 }, onShow: function() { const selectedPeers = torrentPeersTable.selectedRowsIds(); if (selectedPeers.length >= 1) { - this.showItem('copyPeer'); - this.showItem('banPeer'); + this.showItem("copyPeer"); + this.showItem("banPeer"); } else { - this.hideItem('copyPeer'); - this.hideItem('banPeer'); + this.hideItem("copyPeer"); + this.hideItem("banPeer"); } } }); - new ClipboardJS('#CopyPeerInfo', { - text: function(trigger) { + new ClipboardJS("#CopyPeerInfo", { + text: (trigger) => { return torrentPeersTable.selectedRowsIds().join("\n"); } }); - torrentPeersTable.setup('torrentPeersTableDiv', 'torrentPeersTableFixedHeaderDiv', torrentPeersContextMenu); + torrentPeersTable.setup("torrentPeersTableDiv", "torrentPeersTableFixedHeaderDiv", torrentPeersContextMenu); return exports(); })(); - Object.freeze(window.qBittorrent.PropPeers); diff --git a/src/webui/www/private/scripts/prop-trackers.js b/src/webui/www/private/scripts/prop-trackers.js index e1c4ddaa0314..796b090c12ac 100644 --- a/src/webui/www/private/scripts/prop-trackers.js +++ b/src/webui/www/private/scripts/prop-trackers.js @@ -26,27 +26,25 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.PropTrackers = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.PropTrackers ??= (() => { + const exports = () => { return { - updateData: updateData + updateData: updateData, + clear: clear }; }; let current_hash = ""; const torrentTrackersTable = new window.qBittorrent.DynamicTable.TorrentTrackersTable(); - let loadTrackersDataTimer; + let loadTrackersDataTimer = -1; - const loadTrackersData = function() { - if ($('prop_trackers').hasClass('invisible') - || $('propertiesPanel_collapseToggle').hasClass('panel-expand')) { + const loadTrackersData = () => { + if ($("propTrackers").classList.contains("invisible") + || $("propertiesPanel_collapseToggle").classList.contains("panel-expand")) { // Tab changed, don't do anything return; } @@ -54,28 +52,31 @@ window.qBittorrent.PropTrackers = (function() { if (new_hash === "") { torrentTrackersTable.clear(); clearTimeout(loadTrackersDataTimer); - loadTrackersDataTimer = loadTrackersData.delay(10000); return; } - if (new_hash != current_hash) { + if (new_hash !== current_hash) { torrentTrackersTable.clear(); current_hash = new_hash; } - const url = new URI('api/v2/torrents/trackers?hash=' + current_hash); - new Request.JSON({ - url: url, - noCache: true, - method: 'get', - onComplete: function() { - clearTimeout(loadTrackersDataTimer); - loadTrackersDataTimer = loadTrackersData.delay(10000); - }, - onSuccess: function(trackers) { + + const url = new URL("api/v2/torrents/trackers", window.location); + url.search = new URLSearchParams({ + hash: current_hash + }); + fetch(url, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + const selectedTrackers = torrentTrackersTable.selectedRowsIds(); torrentTrackersTable.clear(); + const trackers = await response.json(); if (trackers) { - trackers.each(function(tracker) { + trackers.each((tracker) => { let status; switch (tracker.status) { case 0: @@ -100,78 +101,83 @@ window.qBittorrent.PropTrackers = (function() { tier: (tracker.tier >= 0) ? tracker.tier : "", url: tracker.url, status: status, - peers: tracker.num_peers, + peers: (tracker.num_peers >= 0) ? tracker.num_peers : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]", seeds: (tracker.num_seeds >= 0) ? tracker.num_seeds : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]", leeches: (tracker.num_leeches >= 0) ? tracker.num_leeches : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]", downloaded: (tracker.num_downloaded >= 0) ? tracker.num_downloaded : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]", - message: tracker.msg + message: tracker.msg, + _sortable: !tracker.url.startsWith("** [") }; torrentTrackersTable.updateRowData(row); }); torrentTrackersTable.updateTable(false); - torrentTrackersTable.altRow(); if (selectedTrackers.length > 0) torrentTrackersTable.reselectRows(selectedTrackers); } - } - }).send(); + }) + .finally(() => { + clearTimeout(loadTrackersDataTimer); + loadTrackersDataTimer = loadTrackersData.delay(10000); + }); }; - const updateData = function() { + const updateData = () => { clearTimeout(loadTrackersDataTimer); + loadTrackersDataTimer = -1; loadTrackersData(); }; const torrentTrackersContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ - targets: '#torrentTrackersTableDiv', - menu: 'torrentTrackersMenu', + targets: "#torrentTrackersTableDiv", + menu: "torrentTrackersMenu", actions: { - AddTracker: function(element, ref) { + AddTracker: (element, ref) => { addTrackerFN(); }, - EditTracker: function(element, ref) { + EditTracker: (element, ref) => { // only allow editing of one row - element.firstChild.click(); + element.firstElementChild.click(); editTrackerFN(element); }, - RemoveTracker: function(element, ref) { + RemoveTracker: (element, ref) => { removeTrackerFN(element); } }, offsets: { - x: -15, + x: 0, y: 2 }, onShow: function() { const selectedTrackers = torrentTrackersTable.selectedRowsIds(); - const containsStaticTracker = selectedTrackers.some(function(tracker) { - return (tracker.indexOf("** [") === 0); + const containsStaticTracker = selectedTrackers.some((tracker) => { + return tracker.startsWith("** ["); }); if (containsStaticTracker || (selectedTrackers.length === 0)) { - this.hideItem('EditTracker'); - this.hideItem('RemoveTracker'); - this.hideItem('CopyTrackerUrl'); + this.hideItem("EditTracker"); + this.hideItem("RemoveTracker"); + this.hideItem("CopyTrackerUrl"); } else { - this.showItem('EditTracker'); - this.showItem('RemoveTracker'); - this.showItem('CopyTrackerUrl'); + this.showItem("EditTracker"); + this.showItem("RemoveTracker"); + this.showItem("CopyTrackerUrl"); } } }); - const addTrackerFN = function() { + const addTrackerFN = () => { if (current_hash.length === 0) return; new MochaUI.Window({ - id: 'trackersPage', + id: "trackersPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Add trackers)QBT_TR[CONTEXT=TrackersAdditionDialog]", - loadMethod: 'iframe', - contentURL: 'addtrackers.html?hash=' + current_hash, + loadMethod: "iframe", + contentURL: `addtrackers.html?hash=${current_hash}`, scrollbars: true, resizable: false, maximizable: false, @@ -179,23 +185,24 @@ window.qBittorrent.PropTrackers = (function() { paddingVertical: 0, paddingHorizontal: 0, width: 500, - height: 250, - onCloseComplete: function() { + height: 260, + onCloseComplete: () => { updateData(); } }); }; - const editTrackerFN = function(element) { + const editTrackerFN = (element) => { if (current_hash.length === 0) return; - const trackerUrl = encodeURIComponent(element.childNodes[1].innerText); + const trackerUrl = encodeURIComponent(element.childNodes[1].textContent); new MochaUI.Window({ - id: 'trackersPage', + id: "trackersPage", + icon: "images/qbittorrent-tray.svg", title: "QBT_TR(Tracker editing)QBT_TR[CONTEXT=TrackerListWidget]", - loadMethod: 'iframe', - contentURL: 'edittracker.html?hash=' + current_hash + '&url=' + trackerUrl, + loadMethod: "iframe", + contentURL: `edittracker.html?hash=${current_hash}&url=${trackerUrl}`, scrollbars: true, resizable: false, maximizable: false, @@ -204,39 +211,43 @@ window.qBittorrent.PropTrackers = (function() { paddingHorizontal: 0, width: 500, height: 150, - onCloseComplete: function() { + onCloseComplete: () => { updateData(); } }); }; - const removeTrackerFN = function(element) { + const removeTrackerFN = (element) => { if (current_hash.length === 0) return; - const selectedTrackers = torrentTrackersTable.selectedRowsIds(); - new Request({ - url: 'api/v2/torrents/removeTrackers', - method: 'post', - data: { - hash: current_hash, - urls: selectedTrackers.join("|") - }, - onSuccess: function() { + fetch("api/v2/torrents/removeTrackers", { + method: "POST", + body: new URLSearchParams({ + hash: current_hash, + urls: torrentTrackersTable.selectedRowsIds().map(encodeURIComponent).join("|") + }) + }) + .then((response) => { + if (!response.ok) + return; + updateData(); - } - }).send(); + }); + }; + + const clear = () => { + torrentTrackersTable.clear(); }; - new ClipboardJS('#CopyTrackerUrl', { - text: function(trigger) { + new ClipboardJS("#CopyTrackerUrl", { + text: (trigger) => { return torrentTrackersTable.selectedRowsIds().join("\n"); } }); - torrentTrackersTable.setup('torrentTrackersTableDiv', 'torrentTrackersTableFixedHeaderDiv', torrentTrackersContextMenu); + torrentTrackersTable.setup("torrentTrackersTableDiv", "torrentTrackersTableFixedHeaderDiv", torrentTrackersContextMenu); return exports(); })(); - Object.freeze(window.qBittorrent.PropTrackers); diff --git a/src/webui/www/private/scripts/prop-webseeds.js b/src/webui/www/private/scripts/prop-webseeds.js index a56685933806..af674d6b41e9 100644 --- a/src/webui/www/private/scripts/prop-webseeds.js +++ b/src/webui/www/private/scripts/prop-webseeds.js @@ -26,130 +26,205 @@ * exception statement from your version. */ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.PropWebseeds = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.PropWebseeds ??= (() => { + const exports = () => { return { - updateData: updateData + updateData: updateData, + clear: clear }; }; - const webseedsDynTable = new Class({ - - initialize: function() {}, - - setup: function(table) { - this.table = $(table); - this.rows = new Hash(); - }, - - removeRow: function(url) { - if (this.rows.has(url)) { - const tr = this.rows.get(url); - tr.dispose(); - this.rows.erase(url); - return true; - } - return false; - }, - - removeAllRows: function() { - this.rows.each(function(tr, url) { - this.removeRow(url); - }.bind(this)); - }, - - updateRow: function(tr, row) { - const tds = tr.getElements('td'); - for (let i = 0; i < row.length; ++i) { - tds[i].set('html', row[i]); - } - return true; - }, - - insertRow: function(row) { - const url = row[0]; - if (this.rows.has(url)) { - const tableRow = this.rows.get(url); - this.updateRow(tableRow, row); - return; - } - //this.removeRow(id); - const tr = new Element('tr'); - this.rows.set(url, tr); - for (let i = 0; i < row.length; ++i) { - const td = new Element('td'); - td.set('html', row[i]); - td.injectInside(tr); - } - tr.injectInside(this.table); - }, - }); + const torrentWebseedsTable = new window.qBittorrent.DynamicTable.TorrentWebseedsTable(); let current_hash = ""; - let loadWebSeedsDataTimer; - const loadWebSeedsData = function() { - if ($('prop_webseeds').hasClass('invisible') - || $('propertiesPanel_collapseToggle').hasClass('panel-expand')) { + let loadWebSeedsDataTimer = -1; + const loadWebSeedsData = () => { + if ($("propWebSeeds").classList.contains("invisible") + || $("propertiesPanel_collapseToggle").classList.contains("panel-expand")) { // Tab changed, don't do anything return; } const new_hash = torrentsTable.getCurrentTorrentID(); if (new_hash === "") { - wsTable.removeAllRows(); + torrentWebseedsTable.clear(); clearTimeout(loadWebSeedsDataTimer); - loadWebSeedsDataTimer = loadWebSeedsData.delay(10000); return; } - if (new_hash != current_hash) { - wsTable.removeAllRows(); + if (new_hash !== current_hash) { + torrentWebseedsTable.clear(); current_hash = new_hash; } - const url = new URI('api/v2/torrents/webseeds?hash=' + current_hash); - new Request.JSON({ - url: url, - noCache: true, - method: 'get', - onFailure: function() { - $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]'); - clearTimeout(loadWebSeedsDataTimer); - loadWebSeedsDataTimer = loadWebSeedsData.delay(20000); - }, - onSuccess: function(webseeds) { - $('error_div').set('html', ''); + + const url = new URL("api/v2/torrents/webseeds", window.location); + url.search = new URLSearchParams({ + hash: current_hash + }); + fetch(url, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const selectedWebseeds = torrentWebseedsTable.selectedRowsIds(); + torrentWebseedsTable.clear(); + + const webseeds = await response.json(); if (webseeds) { // Update WebSeeds data - webseeds.each(function(webseed) { - const row = []; - row.length = 1; - row[0] = webseed.url; - wsTable.insertRow(row); + webseeds.each((webseed) => { + torrentWebseedsTable.updateRowData({ + rowId: webseed.url, + url: webseed.url, + }); }); } - else { - wsTable.removeAllRows(); - } + + torrentWebseedsTable.updateTable(false); + + if (selectedWebseeds.length > 0) + torrentWebseedsTable.reselectRows(selectedWebseeds); + }) + .finally(() => { clearTimeout(loadWebSeedsDataTimer); loadWebSeedsDataTimer = loadWebSeedsData.delay(10000); - } - }).send(); + }); }; - const updateData = function() { + const updateData = () => { clearTimeout(loadWebSeedsDataTimer); + loadWebSeedsDataTimer = -1; loadWebSeedsData(); }; - const wsTable = new webseedsDynTable(); - wsTable.setup($('webseedsTable')); + const torrentWebseedsContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ + targets: "#torrentWebseedsTableDiv", + menu: "torrentWebseedsMenu", + actions: { + AddWebSeeds: (element, ref) => { + addWebseedFN(); + }, + EditWebSeed: (element, ref) => { + // only allow editing of one row + element.firstElementChild.click(); + editWebSeedFN(element); + }, + RemoveWebSeed: (element, ref) => { + removeWebSeedFN(element); + } + }, + offsets: { + x: 0, + y: 2 + }, + onShow: function() { + const selectedWebseeds = torrentWebseedsTable.selectedRowsIds(); + + if (selectedWebseeds.length === 0) { + this.hideItem("EditWebSeed"); + this.hideItem("RemoveWebSeed"); + this.hideItem("CopyWebseedUrl"); + } + else { + if (selectedWebseeds.length === 1) + this.showItem("EditWebSeed"); + else + this.hideItem("EditWebSeed"); + + this.showItem("RemoveWebSeed"); + this.showItem("CopyWebseedUrl"); + } + } + }); + + const addWebseedFN = () => { + if (current_hash.length === 0) + return; + + new MochaUI.Window({ + id: "webseedsPage", + title: "QBT_TR(Add web seeds)QBT_TR[CONTEXT=HttpServer]", + loadMethod: "iframe", + contentURL: `addwebseeds.html?hash=${current_hash}`, + scrollbars: true, + resizable: false, + maximizable: false, + closable: true, + paddingVertical: 0, + paddingHorizontal: 0, + width: 500, + height: 260, + onCloseComplete: () => { + updateData(); + } + }); + }; + + const editWebSeedFN = (element) => { + if (current_hash.length === 0) + return; + + const selectedWebseeds = torrentWebseedsTable.selectedRowsIds(); + if (selectedWebseeds.length > 1) + return; + + const webseedUrl = selectedWebseeds[0]; + + new MochaUI.Window({ + id: "webseedsPage", + title: "QBT_TR(Web seed editing)QBT_TR[CONTEXT=PropertiesWidget]", + loadMethod: "iframe", + contentURL: `editwebseed.html?hash=${current_hash}&url=${encodeURIComponent(webseedUrl)}`, + scrollbars: true, + resizable: false, + maximizable: false, + closable: true, + paddingVertical: 0, + paddingHorizontal: 0, + width: 500, + height: 150, + onCloseComplete: () => { + updateData(); + } + }); + }; + + const removeWebSeedFN = (element) => { + if (current_hash.length === 0) + return; + + fetch("api/v2/torrents/removeWebSeeds", { + method: "POST", + body: new URLSearchParams({ + hash: current_hash, + urls: torrentWebseedsTable.selectedRowsIds().map(webseed => encodeURIComponent(webseed)).join("|") + }) + }) + .then((response) => { + if (!response.ok) + return; + + updateData(); + }); + }; + + const clear = () => { + torrentWebseedsTable.clear(); + }; + + new ClipboardJS("#CopyWebseedUrl", { + text: (trigger) => { + return torrentWebseedsTable.selectedRowsIds().join("\n"); + } + }); + + torrentWebseedsTable.setup("torrentWebseedsTableDiv", "torrentWebseedsTableFixedHeaderDiv", torrentWebseedsContextMenu); return exports(); })(); - Object.freeze(window.qBittorrent.PropWebseeds); diff --git a/src/webui/www/private/scripts/rename-files.js b/src/webui/www/private/scripts/rename-files.js index d9a2e2d6fcc2..5087f793eeca 100644 --- a/src/webui/www/private/scripts/rename-files.js +++ b/src/webui/www/private/scripts/rename-files.js @@ -1,11 +1,8 @@ -'use strict'; +"use strict"; -if (window.qBittorrent === undefined) { - window.qBittorrent = {}; -} - -window.qBittorrent.MultiRename = (function() { - const exports = function() { +window.qBittorrent ??= {}; +window.qBittorrent.MultiRename ??= (() => { + const exports = () => { return { AppliesTo: AppliesTo, RenameFiles: RenameFiles @@ -13,13 +10,13 @@ window.qBittorrent.MultiRename = (function() { }; const AppliesTo = { - "FilenameExtension": "FilenameExtension", - "Filename": "Filename", - "Extension": "Extension" + FilenameExtension: "FilenameExtension", + Filename: "Filename", + Extension: "Extension" }; const RenameFiles = new Class({ - hash: '', + hash: "", selectedFiles: [], matchedFiles: [], @@ -47,10 +44,10 @@ window.qBittorrent.MultiRename = (function() { replaceAll: false, fileEnumerationStart: 0, - onChanged: function(rows) {}, - onInvalidRegex: function(err) {}, - onRenamed: function(rows) {}, - onRenameError: function(err) {}, + onChanged: (rows) => {}, + onInvalidRegex: (err) => {}, + onRenamed: (rows) => {}, + onRenameError: (response) => {}, _inner_update: function() { const findMatches = (regex, str) => { @@ -58,25 +55,24 @@ window.qBittorrent.MultiRename = (function() { let count = 0; let lastIndex = 0; regex.lastIndex = 0; - let matches = []; + const matches = []; do { result = regex.exec(str); + if (result === null) + break; - if (result == null) { break; } matches.push(result); // regex assertions don't modify lastIndex, // so we need to explicitly break out to prevent infinite loop - if (lastIndex == regex.lastIndex) { + if (lastIndex === regex.lastIndex) break; - } - else { + else lastIndex = regex.lastIndex; - } // Maximum of 250 matches per file ++count; - } while (regex.global && count < 250); + } while (regex.global && (count < 250)); return matches; }; @@ -85,7 +81,7 @@ window.qBittorrent.MultiRename = (function() { return input.substring(0, start) + replacement + input.substring(end); }; const replaceGroup = (input, search, replacement, escape, stripEscape = true) => { - let result = ''; + let result = ""; let i = 0; while (i < input.length) { // Check if the current index contains the escape string @@ -123,18 +119,19 @@ window.qBittorrent.MultiRename = (function() { this.matchedFiles = []; // Ignore empty searches - if (!this._inner_search) { + if (!this._inner_search) return; - } // Setup regex flags let regexFlags = ""; - if (this.matchAllOccurrences) { regexFlags += "g"; } - if (!this.caseSensitive) { regexFlags += "i"; } + if (this.matchAllOccurrences) + regexFlags += "g"; + if (!this.caseSensitive) + regexFlags += "i"; // Setup regex search - const regexEscapeExp = new RegExp(/[/\-\\^$*+?.()|[\]{}]/g); - const standardSearch = new RegExp(this._inner_search.replace(regexEscapeExp, '\\$&'), regexFlags); + const regexEscapeExp = /[/\-\\^$*+?.()|[\]{}]/g; + const standardSearch = new RegExp(this._inner_search.replace(regexEscapeExp, "\\$&"), regexFlags); let regexSearch; try { regexSearch = new RegExp(this._inner_search, regexFlags); @@ -152,17 +149,17 @@ window.qBittorrent.MultiRename = (function() { const row = this.selectedFiles[i]; // Ignore files - if (!row.isFolder && !this.includeFiles) { + if (!row.isFolder && !this.includeFiles) continue; - } + // Ignore folders - else if (row.isFolder && !this.includeFolders) { + else if (row.isFolder && !this.includeFolders) continue; - } // Get file extension and reappend the "." (only when the file has an extension) let fileExtension = window.qBittorrent.Filesystem.fileExtension(row.original); - if (fileExtension) { fileExtension = "." + fileExtension; } + if (fileExtension) + fileExtension = `.${fileExtension}`; const fileNameWithoutExt = row.original.slice(0, row.original.lastIndexOf(fileExtension)); @@ -182,9 +179,8 @@ window.qBittorrent.MultiRename = (function() { break; } // Ignore rows without a match - if (!matches || matches.length == 0) { + if (!matches || (matches.length === 0)) continue; - } let renamed = row.original; for (let i = matches.length - 1; i >= 0; --i) { @@ -192,23 +188,26 @@ window.qBittorrent.MultiRename = (function() { let replacement = this._inner_replacement; // Replace numerical groups for (let g = 0; g < match.length; ++g) { - let group = match[g]; - if (!group) { continue; } - replacement = replaceGroup(replacement, `$${g}`, group, '\\', false); + const group = match[g]; + if (!group) + continue; + replacement = replaceGroup(replacement, `$${g}`, group, "\\", false); } // Replace named groups - for (let namedGroup in match.groups) { - replacement = replaceGroup(replacement, `$${namedGroup}`, match.groups[namedGroup], '\\', false); + for (const namedGroup in match.groups) { + if (!Object.hasOwn(match.groups, namedGroup)) + continue; + replacement = replaceGroup(replacement, `$${namedGroup}`, match.groups[namedGroup], "\\", false); } // Replace auxiliary variables - for (let v = 'dddddddd'; v !== ''; v = v.substring(1)) { - let fileCount = fileEnumeration.toString().padStart(v.length, '0'); - replacement = replaceGroup(replacement, `$${v}`, fileCount, '\\', false); + for (let v = "dddddddd"; v !== ""; v = v.substring(1)) { + const fileCount = fileEnumeration.toString().padStart(v.length, "0"); + replacement = replaceGroup(replacement, `$${v}`, fileCount, "\\", false); } // Remove empty $ variable - replacement = replaceGroup(replacement, '$', '', '\\'); + replacement = replaceGroup(replacement, "$", "", "\\"); const wholeMatch = match[0]; - const index = match['index']; + const index = match["index"]; renamed = replaceBetween(renamed, index + offset, index + offset + wholeMatch.length, replacement); } @@ -219,12 +218,12 @@ window.qBittorrent.MultiRename = (function() { }, rename: async function() { - if (!this.matchedFiles || this.matchedFiles.length === 0 || !this.hash) { + if (!this.matchedFiles || (this.matchedFiles.length === 0) || !this.hash) { this.onRenamed([]); return; } - let replaced = []; + const replaced = []; const _inner_rename = async function(i) { const match = this.matchedFiles[i]; const newName = match.renamed; @@ -241,21 +240,19 @@ window.qBittorrent.MultiRename = (function() { const newPath = parentPath ? parentPath + window.qBittorrent.Filesystem.PathSeparator + newName : newName; - let renameRequest = new Request({ - url: isFolder ? 'api/v2/torrents/renameFolder' : 'api/v2/torrents/renameFile', - method: 'post', - data: { - hash: this.hash, - oldPath: oldPath, - newPath: newPath - } - }); try { - await renameRequest.send(); + await fetch((isFolder ? "api/v2/torrents/renameFolder" : "api/v2/torrents/renameFile"), { + method: "POST", + body: new URLSearchParams({ + hash: this.hash, + oldPath: oldPath, + newPath: newPath + }) + }); replaced.push(match); } - catch (err) { - this.onRenameError(err, match); + catch (response) { + this.onRenameError(response, match); } }.bind(this); @@ -263,9 +260,8 @@ window.qBittorrent.MultiRename = (function() { if (this.replaceAll) { // matchedFiles are in DFS order so we rename in reverse // in order to prevent unwanted folder creation - for (let i = replacements - 1; i >= 0; --i) { + for (let i = replacements - 1; i >= 0; --i) await _inner_rename(i); - } } else { // single replacements go linearly top-down because the @@ -282,5 +278,4 @@ window.qBittorrent.MultiRename = (function() { return exports(); })(); - Object.freeze(window.qBittorrent.MultiRename); diff --git a/src/webui/www/private/scripts/search.js b/src/webui/www/private/scripts/search.js new file mode 100644 index 000000000000..3dc0b454b0b9 --- /dev/null +++ b/src/webui/www/private/scripts/search.js @@ -0,0 +1,886 @@ +/* + * MIT License + * Copyright (C) 2024 Thomas Piccirello + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +"use strict"; + +window.qBittorrent ??= {}; +window.qBittorrent.Search ??= (() => { + const exports = () => { + return { + startStopSearch: startStopSearch, + manageSearchPlugins: manageSearchPlugins, + searchPlugins: searchPlugins, + searchText: searchText, + searchSeedsFilter: searchSeedsFilter, + searchSizeFilter: searchSizeFilter, + init: init, + getPlugin: getPlugin, + searchInTorrentName: searchInTorrentName, + onSearchPatternChanged: onSearchPatternChanged, + categorySelected: categorySelected, + pluginSelected: pluginSelected, + searchSeedsFilterChanged: searchSeedsFilterChanged, + searchSizeFilterChanged: searchSizeFilterChanged, + searchSizeFilterPrefixChanged: searchSizeFilterPrefixChanged, + closeSearchTab: closeSearchTab, + }; + }; + + const searchTabIdPrefix = "Search-"; + let loadSearchPluginsTimer = -1; + const searchPlugins = []; + let prevSearchPluginsResponse; + let selectedCategory = "QBT_TR(All categories)QBT_TR[CONTEXT=SearchEngineWidget]"; + let selectedPlugin = "enabled"; + let prevSelectedPlugin; + // whether the current search pattern differs from the pattern that the active search was performed with + let searchPatternChanged = false; + + let searchResultsTable; + /** @type Map **/ + const searchState = new Map(); + const searchText = { + pattern: "", + filterPattern: "" + }; + const searchSeedsFilter = { + min: 0, + max: 0 + }; + const searchSizeFilter = { + min: 0.00, + minUnit: 2, // B = 0, KiB = 1, MiB = 2, GiB = 3, TiB = 4, PiB = 5, EiB = 6 + max: 0.00, + maxUnit: 3 + }; + + const searchResultsTabsContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ + targets: ".searchTab", + menu: "searchResultsTabsMenu", + actions: { + closeTab: (tab) => { closeSearchTab(tab); }, + closeAllTabs: () => { + for (const tab of document.querySelectorAll("#searchTabs .searchTab")) + closeSearchTab(tab); + } + }, + offsets: { + x: 2, + y: -60 + }, + onShow: function() { + setActiveTab(this.options.element); + } + }); + + const init = () => { + // load "Search in" preference from local storage + $("searchInTorrentName").value = (LocalPreferences.get("search_in_filter") === "names") ? "names" : "everywhere"; + const searchResultsTableContextMenu = new window.qBittorrent.ContextMenu.ContextMenu({ + targets: "#searchResultsTableDiv tbody tr", + menu: "searchResultsTableMenu", + actions: { + Download: downloadSearchTorrent, + OpenDescriptionUrl: openSearchTorrentDescriptionUrl + }, + offsets: { + x: 0, + y: -60 + } + }); + searchResultsTable = new window.qBittorrent.DynamicTable.SearchResultsTable(); + searchResultsTable.setup("searchResultsTableDiv", "searchResultsTableFixedHeaderDiv", searchResultsTableContextMenu); + getPlugins(); + + searchResultsTable.dynamicTableDiv.addEventListener("dblclick", (e) => { downloadSearchTorrent(); }); + + // listen for changes to searchInNameFilter + let searchInNameFilterTimer = -1; + $("searchInNameFilter").addEventListener("input", () => { + clearTimeout(searchInNameFilterTimer); + searchInNameFilterTimer = setTimeout(() => { + searchInNameFilterTimer = -1; + + const value = $("searchInNameFilter").value; + searchText.filterPattern = value; + searchFilterChanged(); + }, window.qBittorrent.Misc.FILTER_INPUT_DELAY); + }); + + document.getElementById("SearchPanel").addEventListener("keydown", (event) => { + switch (event.key) { + case "Enter": { + event.preventDefault(); + event.stopPropagation(); + + switch (event.target.id) { + case "manageSearchPlugins": + manageSearchPlugins(); + break; + case "searchPattern": + document.getElementById("startSearchButton").click(); + break; + } + + break; + } + } + }); + + // restore search tabs + const searchJobs = JSON.parse(LocalPreferences.get("search_jobs", "[]")); + for (const { id, pattern } of searchJobs) + createSearchTab(id, pattern); + }; + + const numSearchTabs = () => { + return document.querySelectorAll("#searchTabs li").length; + }; + + const getSearchIdFromTab = (tab) => { + return Number(tab.id.substring(searchTabIdPrefix.length)); + }; + + const createSearchTab = (searchId, pattern) => { + const newTabId = `${searchTabIdPrefix}${searchId}`; + const tabElem = document.createElement("a"); + tabElem.textContent = pattern; + + const closeTabElem = document.createElement("img"); + closeTabElem.alt = "QBT_TR(Close tab)QBT_TR[CONTEXT=SearchWidget]"; + closeTabElem.title = "QBT_TR(Close tab)QBT_TR[CONTEXT=SearchWidget]"; + closeTabElem.src = "images/application-exit.svg"; + closeTabElem.width = "10"; + closeTabElem.height = "10"; + closeTabElem.addEventListener("click", function(e) { + e.stopPropagation(); + closeSearchTab(this); + }); + + tabElem.prepend(closeTabElem); + tabElem.appendChild(getStatusIconElement("QBT_TR(Searching...)QBT_TR[CONTEXT=SearchJobWidget]", "images/queued.svg")); + + const listItem = document.createElement("li"); + listItem.id = newTabId; + listItem.classList.add("selected", "searchTab"); + listItem.addEventListener("click", (e) => { + setActiveTab(listItem); + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]"; + }); + listItem.appendChild(tabElem); + $("searchTabs").appendChild(listItem); + searchResultsTabsContextMenu.addTarget(listItem); + + // unhide the results elements + if (numSearchTabs() >= 1) { + $("searchResultsNoSearches").classList.add("invisible"); + $("searchResultsFilters").classList.remove("invisible"); + $("searchResultsTableContainer").classList.remove("invisible"); + $("searchTabsToolbar").classList.remove("invisible"); + } + + // select new tab + setActiveTab(listItem); + + searchResultsTable.clear(); + resetFilters(); + + searchState.set(searchId, { + searchPattern: pattern, + filterPattern: searchText.filterPattern, + seedsFilter: { min: searchSeedsFilter.min, max: searchSeedsFilter.max }, + sizeFilter: { min: searchSizeFilter.min, minUnit: searchSizeFilter.minUnit, max: searchSizeFilter.max, maxUnit: searchSizeFilter.maxUnit }, + searchIn: getSearchInTorrentName(), + rows: [], + rowId: 0, + selectedRowIds: [], + running: true, + loadResultsTimer: -1, + sort: { column: searchResultsTable.sortedColumn, reverse: searchResultsTable.reverseSort }, + }); + updateSearchResultsData(searchId); + }; + + const closeSearchTab = (el) => { + const tab = el.closest("li.searchTab"); + if (!tab) + return; + + const searchId = getSearchIdFromTab(tab); + const isTabSelected = tab.classList.contains("selected"); + const newTabToSelect = isTabSelected ? (tab.nextSibling || tab.previousSibling) : null; + + const currentSearchId = getSelectedSearchId(); + const state = searchState.get(currentSearchId); + // don't bother sending a stop request if already stopped + if (state && state.running) + stopSearch(searchId); + + tab.destroy(); + + fetch("api/v2/search/delete", { + method: "POST", + body: new URLSearchParams({ + id: searchId + }) + }); + + const searchJobs = JSON.parse(LocalPreferences.get("search_jobs", "[]")); + const jobIndex = searchJobs.findIndex((job) => job.id === searchId); + if (jobIndex >= 0) { + searchJobs.splice(jobIndex, 1); + LocalPreferences.set("search_jobs", JSON.stringify(searchJobs)); + } + + if (numSearchTabs() === 0) { + resetSearchState(); + resetFilters(); + + $("numSearchResultsVisible").textContent = 0; + $("numSearchResultsTotal").textContent = 0; + $("searchResultsNoSearches").classList.remove("invisible"); + $("searchResultsFilters").classList.add("invisible"); + $("searchResultsTableContainer").classList.add("invisible"); + $("searchTabsToolbar").classList.add("invisible"); + } + else if (isTabSelected && newTabToSelect) { + setActiveTab(newTabToSelect); + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]"; + } + }; + + const saveCurrentTabState = () => { + const currentSearchId = getSelectedSearchId(); + if (!currentSearchId) + return; + + const state = searchState.get(currentSearchId); + if (!state) + return; + + state.filterPattern = searchText.filterPattern; + state.seedsFilter = { + min: searchSeedsFilter.min, + max: searchSeedsFilter.max, + }; + state.sizeFilter = { + min: searchSizeFilter.min, + minUnit: searchSizeFilter.minUnit, + max: searchSizeFilter.max, + maxUnit: searchSizeFilter.maxUnit, + }; + state.searchIn = getSearchInTorrentName(); + + state.sort = { + column: searchResultsTable.sortedColumn, + reverse: searchResultsTable.reverseSort, + }; + + // we must copy the array to avoid taking a reference to it + state.selectedRowIds = [...searchResultsTable.selectedRows]; + }; + + const setActiveTab = (tab) => { + const searchId = getSearchIdFromTab(tab); + if (searchId === getSelectedSearchId()) + return; + + saveCurrentTabState(); + + MochaUI.selected(tab, "searchTabs"); + + const state = searchState.get(searchId); + let rowsToSelect = []; + + // restore table rows + searchResultsTable.clear(); + if (state) { + for (const row of state.rows) + searchResultsTable.updateRowData(row); + + rowsToSelect = state.selectedRowIds; + + // restore filters + searchText.pattern = state.searchPattern; + searchText.filterPattern = state.filterPattern; + $("searchInNameFilter").value = state.filterPattern; + + searchSeedsFilter.min = state.seedsFilter.min; + searchSeedsFilter.max = state.seedsFilter.max; + $("searchMinSeedsFilter").value = state.seedsFilter.min; + $("searchMaxSeedsFilter").value = state.seedsFilter.max; + + searchSizeFilter.min = state.sizeFilter.min; + searchSizeFilter.minUnit = state.sizeFilter.minUnit; + searchSizeFilter.max = state.sizeFilter.max; + searchSizeFilter.maxUnit = state.sizeFilter.maxUnit; + $("searchMinSizeFilter").value = state.sizeFilter.min; + $("searchMinSizePrefix").value = state.sizeFilter.minUnit; + $("searchMaxSizeFilter").value = state.sizeFilter.max; + $("searchMaxSizePrefix").value = state.sizeFilter.maxUnit; + + const currentSearchPattern = $("searchPattern").value.trim(); + if (state.running && (state.searchPattern === currentSearchPattern)) { + // allow search to be stopped + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Stop)QBT_TR[CONTEXT=SearchEngineWidget]"; + searchPatternChanged = false; + } + + searchResultsTable.setSortedColumn(state.sort.column, state.sort.reverse); + + $("searchInTorrentName").value = state.searchIn; + } + + // must restore all filters before calling updateTable + searchResultsTable.updateTable(); + + // must reselect rows after calling updateTable + if (rowsToSelect.length > 0) + searchResultsTable.reselectRows(rowsToSelect); + + $("numSearchResultsVisible").textContent = searchResultsTable.getFilteredAndSortedRows().length; + $("numSearchResultsTotal").textContent = searchResultsTable.getRowSize(); + }; + + const getStatusIconElement = (text, image) => { + const statusIcon = document.createElement("img"); + statusIcon.alt = text; + statusIcon.title = text; + statusIcon.src = image; + statusIcon.className = "statusIcon"; + statusIcon.width = "12"; + statusIcon.height = "12"; + return statusIcon; + }; + + const updateStatusIconElement = (searchId, text, image) => { + const searchTab = $(`${searchTabIdPrefix}${searchId}`); + if (searchTab) { + const statusIcon = searchTab.querySelector(".statusIcon"); + statusIcon.alt = text; + statusIcon.title = text; + statusIcon.src = image; + } + }; + + const startSearch = (pattern, category, plugins) => { + searchPatternChanged = false; + fetch("api/v2/search/start", { + method: "POST", + body: new URLSearchParams({ + pattern: pattern, + category: category, + plugins: plugins + }) + }) + .then(async (response) => { + if (!response.ok) + return; + + const responseJSON = await response.json(); + + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Stop)QBT_TR[CONTEXT=SearchEngineWidget]"; + const searchId = responseJSON.id; + createSearchTab(searchId, pattern); + + const searchJobs = JSON.parse(LocalPreferences.get("search_jobs", "[]")); + searchJobs.push({ id: searchId, pattern: pattern }); + LocalPreferences.set("search_jobs", JSON.stringify(searchJobs)); + }); + }; + + const stopSearch = (searchId) => { + fetch("api/v2/search/stop", { + method: "POST", + body: new URLSearchParams({ + id: searchId + }) + }) + .then((response) => { + if (!response.ok) + return; + + resetSearchState(searchId); + // not strictly necessary to do this when the tab is being closed, but there's no harm in it + updateStatusIconElement(searchId, "QBT_TR(Search aborted)QBT_TR[CONTEXT=SearchJobWidget]", "images/task-reject.svg"); + }); + }; + + const getSelectedSearchId = () => { + const selectedTab = $("searchTabs").querySelector("li.selected"); + return selectedTab ? getSearchIdFromTab(selectedTab) : null; + }; + + const startStopSearch = () => { + const currentSearchId = getSelectedSearchId(); + const state = searchState.get(currentSearchId); + const isSearchRunning = state && state.running; + if (!isSearchRunning || searchPatternChanged) { + const pattern = $("searchPattern").value.trim(); + const category = $("categorySelect").value; + const plugins = $("pluginsSelect").value; + + if (!pattern || !category || !plugins) + return; + + searchText.pattern = pattern; + startSearch(pattern, category, plugins); + } + else { + stopSearch(currentSearchId); + } + }; + + const openSearchTorrentDescriptionUrl = () => { + for (const rowID of searchResultsTable.selectedRowsIds()) + window.open(searchResultsTable.getRow(rowID).full_data.descrLink, "_blank"); + }; + + const copySearchTorrentName = () => { + const names = []; + searchResultsTable.selectedRowsIds().each((rowId) => { + names.push(searchResultsTable.getRow(rowId).full_data.fileName); + }); + return names.join("\n"); + }; + + const copySearchTorrentDownloadLink = () => { + const urls = []; + searchResultsTable.selectedRowsIds().each((rowId) => { + urls.push(searchResultsTable.getRow(rowId).full_data.fileUrl); + }); + return urls.join("\n"); + }; + + const copySearchTorrentDescriptionUrl = () => { + const urls = []; + searchResultsTable.selectedRowsIds().each((rowId) => { + urls.push(searchResultsTable.getRow(rowId).full_data.descrLink); + }); + return urls.join("\n"); + }; + + const downloadSearchTorrent = () => { + const urls = []; + for (const rowID of searchResultsTable.selectedRowsIds()) + urls.push(searchResultsTable.getRow(rowID).full_data.fileUrl); + + // only proceed if at least 1 row was selected + if (!urls.length) + return; + + showDownloadPage(urls); + }; + + const manageSearchPlugins = () => { + const id = "searchPlugins"; + if (!$(id)) { + new MochaUI.Window({ + id: id, + title: "QBT_TR(Search plugins)QBT_TR[CONTEXT=PluginSelectDlg]", + icon: "images/qbittorrent-tray.svg", + loadMethod: "xhr", + contentURL: "views/searchplugins.html", + scrollbars: false, + maximizable: false, + paddingVertical: 0, + paddingHorizontal: 0, + width: loadWindowWidth(id, 600), + height: loadWindowHeight(id, 360), + onResize: window.qBittorrent.Misc.createDebounceHandler(500, (e) => { + saveWindowSize(id); + }), + onBeforeBuild: () => { + loadSearchPlugins(); + }, + onClose: () => { + clearTimeout(loadSearchPluginsTimer); + loadSearchPluginsTimer = -1; + } + }); + } + }; + + const loadSearchPlugins = () => { + getPlugins(); + loadSearchPluginsTimer = loadSearchPlugins.delay(2000); + }; + + const onSearchPatternChanged = () => { + const currentSearchId = getSelectedSearchId(); + const state = searchState.get(currentSearchId); + const currentSearchPattern = $("searchPattern").value.trim(); + // start a new search if pattern has changed, otherwise allow the search to be stopped + if (state && (state.searchPattern === currentSearchPattern)) { + searchPatternChanged = false; + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Stop)QBT_TR[CONTEXT=SearchEngineWidget]"; + } + else { + searchPatternChanged = true; + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]"; + } + }; + + const categorySelected = () => { + selectedCategory = $("categorySelect").value; + }; + + const pluginSelected = () => { + selectedPlugin = $("pluginsSelect").value; + + if (selectedPlugin !== prevSelectedPlugin) { + prevSelectedPlugin = selectedPlugin; + getSearchCategories(); + } + }; + + const reselectCategory = () => { + for (let i = 0; i < $("categorySelect").options.length; ++i) { + if ($("categorySelect").options[i].get("value") === selectedCategory) + $("categorySelect").options[i].selected = true; + } + + categorySelected(); + }; + + const reselectPlugin = () => { + for (let i = 0; i < $("pluginsSelect").options.length; ++i) { + if ($("pluginsSelect").options[i].get("value") === selectedPlugin) + $("pluginsSelect").options[i].selected = true; + } + + pluginSelected(); + }; + + const resetSearchState = (searchId) => { + document.getElementById("startSearchButton").lastChild.textContent = "QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]"; + const state = searchState.get(searchId); + if (state) { + state.running = false; + clearTimeout(state.loadResultsTimer); + state.loadResultsTimer = -1; + } + }; + + const getSearchCategories = () => { + const populateCategorySelect = (categories) => { + const categoryOptions = []; + + for (const category of categories) { + const option = document.createElement("option"); + option.value = category.id; + option.textContent = category.name; + categoryOptions.push(option); + }; + + // first category is "All Categories" + if (categoryOptions.length > 1) { + // add separator + const option = document.createElement("option"); + option.disabled = true; + option.textContent = "──────────"; + categoryOptions.splice(1, 0, option); + } + + $("categorySelect").replaceChildren(...categoryOptions); + }; + + const selectedPlugin = $("pluginsSelect").value; + + if ((selectedPlugin === "all") || (selectedPlugin === "enabled")) { + const uniqueCategories = {}; + for (const plugin of searchPlugins) { + if ((selectedPlugin === "enabled") && !plugin.enabled) + continue; + for (const category of plugin.supportedCategories) { + if (uniqueCategories[category.id] === undefined) + uniqueCategories[category.id] = category; + } + } + // we must sort the ids to maintain consistent order. + const categories = Object.keys(uniqueCategories).sort().map(id => uniqueCategories[id]); + populateCategorySelect(categories); + } + else { + const plugin = getPlugin(selectedPlugin); + const plugins = (plugin === null) ? [] : plugin.supportedCategories; + populateCategorySelect(plugins); + } + + reselectCategory(); + }; + + const getPlugins = () => { + fetch("api/v2/search/plugins", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const responseJSON = await response.json(); + + const createOption = (text, value, disabled = false) => { + const option = document.createElement("option"); + if (value !== undefined) + option.value = value; + option.textContent = text; + option.disabled = disabled; + return option; + }; + + if (prevSearchPluginsResponse !== responseJSON) { + prevSearchPluginsResponse = responseJSON; + searchPlugins.length = 0; + responseJSON.forEach((plugin) => { + searchPlugins.push(plugin); + }); + + const pluginOptions = []; + pluginOptions.push(createOption("QBT_TR(Only enabled)QBT_TR[CONTEXT=SearchEngineWidget]", "enabled")); + pluginOptions.push(createOption("QBT_TR(All plugins)QBT_TR[CONTEXT=SearchEngineWidget]", "all")); + + const searchPluginsEmpty = (searchPlugins.length === 0); + if (!searchPluginsEmpty) { + $("searchResultsNoPlugins").classList.add("invisible"); + if (numSearchTabs() === 0) + $("searchResultsNoSearches").classList.remove("invisible"); + + // sort plugins alphabetically + const allPlugins = searchPlugins.sort((left, right) => { + const leftName = left.fullName; + const rightName = right.fullName; + return window.qBittorrent.Misc.naturalSortCollator.compare(leftName, rightName); + }); + + allPlugins.each((plugin) => { + if (plugin.enabled === true) + pluginOptions.push(createOption(plugin.fullName, plugin.name)); + }); + + if (pluginOptions.length > 2) + pluginOptions.splice(2, 0, createOption("──────────", undefined, true)); + } + + $("pluginsSelect").replaceChildren(...pluginOptions); + + $("searchPattern").disabled = searchPluginsEmpty; + $("categorySelect").disabled = searchPluginsEmpty; + $("pluginsSelect").disabled = searchPluginsEmpty; + document.getElementById("startSearchButton").disabled = searchPluginsEmpty; + + if (window.qBittorrent.SearchPlugins !== undefined) + window.qBittorrent.SearchPlugins.updateTable(); + + reselectPlugin(); + } + }); + }; + + const getPlugin = (name) => { + for (let i = 0; i < searchPlugins.length; ++i) { + if (searchPlugins[i].name === name) + return searchPlugins[i]; + } + + return null; + }; + + const resetFilters = () => { + searchText.filterPattern = ""; + $("searchInNameFilter").value = ""; + + searchSeedsFilter.min = 0; + searchSeedsFilter.max = 0; + $("searchMinSeedsFilter").value = searchSeedsFilter.min; + $("searchMaxSeedsFilter").value = searchSeedsFilter.max; + + searchSizeFilter.min = 0.00; + searchSizeFilter.minUnit = 2; // B = 0, KiB = 1, MiB = 2, GiB = 3, TiB = 4, PiB = 5, EiB = 6 + searchSizeFilter.max = 0.00; + searchSizeFilter.maxUnit = 3; + $("searchMinSizeFilter").value = searchSizeFilter.min; + $("searchMinSizePrefix").value = searchSizeFilter.minUnit; + $("searchMaxSizeFilter").value = searchSizeFilter.max; + $("searchMaxSizePrefix").value = searchSizeFilter.maxUnit; + }; + + const getSearchInTorrentName = () => { + return ($("searchInTorrentName").value === "names") ? "names" : "everywhere"; + }; + + const searchInTorrentName = () => { + LocalPreferences.set("search_in_filter", getSearchInTorrentName()); + searchFilterChanged(); + }; + + const searchSeedsFilterChanged = () => { + searchSeedsFilter.min = $("searchMinSeedsFilter").value; + searchSeedsFilter.max = $("searchMaxSeedsFilter").value; + + searchFilterChanged(); + }; + + const searchSizeFilterChanged = () => { + searchSizeFilter.min = $("searchMinSizeFilter").value; + searchSizeFilter.minUnit = $("searchMinSizePrefix").value; + searchSizeFilter.max = $("searchMaxSizeFilter").value; + searchSizeFilter.maxUnit = $("searchMaxSizePrefix").value; + + searchFilterChanged(); + }; + + const searchSizeFilterPrefixChanged = () => { + if ((Number($("searchMinSizeFilter").value) !== 0) || (Number($("searchMaxSizeFilter").value) !== 0)) + searchSizeFilterChanged(); + }; + + const searchFilterChanged = () => { + searchResultsTable.updateTable(); + $("numSearchResultsVisible").textContent = searchResultsTable.getFilteredAndSortedRows().length; + }; + + const loadSearchResultsData = function(searchId) { + const state = searchState.get(searchId); + const url = new URL("api/v2/search/results", window.location); + url.search = new URLSearchParams({ + id: searchId, + limit: 500, + offset: state.rowId + }); + fetch(url, { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) { + if ((response.status === 400) || (response.status === 404)) { + // bad params. search id is invalid + resetSearchState(searchId); + updateStatusIconElement(searchId, "QBT_TR(An error occurred during search...)QBT_TR[CONTEXT=SearchJobWidget]", "images/error.svg"); + } + else { + clearTimeout(state.loadResultsTimer); + state.loadResultsTimer = loadSearchResultsData.delay(3000, this, searchId); + } + return; + } + + $("error_div").textContent = ""; + + const state = searchState.get(searchId); + // check if user stopped the search prior to receiving the response + if (!state.running) { + clearTimeout(state.loadResultsTimer); + updateStatusIconElement(searchId, "QBT_TR(Search aborted)QBT_TR[CONTEXT=SearchJobWidget]", "images/task-reject.svg"); + return; + } + + const responseJSON = await response.json(); + if (responseJSON) { + const state = searchState.get(searchId); + const newRows = []; + + if (responseJSON.results) { + const results = responseJSON.results; + for (let i = 0; i < results.length; ++i) { + const result = results[i]; + const row = { + rowId: state.rowId, + descrLink: result.descrLink, + fileName: result.fileName, + fileSize: result.fileSize, + fileUrl: result.fileUrl, + nbLeechers: result.nbLeechers, + nbSeeders: result.nbSeeders, + engineName: result.engineName, + siteUrl: result.siteUrl, + pubDate: result.pubDate, + }; + + newRows.push(row); + state.rows.push(row); + state.rowId += 1; + } + } + + // only update table if this search is currently being displayed + if (searchId === getSelectedSearchId()) { + for (const row of newRows) + searchResultsTable.updateRowData(row); + + $("numSearchResultsVisible").textContent = searchResultsTable.getFilteredAndSortedRows().length; + $("numSearchResultsTotal").textContent = searchResultsTable.getRowSize(); + + searchResultsTable.updateTable(); + } + + if ((responseJSON.status === "Stopped") && (state.rowId >= responseJSON.total)) { + resetSearchState(searchId); + updateStatusIconElement(searchId, "QBT_TR(Search has finished)QBT_TR[CONTEXT=SearchJobWidget]", "images/task-complete.svg"); + return; + } + } + + clearTimeout(state.loadResultsTimer); + state.loadResultsTimer = loadSearchResultsData.delay(2000, this, searchId); + }); + }; + + const updateSearchResultsData = function(searchId) { + const state = searchState.get(searchId); + clearTimeout(state.loadResultsTimer); + state.loadResultsTimer = loadSearchResultsData.delay(500, this, searchId); + }; + + new ClipboardJS(".copySearchDataToClipboard", { + text: (trigger) => { + switch (trigger.id) { + case "copySearchTorrentName": + return copySearchTorrentName(); + case "copySearchTorrentDownloadLink": + return copySearchTorrentDownloadLink(); + case "copySearchTorrentDescriptionUrl": + return copySearchTorrentDescriptionUrl(); + default: + return ""; + } + } + }); + + return exports(); +})(); +Object.freeze(window.qBittorrent.Search); diff --git a/src/webui/www/private/scripts/speedslider.js b/src/webui/www/private/scripts/speedslider.js index be27c8f536a1..24544a8d1dde 100644 --- a/src/webui/www/private/scripts/speedslider.js +++ b/src/webui/www/private/scripts/speedslider.js @@ -26,214 +26,224 @@ * exception statement from your version. */ -'use strict'; +"use strict"; MochaUI.extend({ - addUpLimitSlider: function(hashes) { - if ($('uplimitSliderarea')) { + addUpLimitSlider: (hashes) => { + if ($("uplimitSliderarea")) { // Get global upload limit - let maximum = 500; - new Request({ - url: 'api/v2/transfer/uploadLimit', - method: 'get', - data: {}, - onSuccess: function(data) { - if (data) { - const tmp = data.toInt(); - if (tmp > 0) { - maximum = tmp / 1024.0; - } - else { - if (hashes[0] == "global") - maximum = 10000; - else - maximum = 1000; - } + fetch("api/v2/transfer/uploadLimit", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const data = await response.text(); + + let maximum = 500; + const tmp = Number(data); + if (tmp > 0) { + maximum = tmp / 1024.0; } + else { + if (hashes[0] === "global") + maximum = 10000; + else + maximum = 1000; + } + // Get torrents upload limit // And create slider - if (hashes[0] == 'global') { + if (hashes[0] === "global") { let up_limit = maximum; if (up_limit < 0) up_limit = 0; maximum = 10000; - new Slider($('uplimitSliderarea'), $('uplimitSliderknob'), { + new Slider($("uplimitSliderarea"), $("uplimitSliderknob"), { steps: maximum, offset: 0, - initialStep: up_limit.round(), - onChange: function(pos) { + initialStep: Math.round(up_limit), + onChange: (pos) => { if (pos > 0) { - $('uplimitUpdatevalue').value = pos; - $('upLimitUnit').style.visibility = "visible"; + $("uplimitUpdatevalue").value = pos; + $("upLimitUnit").style.visibility = "visible"; } else { - $('uplimitUpdatevalue').value = '∞'; - $('upLimitUnit').style.visibility = "hidden"; + $("uplimitUpdatevalue").value = "∞"; + $("upLimitUnit").style.visibility = "hidden"; } - }.bind(this) + } }); // Set default value if (up_limit === 0) { - $('uplimitUpdatevalue').value = '∞'; - $('upLimitUnit').style.visibility = "hidden"; + $("uplimitUpdatevalue").value = "∞"; + $("upLimitUnit").style.visibility = "hidden"; } else { - $('uplimitUpdatevalue').value = up_limit.round(); - $('upLimitUnit').style.visibility = "visible"; + $("uplimitUpdatevalue").value = Math.round(up_limit); + $("upLimitUnit").style.visibility = "visible"; } } else { - new Request.JSON({ - url: 'api/v2/torrents/uploadLimit', - noCache: true, - method: 'post', - data: { - hashes: hashes.join('|') - }, - onSuccess: function(data) { - if (data) { - let up_limit = data[hashes[0]]; - for (const key in data) - if (up_limit != data[key]) { - up_limit = 0; - break; - } - if (up_limit < 0) + fetch("api/v2/torrents/uploadLimit", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|") + }) + }) + .then(async (response) => { + if (!response.ok) + return; + + const data = await response.json(); + + let up_limit = data[hashes[0]]; + for (const key in data) { + if (up_limit !== data[key]) { up_limit = 0; - new Slider($('uplimitSliderarea'), $('uplimitSliderknob'), { - steps: maximum, - offset: 0, - initialStep: (up_limit / 1024.0).round(), - onChange: function(pos) { - if (pos > 0) { - $('uplimitUpdatevalue').value = pos; - $('upLimitUnit').style.visibility = "visible"; - } - else { - $('uplimitUpdatevalue').value = '∞'; - $('upLimitUnit').style.visibility = "hidden"; - } - }.bind(this) - }); - // Set default value - if (up_limit === 0) { - $('uplimitUpdatevalue').value = '∞'; - $('upLimitUnit').style.visibility = "hidden"; + break; } - else { - $('uplimitUpdatevalue').value = (up_limit / 1024.0).round(); - $('upLimitUnit').style.visibility = "visible"; + } + if (up_limit < 0) + up_limit = 0; + new Slider($("uplimitSliderarea"), $("uplimitSliderknob"), { + steps: maximum, + offset: 0, + initialStep: Math.round(up_limit / 1024), + onChange: (pos) => { + if (pos > 0) { + $("uplimitUpdatevalue").value = pos; + $("upLimitUnit").style.visibility = "visible"; + } + else { + $("uplimitUpdatevalue").value = "∞"; + $("upLimitUnit").style.visibility = "hidden"; + } } + }); + // Set default value + if (up_limit === 0) { + $("uplimitUpdatevalue").value = "∞"; + $("upLimitUnit").style.visibility = "hidden"; } - } - }).send(); + else { + $("uplimitUpdatevalue").value = Math.round(up_limit / 1024); + $("upLimitUnit").style.visibility = "visible"; + } + }); } - } - }).send(); + }); } }, - addDlLimitSlider: function(hashes) { - if ($('dllimitSliderarea')) { + addDlLimitSlider: (hashes) => { + if ($("dllimitSliderarea")) { // Get global upload limit - let maximum = 500; - new Request({ - url: 'api/v2/transfer/downloadLimit', - method: 'get', - data: {}, - onSuccess: function(data) { - if (data) { - const tmp = data.toInt(); - if (tmp > 0) { - maximum = tmp / 1024.0; - } - else { - if (hashes[0] == "global") - maximum = 10000; - else - maximum = 1000; - } + fetch("api/v2/transfer/downloadLimit", { + method: "GET", + cache: "no-store" + }) + .then(async (response) => { + if (!response.ok) + return; + + const data = await response.text(); + + let maximum = 500; + const tmp = Number(data); + if (tmp > 0) { + maximum = tmp / 1024.0; } + else { + if (hashes[0] === "global") + maximum = 10000; + else + maximum = 1000; + } + // Get torrents download limit // And create slider - if (hashes[0] == 'global') { + if (hashes[0] === "global") { let dl_limit = maximum; if (dl_limit < 0) dl_limit = 0; maximum = 10000; - new Slider($('dllimitSliderarea'), $('dllimitSliderknob'), { + new Slider($("dllimitSliderarea"), $("dllimitSliderknob"), { steps: maximum, offset: 0, - initialStep: dl_limit.round(), - onChange: function(pos) { + initialStep: Math.round(dl_limit), + onChange: (pos) => { if (pos > 0) { - $('dllimitUpdatevalue').value = pos; - $('dlLimitUnit').style.visibility = "visible"; + $("dllimitUpdatevalue").value = pos; + $("dlLimitUnit").style.visibility = "visible"; } else { - $('dllimitUpdatevalue').value = '∞'; - $('dlLimitUnit').style.visibility = "hidden"; + $("dllimitUpdatevalue").value = "∞"; + $("dlLimitUnit").style.visibility = "hidden"; } - }.bind(this) + } }); // Set default value if (dl_limit === 0) { - $('dllimitUpdatevalue').value = '∞'; - $('dlLimitUnit').style.visibility = "hidden"; + $("dllimitUpdatevalue").value = "∞"; + $("dlLimitUnit").style.visibility = "hidden"; } else { - $('dllimitUpdatevalue').value = dl_limit.round(); - $('dlLimitUnit').style.visibility = "visible"; + $("dllimitUpdatevalue").value = Math.round(dl_limit); + $("dlLimitUnit").style.visibility = "visible"; } } else { - new Request.JSON({ - url: 'api/v2/torrents/downloadLimit', - noCache: true, - method: 'post', - data: { - hashes: hashes.join('|') - }, - onSuccess: function(data) { - if (data) { - let dl_limit = data[hashes[0]]; - for (const key in data) - if (dl_limit != data[key]) { - dl_limit = 0; - break; - } - if (dl_limit < 0) + fetch("api/v2/torrents/downloadLimit", { + method: "POST", + body: new URLSearchParams({ + hashes: hashes.join("|") + }) + }) + .then(async (response) => { + if (!response.ok) + return; + + const data = await response.json(); + + let dl_limit = data[hashes[0]]; + for (const key in data) { + if (dl_limit !== data[key]) { dl_limit = 0; - new Slider($('dllimitSliderarea'), $('dllimitSliderknob'), { - steps: maximum, - offset: 0, - initialStep: (dl_limit / 1024.0).round(), - onChange: function(pos) { - if (pos > 0) { - $('dllimitUpdatevalue').value = pos; - $('dlLimitUnit').style.visibility = "visible"; - } - else { - $('dllimitUpdatevalue').value = '∞'; - $('dlLimitUnit').style.visibility = "hidden"; - } - }.bind(this) - }); - // Set default value - if (dl_limit === 0) { - $('dllimitUpdatevalue').value = '∞'; - $('dlLimitUnit').style.visibility = "hidden"; + break; } - else { - $('dllimitUpdatevalue').value = (dl_limit / 1024.0).round(); - $('dlLimitUnit').style.visibility = "visible"; + } + if (dl_limit < 0) + dl_limit = 0; + new Slider($("dllimitSliderarea"), $("dllimitSliderknob"), { + steps: maximum, + offset: 0, + initialStep: Math.round(dl_limit / 1024), + onChange: (pos) => { + if (pos > 0) { + $("dllimitUpdatevalue").value = pos; + $("dlLimitUnit").style.visibility = "visible"; + } + else { + $("dllimitUpdatevalue").value = "∞"; + $("dlLimitUnit").style.visibility = "hidden"; + } } + }); + // Set default value + if (dl_limit === 0) { + $("dllimitUpdatevalue").value = "∞"; + $("dlLimitUnit").style.visibility = "hidden"; } - } - }).send(); + else { + $("dllimitUpdatevalue").value = Math.round(dl_limit / 1024); + $("dlLimitUnit").style.visibility = "visible"; + } + }); } - } - }).send(); + }); } } }); diff --git a/src/webui/www/private/setlocation.html b/src/webui/www/private/setlocation.html index 36a2ee81588c..1455340df5af 100644 --- a/src/webui/www/private/setlocation.html +++ b/src/webui/www/private/setlocation.html @@ -1,66 +1,66 @@ - + - + QBT_TR(Set location)QBT_TR[CONTEXT=HttpServer] - + + + @@ -68,11 +68,11 @@
          -

          QBT_TR(Location)QBT_TR[CONTEXT=TransferListWidget]:

          - + +
           
          - +
          diff --git a/src/webui/www/private/shareratio.html b/src/webui/www/private/shareratio.html index 897f0cb01a0c..b106e72b8c4a 100644 --- a/src/webui/www/private/shareratio.html +++ b/src/webui/www/private/shareratio.html @@ -1,134 +1,133 @@ - + - + QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDialog] - + - + +
          - QBT_TR(Use global share limit)QBT_TR[CONTEXT=UpDownRatioDialog]
          - QBT_TR(Set no share limit)QBT_TR[CONTEXT=UpDownRatioDialog]
          - QBT_TR(Set share limit to)QBT_TR[CONTEXT=UpDownRatioDialog]
          +
          +
          +
          - - - + + +
          - - - + + +
          - - - + + +
          - +
          diff --git a/src/webui/www/private/upload.html b/src/webui/www/private/upload.html index b2e2b018cfa2..d7a065a26a64 100644 --- a/src/webui/www/private/upload.html +++ b/src/webui/www/private/upload.html @@ -1,177 +1,185 @@ - + - + QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer] - - + + + + +
          - +
          + QBT_TR(Torrent options)QBT_TR[CONTEXT=AddNewTorrentDialog]
          - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          - - - -
          - - - -
          - - - -
          - - -
          -
          + + + - - -
          - - - - -
          - - - -
          - - - -
          - - - -
          - - - -
          - - - -
          - - - -
          - - - - -
          - - - - -
          + + + +
          + + + +
          + + +
          + + +
          +
          + + + + +
          + + + +
          + + + +
          + + + +
          + + + +
          + + + +
          + + + +
          + + + + +
          + + + + +
          +
          + -
          diff --git a/src/webui/www/private/uploadlimit.html b/src/webui/www/private/uploadlimit.html index e6cb93ef6f8d..ed672cd47942 100644 --- a/src/webui/www/private/uploadlimit.html +++ b/src/webui/www/private/uploadlimit.html @@ -1,87 +1,90 @@ - + - + QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget] - + + + -
          +
          -
          QBT_TR(Upload limit:)QBT_TR[CONTEXT=PropertiesWidget] QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]
          +
          + + + QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog] +
          - - +
          - diff --git a/src/webui/www/private/views/about.html b/src/webui/www/private/views/about.html index cf864daae809..506b773f8820 100644 --- a/src/webui/www/private/views/about.html +++ b/src/webui/www/private/views/about.html @@ -1,58 +1,64 @@
          - QBT_TR(qBittorrent Mascot)QBT_TR[CONTEXT=AboutDialog] + QBT_TR(qBittorrent Mascot)QBT_TR[CONTEXT=AboutDialog]
          - QBT_TR(qBittorrent icon)QBT_TR[CONTEXT=AboutDialog] -

          + QBT_TR(qBittorrent icon)QBT_TR[CONTEXT=AboutDialog] +

          qBittorrent

          QBT_TR(An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar.)QBT_TR[CONTEXT=AboutDialog]

          -

          Copyright © 2006-2023 The qBittorrent project

          +

          Copyright © 2006-2024 The qBittorrent project

          - - - - - - - - - - - - + + + + + + + + + + + + + +
          QBT_TR(Home Page:)QBT_TR[CONTEXT=AboutDialog]https://www.qbittorrent.org
          QBT_TR(Bug Tracker:)QBT_TR[CONTEXT=AboutDialog]https://bugs.qbittorrent.org
          QBT_TR(Forum:)QBT_TR[CONTEXT=AboutDialog]https://forum.qbittorrent.org
          QBT_TR(Home Page:)QBT_TR[CONTEXT=AboutDialog]https://www.qbittorrent.org
          QBT_TR(Bug Tracker:)QBT_TR[CONTEXT=AboutDialog]https://bugs.qbittorrent.org
          QBT_TR(Forum:)QBT_TR[CONTEXT=AboutDialog]https://forum.qbittorrent.org
          @@ -816,52 +822,45 @@

          How to Apply These Terms to Your New Programs

          diff --git a/src/webui/www/private/views/aboutToolbar.html b/src/webui/www/private/views/aboutToolbar.html index 3d9afd0e669f..3557a11e59cf 100644 --- a/src/webui/www/private/views/aboutToolbar.html +++ b/src/webui/www/private/views/aboutToolbar.html @@ -11,39 +11,39 @@
          diff --git a/src/webui/www/private/views/confirmAutoTMM.html b/src/webui/www/private/views/confirmAutoTMM.html new file mode 100644 index 000000000000..627de10d3d28 --- /dev/null +++ b/src/webui/www/private/views/confirmAutoTMM.html @@ -0,0 +1,61 @@ +
          +
          + + +
          +
          +
          + + +
          + + diff --git a/src/webui/www/private/views/confirmRecheck.html b/src/webui/www/private/views/confirmRecheck.html new file mode 100644 index 000000000000..d743113c1736 --- /dev/null +++ b/src/webui/www/private/views/confirmRecheck.html @@ -0,0 +1,62 @@ +
          +
          + + +
          +
          +
          + + +
          + + diff --git a/src/webui/www/private/views/confirmdeletion.html b/src/webui/www/private/views/confirmdeletion.html new file mode 100644 index 000000000000..80f976682db0 --- /dev/null +++ b/src/webui/www/private/views/confirmdeletion.html @@ -0,0 +1,100 @@ +
          +
          + + + + + + + + + +
          +
          +
          + + +
          + + diff --git a/src/webui/www/private/views/cookies.html b/src/webui/www/private/views/cookies.html new file mode 100644 index 000000000000..e7e301057637 --- /dev/null +++ b/src/webui/www/private/views/cookies.html @@ -0,0 +1,195 @@ + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          QBT_TR(Domain)QBT_TR[CONTEXT=CookiesDialog]QBT_TR(Path)QBT_TR[CONTEXT=CookiesDialog]QBT_TR(Name)QBT_TR[CONTEXT=CookiesDialog]QBT_TR(Value)QBT_TR[CONTEXT=CookiesDialog]QBT_TR(Expiration Date)QBT_TR[CONTEXT=CookiesDialog]
          QBT_TR(Add Cookie)QBT_TR[CONTEXT=CookiesDialog]
          + +
          + +
          +
          + + diff --git a/src/webui/www/private/views/filters.html b/src/webui/www/private/views/filters.html index d509713be666..ef7bc88dc3ef 100644 --- a/src/webui/www/private/views/filters.html +++ b/src/webui/www/private/views/filters.html @@ -1,55 +1,76 @@
          - + QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]QBT_TR(Status)QBT_TR[CONTEXT=TransferListFiltersWidget]
          - + QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]QBT_TR(Categories)QBT_TR[CONTEXT=TransferListFiltersWidget]
          - + QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]QBT_TR(Tags)QBT_TR[CONTEXT=TransferListFiltersWidget]
          - + QBT_TR(Collapse/expand)QBT_TR[CONTEXT=TransferListFiltersWidget]QBT_TR(Trackers)QBT_TR[CONTEXT=TransferListFiltersWidget]
          - diff --git a/src/webui/www/private/views/installsearchplugin.html b/src/webui/www/private/views/installsearchplugin.html index 5e8d1a0d6aa2..de77a46e167d 100644 --- a/src/webui/www/private/views/installsearchplugin.html +++ b/src/webui/www/private/views/installsearchplugin.html @@ -9,77 +9,82 @@ #newPluginPath { width: 100%; - line-height: 2em; }
          -

          QBT_TR(Plugin path:)QBT_TR[CONTEXT=PluginSourceDlg]

          +
          - +
          - +
          diff --git a/src/webui/www/private/views/log.html b/src/webui/www/private/views/log.html index cdd78d99c4ef..0790bc0bb0b6 100644 --- a/src/webui/www/private/views/log.html +++ b/src/webui/www/private/views/log.html @@ -1,33 +1,38 @@ @@ -93,8 +96,8 @@ - - + +
          @@ -141,18 +144,15 @@
          diff --git a/src/webui/www/private/views/logTabs.html b/src/webui/www/private/views/logTabs.html index 7f10519e618a..58b8c5544c76 100644 --- a/src/webui/www/private/views/logTabs.html +++ b/src/webui/www/private/views/logTabs.html @@ -1,7 +1,11 @@ diff --git a/src/webui/www/private/views/preferences.html b/src/webui/www/private/views/preferences.html index aa4a9e4111c2..3ac2d988b2fc 100644 --- a/src/webui/www/private/views/preferences.html +++ b/src/webui/www/private/views/preferences.html @@ -1,46 +1,112 @@
          QBT_TR(Language)QBT_TR[CONTEXT=OptionsDialog] - +
          +
          + QBT_TR(Interface)QBT_TR[CONTEXT=OptionsDialog] + + +
          + +
          + QBT_TR(Transfer list)QBT_TR[CONTEXT=OptionsDialog] +
          + + +
          +
          + + +
          +
          + QBT_TR(Action on double-click)QBT_TR[CONTEXT=OptionsDialog] + + + + + + + + + + + +
          + +
          + +
          +
          +
          + + +
          +
          +
          - - + +
          - +
          - - - - - - - - - - + + + + + + + + + + + +
          QBT_TR(KiB)QBT_TR[CONTEXT=OptionsDialog]
          - - -
          QBT_TR(KiB)QBT_TR[CONTEXT=OptionsDialog]
          + + +
          -
          - +
          + + +
          + +
          +
          + +
          + QBT_TR(Custom WebUI settings)QBT_TR[CONTEXT=OptionsDialog] +
          + + +
          +
          - +
          - +
          @@ -70,111 +136,132 @@
          +
          + QBT_TR(When duplicate torrent is being added)QBT_TR[CONTEXT=OptionsDialog] +
          + + +
          +
          - +
          - +
          - +
          +
          + + + + +
          QBT_TR(Saving Management)QBT_TR[CONTEXT=HttpServer] - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
          - - - -
          - - - -
          - - - -
          - - - -
          + + + +
          + + + +
          + + + +
          + + + +
          - +
          +
          + + +
          - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
          - - - -
          - - - - -
          - - - - -
          - - - - -
          + + + +
          + + + + +
          + + + + +
          + + + + +
          @@ -183,8 +270,8 @@ - - + + @@ -193,70 +280,77 @@
          - - + + - +
          - +
          QBT_TR(Monitored Folder)QBT_TR[CONTEXT=ScanFoldersModel]QBT_TR(Override Save Location)QBT_TR[CONTEXT=ScanFoldersModel]QBT_TR(Monitored Folder)QBT_TR[CONTEXT=ScanFoldersModel]QBT_TR(Override Save Location)QBT_TR[CONTEXT=ScanFoldersModel]
          - - - - - - - - - - - - -
          - - - -
          - - - -
          - - - -
          -
          - -
          -
          - - - - - + + + + + + +
          + + + +
          - + - +
          - + - +
          +
          + +
          +
          + + + + + + + + + + + + + + +
          + + + +
          + + + +
          +
          + +
          @@ -264,14 +358,14 @@ QBT_TR(Run external program)QBT_TR[CONTEXT=OptionsDialog]
          - - - + + +
          - - - + + +
          QBT_TR(Supported parameters (case sensitive):)QBT_TR[CONTEXT=OptionsDialog]
            @@ -295,7 +389,7 @@
          QBT_TR(Connections Limits)QBT_TR[CONTEXT=OptionsDialog] - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
          - - -
          - - -
          - - -
          - - -
          + + +
          + + +
          + + +
          + + +
          -
          +
          - - + + - - - - - - + + + + + + + +
          - - - - - - - -
          + + + + + + + +
          - +
          @@ -379,60 +477,64 @@
          QBT_TR(Proxy Server)QBT_TR[CONTEXT=OptionsDialog] - - - - - - - - + + + + + + + + + +
          - - - - - - - - - - - -
          + + + + + + + + + + + +
          - +
          - + - - - - - - - - + + + + + + + + + +
          - - - -
          - - - -
          + + + +
          + + + +
          QBT_TR(Info: The password is saved unencrypted)QBT_TR[CONTEXT=OptionsDialog] @@ -441,20 +543,20 @@
          - +
          - +
          - +
          - +
          @@ -464,18 +566,18 @@
          - - - + + +
          - +
          - QBT_TR(Manually banned IP addresses...)QBT_TR[CONTEXT=OptionsDialog] - + QBT_TR(Manually banned IP addresses...)QBT_TR[CONTEXT=OptionsDialog] +
          @@ -485,17 +587,19 @@
          QBT_TR(Global Rate Limits)QBT_TR[CONTEXT=OptionsDialog] - - - - - - - - - + + + + + + + + + + +
          - QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow] -   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
            QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
          + QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow] +   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
            QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
          QBT_TR(0 means unlimited)QBT_TR[CONTEXT=OptionsDialog]
          @@ -503,33 +607,35 @@
          QBT_TR(Alternative Rate Limits)QBT_TR[CONTEXT=OptionsDialog] - - - - - - - - - + + + + + + + + + + +
          - QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow] -   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
            QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
          + QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow] +   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
            QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]
          QBT_TR(0 means unlimited)QBT_TR[CONTEXT=OptionsDialog]
          - +
          - QBT_TR(From:)QBT_TR[CONTEXT=OptionsDialog] - : - QBT_TR(To:)QBT_TR[CONTEXT=OptionsDialog] - : + + : + + :
          - QBT_TR(When:)QBT_TR[CONTEXT=OptionsDialog] + +
          - +
          - +
          @@ -567,15 +673,15 @@
          QBT_TR(Privacy)QBT_TR[CONTEXT=OptionsDialog]
          - +
          - +
          - +
          @@ -587,77 +693,81 @@
          - +
          - +
          - - + + - - - - - - - - - - - - -
          - - - -
          - - - -
          - - - -
          -
          - - - - - + + +
          - + -   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog] +
          - + -   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog] +
          - + -   QBT_TR(seconds)QBT_TR[CONTEXT=OptionsDialog] +
          +
          + + + + + + + + + + + + + + + + + + +
          + + +   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog] +
          + + +   QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog] +
          + + +   QBT_TR(seconds)QBT_TR[CONTEXT=OptionsDialog] +
          @@ -665,87 +775,116 @@
          QBT_TR(Seeding Limits)QBT_TR[CONTEXT=OptionsDialog] - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +
          - - - - -
          - - - - QBT_TR(minutes)QBT_TR[CONTEXT=OptionsDialog] -
          - - - - QBT_TR(minutes)QBT_TR[CONTEXT=OptionsDialog] -
          - -
          + + + + +
          + + + + QBT_TR(minutes)QBT_TR[CONTEXT=OptionsDialog] +
          + + + + QBT_TR(minutes)QBT_TR[CONTEXT=OptionsDialog] +
          + +
          - - + + - +
          -
          - + + + + - - -
          +
          diff --git a/src/webui/www/private/views/preferencesToolbar.html b/src/webui/www/private/views/preferencesToolbar.html index 6d271ad332ea..c2ff79993ca7 100644 --- a/src/webui/www/private/views/preferencesToolbar.html +++ b/src/webui/www/private/views/preferencesToolbar.html @@ -1,56 +1,72 @@ diff --git a/src/webui/www/private/views/properties.html b/src/webui/www/private/views/properties.html index dc3a3bf8317a..e3cb42b1b718 100644 --- a/src/webui/www/private/views/properties.html +++ b/src/webui/www/private/views/properties.html @@ -1,96 +1,107 @@ -
          - - - - - -
          QBT_TR(Progress:)QBT_TR[CONTEXT=PropertiesWidget]
          + -